diff --git a/.bazelversion b/.bazelversion index b26a34e4705..b9ad1fa3a7f 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.2.1 +5f5d70b6c4d2fb1a889479569107f1692239e8a7 diff --git a/.github/labeler.yml b/.github/labeler.yml index db5a336716e..0e43646c7ba 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -30,6 +30,10 @@ Ruby: - ruby/**/* - change-notes/**/*ruby* +Rust: + - rust/**/* + - change-notes/**/*rust* + Swift: - swift/**/* - change-notes/**/*swift* diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000000..3b31894b0f3 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,14 @@ +### Pull Request checklist + +#### All query authors + +- [ ] A change note is added if necessary. See [the documentation](https://github.com/github/codeql/blob/main/docs/change-notes.md) in this repository. +- [ ] All new queries have appropriate `.qhelp`. See [the documentation](https://github.com/github/codeql/blob/main/docs/query-help-style-guide.md) in this repository. +- [ ] QL tests are added if necessary. See [Testing custom queries](https://docs.github.com/en/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/testing-custom-queries) in the GitHub documentation. +- [ ] New and changed queries have correct query metadata. See [the documentation](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md) in this repository. + +#### Internal query authors only + +- [ ] Autofixes generated based on these changes are valid, only needed if this PR makes significant changes to `.ql`, `.qll`, or `.qhelp` files. See [the documentation](https://github.com/github/codeql-team/blob/main/docs/best-practices/validating-autofix-for-query-changes.md) (internal access required). +- [ ] Changes are validated [at scale](https://github.com/github/codeql-dca/) (internal access required). +- [ ] Adding a new query? Consider also [adding the query to autofix](https://github.com/github/codeml-autofix/blob/main/docs/updating-query-support.md#adding-a-new-query-to-the-query-suite). diff --git a/.github/workflows/check-change-note.yml b/.github/workflows/check-change-note.yml index 026408a028d..3330e6e1136 100644 --- a/.github/workflows/check-change-note.yml +++ b/.github/workflows/check-change-note.yml @@ -16,11 +16,12 @@ on: - "shared/**/*.qll" - "!**/experimental/**" - "!ql/**" + - "!rust/**" - ".github/workflows/check-change-note.yml" jobs: check-change-note: - env: + env: REPO: ${{ github.repository }} PULL_REQUEST_NUMBER: ${{ github.event.number }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -33,7 +34,7 @@ jobs: !contains(github.event.pull_request.labels.*.name, 'no-change-note-required') run: | change_note_files=$(gh api "repos/$REPO/pulls/$PULL_REQUEST_NUMBER/files" --paginate --jq '.[].filename | select(test("/change-notes/.*[.]md$"))') - + if [ -z "$change_note_files" ]; then echo "No change note found. Either add one, or add the 'no-change-note-required' label." exit 1 diff --git a/.github/workflows/cpp-swift-analysis.yml b/.github/workflows/cpp-swift-analysis.yml index b2ebbc7d7df..4b923f1b39c 100644 --- a/.github/workflows/cpp-swift-analysis.yml +++ b/.github/workflows/cpp-swift-analysis.yml @@ -37,7 +37,7 @@ jobs: with: languages: cpp config-file: ./.github/codeql/codeql-config.yml - + - name: "[Ubuntu] Remove GCC 13 from runner image" shell: bash run: | @@ -48,7 +48,7 @@ jobs: - name: "Build Swift extractor using Bazel" run: | bazel clean --expunge - bazel run //swift:create-extractor-pack --nouse_action_cache --noremote_accept_cached --noremote_upload_local_results --spawn_strategy=local --features=-layering_check + bazel run //swift:create-extractor-pack --nouse_action_cache --noremote_accept_cached --noremote_upload_local_results --spawn_strategy=local bazel shutdown - name: Perform CodeQL Analysis diff --git a/.github/workflows/csharp-qltest.yml b/.github/workflows/csharp-qltest.yml index 66326539e6e..35bbcf0896a 100644 --- a/.github/workflows/csharp-qltest.yml +++ b/.github/workflows/csharp-qltest.yml @@ -29,45 +29,6 @@ permissions: contents: read jobs: - qlupgrade: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/fetch-codeql - - name: Check DB upgrade scripts - run: | - echo >empty.trap - codeql dataset import -S ql/lib/upgrades/initial/semmlecode.csharp.dbscheme testdb empty.trap - codeql dataset upgrade testdb --additional-packs ql/lib - diff -q testdb/semmlecode.csharp.dbscheme ql/lib/semmlecode.csharp.dbscheme - - name: Check DB downgrade scripts - run: | - echo >empty.trap - rm -rf testdb; codeql dataset import -S ql/lib/semmlecode.csharp.dbscheme testdb empty.trap - codeql resolve upgrades --format=lines --allow-downgrades --additional-packs downgrades \ - --dbscheme=ql/lib/semmlecode.csharp.dbscheme --target-dbscheme=downgrades/initial/semmlecode.csharp.dbscheme | - xargs codeql execute upgrades testdb - diff -q testdb/semmlecode.csharp.dbscheme downgrades/initial/semmlecode.csharp.dbscheme - qltest: - if: github.repository_owner == 'github' - runs-on: ubuntu-latest-xl - strategy: - fail-fast: false - matrix: - slice: ["1/2", "2/2"] - steps: - - uses: actions/checkout@v4 - - uses: ./csharp/actions/create-extractor-pack - - name: Cache compilation cache - id: query-cache - uses: ./.github/actions/cache-query-compilation - with: - key: csharp-qltest-${{ matrix.slice }} - - name: Run QL tests - run: | - codeql test run --threads=0 --ram 50000 --slice ${{ matrix.slice }} --search-path "${{ github.workspace }}" --check-databases --check-undefined-labels --check-repeated-labels --check-redefined-labels --consistency-queries ql/consistency-queries ql/test --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" - env: - GITHUB_TOKEN: ${{ github.token }} unit-tests: strategy: matrix: diff --git a/.github/workflows/ruby-build.yml b/.github/workflows/ruby-build.yml index cc0944e5909..fcabff5d110 100644 --- a/.github/workflows/ruby-build.yml +++ b/.github/workflows/ruby-build.yml @@ -65,8 +65,8 @@ jobs: id: cache-extractor with: path: | - ruby/extractor/target/release/codeql-extractor-ruby - ruby/extractor/target/release/codeql-extractor-ruby.exe + target/release/codeql-extractor-ruby + target/release/codeql-extractor-ruby.exe ruby/extractor/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-ruby-extractor-${{ hashFiles('ruby/extractor/rust-toolchain.toml', 'ruby/extractor/Cargo.lock') }}-${{ hashFiles('shared/tree-sitter-extractor') }}-${{ hashFiles('ruby/extractor/**/*.rs') }} - uses: actions/cache@v3 @@ -75,7 +75,7 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - ruby/target + target key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-ruby-rust-cargo-${{ hashFiles('ruby/extractor/rust-toolchain.toml', 'ruby/extractor/**/Cargo.lock') }} - name: Check formatting if: steps.cache-extractor.outputs.cache-hit != 'true' @@ -91,7 +91,7 @@ jobs: run: cd extractor && cargo build --release - name: Generate dbscheme if: ${{ matrix.os == 'ubuntu-latest' && steps.cache-extractor.outputs.cache-hit != 'true'}} - run: extractor/target/release/codeql-extractor-ruby generate --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll + run: ../target/release/codeql-extractor-ruby generate --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll - uses: actions/upload-artifact@v3 if: ${{ matrix.os == 'ubuntu-latest' }} with: @@ -106,8 +106,8 @@ jobs: with: name: extractor-${{ matrix.os }} path: | - ruby/extractor/target/release/codeql-extractor-ruby - ruby/extractor/target/release/codeql-extractor-ruby.exe + target/release/codeql-extractor-ruby + target/release/codeql-extractor-ruby.exe retention-days: 1 compile-queries: if: github.repository_owner == 'github' @@ -140,6 +140,7 @@ jobs: path: | ${{ runner.temp }}/query-packs/* retention-days: 1 + include-hidden-files: true package: runs-on: ubuntu-latest @@ -176,6 +177,7 @@ jobs: name: codeql-ruby-pack path: ruby/codeql-ruby.zip retention-days: 1 + include-hidden-files: true - uses: actions/download-artifact@v3 with: name: codeql-ruby-queries @@ -193,6 +195,7 @@ jobs: name: codeql-ruby-bundle path: ruby/codeql-ruby-bundle.zip retention-days: 1 + include-hidden-files: true test: defaults: diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 00000000000..e5f4bb2140f --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,58 @@ +name: "Rust" + +on: + pull_request: + paths: + - "rust/**" + - "misc/bazel/**" + - "misc/codegen/**" + - "shared/**" + - "MODULE.bazel" + - .github/workflows/rust.yml + - .github/actions/** + - codeql-workspace.yml + - "!**/*.md" + - "!**/*.qhelp" + branches: + - rust-experiment + - main + - rc/* + - codeql-cli-* + +permissions: + contents: read + +jobs: + rust-code: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Format + working-directory: rust/extractor + shell: bash + run: | + cargo fmt --check + - name: Compilation + working-directory: rust/extractor + shell: bash + run: cargo check + - name: Clippy + working-directory: rust/extractor + shell: bash + run: | + cargo clippy --fix + git diff --exit-code + rust-codegen: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install CodeQL + uses: ./.github/actions/fetch-codeql + - name: Code generation + shell: bash + run: | + bazel run //rust/codegen + git add . + git diff --exit-code HEAD diff --git a/.gitignore b/.gitignore index a9a34f6bd4c..9a9a423425d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,8 @@ .cache # qltest projects and artifacts +*.actual */ql/test/**/*.testproj -*/ql/test/**/*.actual */ql/test/**/go.sum # Visual studio temporaries, except a file used by QL4VS @@ -65,3 +65,9 @@ node_modules/ # bazel-built in-tree extractor packs /*/extractor-pack + +# Jetbrains IDE files +.idea + +# cargo build directory +/target diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 45935401bee..2b677468025 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,9 +5,9 @@ repos: rev: v3.2.0 hooks: - id: trailing-whitespace - exclude: /test/.*$(?x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/semmlecode.cpp.dbscheme b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..68930f3b81b --- /dev/null +++ b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/semmlecode.cpp.dbscheme @@ -0,0 +1,2310 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/sizeof_bind.ql b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/sizeof_bind.ql new file mode 100644 index 00000000000..47077d7fc82 --- /dev/null +++ b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/sizeof_bind.ql @@ -0,0 +1,14 @@ +class Expr extends @expr { + string toString() { none() } +} + +class Type extends @type { + string toString() { none() } +} + +from Expr expr, Type type, int kind +where + sizeof_bind(expr, type) and + exprs(expr, kind, _) and + (kind = 93 or kind = 94) +select expr, type diff --git a/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/upgrade.properties b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/upgrade.properties new file mode 100644 index 00000000000..8b6ce267a06 --- /dev/null +++ b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/upgrade.properties @@ -0,0 +1,4 @@ +description: Add new builtin operations +compatibility: partial +exprs.rel: run exprs.qlo +sizeof_bind.rel: run sizeof_bind.qlo diff --git a/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/downgrades.ql b/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/downgrades.ql new file mode 100644 index 00000000000..3425ec2f672 --- /dev/null +++ b/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/downgrades.ql @@ -0,0 +1,32 @@ +/* + * Approach: replace conversion expressions of kind 389 (= @c11_generic) by + * conversion expressions of kind 12 (= @parexpr), i.e., a `ParenthesisExpr`, + * and drop the relation which its child expressions, which are just syntactic + * sugar. Parenthesis expressions are equally benign as C11 _Generic expressions, + * and behave similarly in the context of the IR. + */ + +class Expr extends @expr { + string toString() { none() } +} + +class Location extends @location { + string toString() { none() } +} + +class ExprParent extends @exprparent { + string toString() { none() } +} + +query predicate new_exprs(Expr expr, int new_kind, Location loc) { + exists(int kind | exprs(expr, kind, loc) | if kind = 389 then new_kind = 12 else new_kind = kind) +} + +query predicate new_exprparents(Expr expr, int index, ExprParent expr_parent) { + exprparents(expr, index, expr_parent) and + ( + not expr_parent instanceof @expr + or + exists(int kind | exprs(expr_parent.(Expr), kind, _) | kind != 389) + ) +} diff --git a/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/old.dbscheme b/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/old.dbscheme new file mode 100644 index 00000000000..0fea0ee7026 --- /dev/null +++ b/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/old.dbscheme @@ -0,0 +1,2319 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/semmlecode.cpp.dbscheme b/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..02a123a1a68 --- /dev/null +++ b/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/semmlecode.cpp.dbscheme @@ -0,0 +1,2317 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrade.properties b/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrade.properties new file mode 100644 index 00000000000..1f42059fd60 --- /dev/null +++ b/cpp/downgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrade.properties @@ -0,0 +1,4 @@ +description: Expose C11 _Generics +compatibility: partial +exprs.rel: run downgrades.ql new_exprs +exprparents.rel: run downgrades.ql new_exprparents diff --git a/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/coroutine.ql b/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/coroutine.ql new file mode 100644 index 00000000000..bb9ca91c04d --- /dev/null +++ b/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/coroutine.ql @@ -0,0 +1,18 @@ +class Function extends @function { + string toString() { none() } +} + +class Type extends @type { + string toString() { none() } +} + +class Variable extends @variable { + string toString() { none() } +} + +from Function func, Type traits, Variable handle, Variable promise +where + coroutine(func, traits) and + coroutine_placeholder_variable(handle, 1, func) and + coroutine_placeholder_variable(promise, 2, func) +select func, traits, handle, promise diff --git a/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/old.dbscheme b/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/old.dbscheme new file mode 100644 index 00000000000..7ff6a6e53db --- /dev/null +++ b/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/old.dbscheme @@ -0,0 +1,2315 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/semmlecode.cpp.dbscheme b/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..0fea0ee7026 --- /dev/null +++ b/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/semmlecode.cpp.dbscheme @@ -0,0 +1,2319 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/upgrade.properties b/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/upgrade.properties new file mode 100644 index 00000000000..cb2077596c3 --- /dev/null +++ b/cpp/downgrades/7ff6a6e53dbcff09d1b9b758b594bc6d17366863/upgrade.properties @@ -0,0 +1,4 @@ +description: Improve handling of coroutine placeholder variables +compatibility: full +coroutine.rel: run coroutine.qlo +coroutine_placeholder_variable.rel: delete diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 646199bb39c..9723b57f127 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,35 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted the deprecated `hasQualifiedName` and `isDefined` predicates from the `Declaration` class, use `hasGlobalName` and `hasDefinition` respectively instead. +* Deleted the `getFullSignature` predicate from the `Function` class, use `getIdentityString(Declaration)` from `semmle.code.cpp.Print` instead. +* Deleted the deprecated `freeCall` predicate from `Alloc.qll`. Use `DeallocationExpr` instead. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted the deprecated `getFieldExpr` predicate from `ClassAggregateLiteral`, use `getAFieldExpr` instead. +* Deleted the deprecated `getElementExpr` predicate from `ArrayOrVectorAggregateLiteral`, use `getAnElementExpr` instead. + +### New Features + +* Added a class `C11GenericExpr` to represent C11 generic selection expressions. The generic selection is represented as a `Conversion` on the expression that will be selected. +* Added subclasses of `BuiltInOperations` for the `__is_scoped_enum`, `__is_trivially_equality_comparable`, and `__is_trivially_relocatable` builtin operations. +* Added a subclass of `Expr` for `__datasizeof` expressions. + +### Minor Analysis Improvements + +* Added a data flow model for `swap` member functions, which were previously modeled as taint tracking functions. This change improves the precision of queries where flow through `swap` member functions might affect the results. +* Added a data flow model for `realloc`-like functions, which were previously modeled as a taint tracking functions. This change improves the precision of queries where flow through `realloc`-like functions might affect the results. + +## 1.4.2 + +No user-facing changes. + +## 1.4.1 + +No user-facing changes. + ## 1.4.0 ### New Features diff --git a/cpp/ql/lib/change-notes/released/1.4.1.md b/cpp/ql/lib/change-notes/released/1.4.1.md new file mode 100644 index 00000000000..38987aa49cd --- /dev/null +++ b/cpp/ql/lib/change-notes/released/1.4.1.md @@ -0,0 +1,3 @@ +## 1.4.1 + +No user-facing changes. diff --git a/cpp/ql/lib/change-notes/released/1.4.2.md b/cpp/ql/lib/change-notes/released/1.4.2.md new file mode 100644 index 00000000000..37be01f40d9 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/1.4.2.md @@ -0,0 +1,3 @@ +## 1.4.2 + +No user-facing changes. diff --git a/cpp/ql/lib/change-notes/released/2.0.0.md b/cpp/ql/lib/change-notes/released/2.0.0.md new file mode 100644 index 00000000000..cfe91793769 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/2.0.0.md @@ -0,0 +1,23 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted the deprecated `hasQualifiedName` and `isDefined` predicates from the `Declaration` class, use `hasGlobalName` and `hasDefinition` respectively instead. +* Deleted the `getFullSignature` predicate from the `Function` class, use `getIdentityString(Declaration)` from `semmle.code.cpp.Print` instead. +* Deleted the deprecated `freeCall` predicate from `Alloc.qll`. Use `DeallocationExpr` instead. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted the deprecated `getFieldExpr` predicate from `ClassAggregateLiteral`, use `getAFieldExpr` instead. +* Deleted the deprecated `getElementExpr` predicate from `ArrayOrVectorAggregateLiteral`, use `getAnElementExpr` instead. + +### New Features + +* Added a class `C11GenericExpr` to represent C11 generic selection expressions. The generic selection is represented as a `Conversion` on the expression that will be selected. +* Added subclasses of `BuiltInOperations` for the `__is_scoped_enum`, `__is_trivially_equality_comparable`, and `__is_trivially_relocatable` builtin operations. +* Added a subclass of `Expr` for `__datasizeof` expressions. + +### Minor Analysis Improvements + +* Added a data flow model for `swap` member functions, which were previously modeled as taint tracking functions. This change improves the precision of queries where flow through `swap` member functions might affect the results. +* Added a data flow model for `realloc`-like functions, which were previously modeled as a taint tracking functions. This change improves the precision of queries where flow through `realloc`-like functions might affect the results. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index b8b2e97d508..0abe6ccede0 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.0 +lastReleaseVersion: 2.0.0 diff --git a/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll b/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll index e733940bdc1..99cd8bfb7fd 100644 --- a/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll +++ b/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll @@ -36,16 +36,6 @@ module PrivateCleartextWrite { } } - deprecated class WriteConfig extends TaintTracking::Configuration { - WriteConfig() { this = "Write configuration" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } - } - private module WriteConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof Source } diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 830e4f75408..ed813841129 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 1.4.1-dev +version: 2.0.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/Declaration.qll b/cpp/ql/lib/semmle/code/cpp/Declaration.qll index 7d7dee45aa9..61fe2018026 100644 --- a/cpp/ql/lib/semmle/code/cpp/Declaration.qll +++ b/cpp/ql/lib/semmle/code/cpp/Declaration.qll @@ -60,18 +60,6 @@ class Declaration extends Locatable, @declaration { */ string getQualifiedName() { result = underlyingElement(this).(Q::Declaration).getQualifiedName() } - /** - * DEPRECATED: Prefer `hasGlobalName` or the 2-argument or 3-argument - * `hasQualifiedName` predicates. To get the exact same results as this - * predicate in all edge cases, use `getQualifiedName()`. - * - * Holds if this declaration has the fully-qualified name `qualifiedName`. - * See `getQualifiedName`. - */ - deprecated predicate hasQualifiedName(string qualifiedName) { - this.getQualifiedName() = qualifiedName - } - /** * Holds if this declaration has a fully-qualified name with a name-space * component of `namespaceQualifier`, a declaring type of `typeQualifier`, @@ -185,9 +173,6 @@ class Declaration extends Locatable, @declaration { /** Holds if the declaration has a definition. */ predicate hasDefinition() { exists(this.getDefinition()) } - /** DEPRECATED: Use `hasDefinition` instead. */ - deprecated predicate isDefined() { this.hasDefinition() } - /** Gets the preferred location of this declaration, if any. */ override Location getLocation() { none() } diff --git a/cpp/ql/lib/semmle/code/cpp/Function.qll b/cpp/ql/lib/semmle/code/cpp/Function.qll index a2d8d078024..f23b04e19d6 100644 --- a/cpp/ql/lib/semmle/code/cpp/Function.qll +++ b/cpp/ql/lib/semmle/code/cpp/Function.qll @@ -30,46 +30,6 @@ class Function extends Declaration, ControlFlowNode, AccessHolder, @function { override string getName() { functions(underlyingElement(this), result, _) } - /** - * DEPRECATED: Use `getIdentityString(Declaration)` from `semmle.code.cpp.Print` instead. - * Gets the full signature of this function, including return type, parameter - * types, and template arguments. - * - * For example, in the following code: - * ``` - * template T min(T x, T y); - * int z = min(5, 7); - * ``` - * The full signature of the function called on the last line would be - * `min(int, int) -> int`, and the full signature of the uninstantiated - * template on the first line would be `min(T, T) -> T`. - */ - deprecated string getFullSignature() { - exists(string name, string templateArgs, string args | - result = name + templateArgs + args + " -> " + this.getType().toString() and - name = this.getQualifiedName() and - ( - if exists(this.getATemplateArgument()) - then - templateArgs = - "<" + - concat(int i | - exists(this.getTemplateArgument(i)) - | - this.getTemplateArgument(i).toString(), ", " order by i - ) + ">" - else templateArgs = "" - ) and - args = - "(" + - concat(int i | - exists(this.getParameter(i)) - | - this.getParameter(i).getType().toString(), ", " order by i - ) + ")" - ) - } - /** Gets a specifier of this function. */ override Specifier getASpecifier() { funspecifiers(underlyingElement(this), unresolveElement(result)) or diff --git a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll index b515a346bf3..6194710f0c5 100644 --- a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll +++ b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll @@ -286,9 +286,6 @@ abstract class BaseAstNode extends PrintAstNode { * Gets the AST represented by this node. */ final Locatable getAst() { result = ast } - - /** DEPRECATED: Alias for getAst */ - deprecated Locatable getAST() { result = this.getAst() } } /** @@ -385,6 +382,21 @@ class CastNode extends ConversionNode { } } +/** + * A node representing a `C11GenericExpr`. + */ +class C11GenericNode extends ConversionNode { + C11GenericExpr generic; + + C11GenericNode() { generic = conv } + + override AstNode getChildInternal(int childIndex) { + result = super.getChildInternal(childIndex - count(generic.getAChild())) + or + result.getAst() = generic.getChild(childIndex) + } +} + /** * A node representing a `StmtExpr`. */ @@ -860,6 +872,15 @@ private predicate namedExprChildPredicates(Expr expr, Element ele, string pred) or expr.(BuiltInVarArgsStart).getLastNamedParameter() = ele and pred = "getLastNamedParameter()" or + expr.(C11GenericExpr).getControllingExpr() = ele and pred = "getControllingExpr()" + or + exists(int n | + expr.(C11GenericExpr).getAssociationType(n) = ele.(TypeName).getType() and + pred = "getAssociationType(" + n + ")" + or + expr.(C11GenericExpr).getAssociationExpr(n) = ele and pred = "getAssociationExpr(" + n + ")" + ) + or expr.(Call).getQualifier() = ele and pred = "getQualifier()" or exists(int n | expr.(Call).getArgument(n) = ele and pred = "getArgument(" + n.toString() + ")") diff --git a/cpp/ql/lib/semmle/code/cpp/Variable.qll b/cpp/ql/lib/semmle/code/cpp/Variable.qll index 8d78dbd2c71..96bfabb4de0 100644 --- a/cpp/ql/lib/semmle/code/cpp/Variable.qll +++ b/cpp/ql/lib/semmle/code/cpp/Variable.qll @@ -409,11 +409,18 @@ class LocalVariable extends LocalScopeVariable, @localvariable { exists(ConditionDeclExpr e | e.getVariable() = this and e.getEnclosingFunction() = result) or orphaned_variables(underlyingElement(this), unresolveElement(result)) + or + coroutine_placeholder_variable(underlyingElement(this), _, unresolveElement(result)) } override predicate isStatic() { super.isStatic() or orphaned_variables(underlyingElement(this), _) } + + override predicate isCompilerGenerated() { + super.isCompilerGenerated() or + coroutine_placeholder_variable(underlyingElement(this), _, _) + } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/commons/Alloc.qll b/cpp/ql/lib/semmle/code/cpp/commons/Alloc.qll index a6fb84d3227..386a0e85aac 100644 --- a/cpp/ql/lib/semmle/code/cpp/commons/Alloc.qll +++ b/cpp/ql/lib/semmle/code/cpp/commons/Alloc.qll @@ -7,15 +7,6 @@ import semmle.code.cpp.models.interfaces.Deallocation */ predicate freeFunction(Function f, int argNum) { argNum = f.(DeallocationFunction).getFreedArg() } -/** - * A call to a library routine that frees memory. - * - * DEPRECATED: Use `DeallocationExpr` instead (this also includes `delete` expressions). - */ -deprecated predicate freeCall(FunctionCall fc, Expr arg) { - arg = fc.(DeallocationExpr).getFreedExpr() -} - /** * Is e some kind of allocation or deallocation (`new`, `alloc`, `realloc`, `delete`, `free` etc)? */ diff --git a/cpp/ql/lib/semmle/code/cpp/commons/Buffer.qll b/cpp/ql/lib/semmle/code/cpp/commons/Buffer.qll index 6bf7764d7e9..95fb7e47593 100644 --- a/cpp/ql/lib/semmle/code/cpp/commons/Buffer.qll +++ b/cpp/ql/lib/semmle/code/cpp/commons/Buffer.qll @@ -57,7 +57,7 @@ private int isSource(Expr bufferExpr, Element why) { exists(Type bufferType | // buffer is the address of a variable why = bufferExpr.(AddressOfExpr).getAddressable() and - bufferType = why.(Variable).getType() and + bufferType = why.(Variable).getUnspecifiedType() and result = bufferType.getSize() and not bufferType instanceof ReferenceType and not any(Union u).getAMemberVariable() = why diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/BuiltInOperations.qll b/cpp/ql/lib/semmle/code/cpp/exprs/BuiltInOperations.qll index dcf72604ca9..dc55bcda9e6 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/BuiltInOperations.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/BuiltInOperations.qll @@ -1885,3 +1885,59 @@ class BuiltInOperationIsWinInterface extends BuiltInOperation, @iswininterface { override string getAPrimaryQlClass() { result = "BuiltInOperationIsWinInterface" } } + +/** + * A C++ `__is_trivially_equality_comparable` built-in operation. + * + * Returns `true` if comparing two objects of type `_Tp` is equivalent to + * comparing their object representations. + * + * ``` + * template + * struct is_trivially_equality_comparable + * : public integral_constant + * {}; + * ``` + */ +class BuiltInOperationIsTriviallyEqualityComparable extends BuiltInOperation, + @istriviallyequalitycomparable +{ + override string toString() { result = "__is_trivially_equality_comparable" } + + override string getAPrimaryQlClass() { result = "BuiltInOperationIsTriviallyEqualityComparable" } +} + +/** + * A C++ `__is_scoped_enum` built-in operation (used by some implementations + * of the `` header). + * + * Returns `true` if a type is a scoped enum. + * ``` + * template + * constexpr bool is_scoped_enum = __is_scoped_enum(_Tp); + * ``` + */ +class BuiltInOperationIsScopedEnum extends BuiltInOperation, @isscopedenum { + override string toString() { result = "__is_scoped_enum" } + + override string getAPrimaryQlClass() { result = "BuiltInOperationIsScopedEnum" } +} + +/** + * A C++ `__is_trivially_relocatable` built-in operation. + * + * Returns `true` if moving an object of type `_Tp` is equivalent to + * copying the underlying bytes. + * + * ``` + * template + * struct is_trivially_relocatable + * : public integral_constant + * {}; + * ``` + */ +class BuiltInOperationIsTriviallyRelocatable extends BuiltInOperation, @istriviallyrelocatable { + override string toString() { result = "__is_trivially_relocatable" } + + override string getAPrimaryQlClass() { result = "BuiltInOperationIsTriviallyRelocatable" } +} diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll index e3ce623d217..85293cc7313 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll @@ -791,6 +791,53 @@ class AlignofTypeOperator extends AlignofOperator { override string toString() { result = "alignof(" + this.getTypeOperand().getName() + ")" } } +/** + * A C++ `__datasizeof` expression (used by some implementations + * of the `` header). + * + * The `__datasizeof` expression behaves identically to `sizeof` except + * that the result ignores tail padding. + */ +class DatasizeofOperator extends Expr, @datasizeof { + override int getPrecedence() { result = 16 } +} + +/** + * A C++ `__datasizeof` expression whose operand is an expression. + */ +class DatasizeofExprOperator extends DatasizeofOperator { + DatasizeofExprOperator() { exists(this.getChild(0)) } + + override string getAPrimaryQlClass() { result = "DatasizeofExprOperator" } + + /** Gets the contained expression. */ + Expr getExprOperand() { result = this.getChild(0) } + + override string toString() { result = "__datasizeof()" } + + override predicate mayBeImpure() { this.getExprOperand().mayBeImpure() } + + override predicate mayBeGloballyImpure() { this.getExprOperand().mayBeGloballyImpure() } +} + +/** + * A C++ `__datasizeof` expression whose operand is a type name. + */ +class DatasizeofTypeOperator extends DatasizeofOperator { + DatasizeofTypeOperator() { sizeof_bind(underlyingElement(this), _) } + + override string getAPrimaryQlClass() { result = "DatasizeofTypeOperator" } + + /** Gets the contained type. */ + Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } + + override string toString() { result = "__datasizeof(" + this.getTypeOperand().getName() + ")" } + + override predicate mayBeImpure() { none() } + + override predicate mayBeGloballyImpure() { none() } +} + /** * A C/C++ array to pointer conversion. * diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index 0689bf46070..91b57049a54 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -304,6 +304,8 @@ class Expr extends StmtParent, @expr { e instanceof NoExceptExpr or e instanceof AlignofOperator + or + e instanceof DatasizeofOperator ) or exists(Decltype d | d.getExpr() = this.getParentWithConversions*()) @@ -630,6 +632,106 @@ class ParenthesisExpr extends Conversion, @parexpr { override string getAPrimaryQlClass() { result = "ParenthesisExpr" } } +/** + * A node representing a C11 `_Generic` selection expression. + * + * For example: + * ``` + * _Generic(e, int: "int", default: "unknown") + * ``` + */ +class C11GenericExpr extends Conversion, @c11_generic { + int associationCount; + + C11GenericExpr() { associationCount = (count(this.getAChild()) - 1) / 2 } + + override string toString() { result = "_Generic" } + + override string getAPrimaryQlClass() { result = "C11GenericExpr" } + + /** + * Gets the controlling expression of the generic selection. + * + * For example, for + * ``` + * _Generic(e, int: "a", default: "b") + * ``` + * the result is `e`. + */ + Expr getControllingExpr() { result = this.getChild(0) } + + /** + * Gets the type of the `n`th element in the association list of the generic selection. + * + * For example, for + * ``` + * _Generic(e, int: "a", default: "b") + * ``` + * the type of the 0th element is `int`. In the case of the default element the + * type will an instance of `VoidType`. + */ + Type getAssociationType(int n) { + n in [0 .. associationCount - 1] and + result = this.getChild(n * 2 + 1).(TypeName).getType() + } + + /** + * Gets the type of an element in the association list of the generic selection. + */ + Type getAnAssociationType() { result = this.getAssociationType(_) } + + /** + * Gets the expression of the `n`th element in the association list of + * the generic selection. + * + * For example, for + * ``` + * _Generic(e, int: "a", default: "b") + * ``` + * the expression for 0th element is `"a"`, and the expression for the + * 1st element is `"b"`. For the selected expression, this predicate + * will yield a `ReuseExpr`, such that + * ``` + * this.getAssociationExpr(n).(ReuseExpr).getReusedExpr() = this.getExpr() + * ``` + */ + Expr getAssociationExpr(int n) { + n in [0 .. associationCount - 1] and + result = this.getChild(n * 2 + 2) + } + + /** + * Gets the expression of an element in the association list of the generic selection. + */ + Expr getAnAssociationExpr() { result = this.getAssociationExpr(_) } + + /** + * Holds if the `n`th element of the association list of the generic selection is the + * default element. + * + * For example, for + * ``` + * _Generic(e, int: "a", default: "b") + * ``` + * this holds for 1. + */ + predicate isDefaultAssociation(int n) { this.getAssociationType(n) instanceof VoidType } + + /** + * Holds if the `n`th element of the association list of the generic selection is the + * one whose expression was selected. + * + * For example, with `e` of type `int` and + * ``` + * _Generic(e, int: "a", default: "b") + * ``` + * this holds for 0. + */ + predicate isSelectedAssociation(int n) { + this.getAssociationExpr(n).(ReuseExpr).getReusedExpr() = this.getExpr() + } +} + /** * A C/C++ expression that could not be resolved, or that can no longer be * represented due to a database upgrade or downgrade. @@ -666,6 +768,8 @@ class AssumeExpr extends Expr, @assume { /** * A C/C++ comma expression. + * + * For example: * ``` * int c = compute1(), compute2(), resulting_value; * ``` diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Literal.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Literal.qll index 32e16747c22..a36758417bb 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Literal.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Literal.qll @@ -195,17 +195,6 @@ class ClassAggregateLiteral extends AggregateLiteral { */ Expr getAFieldExpr(Field field) { result = this.getFieldExpr(field, _) } - /** - * DEPRECATED: Use `getAFieldExpr` instead. - * - * Gets the expression within the aggregate literal that is used to initialize - * field `field`, if present. - * - * This predicate may have multiple results since a field can be initialized - * multiple times in the same initializer. - */ - deprecated Expr getFieldExpr(Field field) { result = this.getFieldExpr(field, _) } - /** * Gets the expression within the aggregate literal that is used to initialize * field `field`, if present. The expression is the `position`'th entry in the @@ -300,17 +289,6 @@ class ArrayOrVectorAggregateLiteral extends AggregateLiteral { */ Expr getAnElementExpr(int elementIndex) { result = this.getElementExpr(elementIndex, _) } - /** - * DEPRECATED: Use `getAnElementExpr` instead. - * - * Gets the expression within the aggregate literal that is used to initialize - * element `elementIndex`, if present. - * - * This predicate may have multiple results since an element can be initialized - * multiple times in the same initializer. - */ - deprecated Expr getElementExpr(int elementIndex) { result = this.getElementExpr(elementIndex, _) } - /** * Gets the expression within the aggregate literal that is used to initialize * element `elementIndex`, if present. The expression is the `position`'th entry diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll index 3b1439511d1..359fa71744b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll index 24135820ab8..43217ed4c60 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll @@ -50,9 +50,6 @@ abstract private class AbstractIRVariable extends TIRVariable { */ abstract Language::AST getAst(); - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets an identifier string for the variable. This identifier is unique * within the function. @@ -96,9 +93,6 @@ class IRUserVariable extends AbstractIRVariable, TIRUserVariable { final override Language::AST getAst() { result = var } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override string getUniqueId() { result = this.getVariable().toString() + " " + this.getVariable().getLocation().toString() } @@ -163,9 +157,6 @@ abstract private class AbstractIRGeneratedVariable extends AbstractIRVariable { final override Language::AST getAst() { result = ast } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - override string toString() { result = this.getBaseString() + this.getLocationString() } override string getUniqueId() { none() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll index 4db00eee608..b63a543d9ae 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll @@ -285,9 +285,6 @@ abstract private class MemoryLocation0 extends TMemoryLocation { predicate isAlwaysAllocatedOnStack() { none() } final predicate canReuseSsa() { none() } - - /** DEPRECATED: Alias for canReuseSsa */ - deprecated predicate canReuseSSA() { this.canReuseSsa() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRVariable.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRVariable.qll index 24135820ab8..43217ed4c60 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRVariable.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRVariable.qll @@ -50,9 +50,6 @@ abstract private class AbstractIRVariable extends TIRVariable { */ abstract Language::AST getAst(); - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets an identifier string for the variable. This identifier is unique * within the function. @@ -96,9 +93,6 @@ class IRUserVariable extends AbstractIRVariable, TIRUserVariable { final override Language::AST getAst() { result = var } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override string getUniqueId() { result = this.getVariable().toString() + " " + this.getVariable().getLocation().toString() } @@ -163,9 +157,6 @@ abstract private class AbstractIRGeneratedVariable extends AbstractIRVariable { final override Language::AST getAst() { result = ast } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - override string toString() { result = this.getBaseString() + this.getLocationString() } override string getUniqueId() { none() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index 7e3dc3cd9e2..daa6bdaafcf 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -216,9 +216,6 @@ abstract class TranslatedSideEffects extends TranslatedElement { final override Locatable getAst() { result = this.getExpr() } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Declaration getFunction() { result = getEnclosingDeclaration(this.getExpr()) } final override TranslatedElement getChild(int i) { @@ -616,9 +613,6 @@ class TranslatedArgumentExprSideEffect extends TranslatedArgumentSideEffect, final override Locatable getAst() { result = arg } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Type getIndirectionType() { result = arg.getUnspecifiedType().(DerivedType).getBaseType() or @@ -651,9 +645,6 @@ class TranslatedStructorQualifierSideEffect extends TranslatedArgumentSideEffect final override Locatable getAst() { result = call } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Type getIndirectionType() { result = call.getTarget().getDeclaringType() } final override string getArgString() { result = "this" } @@ -675,9 +666,6 @@ class TranslatedCallSideEffect extends TranslatedSideEffect, TTranslatedCallSide override Locatable getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - override Expr getPrimaryExpr() { result = expr } override predicate sortOrder(int group, int indexInGroup) { @@ -716,9 +704,6 @@ class TranslatedAllocationSideEffect extends TranslatedSideEffect, TTranslatedAl override Locatable getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - override Expr getPrimaryExpr() { result = expr } override predicate sortOrder(int group, int indexInGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll index 77864969068..1616c9c434b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll @@ -29,9 +29,6 @@ abstract class TranslatedCondition extends TranslatedElement { final override Locatable getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final ConditionContext getConditionContext() { result = this.getParent() } final Expr getExpr() { result = expr } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedDeclarationEntry.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedDeclarationEntry.qll index 55b5aa179f4..c0fe9cd2207 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedDeclarationEntry.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedDeclarationEntry.qll @@ -45,9 +45,6 @@ abstract class TranslatedDeclarationEntry extends TranslatedElement, TTranslated final override string toString() { result = entry.toString() } final override Locatable getAst() { result = entry.getAst() } - - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } } /** @@ -248,9 +245,6 @@ class TranslatedStaticLocalVariableInitialization extends TranslatedElement, final override Locatable getAst() { result = entry.getAst() } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override LocalVariable getVariable() { result = var } final override Declaration getFunction() { result = var.getFunction() } @@ -277,9 +271,6 @@ class TranslatedConditionDecl extends TranslatedLocalVariableDeclaration, TTrans override Locatable getAst() { result = conditionDeclExpr } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - override Declaration getFunction() { result = getEnclosingFunction(conditionDeclExpr) } override LocalVariable getVariable() { result = conditionDeclExpr.getVariable() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 4d2b1a95d31..0f9bc370f7a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -128,6 +128,9 @@ private predicate ignoreExprAndDescendants(Expr expr) { vaStartExpr.getLastNamedParameter().getFullyConverted() = expr ) or + // The children of C11 _Generic expressions are just surface syntax. + exists(C11GenericExpr generic | generic.getAChild() = expr) + or // Do not translate implicit destructor calls for unnamed temporary variables that are // conditionally constructed (until we have a mechanism for calling these only when the // temporary's constructor was run) @@ -432,6 +435,9 @@ predicate ignoreLoad(Expr expr) { // The load is duplicated from the right operand. isExtractorFrontendVersion65OrHigher() and expr instanceof CommaExpr or + // The load is duplicated from the chosen expression. + expr instanceof C11GenericExpr + or expr.(PointerDereferenceExpr).getOperand().getFullyConverted().getType().getUnspecifiedType() instanceof FunctionPointerType or @@ -761,7 +767,10 @@ newtype TTranslatedElement = } or // A statement TTranslatedStmt(Stmt stmt) { translateStmt(stmt) } or + // The `__except` block of a `__try __except` statement TTranslatedMicrosoftTryExceptHandler(MicrosoftTryExceptStmt stmt) or + // The `__finally` block of a `__try __finally` statement + TTranslatedMicrosoftTryFinallyHandler(MicrosoftTryFinallyStmt stmt) or // A function TTranslatedFunction(Function func) { translateFunction(func) } or // A constructor init list @@ -920,9 +929,6 @@ abstract class TranslatedElement extends TTranslatedElement { */ abstract Locatable getAst(); - /** DEPRECATED: Alias for getAst */ - deprecated Locatable getAST() { result = this.getAst() } - /** Gets the location of this element. */ Location getLocation() { result = this.getAst().getLocation() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index c2e216cc963..e7ccac24eb9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -893,7 +893,8 @@ class TranslatedTransparentConversion extends TranslatedTransparentExpr { ( expr instanceof ParenthesisExpr or expr instanceof ReferenceDereferenceExpr or - expr instanceof ReferenceToExpr + expr instanceof ReferenceToExpr or + expr instanceof C11GenericExpr ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll index 3e4e83965e2..57f718bcb6a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll @@ -67,9 +67,6 @@ class TranslatedFunction extends TranslatedRootElement, TTranslatedFunction { final override Locatable getAst() { result = func } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - /** * Gets the function being translated. */ @@ -212,8 +209,13 @@ class TranslatedFunction extends TranslatedRootElement, TTranslatedFunction { ( // Only generate the `Unwind` instruction if there is any exception // handling present in the function. - exists(TryStmt try | try.getEnclosingFunction() = func) or + exists(TryOrMicrosoftTryStmt try | try.getEnclosingFunction() = func) + or exists(ThrowExpr throw | throw.getEnclosingFunction() = func) + or + exists(FunctionCall call | call.getEnclosingFunction() = func | + getTranslatedExpr(call).(TranslatedCallExpr).mayThrowException() + ) ) or tag = AliasedUseTag() and @@ -483,9 +485,6 @@ class TranslatedThisParameter extends TranslatedParameter, TTranslatedThisParame final override Locatable getAst() { result = func } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Function getFunction() { result = func } final override predicate hasIndirection() { any() } @@ -518,9 +517,6 @@ class TranslatedPositionalParameter extends TranslatedParameter, TTranslatedPara final override Locatable getAst() { result = param } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Function getFunction() { result = param.getFunction() or result = param.getCatchBlock().getEnclosingFunction() @@ -558,9 +554,6 @@ class TranslatedEllipsisParameter extends TranslatedParameter, TTranslatedEllips final override Locatable getAst() { result = func } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Function getFunction() { result = func } final override predicate hasIndirection() { any() } @@ -597,9 +590,6 @@ class TranslatedConstructorInitList extends TranslatedElement, InitializationCon override Locatable getAst() { result = func } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - override TranslatedElement getChild(int id) { exists(ConstructorFieldInit fieldInit | fieldInit = func.(Constructor).getInitializer(id) and @@ -677,9 +667,6 @@ class TranslatedDestructorDestructionList extends TranslatedElement, override Locatable getAst() { result = func } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - override TranslatedElement getChild(int id) { exists(DestructorFieldDestruction fieldDestruction | fieldDestruction = func.(Destructor).getDestruction(id) and @@ -733,9 +720,6 @@ class TranslatedReadEffects extends TranslatedElement, TTranslatedReadEffects { override Locatable getAst() { result = func } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - override Function getFunction() { result = func } override string toString() { result = "read effects: " + func.toString() } @@ -839,9 +823,6 @@ class TranslatedThisReadEffect extends TranslatedReadEffect, TTranslatedThisRead override Locatable getAst() { result = func } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - override Function getFunction() { result = func } override string toString() { result = "read effect: this" } @@ -865,9 +846,6 @@ class TranslatedParameterReadEffect extends TranslatedReadEffect, TTranslatedPar override Locatable getAst() { result = param } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - override string toString() { result = "read effect: " + param.toString() } override Function getFunction() { result = param.getFunction() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll index 9b6165d0782..06ce9193205 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll @@ -153,9 +153,6 @@ abstract class TranslatedInitialization extends TranslatedElement, TTranslatedIn final override Locatable getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - /** * Gets the expression that is doing the initialization. */ @@ -528,9 +525,6 @@ abstract class TranslatedFieldInitialization extends TranslatedElement { final override Locatable getAst() { result = ast } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Declaration getFunction() { result = getEnclosingFunction(ast) or result = getEnclosingVariable(ast).(GlobalOrNamespaceVariable) or @@ -701,9 +695,6 @@ abstract class TranslatedElementInitialization extends TranslatedElement { final override Locatable getAst() { result = initList } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Declaration getFunction() { result = getEnclosingFunction(initList) or @@ -912,9 +903,6 @@ abstract class TranslatedStructorCallFromStructor extends TranslatedElement, Str final override Locatable getAst() { result = call } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override TranslatedElement getChild(int id) { id = 0 and result = this.getStructorCall() @@ -1058,9 +1046,6 @@ class TranslatedConstructorBareInit extends TranslatedElement, TTranslatedConstr override Locatable getAst() { result = init } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override string toString() { result = "construct base (no constructor)" } override Instruction getFirstInstruction(EdgeKind kind) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll index ad17722477f..e37df72abbd 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll @@ -79,11 +79,6 @@ class TranslatedMicrosoftTryExceptHandler extends TranslatedElement, tag = TryExceptCompareOneBranch() and opcode instanceof Opcode::ConditionalBranch and resultType = getVoidType() - or - // unwind stack - tag = UnwindTag() and - opcode instanceof Opcode::Unwind and - resultType = getVoidType() } final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { @@ -156,7 +151,7 @@ class TranslatedMicrosoftTryExceptHandler extends TranslatedElement, // TODO: This is not really correct. The semantics of `EXCEPTION_CONTINUE_EXECUTION` is that // we should continue execution at the point where the exception occurred. But we don't have // any instruction to model this behavior. - result = this.getInstruction(UnwindTag()) + result = this.getExceptionSuccessorInstruction(any(GotoEdge edge)) or kind instanceof FalseEdge and result = this.getInstruction(TryExceptGenerateZero()) @@ -176,7 +171,7 @@ class TranslatedMicrosoftTryExceptHandler extends TranslatedElement, tag = TryExceptCompareZeroBranch() and ( kind instanceof TrueEdge and - result = this.getInstruction(UnwindTag()) + result = this.getExceptionSuccessorInstruction(any(GotoEdge edge)) or kind instanceof FalseEdge and result = this.getInstruction(TryExceptGenerateOne()) @@ -196,10 +191,6 @@ class TranslatedMicrosoftTryExceptHandler extends TranslatedElement, tag = TryExceptCompareOneBranch() and kind instanceof TrueEdge and result = this.getTranslatedHandler().getFirstInstruction(any(GotoEdge edge)) - or - // Unwind -> Parent - tag = UnwindTag() and - result = this.getParent().getChildSuccessor(this, kind) } override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { @@ -215,8 +206,6 @@ class TranslatedMicrosoftTryExceptHandler extends TranslatedElement, override Instruction getALastInstructionInternal() { result = this.getTranslatedHandler().getALastInstruction() - or - result = this.getInstruction(UnwindTag()) } private TranslatedExpr getTranslatedCondition() { @@ -236,6 +225,68 @@ class TranslatedMicrosoftTryExceptHandler extends TranslatedElement, } final override Function getFunction() { result = tryExcept.getEnclosingFunction() } + + override Instruction getExceptionSuccessorInstruction(EdgeKind kind) { + // A throw from within a `__except` block flows to the handler for the parent of + // the `__try`. + result = this.getParent().getParent().getExceptionSuccessorInstruction(kind) + } +} + +TranslatedMicrosoftTryFinallyHandler getTranslatedMicrosoftTryFinallyHandler( + MicrosoftTryFinallyStmt tryFinally +) { + result.getAst() = tryFinally.getFinally() +} + +class TranslatedMicrosoftTryFinallyHandler extends TranslatedElement, + TTranslatedMicrosoftTryFinallyHandler +{ + MicrosoftTryFinallyStmt tryFinally; + + TranslatedMicrosoftTryFinallyHandler() { + this = TTranslatedMicrosoftTryFinallyHandler(tryFinally) + } + + final override string toString() { result = tryFinally.toString() } + + final override Locatable getAst() { result = tryFinally.getFinally() } + + override Instruction getFirstInstruction(EdgeKind kind) { + result = this.getTranslatedFinally().getFirstInstruction(kind) + } + + override Instruction getALastInstructionInternal() { + result = this.getTranslatedFinally().getALastInstruction() + } + + override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { + child = this.getTranslatedFinally() and + result = this.getParent().getChildSuccessor(this, kind) + } + + override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { none() } + + override TranslatedElement getChild(int id) { + id = 0 and + result = this.getTranslatedFinally() + } + + override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { + none() + } + + final override Function getFunction() { result = tryFinally.getEnclosingFunction() } + + private TranslatedStmt getTranslatedFinally() { + result = getTranslatedStmt(tryFinally.getFinally()) + } + + override Instruction getExceptionSuccessorInstruction(EdgeKind kind) { + // A throw from within a `__finally` block flows to the handler for the parent of + // the `__try`. + result = this.getParent().getParent().getExceptionSuccessorInstruction(kind) + } } abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { @@ -268,9 +319,6 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { final override Locatable getAst() { result = stmt } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Function getFunction() { result = stmt.getEnclosingFunction() } } @@ -586,7 +634,7 @@ class TranslatedNoValueReturnStmt extends TranslatedReturnStmt, TranslatedVariab /** * A C/C++ `try` statement, or a `__try __except` or `__try __finally` statement. */ -private class TryOrMicrosoftTryStmt extends Stmt { +class TryOrMicrosoftTryStmt extends Stmt { TryOrMicrosoftTryStmt() { this instanceof TryStmt or this instanceof MicrosoftTryStmt @@ -619,7 +667,9 @@ private class TryOrMicrosoftTryStmt extends Stmt { } /** Gets the `finally` statement (usually a BlockStmt), if any. */ - Stmt getFinally() { result = this.(MicrosoftTryFinallyStmt).getFinally() } + TranslatedElement getTranslatedFinally() { + result = getTranslatedMicrosoftTryFinallyHandler(this) + } } /** @@ -689,11 +739,14 @@ class TranslatedTryStmt extends TranslatedStmt { final override Instruction getExceptionSuccessorInstruction(EdgeKind kind) { result = this.getHandler(0).getFirstInstruction(kind) + or + not exists(this.getHandler(_)) and + result = this.getFinally().getFirstInstruction(kind) } private TranslatedElement getHandler(int index) { result = stmt.getTranslatedHandler(index) } - private TranslatedStmt getFinally() { result = getTranslatedStmt(stmt.getFinally()) } + private TranslatedElement getFinally() { result = stmt.getTranslatedFinally() } private TranslatedStmt getBody() { result = getTranslatedStmt(stmt.getStmt()) } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll index 24135820ab8..43217ed4c60 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll @@ -50,9 +50,6 @@ abstract private class AbstractIRVariable extends TIRVariable { */ abstract Language::AST getAst(); - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets an identifier string for the variable. This identifier is unique * within the function. @@ -96,9 +93,6 @@ class IRUserVariable extends AbstractIRVariable, TIRUserVariable { final override Language::AST getAst() { result = var } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override string getUniqueId() { result = this.getVariable().toString() + " " + this.getVariable().getLocation().toString() } @@ -163,9 +157,6 @@ abstract private class AbstractIRGeneratedVariable extends AbstractIRVariable { final override Language::AST getAst() { result = ast } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - override string toString() { result = this.getBaseString() + this.getLocationString() } override string getUniqueId() { none() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll index 648fa0e197b..8bee2bf86a7 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll @@ -71,9 +71,6 @@ class MemoryLocation extends TMemoryLocation { final string getUniqueId() { result = var.getUniqueId() } final predicate canReuseSsa() { canReuseSsaForVariable(var) } - - /** DEPRECATED: Alias for canReuseSsa */ - deprecated predicate canReuseSSA() { this.canReuseSsa() } } predicate canReuseSsaForOldResult(Instruction instr) { none() } diff --git a/cpp/ql/lib/semmle/code/cpp/models/Models.qll b/cpp/ql/lib/semmle/code/cpp/models/Models.qll index 90a97777d8f..1e0b6cd33ed 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/Models.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/Models.qll @@ -42,6 +42,7 @@ private import implementations.Accept private import implementations.Poll private import implementations.Select private import implementations.MySql +private import implementations.NoexceptFunction private import implementations.ODBC private import implementations.SqLite3 private import implementations.PostgreSql diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Allocation.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Allocation.qll index c07e840b811..df6d9491729 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Allocation.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Allocation.qll @@ -5,13 +5,13 @@ */ import semmle.code.cpp.models.interfaces.Allocation -import semmle.code.cpp.models.interfaces.Taint +import semmle.code.cpp.models.interfaces.DataFlow /** * An allocation function (such as `realloc`) that has an argument for the size * in bytes, and an argument for an existing pointer that is to be reallocated. */ -private class ReallocAllocationFunction extends AllocationFunction, TaintFunction { +private class ReallocAllocationFunction extends AllocationFunction, DataFlowFunction { int sizeArg; int reallocArg; @@ -44,7 +44,7 @@ private class ReallocAllocationFunction extends AllocationFunction, TaintFunctio override int getReallocPtrArg() { result = reallocArg } - override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + override predicate hasDataFlow(FunctionInput input, FunctionOutput output) { input.isParameterDeref(this.getReallocPtrArg()) and output.isReturnValueDeref() } } diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll index 2c47587f42e..0bf2dd31fe4 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll @@ -9,13 +9,14 @@ import semmle.code.cpp.models.interfaces.DataFlow import semmle.code.cpp.models.interfaces.Alias import semmle.code.cpp.models.interfaces.SideEffect import semmle.code.cpp.models.interfaces.Taint +import semmle.code.cpp.models.interfaces.NonThrowing /** * The standard functions `memcpy`, `memmove` and `bcopy`; and the gcc variant * `__builtin___memcpy_chk`. */ private class MemcpyFunction extends ArrayFunction, DataFlowFunction, SideEffectFunction, - AliasFunction + AliasFunction, NonThrowingFunction { MemcpyFunction() { // memcpy(dest, src, num) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll index 965ac8daf3b..ab2e0af99f3 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll @@ -8,9 +8,10 @@ import semmle.code.cpp.models.interfaces.ArrayFunction import semmle.code.cpp.models.interfaces.DataFlow import semmle.code.cpp.models.interfaces.Alias import semmle.code.cpp.models.interfaces.SideEffect +import semmle.code.cpp.models.interfaces.NonThrowing private class MemsetFunctionModel extends ArrayFunction, DataFlowFunction, AliasFunction, - SideEffectFunction + SideEffectFunction, NonThrowingFunction { MemsetFunctionModel() { this.hasGlobalOrStdOrBslName("memset") diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/NoexceptFunction.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/NoexceptFunction.qll new file mode 100644 index 00000000000..b0f76ee6538 --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/NoexceptFunction.qll @@ -0,0 +1,11 @@ +import semmle.code.cpp.models.interfaces.NonThrowing + +/** + * A function that is annotated with a `noexcept` specifier (or the equivalent + * `throw()` specifier) guaranteeing that the function can not throw exceptions. + * + * Note: The `throw` specifier was deprecated in C++11 and removed in C++17. + */ +class NoexceptFunction extends NonThrowingFunction { + NoexceptFunction() { this.isNoExcept() or this.isNoThrow() } +} diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll index 677b9245b6b..7286552e3ee 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll @@ -8,11 +8,12 @@ import semmle.code.cpp.models.interfaces.FormattingFunction import semmle.code.cpp.models.interfaces.Alias import semmle.code.cpp.models.interfaces.SideEffect +import semmle.code.cpp.models.interfaces.NonThrowing /** * The standard functions `printf`, `wprintf` and their glib variants. */ -private class Printf extends FormattingFunction, AliasFunction { +private class Printf extends FormattingFunction, AliasFunction, NonThrowingFunction { Printf() { this instanceof TopLevelFunction and ( @@ -36,7 +37,7 @@ private class Printf extends FormattingFunction, AliasFunction { /** * The standard functions `fprintf`, `fwprintf` and their glib variants. */ -private class Fprintf extends FormattingFunction { +private class Fprintf extends FormattingFunction, NonThrowingFunction { Fprintf() { this instanceof TopLevelFunction and ( @@ -54,7 +55,7 @@ private class Fprintf extends FormattingFunction { /** * The standard function `sprintf` and its Microsoft and glib variants. */ -private class Sprintf extends FormattingFunction { +private class Sprintf extends FormattingFunction, NonThrowingFunction { Sprintf() { this instanceof TopLevelFunction and ( @@ -97,7 +98,7 @@ private class Sprintf extends FormattingFunction { /** * Implements `Snprintf`. */ -private class SnprintfImpl extends Snprintf, AliasFunction, SideEffectFunction { +private class SnprintfImpl extends Snprintf, AliasFunction, SideEffectFunction, NonThrowingFunction { SnprintfImpl() { this instanceof TopLevelFunction and ( @@ -204,7 +205,7 @@ private class StringCchPrintf extends FormattingFunction { /** * The standard function `syslog`. */ -private class Syslog extends FormattingFunction { +private class Syslog extends FormattingFunction, NonThrowingFunction { Syslog() { this instanceof TopLevelFunction and this.hasGlobalName("syslog") and diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll index f081a36fac6..9b11ed0af15 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll @@ -7,13 +7,16 @@ import semmle.code.cpp.models.interfaces.ArrayFunction import semmle.code.cpp.models.interfaces.DataFlow import semmle.code.cpp.models.interfaces.Taint import semmle.code.cpp.models.interfaces.SideEffect +import semmle.code.cpp.models.interfaces.NonThrowing /** * The standard function `strcat` and its wide, sized, and Microsoft variants. * * Does not include `strlcat`, which is covered by `StrlcatFunction` */ -class StrcatFunction extends TaintFunction, DataFlowFunction, ArrayFunction, SideEffectFunction { +class StrcatFunction extends TaintFunction, DataFlowFunction, ArrayFunction, SideEffectFunction, + NonThrowingFunction +{ StrcatFunction() { this.hasGlobalOrStdOrBslName([ "strcat", // strcat(dst, src) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll index 1858da65234..b7f06f0cebf 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll @@ -7,11 +7,14 @@ import semmle.code.cpp.models.interfaces.ArrayFunction import semmle.code.cpp.models.interfaces.DataFlow import semmle.code.cpp.models.interfaces.Taint import semmle.code.cpp.models.interfaces.SideEffect +import semmle.code.cpp.models.interfaces.NonThrowing /** * The standard function `strcpy` and its wide, sized, and Microsoft variants. */ -class StrcpyFunction extends ArrayFunction, DataFlowFunction, TaintFunction, SideEffectFunction { +class StrcpyFunction extends ArrayFunction, DataFlowFunction, TaintFunction, SideEffectFunction, + NonThrowingFunction +{ StrcpyFunction() { this.hasGlobalOrStdOrBslName([ "strcpy", // strcpy(dst, src) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll index 446e659fac5..2e8e7ef6e90 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll @@ -26,7 +26,7 @@ private class Swap extends DataFlowFunction { * obj1.swap(obj2) * ``` */ -private class MemberSwap extends TaintFunction, MemberFunction, AliasFunction { +private class MemberSwap extends DataFlowFunction, MemberFunction, AliasFunction { MemberSwap() { this.hasName("swap") and this.getNumberOfParameters() = 1 and @@ -34,7 +34,7 @@ private class MemberSwap extends TaintFunction, MemberFunction, AliasFunction { this.getDeclaringType() } - override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + override predicate hasDataFlow(FunctionInput input, FunctionOutput output) { input.isQualifierObject() and output.isParameterDeref(0) or diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll new file mode 100644 index 00000000000..64901d39ad3 --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll @@ -0,0 +1,11 @@ +/** + * Provides an abstract class for modeling functions that never throw. + */ + +import semmle.code.cpp.Function +import semmle.code.cpp.models.Models + +/** + * A function that is guaranteed to never throw. + */ +abstract class NonThrowingFunction extends Function { } diff --git a/cpp/ql/lib/semmle/code/cpp/security/BufferAccess.qll b/cpp/ql/lib/semmle/code/cpp/security/BufferAccess.qll index ad7a72262f5..247f654a310 100644 --- a/cpp/ql/lib/semmle/code/cpp/security/BufferAccess.qll +++ b/cpp/ql/lib/semmle/code/cpp/security/BufferAccess.qll @@ -14,7 +14,11 @@ int getPointedSize(Type t) { * BufferWrite differ. */ abstract class BufferAccess extends Expr { - BufferAccess() { not this.isUnevaluated() } + BufferAccess() { + not this.isUnevaluated() and + //A buffer access must be reachable (not in dead code) + reachable(this) + } abstract string getName(); @@ -26,6 +30,8 @@ abstract class BufferAccess extends Expr { * - 1 = buffer range [0, getSize) is accessed entirely. * - 2 = buffer range [0, getSize) may be accessed partially or entirely. * - 3 = buffer is accessed at offset getSize - 1. + * - 4 = buffer is accessed with null terminator read protections + * (does not read past null terminator, regardless of access size) */ abstract Expr getBuffer(string bufferDesc, int accessType); @@ -128,7 +134,7 @@ class StrncpyBA extends BufferAccess { or result = this.(FunctionCall).getArgument(1) and bufferDesc = "source buffer" and - accessType = 2 + accessType = 4 } override Expr getSizeExpr() { result = this.(FunctionCall).getArgument(2) } diff --git a/cpp/ql/lib/semmle/code/cpp/security/boostorg/asio/protocols.qll b/cpp/ql/lib/semmle/code/cpp/security/boostorg/asio/protocols.qll index 8668ecf078c..559ebd444f3 100644 --- a/cpp/ql/lib/semmle/code/cpp/security/boostorg/asio/protocols.qll +++ b/cpp/ql/lib/semmle/code/cpp/security/boostorg/asio/protocols.qll @@ -353,22 +353,6 @@ module BoostorgAsio { } //////////////////////// Dataflow ///////////////////// - /** - * Abstract class for flows of protocol values to the first argument of a context - * constructor. - */ - abstract deprecated class SslContextCallAbstractConfig extends DataFlow::Configuration { - bindingset[this] - SslContextCallAbstractConfig() { any() } - - override predicate isSink(DataFlow::Node sink) { - exists(ConstructorCall cc, SslContextClass c, Expr e | e = sink.asExpr() | - c.getAContructorCall() = cc and - cc.getArgument(0) = e - ) - } - } - /** * Signature for flows of protocol values to the first argument of a context * constructor. @@ -402,20 +386,6 @@ module BoostorgAsio { import DataFlow::Global } - /** - * Any protocol value that flows to the first argument of a context constructor. - */ - deprecated class SslContextCallConfig extends SslContextCallAbstractConfig { - SslContextCallConfig() { this = "SslContextCallConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(Expr e | e = source.asExpr() | - e.fromSource() and - not e.getLocation().getFile().toString().matches("%/boost/asio/%") - ) - } - } - /** * Any protocol value that flows to the first argument of a context constructor. */ @@ -430,21 +400,6 @@ module BoostorgAsio { module SslContextCallFlow = SslContextCallGlobal; - /** - * A banned protocol value that flows to the first argument of a context constructor. - */ - deprecated class SslContextCallBannedProtocolConfig extends SslContextCallAbstractConfig { - SslContextCallBannedProtocolConfig() { this = "SslContextCallBannedProtocolConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(Expr e | e = source.asExpr() | - e.fromSource() and - not e.getLocation().getFile().toString().matches("%/boost/asio/%") and - isExprBannedBoostProtocol(e) - ) - } - } - /** * A banned protocol value that flows to the first argument of a context constructor. */ @@ -461,21 +416,6 @@ module BoostorgAsio { module SslContextCallBannedProtocolFlow = SslContextCallGlobal; - /** - * A TLS 1.2 protocol value that flows to the first argument of a context constructor. - */ - deprecated class SslContextCallTls12ProtocolConfig extends SslContextCallAbstractConfig { - SslContextCallTls12ProtocolConfig() { this = "SslContextCallTls12ProtocolConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(Expr e | e = source.asExpr() | - e.fromSource() and - not e.getLocation().getFile().toString().matches("%/boost/asio/%") and - isExprTls12BoostProtocol(e) - ) - } - } - /** * A TLS 1.2 protocol value that flows to the first argument of a context constructor. */ @@ -491,21 +431,6 @@ module BoostorgAsio { module SslContextCallTls12ProtocolFlow = SslContextCallGlobal; - /** - * A TLS 1.3 protocol value that flows to the first argument of a context constructor. - */ - deprecated class SslContextCallTls13ProtocolConfig extends SslContextCallAbstractConfig { - SslContextCallTls13ProtocolConfig() { this = "SslContextCallTls12ProtocolConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(Expr e | e = source.asExpr() | - e.fromSource() and - not e.getLocation().getFile().toString().matches("%/boost/asio/%") and - isExprTls13BoostProtocol(e) - ) - } - } - /** * A TLS 1.3 protocol value that flows to the first argument of a context constructor. */ @@ -521,21 +446,6 @@ module BoostorgAsio { module SslContextCallTls13ProtocolFlow = SslContextCallGlobal; - /** - * A generic TLS protocol value that flows to the first argument of a context constructor. - */ - deprecated class SslContextCallTlsProtocolConfig extends SslContextCallAbstractConfig { - SslContextCallTlsProtocolConfig() { this = "SslContextCallTlsProtocolConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(Expr e | e = source.asExpr() | - e.fromSource() and - not e.getLocation().getFile().toString().matches("%/boost/asio/%") and - isExprTlsBoostProtocol(e) - ) - } - } - /** * A generic TLS protocol value that flows to the first argument of a context constructor. */ @@ -551,30 +461,6 @@ module BoostorgAsio { module SslContextCallTlsProtocolFlow = SslContextCallGlobal; - /** - * A context constructor call that flows to a call to `SetOptions()`. - */ - deprecated class SslContextFlowsToSetOptionConfig extends DataFlow::Configuration { - SslContextFlowsToSetOptionConfig() { this = "SslContextFlowsToSetOptionConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(SslContextClass c, ConstructorCall cc | - cc = source.asExpr() and - c.getAContructorCall() = cc - ) - } - - override predicate isSink(DataFlow::Node sink) { - exists(FunctionCall fc, SslSetOptionsFunction f, Variable v, VariableAccess va | - va = sink.asExpr() - | - f.getACallToThisFunction() = fc and - v.getAnAccess() = va and - va = fc.getQualifier() - ) - } - } - /** * A context constructor call that flows to a call to `SetOptions()`. */ @@ -599,28 +485,6 @@ module BoostorgAsio { module SslContextFlowsToSetOptionFlow = DataFlow::Global; - /** - * An option value that flows to the first parameter of a call to `SetOptions()`. - */ - deprecated class SslOptionConfig extends DataFlow::Configuration { - SslOptionConfig() { this = "SslOptionConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(Expr e | e = source.asExpr() | - e.fromSource() and - not e.getLocation().getFile().toString().matches("%/boost/asio/%") - ) - } - - override predicate isSink(DataFlow::Node sink) { - exists(SslSetOptionsFunction f, FunctionCall call | - sink.asExpr() = call.getArgument(0) and - f.getACallToThisFunction() = call and - not sink.getLocation().getFile().toString().matches("%/boost/asio/%") - ) - } - } - /** * An option value that flows to the first parameter of a call to `SetOptions()`. */ diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 68930f3b81b..7ff6a6e53db 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -384,11 +384,23 @@ function_return_type( */ coroutine( unique int function: @function ref, - int traits: @type ref, - int handle: @variable ref, - int promise: @variable ref + int traits: @type ref ); +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + /** The `new` function used for allocating the coroutine state, if any. */ coroutine_new( unique int function: @function ref, @@ -829,22 +841,6 @@ variable_template_argument_value( int arg_value: @expr ref ); -/* - Fixed point types - precision(1) = short, precision(2) = default, precision(3) = long - is_unsigned(1) = unsigned is_unsigned(2) = signed - is_fract_type(1) = declared with _Fract - saturating(1) = declared with _Sat -*/ -/* TODO -fixedpointtypes( - unique int id: @fixedpointtype, - int precision: int ref, - int is_unsigned: int ref, - int is_fract_type: int ref, - int saturating: int ref); -*/ - routinetypes( unique int id: @routinetype, int return_type: @type ref @@ -1210,6 +1206,7 @@ conversionkinds( | @reference_to | @ref_indirect | @temp_init + | @c11_generic ; /* @@ -1788,6 +1785,11 @@ case @expr.kind of | 382 = @isvalidwinrttype | 383 = @iswinclass | 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic ; @var_args_expr = @vastartexpr @@ -1901,6 +1903,9 @@ case @expr.kind of | @isvalidwinrttype | @iswinclass | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable ; new_allocated_type( @@ -1961,7 +1966,7 @@ uuidof_bind( int type_id: @type ref ); -@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; sizeof_bind( unique int expr: @runtime_sizeof_or_alignof ref, diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index ce799a53e70..07045b0bd67 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 9741 + 9742 @externalDataElement @@ -16,13 +16,17 @@ @svnentry 575525 + + @location_default + 29765023 + @location_stmt 3819884 - @location_default - 29768335 + @location_expr + 13187951 @diagnostic @@ -30,39 +34,35 @@ @file - 123268 + 123252 @folder - 16342 - - - @location_expr - 13187951 + 16340 @macro_expansion - 33257696 + 33257908 @other_macro_reference - 859141 + 859032 @function - 4179912 + 4179381 @fun_decl - 4544113 + 4543537 @var_decl - 8040448 + 8039427 @type_decl - 3283883 + 3283466 @namespace_decl @@ -70,7 +70,7 @@ @using_declaration - 363267 + 363221 @using_directive @@ -86,7 +86,7 @@ @parameter - 6191425 + 6190639 @membervariable @@ -98,7 +98,7 @@ @localvariable - 576947 + 576946 @enumconstant @@ -330,15 +330,15 @@ @pointer - 568247 + 568175 @type_with_specifiers - 852138 + 852029 @array - 110194 + 110180 @routineptr @@ -346,7 +346,7 @@ @reference - 1276572 + 1276410 @gnu_vector @@ -358,7 +358,7 @@ @rvalue_reference - 333384 + 333342 @block @@ -366,15 +366,15 @@ @decltype - 27081 + 27078 @usertype - 5234696 + 5234965 @mangledname - 6062554 + 6061784 @type_mention @@ -386,19 +386,19 @@ @ptrtomember - 37820 + 37816 @specifier - 24747 + 24743 @gnuattribute - 553773 + 553702 @stdattribute - 253558 + 253563 @declspec @@ -410,15 +410,15 @@ @alignas - 4669 + 4668 @attribute_arg_token - 25213 + 25210 @attribute_arg_constant_expr - 318442 + 318402 @attribute_arg_empty @@ -446,11 +446,11 @@ @comment - 8265960 + 8266137 @namespace - 12140 + 12138 @specialnamequalifyingelement @@ -468,10 +468,6 @@ @initialiser 1710781 - - @lambdacapture - 28015 - @address_of 438815 @@ -482,11 +478,11 @@ @array_to_pointer - 1430839 + 1430838 @parexpr - 3587480 + 3587479 @arithnegexpr @@ -522,7 +518,7 @@ @conditionalexpr - 657238 + 657237 @addexpr @@ -554,7 +550,7 @@ @pdiffexpr - 33689 + 33690 @lshiftexpr @@ -586,11 +582,11 @@ @gtexpr - 104124 + 104111 @ltexpr - 101789 + 101776 @geexpr @@ -662,11 +658,11 @@ @commaexpr - 122838 + 122841 @subscriptexpr - 364479 + 364478 @callexpr @@ -834,7 +830,7 @@ @sizeof_pack - 5603 + 5602 @hasassignexpr @@ -966,11 +962,11 @@ @static_cast - 215643 + 215649 @reinterpret_cast - 31620 + 31621 @const_cast @@ -982,7 +978,7 @@ @lambdaexpr - 21478 + 21475 @param_ref @@ -1026,7 +1022,7 @@ @istriviallycopyableexpr - 3735 + 3734 @isliteraltypeexpr @@ -1340,6 +1336,30 @@ @iswininterface 1 + + @istriviallyequalitycomparable + 2 + + + @isscopedenum + 2 + + + @istriviallyrelocatable + 2 + + + @datasizeof + 10 + + + @c11_generic + 8 + + + @lambdacapture + 28011 + @stmt_expr 1486025 @@ -1350,7 +1370,7 @@ @stmt_while - 29316 + 29317 @stmt_goto @@ -1390,7 +1410,7 @@ @stmt_decl - 593107 + 593124 @stmt_empty @@ -1426,7 +1446,7 @@ @stmt_range_based_for - 8404 + 8403 @stmt_handler @@ -1434,7 +1454,7 @@ @stmt_constexpr_if - 52997 + 52998 @stmt_co_return @@ -1442,39 +1462,39 @@ @ppd_if - 667235 + 667151 @ppd_ifdef - 263345 + 263312 @ppd_ifndef - 266614 + 266580 @ppd_elif - 25213 + 25210 @ppd_else - 209182 + 209155 @ppd_endif - 1197195 + 1197043 @ppd_plain_include - 311438 + 311399 @ppd_define - 2291875 + 2291924 @ppd_undef - 258676 + 258643 @ppd_include_next @@ -1490,7 +1510,7 @@ @ppd_pragma - 296704 + 296710 @ppd_objc_import @@ -1532,11 +1552,11 @@ compilations - 9741 + 9742 id - 9741 + 9742 cwd @@ -1554,7 +1574,7 @@ 1 2 - 9741 + 9742 @@ -2128,7 +2148,7 @@ seconds - 9588 + 9149 @@ -2209,47 +2229,47 @@ 3 4 - 799 + 759 4 5 - 199 + 239 5 - 7 - 119 + 8 + 159 8 10 - 159 + 119 10 11 - 119 + 159 11 - 14 + 15 159 - 14 - 18 + 17 + 19 159 - 19 - 24 + 20 + 44 159 - 42 - 85 - 119 + 50 + 92 + 79 @@ -2317,12 +2337,12 @@ 3 4 - 1358 + 1478 4 5 - 399 + 279 5 @@ -2332,27 +2352,27 @@ 6 7 - 439 + 479 7 8 - 119 + 39 8 - 10 + 9 279 - 10 - 27 - 279 + 9 + 24 + 239 - 28 - 89 - 199 + 25 + 88 + 279 @@ -2400,16 +2420,21 @@ 3 4 - 79 - - - 123 - 124 39 - 137 - 138 + 4 + 5 + 39 + + + 124 + 125 + 39 + + + 129 + 130 39 @@ -2426,27 +2451,27 @@ 1 2 - 5073 + 4394 2 3 - 1957 + 1757 3 4 - 1438 + 1518 4 5 - 679 + 998 5 - 45 - 439 + 46 + 479 @@ -2462,17 +2487,17 @@ 1 2 - 4754 + 4115 2 3 - 1438 + 1478 3 4 - 1398 + 1478 4 @@ -2481,13 +2506,13 @@ 5 - 7 - 799 + 6 + 559 - 7 - 74 - 399 + 6 + 75 + 719 @@ -2503,12 +2528,12 @@ 1 2 - 8549 + 7910 2 3 - 1038 + 1238 @@ -2844,15 +2869,15 @@ compilation_finished - 9741 + 9742 id - 9741 + 9742 cpu_seconds - 7314 + 7100 elapsed_seconds @@ -2870,7 +2895,7 @@ 1 2 - 9741 + 9742 @@ -2886,7 +2911,7 @@ 1 2 - 9741 + 9742 @@ -2902,17 +2927,22 @@ 1 2 - 5870 + 5655 2 3 - 993 + 857 3 + 7 + 553 + + + 11 13 - 451 + 33 @@ -2928,12 +2958,12 @@ 1 2 - 6581 + 6400 2 3 - 733 + 699 @@ -2952,8 +2982,8 @@ 33 - 6 - 7 + 4 + 5 11 @@ -2962,38 +2992,33 @@ 11 - 11 - 12 + 13 + 14 + 22 + + + 51 + 52 11 - 16 - 17 + 159 + 160 11 - 49 - 50 + 177 + 178 11 - 166 - 167 + 185 + 186 11 - 173 - 174 - 11 - - - 190 - 191 - 11 - - - 238 - 239 + 247 + 248 11 @@ -3013,8 +3038,8 @@ 33 - 6 - 7 + 4 + 5 11 @@ -3023,38 +3048,38 @@ 11 - 11 - 12 + 12 + 13 11 - 16 - 17 + 13 + 14 11 - 47 - 48 + 49 + 50 11 - 132 - 133 + 112 + 113 11 - 133 - 134 + 124 + 125 11 - 141 - 142 + 145 + 146 11 - 213 - 214 + 218 + 219 11 @@ -4827,31 +4852,31 @@ locations_default - 29768335 + 29765023 id - 29768335 + 29765023 container - 123268 + 123252 startLine - 2095559 + 2095293 startColumn - 36887 + 36882 endLine - 2099761 + 2099495 endColumn - 48093 + 48087 @@ -4865,7 +4890,7 @@ 1 2 - 29768335 + 29765023 @@ -4881,7 +4906,7 @@ 1 2 - 29768335 + 29765023 @@ -4897,7 +4922,7 @@ 1 2 - 29768335 + 29765023 @@ -4913,7 +4938,7 @@ 1 2 - 29768335 + 29765023 @@ -4929,7 +4954,7 @@ 1 2 - 29768335 + 29765023 @@ -4945,67 +4970,67 @@ 1 11 - 9805 + 9804 11 18 - 10272 + 10271 18 30 - 9338 + 9337 30 42 - 9805 + 9804 43 61 - 9805 + 9804 61 79 - 9338 + 9337 80 106 - 9805 + 9804 108 149 - 9338 + 9337 149 199 - 9338 + 9337 206 291 - 9338 + 9337 304 469 - 9338 + 9337 482 850 - 9338 + 9337 936 2380 - 8404 + 8403 @@ -5021,67 +5046,67 @@ 1 8 - 9338 + 9337 8 13 - 9338 + 9337 13 20 - 9805 + 9804 20 32 - 9338 + 9337 32 43 - 9805 + 9804 44 61 - 9338 + 9337 62 72 - 9338 + 9337 73 93 - 9338 + 9337 97 128 - 9338 + 9337 128 180 - 9338 + 9337 180 267 - 9338 + 9337 277 414 - 9338 + 9337 439 1465 - 9338 + 9337 1557 @@ -5102,67 +5127,67 @@ 1 4 - 8871 + 8870 4 5 - 7937 + 7936 5 6 - 7470 + 7469 6 8 - 11206 + 11204 8 10 - 9338 + 9337 10 15 - 10739 + 10737 15 23 - 9805 + 9804 23 28 - 11206 + 11204 28 34 - 9805 + 9804 34 44 - 9338 + 9337 44 55 - 9338 + 9337 55 66 - 9805 + 9804 66 77 - 8404 + 8403 @@ -5178,67 +5203,67 @@ 1 8 - 9338 + 9337 8 13 - 9338 + 9337 13 20 - 9805 + 9804 20 32 - 9338 + 9337 32 43 - 9805 + 9804 43 60 - 9338 + 9337 61 71 - 9338 + 9337 72 93 - 9338 + 9337 94 127 - 9338 + 9337 128 179 - 9338 + 9337 180 268 - 9338 + 9337 278 413 - 9338 + 9337 437 1465 - 9338 + 9337 1554 @@ -5259,67 +5284,67 @@ 1 9 - 9805 + 9804 9 13 - 9338 + 9337 13 18 - 9338 + 9337 18 26 - 10272 + 10271 27 33 - 9338 + 9337 33 39 - 9338 + 9337 39 47 - 10272 + 10271 47 53 - 9338 + 9337 53 60 - 10272 + 10271 60 66 - 9338 + 9337 66 74 - 9805 + 9804 74 78 - 9805 + 9804 78 90 - 7003 + 7002 @@ -5335,52 +5360,52 @@ 1 2 - 583189 + 583115 2 3 - 314240 + 314200 3 4 - 195641 + 195616 4 6 - 162022 + 162002 6 10 - 183034 + 183011 10 16 - 162956 + 162936 16 25 - 169026 + 169005 25 46 - 161089 + 161068 46 169 - 157353 + 157333 169 265 - 7003 + 7002 @@ -5396,42 +5421,42 @@ 1 2 - 871282 + 871171 2 3 - 273618 + 273583 3 5 - 193773 + 193749 5 8 - 173696 + 173674 8 13 - 188170 + 188146 13 20 - 161089 + 161068 20 51 - 159688 + 159668 51 265 - 74241 + 74231 @@ -5447,47 +5472,47 @@ 1 2 - 612138 + 612060 2 3 - 313306 + 313266 3 4 - 198443 + 198417 4 6 - 183034 + 183011 6 9 - 173229 + 173207 9 13 - 163423 + 163402 13 19 - 174629 + 174607 19 29 - 164824 + 164803 29 52 - 112528 + 112514 @@ -5503,22 +5528,22 @@ 1 2 - 1531980 + 1531786 2 3 - 348792 + 348748 3 5 - 162022 + 162002 5 16 - 52762 + 52755 @@ -5534,47 +5559,47 @@ 1 2 - 587858 + 587783 2 3 - 316108 + 316068 3 4 - 197509 + 197484 4 6 - 168559 + 168538 6 9 - 158287 + 158267 9 14 - 170894 + 170872 14 21 - 175096 + 175074 21 32 - 162489 + 162469 32 63 - 157820 + 157800 64 @@ -5990,52 +6015,52 @@ 1 2 - 593461 + 593386 2 3 - 306302 + 306263 3 4 - 198443 + 198417 4 6 - 159688 + 159668 6 10 - 182567 + 182544 10 16 - 162022 + 162002 16 25 - 171361 + 171339 25 46 - 158754 + 158734 46 161 - 158287 + 158267 162 265 - 8871 + 8870 @@ -6051,47 +6076,47 @@ 1 2 - 886690 + 886577 2 3 - 260077 + 260044 3 4 - 125135 + 125120 4 6 - 141011 + 140993 6 10 - 184902 + 184878 10 15 - 168559 + 168538 15 26 - 163423 + 163402 26 120 - 158287 + 158267 121 265 - 11673 + 11671 @@ -6107,22 +6132,22 @@ 1 2 - 1529646 + 1529452 2 3 - 341789 + 341745 3 5 - 170894 + 170872 5 10 - 57431 + 57424 @@ -6138,47 +6163,47 @@ 1 2 - 623344 + 623265 2 3 - 303501 + 303462 3 4 - 201711 + 201685 4 6 - 183968 + 183945 6 9 - 169960 + 169939 9 13 - 166692 + 166671 13 19 - 175096 + 175074 19 29 - 161089 + 161068 29 52 - 114396 + 114382 @@ -6194,52 +6219,52 @@ 1 2 - 599998 + 599922 2 3 - 306302 + 306263 3 4 - 197042 + 197017 4 6 - 169026 + 169005 6 9 - 156419 + 156400 9 14 - 169026 + 169005 14 21 - 177898 + 177875 21 32 - 162022 + 162002 32 60 - 158287 + 158267 60 65 - 3735 + 3734 @@ -6255,62 +6280,62 @@ 1 2 - 5136 + 5135 2 8 - 3735 + 3734 9 186 - 3735 + 3734 193 288 - 3735 + 3734 294 495 - 3735 + 3734 503 - 554 - 3735 + 555 + 3734 561 633 - 3735 + 3734 640 758 - 3735 + 3734 758 869 - 3735 + 3734 875 1074 - 3735 + 3734 1074 1281 - 3735 + 3734 1289 1590 - 3735 + 3734 1685 @@ -6331,62 +6356,62 @@ 1 2 - 5603 + 5602 2 5 - 3735 + 3734 5 65 - 3735 + 3734 70 100 - 3735 + 3734 100 111 - 3735 + 3734 112 122 - 4202 + 4201 122 140 - 3735 + 3734 143 153 - 3735 + 3734 153 161 - 4202 + 4201 161 173 - 4202 + 4201 173 178 - 3735 + 3734 188 265 - 3735 + 3734 @@ -6402,62 +6427,62 @@ 1 2 - 5603 + 5602 2 8 - 3735 + 3734 9 105 - 3735 + 3734 155 241 - 3735 + 3734 253 336 - 3735 + 3734 340 426 - 3735 + 3734 434 488 - 3735 + 3734 489 572 - 3735 + 3734 573 623 - 3735 + 3734 626 696 - 4202 + 4201 701 813 - 3735 + 3734 818 1095 - 3735 + 3734 1172 @@ -6478,37 +6503,37 @@ 1 2 - 6070 + 6069 2 4 - 3735 + 3734 4 8 - 4202 + 4201 8 15 - 3735 + 3734 15 23 - 3735 + 3734 23 29 - 3735 + 3734 29 35 - 4202 + 4201 35 @@ -6528,12 +6553,12 @@ 44 46 - 3735 + 3734 46 49 - 3735 + 3734 49 @@ -6554,62 +6579,62 @@ 1 2 - 5603 + 5602 2 8 - 3735 + 3734 9 156 - 3735 + 3734 159 240 - 3735 + 3734 251 335 - 3735 + 3734 342 430 - 3735 + 3734 432 490 - 3735 + 3734 490 573 - 3735 + 3734 574 622 - 3735 + 3734 626 698 - 3735 + 3734 700 798 - 3735 + 3734 811 987 - 3735 + 3734 1096 @@ -10538,23 +10563,23 @@ numlines - 1383965 + 1383789 element_id - 1376961 + 1376786 num_lines - 101789 + 101776 num_code - 84980 + 84969 num_comment - 59766 + 59758 @@ -10568,12 +10593,12 @@ 1 2 - 1369957 + 1369783 2 3 - 7003 + 7002 @@ -10589,12 +10614,12 @@ 1 2 - 1370891 + 1370717 2 3 - 6070 + 6069 @@ -10610,7 +10635,7 @@ 1 2 - 1376961 + 1376786 @@ -10626,27 +10651,27 @@ 1 2 - 68171 + 68162 2 3 - 12140 + 12138 3 4 - 7470 + 7469 4 21 - 7937 + 7936 29 921 - 6070 + 6069 @@ -10662,22 +10687,22 @@ 1 2 - 70505 + 70496 2 3 - 12140 + 12138 3 4 - 8404 + 8403 4 6 - 9338 + 9337 6 @@ -10698,17 +10723,17 @@ 1 2 - 69571 + 69562 2 3 - 14941 + 14939 3 4 - 10739 + 10737 4 @@ -10729,12 +10754,12 @@ 1 2 - 52762 + 52755 2 3 - 14474 + 14472 3 @@ -10749,7 +10774,7 @@ 44 922 - 4669 + 4668 @@ -10765,17 +10790,17 @@ 1 2 - 52762 + 52755 2 3 - 16809 + 16807 3 5 - 6070 + 6069 5 @@ -10801,22 +10826,22 @@ 1 2 - 53229 + 53222 2 3 - 15875 + 15873 3 5 - 7470 + 7469 5 7 - 5136 + 5135 7 @@ -10837,27 +10862,27 @@ 1 2 - 34552 + 34548 2 3 - 9338 + 9337 3 4 - 4202 + 4201 4 6 - 4669 + 4668 6 11 - 5136 + 5135 17 @@ -10878,27 +10903,27 @@ 1 2 - 34552 + 34548 2 3 - 9338 + 9337 3 4 - 4202 + 4201 4 6 - 4669 + 4668 6 8 - 4669 + 4668 10 @@ -10919,27 +10944,27 @@ 1 2 - 34552 + 34548 2 3 - 9338 + 9337 3 4 - 4202 + 4201 4 6 - 4669 + 4668 6 10 - 4669 + 4668 10 @@ -11586,15 +11611,15 @@ files - 123268 + 123252 id - 123268 + 123252 name - 123268 + 123252 @@ -11608,7 +11633,7 @@ 1 2 - 123268 + 123252 @@ -11624,7 +11649,7 @@ 1 2 - 123268 + 123252 @@ -11634,15 +11659,15 @@ folders - 16342 + 16340 id - 16342 + 16340 name - 16342 + 16340 @@ -11656,7 +11681,7 @@ 1 2 - 16342 + 16340 @@ -11672,7 +11697,7 @@ 1 2 - 16342 + 16340 @@ -11682,15 +11707,15 @@ containerparent - 138676 + 138659 parent - 16342 + 16340 child - 138676 + 138659 @@ -11704,7 +11729,7 @@ 1 2 - 7470 + 7469 2 @@ -11745,7 +11770,7 @@ 1 2 - 138676 + 138659 @@ -11755,7 +11780,7 @@ fileannotations - 5129296 + 5129447 id @@ -11767,11 +11792,11 @@ name - 54771 + 54773 value - 46045 + 46046 @@ -11790,7 +11815,7 @@ 2 3 - 4729 + 4730 @@ -12011,7 +12036,7 @@ 2 3 - 6219 + 6220 3 @@ -12041,7 +12066,7 @@ 20 34 - 4221 + 4222 34 @@ -12077,7 +12102,7 @@ 1 2 - 54771 + 54773 @@ -12098,7 +12123,7 @@ 2 3 - 8059 + 8060 3 @@ -12164,7 +12189,7 @@ 1 2 - 7156 + 7157 2 @@ -12219,7 +12244,7 @@ 322 399 - 3950 + 3951 399 @@ -12240,7 +12265,7 @@ 1 2 - 46034 + 46035 2 @@ -12331,7 +12356,7 @@ inmacroexpansion - 109779175 + 109779137 id @@ -12339,7 +12364,7 @@ inv - 2700172 + 2700175 @@ -12353,7 +12378,7 @@ 1 3 - 1581957 + 1581965 3 @@ -12368,17 +12393,17 @@ 6 7 - 4819925 + 4819923 7 8 - 6385962 + 6385959 8 9 - 2605254 + 2605253 9 @@ -12399,12 +12424,12 @@ 1 2 - 378425 + 378428 2 3 - 544108 + 544105 3 @@ -12414,7 +12439,7 @@ 4 7 - 200659 + 200660 7 @@ -12439,7 +12464,7 @@ 11 337 - 224846 + 224849 339 @@ -12459,15 +12484,15 @@ affectedbymacroexpansion - 35689090 + 35689082 id - 5156743 + 5156745 inv - 2784775 + 2784776 @@ -12481,12 +12506,12 @@ 1 2 - 2815935 + 2815933 2 3 - 560129 + 560132 3 @@ -12527,7 +12552,7 @@ 1 4 - 229117 + 229120 4 @@ -12542,7 +12567,7 @@ 9 12 - 251088 + 251087 12 @@ -12597,19 +12622,19 @@ macroinvocations - 33490949 + 33491157 id - 33490949 + 33491157 macro_id - 79482 + 79484 location - 760368 + 760390 kind @@ -12627,7 +12652,7 @@ 1 2 - 33490949 + 33491157 @@ -12643,7 +12668,7 @@ 1 2 - 33490949 + 33491157 @@ -12659,7 +12684,7 @@ 1 2 - 33490949 + 33491157 @@ -12710,7 +12735,7 @@ 26 61 - 6061 + 6062 61 @@ -12741,7 +12766,7 @@ 1 2 - 42467 + 42468 2 @@ -12756,7 +12781,7 @@ 4 6 - 6840 + 6841 6 @@ -12787,7 +12812,7 @@ 1 2 - 73747 + 73749 2 @@ -12808,37 +12833,42 @@ 1 2 - 281218 + 281226 2 3 - 169654 + 169659 3 4 - 70733 + 70735 4 5 - 60325 + 60327 5 - 9 - 70360 + 8 + 53858 - 9 - 21 - 59106 + 8 + 17 + 62889 - 21 - 244764 - 48969 + 17 + 525 + 57030 + + + 534 + 244748 + 4662 @@ -12854,12 +12884,12 @@ 1 2 - 714198 + 714219 2 350 - 46169 + 46171 @@ -12875,7 +12905,7 @@ 1 2 - 760368 + 760390 @@ -12889,13 +12919,13 @@ 12 - 20663 - 20664 + 20662 + 20663 11 - 2946167 - 2946168 + 2946099 + 2946100 11 @@ -12948,15 +12978,15 @@ macroparent - 29950278 + 29950856 id - 29950278 + 29950856 parent_id - 23286721 + 23287102 @@ -12970,7 +13000,7 @@ 1 2 - 29950278 + 29950856 @@ -12986,17 +13016,17 @@ 1 2 - 17992646 + 17992872 2 3 - 4459439 + 4459570 3 88 - 834635 + 834659 @@ -13084,11 +13114,11 @@ macro_argument_unexpanded - 84547741 + 84549814 invocation - 26214485 + 26214874 argument_index @@ -13096,7 +13126,7 @@ text - 318300 + 318310 @@ -13110,22 +13140,22 @@ 1 2 - 7432628 + 7432497 2 3 - 10673794 + 10674075 3 4 - 6139174 + 6139354 4 67 - 1968888 + 1968946 @@ -13141,22 +13171,22 @@ 1 2 - 7502786 + 7502657 2 3 - 10820341 + 10820626 3 4 - 5972849 + 5973025 4 67 - 1918508 + 1918564 @@ -13181,7 +13211,7 @@ 718261 - 2322238 + 2322204 33 @@ -13224,12 +13254,12 @@ 1 2 - 35073 + 35074 2 3 - 61262 + 61264 3 @@ -13239,32 +13269,32 @@ 4 5 - 45086 + 45087 5 7 - 23931 + 23932 7 12 - 18490 + 18592 12 16 - 21617 + 21516 16 23 - 24981 + 24982 23 42 - 24326 + 24327 42 @@ -13274,7 +13304,7 @@ 128 522393 - 21910 + 21911 @@ -13290,17 +13320,17 @@ 1 2 - 230194 + 230201 2 3 - 77822 + 77824 3 9 - 10283 + 10284 @@ -13310,11 +13340,11 @@ macro_argument_expanded - 84547741 + 84549814 invocation - 26214485 + 26214874 argument_index @@ -13322,7 +13352,7 @@ text - 192897 + 192902 @@ -13336,22 +13366,22 @@ 1 2 - 7432628 + 7432497 2 3 - 10673794 + 10674075 3 4 - 6139174 + 6139354 4 67 - 1968888 + 1968946 @@ -13367,22 +13397,22 @@ 1 2 - 10688876 + 10688841 2 3 - 9201666 + 9201903 3 4 - 5208146 + 5208300 4 9 - 1115796 + 1115829 @@ -13407,7 +13437,7 @@ 718261 - 2322238 + 2322204 33 @@ -13455,7 +13485,7 @@ 2 3 - 37308 + 37309 3 @@ -13480,12 +13510,12 @@ 7 9 - 14776 + 14788 9 14 - 12044 + 12033 14 @@ -13500,11 +13530,11 @@ 48 151 - 14471 + 14472 152 - 1060426 + 1060410 13738 @@ -13521,12 +13551,12 @@ 1 2 - 97622 + 97625 2 3 - 80870 + 80872 3 @@ -13541,15 +13571,15 @@ functions - 4179912 + 4179381 id - 4179912 + 4179381 name - 1895715 + 1895474 kind @@ -13567,7 +13597,7 @@ 1 2 - 4179912 + 4179381 @@ -13583,7 +13613,7 @@ 1 2 - 4179912 + 4179381 @@ -13599,22 +13629,22 @@ 1 2 - 1498362 + 1498172 2 3 - 153151 + 153131 3 5 - 142879 + 142860 5 952 - 101322 + 101309 @@ -13630,7 +13660,7 @@ 1 2 - 1895248 + 1895007 2 @@ -13785,15 +13815,15 @@ function_return_type - 4185048 + 4184517 id - 4179912 + 4179381 return_type - 818052 + 817948 @@ -13807,12 +13837,12 @@ 1 2 - 4174776 + 4174246 2 3 - 5136 + 5135 @@ -13828,22 +13858,22 @@ 1 2 - 506146 + 506082 2 3 - 211517 + 211490 3 7 - 66303 + 66294 7 2231 - 34085 + 34081 @@ -13863,14 +13893,6 @@ traits 3 - - handle - 6 - - - promise - 6 - @@ -13890,8 +13912,8 @@ - function - handle + traits + function 12 @@ -13899,6 +13921,116 @@ 1 2 + 1 + + + 2 + 3 + 1 + + + 3 + 4 + 1 + + + + + + + + + coroutine_placeholder_variable + 18 + + + placeholder_variable + 18 + + + kind + 3 + + + function + 6 + + + + + placeholder_variable + kind + + + 12 + + + 1 + 2 + 18 + + + + + + + placeholder_variable + function + + + 12 + + + 1 + 2 + 18 + + + + + + + kind + placeholder_variable + + + 12 + + + 6 + 7 + 3 + + + + + + + kind + function + + + 12 + + + 6 + 7 + 3 + + + + + + + function + placeholder_variable + + + 12 + + + 3 + 4 6 @@ -13907,188 +14039,14 @@ function - promise + kind 12 - - 1 - 2 - 6 - - - - - - - traits - function - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 1 - 3 4 - 1 - - - - - - - traits - handle - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 1 - - - 3 - 4 - 1 - - - - - - - traits - promise - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 1 - - - 3 - 4 - 1 - - - - - - - handle - function - - - 12 - - - 1 - 2 - 6 - - - - - - - handle - traits - - - 12 - - - 1 - 2 - 6 - - - - - - - handle - promise - - - 12 - - - 1 - 2 - 6 - - - - - - - promise - function - - - 12 - - - 1 - 2 - 6 - - - - - - - promise - traits - - - 12 - - - 1 - 2 - 6 - - - - - - - promise - handle - - - 12 - - - 1 - 2 6 @@ -14206,33 +14164,33 @@ function_deleted - 96186 + 96174 id - 96186 + 96174 function_defaulted - 73774 + 73764 id - 73774 + 73764 function_prototyped - 4087928 + 4087409 id - 4087928 + 4087409 @@ -14385,27 +14343,27 @@ fun_decls - 4549250 + 4548672 id - 4544113 + 4543537 function - 4036099 + 4035587 type_id - 816651 + 816548 name - 1798128 + 1797899 location - 3371198 + 3370770 @@ -14419,7 +14377,7 @@ 1 2 - 4544113 + 4543537 @@ -14435,12 +14393,12 @@ 1 2 - 4538977 + 4538401 2 3 - 5136 + 5135 @@ -14456,7 +14414,7 @@ 1 2 - 4544113 + 4543537 @@ -14472,7 +14430,7 @@ 1 2 - 4544113 + 4543537 @@ -14488,17 +14446,17 @@ 1 2 - 3606995 + 3606537 2 3 - 356263 + 356218 3 7 - 72840 + 72831 @@ -14514,12 +14472,12 @@ 1 2 - 3996410 + 3995903 2 3 - 39688 + 39683 @@ -14535,7 +14493,7 @@ 1 2 - 4036099 + 4035587 @@ -14551,17 +14509,17 @@ 1 2 - 3663493 + 3663028 2 3 - 311905 + 311866 3 6 - 60700 + 60692 @@ -14577,22 +14535,22 @@ 1 2 - 431438 + 431383 2 3 - 274084 + 274050 3 6 - 63501 + 63493 6 2476 - 47626 + 47620 @@ -14608,22 +14566,22 @@ 1 2 - 515485 + 515419 2 3 - 203112 + 203086 3 7 - 63034 + 63026 7 2192 - 35019 + 35014 @@ -14639,17 +14597,17 @@ 1 2 - 690115 + 690027 2 4 - 67237 + 67228 4 773 - 59299 + 59291 @@ -14665,22 +14623,22 @@ 1 2 - 595329 + 595253 2 3 - 121400 + 121385 3 7 - 63501 + 63493 7 1959 - 36420 + 36415 @@ -14696,27 +14654,27 @@ 1 2 - 1228479 + 1228323 2 3 - 267081 + 267047 3 4 - 77976 + 77966 4 7 - 146147 + 146128 7 986 - 78443 + 78433 @@ -14732,22 +14690,22 @@ 1 2 - 1407778 + 1407600 2 3 - 152217 + 152198 3 5 - 136809 + 136791 5 936 - 101322 + 101309 @@ -14763,17 +14721,17 @@ 1 2 - 1579607 + 1579406 2 4 - 134941 + 134924 4 562 - 83579 + 83568 @@ -14789,27 +14747,27 @@ 1 2 - 1236417 + 1236260 2 3 - 293228 + 293191 3 4 - 78910 + 78900 4 8 - 137275 + 137258 8 542 - 52295 + 52288 @@ -14825,17 +14783,17 @@ 1 2 - 2966841 + 2966464 2 4 - 277820 + 277785 4 55 - 126536 + 126520 @@ -14851,17 +14809,17 @@ 1 2 - 3034078 + 3033693 2 7 - 244201 + 244170 7 55 - 92918 + 92906 @@ -14877,12 +14835,12 @@ 1 2 - 3207774 + 3207367 2 18 - 163423 + 163402 @@ -14898,12 +14856,12 @@ 1 2 - 3232988 + 3232578 2 13 - 138209 + 138192 @@ -14913,22 +14871,22 @@ fun_def - 1889178 + 1888938 id - 1889178 + 1888938 fun_specialized - 26147 + 26144 id - 26147 + 26144 @@ -14946,11 +14904,11 @@ fun_decl_specifiers - 2907074 + 2906705 id - 1689801 + 1689587 name @@ -14968,17 +14926,17 @@ 1 2 - 491205 + 491142 2 3 - 1179919 + 1179769 3 4 - 18676 + 18674 @@ -15150,26 +15108,26 @@ fun_decl_empty_throws - 1472214 + 1472027 fun_decl - 1472214 + 1472027 fun_decl_noexcept - 61665 + 61667 fun_decl - 61665 + 61667 constant - 61567 + 61568 @@ -15183,7 +15141,7 @@ 1 2 - 61665 + 61667 @@ -15199,7 +15157,7 @@ 1 2 - 61468 + 61469 2 @@ -15214,11 +15172,11 @@ fun_decl_empty_noexcept - 863344 + 863234 fun_decl - 863344 + 863234 @@ -15323,19 +15281,19 @@ param_decl_bind - 6995937 + 6995048 id - 6995937 + 6995048 index - 7937 + 7936 fun_decl - 3835788 + 3835301 @@ -15349,7 +15307,7 @@ 1 2 - 6995937 + 6995048 @@ -15365,7 +15323,7 @@ 1 2 - 6995937 + 6995048 @@ -15543,27 +15501,27 @@ 1 2 - 1974158 + 1973908 2 3 - 1061787 + 1061652 3 4 - 502878 + 502814 4 8 - 290894 + 290857 8 18 - 6070 + 6069 @@ -15579,27 +15537,27 @@ 1 2 - 1974158 + 1973908 2 3 - 1061787 + 1061652 3 4 - 502878 + 502814 4 8 - 290894 + 290857 8 18 - 6070 + 6069 @@ -15609,27 +15567,27 @@ var_decls - 8111420 + 8110391 id - 8040448 + 8039427 variable - 7028154 + 7027262 type_id - 2043730 + 2043471 name - 667702 + 667617 location - 5312672 + 5311998 @@ -15643,7 +15601,7 @@ 1 2 - 8040448 + 8039427 @@ -15659,12 +15617,12 @@ 1 2 - 7972277 + 7971265 2 3 - 68171 + 68162 @@ -15680,7 +15638,7 @@ 1 2 - 8040448 + 8039427 @@ -15696,7 +15654,7 @@ 1 2 - 8037646 + 8036626 2 @@ -15717,17 +15675,17 @@ 1 2 - 6176016 + 6175232 2 3 - 698519 + 698431 3 7 - 153618 + 153598 @@ -15743,12 +15701,12 @@ 1 2 - 6856793 + 6855922 2 4 - 171361 + 171339 @@ -15764,12 +15722,12 @@ 1 2 - 6912824 + 6911946 2 3 - 115330 + 115315 @@ -15785,12 +15743,12 @@ 1 2 - 6482786 + 6481963 2 3 - 543033 + 542964 3 @@ -15811,27 +15769,27 @@ 1 2 - 1165911 + 1165763 2 3 - 477197 + 477136 3 4 - 94785 + 94773 4 7 - 184902 + 184878 7 762 - 120933 + 120918 @@ -15847,22 +15805,22 @@ 1 2 - 1299452 + 1299287 2 3 - 452450 + 452392 3 6 - 155952 + 155933 6 724 - 135875 + 135857 @@ -15878,17 +15836,17 @@ 1 2 - 1539451 + 1539256 2 3 - 383345 + 383296 3 128 - 120933 + 120918 @@ -15904,22 +15862,22 @@ 1 2 - 1365755 + 1365582 2 3 - 404357 + 404305 3 7 - 173229 + 173207 7 592 - 100388 + 100376 @@ -15935,37 +15893,37 @@ 1 2 - 341322 + 341278 2 3 - 86848 + 86837 3 4 - 48560 + 48554 4 6 - 51828 + 51822 6 12 - 52295 + 52288 12 33 - 50427 + 50421 34 2384 - 36420 + 36415 @@ -15981,37 +15939,37 @@ 1 2 - 368870 + 368823 2 3 - 77976 + 77966 3 4 - 45291 + 45285 4 6 - 49494 + 49487 6 14 - 53229 + 53222 14 56 - 50894 + 50888 56 2301 - 21945 + 21942 @@ -16027,27 +15985,27 @@ 1 2 - 457119 + 457061 2 3 - 93851 + 93840 3 5 - 46692 + 46686 5 19 - 50894 + 50888 19 1182 - 19143 + 19141 @@ -16063,32 +16021,32 @@ 1 2 - 379143 + 379094 2 3 - 90583 + 90571 3 5 - 59766 + 59758 5 9 - 51361 + 51355 9 21 - 50427 + 50421 21 1010 - 36420 + 36415 @@ -16104,17 +16062,17 @@ 1 2 - 4496954 + 4496383 2 3 - 531827 + 531760 3 896 - 283890 + 283854 @@ -16130,17 +16088,17 @@ 1 2 - 4886369 + 4885749 2 17 - 415563 + 415510 17 892 - 10739 + 10737 @@ -16156,12 +16114,12 @@ 1 2 - 4962478 + 4961848 2 759 - 350193 + 350149 @@ -16177,12 +16135,12 @@ 1 2 - 5303334 + 5302660 2 6 - 9338 + 9337 @@ -16192,22 +16150,22 @@ var_def - 3995477 + 3994969 id - 3995477 + 3994969 var_decl_specifiers - 378676 + 378628 id - 378676 + 378628 name @@ -16225,7 +16183,7 @@ 1 2 - 378676 + 378628 @@ -16277,19 +16235,19 @@ type_decls - 3283883 + 3283466 id - 3283883 + 3283466 type_id - 3233455 + 3233045 location - 3166685 + 3166283 @@ -16303,7 +16261,7 @@ 1 2 - 3283883 + 3283466 @@ -16319,7 +16277,7 @@ 1 2 - 3283883 + 3283466 @@ -16335,12 +16293,12 @@ 1 2 - 3191899 + 3191493 2 5 - 41556 + 41551 @@ -16356,12 +16314,12 @@ 1 2 - 3191899 + 3191493 2 5 - 41556 + 41551 @@ -16377,12 +16335,12 @@ 1 2 - 3114389 + 3113994 2 20 - 52295 + 52288 @@ -16398,12 +16356,12 @@ 1 2 - 3114389 + 3113994 2 20 - 52295 + 52288 @@ -16413,22 +16371,22 @@ type_def - 2642328 + 2641993 id - 2642328 + 2641993 type_decl_top - 743811 + 743717 type_decl - 743811 + 743717 @@ -16801,19 +16759,19 @@ usings - 369804 + 369757 id - 369804 + 369757 element_id - 315641 + 315601 location - 247937 + 247905 kind @@ -16831,7 +16789,7 @@ 1 2 - 369804 + 369757 @@ -16847,7 +16805,7 @@ 1 2 - 369804 + 369757 @@ -16863,7 +16821,7 @@ 1 2 - 369804 + 369757 @@ -16879,12 +16837,12 @@ 1 2 - 263345 + 263312 2 3 - 50894 + 50888 3 @@ -16905,12 +16863,12 @@ 1 2 - 263345 + 263312 2 3 - 50894 + 50888 3 @@ -16931,7 +16889,7 @@ 1 2 - 315641 + 315601 @@ -16947,17 +16905,17 @@ 1 2 - 202645 + 202619 2 4 - 10739 + 10737 4 5 - 31283 + 31280 5 @@ -16978,17 +16936,17 @@ 1 2 - 202645 + 202619 2 4 - 10739 + 10737 4 5 - 31283 + 31280 5 @@ -17009,7 +16967,7 @@ 1 2 - 247937 + 247905 @@ -17082,7 +17040,7 @@ using_container - 466789 + 466802 parent @@ -17090,7 +17048,7 @@ child - 295983 + 295992 @@ -17160,17 +17118,17 @@ 1 2 - 218307 + 218314 2 3 - 51723 + 51725 3 11 - 23818 + 23819 13 @@ -17793,23 +17751,23 @@ params - 6355316 + 6354509 id - 6191425 + 6190639 function - 3492131 + 3491688 index - 7937 + 7936 type_id - 1846688 + 1846453 @@ -17823,7 +17781,7 @@ 1 2 - 6191425 + 6190639 @@ -17839,7 +17797,7 @@ 1 2 - 6191425 + 6190639 @@ -17855,12 +17813,12 @@ 1 2 - 6067690 + 6066919 2 4 - 123735 + 123719 @@ -17876,22 +17834,22 @@ 1 2 - 1867699 + 1867462 2 3 - 952993 + 952872 3 4 - 430037 + 429983 4 18 - 241400 + 241369 @@ -17907,22 +17865,22 @@ 1 2 - 1867699 + 1867462 2 3 - 952993 + 952872 3 4 - 430037 + 429983 4 18 - 241400 + 241369 @@ -17938,22 +17896,22 @@ 1 2 - 2166065 + 2165790 2 3 - 826924 + 826819 3 4 - 346458 + 346414 4 12 - 152684 + 152665 @@ -18207,22 +18165,22 @@ 1 2 - 1184121 + 1183971 2 3 - 406224 + 406173 3 7 - 154085 + 154065 7 518 - 102256 + 102243 @@ -18238,22 +18196,22 @@ 1 2 - 1404977 + 1404798 2 3 - 212450 + 212423 3 7 - 147548 + 147529 7 502 - 81711 + 81701 @@ -18269,17 +18227,17 @@ 1 2 - 1420385 + 1420205 2 3 - 347392 + 347348 3 13 - 78910 + 78900 @@ -18293,7 +18251,7 @@ new - 122753 + 122752 old @@ -18719,11 +18677,11 @@ localvariables - 576947 + 576946 id - 576947 + 576946 type_id @@ -18745,7 +18703,7 @@ 1 2 - 576947 + 576946 @@ -18761,7 +18719,7 @@ 1 2 - 576947 + 576946 @@ -18782,7 +18740,7 @@ 2 3 - 5366 + 5362 3 @@ -18792,7 +18750,7 @@ 4 7 - 3376 + 3380 7 @@ -18818,7 +18776,7 @@ 1 2 - 26913 + 26908 2 @@ -18828,7 +18786,7 @@ 3 5 - 2914 + 2918 5 @@ -18910,11 +18868,11 @@ autoderivation - 147958 + 147961 var - 147958 + 147961 derivation_type @@ -18932,7 +18890,7 @@ 1 2 - 147958 + 147961 @@ -19928,19 +19886,19 @@ builtintypes - 26147 + 26144 id - 26147 + 26144 name - 26147 + 26144 kind - 26147 + 26144 size @@ -19966,7 +19924,7 @@ 1 2 - 26147 + 26144 @@ -19982,7 +19940,7 @@ 1 2 - 26147 + 26144 @@ -19998,7 +19956,7 @@ 1 2 - 26147 + 26144 @@ -20014,7 +19972,7 @@ 1 2 - 26147 + 26144 @@ -20030,7 +19988,7 @@ 1 2 - 26147 + 26144 @@ -20046,7 +20004,7 @@ 1 2 - 26147 + 26144 @@ -20062,7 +20020,7 @@ 1 2 - 26147 + 26144 @@ -20078,7 +20036,7 @@ 1 2 - 26147 + 26144 @@ -20094,7 +20052,7 @@ 1 2 - 26147 + 26144 @@ -20110,7 +20068,7 @@ 1 2 - 26147 + 26144 @@ -20126,7 +20084,7 @@ 1 2 - 26147 + 26144 @@ -20142,7 +20100,7 @@ 1 2 - 26147 + 26144 @@ -20158,7 +20116,7 @@ 1 2 - 26147 + 26144 @@ -20174,7 +20132,7 @@ 1 2 - 26147 + 26144 @@ -20190,7 +20148,7 @@ 1 2 - 26147 + 26144 @@ -20635,15 +20593,15 @@ derivedtypes - 3670030 + 3669564 id - 3670030 + 3669564 name - 1552992 + 1552795 kind @@ -20651,7 +20609,7 @@ type_id - 2363107 + 2362807 @@ -20665,7 +20623,7 @@ 1 2 - 3670030 + 3669564 @@ -20681,7 +20639,7 @@ 1 2 - 3670030 + 3669564 @@ -20697,7 +20655,7 @@ 1 2 - 3670030 + 3669564 @@ -20713,17 +20671,17 @@ 1 2 - 1324199 + 1324031 2 4 - 120466 + 120451 4 1153 - 108326 + 108312 @@ -20739,7 +20697,7 @@ 1 2 - 1552058 + 1551861 2 @@ -20760,17 +20718,17 @@ 1 2 - 1324199 + 1324031 2 4 - 120466 + 120451 4 1135 - 108326 + 108312 @@ -20909,22 +20867,22 @@ 1 2 - 1515638 + 1515446 2 3 - 546302 + 546232 3 4 - 218520 + 218493 4 72 - 82645 + 82635 @@ -20940,22 +20898,22 @@ 1 2 - 1526844 + 1526650 2 3 - 538831 + 538763 3 4 - 215719 + 215691 4 72 - 81711 + 81701 @@ -20971,22 +20929,22 @@ 1 2 - 1519840 + 1519647 2 3 - 550037 + 549967 3 4 - 217587 + 217559 4 6 - 75641 + 75632 @@ -20996,11 +20954,11 @@ pointerishsize - 2707698 + 2707354 id - 2707698 + 2707354 size @@ -21022,7 +20980,7 @@ 1 2 - 2707698 + 2707354 @@ -21038,7 +20996,7 @@ 1 2 - 2707698 + 2707354 @@ -21112,19 +21070,19 @@ arraysizes - 88248 + 88237 id - 88248 + 88237 num_elements - 31750 + 31746 bytesize - 33151 + 33147 alignment @@ -21142,7 +21100,7 @@ 1 2 - 88248 + 88237 @@ -21158,7 +21116,7 @@ 1 2 - 88248 + 88237 @@ -21174,7 +21132,7 @@ 1 2 - 88248 + 88237 @@ -21195,7 +21153,7 @@ 2 3 - 23813 + 23810 3 @@ -21226,7 +21184,7 @@ 1 2 - 26614 + 26611 2 @@ -21252,7 +21210,7 @@ 1 2 - 26614 + 26611 2 @@ -21283,7 +21241,7 @@ 2 3 - 23813 + 23810 3 @@ -21314,12 +21272,12 @@ 1 2 - 27548 + 27545 2 3 - 3735 + 3734 3 @@ -21340,12 +21298,12 @@ 1 2 - 27548 + 27545 2 3 - 4669 + 4668 4 @@ -21448,15 +21406,15 @@ typedefbase - 1686067 + 1686117 id - 1686067 + 1686117 type_id - 793466 + 793489 @@ -21470,7 +21428,7 @@ 1 2 - 1686067 + 1686117 @@ -21486,22 +21444,22 @@ 1 2 - 617388 + 617406 2 3 - 83252 + 83254 3 6 - 62030 + 62031 6 5437 - 30794 + 30795 @@ -21797,19 +21755,19 @@ usertypes - 5234696 + 5234965 id - 5234696 + 5234965 name - 1352681 + 1352509 kind - 5136 + 5135 @@ -21823,7 +21781,7 @@ 1 2 - 5234696 + 5234965 @@ -21839,7 +21797,7 @@ 1 2 - 5234696 + 5234965 @@ -21855,27 +21813,27 @@ 1 2 - 983810 + 983686 2 3 - 153618 + 153598 3 7 - 104591 + 104577 7 61 - 101789 + 101776 65 874 - 8871 + 8870 @@ -21891,17 +21849,17 @@ 1 2 - 1212137 + 1211983 2 3 - 125602 + 125120 3 7 - 14941 + 15406 @@ -21935,8 +21893,8 @@ 466 - 133 - 134 + 135 + 136 466 @@ -22001,8 +21959,8 @@ 466 - 41 - 42 + 43 + 44 466 @@ -22043,15 +22001,15 @@ usertypesize - 1706610 + 1707327 id - 1706610 + 1707327 size - 13540 + 13539 alignment @@ -22069,7 +22027,7 @@ 1 2 - 1706610 + 1707327 @@ -22085,7 +22043,7 @@ 1 2 - 1706610 + 1707327 @@ -22106,7 +22064,7 @@ 2 3 - 4202 + 4201 3 @@ -22140,7 +22098,7 @@ 740 - 2470 + 2472 933 @@ -22157,7 +22115,7 @@ 1 2 - 10272 + 10271 2 @@ -22201,8 +22159,8 @@ 466 - 3209 - 3210 + 3211 + 3212 466 @@ -22313,15 +22271,15 @@ mangled_name - 9020523 + 9020312 id - 9020523 + 9020312 mangled_name - 6062554 + 6061784 is_complete @@ -22339,7 +22297,7 @@ 1 2 - 9020523 + 9020312 @@ -22355,7 +22313,7 @@ 1 2 - 9020523 + 9020312 @@ -22371,12 +22329,12 @@ 1 2 - 5789869 + 5789134 2 874 - 272684 + 272649 @@ -22392,7 +22350,7 @@ 1 2 - 6062554 + 6061784 @@ -22406,8 +22364,8 @@ 12 - 19319 - 19320 + 19321 + 19322 466 @@ -22434,59 +22392,59 @@ is_pod_class - 534689 + 534705 id - 534689 + 534705 is_standard_layout_class - 1254160 + 1254935 id - 1254160 + 1254935 is_complete - 1645910 + 1646635 id - 1645910 + 1646635 is_class_template - 398287 + 398236 id - 398287 + 398236 class_instantiation - 1089802 + 1089664 to - 1089802 + 1089664 from - 168559 + 168538 @@ -22500,7 +22458,7 @@ 1 2 - 1089802 + 1089664 @@ -22516,42 +22474,42 @@ 1 2 - 59766 + 59758 2 3 - 29416 + 29412 3 4 - 15875 + 15873 4 5 - 13073 + 13072 5 6 - 9805 + 9804 6 10 - 12606 + 12605 10 16 - 13073 + 13072 16 70 - 13540 + 13539 70 @@ -22566,11 +22524,11 @@ class_template_argument - 2883028 + 2882763 type_id - 1315580 + 1315517 index @@ -22578,7 +22536,7 @@ arg_type - 840471 + 840394 @@ -22592,7 +22550,7 @@ 1 2 - 540943 + 540959 2 @@ -22602,12 +22560,12 @@ 3 4 - 231424 + 231397 4 7 - 120368 + 120315 7 @@ -22628,22 +22586,22 @@ 1 2 - 567595 + 567611 2 3 - 410482 + 410483 3 4 - 244869 + 244842 4 113 - 92633 + 92579 @@ -22687,8 +22645,8 @@ 101 - 12810 - 116427 + 12805 + 116418 45 @@ -22751,27 +22709,27 @@ 1 2 - 523378 + 523348 2 3 - 174384 + 174344 3 4 - 51317 + 51341 4 10 - 64016 + 63984 10 10265 - 27374 + 27375 @@ -22787,12 +22745,12 @@ 1 2 - 746573 + 746494 2 3 - 77833 + 77836 3 @@ -22807,11 +22765,11 @@ class_template_argument_value - 495407 + 495344 type_id - 304902 + 304863 index @@ -22819,7 +22777,7 @@ arg_value - 495407 + 495344 @@ -22833,12 +22791,12 @@ 1 2 - 249804 + 249773 2 3 - 53229 + 53222 3 @@ -22859,22 +22817,22 @@ 1 2 - 189571 + 189547 2 3 - 81244 + 81234 3 4 - 12140 + 12138 4 9 - 21945 + 21942 @@ -22952,7 +22910,7 @@ 1 2 - 495407 + 495344 @@ -22968,7 +22926,7 @@ 1 2 - 495407 + 495344 @@ -22978,15 +22936,15 @@ is_proxy_class_for - 62101 + 63026 id - 62101 + 63026 templ_param_id - 62101 + 63026 @@ -23000,7 +22958,7 @@ 1 2 - 62101 + 63026 @@ -23016,7 +22974,7 @@ 1 2 - 62101 + 63026 @@ -23322,11 +23280,11 @@ is_function_template - 1403109 + 1402931 id - 1403109 + 1402931 @@ -23888,22 +23846,22 @@ is_variable_template - 40289 + 40290 id - 40289 + 40290 variable_instantiation - 204304 + 204308 to - 204304 + 204308 from @@ -23921,7 +23879,7 @@ 1 2 - 204304 + 204308 @@ -23937,7 +23895,7 @@ 1 2 - 12214 + 12215 2 @@ -23982,11 +23940,11 @@ variable_template_argument - 383982 + 383990 variable_id - 195635 + 195640 index @@ -23994,7 +23952,7 @@ arg_type - 187558 + 187562 @@ -24008,22 +23966,22 @@ 1 2 - 86095 + 86097 2 3 - 70235 + 70237 3 4 - 28862 + 28863 4 17 - 10441 + 10442 @@ -24039,17 +23997,17 @@ 1 2 - 90429 + 90431 2 3 - 71713 + 71714 3 4 - 24035 + 24036 4 @@ -24187,7 +24145,7 @@ 1 2 - 145594 + 145597 2 @@ -24218,7 +24176,7 @@ 1 2 - 170220 + 170224 2 @@ -24457,19 +24415,19 @@ routinetypeargs - 983344 + 983219 routine - 423500 + 423447 index - 7937 + 7936 type_id - 226925 + 226896 @@ -24483,27 +24441,27 @@ 1 2 - 152684 + 152665 2 3 - 134007 + 133990 3 4 - 63501 + 63493 4 5 - 45758 + 45752 5 18 - 27548 + 27545 @@ -24519,27 +24477,27 @@ 1 2 - 182567 + 182544 2 3 - 133540 + 133523 3 4 - 58832 + 58825 4 5 - 33618 + 33614 5 11 - 14941 + 14939 @@ -24697,27 +24655,27 @@ 1 2 - 146614 + 146595 2 3 - 30817 + 30813 3 5 - 16809 + 16807 5 12 - 18210 + 18207 12 110 - 14474 + 14472 @@ -24733,22 +24691,22 @@ 1 2 - 172762 + 172740 2 3 - 30817 + 30813 3 6 - 18676 + 18674 6 14 - 4669 + 4668 @@ -24758,19 +24716,19 @@ ptrtomembers - 37820 + 37816 id - 37820 + 37816 type_id - 37820 + 37816 class_id - 15408 + 15406 @@ -24784,7 +24742,7 @@ 1 2 - 37820 + 37816 @@ -24800,7 +24758,7 @@ 1 2 - 37820 + 37816 @@ -24816,7 +24774,7 @@ 1 2 - 37820 + 37816 @@ -24832,7 +24790,7 @@ 1 2 - 37820 + 37816 @@ -24848,7 +24806,7 @@ 1 2 - 13540 + 13539 8 @@ -24874,7 +24832,7 @@ 1 2 - 13540 + 13539 8 @@ -24894,15 +24852,15 @@ specifiers - 24747 + 24743 id - 24747 + 24743 str - 24747 + 24743 @@ -24916,7 +24874,7 @@ 1 2 - 24747 + 24743 @@ -24932,7 +24890,7 @@ 1 2 - 24747 + 24743 @@ -24942,15 +24900,15 @@ typespecifiers - 1132293 + 1133083 type_id - 1114083 + 1114875 spec_id - 3735 + 3734 @@ -24964,12 +24922,12 @@ 1 2 - 1095872 + 1096667 2 3 - 18210 + 18207 @@ -25010,7 +24968,12 @@ 219 220 - 933 + 466 + + + 221 + 222 + 466 1701 @@ -25025,15 +24988,15 @@ funspecifiers - 10305968 + 10304659 func_id - 4068784 + 4068267 spec_id - 8404 + 8403 @@ -25047,27 +25010,27 @@ 1 2 - 1357817 + 1357645 2 3 - 641088 + 641006 3 4 - 985211 + 985086 4 5 - 780231 + 780132 5 8 - 304435 + 304396 @@ -25178,15 +25141,15 @@ varspecifiers - 2246376 + 2246090 var_id - 1225211 + 1225055 spec_id - 3735 + 3734 @@ -25200,22 +25163,22 @@ 1 2 - 730270 + 730177 2 3 - 202645 + 202619 3 4 - 58365 + 58358 4 5 - 233929 + 233899 @@ -25276,15 +25239,15 @@ explicit_specifier_exprs - 32605 + 32606 func_id - 32605 + 32606 constant - 32605 + 32606 @@ -25298,7 +25261,7 @@ 1 2 - 32605 + 32606 @@ -25314,7 +25277,7 @@ 1 2 - 32605 + 32606 @@ -25324,11 +25287,11 @@ attributes - 561710 + 561639 id - 561710 + 561639 kind @@ -25336,7 +25299,7 @@ name - 11206 + 11204 name_space @@ -25344,7 +25307,7 @@ location - 481399 + 481338 @@ -25358,7 +25321,7 @@ 1 2 - 561710 + 561639 @@ -25374,7 +25337,7 @@ 1 2 - 561710 + 561639 @@ -25390,7 +25353,7 @@ 1 2 - 561710 + 561639 @@ -25406,7 +25369,7 @@ 1 2 - 561710 + 561639 @@ -25597,7 +25560,7 @@ 1 2 - 10272 + 10271 2 @@ -25618,7 +25581,7 @@ 1 2 - 11206 + 11204 @@ -25789,17 +25752,17 @@ 1 2 - 431905 + 431850 2 3 - 20077 + 20075 3 7 - 29416 + 29412 @@ -25815,7 +25778,7 @@ 1 2 - 481399 + 481338 @@ -25831,17 +25794,17 @@ 1 2 - 433306 + 433251 2 3 - 19610 + 19608 3 4 - 28482 + 28478 @@ -25857,7 +25820,7 @@ 1 2 - 481399 + 481338 @@ -25867,11 +25830,11 @@ attribute_args - 344123 + 344080 id - 344123 + 344080 kind @@ -25879,7 +25842,7 @@ attribute - 262878 + 262845 index @@ -25887,7 +25850,7 @@ location - 327781 + 327739 @@ -25901,7 +25864,7 @@ 1 2 - 344123 + 344080 @@ -25917,7 +25880,7 @@ 1 2 - 344123 + 344080 @@ -25933,7 +25896,7 @@ 1 2 - 344123 + 344080 @@ -25949,7 +25912,7 @@ 1 2 - 344123 + 344080 @@ -26064,17 +26027,17 @@ 1 2 - 197509 + 197484 2 3 - 49494 + 49487 3 4 - 15875 + 15873 @@ -26090,12 +26053,12 @@ 1 2 - 252606 + 252574 2 3 - 10272 + 10271 @@ -26111,17 +26074,17 @@ 1 2 - 197509 + 197484 2 3 - 49494 + 49487 3 4 - 15875 + 15873 @@ -26137,17 +26100,17 @@ 1 2 - 197509 + 197484 2 3 - 49494 + 49487 3 4 - 15875 + 15873 @@ -26262,12 +26225,12 @@ 1 2 - 313773 + 313733 2 7 - 14007 + 14005 @@ -26283,12 +26246,12 @@ 1 2 - 315174 + 315134 2 3 - 12606 + 12605 @@ -26304,12 +26267,12 @@ 1 2 - 313773 + 313733 2 7 - 14007 + 14005 @@ -26325,7 +26288,7 @@ 1 2 - 327781 + 327739 @@ -26335,15 +26298,15 @@ attribute_arg_value - 25213 + 25210 arg - 25213 + 25210 value - 15875 + 15873 @@ -26357,7 +26320,7 @@ 1 2 - 25213 + 25210 @@ -26373,7 +26336,7 @@ 1 2 - 14474 + 14472 2 @@ -26436,15 +26399,15 @@ attribute_arg_constant - 318442 + 318402 arg - 318442 + 318402 constant - 318442 + 318402 @@ -26458,7 +26421,7 @@ 1 2 - 318442 + 318402 @@ -26474,7 +26437,7 @@ 1 2 - 318442 + 318402 @@ -26648,15 +26611,15 @@ funcattributes - 630348 + 630268 func_id - 443578 + 443522 spec_id - 524823 + 524757 @@ -26670,17 +26633,17 @@ 1 2 - 338520 + 338477 2 3 - 64435 + 64427 3 6 - 39688 + 39683 6 @@ -26701,12 +26664,12 @@ 1 2 - 506146 + 506082 2 17 - 18676 + 18674 @@ -26842,15 +26805,15 @@ unspecifiedtype - 9489316 + 9489045 type_id - 9489316 + 9489045 unspecified_type_id - 6491191 + 6491300 @@ -26864,7 +26827,7 @@ 1 2 - 9489316 + 9489045 @@ -26880,17 +26843,17 @@ 1 2 - 4559522 + 4559877 2 3 - 1715949 + 1715731 3 145 - 215719 + 215691 @@ -26900,19 +26863,19 @@ member - 3881547 + 3881054 parent - 545835 + 545766 index - 92918 + 92906 child - 3810107 + 3809624 @@ -26926,47 +26889,47 @@ 1 2 - 129805 + 129788 2 3 - 64902 + 64894 3 4 - 73307 + 73297 4 5 - 75174 + 75165 5 6 - 40622 + 40617 6 8 - 46692 + 46686 8 14 - 45758 + 45752 14 30 - 41556 + 41551 30 200 - 28015 + 28011 @@ -26982,52 +26945,52 @@ 1 2 - 129805 + 129788 2 3 - 64902 + 64894 3 4 - 73307 + 73297 4 5 - 76108 + 76099 5 6 - 39688 + 39683 6 7 - 24280 + 24277 7 9 - 42023 + 42017 9 17 - 43890 + 43885 17 41 - 41556 + 41551 41 200 - 10272 + 10271 @@ -27043,57 +27006,57 @@ 1 2 - 26147 + 26144 2 3 - 7003 + 7002 3 4 - 3735 + 3734 4 5 - 7937 + 7936 5 6 - 5603 + 5602 6 7 - 5603 + 5602 7 9 - 7470 + 7469 9 16 - 7003 + 7002 16 52 - 7003 + 7002 52 107 - 7003 + 7002 108 577 - 7003 + 7002 737 @@ -27114,57 +27077,57 @@ 1 2 - 26147 + 26144 2 3 - 7003 + 7002 3 4 - 3735 + 3734 4 5 - 7937 + 7936 5 6 - 5603 + 5602 6 7 - 5603 + 5602 7 9 - 7470 + 7469 9 16 - 7003 + 7002 16 52 - 7003 + 7002 52 107 - 7003 + 7002 108 577 - 7003 + 7002 738 @@ -27185,7 +27148,7 @@ 1 2 - 3810107 + 3809624 @@ -27201,12 +27164,12 @@ 1 2 - 3738668 + 3738193 2 3 - 71439 + 71430 @@ -27216,15 +27179,15 @@ enclosingfunction - 118325 + 118329 child - 118325 + 118329 parent - 67663 + 67665 @@ -27238,7 +27201,7 @@ 1 2 - 118325 + 118329 @@ -27254,12 +27217,12 @@ 1 2 - 35761 + 35762 2 3 - 21052 + 21053 3 @@ -27269,7 +27232,7 @@ 4 45 - 4887 + 4888 @@ -28600,19 +28563,19 @@ comments - 8265960 + 8266137 id - 8265960 + 8266137 contents - 3147511 + 3147578 location - 8265960 + 8266137 @@ -28626,7 +28589,7 @@ 1 2 - 8265960 + 8266137 @@ -28642,7 +28605,7 @@ 1 2 - 8265960 + 8266137 @@ -28658,17 +28621,17 @@ 1 2 - 2879275 + 2879337 2 7 - 236614 + 236620 7 32784 - 31620 + 31621 @@ -28684,17 +28647,17 @@ 1 2 - 2879275 + 2879337 2 7 - 236614 + 236620 7 32784 - 31620 + 31621 @@ -28710,7 +28673,7 @@ 1 2 - 8265960 + 8266137 @@ -28726,7 +28689,7 @@ 1 2 - 8265960 + 8266137 @@ -28736,15 +28699,15 @@ commentbinding - 3091510 + 3091117 id - 2445753 + 2445442 element - 3014934 + 3014551 @@ -28758,12 +28721,12 @@ 1 2 - 2368710 + 2368409 2 97 - 77042 + 77032 @@ -28779,12 +28742,12 @@ 1 2 - 2938358 + 2937985 2 3 - 76575 + 76565 @@ -28794,15 +28757,15 @@ exprconv - 7033024 + 7033022 converted - 7033024 + 7033022 conversion - 7033024 + 7033022 @@ -28816,7 +28779,7 @@ 1 2 - 7033024 + 7033022 @@ -28832,7 +28795,7 @@ 1 2 - 7033024 + 7033022 @@ -29189,15 +29152,15 @@ namespaces - 12140 + 12138 id - 12140 + 12138 name - 9805 + 9804 @@ -29211,7 +29174,7 @@ 1 2 - 12140 + 12138 @@ -29227,7 +29190,7 @@ 1 2 - 8404 + 8403 2 @@ -29258,15 +29221,15 @@ namespacembrs - 2388321 + 2388018 parentid - 10272 + 10271 memberid - 2388321 + 2388018 @@ -29341,7 +29304,7 @@ 1 2 - 2388321 + 2388018 @@ -29557,11 +29520,11 @@ expr_isload - 5096974 + 5096886 expr_id - 5096974 + 5096886 @@ -30262,7 +30225,7 @@ fun - 511325 + 511344 @@ -30297,12 +30260,12 @@ 1 2 - 315052 + 315090 2 3 - 77912 + 77893 3 @@ -30605,15 +30568,15 @@ expr_cond_guard - 657238 + 657237 cond - 657238 + 657237 guard - 657238 + 657237 @@ -30627,7 +30590,7 @@ 1 2 - 657238 + 657237 @@ -30643,7 +30606,7 @@ 1 2 - 657238 + 657237 @@ -30701,15 +30664,15 @@ expr_cond_false - 657238 + 657237 cond - 657238 + 657237 false - 657238 + 657237 @@ -30723,7 +30686,7 @@ 1 2 - 657238 + 657237 @@ -30739,7 +30702,7 @@ 1 2 - 657238 + 657237 @@ -32082,15 +32045,15 @@ expr_types - 18451522 + 18451524 id - 18319865 + 18319863 typeid - 1214570 + 1214606 value_category @@ -32108,12 +32071,12 @@ 1 2 - 18188208 + 18188202 2 3 - 131657 + 131661 @@ -32129,7 +32092,7 @@ 1 2 - 18319865 + 18319863 @@ -32145,42 +32108,42 @@ 1 2 - 438545 + 438558 2 3 - 249328 + 249335 3 4 - 102804 + 102807 4 5 - 81886 + 81888 5 8 - 109283 + 109275 8 14 - 96471 + 96485 14 41 - 91662 + 91665 41 - 125330 - 44589 + 125325 + 44590 @@ -32196,12 +32159,12 @@ 1 2 - 1050188 + 1050219 2 3 - 154189 + 154193 3 @@ -32225,13 +32188,13 @@ 11 - 368484 - 368485 + 368483 + 368484 11 - 1239526 - 1239527 + 1239479 + 1239480 11 @@ -33696,11 +33659,11 @@ lambdas - 21478 + 21475 expr - 21478 + 21475 default_capture @@ -33722,7 +33685,7 @@ 1 2 - 21478 + 21475 @@ -33738,7 +33701,7 @@ 1 2 - 21478 + 21475 @@ -33812,15 +33775,15 @@ lambda_capture - 28015 + 28011 id - 28015 + 28011 lambda - 20544 + 20542 index @@ -33828,7 +33791,7 @@ field - 28015 + 28011 captured_by_reference @@ -33854,7 +33817,7 @@ 1 2 - 28015 + 28011 @@ -33870,7 +33833,7 @@ 1 2 - 28015 + 28011 @@ -33886,7 +33849,7 @@ 1 2 - 28015 + 28011 @@ -33902,7 +33865,7 @@ 1 2 - 28015 + 28011 @@ -33918,7 +33881,7 @@ 1 2 - 28015 + 28011 @@ -33934,7 +33897,7 @@ 1 2 - 28015 + 28011 @@ -33950,12 +33913,12 @@ 1 2 - 13073 + 13072 2 3 - 7470 + 7469 @@ -33971,12 +33934,12 @@ 1 2 - 13073 + 13072 2 3 - 7470 + 7469 @@ -33992,12 +33955,12 @@ 1 2 - 13073 + 13072 2 3 - 7470 + 7469 @@ -34013,7 +33976,7 @@ 1 2 - 20544 + 20542 @@ -34029,7 +33992,7 @@ 1 2 - 20544 + 20542 @@ -34045,12 +34008,12 @@ 1 2 - 13073 + 13072 2 3 - 7470 + 7469 @@ -34182,7 +34145,7 @@ 1 2 - 28015 + 28011 @@ -34198,7 +34161,7 @@ 1 2 - 28015 + 28011 @@ -34214,7 +34177,7 @@ 1 2 - 28015 + 28011 @@ -34230,7 +34193,7 @@ 1 2 - 28015 + 28011 @@ -34246,7 +34209,7 @@ 1 2 - 28015 + 28011 @@ -34262,7 +34225,7 @@ 1 2 - 28015 + 28011 @@ -34691,11 +34654,11 @@ stmts - 4630245 + 4630345 id - 4630245 + 4630345 kind @@ -34703,7 +34666,7 @@ location - 2171696 + 2171742 @@ -34717,7 +34680,7 @@ 1 2 - 4630245 + 4630345 @@ -34733,7 +34696,7 @@ 1 2 - 4630245 + 4630345 @@ -34961,22 +34924,22 @@ 1 2 - 1725752 + 1725789 2 3 - 178298 + 178302 3 8 - 167364 + 167367 8 653 - 100280 + 100282 @@ -34992,12 +34955,12 @@ 1 2 - 2117812 + 2117857 2 8 - 53883 + 53884 @@ -35295,15 +35258,15 @@ constexpr_if_then - 52997 + 52998 constexpr_if_stmt - 52997 + 52998 then_id - 52997 + 52998 @@ -35317,7 +35280,7 @@ 1 2 - 52997 + 52998 @@ -35333,7 +35296,7 @@ 1 2 - 52997 + 52998 @@ -35391,15 +35354,15 @@ while_body - 29316 + 29317 while_stmt - 29316 + 29317 body_id - 29316 + 29317 @@ -35413,7 +35376,7 @@ 1 2 - 29316 + 29317 @@ -35429,7 +35392,7 @@ 1 2 - 29316 + 29317 @@ -36308,11 +36271,11 @@ stmt_decl_bind - 580844 + 580843 stmt - 541062 + 541061 num @@ -36320,7 +36283,7 @@ decl - 580740 + 580739 @@ -36334,7 +36297,7 @@ 1 2 - 520373 + 520372 2 @@ -36355,7 +36318,7 @@ 1 2 - 520373 + 520372 2 @@ -36558,7 +36521,7 @@ 1 2 - 580703 + 580702 2 @@ -36579,7 +36542,7 @@ 1 2 - 580740 + 580739 @@ -36589,11 +36552,11 @@ stmt_decl_entry_bind - 580844 + 580843 stmt - 541062 + 541061 num @@ -36601,7 +36564,7 @@ decl_entry - 580786 + 580785 @@ -36615,7 +36578,7 @@ 1 2 - 520373 + 520372 2 @@ -36636,7 +36599,7 @@ 1 2 - 520373 + 520372 2 @@ -36839,7 +36802,7 @@ 1 2 - 580765 + 580764 3 @@ -36860,7 +36823,7 @@ 1 2 - 580786 + 580785 @@ -37109,19 +37072,19 @@ preprocdirects - 4191118 + 4190586 id - 4191118 + 4190586 kind - 5136 + 5135 location - 4150496 + 4149969 @@ -37135,7 +37098,7 @@ 1 2 - 4191118 + 4190586 @@ -37151,7 +37114,7 @@ 1 2 - 4191118 + 4190586 @@ -37299,7 +37262,7 @@ 1 2 - 4150029 + 4149502 88 @@ -37320,7 +37283,7 @@ 1 2 - 4150496 + 4149969 @@ -37330,15 +37293,15 @@ preprocpair - 1431592 + 1431410 begin - 1197195 + 1197043 elseelifend - 1431592 + 1431410 @@ -37352,17 +37315,17 @@ 1 2 - 978674 + 978550 2 3 - 208248 + 208222 3 11 - 10272 + 10271 @@ -37378,7 +37341,7 @@ 1 2 - 1431592 + 1431410 @@ -37388,41 +37351,41 @@ preproctrue - 767157 + 767060 branch - 767157 + 767060 preprocfalse - 331516 + 331474 branch - 331516 + 331474 preproctext - 3367675 + 3367747 id - 3367675 + 3367747 head - 2440621 + 2440673 body - 1426388 + 1426418 @@ -37436,7 +37399,7 @@ 1 2 - 3367675 + 3367747 @@ -37452,7 +37415,7 @@ 1 2 - 3367675 + 3367747 @@ -37468,12 +37431,12 @@ 1 2 - 2301824 + 2301873 2 740 - 138797 + 138800 @@ -37489,12 +37452,12 @@ 1 2 - 2381911 + 2381962 2 5 - 58710 + 58711 @@ -37510,12 +37473,12 @@ 1 2 - 1291236 + 1291263 2 6 - 106979 + 106981 6 @@ -37536,17 +37499,17 @@ 1 2 - 1294092 + 1294120 2 7 - 107274 + 107276 7 2980 - 25020 + 25021 @@ -37556,15 +37519,15 @@ includes - 313306 + 313266 id - 313306 + 313266 included - 117198 + 117183 @@ -37578,7 +37541,7 @@ 1 2 - 313306 + 313266 @@ -37594,27 +37557,27 @@ 1 2 - 61167 + 61159 2 3 - 21945 + 21942 3 4 - 12606 + 12605 4 6 - 10272 + 10271 6 14 - 8871 + 8870 14 diff --git a/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/old.dbscheme b/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/old.dbscheme new file mode 100644 index 00000000000..02a123a1a68 --- /dev/null +++ b/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/old.dbscheme @@ -0,0 +1,2317 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..0fea0ee7026 --- /dev/null +++ b/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/semmlecode.cpp.dbscheme @@ -0,0 +1,2319 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/upgrade.properties b/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/upgrade.properties new file mode 100644 index 00000000000..477f78902ed --- /dev/null +++ b/cpp/ql/lib/upgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/upgrade.properties @@ -0,0 +1,2 @@ +description: Expose C11 _Generics +compatibility: backwards diff --git a/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/old.dbscheme b/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/old.dbscheme new file mode 100644 index 00000000000..0fea0ee7026 --- /dev/null +++ b/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/old.dbscheme @@ -0,0 +1,2319 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..7ff6a6e53db --- /dev/null +++ b/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/semmlecode.cpp.dbscheme @@ -0,0 +1,2315 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrade.properties b/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrade.properties new file mode 100644 index 00000000000..fcd771ec854 --- /dev/null +++ b/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrade.properties @@ -0,0 +1,4 @@ +description: Improve handling of coroutine placeholder variables +compatibility: partial +coroutine.rel: run upgrades.qlo new_coroutine +coroutine_placeholder_variable.rel: run upgrades.qlo new_coroutine_placeholder_variable diff --git a/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrades.ql b/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrades.ql new file mode 100644 index 00000000000..d34a7c787ae --- /dev/null +++ b/cpp/ql/lib/upgrades/0fea0ee7026c7c3f7d6faef4df4bf67847b67d71/upgrades.ql @@ -0,0 +1,19 @@ +class Function extends @function { + string toString() { none() } +} + +class Type extends @type { + string toString() { none() } +} + +class Variable extends @variable { + string toString() { none() } +} + +query predicate new_coroutine(Function func, Type traits) { coroutine(func, traits, _, _) } + +query predicate new_coroutine_placeholder_variable(Variable var, int kind, Function func) { + coroutine(func, _, var, _) and kind = 1 + or + coroutine(func, _, _, var) and kind = 2 +} diff --git a/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/old.dbscheme b/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/old.dbscheme new file mode 100644 index 00000000000..68930f3b81b --- /dev/null +++ b/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/old.dbscheme @@ -0,0 +1,2310 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..02a123a1a68 --- /dev/null +++ b/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/semmlecode.cpp.dbscheme @@ -0,0 +1,2317 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/upgrade.properties b/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/upgrade.properties new file mode 100644 index 00000000000..db0e7e92d0e --- /dev/null +++ b/cpp/ql/lib/upgrades/68930f3b81bbe3fdbb91c850deca1fec8072d62a/upgrade.properties @@ -0,0 +1,2 @@ +description: Add new builtin operations +compatibility: backwards diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 25e322a99b7..05f179aa844 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,21 @@ +## 1.2.3 + +### Minor Analysis Improvements + +* Removed false positives caused by buffer accesses in unreachable code. +* Removed false positives caused by inconsistent type checking. +* Add modeling of C functions that don't throw, thereby increasing the precision of the `cpp/incorrect-allocation-error-handling` ("Incorrect allocation-error handling") query. The query now produces additional true positives. + +## 1.2.2 + +No user-facing changes. + +## 1.2.1 + +### Minor Analysis Improvements + +* The `cpp/uncontrolled-allocation-size` ("Uncontrolled allocation size") query now considers arithmetic operations that might reduce the size of user input as a barrier. The query therefore produces fewer false positive results. + ## 1.2.0 ### Query Metadata Changes diff --git a/cpp/ql/src/Critical/OverflowStatic.ql b/cpp/ql/src/Critical/OverflowStatic.ql index 13a4fb6bcb7..519c3f9b401 100644 --- a/cpp/ql/src/Critical/OverflowStatic.ql +++ b/cpp/ql/src/Critical/OverflowStatic.ql @@ -42,7 +42,9 @@ class BufferAccess extends ArrayExpr { not exists(Macro m | m.getName() = "strcmp" and m.getAnInvocation().getAnExpandedElement() = this - ) + ) and + //A buffer access must be reachable (not in dead code) + reachable(this) } int bufferSize() { staticBuffer(this.getArrayBase(), _, result) } diff --git a/cpp/ql/src/Likely Bugs/Leap Year/LeapYear.qll b/cpp/ql/src/Likely Bugs/Leap Year/LeapYear.qll index 038af4f1d88..3cff86412e4 100644 --- a/cpp/ql/src/Likely Bugs/Leap Year/LeapYear.qll +++ b/cpp/ql/src/Likely Bugs/Leap Year/LeapYear.qll @@ -205,20 +205,6 @@ class ChecksForLeapYearFunctionCall extends FunctionCall { ChecksForLeapYearFunctionCall() { this.getTarget() instanceof ChecksForLeapYearFunction } } -/** - * Data flow configuration for finding a variable access that would flow into - * a function call that includes an operation to check for leap year. - */ -deprecated class LeapYearCheckConfiguration extends DataFlow::Configuration { - LeapYearCheckConfiguration() { this = "LeapYearCheckConfiguration" } - - override predicate isSource(DataFlow::Node source) { source.asExpr() instanceof VariableAccess } - - override predicate isSink(DataFlow::Node sink) { - exists(ChecksForLeapYearFunctionCall fc | sink.asExpr() = fc.getAnArgument()) - } -} - /** * Data flow configuration for finding a variable access that would flow into * a function call that includes an operation to check for leap year. @@ -233,33 +219,6 @@ private module LeapYearCheckConfig implements DataFlow::ConfigSig { module LeapYearCheckFlow = DataFlow::Global; -/** - * Data flow configuration for finding an operation with hardcoded 365 that will flow into - * a `FILEINFO` field. - */ -deprecated class FiletimeYearArithmeticOperationCheckConfiguration extends DataFlow::Configuration { - FiletimeYearArithmeticOperationCheckConfiguration() { - this = "FiletimeYearArithmeticOperationCheckConfiguration" - } - - override predicate isSource(DataFlow::Node source) { - exists(Expr e, Operation op | e = source.asExpr() | - op.getAChild*().getValue().toInt() = 365 and - op.getAChild*() = e - ) - } - - override predicate isSink(DataFlow::Node sink) { - exists(StructLikeClass dds, FieldAccess fa, AssignExpr aexpr, Expr e | e = sink.asExpr() | - dds instanceof PackedTimeType and - fa.getQualifier().getUnderlyingType() = dds and - fa.isModified() and - aexpr.getAChild() = fa and - aexpr.getChild(1).getAChild*() = e - ) - } -} - /** * Data flow configuration for finding an operation with hardcoded 365 that will flow into * a `FILEINFO` field. @@ -286,51 +245,6 @@ private module FiletimeYearArithmeticOperationCheckConfig implements DataFlow::C module FiletimeYearArithmeticOperationCheckFlow = DataFlow::Global; -/** - * Taint configuration for finding an operation with hardcoded 365 that will flow into any known date/time field. - */ -deprecated class PossibleYearArithmeticOperationCheckConfiguration extends TaintTracking::Configuration -{ - PossibleYearArithmeticOperationCheckConfiguration() { - this = "PossibleYearArithmeticOperationCheckConfiguration" - } - - override predicate isSource(DataFlow::Node source) { - exists(Operation op | op = source.asExpr() | - op.getAChild*().getValue().toInt() = 365 and - ( - not op.getParent() instanceof Expr or - op.getParent() instanceof Assignment - ) - ) - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - // flow from anything on the RHS of an assignment to a time/date structure to that - // assignment. - exists(StructLikeClass dds, FieldAccess fa, Assignment aexpr, Expr e | - e = node1.asExpr() and - fa = node2.asExpr() - | - (dds instanceof PackedTimeType or dds instanceof UnpackedTimeType) and - fa.getQualifier().getUnderlyingType() = dds and - aexpr.getLValue() = fa and - aexpr.getRValue().getAChild*() = e - ) - } - - override predicate isSink(DataFlow::Node sink) { - exists(StructLikeClass dds, FieldAccess fa, AssignExpr aexpr | - aexpr.getRValue() = sink.asExpr() - | - (dds instanceof PackedTimeType or dds instanceof UnpackedTimeType) and - fa.getQualifier().getUnderlyingType() = dds and - fa.isModified() and - aexpr.getLValue() = fa - ) - } -} - /** * Taint configuration for finding an operation with hardcoded 365 that will flow into any known date/time field. */ diff --git a/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll b/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll index 53ab3b4df93..ecb60d113d8 100644 --- a/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll +++ b/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll @@ -129,24 +129,6 @@ class NetworkFunctionCall extends FunctionCall { NetworkFunctionCall() { this.getTarget().hasName(["ntohd", "ntohf", "ntohl", "ntohll", "ntohs"]) } } -deprecated class NetworkToBufferSizeConfiguration extends DataFlow::Configuration { - NetworkToBufferSizeConfiguration() { this = "NetworkToBufferSizeConfiguration" } - - override predicate isSource(DataFlow::Node node) { node.asExpr() instanceof NetworkFunctionCall } - - override predicate isSink(DataFlow::Node node) { - node.asExpr() = any(BufferAccess ba).getAccessedLength() - } - - override predicate isBarrier(DataFlow::Node node) { - exists(GuardCondition gc, GVN gvn | - gc.getAChild*() = gvn.getAnExpr() and - globalValueNumber(node.asExpr()) = gvn and - gc.controls(node.asExpr().getBasicBlock(), _) - ) - } -} - private module NetworkToBufferSizeConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node node) { node.asExpr() instanceof NetworkFunctionCall } diff --git a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll index 2d9502f2f43..f0876800874 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll @@ -41,20 +41,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getFunctionDescription() { result = this.getExternalFunction().toString() } } -/** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ -deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { - UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(RemoteFlowSourceFunction remoteFlow | - remoteFlow = source.asExpr().(Call).getTarget() and - remoteFlow.hasRemoteFlowSource(_, _) - ) - } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } -} - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ private module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { diff --git a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll index 87e1d6bd7c5..d094439951f 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll @@ -41,15 +41,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getFunctionDescription() { result = this.getExternalFunction().toString() } } -/** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ -deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { - UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfigIR" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } -} - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ private module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } diff --git a/cpp/ql/src/Security/CWE/CWE-119/OverflowBuffer.ql b/cpp/ql/src/Security/CWE/CWE-119/OverflowBuffer.ql index 1c903081baf..37892682814 100644 --- a/cpp/ql/src/Security/CWE/CWE-119/OverflowBuffer.ql +++ b/cpp/ql/src/Security/CWE/CWE-119/OverflowBuffer.ql @@ -26,6 +26,7 @@ from BufferAccess ba, string bufferDesc, int accessSize, int accessType, Element bufferAlloc, int bufferSize, string message where + accessType != 4 and accessSize = ba.getSize() and bufferSize = getBufferSize(ba.getBuffer(bufferDesc, accessType), bufferAlloc) and ( diff --git a/cpp/ql/src/Security/CWE/CWE-190/Bounded.qll b/cpp/ql/src/Security/CWE/CWE-190/Bounded.qll index bb855da3f44..01f4f94d60e 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/Bounded.qll +++ b/cpp/ql/src/Security/CWE/CWE-190/Bounded.qll @@ -1,6 +1,6 @@ /** - * This file provides the `bounded` predicate that is used in both `cpp/uncontrolled-arithmetic` - * and `cpp/tainted-arithmetic`. + * This file provides the `bounded` predicate that is used in `cpp/uncontrolled-arithmetic`, + * `cpp/tainted-arithmetic` and `cpp/uncontrolled-allocation-size`. */ private import cpp @@ -8,20 +8,18 @@ private import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis private import semmle.code.cpp.rangeanalysis.RangeAnalysisUtils /** - * An operand `e` of a bitwise and expression `andExpr` (i.e., `andExpr` is either an `BitwiseAndExpr` - * or an `AssignAndExpr`) with operands `operand1` and `operand2` is the operand that is not `e` is upper - * bounded by some number that is less than the maximum integer allowed by the result type of `andExpr`. + * An operand `operand` of a bitwise and expression `andExpr` (i.e., `andExpr` is either a + * `BitwiseAndExpr` or an `AssignAndExpr`) is upper bounded by some number that is less than the + * maximum integer allowed by the result type of `andExpr`. */ pragma[inline] -private predicate boundedBitwiseAnd(Expr e, Expr andExpr, Expr operand1, Expr operand2) { - operand1 != operand2 and - e = operand1 and - upperBound(operand2.getFullyConverted()) < exprMaxVal(andExpr.getFullyConverted()) +private predicate boundedBitwiseAnd(Expr operand, Expr andExpr) { + upperBound(operand.getFullyConverted()) < exprMaxVal(andExpr.getFullyConverted()) } /** - * Holds if `e` is an arithmetic expression that cannot overflow, or if `e` is an operand of an - * operation that may greatly reduce the range of possible values. + * Holds if `e` is an arithmetic expression that cannot overflow, or if `e` is an operation that + * may greatly reduce the range of possible values. */ predicate bounded(Expr e) { // There can be two separate reasons for `convertedExprMightOverflow` not holding: @@ -35,25 +33,25 @@ predicate bounded(Expr e) { ) and not convertedExprMightOverflow(e) or - // Optimistically assume that a remainder expression always yields a much smaller value. - e = any(RemExpr rem).getLeftOperand() + // Optimistically assume that the following operations always yields a much smaller value. + e instanceof RemExpr or - e = any(AssignRemExpr rem).getLValue() + e instanceof DivExpr + or + e instanceof RShiftExpr or exists(BitwiseAndExpr andExpr | - boundedBitwiseAnd(e, andExpr, andExpr.getAnOperand(), andExpr.getAnOperand()) + e = andExpr and boundedBitwiseAnd(andExpr.getAnOperand(), andExpr) ) or - exists(AssignAndExpr andExpr | - boundedBitwiseAnd(e, andExpr, andExpr.getAnOperand(), andExpr.getAnOperand()) - ) - or - // Optimistically assume that a division always yields a much smaller value. - e = any(DivExpr div).getLeftOperand() + // For the assignment variant of the operations we place the barrier on the assigned lvalue. + e = any(AssignRemExpr rem).getLValue() or e = any(AssignDivExpr div).getLValue() or - e = any(RShiftExpr shift).getLeftOperand() - or e = any(AssignRShiftExpr div).getLValue() + or + exists(AssignAndExpr andExpr | + e = andExpr.getLValue() and boundedBitwiseAnd(andExpr.getRValue(), andExpr) + ) } diff --git a/cpp/ql/src/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.ql b/cpp/ql/src/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.ql index 7f74c229ceb..92daf31b057 100644 --- a/cpp/ql/src/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.ql +++ b/cpp/ql/src/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.ql @@ -16,6 +16,7 @@ import cpp import semmle.code.cpp.valuenumbering.GlobalValueNumbering import semmle.code.cpp.controlflow.Guards +import semmle.code.cpp.models.implementations.NoexceptFunction /** Gets the `Constructor` invoked when `newExpr` allocates memory. */ Constructor getConstructorForAllocation(NewOrNewArrayExpr newExpr) { @@ -44,9 +45,8 @@ predicate deleteMayThrow(DeleteOrDeleteArrayExpr deleteExpr) { * like it might throw an exception, and the function does not have a `noexcept` or `throw()` specifier. */ predicate functionMayThrow(Function f) { - (not exists(f.getBlock()) or stmtMayThrow(f.getBlock())) and - not f.isNoExcept() and - not f.isNoThrow() + not f instanceof NonThrowingFunction and + (not exists(f.getBlock()) or stmtMayThrow(f.getBlock())) } /** Holds if the evaluation of `stmt` may throw an exception. */ @@ -172,8 +172,7 @@ class ThrowingAllocator extends Function { not exists(Parameter p | p = this.getAParameter() | p.getUnspecifiedType().stripType() instanceof NoThrowType ) and - not this.isNoExcept() and - not this.isNoThrow() + not this instanceof NoexceptFunction ) } } diff --git a/cpp/ql/src/change-notes/2024-08-16-uncontrolled-allocation-size.md b/cpp/ql/src/change-notes/released/1.2.1.md similarity index 70% rename from cpp/ql/src/change-notes/2024-08-16-uncontrolled-allocation-size.md rename to cpp/ql/src/change-notes/released/1.2.1.md index 4d0d0593363..c7f2fafb36b 100644 --- a/cpp/ql/src/change-notes/2024-08-16-uncontrolled-allocation-size.md +++ b/cpp/ql/src/change-notes/released/1.2.1.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* The `cpp/uncontrolled-allocation-size` ("Uncontrolled allocation size") query now considers arithmetic operations that might reduce the size of user input as a barrier. The query therefore produces fewer false positive results. \ No newline at end of file +## 1.2.1 + +### Minor Analysis Improvements + +* The `cpp/uncontrolled-allocation-size` ("Uncontrolled allocation size") query now considers arithmetic operations that might reduce the size of user input as a barrier. The query therefore produces fewer false positive results. diff --git a/cpp/ql/src/change-notes/released/1.2.2.md b/cpp/ql/src/change-notes/released/1.2.2.md new file mode 100644 index 00000000000..7b520f6c258 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.2.2.md @@ -0,0 +1,3 @@ +## 1.2.2 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.2.3.md b/cpp/ql/src/change-notes/released/1.2.3.md new file mode 100644 index 00000000000..95ecb033b7a --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.2.3.md @@ -0,0 +1,7 @@ +## 1.2.3 + +### Minor Analysis Improvements + +* Removed false positives caused by buffer accesses in unreachable code +* Removed false positives caused by inconsistent type checking +* Add modeling of C functions that don't throw, thereby increasing the precision of the `cpp/incorrect-allocation-error-handling` ("Incorrect allocation-error handling") query. The query now produces additional true positives. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 75430e73d1c..09a7400b594 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.0 +lastReleaseVersion: 1.2.3 diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/Brotli.qll b/cpp/ql/src/experimental/Security/CWE/CWE-409/Brotli.qll new file mode 100644 index 00000000000..5b2c2d6cfc9 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/Brotli.qll @@ -0,0 +1,26 @@ +/** + * https://github.com/google/brotli + */ + +import cpp +import DecompressionBomb + +/** + * The `BrotliDecoderDecompress` function is used in flow sink. + * See https://www.brotli.org/decode.html. + */ +class BrotliDecoderDecompressFunction extends DecompressionFunction { + BrotliDecoderDecompressFunction() { this.hasGlobalName("BrotliDecoderDecompress") } + + override int getArchiveParameterIndex() { result = 1 } +} + +/** + * The `BrotliDecoderDecompressStream` function is used in flow sink. + * See https://www.brotli.org/decode.html. + */ +class BrotliDecoderDecompressStreamFunction extends DecompressionFunction { + BrotliDecoderDecompressStreamFunction() { this.hasGlobalName("BrotliDecoderDecompressStream") } + + override int getArchiveParameterIndex() { result = 2 } +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBomb.qll b/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBomb.qll new file mode 100644 index 00000000000..73698d79314 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBomb.qll @@ -0,0 +1,26 @@ +import cpp +import semmle.code.cpp.ir.dataflow.TaintTracking +import MiniZip +import ZlibGzopen +import ZlibInflator +import ZlibUncompress +import LibArchive +import ZSTD +import Brotli + +/** + * The Decompression Sink instances, extend this class to define new decompression sinks. + */ +abstract class DecompressionFunction extends Function { + abstract int getArchiveParameterIndex(); +} + +/** + * The Decompression Flow Steps, extend this class to define new decompression sinks. + */ +abstract class DecompressionFlowStep extends string { + bindingset[this] + DecompressionFlowStep() { any() } + + abstract predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2); +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.qhelp b/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.qhelp new file mode 100644 index 00000000000..c263f4db625 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.qhelp @@ -0,0 +1,39 @@ + + + +

Extracting Compressed files with any compression algorithm like gzip can cause denial of service attacks.

+

Attackers can compress a huge file consisting of repeated similiar bytes into a small compressed file.

+
+ + +

When you want to decompress a user-provided compressed file you must be careful about the decompression ratio or read these files within a loop byte by byte to be able to manage the decompressed size in each cycle of the loop.

+ +
+ + +

+Reading an uncompressed Gzip file within a loop and check for a threshold size in each cycle. +

+ + +

+The following example is unsafe, as we do not check the uncompressed size. +

+ + +
+ + + +
  • +Zlib documentation +
  • + +
  • +An explanation of the attack +
  • + +
    +
    diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.ql b/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.ql new file mode 100644 index 00000000000..bfa11e65b06 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.ql @@ -0,0 +1,40 @@ +/** + * @name User-controlled file decompression + * @description User-controlled data that flows into decompression library APIs without checking the compression rate is dangerous + * @kind path-problem + * @problem.severity error + * @precision low + * @id cpp/data-decompression-bomb + * @tags security + * experimental + * external/cwe/cwe-409 + */ + +import cpp +import semmle.code.cpp.security.FlowSources +import DecompressionBomb + +predicate isSink(FunctionCall fc, DataFlow::Node sink) { + exists(DecompressionFunction f | fc.getTarget() = f | + fc.getArgument(f.getArchiveParameterIndex()) = [sink.asExpr(), sink.asIndirectExpr()] + ) +} + +module DecompressionTaintConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof FlowSource } + + predicate isSink(DataFlow::Node sink) { isSink(_, sink) } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + any(DecompressionFlowStep s).isAdditionalFlowStep(node1, node2) + } +} + +module DecompressionTaint = TaintTracking::Global; + +import DecompressionTaint::PathGraph + +from DecompressionTaint::PathNode source, DecompressionTaint::PathNode sink, FunctionCall fc +where DecompressionTaint::flowPath(source, sink) and isSink(fc, sink.getNode()) +select sink.getNode(), source, sink, "The decompression output of $@ is not limited", fc, + fc.getTarget().getName() diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/LibArchive.qll b/cpp/ql/src/experimental/Security/CWE/CWE-409/LibArchive.qll new file mode 100644 index 00000000000..b14e02e1e82 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/LibArchive.qll @@ -0,0 +1,32 @@ +/** + * https://github.com/libarchive/libarchive/wiki + */ + +import cpp +import DecompressionBomb + +/** + * The `archive_read_data*` functions are used in flow sink. + * See https://github.com/libarchive/libarchive/wiki/Examples. + */ +class Archive_read_data_block extends DecompressionFunction { + Archive_read_data_block() { + this.hasGlobalName(["archive_read_data_block", "archive_read_data", "archive_read_data_into_fd"]) + } + + override int getArchiveParameterIndex() { result = 0 } +} + +/** + * The `archive_read_open_filename` function as a flow step. + */ +class ReadOpenFunctionStep extends DecompressionFlowStep { + ReadOpenFunctionStep() { this = "ReadOpenFunction" } + + override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(FunctionCall fc | fc.getTarget().hasGlobalName("archive_read_open_filename") | + node1.asIndirectExpr() = fc.getArgument(1) and + node2.asIndirectExpr() = fc.getArgument(0) + ) + } +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/MiniZip.qll b/cpp/ql/src/experimental/Security/CWE/CWE-409/MiniZip.qll new file mode 100644 index 00000000000..b7cb9df013a --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/MiniZip.qll @@ -0,0 +1,56 @@ +/** + * https://github.com/zlib-ng/minizip-ng + */ + +import cpp +import DecompressionBomb + +/** + * The `mz_zip_entry` function is used in flow sink. + * See https://github.com/zlib-ng/minizip-ng/blob/master/doc/mz_zip.md. + */ +class Mz_zip_entry extends DecompressionFunction { + Mz_zip_entry() { this.hasGlobalName("mz_zip_entry_read") } + + override int getArchiveParameterIndex() { result = 1 } +} + +/** + * The `mz_zip_reader_entry_*` and `mz_zip_reader_save_all` functions are used in flow sink. + * See https://github.com/zlib-ng/minizip-ng/blob/master/doc/mz_zip_rw.md. + */ +class Mz_zip_reader_entry extends DecompressionFunction { + Mz_zip_reader_entry() { + this.hasGlobalName([ + "mz_zip_reader_entry_save", "mz_zip_reader_entry_read", "mz_zip_reader_entry_save_process", + "mz_zip_reader_entry_save_file", "mz_zip_reader_entry_save_buffer", "mz_zip_reader_save_all" + ]) + } + + override int getArchiveParameterIndex() { result = 0 } +} + +/** + * The `UnzOpen*` functions are used in flow sink. + */ +class UnzOpenFunction extends DecompressionFunction { + UnzOpenFunction() { this.hasGlobalName(["UnzOpen", "unzOpen64", "unzOpen2", "unzOpen2_64"]) } + + override int getArchiveParameterIndex() { result = 0 } +} + +/** + * The `mz_zip_reader_open_file` and `mz_zip_reader_open_file_in_memory` functions as a flow step. + */ +class ReaderOpenFunctionStep extends DecompressionFlowStep { + ReaderOpenFunctionStep() { this = "ReaderOpenFunctionStep" } + + override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(FunctionCall fc | + fc.getTarget().hasGlobalName(["mz_zip_reader_open_file_in_memory", "mz_zip_reader_open_file"]) + | + node1.asIndirectExpr() = fc.getArgument(1) and + node2.asIndirectExpr() = fc.getArgument(0) + ) + } +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/ZSTD.qll b/cpp/ql/src/experimental/Security/CWE/CWE-409/ZSTD.qll new file mode 100644 index 00000000000..8b7dd8cfc8f --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/ZSTD.qll @@ -0,0 +1,88 @@ +/** + * https://github.com/facebook/zstd/blob/dev/examples/streaming_decompression.c + */ + +import cpp +import DecompressionBomb + +/** + * The `ZSTD_decompress` function is used in flow sink. + */ +class ZstdDecompressFunction extends DecompressionFunction { + ZstdDecompressFunction() { this.hasGlobalName("ZSTD_decompress") } + + override int getArchiveParameterIndex() { result = 2 } +} + +/** + * The `ZSTD_decompressDCtx` function is used in flow sink. + */ +class ZstdDecompressDctxFunction extends DecompressionFunction { + ZstdDecompressDctxFunction() { this.hasGlobalName("ZSTD_decompressDCtx") } + + override int getArchiveParameterIndex() { result = 3 } +} + +/** + * The `ZSTD_decompressStream` function is used in flow sink. + */ +class ZstdDecompressStreamFunction extends DecompressionFunction { + ZstdDecompressStreamFunction() { this.hasGlobalName("ZSTD_decompressStream") } + + override int getArchiveParameterIndex() { result = 2 } +} + +/** + * The `ZSTD_decompress_usingDDict` function is used in flow sink. + */ +class ZstdDecompressUsingDdictFunction extends DecompressionFunction { + ZstdDecompressUsingDdictFunction() { this.hasGlobalName("ZSTD_decompress_usingDDict") } + + override int getArchiveParameterIndex() { result = 3 } +} + +/** + * The `fopen_orDie` function as a flow step. + */ +class FopenOrDieFunctionStep extends DecompressionFlowStep { + FopenOrDieFunctionStep() { this = "FopenOrDieFunctionStep" } + + override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(FunctionCall fc | fc.getTarget().hasGlobalName("fopen_orDie") | + node1.asIndirectExpr() = fc.getArgument(0) and + node2.asExpr() = fc + ) + } +} + +/** + * The `fread_orDie` function as a flow step. + */ +class FreadOrDieFunctionStep extends DecompressionFlowStep { + FreadOrDieFunctionStep() { this = "FreadOrDieFunctionStep" } + + override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(FunctionCall fc | fc.getTarget().hasGlobalName("fread_orDie") | + node1.asExpr() = fc.getArgument(2) and + node2.asIndirectExpr() = fc.getArgument(0) + ) + } +} + +/** + * The `src` member of a `ZSTD_inBuffer` variable is used in a flow steps. + */ +class SrcMember extends DecompressionFlowStep { + SrcMember() { this = "SrcMember" } + + override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(VariableAccess inBufferAccess, Field srcField, ClassAggregateLiteral c | + inBufferAccess.getType().hasName("ZSTD_inBuffer") and + srcField.hasName("src") + | + node2.asExpr() = inBufferAccess and + inBufferAccess.getTarget().getInitializer().getExpr() = c and + node1.asIndirectExpr() = c.getFieldExpr(srcField, _) + ) + } +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibGzopen.qll b/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibGzopen.qll new file mode 100644 index 00000000000..172f8e7a7b6 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibGzopen.qll @@ -0,0 +1,71 @@ +/** + * https://www.zlib.net/ + */ + +import cpp +import DecompressionBomb + +/** + * The `gzfread` function is used in flow sink. + * + * `gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file)` + */ +class GzFreadFunction extends DecompressionFunction { + GzFreadFunction() { this.hasGlobalName("gzfread") } + + override int getArchiveParameterIndex() { result = 3 } +} + +/** + * The `gzgets` function is used in flow sink. + * + * `gzgets(gzFile file, char *buf, int len)` + */ +class GzGetsFunction extends DecompressionFunction { + GzGetsFunction() { this.hasGlobalName("gzgets") } + + override int getArchiveParameterIndex() { result = 0 } +} + +/** + * The `gzread` function is used in flow sink. + * + * `gzread(gzFile file, voidp buf, unsigned len)` + */ +class GzReadFunction extends DecompressionFunction { + GzReadFunction() { this.hasGlobalName("gzread") } + + override int getArchiveParameterIndex() { result = 0 } +} + +/** + * The `gzdopen` function is used in flow steps. + * + * `gzdopen(int fd, const char *mode)` + */ +class GzdopenFunctionStep extends DecompressionFlowStep { + GzdopenFunctionStep() { this = "GzdopenFunctionStep" } + + override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(FunctionCall fc | fc.getTarget().hasGlobalName("gzdopen") | + node1.asExpr() = fc.getArgument(0) and + node2.asExpr() = fc + ) + } +} + +/** + * The `gzopen` function is used in flow steps. + * + * `gzopen(const char *path, const char *mode)` + */ +class GzopenFunctionStep extends DecompressionFlowStep { + GzopenFunctionStep() { this = "GzopenFunctionStep" } + + override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(FunctionCall fc | fc.getTarget().hasGlobalName("gzopen") | + node1.asIndirectExpr() = fc.getArgument(0) and + node2.asExpr() = fc + ) + } +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibInflator.qll b/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibInflator.qll new file mode 100644 index 00000000000..834f587952a --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibInflator.qll @@ -0,0 +1,37 @@ +/** + * https://www.zlib.net/ + */ + +import cpp +import DecompressionBomb + +/** + * The `inflate` and `inflateSync` functions are used in flow sink. + * + * `inflate(z_stream strm, int flush)` + * + * `inflateSync(z_stream strm)` + */ +class InflateFunction extends DecompressionFunction { + InflateFunction() { this.hasGlobalName(["inflate", "inflateSync"]) } + + override int getArchiveParameterIndex() { result = 0 } +} + +/** + * The `next_in` member of a `z_stream` variable is used in a flow steps. + */ +class NextInMemberStep extends DecompressionFlowStep { + NextInMemberStep() { this = "NextInMemberStep" } + + override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(Variable nextInVar | + nextInVar.getDeclaringType().hasName("z_stream") and + nextInVar.hasName("next_in") + | + node1.asIndirectExpr() = nextInVar.getAnAssignedValue() and + node2.asExpr() = + nextInVar.getAnAccess().getQualifier().(VariableAccess).getTarget().getAnAccess() + ) + } +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibUncompress.qll b/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibUncompress.qll new file mode 100644 index 00000000000..1617b8e3068 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/ZlibUncompress.qll @@ -0,0 +1,15 @@ +/** + * https://www.zlib.net/ + */ + +import cpp +import DecompressionBomb + +/** + * The `uncompress`/`uncompress2` function is used in flow sink. + */ +class UncompressFunction extends DecompressionFunction { + UncompressFunction() { this.hasGlobalName(["uncompress", "uncompress2"]) } + + override int getArchiveParameterIndex() { result = 2 } +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/example_bad.cpp b/cpp/ql/src/experimental/Security/CWE/CWE-409/example_bad.cpp new file mode 100644 index 00000000000..eaf2fe22817 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/example_bad.cpp @@ -0,0 +1,15 @@ +#include "zlib.h" + +void UnsafeGzread(gzFile inFileZ) { + const int BUFFER_SIZE = 8192; + unsigned char unzipBuffer[BUFFER_SIZE]; + unsigned int unzippedBytes; + while (true) { + unzippedBytes = gzread(inFileZ, unzipBuffer, BUFFER_SIZE); + if (unzippedBytes <= 0) { + break; + } + + // process buffer + } +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/example_good.cpp b/cpp/ql/src/experimental/Security/CWE/CWE-409/example_good.cpp new file mode 100644 index 00000000000..f28ed41026d --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/example_good.cpp @@ -0,0 +1,23 @@ +#include "zlib.h" + +void SafeGzread(gzFile inFileZ) { + const int MAX_READ = 1024 * 1024 * 4; + const int BUFFER_SIZE = 8192; + unsigned char unzipBuffer[BUFFER_SIZE]; + unsigned int unzippedBytes; + unsigned int totalRead = 0; + while (true) { + unzippedBytes = gzread(inFileZ, unzipBuffer, BUFFER_SIZE); + totalRead += unzippedBytes; + if (unzippedBytes <= 0) { + break; + } + + if (totalRead > MAX_READ) { + // Possible decompression bomb, stop processing. + break; + } else { + // process buffer + } + } +} diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 13d1448bf8d..0715feb8e01 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.2.1-dev +version: 1.2.4-dev groups: - cpp - queries diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/DecompressionBombs.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/DecompressionBombs.expected new file mode 100644 index 00000000000..b372493c5ba --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/DecompressionBombs.expected @@ -0,0 +1,239 @@ +edges +| brotliTest.cpp:15:41:15:44 | **argv | brotliTest.cpp:15:41:15:44 | **argv | provenance | | +| brotliTest.cpp:15:41:15:44 | **argv | brotliTest.cpp:18:35:18:53 | *access to array | provenance | | +| brotliTest.cpp:15:41:15:44 | **argv | brotliTest.cpp:21:30:21:52 | *access to array | provenance | | +| brotliTest.cpp:21:30:21:52 | *access to array | brotliTest.cpp:24:51:24:58 | **& ... | provenance | | +| libarchiveTests.cpp:16:31:16:32 | *ar | libarchiveTests.cpp:16:31:16:32 | *ar | provenance | | +| libarchiveTests.cpp:16:31:16:32 | *ar | libarchiveTests.cpp:22:41:22:42 | *ar | provenance | | +| libarchiveTests.cpp:30:45:30:48 | **argv | libarchiveTests.cpp:30:45:30:48 | **argv | provenance | | +| libarchiveTests.cpp:30:45:30:48 | **argv | libarchiveTests.cpp:34:35:34:41 | *access to array | provenance | | +| libarchiveTests.cpp:34:32:34:32 | *a | libarchiveTests.cpp:38:27:38:27 | *a | provenance | | +| libarchiveTests.cpp:34:35:34:41 | *access to array | libarchiveTests.cpp:34:32:34:32 | *a | provenance | Config | +| libarchiveTests.cpp:38:27:38:27 | *a | libarchiveTests.cpp:16:31:16:32 | *ar | provenance | | +| libarchiveTests.cpp:38:27:38:27 | *a | libarchiveTests.cpp:38:27:38:27 | read_data output argument | provenance | | +| libarchiveTests.cpp:38:27:38:27 | read_data output argument | libarchiveTests.cpp:38:27:38:27 | *a | provenance | | +| main.cpp:7:33:7:36 | **argv | main.cpp:8:23:8:26 | **argv | provenance | | +| main.cpp:7:33:7:36 | **argv | main.cpp:9:27:9:30 | **argv | provenance | | +| main.cpp:7:33:7:36 | **argv | main.cpp:10:24:10:27 | **argv | provenance | | +| main.cpp:7:33:7:36 | **argv | main.cpp:11:21:11:24 | **argv | provenance | | +| main.cpp:7:33:7:36 | **argv | main.cpp:12:21:12:24 | **argv | provenance | | +| main.cpp:8:23:8:26 | **argv | brotliTest.cpp:15:41:15:44 | **argv | provenance | | +| main.cpp:8:23:8:26 | **argv | main.cpp:8:23:8:26 | brotli_test output argument | provenance | | +| main.cpp:8:23:8:26 | brotli_test output argument | main.cpp:9:27:9:30 | **argv | provenance | | +| main.cpp:8:23:8:26 | brotli_test output argument | main.cpp:10:24:10:27 | **argv | provenance | | +| main.cpp:8:23:8:26 | brotli_test output argument | main.cpp:11:21:11:24 | **argv | provenance | | +| main.cpp:8:23:8:26 | brotli_test output argument | main.cpp:12:21:12:24 | **argv | provenance | | +| main.cpp:9:27:9:30 | **argv | libarchiveTests.cpp:30:45:30:48 | **argv | provenance | | +| main.cpp:9:27:9:30 | **argv | main.cpp:9:27:9:30 | libarchive_test output argument | provenance | | +| main.cpp:9:27:9:30 | libarchive_test output argument | main.cpp:10:24:10:27 | **argv | provenance | | +| main.cpp:9:27:9:30 | libarchive_test output argument | main.cpp:11:21:11:24 | **argv | provenance | | +| main.cpp:9:27:9:30 | libarchive_test output argument | main.cpp:12:21:12:24 | **argv | provenance | | +| main.cpp:10:24:10:27 | **argv | main.cpp:10:24:10:27 | minizip_test output argument | provenance | | +| main.cpp:10:24:10:27 | **argv | minizipTest.cpp:12:42:12:45 | **argv | provenance | | +| main.cpp:10:24:10:27 | minizip_test output argument | main.cpp:11:21:11:24 | **argv | provenance | | +| main.cpp:10:24:10:27 | minizip_test output argument | main.cpp:12:21:12:24 | **argv | provenance | | +| main.cpp:11:21:11:24 | **argv | main.cpp:11:21:11:24 | zlib_test output argument | provenance | | +| main.cpp:11:21:11:24 | **argv | main.cpp:11:21:11:24 | zlib_test output argument | provenance | | +| main.cpp:11:21:11:24 | **argv | zlibTest.cpp:80:33:80:36 | **argv | provenance | | +| main.cpp:11:21:11:24 | zlib_test output argument | main.cpp:12:21:12:24 | **argv | provenance | | +| main.cpp:11:21:11:24 | zlib_test output argument | main.cpp:12:21:12:24 | *argv | provenance | | +| main.cpp:12:21:12:24 | **argv | zstdTest.cpp:26:39:26:42 | **argv | provenance | | +| main.cpp:12:21:12:24 | *argv | zstdTest.cpp:26:39:26:42 | **argv | provenance | | +| main.cpp:12:21:12:24 | *argv | zstdTest.cpp:26:39:26:42 | *argv | provenance | | +| minizipTest.cpp:12:42:12:45 | **argv | minizipTest.cpp:12:42:12:45 | **argv | provenance | | +| minizipTest.cpp:12:42:12:45 | **argv | minizipTest.cpp:17:52:17:67 | *access to array | provenance | | +| minizipTest.cpp:12:42:12:45 | **argv | minizipTest.cpp:24:41:24:47 | *access to array | provenance | | +| minizipTest.cpp:12:42:12:45 | **argv | minizipTest.cpp:28:13:28:19 | *access to array | provenance | | +| minizipTest.cpp:24:29:24:38 | **zip_reader | minizipTest.cpp:26:30:26:39 | **zip_reader | provenance | | +| minizipTest.cpp:24:29:24:38 | *zip_reader | minizipTest.cpp:26:30:26:39 | *zip_reader | provenance | | +| minizipTest.cpp:24:41:24:47 | *access to array | minizipTest.cpp:24:29:24:38 | **zip_reader | provenance | Config | +| minizipTest.cpp:24:41:24:47 | *access to array | minizipTest.cpp:24:29:24:38 | *zip_reader | provenance | Config | +| zlibTest.cpp:16:26:16:30 | *input | zlibTest.cpp:20:25:20:39 | *input | provenance | | +| zlibTest.cpp:20:25:20:39 | *input | zlibTest.cpp:16:26:16:30 | *input | provenance | | +| zlibTest.cpp:20:25:20:39 | *input | zlibTest.cpp:24:17:24:26 | & ... | provenance | Config | +| zlibTest.cpp:20:25:20:39 | *input | zlibTest.cpp:25:13:25:22 | & ... | provenance | Config | +| zlibTest.cpp:24:17:24:26 | & ... | zlibTest.cpp:25:13:25:22 | & ... | provenance | | +| zlibTest.cpp:37:25:37:32 | *fileName | zlibTest.cpp:38:29:38:36 | *fileName | provenance | | +| zlibTest.cpp:38:22:38:27 | call to gzopen | zlibTest.cpp:38:22:38:27 | call to gzopen | provenance | | +| zlibTest.cpp:38:22:38:27 | call to gzopen | zlibTest.cpp:41:20:41:26 | inFileZ | provenance | | +| zlibTest.cpp:38:29:38:36 | *fileName | zlibTest.cpp:37:25:37:32 | *fileName | provenance | | +| zlibTest.cpp:38:29:38:36 | *fileName | zlibTest.cpp:38:22:38:27 | call to gzopen | provenance | Config | +| zlibTest.cpp:47:26:47:33 | *fileName | zlibTest.cpp:48:29:48:36 | *fileName | provenance | | +| zlibTest.cpp:48:22:48:27 | call to gzopen | zlibTest.cpp:48:22:48:27 | call to gzopen | provenance | | +| zlibTest.cpp:48:22:48:27 | call to gzopen | zlibTest.cpp:51:38:51:44 | inFileZ | provenance | | +| zlibTest.cpp:48:29:48:36 | *fileName | zlibTest.cpp:47:26:47:33 | *fileName | provenance | | +| zlibTest.cpp:48:29:48:36 | *fileName | zlibTest.cpp:48:22:48:27 | call to gzopen | provenance | Config | +| zlibTest.cpp:57:25:57:32 | *fileName | zlibTest.cpp:58:29:58:36 | *fileName | provenance | | +| zlibTest.cpp:58:22:58:27 | call to gzopen | zlibTest.cpp:58:22:58:27 | call to gzopen | provenance | | +| zlibTest.cpp:58:22:58:27 | call to gzopen | zlibTest.cpp:62:25:62:31 | inFileZ | provenance | | +| zlibTest.cpp:58:29:58:36 | *fileName | zlibTest.cpp:57:25:57:32 | *fileName | provenance | | +| zlibTest.cpp:58:29:58:36 | *fileName | zlibTest.cpp:58:22:58:27 | call to gzopen | provenance | Config | +| zlibTest.cpp:71:26:71:30 | *input | zlibTest.cpp:71:26:71:30 | *input | provenance | | +| zlibTest.cpp:71:26:71:30 | *input | zlibTest.cpp:77:45:77:59 | *input | provenance | | +| zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:80:33:80:36 | **argv | provenance | | +| zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:81:19:81:25 | *access to array | provenance | | +| zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:82:18:82:24 | *access to array | provenance | | +| zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:83:19:83:25 | *access to array | provenance | | +| zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:84:18:84:24 | *access to array | provenance | | +| zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:85:19:85:25 | *access to array | provenance | | +| zlibTest.cpp:81:19:81:25 | *access to array | zlibTest.cpp:47:26:47:33 | *fileName | provenance | | +| zlibTest.cpp:81:19:81:25 | *access to array | zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | provenance | | +| zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | zlibTest.cpp:80:33:80:36 | **argv | provenance | | +| zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | zlibTest.cpp:80:33:80:36 | **argv [Return] | provenance | | +| zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | zlibTest.cpp:82:18:82:24 | *access to array | provenance | | +| zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | zlibTest.cpp:83:19:83:25 | *access to array | provenance | | +| zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | zlibTest.cpp:84:18:84:24 | *access to array | provenance | | +| zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | zlibTest.cpp:85:19:85:25 | *access to array | provenance | | +| zlibTest.cpp:82:18:82:24 | *access to array | zlibTest.cpp:57:25:57:32 | *fileName | provenance | | +| zlibTest.cpp:82:18:82:24 | *access to array | zlibTest.cpp:82:18:82:24 | UnsafeGzgets output argument | provenance | | +| zlibTest.cpp:82:18:82:24 | UnsafeGzgets output argument | zlibTest.cpp:80:33:80:36 | **argv | provenance | | +| zlibTest.cpp:82:18:82:24 | UnsafeGzgets output argument | zlibTest.cpp:80:33:80:36 | **argv [Return] | provenance | | +| zlibTest.cpp:82:18:82:24 | UnsafeGzgets output argument | zlibTest.cpp:83:19:83:25 | *access to array | provenance | | +| zlibTest.cpp:82:18:82:24 | UnsafeGzgets output argument | zlibTest.cpp:84:18:84:24 | *access to array | provenance | | +| zlibTest.cpp:82:18:82:24 | UnsafeGzgets output argument | zlibTest.cpp:85:19:85:25 | *access to array | provenance | | +| zlibTest.cpp:83:19:83:25 | *access to array | zlibTest.cpp:16:26:16:30 | *input | provenance | | +| zlibTest.cpp:83:19:83:25 | *access to array | zlibTest.cpp:83:19:83:25 | UnsafeInflate output argument | provenance | | +| zlibTest.cpp:83:19:83:25 | UnsafeInflate output argument | zlibTest.cpp:80:33:80:36 | **argv | provenance | | +| zlibTest.cpp:83:19:83:25 | UnsafeInflate output argument | zlibTest.cpp:80:33:80:36 | **argv [Return] | provenance | | +| zlibTest.cpp:83:19:83:25 | UnsafeInflate output argument | zlibTest.cpp:84:18:84:24 | *access to array | provenance | | +| zlibTest.cpp:83:19:83:25 | UnsafeInflate output argument | zlibTest.cpp:85:19:85:25 | *access to array | provenance | | +| zlibTest.cpp:84:18:84:24 | *access to array | zlibTest.cpp:37:25:37:32 | *fileName | provenance | | +| zlibTest.cpp:84:18:84:24 | *access to array | zlibTest.cpp:84:18:84:24 | UnsafeGzread output argument | provenance | | +| zlibTest.cpp:84:18:84:24 | UnsafeGzread output argument | zlibTest.cpp:80:33:80:36 | **argv | provenance | | +| zlibTest.cpp:84:18:84:24 | UnsafeGzread output argument | zlibTest.cpp:80:33:80:36 | **argv [Return] | provenance | | +| zlibTest.cpp:84:18:84:24 | UnsafeGzread output argument | zlibTest.cpp:85:19:85:25 | *access to array | provenance | | +| zlibTest.cpp:85:19:85:25 | *access to array | zlibTest.cpp:71:26:71:30 | *input | provenance | | +| zlibTest.cpp:85:19:85:25 | *access to array | zlibTest.cpp:85:19:85:25 | InflateString output argument | provenance | | +| zlibTest.cpp:85:19:85:25 | InflateString output argument | zlibTest.cpp:80:33:80:36 | **argv | provenance | | +| zlibTest.cpp:85:19:85:25 | InflateString output argument | zlibTest.cpp:80:33:80:36 | **argv [Return] | provenance | | +| zstdTest.cpp:26:39:26:42 | **argv | zstdTest.cpp:27:35:27:41 | *access to array | provenance | | +| zstdTest.cpp:26:39:26:42 | *argv | zstdTest.cpp:27:35:27:41 | *access to array | provenance | | +| zstdTest.cpp:27:23:27:33 | call to fopen_orDie | zstdTest.cpp:27:23:27:33 | call to fopen_orDie | provenance | | +| zstdTest.cpp:27:23:27:33 | call to fopen_orDie | zstdTest.cpp:35:52:35:54 | fin | provenance | | +| zstdTest.cpp:27:35:27:41 | *access to array | zstdTest.cpp:27:23:27:33 | call to fopen_orDie | provenance | Config | +| zstdTest.cpp:35:32:35:37 | **buffIn | zstdTest.cpp:36:32:36:37 | **buffIn | provenance | | +| zstdTest.cpp:35:32:35:37 | *buffIn | zstdTest.cpp:36:32:36:37 | *buffIn | provenance | | +| zstdTest.cpp:35:52:35:54 | fin | zstdTest.cpp:35:32:35:37 | **buffIn | provenance | Config | +| zstdTest.cpp:35:52:35:54 | fin | zstdTest.cpp:35:32:35:37 | *buffIn | provenance | Config | +| zstdTest.cpp:36:32:36:37 | **buffIn | zstdTest.cpp:35:32:35:37 | **buffIn | provenance | | +| zstdTest.cpp:36:32:36:37 | **buffIn | zstdTest.cpp:39:69:39:74 | & ... | provenance | Config | +| zstdTest.cpp:36:32:36:37 | **buffIn | zstdTest.cpp:39:69:39:74 | & ... | provenance | Config | +| zstdTest.cpp:36:32:36:37 | *buffIn | zstdTest.cpp:35:32:35:37 | *buffIn | provenance | | +| zstdTest.cpp:36:32:36:37 | *buffIn | zstdTest.cpp:39:69:39:74 | & ... | provenance | Config | +| zstdTest.cpp:36:32:36:37 | *buffIn | zstdTest.cpp:39:69:39:74 | & ... | provenance | Config | +| zstdTest.cpp:39:69:39:74 | & ... | zstdTest.cpp:39:69:39:74 | & ... | provenance | | +| zstdTest.cpp:39:69:39:74 | & ... | zstdTest.cpp:39:69:39:74 | & ... | provenance | | +nodes +| brotliTest.cpp:15:41:15:44 | **argv | semmle.label | **argv | +| brotliTest.cpp:15:41:15:44 | **argv | semmle.label | **argv | +| brotliTest.cpp:18:35:18:53 | *access to array | semmle.label | *access to array | +| brotliTest.cpp:21:30:21:52 | *access to array | semmle.label | *access to array | +| brotliTest.cpp:24:51:24:58 | **& ... | semmle.label | **& ... | +| libarchiveTests.cpp:16:31:16:32 | *ar | semmle.label | *ar | +| libarchiveTests.cpp:16:31:16:32 | *ar | semmle.label | *ar | +| libarchiveTests.cpp:22:41:22:42 | *ar | semmle.label | *ar | +| libarchiveTests.cpp:30:45:30:48 | **argv | semmle.label | **argv | +| libarchiveTests.cpp:30:45:30:48 | **argv | semmle.label | **argv | +| libarchiveTests.cpp:34:32:34:32 | *a | semmle.label | *a | +| libarchiveTests.cpp:34:35:34:41 | *access to array | semmle.label | *access to array | +| libarchiveTests.cpp:38:27:38:27 | *a | semmle.label | *a | +| libarchiveTests.cpp:38:27:38:27 | read_data output argument | semmle.label | read_data output argument | +| main.cpp:7:33:7:36 | **argv | semmle.label | **argv | +| main.cpp:8:23:8:26 | **argv | semmle.label | **argv | +| main.cpp:8:23:8:26 | brotli_test output argument | semmle.label | brotli_test output argument | +| main.cpp:9:27:9:30 | **argv | semmle.label | **argv | +| main.cpp:9:27:9:30 | libarchive_test output argument | semmle.label | libarchive_test output argument | +| main.cpp:10:24:10:27 | **argv | semmle.label | **argv | +| main.cpp:10:24:10:27 | minizip_test output argument | semmle.label | minizip_test output argument | +| main.cpp:11:21:11:24 | **argv | semmle.label | **argv | +| main.cpp:11:21:11:24 | zlib_test output argument | semmle.label | zlib_test output argument | +| main.cpp:11:21:11:24 | zlib_test output argument | semmle.label | zlib_test output argument | +| main.cpp:12:21:12:24 | **argv | semmle.label | **argv | +| main.cpp:12:21:12:24 | *argv | semmle.label | *argv | +| minizipTest.cpp:12:42:12:45 | **argv | semmle.label | **argv | +| minizipTest.cpp:12:42:12:45 | **argv | semmle.label | **argv | +| minizipTest.cpp:17:52:17:67 | *access to array | semmle.label | *access to array | +| minizipTest.cpp:24:29:24:38 | **zip_reader | semmle.label | **zip_reader | +| minizipTest.cpp:24:29:24:38 | *zip_reader | semmle.label | *zip_reader | +| minizipTest.cpp:24:41:24:47 | *access to array | semmle.label | *access to array | +| minizipTest.cpp:26:30:26:39 | **zip_reader | semmle.label | **zip_reader | +| minizipTest.cpp:26:30:26:39 | *zip_reader | semmle.label | *zip_reader | +| minizipTest.cpp:28:13:28:19 | *access to array | semmle.label | *access to array | +| zlibTest.cpp:16:26:16:30 | *input | semmle.label | *input | +| zlibTest.cpp:16:26:16:30 | *input | semmle.label | *input | +| zlibTest.cpp:20:25:20:39 | *input | semmle.label | *input | +| zlibTest.cpp:24:17:24:26 | & ... | semmle.label | & ... | +| zlibTest.cpp:25:13:25:22 | & ... | semmle.label | & ... | +| zlibTest.cpp:37:25:37:32 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:37:25:37:32 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:38:22:38:27 | call to gzopen | semmle.label | call to gzopen | +| zlibTest.cpp:38:22:38:27 | call to gzopen | semmle.label | call to gzopen | +| zlibTest.cpp:38:29:38:36 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:41:20:41:26 | inFileZ | semmle.label | inFileZ | +| zlibTest.cpp:47:26:47:33 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:47:26:47:33 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:48:22:48:27 | call to gzopen | semmle.label | call to gzopen | +| zlibTest.cpp:48:22:48:27 | call to gzopen | semmle.label | call to gzopen | +| zlibTest.cpp:48:29:48:36 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:51:38:51:44 | inFileZ | semmle.label | inFileZ | +| zlibTest.cpp:57:25:57:32 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:57:25:57:32 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:58:22:58:27 | call to gzopen | semmle.label | call to gzopen | +| zlibTest.cpp:58:22:58:27 | call to gzopen | semmle.label | call to gzopen | +| zlibTest.cpp:58:29:58:36 | *fileName | semmle.label | *fileName | +| zlibTest.cpp:62:25:62:31 | inFileZ | semmle.label | inFileZ | +| zlibTest.cpp:71:26:71:30 | *input | semmle.label | *input | +| zlibTest.cpp:71:26:71:30 | *input | semmle.label | *input | +| zlibTest.cpp:77:45:77:59 | *input | semmle.label | *input | +| zlibTest.cpp:80:33:80:36 | **argv | semmle.label | **argv | +| zlibTest.cpp:80:33:80:36 | **argv | semmle.label | **argv | +| zlibTest.cpp:80:33:80:36 | **argv [Return] | semmle.label | **argv [Return] | +| zlibTest.cpp:81:19:81:25 | *access to array | semmle.label | *access to array | +| zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | semmle.label | UnsafeGzfread output argument | +| zlibTest.cpp:82:18:82:24 | *access to array | semmle.label | *access to array | +| zlibTest.cpp:82:18:82:24 | UnsafeGzgets output argument | semmle.label | UnsafeGzgets output argument | +| zlibTest.cpp:83:19:83:25 | *access to array | semmle.label | *access to array | +| zlibTest.cpp:83:19:83:25 | UnsafeInflate output argument | semmle.label | UnsafeInflate output argument | +| zlibTest.cpp:84:18:84:24 | *access to array | semmle.label | *access to array | +| zlibTest.cpp:84:18:84:24 | UnsafeGzread output argument | semmle.label | UnsafeGzread output argument | +| zlibTest.cpp:85:19:85:25 | *access to array | semmle.label | *access to array | +| zlibTest.cpp:85:19:85:25 | InflateString output argument | semmle.label | InflateString output argument | +| zstdTest.cpp:26:39:26:42 | **argv | semmle.label | **argv | +| zstdTest.cpp:26:39:26:42 | *argv | semmle.label | *argv | +| zstdTest.cpp:27:23:27:33 | call to fopen_orDie | semmle.label | call to fopen_orDie | +| zstdTest.cpp:27:23:27:33 | call to fopen_orDie | semmle.label | call to fopen_orDie | +| zstdTest.cpp:27:35:27:41 | *access to array | semmle.label | *access to array | +| zstdTest.cpp:35:32:35:37 | **buffIn | semmle.label | **buffIn | +| zstdTest.cpp:35:32:35:37 | *buffIn | semmle.label | *buffIn | +| zstdTest.cpp:35:52:35:54 | fin | semmle.label | fin | +| zstdTest.cpp:36:32:36:37 | **buffIn | semmle.label | **buffIn | +| zstdTest.cpp:36:32:36:37 | *buffIn | semmle.label | *buffIn | +| zstdTest.cpp:39:69:39:74 | & ... | semmle.label | & ... | +| zstdTest.cpp:39:69:39:74 | & ... | semmle.label | & ... | +subpaths +| libarchiveTests.cpp:38:27:38:27 | *a | libarchiveTests.cpp:16:31:16:32 | *ar | libarchiveTests.cpp:16:31:16:32 | *ar | libarchiveTests.cpp:38:27:38:27 | read_data output argument | +| main.cpp:8:23:8:26 | **argv | brotliTest.cpp:15:41:15:44 | **argv | brotliTest.cpp:15:41:15:44 | **argv | main.cpp:8:23:8:26 | brotli_test output argument | +| main.cpp:9:27:9:30 | **argv | libarchiveTests.cpp:30:45:30:48 | **argv | libarchiveTests.cpp:30:45:30:48 | **argv | main.cpp:9:27:9:30 | libarchive_test output argument | +| main.cpp:10:24:10:27 | **argv | minizipTest.cpp:12:42:12:45 | **argv | minizipTest.cpp:12:42:12:45 | **argv | main.cpp:10:24:10:27 | minizip_test output argument | +| main.cpp:11:21:11:24 | **argv | zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:80:33:80:36 | **argv | main.cpp:11:21:11:24 | zlib_test output argument | +| main.cpp:11:21:11:24 | **argv | zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:80:33:80:36 | **argv [Return] | main.cpp:11:21:11:24 | zlib_test output argument | +| main.cpp:11:21:11:24 | **argv | zlibTest.cpp:80:33:80:36 | **argv | zlibTest.cpp:80:33:80:36 | **argv [Return] | main.cpp:11:21:11:24 | zlib_test output argument | +| zlibTest.cpp:81:19:81:25 | *access to array | zlibTest.cpp:47:26:47:33 | *fileName | zlibTest.cpp:47:26:47:33 | *fileName | zlibTest.cpp:81:19:81:25 | UnsafeGzfread output argument | +| zlibTest.cpp:82:18:82:24 | *access to array | zlibTest.cpp:57:25:57:32 | *fileName | zlibTest.cpp:57:25:57:32 | *fileName | zlibTest.cpp:82:18:82:24 | UnsafeGzgets output argument | +| zlibTest.cpp:83:19:83:25 | *access to array | zlibTest.cpp:16:26:16:30 | *input | zlibTest.cpp:16:26:16:30 | *input | zlibTest.cpp:83:19:83:25 | UnsafeInflate output argument | +| zlibTest.cpp:84:18:84:24 | *access to array | zlibTest.cpp:37:25:37:32 | *fileName | zlibTest.cpp:37:25:37:32 | *fileName | zlibTest.cpp:84:18:84:24 | UnsafeGzread output argument | +| zlibTest.cpp:85:19:85:25 | *access to array | zlibTest.cpp:71:26:71:30 | *input | zlibTest.cpp:71:26:71:30 | *input | zlibTest.cpp:85:19:85:25 | InflateString output argument | +#select +| brotliTest.cpp:18:35:18:53 | *access to array | main.cpp:7:33:7:36 | **argv | brotliTest.cpp:18:35:18:53 | *access to array | The decompression output of $@ is not limited | brotliTest.cpp:18:5:18:27 | call to BrotliDecoderDecompress | BrotliDecoderDecompress | +| brotliTest.cpp:24:51:24:58 | **& ... | main.cpp:7:33:7:36 | **argv | brotliTest.cpp:24:51:24:58 | **& ... | The decompression output of $@ is not limited | brotliTest.cpp:24:5:24:33 | call to BrotliDecoderDecompressStream | BrotliDecoderDecompressStream | +| libarchiveTests.cpp:22:41:22:42 | *ar | main.cpp:7:33:7:36 | **argv | libarchiveTests.cpp:22:41:22:42 | *ar | The decompression output of $@ is not limited | libarchiveTests.cpp:22:17:22:39 | call to archive_read_data_block | archive_read_data_block | +| minizipTest.cpp:17:52:17:67 | *access to array | main.cpp:7:33:7:36 | **argv | minizipTest.cpp:17:52:17:67 | *access to array | The decompression output of $@ is not limited | minizipTest.cpp:17:22:17:38 | call to mz_zip_entry_read | mz_zip_entry_read | +| minizipTest.cpp:26:30:26:39 | **zip_reader | main.cpp:7:33:7:36 | **argv | minizipTest.cpp:26:30:26:39 | **zip_reader | The decompression output of $@ is not limited | minizipTest.cpp:26:5:26:28 | call to mz_zip_reader_entry_save | mz_zip_reader_entry_save | +| minizipTest.cpp:26:30:26:39 | *zip_reader | main.cpp:7:33:7:36 | **argv | minizipTest.cpp:26:30:26:39 | *zip_reader | The decompression output of $@ is not limited | minizipTest.cpp:26:5:26:28 | call to mz_zip_reader_entry_save | mz_zip_reader_entry_save | +| minizipTest.cpp:28:13:28:19 | *access to array | main.cpp:7:33:7:36 | **argv | minizipTest.cpp:28:13:28:19 | *access to array | The decompression output of $@ is not limited | minizipTest.cpp:28:5:28:11 | call to UnzOpen | UnzOpen | +| zlibTest.cpp:25:13:25:22 | & ... | main.cpp:7:33:7:36 | **argv | zlibTest.cpp:25:13:25:22 | & ... | The decompression output of $@ is not limited | zlibTest.cpp:25:5:25:11 | call to inflate | inflate | +| zlibTest.cpp:41:20:41:26 | inFileZ | main.cpp:7:33:7:36 | **argv | zlibTest.cpp:41:20:41:26 | inFileZ | The decompression output of $@ is not limited | zlibTest.cpp:41:13:41:18 | call to gzread | gzread | +| zlibTest.cpp:51:38:51:44 | inFileZ | main.cpp:7:33:7:36 | **argv | zlibTest.cpp:51:38:51:44 | inFileZ | The decompression output of $@ is not limited | zlibTest.cpp:51:14:51:20 | call to gzfread | gzfread | +| zlibTest.cpp:62:25:62:31 | inFileZ | main.cpp:7:33:7:36 | **argv | zlibTest.cpp:62:25:62:31 | inFileZ | The decompression output of $@ is not limited | zlibTest.cpp:62:18:62:23 | call to gzgets | gzgets | +| zlibTest.cpp:77:45:77:59 | *input | main.cpp:7:33:7:36 | **argv | zlibTest.cpp:77:45:77:59 | *input | The decompression output of $@ is not limited | zlibTest.cpp:77:5:77:14 | call to uncompress | uncompress | +| zstdTest.cpp:39:69:39:74 | & ... | main.cpp:7:33:7:36 | **argv | zstdTest.cpp:39:69:39:74 | & ... | The decompression output of $@ is not limited | zstdTest.cpp:39:32:39:52 | call to ZSTD_decompressStream | ZSTD_decompressStream | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/DecompressionBombs.qlref b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/DecompressionBombs.qlref new file mode 100644 index 00000000000..3dcbc9db9ff --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/DecompressionBombs.qlref @@ -0,0 +1 @@ +experimental/Security/CWE/CWE-409/DecompressionBombs.ql diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/brotliTest.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/brotliTest.cpp new file mode 100644 index 00000000000..90274943473 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/brotliTest.cpp @@ -0,0 +1,26 @@ +typedef long unsigned int size_t; +typedef unsigned char uint8_t; + +enum BrotliDecoderResult {}; +struct BrotliDecoderState; + +BrotliDecoderResult BrotliDecoderDecompress( + size_t encoded_size, const uint8_t encoded_buffer[], + size_t *decoded_size, uint8_t decoded_buffer[]); + +BrotliDecoderResult BrotliDecoderDecompressStream( + BrotliDecoderState *state, size_t *available_in, const uint8_t **next_in, + size_t *available_out, uint8_t **next_out, size_t *total_out); + +void brotli_test(int argc, const char **argv) { + uint8_t output[1024]; + size_t output_size = sizeof(output); + BrotliDecoderDecompress(1024, (uint8_t *) argv[2], &output_size, output); // BAD + + size_t input_size = 1024; + const uint8_t *input_p = (const uint8_t*)argv[2]; + uint8_t *output_p = output; + size_t out_size; + BrotliDecoderDecompressStream(0, &input_size, &input_p, &output_size, // BAD + &output_p, &out_size); +} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/libarchiveTests.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/libarchiveTests.cpp new file mode 100644 index 00000000000..5988c9d0fc5 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/libarchiveTests.cpp @@ -0,0 +1,42 @@ +#define ARCHIVE_EOF 1 +#define ARCHIVE_OK 0 +#define ARCHIVE_WARN (-20) + +struct archive; +struct archive_entry; +typedef int size_t; +typedef int la_int64_t; + +archive *archive_read_new(); +int archive_read_open_filename(archive *pArchive, const char *filename, int i); +int archive_read_next_header(archive *a, archive_entry **entry); +int archive_entry_size(archive_entry *pEntry); +int archive_read_data_block(archive *pArchive, const void **pVoid, size_t *pInt, la_int64_t *pInt1); + +static int read_data(archive *ar) { + for (;;) { + const void *buff; + size_t size; + la_int64_t offset; + + int r = archive_read_data_block(ar, &buff, &size, &offset); // BAD + if (r == ARCHIVE_EOF) + return ARCHIVE_OK; + if (r < ARCHIVE_OK) + return r; + } +} + +void libarchive_test(int argc, const char **argv) { + archive *a = archive_read_new(); + archive_entry *entry; + + archive_read_open_filename(a, argv[1], 10240); + for (;;) { + archive_read_next_header(a, &entry); + if (archive_entry_size(entry) > 0) { + if (read_data(a) < ARCHIVE_WARN) + break; + } + } +} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/main.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/main.cpp new file mode 100644 index 00000000000..47f76ff079b --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/main.cpp @@ -0,0 +1,14 @@ +void brotli_test(int argc, const char **argv); +void libarchive_test(int argc, const char **argv); +void minizip_test(int argc, const char **argv); +void zlib_test(int argc, const char **argv); +void zstd_test(int argc, const char **argv); + +int main(int argc, const char **argv) { + brotli_test(argc, argv); + libarchive_test(argc, argv); + minizip_test(argc, argv); + zlib_test(argc, argv); + zstd_test(argc, argv); + return 0; +} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/minizipTest.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/minizipTest.cpp new file mode 100644 index 00000000000..636f579feea --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/minizipTest.cpp @@ -0,0 +1,29 @@ +typedef signed int int32_t; + +void *mz_zip_reader_create(); +int32_t mz_zip_reader_open_file(void *handle, const char *path); +int32_t mz_zip_reader_goto_first_entry(void *pVoid); +int32_t mz_zip_reader_entry_save(void *pVoid, int stream, int write); +int32_t mz_zip_entry_read(void *pVoid, void *buf, int32_t i); +void UnzOpen(const char *string); + +void *mz_zip_create(); + +void minizip_test(int argc, const char **argv) { + void *zip_handle = mz_zip_create(); + int32_t bytes_read; + char buf[4096]; + while(true) { + bytes_read = mz_zip_entry_read(zip_handle, (char *) argv[1], sizeof(buf)); // BAD + if (bytes_read <= 0) { + break; + } + } + + void *zip_reader = mz_zip_reader_create(); + mz_zip_reader_open_file(zip_reader, argv[1]); + mz_zip_reader_goto_first_entry(zip_reader); + mz_zip_reader_entry_save(zip_reader, 0, 0); // BAD + + UnzOpen(argv[3]); // BAD +} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/zlibTest.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/zlibTest.cpp new file mode 100644 index 00000000000..7643a607407 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/zlibTest.cpp @@ -0,0 +1,86 @@ +typedef unsigned char Bytef; +typedef unsigned long uLong; +typedef uLong uLongf; +typedef unsigned int uInt; + +struct z_stream { + Bytef *next_in; + Bytef *next_out; + uInt avail_out; +}; + +void inflateInit(z_stream *infstream); +void inflate(z_stream *infstream, int i); +void inflateEnd(z_stream *infstream); + +void UnsafeInflate(char *input) { + unsigned char output[1024]; + + z_stream infstream; + infstream.next_in = (Bytef *) input; // input char array + infstream.avail_out = sizeof(output); // size of output + infstream.next_out = output; // output char array + + inflateInit(&infstream); + inflate(&infstream, 0); // BAD +} + + +struct gzFile { +}; + +gzFile gzopen(char *str, const char *rb); +unsigned int gzread(gzFile gz_file, unsigned char *str, int i); +bool gzfread(char *str, int i, int i1, gzFile gz_file); +char *gzgets(gzFile gz_file, char *buffer, int i); + +void UnsafeGzread(char *fileName) { + gzFile inFileZ = gzopen(fileName, "rb"); + unsigned char unzipBuffer[8192]; + while (true) { + if (gzread(inFileZ, unzipBuffer, 8192) <= 0) { // BAD + break; + } + } +} + +void UnsafeGzfread(char *fileName) { + gzFile inFileZ = gzopen(fileName, "rb"); + while (true) { + char buffer[1000]; + if (!gzfread(buffer, 999, 1, inFileZ)) { // BAD + break; + } + } +} + +void UnsafeGzgets(char *fileName) { + gzFile inFileZ = gzopen(fileName, "rb"); + char *buffer = new char[4000000000]; + char *result; + while (true) { + result = gzgets(inFileZ, buffer, 1000000000); // BAD + if (result == nullptr) { + break; + } + } +} + +int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); + +void InflateString(char *input) { + unsigned char output[1024]; + + uLong source_length = 500; + uLong destination_length = sizeof(output); + + uncompress(output, &destination_length, (Bytef *) input, source_length); // BAD +} + +void zlib_test(int argc, char **argv) { + UnsafeGzfread(argv[2]); + UnsafeGzgets(argv[2]); + UnsafeInflate(argv[2]); + UnsafeGzread(argv[2]); + InflateString(argv[2]); +} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/zstdTest.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/zstdTest.cpp new file mode 100644 index 00000000000..42455185823 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-409/DecompressionBombs/zstdTest.cpp @@ -0,0 +1,43 @@ +typedef long unsigned int size_t; +struct FILE; + +FILE *fopen_orDie(const char *filename, const char *instruction); +size_t fread_orDie(void *const pVoid, const size_t read, FILE *const pFile); +void *const malloc_orDie(const size_t size); + +struct ZSTD_DCtx; +typedef struct ZSTD_inBuffer_s { + const void *src; + size_t size; + size_t pos; +} ZSTD_inBuffer; +typedef struct ZSTD_outBuffer_s { + void *dst; + size_t size; + size_t pos; +} ZSTD_outBuffer; + +const size_t ZSTD_DStreamInSize(); +const size_t ZSTD_DStreamOutSize(); +ZSTD_DCtx *const ZSTD_createDCtx(); +const size_t ZSTD_decompressStream(ZSTD_DCtx *const pCtx, ZSTD_outBuffer *pS, ZSTD_inBuffer *pS1); +void CHECK_ZSTD(const size_t ret); + +void zstd_test(int argc, const char **argv) { + FILE *const fin = fopen_orDie(argv[1], "rb"); + size_t const buffInSize = ZSTD_DStreamInSize(); + void *const buffIn = malloc_orDie(buffInSize); + size_t const buffOutSize = ZSTD_DStreamOutSize(); + void *const buffOut = malloc_orDie(buffOutSize); + + ZSTD_DCtx *const dctx = ZSTD_createDCtx(); + size_t read; + while ((read = fread_orDie(buffIn, buffInSize, fin))) { + ZSTD_inBuffer input = {buffIn, read, 0}; + while (input.pos < input.size) { + ZSTD_outBuffer output = {buffOut, buffOutSize, 0}; + size_t const ret = ZSTD_decompressStream(dctx, &output, &input); // BAD + CHECK_ZSTD(ret); + } + } +} diff --git a/cpp/ql/test/header-variant-tests/multi-target-includes/includes.expected b/cpp/ql/test/header-variant-tests/multi-target-includes/includes.expected index 209af4b8ec4..2bffb736d98 100644 --- a/cpp/ql/test/header-variant-tests/multi-target-includes/includes.expected +++ b/cpp/ql/test/header-variant-tests/multi-target-includes/includes.expected @@ -5,6 +5,5 @@ | main1.cpp:7:1:7:26 | #include "defines_issue.h" | Include | defines_issue.h | 1 | | main2.cpp:3:1:3:19 | #include "common.h" | Include | common.h | 1 | | main2.cpp:7:1:7:26 | #include "defines_issue.h" | Include | defines_issue.h | 1 | -| nameclash.h:3:1:3:27 | #include_next "nameclash.h" | IncludeNext | nameclash.h | 1 | | nameclash.h:3:1:3:27 | #include_next "nameclash.h" | IncludeNext | subdir1/nameclash.h | 1 | | nameclash.h:3:1:3:27 | #include_next "nameclash.h" | IncludeNext | subdir2/nameclash.h | 1 | diff --git a/cpp/ql/test/library-tests/builtins/type_traits/clang.cpp b/cpp/ql/test/library-tests/builtins/type_traits/clang.cpp index 167023c1a33..73244454372 100644 --- a/cpp/ql/test/library-tests/builtins/type_traits/clang.cpp +++ b/cpp/ql/test/library-tests/builtins/type_traits/clang.cpp @@ -1,4 +1,4 @@ -// semmle-extractor-options: --clang --clang_version 180000 +// semmle-extractor-options: --clang --edg --clang_version --edg 190000 struct S { void f() {} @@ -108,3 +108,16 @@ bool b_is_unbounded_array2 = __is_unbounded_array(int[42]); bool b_is_referenceable1 = __is_referenceable(int); bool b_is_referenceable2 = __is_referenceable(void); + +bool b_is_trivially_equality_comparable1 = __is_trivially_equality_comparable(int); +bool b_is_trivially_equality_comparable2 = __is_trivially_equality_comparable(void); + +enum class E { + a, b +}; + +bool b_is_scoped_enum1 = __is_scoped_enum(E); +bool b_is_scoped_enum2 = __is_scoped_enum(int); + +bool b_is_trivially_relocatable1 = __is_trivially_relocatable(int); +bool b_is_trivially_relocatable2 = __is_trivially_relocatable(void); diff --git a/cpp/ql/test/library-tests/builtins/type_traits/expr.expected b/cpp/ql/test/library-tests/builtins/type_traits/expr.expected index edf63baef9e..55bf0757a49 100644 --- a/cpp/ql/test/library-tests/builtins/type_traits/expr.expected +++ b/cpp/ql/test/library-tests/builtins/type_traits/expr.expected @@ -153,7 +153,21 @@ | clang.cpp:109:28:109:50 | int | | | | clang.cpp:110:28:110:51 | __is_referenceable | void | 0 | | clang.cpp:110:28:110:51 | void | | | +| clang.cpp:112:44:112:82 | __is_trivially_equality_comparable | int | 1 | +| clang.cpp:112:44:112:82 | int | | | +| clang.cpp:113:44:113:83 | __is_trivially_equality_comparable | void | 0 | +| clang.cpp:113:44:113:83 | void | | | +| clang.cpp:119:26:119:44 | E | | | +| clang.cpp:119:26:119:44 | __is_scoped_enum | E | 1 | +| clang.cpp:120:26:120:46 | __is_scoped_enum | int | 0 | +| clang.cpp:120:26:120:46 | int | | | +| clang.cpp:122:36:122:66 | __is_trivially_relocatable | int | 1 | +| clang.cpp:122:36:122:66 | int | | | +| clang.cpp:123:36:123:67 | __is_trivially_relocatable | void | 0 | +| clang.cpp:123:36:123:67 | void | | | | file://:0:0:0:0 | 0 | | 0 | +| file://:0:0:0:0 | 0 | | 0 | +| file://:0:0:0:0 | 1 | | 1 | | file://:0:0:0:0 | 1 | | 1 | | file://:0:0:0:0 | 2 | | 2 | | gcc.cpp:3:25:3:25 | 8 | | 8 | diff --git a/cpp/ql/test/library-tests/c11_generic/PrintAST.expected b/cpp/ql/test/library-tests/c11_generic/PrintAST.expected new file mode 100644 index 00000000000..67583c896c6 --- /dev/null +++ b/cpp/ql/test/library-tests/c11_generic/PrintAST.expected @@ -0,0 +1,458 @@ +#-----| [CopyAssignmentOperator] __va_list_tag& __va_list_tag::operator=(__va_list_tag const&) +#-----| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const __va_list_tag & +#-----| [MoveAssignmentOperator] __va_list_tag& __va_list_tag::operator=(__va_list_tag&&) +#-----| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] __va_list_tag && +generic.c: +# 3| [FormattingFunction,TopLevelFunction] int printf(char const*) +# 3| : +# 3| getParameter(0): [Parameter] format +# 3| Type = [PointerType] const char * +# 14| [TopLevelFunction] int main() +# 14| : +# 15| getEntryPoint(): [BlockStmt] { ... } +# 16| getStmt(0): [DeclStmt] declaration +# 16| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 16| Type = [IntType] int +# 17| getStmt(1): [DeclStmt] declaration +# 17| getDeclarationEntry(0): [VariableDeclarationEntry] definition of m +# 17| Type = [CTypedefType] MYINT +# 18| getStmt(2): [DeclStmt] declaration +# 18| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 18| Type = [PointerType] const char * +# 19| getStmt(3): [DeclStmt] declaration +# 19| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 19| Type = [PointerType] float *** +# 21| getStmt(4): [ExprStmt] ExprStmt +# 21| getExpr(): [FormattingFunctionCall,FunctionCall] call to printf +# 21| Type = [IntType] int +# 21| ValueCategory = prvalue +# 21| getArgument(0): i is %s\n +# 21| Type = [ArrayType] char[9] +# 21| Value = [StringLiteral] "i is %s\n" +# 21| ValueCategory = lvalue +# 21| getArgument(1): int +# 21| Type = [ArrayType] char[4] +# 21| Value = [StringLiteral] "int" +# 21| ValueCategory = lvalue +# 21| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... +# 21| Conversion = [PointerConversion] pointer conversion +# 21| Type = [PointerType] const char * +# 21| ValueCategory = prvalue +# 21| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 21| Type = [CharPointerType] char * +# 21| ValueCategory = prvalue +# 21| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 21| Type = [CharPointerType] char * +# 21| ValueCategory = prvalue +# 21| getExpr(): [C11GenericExpr] _Generic +# 21| Type = [ArrayType] char[4] +# 21| Value = [C11GenericExpr] int +# 21| ValueCategory = lvalue +# 21| getControllingExpr(): [VariableAccess] i +# 21| Type = [IntType] int +# 21| ValueCategory = prvalue(load) +# 21| getAssociationType(0): [TypeName] int +# 21| Type = [IntType] int +# 21| ValueCategory = prvalue +# 21| getAssociationExpr(0): [ReuseExpr] reuse of int +# 21| Type = [ArrayType] char[4] +# 21| ValueCategory = lvalue +# 21| getAssociationType(1): [TypeName] const char * +# 21| Type = [PointerType] const char * +# 21| ValueCategory = prvalue +# 21| getAssociationExpr(1): string +# 21| Type = [ArrayType] char[7] +# 21| Value = [StringLiteral] "string" +# 21| ValueCategory = lvalue +# 21| getAssociationType(2): [TypeName] void +# 21| Type = [VoidType] void +# 21| ValueCategory = prvalue +# 21| getAssociationExpr(2): unknown +# 21| Type = [ArrayType] char[8] +# 21| Value = [StringLiteral] "unknown" +# 21| ValueCategory = lvalue +# 21| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 21| Type = [IntType] int +# 21| ValueCategory = prvalue(load) +# 22| getStmt(5): [ExprStmt] ExprStmt +# 22| getExpr(): [FormattingFunctionCall,FunctionCall] call to printf +# 22| Type = [IntType] int +# 22| ValueCategory = prvalue +# 22| getArgument(0): c is %s\n +# 22| Type = [ArrayType] char[9] +# 22| Value = [StringLiteral] "c is %s\n" +# 22| ValueCategory = lvalue +# 22| getArgument(1): int +# 22| Type = [ArrayType] char[4] +# 22| Value = [StringLiteral] "int" +# 22| ValueCategory = lvalue +# 22| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... +# 22| Conversion = [PointerConversion] pointer conversion +# 22| Type = [PointerType] const char * +# 22| ValueCategory = prvalue +# 22| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 22| Type = [CharPointerType] char * +# 22| ValueCategory = prvalue +# 22| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 22| Type = [CharPointerType] char * +# 22| ValueCategory = prvalue +# 22| getExpr(): [C11GenericExpr] _Generic +# 22| Type = [ArrayType] char[4] +# 22| Value = [C11GenericExpr] int +# 22| ValueCategory = lvalue +# 22| getControllingExpr(): [VariableAccess] m +# 22| Type = [CTypedefType] MYINT +# 22| ValueCategory = prvalue(load) +# 22| getAssociationType(0): [TypeName] int +# 22| Type = [IntType] int +# 22| ValueCategory = prvalue +# 22| getAssociationExpr(0): [ReuseExpr] reuse of int +# 22| Type = [ArrayType] char[4] +# 22| ValueCategory = lvalue +# 22| getAssociationType(1): [TypeName] const char * +# 22| Type = [PointerType] const char * +# 22| ValueCategory = prvalue +# 22| getAssociationExpr(1): string +# 22| Type = [ArrayType] char[7] +# 22| Value = [StringLiteral] "string" +# 22| ValueCategory = lvalue +# 22| getAssociationType(2): [TypeName] void +# 22| Type = [VoidType] void +# 22| ValueCategory = prvalue +# 22| getAssociationExpr(2): unknown +# 22| Type = [ArrayType] char[8] +# 22| Value = [StringLiteral] "unknown" +# 22| ValueCategory = lvalue +# 22| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 22| Type = [CTypedefType] MYINT +# 22| ValueCategory = prvalue(load) +# 23| getStmt(6): [ExprStmt] ExprStmt +# 23| getExpr(): [FormattingFunctionCall,FunctionCall] call to printf +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue +# 23| getArgument(0): s is %s\n +# 23| Type = [ArrayType] char[9] +# 23| Value = [StringLiteral] "s is %s\n" +# 23| ValueCategory = lvalue +# 23| getArgument(1): string +# 23| Type = [ArrayType] char[7] +# 23| Value = [StringLiteral] "string" +# 23| ValueCategory = lvalue +# 23| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... +# 23| Conversion = [PointerConversion] pointer conversion +# 23| Type = [PointerType] const char * +# 23| ValueCategory = prvalue +# 23| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 23| Type = [CharPointerType] char * +# 23| ValueCategory = prvalue +# 23| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 23| Type = [CharPointerType] char * +# 23| ValueCategory = prvalue +# 23| getExpr(): [C11GenericExpr] _Generic +# 23| Type = [ArrayType] char[7] +# 23| Value = [C11GenericExpr] string +# 23| ValueCategory = lvalue +# 23| getControllingExpr(): [VariableAccess] s +# 23| Type = [PointerType] const char * +# 23| ValueCategory = prvalue(load) +# 23| getAssociationType(0): [TypeName] int +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue +# 23| getAssociationExpr(0): int +# 23| Type = [ArrayType] char[4] +# 23| Value = [StringLiteral] "int" +# 23| ValueCategory = lvalue +# 23| getAssociationType(1): [TypeName] const char * +# 23| Type = [PointerType] const char * +# 23| ValueCategory = prvalue +# 23| getAssociationExpr(1): [ReuseExpr] reuse of string +# 23| Type = [ArrayType] char[7] +# 23| ValueCategory = lvalue +# 23| getAssociationType(2): [TypeName] void +# 23| Type = [VoidType] void +# 23| ValueCategory = prvalue +# 23| getAssociationExpr(2): unknown +# 23| Type = [ArrayType] char[8] +# 23| Value = [StringLiteral] "unknown" +# 23| ValueCategory = lvalue +# 23| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 23| Type = [PointerType] const char * +# 23| ValueCategory = prvalue(load) +# 24| getStmt(7): [ExprStmt] ExprStmt +# 24| getExpr(): [FormattingFunctionCall,FunctionCall] call to printf +# 24| Type = [IntType] int +# 24| ValueCategory = prvalue +# 24| getArgument(0): f is %s\n +# 24| Type = [ArrayType] char[9] +# 24| Value = [StringLiteral] "f is %s\n" +# 24| ValueCategory = lvalue +# 24| getArgument(1): unknown +# 24| Type = [ArrayType] char[8] +# 24| Value = [StringLiteral] "unknown" +# 24| ValueCategory = lvalue +# 24| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... +# 24| Conversion = [PointerConversion] pointer conversion +# 24| Type = [PointerType] const char * +# 24| ValueCategory = prvalue +# 24| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 24| Type = [CharPointerType] char * +# 24| ValueCategory = prvalue +# 24| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 24| Type = [CharPointerType] char * +# 24| ValueCategory = prvalue +# 24| getExpr(): [C11GenericExpr] _Generic +# 24| Type = [ArrayType] char[8] +# 24| Value = [C11GenericExpr] unknown +# 24| ValueCategory = lvalue +# 24| getControllingExpr(): [VariableAccess] f +# 24| Type = [PointerType] float *** +# 24| ValueCategory = prvalue(load) +# 24| getAssociationType(0): [TypeName] int +# 24| Type = [IntType] int +# 24| ValueCategory = prvalue +# 24| getAssociationExpr(0): int +# 24| Type = [ArrayType] char[4] +# 24| Value = [StringLiteral] "int" +# 24| ValueCategory = lvalue +# 24| getAssociationType(1): [TypeName] const char * +# 24| Type = [PointerType] const char * +# 24| ValueCategory = prvalue +# 24| getAssociationExpr(1): string +# 24| Type = [ArrayType] char[7] +# 24| Value = [StringLiteral] "string" +# 24| ValueCategory = lvalue +# 24| getAssociationType(2): [TypeName] void +# 24| Type = [VoidType] void +# 24| ValueCategory = prvalue +# 24| getAssociationExpr(2): [ReuseExpr] reuse of unknown +# 24| Type = [ArrayType] char[8] +# 24| ValueCategory = lvalue +# 24| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 24| Type = [PointerType] float *** +# 24| ValueCategory = prvalue(load) +# 25| getStmt(8): [ReturnStmt] return ... +#-----| getExpr(): [Literal] 0 +#-----| Type = [IntType] int +#-----| Value = [Literal] 0 +#-----| ValueCategory = prvalue +generic.cpp: +# 4| [FormattingFunction,TopLevelFunction] int printf(char const*) +# 4| : +# 4| getParameter(0): [Parameter] format +# 4| Type = [PointerType] const char * +# 15| [TopLevelFunction] int main() +# 15| : +# 16| getEntryPoint(): [BlockStmt] { ... } +# 17| getStmt(0): [DeclStmt] declaration +# 17| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 17| Type = [IntType] int +# 18| getStmt(1): [DeclStmt] declaration +# 18| getDeclarationEntry(0): [VariableDeclarationEntry] definition of m +# 18| Type = [CTypedefType] MYINT +# 19| getStmt(2): [DeclStmt] declaration +# 19| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 19| Type = [PointerType] const char * +# 20| getStmt(3): [DeclStmt] declaration +# 20| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 20| Type = [PointerType] float *** +# 22| getStmt(4): [ExprStmt] ExprStmt +# 22| getExpr(): [FormattingFunctionCall,FunctionCall] call to printf +# 22| Type = [IntType] int +# 22| ValueCategory = prvalue +# 22| getArgument(0): i is %s\n +# 22| Type = [ArrayType] const char[9] +# 22| Value = [StringLiteral] "i is %s\n" +# 22| ValueCategory = lvalue +# 22| getArgument(1): int +# 22| Type = [ArrayType] const char[4] +# 22| Value = [StringLiteral] "int" +# 22| ValueCategory = lvalue +# 22| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 22| Type = [PointerType] const char * +# 22| ValueCategory = prvalue +# 22| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 22| Type = [PointerType] const char * +# 22| ValueCategory = prvalue +# 22| getExpr(): [C11GenericExpr] _Generic +# 22| Type = [ArrayType] const char[4] +# 22| Value = [C11GenericExpr] int +# 22| ValueCategory = lvalue +# 22| getControllingExpr(): [VariableAccess] i +# 22| Type = [IntType] int +# 22| ValueCategory = lvalue +# 22| getAssociationType(0): [TypeName] int +# 22| Type = [IntType] int +# 22| ValueCategory = prvalue +# 22| getAssociationExpr(0): [ReuseExpr] reuse of int +# 22| Type = [ArrayType] const char[4] +# 22| ValueCategory = lvalue +# 22| getAssociationType(1): [TypeName] const char * +# 22| Type = [PointerType] const char * +# 22| ValueCategory = prvalue +# 22| getAssociationExpr(1): string +# 22| Type = [ArrayType] const char[7] +# 22| Value = [StringLiteral] "string" +# 22| ValueCategory = lvalue +# 22| getAssociationType(2): [TypeName] void +# 22| Type = [VoidType] void +# 22| ValueCategory = prvalue +# 22| getAssociationExpr(2): unknown +# 22| Type = [ArrayType] const char[8] +# 22| Value = [StringLiteral] "unknown" +# 22| ValueCategory = lvalue +# 22| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 22| Type = [IntType] int +# 22| ValueCategory = lvalue +# 23| getStmt(5): [ExprStmt] ExprStmt +# 23| getExpr(): [FormattingFunctionCall,FunctionCall] call to printf +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue +# 23| getArgument(0): c is %s\n +# 23| Type = [ArrayType] const char[9] +# 23| Value = [StringLiteral] "c is %s\n" +# 23| ValueCategory = lvalue +# 23| getArgument(1): int +# 23| Type = [ArrayType] const char[4] +# 23| Value = [StringLiteral] "int" +# 23| ValueCategory = lvalue +# 23| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 23| Type = [PointerType] const char * +# 23| ValueCategory = prvalue +# 23| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 23| Type = [PointerType] const char * +# 23| ValueCategory = prvalue +# 23| getExpr(): [C11GenericExpr] _Generic +# 23| Type = [ArrayType] const char[4] +# 23| Value = [C11GenericExpr] int +# 23| ValueCategory = lvalue +# 23| getControllingExpr(): [VariableAccess] m +# 23| Type = [CTypedefType] MYINT +# 23| ValueCategory = lvalue +# 23| getAssociationType(0): [TypeName] int +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue +# 23| getAssociationExpr(0): [ReuseExpr] reuse of int +# 23| Type = [ArrayType] const char[4] +# 23| ValueCategory = lvalue +# 23| getAssociationType(1): [TypeName] const char * +# 23| Type = [PointerType] const char * +# 23| ValueCategory = prvalue +# 23| getAssociationExpr(1): string +# 23| Type = [ArrayType] const char[7] +# 23| Value = [StringLiteral] "string" +# 23| ValueCategory = lvalue +# 23| getAssociationType(2): [TypeName] void +# 23| Type = [VoidType] void +# 23| ValueCategory = prvalue +# 23| getAssociationExpr(2): unknown +# 23| Type = [ArrayType] const char[8] +# 23| Value = [StringLiteral] "unknown" +# 23| ValueCategory = lvalue +# 23| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 23| Type = [CTypedefType] MYINT +# 23| ValueCategory = lvalue +# 24| getStmt(6): [ExprStmt] ExprStmt +# 24| getExpr(): [FormattingFunctionCall,FunctionCall] call to printf +# 24| Type = [IntType] int +# 24| ValueCategory = prvalue +# 24| getArgument(0): s is %s\n +# 24| Type = [ArrayType] const char[9] +# 24| Value = [StringLiteral] "s is %s\n" +# 24| ValueCategory = lvalue +# 24| getArgument(1): string +# 24| Type = [ArrayType] const char[7] +# 24| Value = [StringLiteral] "string" +# 24| ValueCategory = lvalue +# 24| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 24| Type = [PointerType] const char * +# 24| ValueCategory = prvalue +# 24| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 24| Type = [PointerType] const char * +# 24| ValueCategory = prvalue +# 24| getExpr(): [C11GenericExpr] _Generic +# 24| Type = [ArrayType] const char[7] +# 24| Value = [C11GenericExpr] string +# 24| ValueCategory = lvalue +# 24| getControllingExpr(): [VariableAccess] s +# 24| Type = [PointerType] const char * +# 24| ValueCategory = lvalue +# 24| getAssociationType(0): [TypeName] int +# 24| Type = [IntType] int +# 24| ValueCategory = prvalue +# 24| getAssociationExpr(0): int +# 24| Type = [ArrayType] const char[4] +# 24| Value = [StringLiteral] "int" +# 24| ValueCategory = lvalue +# 24| getAssociationType(1): [TypeName] const char * +# 24| Type = [PointerType] const char * +# 24| ValueCategory = prvalue +# 24| getAssociationExpr(1): [ReuseExpr] reuse of string +# 24| Type = [ArrayType] const char[7] +# 24| ValueCategory = lvalue +# 24| getAssociationType(2): [TypeName] void +# 24| Type = [VoidType] void +# 24| ValueCategory = prvalue +# 24| getAssociationExpr(2): unknown +# 24| Type = [ArrayType] const char[8] +# 24| Value = [StringLiteral] "unknown" +# 24| ValueCategory = lvalue +# 24| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 24| Type = [PointerType] const char * +# 24| ValueCategory = lvalue +# 25| getStmt(7): [ExprStmt] ExprStmt +# 25| getExpr(): [FormattingFunctionCall,FunctionCall] call to printf +# 25| Type = [IntType] int +# 25| ValueCategory = prvalue +# 25| getArgument(0): f is %s\n +# 25| Type = [ArrayType] const char[9] +# 25| Value = [StringLiteral] "f is %s\n" +# 25| ValueCategory = lvalue +# 25| getArgument(1): unknown +# 25| Type = [ArrayType] const char[8] +# 25| Value = [StringLiteral] "unknown" +# 25| ValueCategory = lvalue +# 25| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 25| Type = [PointerType] const char * +# 25| ValueCategory = prvalue +# 25| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 25| Type = [PointerType] const char * +# 25| ValueCategory = prvalue +# 25| getExpr(): [C11GenericExpr] _Generic +# 25| Type = [ArrayType] const char[8] +# 25| Value = [C11GenericExpr] unknown +# 25| ValueCategory = lvalue +# 25| getControllingExpr(): [VariableAccess] f +# 25| Type = [PointerType] float *** +# 25| ValueCategory = lvalue +# 25| getAssociationType(0): [TypeName] int +# 25| Type = [IntType] int +# 25| ValueCategory = prvalue +# 25| getAssociationExpr(0): int +# 25| Type = [ArrayType] const char[4] +# 25| Value = [StringLiteral] "int" +# 25| ValueCategory = lvalue +# 25| getAssociationType(1): [TypeName] const char * +# 25| Type = [PointerType] const char * +# 25| ValueCategory = prvalue +# 25| getAssociationExpr(1): string +# 25| Type = [ArrayType] const char[7] +# 25| Value = [StringLiteral] "string" +# 25| ValueCategory = lvalue +# 25| getAssociationType(2): [TypeName] void +# 25| Type = [VoidType] void +# 25| ValueCategory = prvalue +# 25| getAssociationExpr(2): [ReuseExpr] reuse of unknown +# 25| Type = [ArrayType] const char[8] +# 25| ValueCategory = lvalue +# 25| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 25| Type = [PointerType] float *** +# 25| ValueCategory = lvalue +# 26| getStmt(8): [ReturnStmt] return ... +#-----| getExpr(): [Literal] 0 +#-----| Type = [IntType] int +#-----| Value = [Literal] 0 +#-----| ValueCategory = prvalue diff --git a/cpp/ql/test/library-tests/c11_generic/PrintAST.qlref b/cpp/ql/test/library-tests/c11_generic/PrintAST.qlref new file mode 100644 index 00000000000..6f85a6dbe69 --- /dev/null +++ b/cpp/ql/test/library-tests/c11_generic/PrintAST.qlref @@ -0,0 +1 @@ +semmle/code/cpp/PrintAST.ql diff --git a/cpp/ql/test/library-tests/c11_generic/macro_invocation.expected b/cpp/ql/test/library-tests/c11_generic/macro_invocation.expected new file mode 100644 index 00000000000..a022878b4ea --- /dev/null +++ b/cpp/ql/test/library-tests/c11_generic/macro_invocation.expected @@ -0,0 +1,8 @@ +| generic.c:21:22:21:32 | _Generic | generic.c:21:22:21:32 | describe(val) | +| generic.c:22:22:22:32 | _Generic | generic.c:22:22:22:32 | describe(val) | +| generic.c:23:22:23:32 | _Generic | generic.c:23:22:23:32 | describe(val) | +| generic.c:24:22:24:32 | _Generic | generic.c:24:22:24:32 | describe(val) | +| generic.cpp:22:22:22:32 | _Generic | generic.cpp:22:22:22:32 | describe(val) | +| generic.cpp:23:22:23:32 | _Generic | generic.cpp:23:22:23:32 | describe(val) | +| generic.cpp:24:22:24:32 | _Generic | generic.cpp:24:22:24:32 | describe(val) | +| generic.cpp:25:22:25:32 | _Generic | generic.cpp:25:22:25:32 | describe(val) | diff --git a/cpp/ql/test/library-tests/c11_generic/macro_invocation.ql b/cpp/ql/test/library-tests/c11_generic/macro_invocation.ql new file mode 100644 index 00000000000..c63e4c8114e --- /dev/null +++ b/cpp/ql/test/library-tests/c11_generic/macro_invocation.ql @@ -0,0 +1,5 @@ +import cpp + +from C11GenericExpr g, MacroInvocation m +where m.getAnExpandedElement() = g +select g, m diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected index 109f5ffebd1..d97abde482e 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected @@ -33,7 +33,7 @@ argHasPostUpdate | test.cpp:67:29:67:35 | source1 | ArgumentNode is missing PostUpdateNode. | | test.cpp:813:19:813:35 | * ... | ArgumentNode is missing PostUpdateNode. | | test.cpp:848:23:848:25 | rpx | ArgumentNode is missing PostUpdateNode. | -| test.cpp:1057:19:1057:21 | * ... | ArgumentNode is missing PostUpdateNode. | +| test.cpp:1093:19:1093:21 | * ... | ArgumentNode is missing PostUpdateNode. | postWithInFlow | BarrierGuard.cpp:49:6:49:6 | x [post update] | PostUpdateNode should not be the target of local flow. | | BarrierGuard.cpp:60:7:60:7 | x [post update] | PostUpdateNode should not be the target of local flow. | @@ -167,15 +167,17 @@ postWithInFlow | test.cpp:932:5:932:19 | * ... [post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:932:6:932:19 | global_pointer [inner post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:1045:9:1045:11 | ref arg buf | PostUpdateNode should not be the target of local flow. | -| test.cpp:1051:5:1051:11 | content [post update] | PostUpdateNode should not be the target of local flow. | -| test.cpp:1052:9:1052:9 | a [inner post update] | PostUpdateNode should not be the target of local flow. | -| test.cpp:1056:5:1056:7 | * ... [post update] | PostUpdateNode should not be the target of local flow. | -| test.cpp:1056:6:1056:7 | pp [inner post update] | PostUpdateNode should not be the target of local flow. | -| test.cpp:1062:53:1062:53 | p [inner post update] | PostUpdateNode should not be the target of local flow. | -| test.cpp:1072:3:1072:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. | -| test.cpp:1072:4:1072:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. | -| test.cpp:1073:3:1073:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. | -| test.cpp:1073:4:1073:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1066:5:1066:5 | i [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1069:5:1069:5 | i [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1087:5:1087:11 | content [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1088:9:1088:9 | a [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1092:5:1092:7 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1092:6:1092:7 | pp [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1098:53:1098:53 | p [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1108:3:1108:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1108:4:1108:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1109:3:1109:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1109:4:1109:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected index cc0903c1efb..064a53e8d12 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected @@ -26,6 +26,10 @@ postWithInFlow | test.cpp:400:10:400:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:407:10:407:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:1045:9:1045:11 | memset output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:1076:2:1076:3 | swap output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:1076:10:1076:11 | swap output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:1077:2:1077:3 | swap output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:1077:10:1077:11 | swap output argument | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected index f6c8375660c..c1dedd454b6 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected @@ -202,12 +202,12 @@ | test.cpp:489:23:489:29 | *content | test.cpp:490:8:490:17 | * ... | | test.cpp:489:23:489:29 | content | test.cpp:489:23:489:29 | content | | test.cpp:489:23:489:29 | content | test.cpp:490:9:490:17 | p_content | -| test.cpp:1050:12:1050:12 | definition of a | test.cpp:1051:3:1051:3 | *a | -| test.cpp:1051:3:1051:3 | *a | test.cpp:1052:8:1052:9 | *& ... | -| test.cpp:1051:3:1051:3 | *a [post update] | test.cpp:1052:8:1052:9 | *& ... | -| test.cpp:1051:3:1051:3 | a | test.cpp:1052:8:1052:9 | & ... | -| test.cpp:1051:3:1051:3 | a [post update] | test.cpp:1052:8:1052:9 | & ... | -| test.cpp:1051:15:1051:21 | 0 | test.cpp:1051:3:1051:21 | ... = ... | -| test.cpp:1051:15:1051:21 | *0 | test.cpp:1051:3:1051:21 | *... = ... | -| test.cpp:1052:9:1052:9 | *a | test.cpp:1052:8:1052:9 | *& ... | -| test.cpp:1052:9:1052:9 | a | test.cpp:1052:8:1052:9 | & ... | +| test.cpp:1086:12:1086:12 | definition of a | test.cpp:1087:3:1087:3 | *a | +| test.cpp:1087:3:1087:3 | *a | test.cpp:1088:8:1088:9 | *& ... | +| test.cpp:1087:3:1087:3 | *a [post update] | test.cpp:1088:8:1088:9 | *& ... | +| test.cpp:1087:3:1087:3 | a | test.cpp:1088:8:1088:9 | & ... | +| test.cpp:1087:3:1087:3 | a [post update] | test.cpp:1088:8:1088:9 | & ... | +| test.cpp:1087:15:1087:21 | 0 | test.cpp:1087:3:1087:21 | ... = ... | +| test.cpp:1087:15:1087:21 | *0 | test.cpp:1087:3:1087:21 | *... = ... | +| test.cpp:1088:9:1088:9 | *a | test.cpp:1088:8:1088:9 | *& ... | +| test.cpp:1088:9:1088:9 | a | test.cpp:1088:8:1088:9 | & ... | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow.expected index 2e0a1ce81ce..311b2d7f61c 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow.expected @@ -81,10 +81,10 @@ WARNING: module 'DataFlow' has been deprecated and may be removed in future (loc | test.cpp:488:21:488:21 | s [post update] | test.cpp:489:20:489:20 | s | | test.cpp:488:24:488:30 | ref arg content | test.cpp:489:23:489:29 | content | | test.cpp:489:23:489:29 | content | test.cpp:490:9:490:17 | p_content | -| test.cpp:1050:12:1050:12 | a | test.cpp:1051:3:1051:3 | a | -| test.cpp:1050:12:1050:12 | a | test.cpp:1052:9:1052:9 | a | -| test.cpp:1051:3:1051:3 | a [post update] | test.cpp:1052:9:1052:9 | a | -| test.cpp:1051:3:1051:21 | ... = ... | test.cpp:1051:5:1051:11 | content [post update] | -| test.cpp:1051:15:1051:21 | 0 | test.cpp:1051:3:1051:21 | ... = ... | -| test.cpp:1052:8:1052:9 | ref arg & ... | test.cpp:1052:9:1052:9 | a [inner post update] | -| test.cpp:1052:9:1052:9 | a | test.cpp:1052:8:1052:9 | & ... | +| test.cpp:1086:12:1086:12 | a | test.cpp:1087:3:1087:3 | a | +| test.cpp:1086:12:1086:12 | a | test.cpp:1088:9:1088:9 | a | +| test.cpp:1087:3:1087:3 | a [post update] | test.cpp:1088:9:1088:9 | a | +| test.cpp:1087:3:1087:21 | ... = ... | test.cpp:1087:5:1087:11 | content [post update] | +| test.cpp:1087:15:1087:21 | 0 | test.cpp:1087:3:1087:21 | ... = ... | +| test.cpp:1088:8:1088:9 | ref arg & ... | test.cpp:1088:9:1088:9 | a [inner post update] | +| test.cpp:1088:9:1088:9 | a | test.cpp:1088:8:1088:9 | & ... | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected index ac26a0c76ec..90f797429c9 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected @@ -127,7 +127,11 @@ astFlow | test.cpp:842:11:842:16 | call to source | test.cpp:844:8:844:8 | y | | test.cpp:846:13:846:27 | call to indirect_source | test.cpp:848:23:848:25 | rpx | | test.cpp:860:54:860:59 | call to source | test.cpp:861:10:861:37 | static_local_pointer_dynamic | -| test.cpp:1050:12:1050:12 | a | test.cpp:1052:8:1052:9 | & ... | +| test.cpp:1066:9:1066:14 | call to source | test.cpp:1072:10:1072:10 | i | +| test.cpp:1066:9:1066:14 | call to source | test.cpp:1080:10:1080:10 | i | +| test.cpp:1069:9:1069:14 | call to source | test.cpp:1074:10:1074:10 | i | +| test.cpp:1069:9:1069:14 | call to source | test.cpp:1082:10:1082:10 | i | +| test.cpp:1086:12:1086:12 | a | test.cpp:1088:8:1088:9 | & ... | | true_upon_entry.cpp:17:11:17:16 | call to source | true_upon_entry.cpp:21:8:21:8 | x | | true_upon_entry.cpp:27:9:27:14 | call to source | true_upon_entry.cpp:29:8:29:8 | x | | true_upon_entry.cpp:33:11:33:16 | call to source | true_upon_entry.cpp:39:8:39:8 | x | @@ -313,7 +317,12 @@ irFlow | test.cpp:1021:18:1021:32 | *call to indirect_source | test.cpp:1027:19:1027:28 | *translated | | test.cpp:1021:18:1021:32 | *call to indirect_source | test.cpp:1031:19:1031:28 | *translated | | test.cpp:1045:14:1045:19 | call to source | test.cpp:1046:7:1046:10 | * ... | -| test.cpp:1081:27:1081:34 | call to source | test.cpp:1081:27:1081:34 | call to source | +| test.cpp:1052:13:1052:27 | *call to indirect_source | test.cpp:1054:7:1054:11 | * ... | +| test.cpp:1066:9:1066:14 | call to source | test.cpp:1072:10:1072:10 | i | +| test.cpp:1066:9:1066:14 | call to source | test.cpp:1079:10:1079:10 | i | +| test.cpp:1069:9:1069:14 | call to source | test.cpp:1074:10:1074:10 | i | +| test.cpp:1069:9:1069:14 | call to source | test.cpp:1081:10:1081:10 | i | +| test.cpp:1117:27:1117:34 | call to source | test.cpp:1117:27:1117:34 | call to source | | true_upon_entry.cpp:9:11:9:16 | call to source | true_upon_entry.cpp:13:8:13:8 | x | | true_upon_entry.cpp:17:11:17:16 | call to source | true_upon_entry.cpp:21:8:21:8 | x | | true_upon_entry.cpp:27:9:27:14 | call to source | true_upon_entry.cpp:29:8:29:8 | x | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp index ae6b76b88ca..3a6ffe9b716 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp @@ -1046,6 +1046,42 @@ void memset_test(char* buf) { // $ ast-def=buf ir-def=*buf sink(*buf); // $ ir MISSING: ast } +void *realloc(void *, size_t); + +void test_realloc() { + int *src = indirect_source(); + int *dest = (int*)realloc(src, sizeof(int)); + sink(*dest); // $ ir, MISSING: ast +} + +struct MyInt { + int i; + MyInt(); + void swap(MyInt &j); +}; + +void test_member_swap() { + MyInt s1; + MyInt s2; + s2.i = source(); + MyInt s3; + MyInt s4; + s4.i = source(); + + sink(s1.i); + sink(s2.i); // $ ast,ir + sink(s3.i); + sink(s4.i); // $ ast,ir + + s1.swap(s2); + s4.swap(s3); + + sink(s1.i); // $ ir + sink(s2.i); // $ SPURIOUS: ast + sink(s3.i); // $ ir + sink(s4.i); // $ SPURIOUS: ast +} + void flow_out_of_address_with_local_flow() { MyStruct a; a.content = nullptr; diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected index b79e7cd4271..02f5544fe14 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected @@ -51,5 +51,5 @@ incorrectBaseType | test.cpp:848:23:848:25 | rpx | Expected 'Node.getType()' to be int, but it was int * | | test.cpp:854:10:854:36 | * ... | Expected 'Node.getType()' to be const int, but it was int | | test.cpp:867:10:867:30 | * ... | Expected 'Node.getType()' to be const int, but it was int | -| test.cpp:1062:52:1062:53 | *& ... | Expected 'Node.getType()' to be char, but it was char * | +| test.cpp:1098:52:1098:53 | *& ... | Expected 'Node.getType()' to be char, but it was char * | failures diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected index fc230b0ed20..16f0b799d0a 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected @@ -54,5 +54,5 @@ | test.cpp:796:12:796:12 | a | test.cpp:797:20:797:20 | a | | test.cpp:796:12:796:12 | a | test.cpp:797:31:797:31 | a | | test.cpp:796:12:796:12 | a | test.cpp:798:17:798:17 | a | -| test.cpp:1050:12:1050:12 | a | test.cpp:1051:3:1051:3 | a | -| test.cpp:1050:12:1050:12 | a | test.cpp:1052:9:1052:9 | a | +| test.cpp:1086:12:1086:12 | a | test.cpp:1087:3:1087:3 | a | +| test.cpp:1086:12:1086:12 | a | test.cpp:1088:9:1088:9 | a | diff --git a/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll b/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll index 8c4c547f4c8..f7d1065fd04 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll +++ b/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll @@ -13,9 +13,6 @@ class Node extends TNode { AST::DataFlow::Node asAst() { none() } - /** DEPRECATED: Alias for asAst */ - deprecated AST::DataFlow::Node asAST() { result = this.asAst() } - Location getLocation() { none() } } @@ -28,9 +25,6 @@ class AstNode extends Node, TAstNode { override AST::DataFlow::Node asAst() { result = n } - /** DEPRECATED: Alias for asAst */ - deprecated override AST::DataFlow::Node asAST() { result = this.asAst() } - override Location getLocation() { result = n.getLocation() } } diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index c6c5e86635d..80541c16115 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -554,19 +554,15 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | map.cpp:67:30:67:42 | call to pair | map.cpp:80:7:80:7 | l | | | map.cpp:67:30:67:42 | call to pair | map.cpp:81:7:81:7 | l | | | map.cpp:67:37:67:41 | 456 | map.cpp:67:30:67:42 | call to pair | TAINT | -| map.cpp:68:3:68:3 | i | map.cpp:68:10:68:10 | ref arg j | TAINT | | map.cpp:68:3:68:3 | ref arg i | map.cpp:70:7:70:7 | i | | | map.cpp:68:3:68:3 | ref arg i | map.cpp:71:7:71:7 | i | | | map.cpp:68:3:68:3 | ref arg i | map.cpp:72:7:72:7 | i | | -| map.cpp:68:10:68:10 | j | map.cpp:68:3:68:3 | ref arg i | TAINT | | map.cpp:68:10:68:10 | ref arg j | map.cpp:73:7:73:7 | j | | | map.cpp:68:10:68:10 | ref arg j | map.cpp:74:7:74:7 | j | | | map.cpp:68:10:68:10 | ref arg j | map.cpp:75:7:75:7 | j | | -| map.cpp:69:2:69:2 | k | map.cpp:69:9:69:9 | ref arg l | TAINT | | map.cpp:69:2:69:2 | ref arg k | map.cpp:76:7:76:7 | k | | | map.cpp:69:2:69:2 | ref arg k | map.cpp:77:7:77:7 | k | | | map.cpp:69:2:69:2 | ref arg k | map.cpp:78:7:78:7 | k | | -| map.cpp:69:9:69:9 | l | map.cpp:69:2:69:2 | ref arg k | TAINT | | map.cpp:69:9:69:9 | ref arg l | map.cpp:79:7:79:7 | l | | | map.cpp:69:9:69:9 | ref arg l | map.cpp:80:7:80:7 | l | | | map.cpp:69:9:69:9 | ref arg l | map.cpp:81:7:81:7 | l | | @@ -1065,16 +1061,12 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | map.cpp:194:7:194:9 | m16 | map.cpp:194:7:194:9 | call to map | | | map.cpp:195:7:195:9 | m17 | map.cpp:195:7:195:9 | call to map | | | map.cpp:196:7:196:9 | m18 | map.cpp:196:7:196:9 | call to map | | -| map.cpp:197:2:197:4 | m15 | map.cpp:197:11:197:13 | ref arg m16 | TAINT | | map.cpp:197:2:197:4 | ref arg m15 | map.cpp:199:7:199:9 | m15 | | | map.cpp:197:2:197:4 | ref arg m15 | map.cpp:252:1:252:1 | m15 | | -| map.cpp:197:11:197:13 | m16 | map.cpp:197:2:197:4 | ref arg m15 | TAINT | | map.cpp:197:11:197:13 | ref arg m16 | map.cpp:200:7:200:9 | m16 | | | map.cpp:197:11:197:13 | ref arg m16 | map.cpp:252:1:252:1 | m16 | | -| map.cpp:198:2:198:4 | m17 | map.cpp:198:11:198:13 | ref arg m18 | TAINT | | map.cpp:198:2:198:4 | ref arg m17 | map.cpp:201:7:201:9 | m17 | | | map.cpp:198:2:198:4 | ref arg m17 | map.cpp:252:1:252:1 | m17 | | -| map.cpp:198:11:198:13 | m18 | map.cpp:198:2:198:4 | ref arg m17 | TAINT | | map.cpp:198:11:198:13 | ref arg m18 | map.cpp:202:7:202:9 | m18 | | | map.cpp:198:11:198:13 | ref arg m18 | map.cpp:252:1:252:1 | m18 | | | map.cpp:199:7:199:9 | m15 | map.cpp:199:7:199:9 | call to map | | @@ -1747,16 +1739,12 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | map.cpp:343:7:343:9 | m16 | map.cpp:343:7:343:9 | call to unordered_map | | | map.cpp:344:7:344:9 | m17 | map.cpp:344:7:344:9 | call to unordered_map | | | map.cpp:345:7:345:9 | m18 | map.cpp:345:7:345:9 | call to unordered_map | | -| map.cpp:346:2:346:4 | m15 | map.cpp:346:11:346:13 | ref arg m16 | TAINT | | map.cpp:346:2:346:4 | ref arg m15 | map.cpp:348:7:348:9 | m15 | | | map.cpp:346:2:346:4 | ref arg m15 | map.cpp:438:1:438:1 | m15 | | -| map.cpp:346:11:346:13 | m16 | map.cpp:346:2:346:4 | ref arg m15 | TAINT | | map.cpp:346:11:346:13 | ref arg m16 | map.cpp:349:7:349:9 | m16 | | | map.cpp:346:11:346:13 | ref arg m16 | map.cpp:438:1:438:1 | m16 | | -| map.cpp:347:2:347:4 | m17 | map.cpp:347:11:347:13 | ref arg m18 | TAINT | | map.cpp:347:2:347:4 | ref arg m17 | map.cpp:350:7:350:9 | m17 | | | map.cpp:347:2:347:4 | ref arg m17 | map.cpp:438:1:438:1 | m17 | | -| map.cpp:347:11:347:13 | m18 | map.cpp:347:2:347:4 | ref arg m17 | TAINT | | map.cpp:347:11:347:13 | ref arg m18 | map.cpp:351:7:351:9 | m18 | | | map.cpp:347:11:347:13 | ref arg m18 | map.cpp:438:1:438:1 | m18 | | | map.cpp:348:7:348:9 | m15 | map.cpp:348:7:348:9 | call to unordered_map | | @@ -2579,16 +2567,12 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | set.cpp:81:7:81:9 | s15 | set.cpp:81:7:81:9 | call to set | | | set.cpp:82:2:82:4 | ref arg s12 | set.cpp:84:7:84:9 | s12 | | | set.cpp:82:2:82:4 | ref arg s12 | set.cpp:126:1:126:1 | s12 | | -| set.cpp:82:2:82:4 | s12 | set.cpp:82:11:82:13 | ref arg s13 | TAINT | | set.cpp:82:11:82:13 | ref arg s13 | set.cpp:85:7:85:9 | s13 | | | set.cpp:82:11:82:13 | ref arg s13 | set.cpp:126:1:126:1 | s13 | | -| set.cpp:82:11:82:13 | s13 | set.cpp:82:2:82:4 | ref arg s12 | TAINT | | set.cpp:83:2:83:4 | ref arg s14 | set.cpp:86:7:86:9 | s14 | | | set.cpp:83:2:83:4 | ref arg s14 | set.cpp:126:1:126:1 | s14 | | -| set.cpp:83:2:83:4 | s14 | set.cpp:83:11:83:13 | ref arg s15 | TAINT | | set.cpp:83:11:83:13 | ref arg s15 | set.cpp:87:7:87:9 | s15 | | | set.cpp:83:11:83:13 | ref arg s15 | set.cpp:126:1:126:1 | s15 | | -| set.cpp:83:11:83:13 | s15 | set.cpp:83:2:83:4 | ref arg s14 | TAINT | | set.cpp:84:7:84:9 | s12 | set.cpp:84:7:84:9 | call to set | | | set.cpp:85:7:85:9 | s13 | set.cpp:85:7:85:9 | call to set | | | set.cpp:86:7:86:9 | s14 | set.cpp:86:7:86:9 | call to set | | @@ -3066,16 +3050,12 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | set.cpp:193:7:193:9 | s15 | set.cpp:193:7:193:9 | call to unordered_set | | | set.cpp:194:2:194:4 | ref arg s12 | set.cpp:196:7:196:9 | s12 | | | set.cpp:194:2:194:4 | ref arg s12 | set.cpp:238:1:238:1 | s12 | | -| set.cpp:194:2:194:4 | s12 | set.cpp:194:11:194:13 | ref arg s13 | TAINT | | set.cpp:194:11:194:13 | ref arg s13 | set.cpp:197:7:197:9 | s13 | | | set.cpp:194:11:194:13 | ref arg s13 | set.cpp:238:1:238:1 | s13 | | -| set.cpp:194:11:194:13 | s13 | set.cpp:194:2:194:4 | ref arg s12 | TAINT | | set.cpp:195:2:195:4 | ref arg s14 | set.cpp:198:7:198:9 | s14 | | | set.cpp:195:2:195:4 | ref arg s14 | set.cpp:238:1:238:1 | s14 | | -| set.cpp:195:2:195:4 | s14 | set.cpp:195:11:195:13 | ref arg s15 | TAINT | | set.cpp:195:11:195:13 | ref arg s15 | set.cpp:199:7:199:9 | s15 | | | set.cpp:195:11:195:13 | ref arg s15 | set.cpp:238:1:238:1 | s15 | | -| set.cpp:195:11:195:13 | s15 | set.cpp:195:2:195:4 | ref arg s14 | TAINT | | set.cpp:196:7:196:9 | s12 | set.cpp:196:7:196:9 | call to unordered_set | | | set.cpp:197:7:197:9 | s13 | set.cpp:197:7:197:9 | call to unordered_set | | | set.cpp:198:7:198:9 | s14 | set.cpp:198:7:198:9 | call to unordered_set | | @@ -4047,13 +4027,9 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | string.cpp:272:17:272:25 | call to basic_string | string.cpp:280:2:280:3 | s4 | | | string.cpp:272:17:272:25 | call to basic_string | string.cpp:285:7:285:8 | s4 | | | string.cpp:279:2:279:3 | ref arg s1 | string.cpp:282:7:282:8 | s1 | | -| string.cpp:279:2:279:3 | s1 | string.cpp:279:10:279:11 | ref arg s2 | TAINT | | string.cpp:279:10:279:11 | ref arg s2 | string.cpp:283:7:283:8 | s2 | | -| string.cpp:279:10:279:11 | s2 | string.cpp:279:2:279:3 | ref arg s1 | TAINT | | string.cpp:280:2:280:3 | ref arg s4 | string.cpp:285:7:285:8 | s4 | | -| string.cpp:280:2:280:3 | s4 | string.cpp:280:10:280:11 | ref arg s3 | TAINT | | string.cpp:280:10:280:11 | ref arg s3 | string.cpp:284:7:284:8 | s3 | | -| string.cpp:280:10:280:11 | s3 | string.cpp:280:2:280:3 | ref arg s4 | TAINT | | string.cpp:289:17:289:22 | call to source | string.cpp:289:17:289:25 | call to basic_string | TAINT | | string.cpp:289:17:289:25 | call to basic_string | string.cpp:293:7:293:8 | s1 | | | string.cpp:289:17:289:25 | call to basic_string | string.cpp:297:2:297:3 | s1 | | @@ -4839,13 +4815,9 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | stringstream.cpp:115:24:115:32 | call to basic_stringstream | stringstream.cpp:118:2:118:4 | ss4 | | | stringstream.cpp:115:24:115:32 | call to basic_stringstream | stringstream.cpp:123:7:123:9 | ss4 | | | stringstream.cpp:117:2:117:4 | ref arg ss1 | stringstream.cpp:120:7:120:9 | ss1 | | -| stringstream.cpp:117:2:117:4 | ss1 | stringstream.cpp:117:11:117:13 | ref arg ss2 | TAINT | | stringstream.cpp:117:11:117:13 | ref arg ss2 | stringstream.cpp:121:7:121:9 | ss2 | | -| stringstream.cpp:117:11:117:13 | ss2 | stringstream.cpp:117:2:117:4 | ref arg ss1 | TAINT | | stringstream.cpp:118:2:118:4 | ref arg ss4 | stringstream.cpp:123:7:123:9 | ss4 | | -| stringstream.cpp:118:2:118:4 | ss4 | stringstream.cpp:118:11:118:13 | ref arg ss3 | TAINT | | stringstream.cpp:118:11:118:13 | ref arg ss3 | stringstream.cpp:122:7:122:9 | ss3 | | -| stringstream.cpp:118:11:118:13 | ss3 | stringstream.cpp:118:2:118:4 | ref arg ss4 | TAINT | | stringstream.cpp:128:20:128:22 | call to basic_stringstream | stringstream.cpp:142:7:142:9 | ss1 | | | stringstream.cpp:128:20:128:22 | call to basic_stringstream | stringstream.cpp:145:7:145:9 | ss1 | | | stringstream.cpp:128:20:128:22 | call to basic_stringstream | stringstream.cpp:153:7:153:9 | ss1 | | @@ -5413,9 +5385,7 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | swap1.cpp:24:9:24:13 | this | swap1.cpp:24:31:24:34 | this | | | swap1.cpp:24:23:24:26 | that | swap1.cpp:24:23:24:26 | that | | | swap1.cpp:24:23:24:26 | that | swap1.cpp:24:36:24:39 | that | | -| swap1.cpp:24:31:24:34 | this | swap1.cpp:24:36:24:39 | ref arg that | TAINT | | swap1.cpp:24:36:24:39 | ref arg that | swap1.cpp:24:23:24:26 | that | | -| swap1.cpp:24:36:24:39 | that | swap1.cpp:24:31:24:34 | ref arg this | TAINT | | swap1.cpp:25:9:25:13 | this | swap1.cpp:25:36:25:52 | constructor init of field data1 [pre-this] | | | swap1.cpp:25:28:25:31 | that | swap1.cpp:25:42:25:45 | that | | | swap1.cpp:25:47:25:51 | data1 | swap1.cpp:25:36:25:52 | constructor init of field data1 | TAINT | @@ -5425,36 +5395,28 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | swap1.cpp:29:23:29:27 | call to Class | swap1.cpp:30:18:30:20 | tmp | | | swap1.cpp:29:24:29:27 | that | swap1.cpp:29:23:29:27 | call to Class | | | swap1.cpp:30:13:30:16 | ref arg this | swap1.cpp:31:21:31:24 | this | | -| swap1.cpp:30:13:30:16 | this | swap1.cpp:30:18:30:20 | ref arg tmp | TAINT | | swap1.cpp:30:13:30:16 | this | swap1.cpp:31:21:31:24 | this | | -| swap1.cpp:30:18:30:20 | tmp | swap1.cpp:30:13:30:16 | ref arg this | TAINT | | swap1.cpp:31:21:31:24 | this | swap1.cpp:31:20:31:24 | * ... | TAINT | | swap1.cpp:34:16:34:24 | this | swap1.cpp:36:13:36:16 | this | | | swap1.cpp:34:34:34:37 | that | swap1.cpp:34:34:34:37 | that | | | swap1.cpp:34:34:34:37 | that | swap1.cpp:36:18:36:21 | that | | | swap1.cpp:36:13:36:16 | ref arg this | swap1.cpp:37:21:37:24 | this | | -| swap1.cpp:36:13:36:16 | this | swap1.cpp:36:18:36:21 | ref arg that | TAINT | | swap1.cpp:36:13:36:16 | this | swap1.cpp:37:21:37:24 | this | | | swap1.cpp:36:18:36:21 | ref arg that | swap1.cpp:34:34:34:37 | that | | -| swap1.cpp:36:18:36:21 | that | swap1.cpp:36:13:36:16 | ref arg this | TAINT | | swap1.cpp:37:21:37:24 | this | swap1.cpp:37:20:37:24 | * ... | TAINT | | swap1.cpp:40:16:40:26 | this | swap1.cpp:43:13:43:16 | this | | | swap1.cpp:40:41:40:44 | that | swap1.cpp:42:24:42:27 | that | | | swap1.cpp:42:23:42:27 | call to Class | swap1.cpp:43:18:43:20 | tmp | | | swap1.cpp:42:24:42:27 | that | swap1.cpp:42:23:42:27 | call to Class | | | swap1.cpp:43:13:43:16 | ref arg this | swap1.cpp:44:21:44:24 | this | | -| swap1.cpp:43:13:43:16 | this | swap1.cpp:43:18:43:20 | ref arg tmp | TAINT | | swap1.cpp:43:13:43:16 | this | swap1.cpp:44:21:44:24 | this | | -| swap1.cpp:43:18:43:20 | tmp | swap1.cpp:43:13:43:16 | ref arg this | TAINT | | swap1.cpp:44:21:44:24 | this | swap1.cpp:44:20:44:24 | * ... | TAINT | | swap1.cpp:47:16:47:26 | this | swap1.cpp:49:13:49:16 | this | | | swap1.cpp:47:36:47:39 | that | swap1.cpp:47:36:47:39 | that | | | swap1.cpp:47:36:47:39 | that | swap1.cpp:49:18:49:21 | that | | | swap1.cpp:49:13:49:16 | ref arg this | swap1.cpp:50:21:50:24 | this | | -| swap1.cpp:49:13:49:16 | this | swap1.cpp:49:18:49:21 | ref arg that | TAINT | | swap1.cpp:49:13:49:16 | this | swap1.cpp:50:21:50:24 | this | | | swap1.cpp:49:18:49:21 | ref arg that | swap1.cpp:47:36:47:39 | that | | -| swap1.cpp:49:18:49:21 | that | swap1.cpp:49:13:49:16 | ref arg this | TAINT | | swap1.cpp:50:21:50:24 | this | swap1.cpp:50:20:50:24 | * ... | TAINT | | swap1.cpp:53:14:53:17 | this | swap1.cpp:56:18:56:22 | this | | | swap1.cpp:53:26:53:29 | that | swap1.cpp:53:26:53:29 | that | | @@ -5468,9 +5430,7 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | swap1.cpp:61:32:61:32 | y | swap1.cpp:61:32:61:32 | y | | | swap1.cpp:61:32:61:32 | y | swap1.cpp:63:16:63:16 | y | | | swap1.cpp:63:9:63:9 | ref arg x | swap1.cpp:61:22:61:22 | x | | -| swap1.cpp:63:9:63:9 | x | swap1.cpp:63:16:63:16 | ref arg y | TAINT | | swap1.cpp:63:16:63:16 | ref arg y | swap1.cpp:61:32:61:32 | y | | -| swap1.cpp:63:16:63:16 | y | swap1.cpp:63:9:63:9 | ref arg x | TAINT | | swap1.cpp:69:23:69:23 | x | swap1.cpp:71:5:71:5 | x | | | swap1.cpp:69:23:69:23 | x | swap1.cpp:73:10:73:10 | x | | | swap1.cpp:69:23:69:23 | x | swap1.cpp:76:9:76:9 | x | | @@ -5579,9 +5539,7 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | swap2.cpp:24:9:24:13 | this | swap2.cpp:24:31:24:34 | this | | | swap2.cpp:24:23:24:26 | that | swap2.cpp:24:23:24:26 | that | | | swap2.cpp:24:23:24:26 | that | swap2.cpp:24:36:24:39 | that | | -| swap2.cpp:24:31:24:34 | this | swap2.cpp:24:36:24:39 | ref arg that | TAINT | | swap2.cpp:24:36:24:39 | ref arg that | swap2.cpp:24:23:24:26 | that | | -| swap2.cpp:24:36:24:39 | that | swap2.cpp:24:31:24:34 | ref arg this | TAINT | | swap2.cpp:25:9:25:13 | this | swap2.cpp:25:36:25:52 | constructor init of field data1 [pre-this] | | | swap2.cpp:25:28:25:31 | that | swap2.cpp:25:42:25:45 | that | | | swap2.cpp:25:28:25:31 | that | swap2.cpp:25:61:25:64 | that | | @@ -5596,36 +5554,28 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | swap2.cpp:29:23:29:27 | call to Class | swap2.cpp:30:18:30:20 | tmp | | | swap2.cpp:29:24:29:27 | that | swap2.cpp:29:23:29:27 | call to Class | | | swap2.cpp:30:13:30:16 | ref arg this | swap2.cpp:31:21:31:24 | this | | -| swap2.cpp:30:13:30:16 | this | swap2.cpp:30:18:30:20 | ref arg tmp | TAINT | | swap2.cpp:30:13:30:16 | this | swap2.cpp:31:21:31:24 | this | | -| swap2.cpp:30:18:30:20 | tmp | swap2.cpp:30:13:30:16 | ref arg this | TAINT | | swap2.cpp:31:21:31:24 | this | swap2.cpp:31:20:31:24 | * ... | TAINT | | swap2.cpp:34:16:34:24 | this | swap2.cpp:36:13:36:16 | this | | | swap2.cpp:34:34:34:37 | that | swap2.cpp:34:34:34:37 | that | | | swap2.cpp:34:34:34:37 | that | swap2.cpp:36:18:36:21 | that | | | swap2.cpp:36:13:36:16 | ref arg this | swap2.cpp:37:21:37:24 | this | | -| swap2.cpp:36:13:36:16 | this | swap2.cpp:36:18:36:21 | ref arg that | TAINT | | swap2.cpp:36:13:36:16 | this | swap2.cpp:37:21:37:24 | this | | | swap2.cpp:36:18:36:21 | ref arg that | swap2.cpp:34:34:34:37 | that | | -| swap2.cpp:36:18:36:21 | that | swap2.cpp:36:13:36:16 | ref arg this | TAINT | | swap2.cpp:37:21:37:24 | this | swap2.cpp:37:20:37:24 | * ... | TAINT | | swap2.cpp:40:16:40:26 | this | swap2.cpp:43:13:43:16 | this | | | swap2.cpp:40:41:40:44 | that | swap2.cpp:42:24:42:27 | that | | | swap2.cpp:42:23:42:27 | call to Class | swap2.cpp:43:18:43:20 | tmp | | | swap2.cpp:42:24:42:27 | that | swap2.cpp:42:23:42:27 | call to Class | | | swap2.cpp:43:13:43:16 | ref arg this | swap2.cpp:44:21:44:24 | this | | -| swap2.cpp:43:13:43:16 | this | swap2.cpp:43:18:43:20 | ref arg tmp | TAINT | | swap2.cpp:43:13:43:16 | this | swap2.cpp:44:21:44:24 | this | | -| swap2.cpp:43:18:43:20 | tmp | swap2.cpp:43:13:43:16 | ref arg this | TAINT | | swap2.cpp:44:21:44:24 | this | swap2.cpp:44:20:44:24 | * ... | TAINT | | swap2.cpp:47:16:47:26 | this | swap2.cpp:49:13:49:16 | this | | | swap2.cpp:47:36:47:39 | that | swap2.cpp:47:36:47:39 | that | | | swap2.cpp:47:36:47:39 | that | swap2.cpp:49:18:49:21 | that | | | swap2.cpp:49:13:49:16 | ref arg this | swap2.cpp:50:21:50:24 | this | | -| swap2.cpp:49:13:49:16 | this | swap2.cpp:49:18:49:21 | ref arg that | TAINT | | swap2.cpp:49:13:49:16 | this | swap2.cpp:50:21:50:24 | this | | | swap2.cpp:49:18:49:21 | ref arg that | swap2.cpp:47:36:47:39 | that | | -| swap2.cpp:49:18:49:21 | that | swap2.cpp:49:13:49:16 | ref arg this | TAINT | | swap2.cpp:50:21:50:24 | this | swap2.cpp:50:20:50:24 | * ... | TAINT | | swap2.cpp:53:14:53:17 | this | swap2.cpp:56:18:56:22 | this | | | swap2.cpp:53:26:53:29 | that | swap2.cpp:53:26:53:29 | that | | @@ -5647,9 +5597,7 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | swap2.cpp:61:32:61:32 | y | swap2.cpp:61:32:61:32 | y | | | swap2.cpp:61:32:61:32 | y | swap2.cpp:63:16:63:16 | y | | | swap2.cpp:63:9:63:9 | ref arg x | swap2.cpp:61:22:61:22 | x | | -| swap2.cpp:63:9:63:9 | x | swap2.cpp:63:16:63:16 | ref arg y | TAINT | | swap2.cpp:63:16:63:16 | ref arg y | swap2.cpp:61:32:61:32 | y | | -| swap2.cpp:63:16:63:16 | y | swap2.cpp:63:9:63:9 | ref arg x | TAINT | | swap2.cpp:69:23:69:23 | x | swap2.cpp:71:5:71:5 | x | | | swap2.cpp:69:23:69:23 | x | swap2.cpp:73:10:73:10 | x | | | swap2.cpp:69:23:69:23 | x | swap2.cpp:76:9:76:9 | x | | @@ -6597,38 +6545,45 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | taint.cpp:729:27:729:32 | endptr | taint.cpp:729:26:729:32 | & ... | | | taint.cpp:731:7:731:12 | ref arg endptr | taint.cpp:732:8:732:13 | endptr | | | taint.cpp:732:8:732:13 | endptr | taint.cpp:732:7:732:13 | * ... | TAINT | -| taint.cpp:738:17:738:31 | call to indirect_source | taint.cpp:739:30:739:35 | source | | -| taint.cpp:739:22:739:28 | call to realloc | taint.cpp:740:7:740:10 | dest | | -| taint.cpp:739:30:739:35 | source | taint.cpp:739:22:739:28 | call to realloc | TAINT | -| taint.cpp:743:40:743:45 | buffer | taint.cpp:744:5:744:10 | buffer | | -| taint.cpp:743:40:743:45 | buffer | taint.cpp:745:27:745:32 | buffer | | -| taint.cpp:744:4:744:10 | * ... | taint.cpp:744:3:744:10 | * ... | TAINT | -| taint.cpp:744:5:744:10 | buffer | taint.cpp:744:4:744:10 | * ... | TAINT | -| taint.cpp:744:14:744:19 | call to source | taint.cpp:744:3:744:21 | ... = ... | | -| taint.cpp:745:19:745:25 | call to realloc | taint.cpp:743:40:743:45 | buffer | | -| taint.cpp:745:19:745:25 | call to realloc | taint.cpp:745:3:745:37 | ... = ... | | -| taint.cpp:745:19:745:25 | call to realloc | taint.cpp:746:10:746:15 | buffer | | -| taint.cpp:745:27:745:32 | buffer | taint.cpp:745:19:745:25 | call to realloc | TAINT | -| taint.cpp:746:9:746:15 | * ... | taint.cpp:746:8:746:15 | * ... | TAINT | -| taint.cpp:746:10:746:15 | buffer | taint.cpp:746:9:746:15 | * ... | TAINT | -| taint.cpp:751:31:751:34 | path | taint.cpp:751:31:751:34 | path | | -| taint.cpp:751:31:751:34 | path | taint.cpp:752:10:752:13 | path | | -| taint.cpp:751:31:751:34 | path | taint.cpp:753:10:753:13 | path | | -| taint.cpp:751:43:751:46 | data | taint.cpp:751:43:751:46 | data | | -| taint.cpp:751:43:751:46 | data | taint.cpp:753:22:753:25 | data | | -| taint.cpp:752:10:752:13 | ref arg path | taint.cpp:751:31:751:34 | path | | -| taint.cpp:752:10:752:13 | ref arg path | taint.cpp:753:10:753:13 | path | | -| taint.cpp:752:16:752:19 | %s | taint.cpp:752:10:752:13 | ref arg path | TAINT | -| taint.cpp:752:22:752:26 | abc | taint.cpp:752:10:752:13 | ref arg path | TAINT | -| taint.cpp:753:10:753:13 | ref arg path | taint.cpp:751:31:751:34 | path | | -| taint.cpp:753:16:753:19 | %s | taint.cpp:753:10:753:13 | ref arg path | TAINT | -| taint.cpp:753:22:753:25 | data | taint.cpp:753:10:753:13 | ref arg path | TAINT | -| taint.cpp:753:22:753:25 | ref arg data | taint.cpp:751:43:751:46 | data | | -| taint.cpp:757:7:757:10 | path | taint.cpp:758:21:758:24 | path | | -| taint.cpp:757:7:757:10 | path | taint.cpp:759:8:759:11 | path | | -| taint.cpp:758:21:758:24 | ref arg path | taint.cpp:759:8:759:11 | path | | -| taint.cpp:759:8:759:11 | path | taint.cpp:759:7:759:11 | * ... | | -| taint.cpp:769:37:769:42 | call to source | taint.cpp:770:7:770:9 | obj | | +| taint.cpp:739:17:739:31 | call to indirect_source | taint.cpp:740:30:740:35 | source | | +| taint.cpp:740:22:740:28 | call to realloc | taint.cpp:741:7:741:10 | dest | | +| taint.cpp:740:30:740:35 | source | taint.cpp:740:22:740:28 | call to realloc | TAINT | +| taint.cpp:744:40:744:45 | buffer | taint.cpp:745:5:745:10 | buffer | | +| taint.cpp:744:40:744:45 | buffer | taint.cpp:746:27:746:32 | buffer | | +| taint.cpp:745:4:745:10 | * ... | taint.cpp:745:3:745:10 | * ... | TAINT | +| taint.cpp:745:5:745:10 | buffer | taint.cpp:745:4:745:10 | * ... | TAINT | +| taint.cpp:745:14:745:19 | call to source | taint.cpp:745:3:745:21 | ... = ... | | +| taint.cpp:746:19:746:25 | call to realloc | taint.cpp:744:40:744:45 | buffer | | +| taint.cpp:746:19:746:25 | call to realloc | taint.cpp:746:3:746:37 | ... = ... | | +| taint.cpp:746:19:746:25 | call to realloc | taint.cpp:747:10:747:15 | buffer | | +| taint.cpp:746:27:746:32 | buffer | taint.cpp:746:19:746:25 | call to realloc | TAINT | +| taint.cpp:747:9:747:15 | * ... | taint.cpp:747:8:747:15 | * ... | TAINT | +| taint.cpp:747:10:747:15 | buffer | taint.cpp:747:9:747:15 | * ... | TAINT | +| taint.cpp:752:13:752:18 | call to malloc | taint.cpp:753:2:753:2 | a | | +| taint.cpp:752:13:752:18 | call to malloc | taint.cpp:754:22:754:22 | a | | +| taint.cpp:753:2:753:2 | a [post update] | taint.cpp:754:22:754:22 | a | | +| taint.cpp:753:2:753:16 | ... = ... | taint.cpp:753:5:753:5 | x [post update] | | +| taint.cpp:753:9:753:14 | call to source | taint.cpp:753:2:753:16 | ... = ... | | +| taint.cpp:754:14:754:20 | call to realloc | taint.cpp:755:7:755:8 | a2 | | +| taint.cpp:754:22:754:22 | a | taint.cpp:754:14:754:20 | call to realloc | TAINT | +| taint.cpp:760:31:760:34 | path | taint.cpp:760:31:760:34 | path | | +| taint.cpp:760:31:760:34 | path | taint.cpp:761:10:761:13 | path | | +| taint.cpp:760:31:760:34 | path | taint.cpp:762:10:762:13 | path | | +| taint.cpp:760:43:760:46 | data | taint.cpp:760:43:760:46 | data | | +| taint.cpp:760:43:760:46 | data | taint.cpp:762:22:762:25 | data | | +| taint.cpp:761:10:761:13 | ref arg path | taint.cpp:760:31:760:34 | path | | +| taint.cpp:761:10:761:13 | ref arg path | taint.cpp:762:10:762:13 | path | | +| taint.cpp:761:16:761:19 | %s | taint.cpp:761:10:761:13 | ref arg path | TAINT | +| taint.cpp:761:22:761:26 | abc | taint.cpp:761:10:761:13 | ref arg path | TAINT | +| taint.cpp:762:10:762:13 | ref arg path | taint.cpp:760:31:760:34 | path | | +| taint.cpp:762:16:762:19 | %s | taint.cpp:762:10:762:13 | ref arg path | TAINT | +| taint.cpp:762:22:762:25 | data | taint.cpp:762:10:762:13 | ref arg path | TAINT | +| taint.cpp:762:22:762:25 | ref arg data | taint.cpp:760:43:760:46 | data | | +| taint.cpp:766:7:766:10 | path | taint.cpp:767:21:767:24 | path | | +| taint.cpp:766:7:766:10 | path | taint.cpp:768:8:768:11 | path | | +| taint.cpp:767:21:767:24 | ref arg path | taint.cpp:768:8:768:11 | path | | +| taint.cpp:768:8:768:11 | path | taint.cpp:768:7:768:11 | * ... | | +| taint.cpp:778:37:778:42 | call to source | taint.cpp:779:7:779:9 | obj | | | vector.cpp:16:43:16:49 | source1 | vector.cpp:17:26:17:32 | source1 | | | vector.cpp:16:43:16:49 | source1 | vector.cpp:31:38:31:44 | source1 | | | vector.cpp:17:21:17:33 | call to vector | vector.cpp:19:14:19:14 | v | | @@ -7005,16 +6960,12 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | vector.cpp:112:7:112:8 | ref arg v4 | vector.cpp:121:1:121:1 | v4 | | | vector.cpp:114:2:114:3 | ref arg v1 | vector.cpp:117:7:117:8 | v1 | | | vector.cpp:114:2:114:3 | ref arg v1 | vector.cpp:121:1:121:1 | v1 | | -| vector.cpp:114:2:114:3 | v1 | vector.cpp:114:10:114:11 | ref arg v2 | TAINT | | vector.cpp:114:10:114:11 | ref arg v2 | vector.cpp:118:7:118:8 | v2 | | | vector.cpp:114:10:114:11 | ref arg v2 | vector.cpp:121:1:121:1 | v2 | | -| vector.cpp:114:10:114:11 | v2 | vector.cpp:114:2:114:3 | ref arg v1 | TAINT | | vector.cpp:115:2:115:3 | ref arg v3 | vector.cpp:119:7:119:8 | v3 | | | vector.cpp:115:2:115:3 | ref arg v3 | vector.cpp:121:1:121:1 | v3 | | -| vector.cpp:115:2:115:3 | v3 | vector.cpp:115:10:115:11 | ref arg v4 | TAINT | | vector.cpp:115:10:115:11 | ref arg v4 | vector.cpp:120:7:120:8 | v4 | | | vector.cpp:115:10:115:11 | ref arg v4 | vector.cpp:121:1:121:1 | v4 | | -| vector.cpp:115:10:115:11 | v4 | vector.cpp:115:2:115:3 | ref arg v3 | TAINT | | vector.cpp:117:7:117:8 | ref arg v1 | vector.cpp:121:1:121:1 | v1 | | | vector.cpp:118:7:118:8 | ref arg v2 | vector.cpp:121:1:121:1 | v2 | | | vector.cpp:119:7:119:8 | ref arg v3 | vector.cpp:121:1:121:1 | v3 | | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp index 555f39779bf..0c6bcedc88b 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp @@ -68,8 +68,8 @@ void test_pair() i.swap(j); k.swap(l); sink(i.first); - sink(i.second); // $ MISSING: ast,ir - sink(i); // $ ast,ir + sink(i.second); // $ ir, MISSING: ast + sink(i); // $ ir sink(j.first); sink(j.second); // $ SPURIOUS: ast sink(j); // $ SPURIOUS: ast @@ -77,8 +77,8 @@ void test_pair() sink(k.second); // $ SPURIOUS: ast sink(k); // $ SPURIOUS: ast sink(l.first); - sink(l.second); // $ MISSING: ast,ir - sink(l); // $ ast,ir + sink(l.second); // $ ir, MISSING: ast + sink(l); // $ ir sink(make_pair("123", "456")); sink(make_pair("123", "456").first); @@ -197,8 +197,8 @@ void test_map() m15.swap(m16); m17.swap(m18); sink(m15); // $ SPURIOUS: ast - sink(m16); // $ ast,ir - sink(m17); // $ ast,ir + sink(m16); // $ ir + sink(m17); // $ ir sink(m18); // $ SPURIOUS: ast // merge @@ -346,8 +346,8 @@ void test_unordered_map() m15.swap(m16); m17.swap(m18); sink(m15); // $ SPURIOUS: ast - sink(m16); // $ ast,ir - sink(m17); // $ ast,ir + sink(m16); // $ ir + sink(m17); // $ ir sink(m18); // $ SPURIOUS: ast // merge diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/set.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/set.cpp index 7c906fb72d2..f2838ac6a82 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/set.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/set.cpp @@ -82,8 +82,8 @@ void test_set() s12.swap(s13); s14.swap(s15); sink(s12); // $ SPURIOUS: ast - sink(s13); // $ ast,ir - sink(s14); // $ ast,ir + sink(s13); // $ ir + sink(s14); // $ ir sink(s15); // $ SPURIOUS: ast // merge @@ -194,8 +194,8 @@ void test_unordered_set() s12.swap(s13); s14.swap(s15); sink(s12); // $ SPURIOUS: ast - sink(s13); // $ ast,ir - sink(s14); // $ ast,ir + sink(s13); // $ ir + sink(s14); // $ ir sink(s15); // $ SPURIOUS: ast // merge diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/string.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/string.cpp index dc92a0664be..4da4d3f3fe7 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/string.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/string.cpp @@ -279,9 +279,9 @@ void test_string_swap() { s1.swap(s2); s4.swap(s3); - sink(s1); // $ ast,ir + sink(s1); // $ ir sink(s2); // $ SPURIOUS: ast - sink(s3); // $ ast,ir + sink(s3); // $ ir sink(s4); // $ SPURIOUS: ast } diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/stringstream.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/stringstream.cpp index ca17fb4b3e7..7147e313544 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/stringstream.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/stringstream.cpp @@ -117,9 +117,9 @@ void test_stringstream_swap() ss1.swap(ss2); ss4.swap(ss3); - sink(ss1); // $ ast,ir + sink(ss1); // $ ir sink(ss2); // $ SPURIOUS: ast - sink(ss3); // $ ast,ir + sink(ss3); // $ ir sink(ss4); // $ SPURIOUS: ast } diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index 8e6199d35bd..220265a3bb1 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -732,6 +732,7 @@ void test_strtol(char *source) { sink(*endptr); // $ ast,ir } +void *malloc(size_t); void *realloc(void *, size_t); void test_realloc() { @@ -746,6 +747,14 @@ void test_realloc_2_indirections(int **buffer) { sink(**buffer); // $ ir MISSING: ast } +void test_realloc_struct_field() { + struct A { int x; }; + A* a = (A*)malloc(sizeof(A)); + a->x = source(); + A* a2 = (A*)realloc(a, sizeof(A)); + sink(a2->x); // $ ir MISSING: ast +} + int sprintf(char *, const char *, ...); void call_sprintf_twice(char* path, char* data) { diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp index 7f4d3f22d8e..31c84367d4b 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp @@ -115,8 +115,8 @@ void test_vector_swap() { v3.swap(v4); sink(v1); - sink(v2); // $ MISSING:ir ast - sink(v3); // $ MISSING:ir ast + sink(v2); // $ ir MISSING: ast + sink(v3); // $ ir MISSING: ast sink(v4); } diff --git a/cpp/ql/test/library-tests/includes/include_next/includes.expected b/cpp/ql/test/library-tests/includes/include_next/includes.expected index ce4e44acc75..759933be982 100644 --- a/cpp/ql/test/library-tests/includes/include_next/includes.expected +++ b/cpp/ql/test/library-tests/includes/include_next/includes.expected @@ -1,4 +1,3 @@ -| a/test.h:2:1:2:22 | #include_next | a/test.h:0:0:0:0 | a/test.h | | a/test.h:2:1:2:22 | #include_next | b/test.h:0:0:0:0 | b/test.h | | b/loop.h:2:1:2:22 | #include_next | a/test.h:0:0:0:0 | a/test.h | | b/test.h:4:1:4:17 | #include "loop.h" | b/loop.h:0:0:0:0 | b/loop.h | diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 4c912a36756..986ce6dd158 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -4180,7 +4180,7 @@ destructors_for_temps.cpp: # 103| ValueCategory = prvalue # 104| getStmt(1): [ReturnStmt] return ... generic.c: -# 1| [TopLevelFunction] void c11_generic_test(unsigned int, int) +# 1| [TopLevelFunction] void c11_generic_test_with_load(unsigned int, int) # 1| : # 1| getParameter(0): [Parameter] x # 1| Type = [IntType] unsigned int @@ -4207,12 +4207,150 @@ generic.c: # 3| Type = [IntType] int # 3| Value = [Literal] 1 # 3| ValueCategory = prvalue +# 3| getLeftOperand().getFullyConverted(): [C11GenericExpr] _Generic +# 3| Type = [IntType] unsigned int +# 3| ValueCategory = prvalue(load) +# 3| getControllingExpr(): [VariableAccess] r +# 3| Type = [IntType] unsigned int +# 3| ValueCategory = prvalue(load) +# 3| getAssociationType(0): [TypeName] unsigned int +# 3| Type = [IntType] unsigned int +# 3| ValueCategory = prvalue +# 3| getAssociationExpr(0): [ReuseExpr] reuse of x +# 3| Type = [IntType] unsigned int +# 3| ValueCategory = lvalue +# 3| getAssociationType(1): [TypeName] int +# 3| Type = [IntType] int +# 3| ValueCategory = prvalue +# 3| getAssociationExpr(1): [VariableAccess] y +# 3| Type = [IntType] int +# 3| ValueCategory = lvalue # 3| getRightOperand().getFullyConverted(): [CStyleCast] (unsigned int)... # 3| Conversion = [IntegralConversion] integral conversion # 3| Type = [IntType] unsigned int # 3| Value = [CStyleCast] 1 # 3| ValueCategory = prvalue # 4| getStmt(2): [ReturnStmt] return ... +# 12| [TopLevelFunction] char const* c11_generic_test_with_constant_and_macro() +# 12| : +# 13| getEntryPoint(): [BlockStmt] { ... } +# 14| getStmt(0): [DeclStmt] declaration +# 14| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 14| Type = [IntType] int +# 16| getStmt(1): [ReturnStmt] return ... +# 16| getExpr(): int +# 16| Type = [ArrayType] char[4] +# 16| Value = [StringLiteral] "int" +# 16| ValueCategory = lvalue +# 16| getExpr().getFullyConverted(): [CStyleCast] (const char *)... +# 16| Conversion = [PointerConversion] pointer conversion +# 16| Type = [PointerType] const char * +# 16| ValueCategory = prvalue +# 16| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 16| Type = [CharPointerType] char * +# 16| ValueCategory = prvalue +# 16| getExpr(): [C11GenericExpr] _Generic +# 16| Type = [ArrayType] char[4] +# 16| Value = [C11GenericExpr] int +# 16| ValueCategory = lvalue +# 16| getControllingExpr(): [VariableAccess] i +# 16| Type = [IntType] int +# 16| ValueCategory = prvalue(load) +# 16| getAssociationType(0): [TypeName] int +# 16| Type = [IntType] int +# 16| ValueCategory = prvalue +# 16| getAssociationExpr(0): [ReuseExpr] reuse of int +# 16| Type = [ArrayType] char[4] +# 16| ValueCategory = lvalue +# 16| getAssociationType(1): [TypeName] void +# 16| Type = [VoidType] void +# 16| ValueCategory = prvalue +# 16| getAssociationExpr(1): unknown +# 16| Type = [ArrayType] char[8] +# 16| Value = [StringLiteral] "unknown" +# 16| ValueCategory = lvalue +# 16| getControllingExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 16| Type = [IntType] int +# 16| ValueCategory = prvalue(load) +# 19| [TopLevelFunction] char const* c11_generic_test_with_constant_and_no_macro() +# 19| : +# 20| getEntryPoint(): [BlockStmt] { ... } +# 21| getStmt(0): [DeclStmt] declaration +# 21| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 21| Type = [IntType] int +# 23| getStmt(1): [ReturnStmt] return ... +# 23| getExpr(): int +# 23| Type = [ArrayType] char[4] +# 23| Value = [StringLiteral] "int" +# 23| ValueCategory = lvalue +# 23| getExpr().getFullyConverted(): [CStyleCast] (const char *)... +# 23| Conversion = [PointerConversion] pointer conversion +# 23| Type = [PointerType] const char * +# 23| ValueCategory = prvalue +# 23| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 23| Type = [CharPointerType] char * +# 23| ValueCategory = prvalue +# 23| getExpr(): [C11GenericExpr] _Generic +# 23| Type = [ArrayType] char[4] +# 23| Value = [C11GenericExpr] int +# 23| ValueCategory = lvalue +# 23| getControllingExpr(): [VariableAccess] i +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue(load) +# 23| getAssociationType(0): [TypeName] int +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue +# 23| getAssociationExpr(0): [ReuseExpr] reuse of int +# 23| Type = [ArrayType] char[4] +# 23| ValueCategory = lvalue +# 23| getAssociationType(1): [TypeName] void +# 23| Type = [VoidType] void +# 23| ValueCategory = prvalue +# 23| getAssociationExpr(1): unknown +# 23| Type = [ArrayType] char[8] +# 23| Value = [StringLiteral] "unknown" +# 23| ValueCategory = lvalue +# 26| [TopLevelFunction] void c11_generic_test_test_with_cast(int) +# 26| : +# 26| getParameter(0): [Parameter] y +# 26| Type = [IntType] int +# 26| getEntryPoint(): [BlockStmt] { ... } +# 27| getStmt(0): [DeclStmt] declaration +# 27| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 27| Type = [IntType] unsigned int +# 28| getStmt(1): [ExprStmt] ExprStmt +# 28| getExpr(): [AssignExpr] ... = ... +# 28| Type = [IntType] unsigned int +# 28| ValueCategory = prvalue +# 28| getLValue(): [VariableAccess] r +# 28| Type = [IntType] unsigned int +# 28| ValueCategory = lvalue +# 28| getRValue(): [VariableAccess] y +# 28| Type = [IntType] int +# 28| ValueCategory = prvalue(load) +# 28| getRValue().getFullyConverted(): [C11GenericExpr] _Generic +# 28| Type = [IntType] unsigned int +# 28| ValueCategory = prvalue +# 28| getControllingExpr(): [VariableAccess] r +# 28| Type = [IntType] unsigned int +# 28| ValueCategory = prvalue(load) +# 28| getAssociationType(0): [TypeName] unsigned int +# 28| Type = [IntType] unsigned int +# 28| ValueCategory = prvalue +# 28| getAssociationExpr(0): [ReuseExpr] reuse of y +# 28| Type = [IntType] int +# 28| ValueCategory = prvalue +# 28| getAssociationType(1): [TypeName] int +# 28| Type = [IntType] int +# 28| ValueCategory = prvalue +# 28| getAssociationExpr(1): [VariableAccess] y +# 28| Type = [IntType] int +# 28| ValueCategory = lvalue +# 28| getExpr(): [CStyleCast] (unsigned int)... +# 28| Conversion = [IntegralConversion] integral conversion +# 28| Type = [IntType] unsigned int +# 28| ValueCategory = prvalue +# 29| getStmt(2): [ReturnStmt] return ... ir.c: # 5| [TopLevelFunction] int getX(MyCoords*) # 5| : @@ -4336,6 +4474,139 @@ ir.c: # 29| Type = [IntType] int # 29| Value = [Literal] 0 # 29| ValueCategory = prvalue +# 32| [TopLevelFunction] void unexplained_loop_regression() +# 32| : +# 33| getEntryPoint(): [BlockStmt] { ... } +# 34| getStmt(0): [MicrosoftTryExceptStmt] __try { ... } __except( ... ) { ... } +# 35| getStmt(): [BlockStmt] { ... } +# 36| getStmt(0): [ExprStmt] ExprStmt +# 36| getExpr(): [FunctionCall] call to ExRaiseAccessViolation +# 36| Type = [VoidType] void +# 36| ValueCategory = prvalue +# 36| getArgument(0): [Literal] 0 +# 36| Type = [IntType] int +# 36| Value = [Literal] 0 +# 36| ValueCategory = prvalue +# 38| getCondition(): [Literal] 1 +# 38| Type = [IntType] int +# 38| Value = [Literal] 1 +# 38| ValueCategory = prvalue +# 39| getExcept(): [BlockStmt] { ... } +# 40| getStmt(0): [ExprStmt] ExprStmt +# 40| getExpr(): [FunctionCall] call to ExRaiseAccessViolation +# 40| Type = [VoidType] void +# 40| ValueCategory = prvalue +# 40| getArgument(0): [Literal] 1 +# 40| Type = [IntType] int +# 40| Value = [Literal] 1 +# 40| ValueCategory = prvalue +# 42| getStmt(1): [ReturnStmt] return ... +# 44| [TopLevelFunction] void try_with_finally() +# 44| : +# 45| getEntryPoint(): [BlockStmt] { ... } +# 46| getStmt(0): [DeclStmt] declaration +# 46| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 46| Type = [IntType] int +# 46| getVariable().getInitializer(): [Initializer] initializer for x +# 46| getExpr(): [Literal] 0 +# 46| Type = [IntType] int +# 46| Value = [Literal] 0 +# 46| ValueCategory = prvalue +# 47| getStmt(1): [MicrosoftTryFinallyStmt] __try { ... } __finally { ... } +# 48| getStmt(): [BlockStmt] { ... } +# 49| getStmt(0): [ExprStmt] ExprStmt +# 49| getExpr(): [AssignExpr] ... = ... +# 49| Type = [IntType] int +# 49| ValueCategory = prvalue +# 49| getLValue(): [VariableAccess] x +# 49| Type = [IntType] int +# 49| ValueCategory = lvalue +# 49| getRValue(): [Literal] 1 +# 49| Type = [IntType] int +# 49| Value = [Literal] 1 +# 49| ValueCategory = prvalue +# 52| getFinally(): [BlockStmt] { ... } +# 53| getStmt(0): [ExprStmt] ExprStmt +# 53| getExpr(): [AssignExpr] ... = ... +# 53| Type = [IntType] int +# 53| ValueCategory = prvalue +# 53| getLValue(): [VariableAccess] x +# 53| Type = [IntType] int +# 53| ValueCategory = lvalue +# 53| getRValue(): [Literal] 2 +# 53| Type = [IntType] int +# 53| Value = [Literal] 2 +# 53| ValueCategory = prvalue +# 55| getStmt(2): [ReturnStmt] return ... +# 57| [TopLevelFunction] void throw_in_try_with_finally() +# 57| : +# 58| getEntryPoint(): [BlockStmt] { ... } +# 59| getStmt(0): [DeclStmt] declaration +# 59| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 59| Type = [IntType] int +# 59| getVariable().getInitializer(): [Initializer] initializer for x +# 59| getExpr(): [Literal] 0 +# 59| Type = [IntType] int +# 59| Value = [Literal] 0 +# 59| ValueCategory = prvalue +# 60| getStmt(1): [MicrosoftTryFinallyStmt] __try { ... } __finally { ... } +# 61| getStmt(): [BlockStmt] { ... } +# 62| getStmt(0): [ExprStmt] ExprStmt +# 62| getExpr(): [FunctionCall] call to ExRaiseAccessViolation +# 62| Type = [VoidType] void +# 62| ValueCategory = prvalue +# 62| getArgument(0): [Literal] 0 +# 62| Type = [IntType] int +# 62| Value = [Literal] 0 +# 62| ValueCategory = prvalue +# 65| getFinally(): [BlockStmt] { ... } +# 66| getStmt(0): [ExprStmt] ExprStmt +# 66| getExpr(): [AssignExpr] ... = ... +# 66| Type = [IntType] int +# 66| ValueCategory = prvalue +# 66| getLValue(): [VariableAccess] x +# 66| Type = [IntType] int +# 66| ValueCategory = lvalue +# 66| getRValue(): [Literal] 1 +# 66| Type = [IntType] int +# 66| Value = [Literal] 1 +# 66| ValueCategory = prvalue +# 68| getStmt(2): [ReturnStmt] return ... +# 70| [TopLevelFunction] void throw_in_try_with_throw_in_finally() +# 70| : +# 71| getEntryPoint(): [BlockStmt] { ... } +# 72| getStmt(0): [MicrosoftTryFinallyStmt] __try { ... } __finally { ... } +# 72| getStmt(): [BlockStmt] { ... } +# 73| getStmt(0): [ExprStmt] ExprStmt +# 73| getExpr(): [FunctionCall] call to ExRaiseAccessViolation +# 73| Type = [VoidType] void +# 73| ValueCategory = prvalue +# 73| getArgument(0): [Literal] 0 +# 73| Type = [IntType] int +# 73| Value = [Literal] 0 +# 73| ValueCategory = prvalue +# 75| getFinally(): [BlockStmt] { ... } +# 76| getStmt(0): [ExprStmt] ExprStmt +# 76| getExpr(): [FunctionCall] call to ExRaiseAccessViolation +# 76| Type = [VoidType] void +# 76| ValueCategory = prvalue +# 76| getArgument(0): [Literal] 0 +# 76| Type = [IntType] int +# 76| Value = [Literal] 0 +# 76| ValueCategory = prvalue +# 78| getStmt(1): [ReturnStmt] return ... +# 80| [TopLevelFunction] void raise_access_violation() +# 80| : +# 80| getEntryPoint(): [BlockStmt] { ... } +# 81| getStmt(0): [ExprStmt] ExprStmt +# 81| getExpr(): [FunctionCall] call to ExRaiseAccessViolation +# 81| Type = [VoidType] void +# 81| ValueCategory = prvalue +# 81| getArgument(0): [Literal] 1 +# 81| Type = [IntType] int +# 81| Value = [Literal] 1 +# 81| ValueCategory = prvalue +# 82| getStmt(1): [ReturnStmt] return ... ir.cpp: # 1| [TopLevelFunction] void Constants() # 1| : @@ -23294,142 +23565,142 @@ ir.cpp: # 2686| ValueCategory = prvalue # 2687| getStmt(1): [ReturnStmt] return ... many-defs-per-use.cpp: -# 17| [TopLevelFunction] void many_defs_per_use() -# 17| : -# 17| getEntryPoint(): [BlockStmt] { ... } -# 18| getStmt(0): [DoStmt] do (...) ... -# 20| getCondition(): [Literal] 0 -# 20| Type = [IntType] int -# 20| Value = [Literal] 0 -# 20| ValueCategory = prvalue -# 18| getStmt(): [BlockStmt] { ... } -# 19| getStmt(0): [DeclStmt] declaration -# 19| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0 -# 19| Type = [Struct] String -# 19| getVariable().getInitializer(): [Initializer] initializer for x0 -# 19| getExpr(): [ConstructorCall] call to String -# 19| Type = [VoidType] void -# 19| ValueCategory = prvalue -# 20| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 20| Type = [VoidType] void -# 20| ValueCategory = prvalue -# 20| getQualifier(): [VariableAccess] x0 -# 20| Type = [Struct] String -# 20| ValueCategory = lvalue -# 20| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 20| Conversion = [BoolConversion] conversion to bool -# 20| Type = [BoolType] bool -# 20| Value = [CStyleCast] 0 -# 20| ValueCategory = prvalue -# 21| getStmt(1): [DoStmt] do (...) ... -# 23| getCondition(): [Literal] 0 -# 23| Type = [IntType] int -# 23| Value = [Literal] 0 -# 23| ValueCategory = prvalue -# 21| getStmt(): [BlockStmt] { ... } -# 22| getStmt(0): [DeclStmt] declaration -# 22| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1 -# 22| Type = [Struct] String -# 22| getVariable().getInitializer(): [Initializer] initializer for x1 -# 22| getExpr(): [ConstructorCall] call to String -# 22| Type = [VoidType] void -# 22| ValueCategory = prvalue -# 23| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 23| Type = [VoidType] void -# 23| ValueCategory = prvalue -# 23| getQualifier(): [VariableAccess] x1 -# 23| Type = [Struct] String -# 23| ValueCategory = lvalue -# 23| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 23| Conversion = [BoolConversion] conversion to bool -# 23| Type = [BoolType] bool -# 23| Value = [CStyleCast] 0 -# 23| ValueCategory = prvalue -# 24| getStmt(2): [DoStmt] do (...) ... -# 26| getCondition(): [Literal] 0 -# 26| Type = [IntType] int -# 26| Value = [Literal] 0 -# 26| ValueCategory = prvalue -# 24| getStmt(): [BlockStmt] { ... } -# 25| getStmt(0): [DeclStmt] declaration -# 25| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x2 -# 25| Type = [Struct] String -# 25| getVariable().getInitializer(): [Initializer] initializer for x2 -# 25| getExpr(): [ConstructorCall] call to String -# 25| Type = [VoidType] void -# 25| ValueCategory = prvalue -# 26| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 26| Type = [VoidType] void -# 26| ValueCategory = prvalue -# 26| getQualifier(): [VariableAccess] x2 -# 26| Type = [Struct] String -# 26| ValueCategory = lvalue -# 26| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 26| Conversion = [BoolConversion] conversion to bool -# 26| Type = [BoolType] bool -# 26| Value = [CStyleCast] 0 -# 26| ValueCategory = prvalue -# 27| getStmt(3): [DoStmt] do (...) ... -# 29| getCondition(): [Literal] 0 -# 29| Type = [IntType] int -# 29| Value = [Literal] 0 -# 29| ValueCategory = prvalue -# 27| getStmt(): [BlockStmt] { ... } -# 28| getStmt(0): [DeclStmt] declaration -# 28| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x3 -# 28| Type = [Struct] String -# 28| getVariable().getInitializer(): [Initializer] initializer for x3 -# 28| getExpr(): [ConstructorCall] call to String -# 28| Type = [VoidType] void -# 28| ValueCategory = prvalue -# 29| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 29| Type = [VoidType] void -# 29| ValueCategory = prvalue -# 29| getQualifier(): [VariableAccess] x3 -# 29| Type = [Struct] String -# 29| ValueCategory = lvalue -# 29| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 29| Conversion = [BoolConversion] conversion to bool -# 29| Type = [BoolType] bool -# 29| Value = [CStyleCast] 0 -# 29| ValueCategory = prvalue -# 30| getStmt(4): [DoStmt] do (...) ... -# 32| getCondition(): [Literal] 0 -# 32| Type = [IntType] int -# 32| Value = [Literal] 0 -# 32| ValueCategory = prvalue -# 30| getStmt(): [BlockStmt] { ... } -# 31| getStmt(0): [DeclStmt] declaration -# 31| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x4 -# 31| Type = [Struct] String -# 31| getVariable().getInitializer(): [Initializer] initializer for x4 -# 31| getExpr(): [ConstructorCall] call to String -# 31| Type = [VoidType] void -# 31| ValueCategory = prvalue -# 32| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 32| Type = [VoidType] void -# 32| ValueCategory = prvalue -# 32| getQualifier(): [VariableAccess] x4 -# 32| Type = [Struct] String -# 32| ValueCategory = lvalue -# 32| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 32| Conversion = [BoolConversion] conversion to bool -# 32| Type = [BoolType] bool -# 32| Value = [CStyleCast] 0 -# 32| ValueCategory = prvalue -# 33| getStmt(5): [DoStmt] do (...) ... +# 34| [TopLevelFunction] void many_defs_per_use() +# 34| : +# 34| getEntryPoint(): [BlockStmt] { ... } +# 35| getStmt(0): [DoStmt] do (...) ... # 35| getCondition(): [Literal] 0 # 35| Type = [IntType] int # 35| Value = [Literal] 0 # 35| ValueCategory = prvalue -# 33| getStmt(): [BlockStmt] { ... } -# 34| getStmt(0): [DeclStmt] declaration -# 34| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x5 -# 34| Type = [Struct] String -# 34| getVariable().getInitializer(): [Initializer] initializer for x5 -# 34| getExpr(): [ConstructorCall] call to String -# 34| Type = [VoidType] void -# 34| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x0 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x0 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(2): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x2 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x2 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x2 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(3): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x3 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x3 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x3 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(4): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x4 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x4 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x4 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(5): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x5 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x5 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue # 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 35| Type = [VoidType] void # 35| ValueCategory = prvalue @@ -23441,24463 +23712,24463 @@ many-defs-per-use.cpp: # 35| Type = [BoolType] bool # 35| Value = [CStyleCast] 0 # 35| ValueCategory = prvalue -# 36| getStmt(6): [DoStmt] do (...) ... -# 38| getCondition(): [Literal] 0 -# 38| Type = [IntType] int -# 38| Value = [Literal] 0 -# 38| ValueCategory = prvalue -# 36| getStmt(): [BlockStmt] { ... } -# 37| getStmt(0): [DeclStmt] declaration -# 37| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x6 -# 37| Type = [Struct] String -# 37| getVariable().getInitializer(): [Initializer] initializer for x6 -# 37| getExpr(): [ConstructorCall] call to String -# 37| Type = [VoidType] void -# 37| ValueCategory = prvalue -# 38| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 38| Type = [VoidType] void -# 38| ValueCategory = prvalue -# 38| getQualifier(): [VariableAccess] x6 -# 38| Type = [Struct] String -# 38| ValueCategory = lvalue -# 38| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 38| Conversion = [BoolConversion] conversion to bool -# 38| Type = [BoolType] bool -# 38| Value = [CStyleCast] 0 -# 38| ValueCategory = prvalue -# 39| getStmt(7): [DoStmt] do (...) ... -# 41| getCondition(): [Literal] 0 -# 41| Type = [IntType] int -# 41| Value = [Literal] 0 -# 41| ValueCategory = prvalue -# 39| getStmt(): [BlockStmt] { ... } -# 40| getStmt(0): [DeclStmt] declaration -# 40| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x7 -# 40| Type = [Struct] String -# 40| getVariable().getInitializer(): [Initializer] initializer for x7 -# 40| getExpr(): [ConstructorCall] call to String -# 40| Type = [VoidType] void -# 40| ValueCategory = prvalue -# 41| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 41| Type = [VoidType] void -# 41| ValueCategory = prvalue -# 41| getQualifier(): [VariableAccess] x7 -# 41| Type = [Struct] String -# 41| ValueCategory = lvalue -# 41| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 41| Conversion = [BoolConversion] conversion to bool -# 41| Type = [BoolType] bool -# 41| Value = [CStyleCast] 0 -# 41| ValueCategory = prvalue -# 42| getStmt(8): [DoStmt] do (...) ... -# 44| getCondition(): [Literal] 0 -# 44| Type = [IntType] int -# 44| Value = [Literal] 0 -# 44| ValueCategory = prvalue -# 42| getStmt(): [BlockStmt] { ... } -# 43| getStmt(0): [DeclStmt] declaration -# 43| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x8 -# 43| Type = [Struct] String -# 43| getVariable().getInitializer(): [Initializer] initializer for x8 -# 43| getExpr(): [ConstructorCall] call to String -# 43| Type = [VoidType] void -# 43| ValueCategory = prvalue -# 44| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 44| Type = [VoidType] void -# 44| ValueCategory = prvalue -# 44| getQualifier(): [VariableAccess] x8 -# 44| Type = [Struct] String -# 44| ValueCategory = lvalue -# 44| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 44| Conversion = [BoolConversion] conversion to bool -# 44| Type = [BoolType] bool -# 44| Value = [CStyleCast] 0 -# 44| ValueCategory = prvalue -# 45| getStmt(9): [DoStmt] do (...) ... -# 47| getCondition(): [Literal] 0 -# 47| Type = [IntType] int -# 47| Value = [Literal] 0 -# 47| ValueCategory = prvalue -# 45| getStmt(): [BlockStmt] { ... } -# 46| getStmt(0): [DeclStmt] declaration -# 46| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x9 -# 46| Type = [Struct] String -# 46| getVariable().getInitializer(): [Initializer] initializer for x9 -# 46| getExpr(): [ConstructorCall] call to String -# 46| Type = [VoidType] void -# 46| ValueCategory = prvalue -# 47| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 47| Type = [VoidType] void -# 47| ValueCategory = prvalue -# 47| getQualifier(): [VariableAccess] x9 -# 47| Type = [Struct] String -# 47| ValueCategory = lvalue -# 47| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 47| Conversion = [BoolConversion] conversion to bool -# 47| Type = [BoolType] bool -# 47| Value = [CStyleCast] 0 -# 47| ValueCategory = prvalue -# 48| getStmt(10): [DoStmt] do (...) ... -# 50| getCondition(): [Literal] 0 -# 50| Type = [IntType] int -# 50| Value = [Literal] 0 -# 50| ValueCategory = prvalue -# 48| getStmt(): [BlockStmt] { ... } -# 49| getStmt(0): [DeclStmt] declaration -# 49| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x10 -# 49| Type = [Struct] String -# 49| getVariable().getInitializer(): [Initializer] initializer for x10 -# 49| getExpr(): [ConstructorCall] call to String -# 49| Type = [VoidType] void -# 49| ValueCategory = prvalue -# 50| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 50| Type = [VoidType] void -# 50| ValueCategory = prvalue -# 50| getQualifier(): [VariableAccess] x10 -# 50| Type = [Struct] String -# 50| ValueCategory = lvalue -# 50| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 50| Conversion = [BoolConversion] conversion to bool -# 50| Type = [BoolType] bool -# 50| Value = [CStyleCast] 0 -# 50| ValueCategory = prvalue -# 51| getStmt(11): [DoStmt] do (...) ... -# 53| getCondition(): [Literal] 0 -# 53| Type = [IntType] int -# 53| Value = [Literal] 0 -# 53| ValueCategory = prvalue -# 51| getStmt(): [BlockStmt] { ... } -# 52| getStmt(0): [DeclStmt] declaration -# 52| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x11 -# 52| Type = [Struct] String -# 52| getVariable().getInitializer(): [Initializer] initializer for x11 -# 52| getExpr(): [ConstructorCall] call to String -# 52| Type = [VoidType] void -# 52| ValueCategory = prvalue -# 53| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 53| Type = [VoidType] void -# 53| ValueCategory = prvalue -# 53| getQualifier(): [VariableAccess] x11 -# 53| Type = [Struct] String -# 53| ValueCategory = lvalue -# 53| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 53| Conversion = [BoolConversion] conversion to bool -# 53| Type = [BoolType] bool -# 53| Value = [CStyleCast] 0 -# 53| ValueCategory = prvalue -# 54| getStmt(12): [DoStmt] do (...) ... -# 56| getCondition(): [Literal] 0 -# 56| Type = [IntType] int -# 56| Value = [Literal] 0 -# 56| ValueCategory = prvalue -# 54| getStmt(): [BlockStmt] { ... } -# 55| getStmt(0): [DeclStmt] declaration -# 55| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x12 -# 55| Type = [Struct] String -# 55| getVariable().getInitializer(): [Initializer] initializer for x12 -# 55| getExpr(): [ConstructorCall] call to String -# 55| Type = [VoidType] void -# 55| ValueCategory = prvalue -# 56| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 56| Type = [VoidType] void -# 56| ValueCategory = prvalue -# 56| getQualifier(): [VariableAccess] x12 -# 56| Type = [Struct] String -# 56| ValueCategory = lvalue -# 56| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 56| Conversion = [BoolConversion] conversion to bool -# 56| Type = [BoolType] bool -# 56| Value = [CStyleCast] 0 -# 56| ValueCategory = prvalue -# 57| getStmt(13): [DoStmt] do (...) ... -# 59| getCondition(): [Literal] 0 -# 59| Type = [IntType] int -# 59| Value = [Literal] 0 -# 59| ValueCategory = prvalue -# 57| getStmt(): [BlockStmt] { ... } -# 58| getStmt(0): [DeclStmt] declaration -# 58| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x13 -# 58| Type = [Struct] String -# 58| getVariable().getInitializer(): [Initializer] initializer for x13 -# 58| getExpr(): [ConstructorCall] call to String -# 58| Type = [VoidType] void -# 58| ValueCategory = prvalue -# 59| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 59| Type = [VoidType] void -# 59| ValueCategory = prvalue -# 59| getQualifier(): [VariableAccess] x13 -# 59| Type = [Struct] String -# 59| ValueCategory = lvalue -# 59| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 59| Conversion = [BoolConversion] conversion to bool -# 59| Type = [BoolType] bool -# 59| Value = [CStyleCast] 0 -# 59| ValueCategory = prvalue -# 60| getStmt(14): [DoStmt] do (...) ... -# 62| getCondition(): [Literal] 0 -# 62| Type = [IntType] int -# 62| Value = [Literal] 0 -# 62| ValueCategory = prvalue -# 60| getStmt(): [BlockStmt] { ... } -# 61| getStmt(0): [DeclStmt] declaration -# 61| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x14 -# 61| Type = [Struct] String -# 61| getVariable().getInitializer(): [Initializer] initializer for x14 -# 61| getExpr(): [ConstructorCall] call to String -# 61| Type = [VoidType] void -# 61| ValueCategory = prvalue -# 62| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 62| Type = [VoidType] void -# 62| ValueCategory = prvalue -# 62| getQualifier(): [VariableAccess] x14 -# 62| Type = [Struct] String -# 62| ValueCategory = lvalue -# 62| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 62| Conversion = [BoolConversion] conversion to bool -# 62| Type = [BoolType] bool -# 62| Value = [CStyleCast] 0 -# 62| ValueCategory = prvalue -# 63| getStmt(15): [DoStmt] do (...) ... -# 65| getCondition(): [Literal] 0 -# 65| Type = [IntType] int -# 65| Value = [Literal] 0 -# 65| ValueCategory = prvalue -# 63| getStmt(): [BlockStmt] { ... } -# 64| getStmt(0): [DeclStmt] declaration -# 64| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x15 -# 64| Type = [Struct] String -# 64| getVariable().getInitializer(): [Initializer] initializer for x15 -# 64| getExpr(): [ConstructorCall] call to String -# 64| Type = [VoidType] void -# 64| ValueCategory = prvalue -# 65| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 65| Type = [VoidType] void -# 65| ValueCategory = prvalue -# 65| getQualifier(): [VariableAccess] x15 -# 65| Type = [Struct] String -# 65| ValueCategory = lvalue -# 65| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 65| Conversion = [BoolConversion] conversion to bool -# 65| Type = [BoolType] bool -# 65| Value = [CStyleCast] 0 -# 65| ValueCategory = prvalue -# 66| getStmt(16): [DoStmt] do (...) ... -# 68| getCondition(): [Literal] 0 -# 68| Type = [IntType] int -# 68| Value = [Literal] 0 -# 68| ValueCategory = prvalue -# 66| getStmt(): [BlockStmt] { ... } -# 67| getStmt(0): [DeclStmt] declaration -# 67| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x16 -# 67| Type = [Struct] String -# 67| getVariable().getInitializer(): [Initializer] initializer for x16 -# 67| getExpr(): [ConstructorCall] call to String -# 67| Type = [VoidType] void -# 67| ValueCategory = prvalue -# 68| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 68| Type = [VoidType] void -# 68| ValueCategory = prvalue -# 68| getQualifier(): [VariableAccess] x16 -# 68| Type = [Struct] String -# 68| ValueCategory = lvalue -# 68| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 68| Conversion = [BoolConversion] conversion to bool -# 68| Type = [BoolType] bool -# 68| Value = [CStyleCast] 0 -# 68| ValueCategory = prvalue -# 69| getStmt(17): [DoStmt] do (...) ... -# 71| getCondition(): [Literal] 0 -# 71| Type = [IntType] int -# 71| Value = [Literal] 0 -# 71| ValueCategory = prvalue -# 69| getStmt(): [BlockStmt] { ... } -# 70| getStmt(0): [DeclStmt] declaration -# 70| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x17 -# 70| Type = [Struct] String -# 70| getVariable().getInitializer(): [Initializer] initializer for x17 -# 70| getExpr(): [ConstructorCall] call to String -# 70| Type = [VoidType] void -# 70| ValueCategory = prvalue -# 71| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 71| Type = [VoidType] void -# 71| ValueCategory = prvalue -# 71| getQualifier(): [VariableAccess] x17 -# 71| Type = [Struct] String -# 71| ValueCategory = lvalue -# 71| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 71| Conversion = [BoolConversion] conversion to bool -# 71| Type = [BoolType] bool -# 71| Value = [CStyleCast] 0 -# 71| ValueCategory = prvalue -# 72| getStmt(18): [DoStmt] do (...) ... -# 74| getCondition(): [Literal] 0 -# 74| Type = [IntType] int -# 74| Value = [Literal] 0 -# 74| ValueCategory = prvalue -# 72| getStmt(): [BlockStmt] { ... } -# 73| getStmt(0): [DeclStmt] declaration -# 73| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x18 -# 73| Type = [Struct] String -# 73| getVariable().getInitializer(): [Initializer] initializer for x18 -# 73| getExpr(): [ConstructorCall] call to String -# 73| Type = [VoidType] void -# 73| ValueCategory = prvalue -# 74| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 74| Type = [VoidType] void -# 74| ValueCategory = prvalue -# 74| getQualifier(): [VariableAccess] x18 -# 74| Type = [Struct] String -# 74| ValueCategory = lvalue -# 74| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 74| Conversion = [BoolConversion] conversion to bool -# 74| Type = [BoolType] bool -# 74| Value = [CStyleCast] 0 -# 74| ValueCategory = prvalue -# 75| getStmt(19): [DoStmt] do (...) ... -# 77| getCondition(): [Literal] 0 -# 77| Type = [IntType] int -# 77| Value = [Literal] 0 -# 77| ValueCategory = prvalue -# 75| getStmt(): [BlockStmt] { ... } -# 76| getStmt(0): [DeclStmt] declaration -# 76| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x19 -# 76| Type = [Struct] String -# 76| getVariable().getInitializer(): [Initializer] initializer for x19 -# 76| getExpr(): [ConstructorCall] call to String -# 76| Type = [VoidType] void -# 76| ValueCategory = prvalue -# 77| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 77| Type = [VoidType] void -# 77| ValueCategory = prvalue -# 77| getQualifier(): [VariableAccess] x19 -# 77| Type = [Struct] String -# 77| ValueCategory = lvalue -# 77| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 77| Conversion = [BoolConversion] conversion to bool -# 77| Type = [BoolType] bool -# 77| Value = [CStyleCast] 0 -# 77| ValueCategory = prvalue -# 78| getStmt(20): [DoStmt] do (...) ... -# 80| getCondition(): [Literal] 0 -# 80| Type = [IntType] int -# 80| Value = [Literal] 0 -# 80| ValueCategory = prvalue -# 78| getStmt(): [BlockStmt] { ... } -# 79| getStmt(0): [DeclStmt] declaration -# 79| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x20 -# 79| Type = [Struct] String -# 79| getVariable().getInitializer(): [Initializer] initializer for x20 -# 79| getExpr(): [ConstructorCall] call to String -# 79| Type = [VoidType] void -# 79| ValueCategory = prvalue -# 80| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 80| Type = [VoidType] void -# 80| ValueCategory = prvalue -# 80| getQualifier(): [VariableAccess] x20 -# 80| Type = [Struct] String -# 80| ValueCategory = lvalue -# 80| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 80| Conversion = [BoolConversion] conversion to bool -# 80| Type = [BoolType] bool -# 80| Value = [CStyleCast] 0 -# 80| ValueCategory = prvalue -# 81| getStmt(21): [DoStmt] do (...) ... -# 83| getCondition(): [Literal] 0 -# 83| Type = [IntType] int -# 83| Value = [Literal] 0 -# 83| ValueCategory = prvalue -# 81| getStmt(): [BlockStmt] { ... } -# 82| getStmt(0): [DeclStmt] declaration -# 82| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x21 -# 82| Type = [Struct] String -# 82| getVariable().getInitializer(): [Initializer] initializer for x21 -# 82| getExpr(): [ConstructorCall] call to String -# 82| Type = [VoidType] void -# 82| ValueCategory = prvalue -# 83| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 83| Type = [VoidType] void -# 83| ValueCategory = prvalue -# 83| getQualifier(): [VariableAccess] x21 -# 83| Type = [Struct] String -# 83| ValueCategory = lvalue -# 83| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 83| Conversion = [BoolConversion] conversion to bool -# 83| Type = [BoolType] bool -# 83| Value = [CStyleCast] 0 -# 83| ValueCategory = prvalue -# 84| getStmt(22): [DoStmt] do (...) ... -# 86| getCondition(): [Literal] 0 -# 86| Type = [IntType] int -# 86| Value = [Literal] 0 -# 86| ValueCategory = prvalue -# 84| getStmt(): [BlockStmt] { ... } -# 85| getStmt(0): [DeclStmt] declaration -# 85| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x22 -# 85| Type = [Struct] String -# 85| getVariable().getInitializer(): [Initializer] initializer for x22 -# 85| getExpr(): [ConstructorCall] call to String -# 85| Type = [VoidType] void -# 85| ValueCategory = prvalue -# 86| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 86| Type = [VoidType] void -# 86| ValueCategory = prvalue -# 86| getQualifier(): [VariableAccess] x22 -# 86| Type = [Struct] String -# 86| ValueCategory = lvalue -# 86| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 86| Conversion = [BoolConversion] conversion to bool -# 86| Type = [BoolType] bool -# 86| Value = [CStyleCast] 0 -# 86| ValueCategory = prvalue -# 87| getStmt(23): [DoStmt] do (...) ... -# 89| getCondition(): [Literal] 0 -# 89| Type = [IntType] int -# 89| Value = [Literal] 0 -# 89| ValueCategory = prvalue -# 87| getStmt(): [BlockStmt] { ... } -# 88| getStmt(0): [DeclStmt] declaration -# 88| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x23 -# 88| Type = [Struct] String -# 88| getVariable().getInitializer(): [Initializer] initializer for x23 -# 88| getExpr(): [ConstructorCall] call to String -# 88| Type = [VoidType] void -# 88| ValueCategory = prvalue -# 89| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 89| Type = [VoidType] void -# 89| ValueCategory = prvalue -# 89| getQualifier(): [VariableAccess] x23 -# 89| Type = [Struct] String -# 89| ValueCategory = lvalue -# 89| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 89| Conversion = [BoolConversion] conversion to bool -# 89| Type = [BoolType] bool -# 89| Value = [CStyleCast] 0 -# 89| ValueCategory = prvalue -# 90| getStmt(24): [DoStmt] do (...) ... -# 92| getCondition(): [Literal] 0 -# 92| Type = [IntType] int -# 92| Value = [Literal] 0 -# 92| ValueCategory = prvalue -# 90| getStmt(): [BlockStmt] { ... } -# 91| getStmt(0): [DeclStmt] declaration -# 91| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x24 -# 91| Type = [Struct] String -# 91| getVariable().getInitializer(): [Initializer] initializer for x24 -# 91| getExpr(): [ConstructorCall] call to String -# 91| Type = [VoidType] void -# 91| ValueCategory = prvalue -# 92| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 92| Type = [VoidType] void -# 92| ValueCategory = prvalue -# 92| getQualifier(): [VariableAccess] x24 -# 92| Type = [Struct] String -# 92| ValueCategory = lvalue -# 92| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 92| Conversion = [BoolConversion] conversion to bool -# 92| Type = [BoolType] bool -# 92| Value = [CStyleCast] 0 -# 92| ValueCategory = prvalue -# 93| getStmt(25): [DoStmt] do (...) ... -# 95| getCondition(): [Literal] 0 -# 95| Type = [IntType] int -# 95| Value = [Literal] 0 -# 95| ValueCategory = prvalue -# 93| getStmt(): [BlockStmt] { ... } -# 94| getStmt(0): [DeclStmt] declaration -# 94| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x25 -# 94| Type = [Struct] String -# 94| getVariable().getInitializer(): [Initializer] initializer for x25 -# 94| getExpr(): [ConstructorCall] call to String -# 94| Type = [VoidType] void -# 94| ValueCategory = prvalue -# 95| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 95| Type = [VoidType] void -# 95| ValueCategory = prvalue -# 95| getQualifier(): [VariableAccess] x25 -# 95| Type = [Struct] String -# 95| ValueCategory = lvalue -# 95| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 95| Conversion = [BoolConversion] conversion to bool -# 95| Type = [BoolType] bool -# 95| Value = [CStyleCast] 0 -# 95| ValueCategory = prvalue -# 96| getStmt(26): [DoStmt] do (...) ... -# 98| getCondition(): [Literal] 0 -# 98| Type = [IntType] int -# 98| Value = [Literal] 0 -# 98| ValueCategory = prvalue -# 96| getStmt(): [BlockStmt] { ... } -# 97| getStmt(0): [DeclStmt] declaration -# 97| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x26 -# 97| Type = [Struct] String -# 97| getVariable().getInitializer(): [Initializer] initializer for x26 -# 97| getExpr(): [ConstructorCall] call to String -# 97| Type = [VoidType] void -# 97| ValueCategory = prvalue -# 98| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 98| Type = [VoidType] void -# 98| ValueCategory = prvalue -# 98| getQualifier(): [VariableAccess] x26 -# 98| Type = [Struct] String -# 98| ValueCategory = lvalue -# 98| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 98| Conversion = [BoolConversion] conversion to bool -# 98| Type = [BoolType] bool -# 98| Value = [CStyleCast] 0 -# 98| ValueCategory = prvalue -# 99| getStmt(27): [DoStmt] do (...) ... -# 101| getCondition(): [Literal] 0 -# 101| Type = [IntType] int -# 101| Value = [Literal] 0 -# 101| ValueCategory = prvalue -# 99| getStmt(): [BlockStmt] { ... } -# 100| getStmt(0): [DeclStmt] declaration -# 100| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x27 -# 100| Type = [Struct] String -# 100| getVariable().getInitializer(): [Initializer] initializer for x27 -# 100| getExpr(): [ConstructorCall] call to String -# 100| Type = [VoidType] void -# 100| ValueCategory = prvalue -# 101| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 101| Type = [VoidType] void -# 101| ValueCategory = prvalue -# 101| getQualifier(): [VariableAccess] x27 -# 101| Type = [Struct] String -# 101| ValueCategory = lvalue -# 101| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 101| Conversion = [BoolConversion] conversion to bool -# 101| Type = [BoolType] bool -# 101| Value = [CStyleCast] 0 -# 101| ValueCategory = prvalue -# 102| getStmt(28): [DoStmt] do (...) ... -# 104| getCondition(): [Literal] 0 -# 104| Type = [IntType] int -# 104| Value = [Literal] 0 -# 104| ValueCategory = prvalue -# 102| getStmt(): [BlockStmt] { ... } -# 103| getStmt(0): [DeclStmt] declaration -# 103| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x28 -# 103| Type = [Struct] String -# 103| getVariable().getInitializer(): [Initializer] initializer for x28 -# 103| getExpr(): [ConstructorCall] call to String -# 103| Type = [VoidType] void -# 103| ValueCategory = prvalue -# 104| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 104| Type = [VoidType] void -# 104| ValueCategory = prvalue -# 104| getQualifier(): [VariableAccess] x28 -# 104| Type = [Struct] String -# 104| ValueCategory = lvalue -# 104| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 104| Conversion = [BoolConversion] conversion to bool -# 104| Type = [BoolType] bool -# 104| Value = [CStyleCast] 0 -# 104| ValueCategory = prvalue -# 105| getStmt(29): [DoStmt] do (...) ... -# 107| getCondition(): [Literal] 0 -# 107| Type = [IntType] int -# 107| Value = [Literal] 0 -# 107| ValueCategory = prvalue -# 105| getStmt(): [BlockStmt] { ... } -# 106| getStmt(0): [DeclStmt] declaration -# 106| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x29 -# 106| Type = [Struct] String -# 106| getVariable().getInitializer(): [Initializer] initializer for x29 -# 106| getExpr(): [ConstructorCall] call to String -# 106| Type = [VoidType] void -# 106| ValueCategory = prvalue -# 107| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 107| Type = [VoidType] void -# 107| ValueCategory = prvalue -# 107| getQualifier(): [VariableAccess] x29 -# 107| Type = [Struct] String -# 107| ValueCategory = lvalue -# 107| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 107| Conversion = [BoolConversion] conversion to bool -# 107| Type = [BoolType] bool -# 107| Value = [CStyleCast] 0 -# 107| ValueCategory = prvalue -# 108| getStmt(30): [DoStmt] do (...) ... -# 110| getCondition(): [Literal] 0 -# 110| Type = [IntType] int -# 110| Value = [Literal] 0 -# 110| ValueCategory = prvalue -# 108| getStmt(): [BlockStmt] { ... } -# 109| getStmt(0): [DeclStmt] declaration -# 109| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x30 -# 109| Type = [Struct] String -# 109| getVariable().getInitializer(): [Initializer] initializer for x30 -# 109| getExpr(): [ConstructorCall] call to String -# 109| Type = [VoidType] void -# 109| ValueCategory = prvalue -# 110| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 110| Type = [VoidType] void -# 110| ValueCategory = prvalue -# 110| getQualifier(): [VariableAccess] x30 -# 110| Type = [Struct] String -# 110| ValueCategory = lvalue -# 110| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 110| Conversion = [BoolConversion] conversion to bool -# 110| Type = [BoolType] bool -# 110| Value = [CStyleCast] 0 -# 110| ValueCategory = prvalue -# 111| getStmt(31): [DoStmt] do (...) ... -# 113| getCondition(): [Literal] 0 -# 113| Type = [IntType] int -# 113| Value = [Literal] 0 -# 113| ValueCategory = prvalue -# 111| getStmt(): [BlockStmt] { ... } -# 112| getStmt(0): [DeclStmt] declaration -# 112| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x31 -# 112| Type = [Struct] String -# 112| getVariable().getInitializer(): [Initializer] initializer for x31 -# 112| getExpr(): [ConstructorCall] call to String -# 112| Type = [VoidType] void -# 112| ValueCategory = prvalue -# 113| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 113| Type = [VoidType] void -# 113| ValueCategory = prvalue -# 113| getQualifier(): [VariableAccess] x31 -# 113| Type = [Struct] String -# 113| ValueCategory = lvalue -# 113| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 113| Conversion = [BoolConversion] conversion to bool -# 113| Type = [BoolType] bool -# 113| Value = [CStyleCast] 0 -# 113| ValueCategory = prvalue -# 114| getStmt(32): [DoStmt] do (...) ... -# 116| getCondition(): [Literal] 0 -# 116| Type = [IntType] int -# 116| Value = [Literal] 0 -# 116| ValueCategory = prvalue -# 114| getStmt(): [BlockStmt] { ... } -# 115| getStmt(0): [DeclStmt] declaration -# 115| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x32 -# 115| Type = [Struct] String -# 115| getVariable().getInitializer(): [Initializer] initializer for x32 -# 115| getExpr(): [ConstructorCall] call to String -# 115| Type = [VoidType] void -# 115| ValueCategory = prvalue -# 116| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 116| Type = [VoidType] void -# 116| ValueCategory = prvalue -# 116| getQualifier(): [VariableAccess] x32 -# 116| Type = [Struct] String -# 116| ValueCategory = lvalue -# 116| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 116| Conversion = [BoolConversion] conversion to bool -# 116| Type = [BoolType] bool -# 116| Value = [CStyleCast] 0 -# 116| ValueCategory = prvalue -# 117| getStmt(33): [DoStmt] do (...) ... -# 119| getCondition(): [Literal] 0 -# 119| Type = [IntType] int -# 119| Value = [Literal] 0 -# 119| ValueCategory = prvalue -# 117| getStmt(): [BlockStmt] { ... } -# 118| getStmt(0): [DeclStmt] declaration -# 118| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x33 -# 118| Type = [Struct] String -# 118| getVariable().getInitializer(): [Initializer] initializer for x33 -# 118| getExpr(): [ConstructorCall] call to String -# 118| Type = [VoidType] void -# 118| ValueCategory = prvalue -# 119| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 119| Type = [VoidType] void -# 119| ValueCategory = prvalue -# 119| getQualifier(): [VariableAccess] x33 -# 119| Type = [Struct] String -# 119| ValueCategory = lvalue -# 119| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 119| Conversion = [BoolConversion] conversion to bool -# 119| Type = [BoolType] bool -# 119| Value = [CStyleCast] 0 -# 119| ValueCategory = prvalue -# 120| getStmt(34): [DoStmt] do (...) ... -# 122| getCondition(): [Literal] 0 -# 122| Type = [IntType] int -# 122| Value = [Literal] 0 -# 122| ValueCategory = prvalue -# 120| getStmt(): [BlockStmt] { ... } -# 121| getStmt(0): [DeclStmt] declaration -# 121| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x34 -# 121| Type = [Struct] String -# 121| getVariable().getInitializer(): [Initializer] initializer for x34 -# 121| getExpr(): [ConstructorCall] call to String -# 121| Type = [VoidType] void -# 121| ValueCategory = prvalue -# 122| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 122| Type = [VoidType] void -# 122| ValueCategory = prvalue -# 122| getQualifier(): [VariableAccess] x34 -# 122| Type = [Struct] String -# 122| ValueCategory = lvalue -# 122| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 122| Conversion = [BoolConversion] conversion to bool -# 122| Type = [BoolType] bool -# 122| Value = [CStyleCast] 0 -# 122| ValueCategory = prvalue -# 123| getStmt(35): [DoStmt] do (...) ... -# 125| getCondition(): [Literal] 0 -# 125| Type = [IntType] int -# 125| Value = [Literal] 0 -# 125| ValueCategory = prvalue -# 123| getStmt(): [BlockStmt] { ... } -# 124| getStmt(0): [DeclStmt] declaration -# 124| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x35 -# 124| Type = [Struct] String -# 124| getVariable().getInitializer(): [Initializer] initializer for x35 -# 124| getExpr(): [ConstructorCall] call to String -# 124| Type = [VoidType] void -# 124| ValueCategory = prvalue -# 125| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 125| Type = [VoidType] void -# 125| ValueCategory = prvalue -# 125| getQualifier(): [VariableAccess] x35 -# 125| Type = [Struct] String -# 125| ValueCategory = lvalue -# 125| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 125| Conversion = [BoolConversion] conversion to bool -# 125| Type = [BoolType] bool -# 125| Value = [CStyleCast] 0 -# 125| ValueCategory = prvalue -# 126| getStmt(36): [DoStmt] do (...) ... -# 128| getCondition(): [Literal] 0 -# 128| Type = [IntType] int -# 128| Value = [Literal] 0 -# 128| ValueCategory = prvalue -# 126| getStmt(): [BlockStmt] { ... } -# 127| getStmt(0): [DeclStmt] declaration -# 127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x36 -# 127| Type = [Struct] String -# 127| getVariable().getInitializer(): [Initializer] initializer for x36 -# 127| getExpr(): [ConstructorCall] call to String -# 127| Type = [VoidType] void -# 127| ValueCategory = prvalue -# 128| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 128| Type = [VoidType] void -# 128| ValueCategory = prvalue -# 128| getQualifier(): [VariableAccess] x36 -# 128| Type = [Struct] String -# 128| ValueCategory = lvalue -# 128| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 128| Conversion = [BoolConversion] conversion to bool -# 128| Type = [BoolType] bool -# 128| Value = [CStyleCast] 0 -# 128| ValueCategory = prvalue -# 129| getStmt(37): [DoStmt] do (...) ... -# 131| getCondition(): [Literal] 0 -# 131| Type = [IntType] int -# 131| Value = [Literal] 0 -# 131| ValueCategory = prvalue -# 129| getStmt(): [BlockStmt] { ... } -# 130| getStmt(0): [DeclStmt] declaration -# 130| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x37 -# 130| Type = [Struct] String -# 130| getVariable().getInitializer(): [Initializer] initializer for x37 -# 130| getExpr(): [ConstructorCall] call to String -# 130| Type = [VoidType] void -# 130| ValueCategory = prvalue -# 131| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 131| Type = [VoidType] void -# 131| ValueCategory = prvalue -# 131| getQualifier(): [VariableAccess] x37 -# 131| Type = [Struct] String -# 131| ValueCategory = lvalue -# 131| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 131| Conversion = [BoolConversion] conversion to bool -# 131| Type = [BoolType] bool -# 131| Value = [CStyleCast] 0 -# 131| ValueCategory = prvalue -# 132| getStmt(38): [DoStmt] do (...) ... -# 134| getCondition(): [Literal] 0 -# 134| Type = [IntType] int -# 134| Value = [Literal] 0 -# 134| ValueCategory = prvalue -# 132| getStmt(): [BlockStmt] { ... } -# 133| getStmt(0): [DeclStmt] declaration -# 133| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x38 -# 133| Type = [Struct] String -# 133| getVariable().getInitializer(): [Initializer] initializer for x38 -# 133| getExpr(): [ConstructorCall] call to String -# 133| Type = [VoidType] void -# 133| ValueCategory = prvalue -# 134| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 134| Type = [VoidType] void -# 134| ValueCategory = prvalue -# 134| getQualifier(): [VariableAccess] x38 -# 134| Type = [Struct] String -# 134| ValueCategory = lvalue -# 134| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 134| Conversion = [BoolConversion] conversion to bool -# 134| Type = [BoolType] bool -# 134| Value = [CStyleCast] 0 -# 134| ValueCategory = prvalue -# 135| getStmt(39): [DoStmt] do (...) ... -# 137| getCondition(): [Literal] 0 -# 137| Type = [IntType] int -# 137| Value = [Literal] 0 -# 137| ValueCategory = prvalue -# 135| getStmt(): [BlockStmt] { ... } -# 136| getStmt(0): [DeclStmt] declaration -# 136| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x39 -# 136| Type = [Struct] String -# 136| getVariable().getInitializer(): [Initializer] initializer for x39 -# 136| getExpr(): [ConstructorCall] call to String -# 136| Type = [VoidType] void -# 136| ValueCategory = prvalue -# 137| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 137| Type = [VoidType] void -# 137| ValueCategory = prvalue -# 137| getQualifier(): [VariableAccess] x39 -# 137| Type = [Struct] String -# 137| ValueCategory = lvalue -# 137| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 137| Conversion = [BoolConversion] conversion to bool -# 137| Type = [BoolType] bool -# 137| Value = [CStyleCast] 0 -# 137| ValueCategory = prvalue -# 138| getStmt(40): [DoStmt] do (...) ... -# 140| getCondition(): [Literal] 0 -# 140| Type = [IntType] int -# 140| Value = [Literal] 0 -# 140| ValueCategory = prvalue -# 138| getStmt(): [BlockStmt] { ... } -# 139| getStmt(0): [DeclStmt] declaration -# 139| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x40 -# 139| Type = [Struct] String -# 139| getVariable().getInitializer(): [Initializer] initializer for x40 -# 139| getExpr(): [ConstructorCall] call to String -# 139| Type = [VoidType] void -# 139| ValueCategory = prvalue -# 140| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 140| Type = [VoidType] void -# 140| ValueCategory = prvalue -# 140| getQualifier(): [VariableAccess] x40 -# 140| Type = [Struct] String -# 140| ValueCategory = lvalue -# 140| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 140| Conversion = [BoolConversion] conversion to bool -# 140| Type = [BoolType] bool -# 140| Value = [CStyleCast] 0 -# 140| ValueCategory = prvalue -# 141| getStmt(41): [DoStmt] do (...) ... -# 143| getCondition(): [Literal] 0 -# 143| Type = [IntType] int -# 143| Value = [Literal] 0 -# 143| ValueCategory = prvalue -# 141| getStmt(): [BlockStmt] { ... } -# 142| getStmt(0): [DeclStmt] declaration -# 142| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x41 -# 142| Type = [Struct] String -# 142| getVariable().getInitializer(): [Initializer] initializer for x41 -# 142| getExpr(): [ConstructorCall] call to String -# 142| Type = [VoidType] void -# 142| ValueCategory = prvalue -# 143| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 143| Type = [VoidType] void -# 143| ValueCategory = prvalue -# 143| getQualifier(): [VariableAccess] x41 -# 143| Type = [Struct] String -# 143| ValueCategory = lvalue -# 143| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 143| Conversion = [BoolConversion] conversion to bool -# 143| Type = [BoolType] bool -# 143| Value = [CStyleCast] 0 -# 143| ValueCategory = prvalue -# 144| getStmt(42): [DoStmt] do (...) ... -# 146| getCondition(): [Literal] 0 -# 146| Type = [IntType] int -# 146| Value = [Literal] 0 -# 146| ValueCategory = prvalue -# 144| getStmt(): [BlockStmt] { ... } -# 145| getStmt(0): [DeclStmt] declaration -# 145| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x42 -# 145| Type = [Struct] String -# 145| getVariable().getInitializer(): [Initializer] initializer for x42 -# 145| getExpr(): [ConstructorCall] call to String -# 145| Type = [VoidType] void -# 145| ValueCategory = prvalue -# 146| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 146| Type = [VoidType] void -# 146| ValueCategory = prvalue -# 146| getQualifier(): [VariableAccess] x42 -# 146| Type = [Struct] String -# 146| ValueCategory = lvalue -# 146| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 146| Conversion = [BoolConversion] conversion to bool -# 146| Type = [BoolType] bool -# 146| Value = [CStyleCast] 0 -# 146| ValueCategory = prvalue -# 147| getStmt(43): [DoStmt] do (...) ... -# 149| getCondition(): [Literal] 0 -# 149| Type = [IntType] int -# 149| Value = [Literal] 0 -# 149| ValueCategory = prvalue -# 147| getStmt(): [BlockStmt] { ... } -# 148| getStmt(0): [DeclStmt] declaration -# 148| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x43 -# 148| Type = [Struct] String -# 148| getVariable().getInitializer(): [Initializer] initializer for x43 -# 148| getExpr(): [ConstructorCall] call to String -# 148| Type = [VoidType] void -# 148| ValueCategory = prvalue -# 149| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 149| Type = [VoidType] void -# 149| ValueCategory = prvalue -# 149| getQualifier(): [VariableAccess] x43 -# 149| Type = [Struct] String -# 149| ValueCategory = lvalue -# 149| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 149| Conversion = [BoolConversion] conversion to bool -# 149| Type = [BoolType] bool -# 149| Value = [CStyleCast] 0 -# 149| ValueCategory = prvalue -# 150| getStmt(44): [DoStmt] do (...) ... -# 152| getCondition(): [Literal] 0 -# 152| Type = [IntType] int -# 152| Value = [Literal] 0 -# 152| ValueCategory = prvalue -# 150| getStmt(): [BlockStmt] { ... } -# 151| getStmt(0): [DeclStmt] declaration -# 151| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x44 -# 151| Type = [Struct] String -# 151| getVariable().getInitializer(): [Initializer] initializer for x44 -# 151| getExpr(): [ConstructorCall] call to String -# 151| Type = [VoidType] void -# 151| ValueCategory = prvalue -# 152| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 152| Type = [VoidType] void -# 152| ValueCategory = prvalue -# 152| getQualifier(): [VariableAccess] x44 -# 152| Type = [Struct] String -# 152| ValueCategory = lvalue -# 152| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 152| Conversion = [BoolConversion] conversion to bool -# 152| Type = [BoolType] bool -# 152| Value = [CStyleCast] 0 -# 152| ValueCategory = prvalue -# 153| getStmt(45): [DoStmt] do (...) ... -# 155| getCondition(): [Literal] 0 -# 155| Type = [IntType] int -# 155| Value = [Literal] 0 -# 155| ValueCategory = prvalue -# 153| getStmt(): [BlockStmt] { ... } -# 154| getStmt(0): [DeclStmt] declaration -# 154| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x45 -# 154| Type = [Struct] String -# 154| getVariable().getInitializer(): [Initializer] initializer for x45 -# 154| getExpr(): [ConstructorCall] call to String -# 154| Type = [VoidType] void -# 154| ValueCategory = prvalue -# 155| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 155| Type = [VoidType] void -# 155| ValueCategory = prvalue -# 155| getQualifier(): [VariableAccess] x45 -# 155| Type = [Struct] String -# 155| ValueCategory = lvalue -# 155| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 155| Conversion = [BoolConversion] conversion to bool -# 155| Type = [BoolType] bool -# 155| Value = [CStyleCast] 0 -# 155| ValueCategory = prvalue -# 156| getStmt(46): [DoStmt] do (...) ... -# 158| getCondition(): [Literal] 0 -# 158| Type = [IntType] int -# 158| Value = [Literal] 0 -# 158| ValueCategory = prvalue -# 156| getStmt(): [BlockStmt] { ... } -# 157| getStmt(0): [DeclStmt] declaration -# 157| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x46 -# 157| Type = [Struct] String -# 157| getVariable().getInitializer(): [Initializer] initializer for x46 -# 157| getExpr(): [ConstructorCall] call to String -# 157| Type = [VoidType] void -# 157| ValueCategory = prvalue -# 158| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 158| Type = [VoidType] void -# 158| ValueCategory = prvalue -# 158| getQualifier(): [VariableAccess] x46 -# 158| Type = [Struct] String -# 158| ValueCategory = lvalue -# 158| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 158| Conversion = [BoolConversion] conversion to bool -# 158| Type = [BoolType] bool -# 158| Value = [CStyleCast] 0 -# 158| ValueCategory = prvalue -# 159| getStmt(47): [DoStmt] do (...) ... -# 161| getCondition(): [Literal] 0 -# 161| Type = [IntType] int -# 161| Value = [Literal] 0 -# 161| ValueCategory = prvalue -# 159| getStmt(): [BlockStmt] { ... } -# 160| getStmt(0): [DeclStmt] declaration -# 160| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x47 -# 160| Type = [Struct] String -# 160| getVariable().getInitializer(): [Initializer] initializer for x47 -# 160| getExpr(): [ConstructorCall] call to String -# 160| Type = [VoidType] void -# 160| ValueCategory = prvalue -# 161| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 161| Type = [VoidType] void -# 161| ValueCategory = prvalue -# 161| getQualifier(): [VariableAccess] x47 -# 161| Type = [Struct] String -# 161| ValueCategory = lvalue -# 161| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 161| Conversion = [BoolConversion] conversion to bool -# 161| Type = [BoolType] bool -# 161| Value = [CStyleCast] 0 -# 161| ValueCategory = prvalue -# 162| getStmt(48): [DoStmt] do (...) ... -# 164| getCondition(): [Literal] 0 -# 164| Type = [IntType] int -# 164| Value = [Literal] 0 -# 164| ValueCategory = prvalue -# 162| getStmt(): [BlockStmt] { ... } -# 163| getStmt(0): [DeclStmt] declaration -# 163| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x48 -# 163| Type = [Struct] String -# 163| getVariable().getInitializer(): [Initializer] initializer for x48 -# 163| getExpr(): [ConstructorCall] call to String -# 163| Type = [VoidType] void -# 163| ValueCategory = prvalue -# 164| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 164| Type = [VoidType] void -# 164| ValueCategory = prvalue -# 164| getQualifier(): [VariableAccess] x48 -# 164| Type = [Struct] String -# 164| ValueCategory = lvalue -# 164| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 164| Conversion = [BoolConversion] conversion to bool -# 164| Type = [BoolType] bool -# 164| Value = [CStyleCast] 0 -# 164| ValueCategory = prvalue -# 165| getStmt(49): [DoStmt] do (...) ... -# 167| getCondition(): [Literal] 0 -# 167| Type = [IntType] int -# 167| Value = [Literal] 0 -# 167| ValueCategory = prvalue -# 165| getStmt(): [BlockStmt] { ... } -# 166| getStmt(0): [DeclStmt] declaration -# 166| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x49 -# 166| Type = [Struct] String -# 166| getVariable().getInitializer(): [Initializer] initializer for x49 -# 166| getExpr(): [ConstructorCall] call to String -# 166| Type = [VoidType] void -# 166| ValueCategory = prvalue -# 167| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 167| Type = [VoidType] void -# 167| ValueCategory = prvalue -# 167| getQualifier(): [VariableAccess] x49 -# 167| Type = [Struct] String -# 167| ValueCategory = lvalue -# 167| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 167| Conversion = [BoolConversion] conversion to bool -# 167| Type = [BoolType] bool -# 167| Value = [CStyleCast] 0 -# 167| ValueCategory = prvalue -# 168| getStmt(50): [DoStmt] do (...) ... -# 170| getCondition(): [Literal] 0 -# 170| Type = [IntType] int -# 170| Value = [Literal] 0 -# 170| ValueCategory = prvalue -# 168| getStmt(): [BlockStmt] { ... } -# 169| getStmt(0): [DeclStmt] declaration -# 169| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x50 -# 169| Type = [Struct] String -# 169| getVariable().getInitializer(): [Initializer] initializer for x50 -# 169| getExpr(): [ConstructorCall] call to String -# 169| Type = [VoidType] void -# 169| ValueCategory = prvalue -# 170| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 170| Type = [VoidType] void -# 170| ValueCategory = prvalue -# 170| getQualifier(): [VariableAccess] x50 -# 170| Type = [Struct] String -# 170| ValueCategory = lvalue -# 170| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 170| Conversion = [BoolConversion] conversion to bool -# 170| Type = [BoolType] bool -# 170| Value = [CStyleCast] 0 -# 170| ValueCategory = prvalue -# 171| getStmt(51): [DoStmt] do (...) ... -# 173| getCondition(): [Literal] 0 -# 173| Type = [IntType] int -# 173| Value = [Literal] 0 -# 173| ValueCategory = prvalue -# 171| getStmt(): [BlockStmt] { ... } -# 172| getStmt(0): [DeclStmt] declaration -# 172| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x51 -# 172| Type = [Struct] String -# 172| getVariable().getInitializer(): [Initializer] initializer for x51 -# 172| getExpr(): [ConstructorCall] call to String -# 172| Type = [VoidType] void -# 172| ValueCategory = prvalue -# 173| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 173| Type = [VoidType] void -# 173| ValueCategory = prvalue -# 173| getQualifier(): [VariableAccess] x51 -# 173| Type = [Struct] String -# 173| ValueCategory = lvalue -# 173| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 173| Conversion = [BoolConversion] conversion to bool -# 173| Type = [BoolType] bool -# 173| Value = [CStyleCast] 0 -# 173| ValueCategory = prvalue -# 174| getStmt(52): [DoStmt] do (...) ... -# 176| getCondition(): [Literal] 0 -# 176| Type = [IntType] int -# 176| Value = [Literal] 0 -# 176| ValueCategory = prvalue -# 174| getStmt(): [BlockStmt] { ... } -# 175| getStmt(0): [DeclStmt] declaration -# 175| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x52 -# 175| Type = [Struct] String -# 175| getVariable().getInitializer(): [Initializer] initializer for x52 -# 175| getExpr(): [ConstructorCall] call to String -# 175| Type = [VoidType] void -# 175| ValueCategory = prvalue -# 176| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 176| Type = [VoidType] void -# 176| ValueCategory = prvalue -# 176| getQualifier(): [VariableAccess] x52 -# 176| Type = [Struct] String -# 176| ValueCategory = lvalue -# 176| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 176| Conversion = [BoolConversion] conversion to bool -# 176| Type = [BoolType] bool -# 176| Value = [CStyleCast] 0 -# 176| ValueCategory = prvalue -# 177| getStmt(53): [DoStmt] do (...) ... -# 179| getCondition(): [Literal] 0 -# 179| Type = [IntType] int -# 179| Value = [Literal] 0 -# 179| ValueCategory = prvalue -# 177| getStmt(): [BlockStmt] { ... } -# 178| getStmt(0): [DeclStmt] declaration -# 178| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x53 -# 178| Type = [Struct] String -# 178| getVariable().getInitializer(): [Initializer] initializer for x53 -# 178| getExpr(): [ConstructorCall] call to String -# 178| Type = [VoidType] void -# 178| ValueCategory = prvalue -# 179| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 179| Type = [VoidType] void -# 179| ValueCategory = prvalue -# 179| getQualifier(): [VariableAccess] x53 -# 179| Type = [Struct] String -# 179| ValueCategory = lvalue -# 179| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 179| Conversion = [BoolConversion] conversion to bool -# 179| Type = [BoolType] bool -# 179| Value = [CStyleCast] 0 -# 179| ValueCategory = prvalue -# 180| getStmt(54): [DoStmt] do (...) ... -# 182| getCondition(): [Literal] 0 -# 182| Type = [IntType] int -# 182| Value = [Literal] 0 -# 182| ValueCategory = prvalue -# 180| getStmt(): [BlockStmt] { ... } -# 181| getStmt(0): [DeclStmt] declaration -# 181| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x54 -# 181| Type = [Struct] String -# 181| getVariable().getInitializer(): [Initializer] initializer for x54 -# 181| getExpr(): [ConstructorCall] call to String -# 181| Type = [VoidType] void -# 181| ValueCategory = prvalue -# 182| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 182| Type = [VoidType] void -# 182| ValueCategory = prvalue -# 182| getQualifier(): [VariableAccess] x54 -# 182| Type = [Struct] String -# 182| ValueCategory = lvalue -# 182| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 182| Conversion = [BoolConversion] conversion to bool -# 182| Type = [BoolType] bool -# 182| Value = [CStyleCast] 0 -# 182| ValueCategory = prvalue -# 183| getStmt(55): [DoStmt] do (...) ... -# 185| getCondition(): [Literal] 0 -# 185| Type = [IntType] int -# 185| Value = [Literal] 0 -# 185| ValueCategory = prvalue -# 183| getStmt(): [BlockStmt] { ... } -# 184| getStmt(0): [DeclStmt] declaration -# 184| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x55 -# 184| Type = [Struct] String -# 184| getVariable().getInitializer(): [Initializer] initializer for x55 -# 184| getExpr(): [ConstructorCall] call to String -# 184| Type = [VoidType] void -# 184| ValueCategory = prvalue -# 185| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 185| Type = [VoidType] void -# 185| ValueCategory = prvalue -# 185| getQualifier(): [VariableAccess] x55 -# 185| Type = [Struct] String -# 185| ValueCategory = lvalue -# 185| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 185| Conversion = [BoolConversion] conversion to bool -# 185| Type = [BoolType] bool -# 185| Value = [CStyleCast] 0 -# 185| ValueCategory = prvalue -# 186| getStmt(56): [DoStmt] do (...) ... -# 188| getCondition(): [Literal] 0 -# 188| Type = [IntType] int -# 188| Value = [Literal] 0 -# 188| ValueCategory = prvalue -# 186| getStmt(): [BlockStmt] { ... } -# 187| getStmt(0): [DeclStmt] declaration -# 187| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x56 -# 187| Type = [Struct] String -# 187| getVariable().getInitializer(): [Initializer] initializer for x56 -# 187| getExpr(): [ConstructorCall] call to String -# 187| Type = [VoidType] void -# 187| ValueCategory = prvalue -# 188| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 188| Type = [VoidType] void -# 188| ValueCategory = prvalue -# 188| getQualifier(): [VariableAccess] x56 -# 188| Type = [Struct] String -# 188| ValueCategory = lvalue -# 188| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 188| Conversion = [BoolConversion] conversion to bool -# 188| Type = [BoolType] bool -# 188| Value = [CStyleCast] 0 -# 188| ValueCategory = prvalue -# 189| getStmt(57): [DoStmt] do (...) ... -# 191| getCondition(): [Literal] 0 -# 191| Type = [IntType] int -# 191| Value = [Literal] 0 -# 191| ValueCategory = prvalue -# 189| getStmt(): [BlockStmt] { ... } -# 190| getStmt(0): [DeclStmt] declaration -# 190| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x57 -# 190| Type = [Struct] String -# 190| getVariable().getInitializer(): [Initializer] initializer for x57 -# 190| getExpr(): [ConstructorCall] call to String -# 190| Type = [VoidType] void -# 190| ValueCategory = prvalue -# 191| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 191| Type = [VoidType] void -# 191| ValueCategory = prvalue -# 191| getQualifier(): [VariableAccess] x57 -# 191| Type = [Struct] String -# 191| ValueCategory = lvalue -# 191| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 191| Conversion = [BoolConversion] conversion to bool -# 191| Type = [BoolType] bool -# 191| Value = [CStyleCast] 0 -# 191| ValueCategory = prvalue -# 192| getStmt(58): [DoStmt] do (...) ... -# 194| getCondition(): [Literal] 0 -# 194| Type = [IntType] int -# 194| Value = [Literal] 0 -# 194| ValueCategory = prvalue -# 192| getStmt(): [BlockStmt] { ... } -# 193| getStmt(0): [DeclStmt] declaration -# 193| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x58 -# 193| Type = [Struct] String -# 193| getVariable().getInitializer(): [Initializer] initializer for x58 -# 193| getExpr(): [ConstructorCall] call to String -# 193| Type = [VoidType] void -# 193| ValueCategory = prvalue -# 194| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 194| Type = [VoidType] void -# 194| ValueCategory = prvalue -# 194| getQualifier(): [VariableAccess] x58 -# 194| Type = [Struct] String -# 194| ValueCategory = lvalue -# 194| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 194| Conversion = [BoolConversion] conversion to bool -# 194| Type = [BoolType] bool -# 194| Value = [CStyleCast] 0 -# 194| ValueCategory = prvalue -# 195| getStmt(59): [DoStmt] do (...) ... -# 197| getCondition(): [Literal] 0 -# 197| Type = [IntType] int -# 197| Value = [Literal] 0 -# 197| ValueCategory = prvalue -# 195| getStmt(): [BlockStmt] { ... } -# 196| getStmt(0): [DeclStmt] declaration -# 196| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x59 -# 196| Type = [Struct] String -# 196| getVariable().getInitializer(): [Initializer] initializer for x59 -# 196| getExpr(): [ConstructorCall] call to String -# 196| Type = [VoidType] void -# 196| ValueCategory = prvalue -# 197| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 197| Type = [VoidType] void -# 197| ValueCategory = prvalue -# 197| getQualifier(): [VariableAccess] x59 -# 197| Type = [Struct] String -# 197| ValueCategory = lvalue -# 197| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 197| Conversion = [BoolConversion] conversion to bool -# 197| Type = [BoolType] bool -# 197| Value = [CStyleCast] 0 -# 197| ValueCategory = prvalue -# 198| getStmt(60): [DoStmt] do (...) ... -# 200| getCondition(): [Literal] 0 -# 200| Type = [IntType] int -# 200| Value = [Literal] 0 -# 200| ValueCategory = prvalue -# 198| getStmt(): [BlockStmt] { ... } -# 199| getStmt(0): [DeclStmt] declaration -# 199| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x60 -# 199| Type = [Struct] String -# 199| getVariable().getInitializer(): [Initializer] initializer for x60 -# 199| getExpr(): [ConstructorCall] call to String -# 199| Type = [VoidType] void -# 199| ValueCategory = prvalue -# 200| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 200| Type = [VoidType] void -# 200| ValueCategory = prvalue -# 200| getQualifier(): [VariableAccess] x60 -# 200| Type = [Struct] String -# 200| ValueCategory = lvalue -# 200| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 200| Conversion = [BoolConversion] conversion to bool -# 200| Type = [BoolType] bool -# 200| Value = [CStyleCast] 0 -# 200| ValueCategory = prvalue -# 201| getStmt(61): [DoStmt] do (...) ... -# 203| getCondition(): [Literal] 0 -# 203| Type = [IntType] int -# 203| Value = [Literal] 0 -# 203| ValueCategory = prvalue -# 201| getStmt(): [BlockStmt] { ... } -# 202| getStmt(0): [DeclStmt] declaration -# 202| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x61 -# 202| Type = [Struct] String -# 202| getVariable().getInitializer(): [Initializer] initializer for x61 -# 202| getExpr(): [ConstructorCall] call to String -# 202| Type = [VoidType] void -# 202| ValueCategory = prvalue -# 203| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 203| Type = [VoidType] void -# 203| ValueCategory = prvalue -# 203| getQualifier(): [VariableAccess] x61 -# 203| Type = [Struct] String -# 203| ValueCategory = lvalue -# 203| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 203| Conversion = [BoolConversion] conversion to bool -# 203| Type = [BoolType] bool -# 203| Value = [CStyleCast] 0 -# 203| ValueCategory = prvalue -# 204| getStmt(62): [DoStmt] do (...) ... -# 206| getCondition(): [Literal] 0 -# 206| Type = [IntType] int -# 206| Value = [Literal] 0 -# 206| ValueCategory = prvalue -# 204| getStmt(): [BlockStmt] { ... } -# 205| getStmt(0): [DeclStmt] declaration -# 205| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x62 -# 205| Type = [Struct] String -# 205| getVariable().getInitializer(): [Initializer] initializer for x62 -# 205| getExpr(): [ConstructorCall] call to String -# 205| Type = [VoidType] void -# 205| ValueCategory = prvalue -# 206| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 206| Type = [VoidType] void -# 206| ValueCategory = prvalue -# 206| getQualifier(): [VariableAccess] x62 -# 206| Type = [Struct] String -# 206| ValueCategory = lvalue -# 206| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 206| Conversion = [BoolConversion] conversion to bool -# 206| Type = [BoolType] bool -# 206| Value = [CStyleCast] 0 -# 206| ValueCategory = prvalue -# 207| getStmt(63): [DoStmt] do (...) ... -# 209| getCondition(): [Literal] 0 -# 209| Type = [IntType] int -# 209| Value = [Literal] 0 -# 209| ValueCategory = prvalue -# 207| getStmt(): [BlockStmt] { ... } -# 208| getStmt(0): [DeclStmt] declaration -# 208| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x63 -# 208| Type = [Struct] String -# 208| getVariable().getInitializer(): [Initializer] initializer for x63 -# 208| getExpr(): [ConstructorCall] call to String -# 208| Type = [VoidType] void -# 208| ValueCategory = prvalue -# 209| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 209| Type = [VoidType] void -# 209| ValueCategory = prvalue -# 209| getQualifier(): [VariableAccess] x63 -# 209| Type = [Struct] String -# 209| ValueCategory = lvalue -# 209| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 209| Conversion = [BoolConversion] conversion to bool -# 209| Type = [BoolType] bool -# 209| Value = [CStyleCast] 0 -# 209| ValueCategory = prvalue -# 210| getStmt(64): [DoStmt] do (...) ... -# 212| getCondition(): [Literal] 0 -# 212| Type = [IntType] int -# 212| Value = [Literal] 0 -# 212| ValueCategory = prvalue -# 210| getStmt(): [BlockStmt] { ... } -# 211| getStmt(0): [DeclStmt] declaration -# 211| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x64 -# 211| Type = [Struct] String -# 211| getVariable().getInitializer(): [Initializer] initializer for x64 -# 211| getExpr(): [ConstructorCall] call to String -# 211| Type = [VoidType] void -# 211| ValueCategory = prvalue -# 212| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 212| Type = [VoidType] void -# 212| ValueCategory = prvalue -# 212| getQualifier(): [VariableAccess] x64 -# 212| Type = [Struct] String -# 212| ValueCategory = lvalue -# 212| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 212| Conversion = [BoolConversion] conversion to bool -# 212| Type = [BoolType] bool -# 212| Value = [CStyleCast] 0 -# 212| ValueCategory = prvalue -# 213| getStmt(65): [DoStmt] do (...) ... -# 215| getCondition(): [Literal] 0 -# 215| Type = [IntType] int -# 215| Value = [Literal] 0 -# 215| ValueCategory = prvalue -# 213| getStmt(): [BlockStmt] { ... } -# 214| getStmt(0): [DeclStmt] declaration -# 214| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x65 -# 214| Type = [Struct] String -# 214| getVariable().getInitializer(): [Initializer] initializer for x65 -# 214| getExpr(): [ConstructorCall] call to String -# 214| Type = [VoidType] void -# 214| ValueCategory = prvalue -# 215| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 215| Type = [VoidType] void -# 215| ValueCategory = prvalue -# 215| getQualifier(): [VariableAccess] x65 -# 215| Type = [Struct] String -# 215| ValueCategory = lvalue -# 215| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 215| Conversion = [BoolConversion] conversion to bool -# 215| Type = [BoolType] bool -# 215| Value = [CStyleCast] 0 -# 215| ValueCategory = prvalue -# 216| getStmt(66): [DoStmt] do (...) ... -# 218| getCondition(): [Literal] 0 -# 218| Type = [IntType] int -# 218| Value = [Literal] 0 -# 218| ValueCategory = prvalue -# 216| getStmt(): [BlockStmt] { ... } -# 217| getStmt(0): [DeclStmt] declaration -# 217| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x66 -# 217| Type = [Struct] String -# 217| getVariable().getInitializer(): [Initializer] initializer for x66 -# 217| getExpr(): [ConstructorCall] call to String -# 217| Type = [VoidType] void -# 217| ValueCategory = prvalue -# 218| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 218| Type = [VoidType] void -# 218| ValueCategory = prvalue -# 218| getQualifier(): [VariableAccess] x66 -# 218| Type = [Struct] String -# 218| ValueCategory = lvalue -# 218| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 218| Conversion = [BoolConversion] conversion to bool -# 218| Type = [BoolType] bool -# 218| Value = [CStyleCast] 0 -# 218| ValueCategory = prvalue -# 219| getStmt(67): [DoStmt] do (...) ... -# 221| getCondition(): [Literal] 0 -# 221| Type = [IntType] int -# 221| Value = [Literal] 0 -# 221| ValueCategory = prvalue -# 219| getStmt(): [BlockStmt] { ... } -# 220| getStmt(0): [DeclStmt] declaration -# 220| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x67 -# 220| Type = [Struct] String -# 220| getVariable().getInitializer(): [Initializer] initializer for x67 -# 220| getExpr(): [ConstructorCall] call to String -# 220| Type = [VoidType] void -# 220| ValueCategory = prvalue -# 221| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 221| Type = [VoidType] void -# 221| ValueCategory = prvalue -# 221| getQualifier(): [VariableAccess] x67 -# 221| Type = [Struct] String -# 221| ValueCategory = lvalue -# 221| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 221| Conversion = [BoolConversion] conversion to bool -# 221| Type = [BoolType] bool -# 221| Value = [CStyleCast] 0 -# 221| ValueCategory = prvalue -# 222| getStmt(68): [DoStmt] do (...) ... -# 224| getCondition(): [Literal] 0 -# 224| Type = [IntType] int -# 224| Value = [Literal] 0 -# 224| ValueCategory = prvalue -# 222| getStmt(): [BlockStmt] { ... } -# 223| getStmt(0): [DeclStmt] declaration -# 223| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x68 -# 223| Type = [Struct] String -# 223| getVariable().getInitializer(): [Initializer] initializer for x68 -# 223| getExpr(): [ConstructorCall] call to String -# 223| Type = [VoidType] void -# 223| ValueCategory = prvalue -# 224| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 224| Type = [VoidType] void -# 224| ValueCategory = prvalue -# 224| getQualifier(): [VariableAccess] x68 -# 224| Type = [Struct] String -# 224| ValueCategory = lvalue -# 224| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 224| Conversion = [BoolConversion] conversion to bool -# 224| Type = [BoolType] bool -# 224| Value = [CStyleCast] 0 -# 224| ValueCategory = prvalue -# 225| getStmt(69): [DoStmt] do (...) ... -# 227| getCondition(): [Literal] 0 -# 227| Type = [IntType] int -# 227| Value = [Literal] 0 -# 227| ValueCategory = prvalue -# 225| getStmt(): [BlockStmt] { ... } -# 226| getStmt(0): [DeclStmt] declaration -# 226| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x69 -# 226| Type = [Struct] String -# 226| getVariable().getInitializer(): [Initializer] initializer for x69 -# 226| getExpr(): [ConstructorCall] call to String -# 226| Type = [VoidType] void -# 226| ValueCategory = prvalue -# 227| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 227| Type = [VoidType] void -# 227| ValueCategory = prvalue -# 227| getQualifier(): [VariableAccess] x69 -# 227| Type = [Struct] String -# 227| ValueCategory = lvalue -# 227| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 227| Conversion = [BoolConversion] conversion to bool -# 227| Type = [BoolType] bool -# 227| Value = [CStyleCast] 0 -# 227| ValueCategory = prvalue -# 228| getStmt(70): [DoStmt] do (...) ... -# 230| getCondition(): [Literal] 0 -# 230| Type = [IntType] int -# 230| Value = [Literal] 0 -# 230| ValueCategory = prvalue -# 228| getStmt(): [BlockStmt] { ... } -# 229| getStmt(0): [DeclStmt] declaration -# 229| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x70 -# 229| Type = [Struct] String -# 229| getVariable().getInitializer(): [Initializer] initializer for x70 -# 229| getExpr(): [ConstructorCall] call to String -# 229| Type = [VoidType] void -# 229| ValueCategory = prvalue -# 230| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 230| Type = [VoidType] void -# 230| ValueCategory = prvalue -# 230| getQualifier(): [VariableAccess] x70 -# 230| Type = [Struct] String -# 230| ValueCategory = lvalue -# 230| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 230| Conversion = [BoolConversion] conversion to bool -# 230| Type = [BoolType] bool -# 230| Value = [CStyleCast] 0 -# 230| ValueCategory = prvalue -# 231| getStmt(71): [DoStmt] do (...) ... -# 233| getCondition(): [Literal] 0 -# 233| Type = [IntType] int -# 233| Value = [Literal] 0 -# 233| ValueCategory = prvalue -# 231| getStmt(): [BlockStmt] { ... } -# 232| getStmt(0): [DeclStmt] declaration -# 232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x71 -# 232| Type = [Struct] String -# 232| getVariable().getInitializer(): [Initializer] initializer for x71 -# 232| getExpr(): [ConstructorCall] call to String -# 232| Type = [VoidType] void -# 232| ValueCategory = prvalue -# 233| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 233| Type = [VoidType] void -# 233| ValueCategory = prvalue -# 233| getQualifier(): [VariableAccess] x71 -# 233| Type = [Struct] String -# 233| ValueCategory = lvalue -# 233| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 233| Conversion = [BoolConversion] conversion to bool -# 233| Type = [BoolType] bool -# 233| Value = [CStyleCast] 0 -# 233| ValueCategory = prvalue -# 234| getStmt(72): [DoStmt] do (...) ... -# 236| getCondition(): [Literal] 0 -# 236| Type = [IntType] int -# 236| Value = [Literal] 0 -# 236| ValueCategory = prvalue -# 234| getStmt(): [BlockStmt] { ... } -# 235| getStmt(0): [DeclStmt] declaration -# 235| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x72 -# 235| Type = [Struct] String -# 235| getVariable().getInitializer(): [Initializer] initializer for x72 -# 235| getExpr(): [ConstructorCall] call to String -# 235| Type = [VoidType] void -# 235| ValueCategory = prvalue -# 236| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 236| Type = [VoidType] void -# 236| ValueCategory = prvalue -# 236| getQualifier(): [VariableAccess] x72 -# 236| Type = [Struct] String -# 236| ValueCategory = lvalue -# 236| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 236| Conversion = [BoolConversion] conversion to bool -# 236| Type = [BoolType] bool -# 236| Value = [CStyleCast] 0 -# 236| ValueCategory = prvalue -# 237| getStmt(73): [DoStmt] do (...) ... -# 239| getCondition(): [Literal] 0 -# 239| Type = [IntType] int -# 239| Value = [Literal] 0 -# 239| ValueCategory = prvalue -# 237| getStmt(): [BlockStmt] { ... } -# 238| getStmt(0): [DeclStmt] declaration -# 238| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x73 -# 238| Type = [Struct] String -# 238| getVariable().getInitializer(): [Initializer] initializer for x73 -# 238| getExpr(): [ConstructorCall] call to String -# 238| Type = [VoidType] void -# 238| ValueCategory = prvalue -# 239| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 239| Type = [VoidType] void -# 239| ValueCategory = prvalue -# 239| getQualifier(): [VariableAccess] x73 -# 239| Type = [Struct] String -# 239| ValueCategory = lvalue -# 239| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 239| Conversion = [BoolConversion] conversion to bool -# 239| Type = [BoolType] bool -# 239| Value = [CStyleCast] 0 -# 239| ValueCategory = prvalue -# 240| getStmt(74): [DoStmt] do (...) ... -# 242| getCondition(): [Literal] 0 -# 242| Type = [IntType] int -# 242| Value = [Literal] 0 -# 242| ValueCategory = prvalue -# 240| getStmt(): [BlockStmt] { ... } -# 241| getStmt(0): [DeclStmt] declaration -# 241| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x74 -# 241| Type = [Struct] String -# 241| getVariable().getInitializer(): [Initializer] initializer for x74 -# 241| getExpr(): [ConstructorCall] call to String -# 241| Type = [VoidType] void -# 241| ValueCategory = prvalue -# 242| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 242| Type = [VoidType] void -# 242| ValueCategory = prvalue -# 242| getQualifier(): [VariableAccess] x74 -# 242| Type = [Struct] String -# 242| ValueCategory = lvalue -# 242| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 242| Conversion = [BoolConversion] conversion to bool -# 242| Type = [BoolType] bool -# 242| Value = [CStyleCast] 0 -# 242| ValueCategory = prvalue -# 243| getStmt(75): [DoStmt] do (...) ... -# 245| getCondition(): [Literal] 0 -# 245| Type = [IntType] int -# 245| Value = [Literal] 0 -# 245| ValueCategory = prvalue -# 243| getStmt(): [BlockStmt] { ... } -# 244| getStmt(0): [DeclStmt] declaration -# 244| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x75 -# 244| Type = [Struct] String -# 244| getVariable().getInitializer(): [Initializer] initializer for x75 -# 244| getExpr(): [ConstructorCall] call to String -# 244| Type = [VoidType] void -# 244| ValueCategory = prvalue -# 245| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 245| Type = [VoidType] void -# 245| ValueCategory = prvalue -# 245| getQualifier(): [VariableAccess] x75 -# 245| Type = [Struct] String -# 245| ValueCategory = lvalue -# 245| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 245| Conversion = [BoolConversion] conversion to bool -# 245| Type = [BoolType] bool -# 245| Value = [CStyleCast] 0 -# 245| ValueCategory = prvalue -# 246| getStmt(76): [DoStmt] do (...) ... -# 248| getCondition(): [Literal] 0 -# 248| Type = [IntType] int -# 248| Value = [Literal] 0 -# 248| ValueCategory = prvalue -# 246| getStmt(): [BlockStmt] { ... } -# 247| getStmt(0): [DeclStmt] declaration -# 247| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x76 -# 247| Type = [Struct] String -# 247| getVariable().getInitializer(): [Initializer] initializer for x76 -# 247| getExpr(): [ConstructorCall] call to String -# 247| Type = [VoidType] void -# 247| ValueCategory = prvalue -# 248| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 248| Type = [VoidType] void -# 248| ValueCategory = prvalue -# 248| getQualifier(): [VariableAccess] x76 -# 248| Type = [Struct] String -# 248| ValueCategory = lvalue -# 248| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 248| Conversion = [BoolConversion] conversion to bool -# 248| Type = [BoolType] bool -# 248| Value = [CStyleCast] 0 -# 248| ValueCategory = prvalue -# 249| getStmt(77): [DoStmt] do (...) ... -# 251| getCondition(): [Literal] 0 -# 251| Type = [IntType] int -# 251| Value = [Literal] 0 -# 251| ValueCategory = prvalue -# 249| getStmt(): [BlockStmt] { ... } -# 250| getStmt(0): [DeclStmt] declaration -# 250| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x77 -# 250| Type = [Struct] String -# 250| getVariable().getInitializer(): [Initializer] initializer for x77 -# 250| getExpr(): [ConstructorCall] call to String -# 250| Type = [VoidType] void -# 250| ValueCategory = prvalue -# 251| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 251| Type = [VoidType] void -# 251| ValueCategory = prvalue -# 251| getQualifier(): [VariableAccess] x77 -# 251| Type = [Struct] String -# 251| ValueCategory = lvalue -# 251| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 251| Conversion = [BoolConversion] conversion to bool -# 251| Type = [BoolType] bool -# 251| Value = [CStyleCast] 0 -# 251| ValueCategory = prvalue -# 252| getStmt(78): [DoStmt] do (...) ... -# 254| getCondition(): [Literal] 0 -# 254| Type = [IntType] int -# 254| Value = [Literal] 0 -# 254| ValueCategory = prvalue -# 252| getStmt(): [BlockStmt] { ... } -# 253| getStmt(0): [DeclStmt] declaration -# 253| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x78 -# 253| Type = [Struct] String -# 253| getVariable().getInitializer(): [Initializer] initializer for x78 -# 253| getExpr(): [ConstructorCall] call to String -# 253| Type = [VoidType] void -# 253| ValueCategory = prvalue -# 254| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 254| Type = [VoidType] void -# 254| ValueCategory = prvalue -# 254| getQualifier(): [VariableAccess] x78 -# 254| Type = [Struct] String -# 254| ValueCategory = lvalue -# 254| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 254| Conversion = [BoolConversion] conversion to bool -# 254| Type = [BoolType] bool -# 254| Value = [CStyleCast] 0 -# 254| ValueCategory = prvalue -# 255| getStmt(79): [DoStmt] do (...) ... -# 257| getCondition(): [Literal] 0 -# 257| Type = [IntType] int -# 257| Value = [Literal] 0 -# 257| ValueCategory = prvalue -# 255| getStmt(): [BlockStmt] { ... } -# 256| getStmt(0): [DeclStmt] declaration -# 256| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x79 -# 256| Type = [Struct] String -# 256| getVariable().getInitializer(): [Initializer] initializer for x79 -# 256| getExpr(): [ConstructorCall] call to String -# 256| Type = [VoidType] void -# 256| ValueCategory = prvalue -# 257| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 257| Type = [VoidType] void -# 257| ValueCategory = prvalue -# 257| getQualifier(): [VariableAccess] x79 -# 257| Type = [Struct] String -# 257| ValueCategory = lvalue -# 257| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 257| Conversion = [BoolConversion] conversion to bool -# 257| Type = [BoolType] bool -# 257| Value = [CStyleCast] 0 -# 257| ValueCategory = prvalue -# 258| getStmt(80): [DoStmt] do (...) ... -# 260| getCondition(): [Literal] 0 -# 260| Type = [IntType] int -# 260| Value = [Literal] 0 -# 260| ValueCategory = prvalue -# 258| getStmt(): [BlockStmt] { ... } -# 259| getStmt(0): [DeclStmt] declaration -# 259| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x80 -# 259| Type = [Struct] String -# 259| getVariable().getInitializer(): [Initializer] initializer for x80 -# 259| getExpr(): [ConstructorCall] call to String -# 259| Type = [VoidType] void -# 259| ValueCategory = prvalue -# 260| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 260| Type = [VoidType] void -# 260| ValueCategory = prvalue -# 260| getQualifier(): [VariableAccess] x80 -# 260| Type = [Struct] String -# 260| ValueCategory = lvalue -# 260| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 260| Conversion = [BoolConversion] conversion to bool -# 260| Type = [BoolType] bool -# 260| Value = [CStyleCast] 0 -# 260| ValueCategory = prvalue -# 261| getStmt(81): [DoStmt] do (...) ... -# 263| getCondition(): [Literal] 0 -# 263| Type = [IntType] int -# 263| Value = [Literal] 0 -# 263| ValueCategory = prvalue -# 261| getStmt(): [BlockStmt] { ... } -# 262| getStmt(0): [DeclStmt] declaration -# 262| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x81 -# 262| Type = [Struct] String -# 262| getVariable().getInitializer(): [Initializer] initializer for x81 -# 262| getExpr(): [ConstructorCall] call to String -# 262| Type = [VoidType] void -# 262| ValueCategory = prvalue -# 263| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 263| Type = [VoidType] void -# 263| ValueCategory = prvalue -# 263| getQualifier(): [VariableAccess] x81 -# 263| Type = [Struct] String -# 263| ValueCategory = lvalue -# 263| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 263| Conversion = [BoolConversion] conversion to bool -# 263| Type = [BoolType] bool -# 263| Value = [CStyleCast] 0 -# 263| ValueCategory = prvalue -# 264| getStmt(82): [DoStmt] do (...) ... -# 266| getCondition(): [Literal] 0 -# 266| Type = [IntType] int -# 266| Value = [Literal] 0 -# 266| ValueCategory = prvalue -# 264| getStmt(): [BlockStmt] { ... } -# 265| getStmt(0): [DeclStmt] declaration -# 265| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x82 -# 265| Type = [Struct] String -# 265| getVariable().getInitializer(): [Initializer] initializer for x82 -# 265| getExpr(): [ConstructorCall] call to String -# 265| Type = [VoidType] void -# 265| ValueCategory = prvalue -# 266| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 266| Type = [VoidType] void -# 266| ValueCategory = prvalue -# 266| getQualifier(): [VariableAccess] x82 -# 266| Type = [Struct] String -# 266| ValueCategory = lvalue -# 266| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 266| Conversion = [BoolConversion] conversion to bool -# 266| Type = [BoolType] bool -# 266| Value = [CStyleCast] 0 -# 266| ValueCategory = prvalue -# 267| getStmt(83): [DoStmt] do (...) ... -# 269| getCondition(): [Literal] 0 -# 269| Type = [IntType] int -# 269| Value = [Literal] 0 -# 269| ValueCategory = prvalue -# 267| getStmt(): [BlockStmt] { ... } -# 268| getStmt(0): [DeclStmt] declaration -# 268| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x83 -# 268| Type = [Struct] String -# 268| getVariable().getInitializer(): [Initializer] initializer for x83 -# 268| getExpr(): [ConstructorCall] call to String -# 268| Type = [VoidType] void -# 268| ValueCategory = prvalue -# 269| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 269| Type = [VoidType] void -# 269| ValueCategory = prvalue -# 269| getQualifier(): [VariableAccess] x83 -# 269| Type = [Struct] String -# 269| ValueCategory = lvalue -# 269| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 269| Conversion = [BoolConversion] conversion to bool -# 269| Type = [BoolType] bool -# 269| Value = [CStyleCast] 0 -# 269| ValueCategory = prvalue -# 270| getStmt(84): [DoStmt] do (...) ... -# 272| getCondition(): [Literal] 0 -# 272| Type = [IntType] int -# 272| Value = [Literal] 0 -# 272| ValueCategory = prvalue -# 270| getStmt(): [BlockStmt] { ... } -# 271| getStmt(0): [DeclStmt] declaration -# 271| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x84 -# 271| Type = [Struct] String -# 271| getVariable().getInitializer(): [Initializer] initializer for x84 -# 271| getExpr(): [ConstructorCall] call to String -# 271| Type = [VoidType] void -# 271| ValueCategory = prvalue -# 272| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 272| Type = [VoidType] void -# 272| ValueCategory = prvalue -# 272| getQualifier(): [VariableAccess] x84 -# 272| Type = [Struct] String -# 272| ValueCategory = lvalue -# 272| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 272| Conversion = [BoolConversion] conversion to bool -# 272| Type = [BoolType] bool -# 272| Value = [CStyleCast] 0 -# 272| ValueCategory = prvalue -# 273| getStmt(85): [DoStmt] do (...) ... -# 275| getCondition(): [Literal] 0 -# 275| Type = [IntType] int -# 275| Value = [Literal] 0 -# 275| ValueCategory = prvalue -# 273| getStmt(): [BlockStmt] { ... } -# 274| getStmt(0): [DeclStmt] declaration -# 274| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x85 -# 274| Type = [Struct] String -# 274| getVariable().getInitializer(): [Initializer] initializer for x85 -# 274| getExpr(): [ConstructorCall] call to String -# 274| Type = [VoidType] void -# 274| ValueCategory = prvalue -# 275| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 275| Type = [VoidType] void -# 275| ValueCategory = prvalue -# 275| getQualifier(): [VariableAccess] x85 -# 275| Type = [Struct] String -# 275| ValueCategory = lvalue -# 275| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 275| Conversion = [BoolConversion] conversion to bool -# 275| Type = [BoolType] bool -# 275| Value = [CStyleCast] 0 -# 275| ValueCategory = prvalue -# 276| getStmt(86): [DoStmt] do (...) ... -# 278| getCondition(): [Literal] 0 -# 278| Type = [IntType] int -# 278| Value = [Literal] 0 -# 278| ValueCategory = prvalue -# 276| getStmt(): [BlockStmt] { ... } -# 277| getStmt(0): [DeclStmt] declaration -# 277| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x86 -# 277| Type = [Struct] String -# 277| getVariable().getInitializer(): [Initializer] initializer for x86 -# 277| getExpr(): [ConstructorCall] call to String -# 277| Type = [VoidType] void -# 277| ValueCategory = prvalue -# 278| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 278| Type = [VoidType] void -# 278| ValueCategory = prvalue -# 278| getQualifier(): [VariableAccess] x86 -# 278| Type = [Struct] String -# 278| ValueCategory = lvalue -# 278| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 278| Conversion = [BoolConversion] conversion to bool -# 278| Type = [BoolType] bool -# 278| Value = [CStyleCast] 0 -# 278| ValueCategory = prvalue -# 279| getStmt(87): [DoStmt] do (...) ... -# 281| getCondition(): [Literal] 0 -# 281| Type = [IntType] int -# 281| Value = [Literal] 0 -# 281| ValueCategory = prvalue -# 279| getStmt(): [BlockStmt] { ... } -# 280| getStmt(0): [DeclStmt] declaration -# 280| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x87 -# 280| Type = [Struct] String -# 280| getVariable().getInitializer(): [Initializer] initializer for x87 -# 280| getExpr(): [ConstructorCall] call to String -# 280| Type = [VoidType] void -# 280| ValueCategory = prvalue -# 281| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 281| Type = [VoidType] void -# 281| ValueCategory = prvalue -# 281| getQualifier(): [VariableAccess] x87 -# 281| Type = [Struct] String -# 281| ValueCategory = lvalue -# 281| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 281| Conversion = [BoolConversion] conversion to bool -# 281| Type = [BoolType] bool -# 281| Value = [CStyleCast] 0 -# 281| ValueCategory = prvalue -# 282| getStmt(88): [DoStmt] do (...) ... -# 284| getCondition(): [Literal] 0 -# 284| Type = [IntType] int -# 284| Value = [Literal] 0 -# 284| ValueCategory = prvalue -# 282| getStmt(): [BlockStmt] { ... } -# 283| getStmt(0): [DeclStmt] declaration -# 283| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x88 -# 283| Type = [Struct] String -# 283| getVariable().getInitializer(): [Initializer] initializer for x88 -# 283| getExpr(): [ConstructorCall] call to String -# 283| Type = [VoidType] void -# 283| ValueCategory = prvalue -# 284| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 284| Type = [VoidType] void -# 284| ValueCategory = prvalue -# 284| getQualifier(): [VariableAccess] x88 -# 284| Type = [Struct] String -# 284| ValueCategory = lvalue -# 284| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 284| Conversion = [BoolConversion] conversion to bool -# 284| Type = [BoolType] bool -# 284| Value = [CStyleCast] 0 -# 284| ValueCategory = prvalue -# 285| getStmt(89): [DoStmt] do (...) ... -# 287| getCondition(): [Literal] 0 -# 287| Type = [IntType] int -# 287| Value = [Literal] 0 -# 287| ValueCategory = prvalue -# 285| getStmt(): [BlockStmt] { ... } -# 286| getStmt(0): [DeclStmt] declaration -# 286| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x89 -# 286| Type = [Struct] String -# 286| getVariable().getInitializer(): [Initializer] initializer for x89 -# 286| getExpr(): [ConstructorCall] call to String -# 286| Type = [VoidType] void -# 286| ValueCategory = prvalue -# 287| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 287| Type = [VoidType] void -# 287| ValueCategory = prvalue -# 287| getQualifier(): [VariableAccess] x89 -# 287| Type = [Struct] String -# 287| ValueCategory = lvalue -# 287| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 287| Conversion = [BoolConversion] conversion to bool -# 287| Type = [BoolType] bool -# 287| Value = [CStyleCast] 0 -# 287| ValueCategory = prvalue -# 288| getStmt(90): [DoStmt] do (...) ... -# 290| getCondition(): [Literal] 0 -# 290| Type = [IntType] int -# 290| Value = [Literal] 0 -# 290| ValueCategory = prvalue -# 288| getStmt(): [BlockStmt] { ... } -# 289| getStmt(0): [DeclStmt] declaration -# 289| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x90 -# 289| Type = [Struct] String -# 289| getVariable().getInitializer(): [Initializer] initializer for x90 -# 289| getExpr(): [ConstructorCall] call to String -# 289| Type = [VoidType] void -# 289| ValueCategory = prvalue -# 290| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 290| Type = [VoidType] void -# 290| ValueCategory = prvalue -# 290| getQualifier(): [VariableAccess] x90 -# 290| Type = [Struct] String -# 290| ValueCategory = lvalue -# 290| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 290| Conversion = [BoolConversion] conversion to bool -# 290| Type = [BoolType] bool -# 290| Value = [CStyleCast] 0 -# 290| ValueCategory = prvalue -# 291| getStmt(91): [DoStmt] do (...) ... -# 293| getCondition(): [Literal] 0 -# 293| Type = [IntType] int -# 293| Value = [Literal] 0 -# 293| ValueCategory = prvalue -# 291| getStmt(): [BlockStmt] { ... } -# 292| getStmt(0): [DeclStmt] declaration -# 292| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x91 -# 292| Type = [Struct] String -# 292| getVariable().getInitializer(): [Initializer] initializer for x91 -# 292| getExpr(): [ConstructorCall] call to String -# 292| Type = [VoidType] void -# 292| ValueCategory = prvalue -# 293| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 293| Type = [VoidType] void -# 293| ValueCategory = prvalue -# 293| getQualifier(): [VariableAccess] x91 -# 293| Type = [Struct] String -# 293| ValueCategory = lvalue -# 293| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 293| Conversion = [BoolConversion] conversion to bool -# 293| Type = [BoolType] bool -# 293| Value = [CStyleCast] 0 -# 293| ValueCategory = prvalue -# 294| getStmt(92): [DoStmt] do (...) ... -# 296| getCondition(): [Literal] 0 -# 296| Type = [IntType] int -# 296| Value = [Literal] 0 -# 296| ValueCategory = prvalue -# 294| getStmt(): [BlockStmt] { ... } -# 295| getStmt(0): [DeclStmt] declaration -# 295| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x92 -# 295| Type = [Struct] String -# 295| getVariable().getInitializer(): [Initializer] initializer for x92 -# 295| getExpr(): [ConstructorCall] call to String -# 295| Type = [VoidType] void -# 295| ValueCategory = prvalue -# 296| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 296| Type = [VoidType] void -# 296| ValueCategory = prvalue -# 296| getQualifier(): [VariableAccess] x92 -# 296| Type = [Struct] String -# 296| ValueCategory = lvalue -# 296| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 296| Conversion = [BoolConversion] conversion to bool -# 296| Type = [BoolType] bool -# 296| Value = [CStyleCast] 0 -# 296| ValueCategory = prvalue -# 297| getStmt(93): [DoStmt] do (...) ... -# 299| getCondition(): [Literal] 0 -# 299| Type = [IntType] int -# 299| Value = [Literal] 0 -# 299| ValueCategory = prvalue -# 297| getStmt(): [BlockStmt] { ... } -# 298| getStmt(0): [DeclStmt] declaration -# 298| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x93 -# 298| Type = [Struct] String -# 298| getVariable().getInitializer(): [Initializer] initializer for x93 -# 298| getExpr(): [ConstructorCall] call to String -# 298| Type = [VoidType] void -# 298| ValueCategory = prvalue -# 299| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 299| Type = [VoidType] void -# 299| ValueCategory = prvalue -# 299| getQualifier(): [VariableAccess] x93 -# 299| Type = [Struct] String -# 299| ValueCategory = lvalue -# 299| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 299| Conversion = [BoolConversion] conversion to bool -# 299| Type = [BoolType] bool -# 299| Value = [CStyleCast] 0 -# 299| ValueCategory = prvalue -# 300| getStmt(94): [DoStmt] do (...) ... -# 302| getCondition(): [Literal] 0 -# 302| Type = [IntType] int -# 302| Value = [Literal] 0 -# 302| ValueCategory = prvalue -# 300| getStmt(): [BlockStmt] { ... } -# 301| getStmt(0): [DeclStmt] declaration -# 301| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x94 -# 301| Type = [Struct] String -# 301| getVariable().getInitializer(): [Initializer] initializer for x94 -# 301| getExpr(): [ConstructorCall] call to String -# 301| Type = [VoidType] void -# 301| ValueCategory = prvalue -# 302| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 302| Type = [VoidType] void -# 302| ValueCategory = prvalue -# 302| getQualifier(): [VariableAccess] x94 -# 302| Type = [Struct] String -# 302| ValueCategory = lvalue -# 302| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 302| Conversion = [BoolConversion] conversion to bool -# 302| Type = [BoolType] bool -# 302| Value = [CStyleCast] 0 -# 302| ValueCategory = prvalue -# 303| getStmt(95): [DoStmt] do (...) ... -# 305| getCondition(): [Literal] 0 -# 305| Type = [IntType] int -# 305| Value = [Literal] 0 -# 305| ValueCategory = prvalue -# 303| getStmt(): [BlockStmt] { ... } -# 304| getStmt(0): [DeclStmt] declaration -# 304| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x95 -# 304| Type = [Struct] String -# 304| getVariable().getInitializer(): [Initializer] initializer for x95 -# 304| getExpr(): [ConstructorCall] call to String -# 304| Type = [VoidType] void -# 304| ValueCategory = prvalue -# 305| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 305| Type = [VoidType] void -# 305| ValueCategory = prvalue -# 305| getQualifier(): [VariableAccess] x95 -# 305| Type = [Struct] String -# 305| ValueCategory = lvalue -# 305| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 305| Conversion = [BoolConversion] conversion to bool -# 305| Type = [BoolType] bool -# 305| Value = [CStyleCast] 0 -# 305| ValueCategory = prvalue -# 306| getStmt(96): [DoStmt] do (...) ... -# 308| getCondition(): [Literal] 0 -# 308| Type = [IntType] int -# 308| Value = [Literal] 0 -# 308| ValueCategory = prvalue -# 306| getStmt(): [BlockStmt] { ... } -# 307| getStmt(0): [DeclStmt] declaration -# 307| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x96 -# 307| Type = [Struct] String -# 307| getVariable().getInitializer(): [Initializer] initializer for x96 -# 307| getExpr(): [ConstructorCall] call to String -# 307| Type = [VoidType] void -# 307| ValueCategory = prvalue -# 308| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 308| Type = [VoidType] void -# 308| ValueCategory = prvalue -# 308| getQualifier(): [VariableAccess] x96 -# 308| Type = [Struct] String -# 308| ValueCategory = lvalue -# 308| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 308| Conversion = [BoolConversion] conversion to bool -# 308| Type = [BoolType] bool -# 308| Value = [CStyleCast] 0 -# 308| ValueCategory = prvalue -# 309| getStmt(97): [DoStmt] do (...) ... -# 311| getCondition(): [Literal] 0 -# 311| Type = [IntType] int -# 311| Value = [Literal] 0 -# 311| ValueCategory = prvalue -# 309| getStmt(): [BlockStmt] { ... } -# 310| getStmt(0): [DeclStmt] declaration -# 310| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x97 -# 310| Type = [Struct] String -# 310| getVariable().getInitializer(): [Initializer] initializer for x97 -# 310| getExpr(): [ConstructorCall] call to String -# 310| Type = [VoidType] void -# 310| ValueCategory = prvalue -# 311| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 311| Type = [VoidType] void -# 311| ValueCategory = prvalue -# 311| getQualifier(): [VariableAccess] x97 -# 311| Type = [Struct] String -# 311| ValueCategory = lvalue -# 311| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 311| Conversion = [BoolConversion] conversion to bool -# 311| Type = [BoolType] bool -# 311| Value = [CStyleCast] 0 -# 311| ValueCategory = prvalue -# 312| getStmt(98): [DoStmt] do (...) ... -# 314| getCondition(): [Literal] 0 -# 314| Type = [IntType] int -# 314| Value = [Literal] 0 -# 314| ValueCategory = prvalue -# 312| getStmt(): [BlockStmt] { ... } -# 313| getStmt(0): [DeclStmt] declaration -# 313| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x98 -# 313| Type = [Struct] String -# 313| getVariable().getInitializer(): [Initializer] initializer for x98 -# 313| getExpr(): [ConstructorCall] call to String -# 313| Type = [VoidType] void -# 313| ValueCategory = prvalue -# 314| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 314| Type = [VoidType] void -# 314| ValueCategory = prvalue -# 314| getQualifier(): [VariableAccess] x98 -# 314| Type = [Struct] String -# 314| ValueCategory = lvalue -# 314| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 314| Conversion = [BoolConversion] conversion to bool -# 314| Type = [BoolType] bool -# 314| Value = [CStyleCast] 0 -# 314| ValueCategory = prvalue -# 315| getStmt(99): [DoStmt] do (...) ... -# 317| getCondition(): [Literal] 0 -# 317| Type = [IntType] int -# 317| Value = [Literal] 0 -# 317| ValueCategory = prvalue -# 315| getStmt(): [BlockStmt] { ... } -# 316| getStmt(0): [DeclStmt] declaration -# 316| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x99 -# 316| Type = [Struct] String -# 316| getVariable().getInitializer(): [Initializer] initializer for x99 -# 316| getExpr(): [ConstructorCall] call to String -# 316| Type = [VoidType] void -# 316| ValueCategory = prvalue -# 317| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 317| Type = [VoidType] void -# 317| ValueCategory = prvalue -# 317| getQualifier(): [VariableAccess] x99 -# 317| Type = [Struct] String -# 317| ValueCategory = lvalue -# 317| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 317| Conversion = [BoolConversion] conversion to bool -# 317| Type = [BoolType] bool -# 317| Value = [CStyleCast] 0 -# 317| ValueCategory = prvalue -# 318| getStmt(100): [DoStmt] do (...) ... -# 320| getCondition(): [Literal] 0 -# 320| Type = [IntType] int -# 320| Value = [Literal] 0 -# 320| ValueCategory = prvalue -# 318| getStmt(): [BlockStmt] { ... } -# 319| getStmt(0): [DeclStmt] declaration -# 319| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x100 -# 319| Type = [Struct] String -# 319| getVariable().getInitializer(): [Initializer] initializer for x100 -# 319| getExpr(): [ConstructorCall] call to String -# 319| Type = [VoidType] void -# 319| ValueCategory = prvalue -# 320| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 320| Type = [VoidType] void -# 320| ValueCategory = prvalue -# 320| getQualifier(): [VariableAccess] x100 -# 320| Type = [Struct] String -# 320| ValueCategory = lvalue -# 320| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 320| Conversion = [BoolConversion] conversion to bool -# 320| Type = [BoolType] bool -# 320| Value = [CStyleCast] 0 -# 320| ValueCategory = prvalue -# 321| getStmt(101): [DoStmt] do (...) ... -# 323| getCondition(): [Literal] 0 -# 323| Type = [IntType] int -# 323| Value = [Literal] 0 -# 323| ValueCategory = prvalue -# 321| getStmt(): [BlockStmt] { ... } -# 322| getStmt(0): [DeclStmt] declaration -# 322| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x101 -# 322| Type = [Struct] String -# 322| getVariable().getInitializer(): [Initializer] initializer for x101 -# 322| getExpr(): [ConstructorCall] call to String -# 322| Type = [VoidType] void -# 322| ValueCategory = prvalue -# 323| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 323| Type = [VoidType] void -# 323| ValueCategory = prvalue -# 323| getQualifier(): [VariableAccess] x101 -# 323| Type = [Struct] String -# 323| ValueCategory = lvalue -# 323| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 323| Conversion = [BoolConversion] conversion to bool -# 323| Type = [BoolType] bool -# 323| Value = [CStyleCast] 0 -# 323| ValueCategory = prvalue -# 324| getStmt(102): [DoStmt] do (...) ... -# 326| getCondition(): [Literal] 0 -# 326| Type = [IntType] int -# 326| Value = [Literal] 0 -# 326| ValueCategory = prvalue -# 324| getStmt(): [BlockStmt] { ... } -# 325| getStmt(0): [DeclStmt] declaration -# 325| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x102 -# 325| Type = [Struct] String -# 325| getVariable().getInitializer(): [Initializer] initializer for x102 -# 325| getExpr(): [ConstructorCall] call to String -# 325| Type = [VoidType] void -# 325| ValueCategory = prvalue -# 326| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 326| Type = [VoidType] void -# 326| ValueCategory = prvalue -# 326| getQualifier(): [VariableAccess] x102 -# 326| Type = [Struct] String -# 326| ValueCategory = lvalue -# 326| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 326| Conversion = [BoolConversion] conversion to bool -# 326| Type = [BoolType] bool -# 326| Value = [CStyleCast] 0 -# 326| ValueCategory = prvalue -# 327| getStmt(103): [DoStmt] do (...) ... -# 329| getCondition(): [Literal] 0 -# 329| Type = [IntType] int -# 329| Value = [Literal] 0 -# 329| ValueCategory = prvalue -# 327| getStmt(): [BlockStmt] { ... } -# 328| getStmt(0): [DeclStmt] declaration -# 328| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x103 -# 328| Type = [Struct] String -# 328| getVariable().getInitializer(): [Initializer] initializer for x103 -# 328| getExpr(): [ConstructorCall] call to String -# 328| Type = [VoidType] void -# 328| ValueCategory = prvalue -# 329| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 329| Type = [VoidType] void -# 329| ValueCategory = prvalue -# 329| getQualifier(): [VariableAccess] x103 -# 329| Type = [Struct] String -# 329| ValueCategory = lvalue -# 329| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 329| Conversion = [BoolConversion] conversion to bool -# 329| Type = [BoolType] bool -# 329| Value = [CStyleCast] 0 -# 329| ValueCategory = prvalue -# 330| getStmt(104): [DoStmt] do (...) ... -# 332| getCondition(): [Literal] 0 -# 332| Type = [IntType] int -# 332| Value = [Literal] 0 -# 332| ValueCategory = prvalue -# 330| getStmt(): [BlockStmt] { ... } -# 331| getStmt(0): [DeclStmt] declaration -# 331| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x104 -# 331| Type = [Struct] String -# 331| getVariable().getInitializer(): [Initializer] initializer for x104 -# 331| getExpr(): [ConstructorCall] call to String -# 331| Type = [VoidType] void -# 331| ValueCategory = prvalue -# 332| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 332| Type = [VoidType] void -# 332| ValueCategory = prvalue -# 332| getQualifier(): [VariableAccess] x104 -# 332| Type = [Struct] String -# 332| ValueCategory = lvalue -# 332| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 332| Conversion = [BoolConversion] conversion to bool -# 332| Type = [BoolType] bool -# 332| Value = [CStyleCast] 0 -# 332| ValueCategory = prvalue -# 333| getStmt(105): [DoStmt] do (...) ... -# 335| getCondition(): [Literal] 0 -# 335| Type = [IntType] int -# 335| Value = [Literal] 0 -# 335| ValueCategory = prvalue -# 333| getStmt(): [BlockStmt] { ... } -# 334| getStmt(0): [DeclStmt] declaration -# 334| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x105 -# 334| Type = [Struct] String -# 334| getVariable().getInitializer(): [Initializer] initializer for x105 -# 334| getExpr(): [ConstructorCall] call to String -# 334| Type = [VoidType] void -# 334| ValueCategory = prvalue -# 335| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 335| Type = [VoidType] void -# 335| ValueCategory = prvalue -# 335| getQualifier(): [VariableAccess] x105 -# 335| Type = [Struct] String -# 335| ValueCategory = lvalue -# 335| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 335| Conversion = [BoolConversion] conversion to bool -# 335| Type = [BoolType] bool -# 335| Value = [CStyleCast] 0 -# 335| ValueCategory = prvalue -# 336| getStmt(106): [DoStmt] do (...) ... -# 338| getCondition(): [Literal] 0 -# 338| Type = [IntType] int -# 338| Value = [Literal] 0 -# 338| ValueCategory = prvalue -# 336| getStmt(): [BlockStmt] { ... } -# 337| getStmt(0): [DeclStmt] declaration -# 337| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x106 -# 337| Type = [Struct] String -# 337| getVariable().getInitializer(): [Initializer] initializer for x106 -# 337| getExpr(): [ConstructorCall] call to String -# 337| Type = [VoidType] void -# 337| ValueCategory = prvalue -# 338| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 338| Type = [VoidType] void -# 338| ValueCategory = prvalue -# 338| getQualifier(): [VariableAccess] x106 -# 338| Type = [Struct] String -# 338| ValueCategory = lvalue -# 338| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 338| Conversion = [BoolConversion] conversion to bool -# 338| Type = [BoolType] bool -# 338| Value = [CStyleCast] 0 -# 338| ValueCategory = prvalue -# 339| getStmt(107): [DoStmt] do (...) ... -# 341| getCondition(): [Literal] 0 -# 341| Type = [IntType] int -# 341| Value = [Literal] 0 -# 341| ValueCategory = prvalue -# 339| getStmt(): [BlockStmt] { ... } -# 340| getStmt(0): [DeclStmt] declaration -# 340| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x107 -# 340| Type = [Struct] String -# 340| getVariable().getInitializer(): [Initializer] initializer for x107 -# 340| getExpr(): [ConstructorCall] call to String -# 340| Type = [VoidType] void -# 340| ValueCategory = prvalue -# 341| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 341| Type = [VoidType] void -# 341| ValueCategory = prvalue -# 341| getQualifier(): [VariableAccess] x107 -# 341| Type = [Struct] String -# 341| ValueCategory = lvalue -# 341| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 341| Conversion = [BoolConversion] conversion to bool -# 341| Type = [BoolType] bool -# 341| Value = [CStyleCast] 0 -# 341| ValueCategory = prvalue -# 342| getStmt(108): [DoStmt] do (...) ... -# 344| getCondition(): [Literal] 0 -# 344| Type = [IntType] int -# 344| Value = [Literal] 0 -# 344| ValueCategory = prvalue -# 342| getStmt(): [BlockStmt] { ... } -# 343| getStmt(0): [DeclStmt] declaration -# 343| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x108 -# 343| Type = [Struct] String -# 343| getVariable().getInitializer(): [Initializer] initializer for x108 -# 343| getExpr(): [ConstructorCall] call to String -# 343| Type = [VoidType] void -# 343| ValueCategory = prvalue -# 344| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 344| Type = [VoidType] void -# 344| ValueCategory = prvalue -# 344| getQualifier(): [VariableAccess] x108 -# 344| Type = [Struct] String -# 344| ValueCategory = lvalue -# 344| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 344| Conversion = [BoolConversion] conversion to bool -# 344| Type = [BoolType] bool -# 344| Value = [CStyleCast] 0 -# 344| ValueCategory = prvalue -# 345| getStmt(109): [DoStmt] do (...) ... -# 347| getCondition(): [Literal] 0 -# 347| Type = [IntType] int -# 347| Value = [Literal] 0 -# 347| ValueCategory = prvalue -# 345| getStmt(): [BlockStmt] { ... } -# 346| getStmt(0): [DeclStmt] declaration -# 346| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x109 -# 346| Type = [Struct] String -# 346| getVariable().getInitializer(): [Initializer] initializer for x109 -# 346| getExpr(): [ConstructorCall] call to String -# 346| Type = [VoidType] void -# 346| ValueCategory = prvalue -# 347| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 347| Type = [VoidType] void -# 347| ValueCategory = prvalue -# 347| getQualifier(): [VariableAccess] x109 -# 347| Type = [Struct] String -# 347| ValueCategory = lvalue -# 347| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 347| Conversion = [BoolConversion] conversion to bool -# 347| Type = [BoolType] bool -# 347| Value = [CStyleCast] 0 -# 347| ValueCategory = prvalue -# 348| getStmt(110): [DoStmt] do (...) ... -# 350| getCondition(): [Literal] 0 -# 350| Type = [IntType] int -# 350| Value = [Literal] 0 -# 350| ValueCategory = prvalue -# 348| getStmt(): [BlockStmt] { ... } -# 349| getStmt(0): [DeclStmt] declaration -# 349| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x110 -# 349| Type = [Struct] String -# 349| getVariable().getInitializer(): [Initializer] initializer for x110 -# 349| getExpr(): [ConstructorCall] call to String -# 349| Type = [VoidType] void -# 349| ValueCategory = prvalue -# 350| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 350| Type = [VoidType] void -# 350| ValueCategory = prvalue -# 350| getQualifier(): [VariableAccess] x110 -# 350| Type = [Struct] String -# 350| ValueCategory = lvalue -# 350| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 350| Conversion = [BoolConversion] conversion to bool -# 350| Type = [BoolType] bool -# 350| Value = [CStyleCast] 0 -# 350| ValueCategory = prvalue -# 351| getStmt(111): [DoStmt] do (...) ... -# 353| getCondition(): [Literal] 0 -# 353| Type = [IntType] int -# 353| Value = [Literal] 0 -# 353| ValueCategory = prvalue -# 351| getStmt(): [BlockStmt] { ... } -# 352| getStmt(0): [DeclStmt] declaration -# 352| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x111 -# 352| Type = [Struct] String -# 352| getVariable().getInitializer(): [Initializer] initializer for x111 -# 352| getExpr(): [ConstructorCall] call to String -# 352| Type = [VoidType] void -# 352| ValueCategory = prvalue -# 353| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 353| Type = [VoidType] void -# 353| ValueCategory = prvalue -# 353| getQualifier(): [VariableAccess] x111 -# 353| Type = [Struct] String -# 353| ValueCategory = lvalue -# 353| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 353| Conversion = [BoolConversion] conversion to bool -# 353| Type = [BoolType] bool -# 353| Value = [CStyleCast] 0 -# 353| ValueCategory = prvalue -# 354| getStmt(112): [DoStmt] do (...) ... -# 356| getCondition(): [Literal] 0 -# 356| Type = [IntType] int -# 356| Value = [Literal] 0 -# 356| ValueCategory = prvalue -# 354| getStmt(): [BlockStmt] { ... } -# 355| getStmt(0): [DeclStmt] declaration -# 355| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x112 -# 355| Type = [Struct] String -# 355| getVariable().getInitializer(): [Initializer] initializer for x112 -# 355| getExpr(): [ConstructorCall] call to String -# 355| Type = [VoidType] void -# 355| ValueCategory = prvalue -# 356| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 356| Type = [VoidType] void -# 356| ValueCategory = prvalue -# 356| getQualifier(): [VariableAccess] x112 -# 356| Type = [Struct] String -# 356| ValueCategory = lvalue -# 356| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 356| Conversion = [BoolConversion] conversion to bool -# 356| Type = [BoolType] bool -# 356| Value = [CStyleCast] 0 -# 356| ValueCategory = prvalue -# 357| getStmt(113): [DoStmt] do (...) ... -# 359| getCondition(): [Literal] 0 -# 359| Type = [IntType] int -# 359| Value = [Literal] 0 -# 359| ValueCategory = prvalue -# 357| getStmt(): [BlockStmt] { ... } -# 358| getStmt(0): [DeclStmt] declaration -# 358| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x113 -# 358| Type = [Struct] String -# 358| getVariable().getInitializer(): [Initializer] initializer for x113 -# 358| getExpr(): [ConstructorCall] call to String -# 358| Type = [VoidType] void -# 358| ValueCategory = prvalue -# 359| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 359| Type = [VoidType] void -# 359| ValueCategory = prvalue -# 359| getQualifier(): [VariableAccess] x113 -# 359| Type = [Struct] String -# 359| ValueCategory = lvalue -# 359| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 359| Conversion = [BoolConversion] conversion to bool -# 359| Type = [BoolType] bool -# 359| Value = [CStyleCast] 0 -# 359| ValueCategory = prvalue -# 360| getStmt(114): [DoStmt] do (...) ... -# 362| getCondition(): [Literal] 0 -# 362| Type = [IntType] int -# 362| Value = [Literal] 0 -# 362| ValueCategory = prvalue -# 360| getStmt(): [BlockStmt] { ... } -# 361| getStmt(0): [DeclStmt] declaration -# 361| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x114 -# 361| Type = [Struct] String -# 361| getVariable().getInitializer(): [Initializer] initializer for x114 -# 361| getExpr(): [ConstructorCall] call to String -# 361| Type = [VoidType] void -# 361| ValueCategory = prvalue -# 362| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 362| Type = [VoidType] void -# 362| ValueCategory = prvalue -# 362| getQualifier(): [VariableAccess] x114 -# 362| Type = [Struct] String -# 362| ValueCategory = lvalue -# 362| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 362| Conversion = [BoolConversion] conversion to bool -# 362| Type = [BoolType] bool -# 362| Value = [CStyleCast] 0 -# 362| ValueCategory = prvalue -# 363| getStmt(115): [DoStmt] do (...) ... -# 365| getCondition(): [Literal] 0 -# 365| Type = [IntType] int -# 365| Value = [Literal] 0 -# 365| ValueCategory = prvalue -# 363| getStmt(): [BlockStmt] { ... } -# 364| getStmt(0): [DeclStmt] declaration -# 364| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x115 -# 364| Type = [Struct] String -# 364| getVariable().getInitializer(): [Initializer] initializer for x115 -# 364| getExpr(): [ConstructorCall] call to String -# 364| Type = [VoidType] void -# 364| ValueCategory = prvalue -# 365| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 365| Type = [VoidType] void -# 365| ValueCategory = prvalue -# 365| getQualifier(): [VariableAccess] x115 -# 365| Type = [Struct] String -# 365| ValueCategory = lvalue -# 365| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 365| Conversion = [BoolConversion] conversion to bool -# 365| Type = [BoolType] bool -# 365| Value = [CStyleCast] 0 -# 365| ValueCategory = prvalue -# 366| getStmt(116): [DoStmt] do (...) ... -# 368| getCondition(): [Literal] 0 -# 368| Type = [IntType] int -# 368| Value = [Literal] 0 -# 368| ValueCategory = prvalue -# 366| getStmt(): [BlockStmt] { ... } -# 367| getStmt(0): [DeclStmt] declaration -# 367| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x116 -# 367| Type = [Struct] String -# 367| getVariable().getInitializer(): [Initializer] initializer for x116 -# 367| getExpr(): [ConstructorCall] call to String -# 367| Type = [VoidType] void -# 367| ValueCategory = prvalue -# 368| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 368| Type = [VoidType] void -# 368| ValueCategory = prvalue -# 368| getQualifier(): [VariableAccess] x116 -# 368| Type = [Struct] String -# 368| ValueCategory = lvalue -# 368| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 368| Conversion = [BoolConversion] conversion to bool -# 368| Type = [BoolType] bool -# 368| Value = [CStyleCast] 0 -# 368| ValueCategory = prvalue -# 369| getStmt(117): [DoStmt] do (...) ... -# 371| getCondition(): [Literal] 0 -# 371| Type = [IntType] int -# 371| Value = [Literal] 0 -# 371| ValueCategory = prvalue -# 369| getStmt(): [BlockStmt] { ... } -# 370| getStmt(0): [DeclStmt] declaration -# 370| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x117 -# 370| Type = [Struct] String -# 370| getVariable().getInitializer(): [Initializer] initializer for x117 -# 370| getExpr(): [ConstructorCall] call to String -# 370| Type = [VoidType] void -# 370| ValueCategory = prvalue -# 371| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 371| Type = [VoidType] void -# 371| ValueCategory = prvalue -# 371| getQualifier(): [VariableAccess] x117 -# 371| Type = [Struct] String -# 371| ValueCategory = lvalue -# 371| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 371| Conversion = [BoolConversion] conversion to bool -# 371| Type = [BoolType] bool -# 371| Value = [CStyleCast] 0 -# 371| ValueCategory = prvalue -# 372| getStmt(118): [DoStmt] do (...) ... -# 374| getCondition(): [Literal] 0 -# 374| Type = [IntType] int -# 374| Value = [Literal] 0 -# 374| ValueCategory = prvalue -# 372| getStmt(): [BlockStmt] { ... } -# 373| getStmt(0): [DeclStmt] declaration -# 373| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x118 -# 373| Type = [Struct] String -# 373| getVariable().getInitializer(): [Initializer] initializer for x118 -# 373| getExpr(): [ConstructorCall] call to String -# 373| Type = [VoidType] void -# 373| ValueCategory = prvalue -# 374| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 374| Type = [VoidType] void -# 374| ValueCategory = prvalue -# 374| getQualifier(): [VariableAccess] x118 -# 374| Type = [Struct] String -# 374| ValueCategory = lvalue -# 374| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 374| Conversion = [BoolConversion] conversion to bool -# 374| Type = [BoolType] bool -# 374| Value = [CStyleCast] 0 -# 374| ValueCategory = prvalue -# 375| getStmt(119): [DoStmt] do (...) ... -# 377| getCondition(): [Literal] 0 -# 377| Type = [IntType] int -# 377| Value = [Literal] 0 -# 377| ValueCategory = prvalue -# 375| getStmt(): [BlockStmt] { ... } -# 376| getStmt(0): [DeclStmt] declaration -# 376| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x119 -# 376| Type = [Struct] String -# 376| getVariable().getInitializer(): [Initializer] initializer for x119 -# 376| getExpr(): [ConstructorCall] call to String -# 376| Type = [VoidType] void -# 376| ValueCategory = prvalue -# 377| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 377| Type = [VoidType] void -# 377| ValueCategory = prvalue -# 377| getQualifier(): [VariableAccess] x119 -# 377| Type = [Struct] String -# 377| ValueCategory = lvalue -# 377| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 377| Conversion = [BoolConversion] conversion to bool -# 377| Type = [BoolType] bool -# 377| Value = [CStyleCast] 0 -# 377| ValueCategory = prvalue -# 378| getStmt(120): [DoStmt] do (...) ... -# 380| getCondition(): [Literal] 0 -# 380| Type = [IntType] int -# 380| Value = [Literal] 0 -# 380| ValueCategory = prvalue -# 378| getStmt(): [BlockStmt] { ... } -# 379| getStmt(0): [DeclStmt] declaration -# 379| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x120 -# 379| Type = [Struct] String -# 379| getVariable().getInitializer(): [Initializer] initializer for x120 -# 379| getExpr(): [ConstructorCall] call to String -# 379| Type = [VoidType] void -# 379| ValueCategory = prvalue -# 380| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 380| Type = [VoidType] void -# 380| ValueCategory = prvalue -# 380| getQualifier(): [VariableAccess] x120 -# 380| Type = [Struct] String -# 380| ValueCategory = lvalue -# 380| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 380| Conversion = [BoolConversion] conversion to bool -# 380| Type = [BoolType] bool -# 380| Value = [CStyleCast] 0 -# 380| ValueCategory = prvalue -# 381| getStmt(121): [DoStmt] do (...) ... -# 383| getCondition(): [Literal] 0 -# 383| Type = [IntType] int -# 383| Value = [Literal] 0 -# 383| ValueCategory = prvalue -# 381| getStmt(): [BlockStmt] { ... } -# 382| getStmt(0): [DeclStmt] declaration -# 382| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x121 -# 382| Type = [Struct] String -# 382| getVariable().getInitializer(): [Initializer] initializer for x121 -# 382| getExpr(): [ConstructorCall] call to String -# 382| Type = [VoidType] void -# 382| ValueCategory = prvalue -# 383| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 383| Type = [VoidType] void -# 383| ValueCategory = prvalue -# 383| getQualifier(): [VariableAccess] x121 -# 383| Type = [Struct] String -# 383| ValueCategory = lvalue -# 383| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 383| Conversion = [BoolConversion] conversion to bool -# 383| Type = [BoolType] bool -# 383| Value = [CStyleCast] 0 -# 383| ValueCategory = prvalue -# 384| getStmt(122): [DoStmt] do (...) ... -# 386| getCondition(): [Literal] 0 -# 386| Type = [IntType] int -# 386| Value = [Literal] 0 -# 386| ValueCategory = prvalue -# 384| getStmt(): [BlockStmt] { ... } -# 385| getStmt(0): [DeclStmt] declaration -# 385| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x122 -# 385| Type = [Struct] String -# 385| getVariable().getInitializer(): [Initializer] initializer for x122 -# 385| getExpr(): [ConstructorCall] call to String -# 385| Type = [VoidType] void -# 385| ValueCategory = prvalue -# 386| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 386| Type = [VoidType] void -# 386| ValueCategory = prvalue -# 386| getQualifier(): [VariableAccess] x122 -# 386| Type = [Struct] String -# 386| ValueCategory = lvalue -# 386| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 386| Conversion = [BoolConversion] conversion to bool -# 386| Type = [BoolType] bool -# 386| Value = [CStyleCast] 0 -# 386| ValueCategory = prvalue -# 387| getStmt(123): [DoStmt] do (...) ... -# 389| getCondition(): [Literal] 0 -# 389| Type = [IntType] int -# 389| Value = [Literal] 0 -# 389| ValueCategory = prvalue -# 387| getStmt(): [BlockStmt] { ... } -# 388| getStmt(0): [DeclStmt] declaration -# 388| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x123 -# 388| Type = [Struct] String -# 388| getVariable().getInitializer(): [Initializer] initializer for x123 -# 388| getExpr(): [ConstructorCall] call to String -# 388| Type = [VoidType] void -# 388| ValueCategory = prvalue -# 389| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 389| Type = [VoidType] void -# 389| ValueCategory = prvalue -# 389| getQualifier(): [VariableAccess] x123 -# 389| Type = [Struct] String -# 389| ValueCategory = lvalue -# 389| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 389| Conversion = [BoolConversion] conversion to bool -# 389| Type = [BoolType] bool -# 389| Value = [CStyleCast] 0 -# 389| ValueCategory = prvalue -# 390| getStmt(124): [DoStmt] do (...) ... -# 392| getCondition(): [Literal] 0 -# 392| Type = [IntType] int -# 392| Value = [Literal] 0 -# 392| ValueCategory = prvalue -# 390| getStmt(): [BlockStmt] { ... } -# 391| getStmt(0): [DeclStmt] declaration -# 391| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x124 -# 391| Type = [Struct] String -# 391| getVariable().getInitializer(): [Initializer] initializer for x124 -# 391| getExpr(): [ConstructorCall] call to String -# 391| Type = [VoidType] void -# 391| ValueCategory = prvalue -# 392| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 392| Type = [VoidType] void -# 392| ValueCategory = prvalue -# 392| getQualifier(): [VariableAccess] x124 -# 392| Type = [Struct] String -# 392| ValueCategory = lvalue -# 392| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 392| Conversion = [BoolConversion] conversion to bool -# 392| Type = [BoolType] bool -# 392| Value = [CStyleCast] 0 -# 392| ValueCategory = prvalue -# 393| getStmt(125): [DoStmt] do (...) ... -# 395| getCondition(): [Literal] 0 -# 395| Type = [IntType] int -# 395| Value = [Literal] 0 -# 395| ValueCategory = prvalue -# 393| getStmt(): [BlockStmt] { ... } -# 394| getStmt(0): [DeclStmt] declaration -# 394| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x125 -# 394| Type = [Struct] String -# 394| getVariable().getInitializer(): [Initializer] initializer for x125 -# 394| getExpr(): [ConstructorCall] call to String -# 394| Type = [VoidType] void -# 394| ValueCategory = prvalue -# 395| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 395| Type = [VoidType] void -# 395| ValueCategory = prvalue -# 395| getQualifier(): [VariableAccess] x125 -# 395| Type = [Struct] String -# 395| ValueCategory = lvalue -# 395| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 395| Conversion = [BoolConversion] conversion to bool -# 395| Type = [BoolType] bool -# 395| Value = [CStyleCast] 0 -# 395| ValueCategory = prvalue -# 396| getStmt(126): [DoStmt] do (...) ... -# 398| getCondition(): [Literal] 0 -# 398| Type = [IntType] int -# 398| Value = [Literal] 0 -# 398| ValueCategory = prvalue -# 396| getStmt(): [BlockStmt] { ... } -# 397| getStmt(0): [DeclStmt] declaration -# 397| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x126 -# 397| Type = [Struct] String -# 397| getVariable().getInitializer(): [Initializer] initializer for x126 -# 397| getExpr(): [ConstructorCall] call to String -# 397| Type = [VoidType] void -# 397| ValueCategory = prvalue -# 398| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 398| Type = [VoidType] void -# 398| ValueCategory = prvalue -# 398| getQualifier(): [VariableAccess] x126 -# 398| Type = [Struct] String -# 398| ValueCategory = lvalue -# 398| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 398| Conversion = [BoolConversion] conversion to bool -# 398| Type = [BoolType] bool -# 398| Value = [CStyleCast] 0 -# 398| ValueCategory = prvalue -# 399| getStmt(127): [DoStmt] do (...) ... -# 401| getCondition(): [Literal] 0 -# 401| Type = [IntType] int -# 401| Value = [Literal] 0 -# 401| ValueCategory = prvalue -# 399| getStmt(): [BlockStmt] { ... } -# 400| getStmt(0): [DeclStmt] declaration -# 400| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x127 -# 400| Type = [Struct] String -# 400| getVariable().getInitializer(): [Initializer] initializer for x127 -# 400| getExpr(): [ConstructorCall] call to String -# 400| Type = [VoidType] void -# 400| ValueCategory = prvalue -# 401| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 401| Type = [VoidType] void -# 401| ValueCategory = prvalue -# 401| getQualifier(): [VariableAccess] x127 -# 401| Type = [Struct] String -# 401| ValueCategory = lvalue -# 401| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 401| Conversion = [BoolConversion] conversion to bool -# 401| Type = [BoolType] bool -# 401| Value = [CStyleCast] 0 -# 401| ValueCategory = prvalue -# 402| getStmt(128): [DoStmt] do (...) ... -# 404| getCondition(): [Literal] 0 -# 404| Type = [IntType] int -# 404| Value = [Literal] 0 -# 404| ValueCategory = prvalue -# 402| getStmt(): [BlockStmt] { ... } -# 403| getStmt(0): [DeclStmt] declaration -# 403| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x128 -# 403| Type = [Struct] String -# 403| getVariable().getInitializer(): [Initializer] initializer for x128 -# 403| getExpr(): [ConstructorCall] call to String -# 403| Type = [VoidType] void -# 403| ValueCategory = prvalue -# 404| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 404| Type = [VoidType] void -# 404| ValueCategory = prvalue -# 404| getQualifier(): [VariableAccess] x128 -# 404| Type = [Struct] String -# 404| ValueCategory = lvalue -# 404| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 404| Conversion = [BoolConversion] conversion to bool -# 404| Type = [BoolType] bool -# 404| Value = [CStyleCast] 0 -# 404| ValueCategory = prvalue -# 405| getStmt(129): [DoStmt] do (...) ... -# 407| getCondition(): [Literal] 0 -# 407| Type = [IntType] int -# 407| Value = [Literal] 0 -# 407| ValueCategory = prvalue -# 405| getStmt(): [BlockStmt] { ... } -# 406| getStmt(0): [DeclStmt] declaration -# 406| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x129 -# 406| Type = [Struct] String -# 406| getVariable().getInitializer(): [Initializer] initializer for x129 -# 406| getExpr(): [ConstructorCall] call to String -# 406| Type = [VoidType] void -# 406| ValueCategory = prvalue -# 407| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 407| Type = [VoidType] void -# 407| ValueCategory = prvalue -# 407| getQualifier(): [VariableAccess] x129 -# 407| Type = [Struct] String -# 407| ValueCategory = lvalue -# 407| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 407| Conversion = [BoolConversion] conversion to bool -# 407| Type = [BoolType] bool -# 407| Value = [CStyleCast] 0 -# 407| ValueCategory = prvalue -# 408| getStmt(130): [DoStmt] do (...) ... -# 410| getCondition(): [Literal] 0 -# 410| Type = [IntType] int -# 410| Value = [Literal] 0 -# 410| ValueCategory = prvalue -# 408| getStmt(): [BlockStmt] { ... } -# 409| getStmt(0): [DeclStmt] declaration -# 409| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x130 -# 409| Type = [Struct] String -# 409| getVariable().getInitializer(): [Initializer] initializer for x130 -# 409| getExpr(): [ConstructorCall] call to String -# 409| Type = [VoidType] void -# 409| ValueCategory = prvalue -# 410| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 410| Type = [VoidType] void -# 410| ValueCategory = prvalue -# 410| getQualifier(): [VariableAccess] x130 -# 410| Type = [Struct] String -# 410| ValueCategory = lvalue -# 410| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 410| Conversion = [BoolConversion] conversion to bool -# 410| Type = [BoolType] bool -# 410| Value = [CStyleCast] 0 -# 410| ValueCategory = prvalue -# 411| getStmt(131): [DoStmt] do (...) ... -# 413| getCondition(): [Literal] 0 -# 413| Type = [IntType] int -# 413| Value = [Literal] 0 -# 413| ValueCategory = prvalue -# 411| getStmt(): [BlockStmt] { ... } -# 412| getStmt(0): [DeclStmt] declaration -# 412| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x131 -# 412| Type = [Struct] String -# 412| getVariable().getInitializer(): [Initializer] initializer for x131 -# 412| getExpr(): [ConstructorCall] call to String -# 412| Type = [VoidType] void -# 412| ValueCategory = prvalue -# 413| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 413| Type = [VoidType] void -# 413| ValueCategory = prvalue -# 413| getQualifier(): [VariableAccess] x131 -# 413| Type = [Struct] String -# 413| ValueCategory = lvalue -# 413| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 413| Conversion = [BoolConversion] conversion to bool -# 413| Type = [BoolType] bool -# 413| Value = [CStyleCast] 0 -# 413| ValueCategory = prvalue -# 414| getStmt(132): [DoStmt] do (...) ... -# 416| getCondition(): [Literal] 0 -# 416| Type = [IntType] int -# 416| Value = [Literal] 0 -# 416| ValueCategory = prvalue -# 414| getStmt(): [BlockStmt] { ... } -# 415| getStmt(0): [DeclStmt] declaration -# 415| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x132 -# 415| Type = [Struct] String -# 415| getVariable().getInitializer(): [Initializer] initializer for x132 -# 415| getExpr(): [ConstructorCall] call to String -# 415| Type = [VoidType] void -# 415| ValueCategory = prvalue -# 416| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 416| Type = [VoidType] void -# 416| ValueCategory = prvalue -# 416| getQualifier(): [VariableAccess] x132 -# 416| Type = [Struct] String -# 416| ValueCategory = lvalue -# 416| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 416| Conversion = [BoolConversion] conversion to bool -# 416| Type = [BoolType] bool -# 416| Value = [CStyleCast] 0 -# 416| ValueCategory = prvalue -# 417| getStmt(133): [DoStmt] do (...) ... -# 419| getCondition(): [Literal] 0 -# 419| Type = [IntType] int -# 419| Value = [Literal] 0 -# 419| ValueCategory = prvalue -# 417| getStmt(): [BlockStmt] { ... } -# 418| getStmt(0): [DeclStmt] declaration -# 418| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x133 -# 418| Type = [Struct] String -# 418| getVariable().getInitializer(): [Initializer] initializer for x133 -# 418| getExpr(): [ConstructorCall] call to String -# 418| Type = [VoidType] void -# 418| ValueCategory = prvalue -# 419| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 419| Type = [VoidType] void -# 419| ValueCategory = prvalue -# 419| getQualifier(): [VariableAccess] x133 -# 419| Type = [Struct] String -# 419| ValueCategory = lvalue -# 419| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 419| Conversion = [BoolConversion] conversion to bool -# 419| Type = [BoolType] bool -# 419| Value = [CStyleCast] 0 -# 419| ValueCategory = prvalue -# 420| getStmt(134): [DoStmt] do (...) ... -# 422| getCondition(): [Literal] 0 -# 422| Type = [IntType] int -# 422| Value = [Literal] 0 -# 422| ValueCategory = prvalue -# 420| getStmt(): [BlockStmt] { ... } -# 421| getStmt(0): [DeclStmt] declaration -# 421| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x134 -# 421| Type = [Struct] String -# 421| getVariable().getInitializer(): [Initializer] initializer for x134 -# 421| getExpr(): [ConstructorCall] call to String -# 421| Type = [VoidType] void -# 421| ValueCategory = prvalue -# 422| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 422| Type = [VoidType] void -# 422| ValueCategory = prvalue -# 422| getQualifier(): [VariableAccess] x134 -# 422| Type = [Struct] String -# 422| ValueCategory = lvalue -# 422| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 422| Conversion = [BoolConversion] conversion to bool -# 422| Type = [BoolType] bool -# 422| Value = [CStyleCast] 0 -# 422| ValueCategory = prvalue -# 423| getStmt(135): [DoStmt] do (...) ... -# 425| getCondition(): [Literal] 0 -# 425| Type = [IntType] int -# 425| Value = [Literal] 0 -# 425| ValueCategory = prvalue -# 423| getStmt(): [BlockStmt] { ... } -# 424| getStmt(0): [DeclStmt] declaration -# 424| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x135 -# 424| Type = [Struct] String -# 424| getVariable().getInitializer(): [Initializer] initializer for x135 -# 424| getExpr(): [ConstructorCall] call to String -# 424| Type = [VoidType] void -# 424| ValueCategory = prvalue -# 425| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 425| Type = [VoidType] void -# 425| ValueCategory = prvalue -# 425| getQualifier(): [VariableAccess] x135 -# 425| Type = [Struct] String -# 425| ValueCategory = lvalue -# 425| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 425| Conversion = [BoolConversion] conversion to bool -# 425| Type = [BoolType] bool -# 425| Value = [CStyleCast] 0 -# 425| ValueCategory = prvalue -# 426| getStmt(136): [DoStmt] do (...) ... -# 428| getCondition(): [Literal] 0 -# 428| Type = [IntType] int -# 428| Value = [Literal] 0 -# 428| ValueCategory = prvalue -# 426| getStmt(): [BlockStmt] { ... } -# 427| getStmt(0): [DeclStmt] declaration -# 427| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x136 -# 427| Type = [Struct] String -# 427| getVariable().getInitializer(): [Initializer] initializer for x136 -# 427| getExpr(): [ConstructorCall] call to String -# 427| Type = [VoidType] void -# 427| ValueCategory = prvalue -# 428| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 428| Type = [VoidType] void -# 428| ValueCategory = prvalue -# 428| getQualifier(): [VariableAccess] x136 -# 428| Type = [Struct] String -# 428| ValueCategory = lvalue -# 428| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 428| Conversion = [BoolConversion] conversion to bool -# 428| Type = [BoolType] bool -# 428| Value = [CStyleCast] 0 -# 428| ValueCategory = prvalue -# 429| getStmt(137): [DoStmt] do (...) ... -# 431| getCondition(): [Literal] 0 -# 431| Type = [IntType] int -# 431| Value = [Literal] 0 -# 431| ValueCategory = prvalue -# 429| getStmt(): [BlockStmt] { ... } -# 430| getStmt(0): [DeclStmt] declaration -# 430| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x137 -# 430| Type = [Struct] String -# 430| getVariable().getInitializer(): [Initializer] initializer for x137 -# 430| getExpr(): [ConstructorCall] call to String -# 430| Type = [VoidType] void -# 430| ValueCategory = prvalue -# 431| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 431| Type = [VoidType] void -# 431| ValueCategory = prvalue -# 431| getQualifier(): [VariableAccess] x137 -# 431| Type = [Struct] String -# 431| ValueCategory = lvalue -# 431| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 431| Conversion = [BoolConversion] conversion to bool -# 431| Type = [BoolType] bool -# 431| Value = [CStyleCast] 0 -# 431| ValueCategory = prvalue -# 432| getStmt(138): [DoStmt] do (...) ... -# 434| getCondition(): [Literal] 0 -# 434| Type = [IntType] int -# 434| Value = [Literal] 0 -# 434| ValueCategory = prvalue -# 432| getStmt(): [BlockStmt] { ... } -# 433| getStmt(0): [DeclStmt] declaration -# 433| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x138 -# 433| Type = [Struct] String -# 433| getVariable().getInitializer(): [Initializer] initializer for x138 -# 433| getExpr(): [ConstructorCall] call to String -# 433| Type = [VoidType] void -# 433| ValueCategory = prvalue -# 434| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 434| Type = [VoidType] void -# 434| ValueCategory = prvalue -# 434| getQualifier(): [VariableAccess] x138 -# 434| Type = [Struct] String -# 434| ValueCategory = lvalue -# 434| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 434| Conversion = [BoolConversion] conversion to bool -# 434| Type = [BoolType] bool -# 434| Value = [CStyleCast] 0 -# 434| ValueCategory = prvalue -# 435| getStmt(139): [DoStmt] do (...) ... -# 437| getCondition(): [Literal] 0 -# 437| Type = [IntType] int -# 437| Value = [Literal] 0 -# 437| ValueCategory = prvalue -# 435| getStmt(): [BlockStmt] { ... } -# 436| getStmt(0): [DeclStmt] declaration -# 436| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x139 -# 436| Type = [Struct] String -# 436| getVariable().getInitializer(): [Initializer] initializer for x139 -# 436| getExpr(): [ConstructorCall] call to String -# 436| Type = [VoidType] void -# 436| ValueCategory = prvalue -# 437| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 437| Type = [VoidType] void -# 437| ValueCategory = prvalue -# 437| getQualifier(): [VariableAccess] x139 -# 437| Type = [Struct] String -# 437| ValueCategory = lvalue -# 437| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 437| Conversion = [BoolConversion] conversion to bool -# 437| Type = [BoolType] bool -# 437| Value = [CStyleCast] 0 -# 437| ValueCategory = prvalue -# 438| getStmt(140): [DoStmt] do (...) ... -# 440| getCondition(): [Literal] 0 -# 440| Type = [IntType] int -# 440| Value = [Literal] 0 -# 440| ValueCategory = prvalue -# 438| getStmt(): [BlockStmt] { ... } -# 439| getStmt(0): [DeclStmt] declaration -# 439| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x140 -# 439| Type = [Struct] String -# 439| getVariable().getInitializer(): [Initializer] initializer for x140 -# 439| getExpr(): [ConstructorCall] call to String -# 439| Type = [VoidType] void -# 439| ValueCategory = prvalue -# 440| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 440| Type = [VoidType] void -# 440| ValueCategory = prvalue -# 440| getQualifier(): [VariableAccess] x140 -# 440| Type = [Struct] String -# 440| ValueCategory = lvalue -# 440| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 440| Conversion = [BoolConversion] conversion to bool -# 440| Type = [BoolType] bool -# 440| Value = [CStyleCast] 0 -# 440| ValueCategory = prvalue -# 441| getStmt(141): [DoStmt] do (...) ... -# 443| getCondition(): [Literal] 0 -# 443| Type = [IntType] int -# 443| Value = [Literal] 0 -# 443| ValueCategory = prvalue -# 441| getStmt(): [BlockStmt] { ... } -# 442| getStmt(0): [DeclStmt] declaration -# 442| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x141 -# 442| Type = [Struct] String -# 442| getVariable().getInitializer(): [Initializer] initializer for x141 -# 442| getExpr(): [ConstructorCall] call to String -# 442| Type = [VoidType] void -# 442| ValueCategory = prvalue -# 443| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 443| Type = [VoidType] void -# 443| ValueCategory = prvalue -# 443| getQualifier(): [VariableAccess] x141 -# 443| Type = [Struct] String -# 443| ValueCategory = lvalue -# 443| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 443| Conversion = [BoolConversion] conversion to bool -# 443| Type = [BoolType] bool -# 443| Value = [CStyleCast] 0 -# 443| ValueCategory = prvalue -# 444| getStmt(142): [DoStmt] do (...) ... -# 446| getCondition(): [Literal] 0 -# 446| Type = [IntType] int -# 446| Value = [Literal] 0 -# 446| ValueCategory = prvalue -# 444| getStmt(): [BlockStmt] { ... } -# 445| getStmt(0): [DeclStmt] declaration -# 445| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x142 -# 445| Type = [Struct] String -# 445| getVariable().getInitializer(): [Initializer] initializer for x142 -# 445| getExpr(): [ConstructorCall] call to String -# 445| Type = [VoidType] void -# 445| ValueCategory = prvalue -# 446| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 446| Type = [VoidType] void -# 446| ValueCategory = prvalue -# 446| getQualifier(): [VariableAccess] x142 -# 446| Type = [Struct] String -# 446| ValueCategory = lvalue -# 446| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 446| Conversion = [BoolConversion] conversion to bool -# 446| Type = [BoolType] bool -# 446| Value = [CStyleCast] 0 -# 446| ValueCategory = prvalue -# 447| getStmt(143): [DoStmt] do (...) ... -# 449| getCondition(): [Literal] 0 -# 449| Type = [IntType] int -# 449| Value = [Literal] 0 -# 449| ValueCategory = prvalue -# 447| getStmt(): [BlockStmt] { ... } -# 448| getStmt(0): [DeclStmt] declaration -# 448| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x143 -# 448| Type = [Struct] String -# 448| getVariable().getInitializer(): [Initializer] initializer for x143 -# 448| getExpr(): [ConstructorCall] call to String -# 448| Type = [VoidType] void -# 448| ValueCategory = prvalue -# 449| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 449| Type = [VoidType] void -# 449| ValueCategory = prvalue -# 449| getQualifier(): [VariableAccess] x143 -# 449| Type = [Struct] String -# 449| ValueCategory = lvalue -# 449| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 449| Conversion = [BoolConversion] conversion to bool -# 449| Type = [BoolType] bool -# 449| Value = [CStyleCast] 0 -# 449| ValueCategory = prvalue -# 450| getStmt(144): [DoStmt] do (...) ... -# 452| getCondition(): [Literal] 0 -# 452| Type = [IntType] int -# 452| Value = [Literal] 0 -# 452| ValueCategory = prvalue -# 450| getStmt(): [BlockStmt] { ... } -# 451| getStmt(0): [DeclStmt] declaration -# 451| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x144 -# 451| Type = [Struct] String -# 451| getVariable().getInitializer(): [Initializer] initializer for x144 -# 451| getExpr(): [ConstructorCall] call to String -# 451| Type = [VoidType] void -# 451| ValueCategory = prvalue -# 452| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 452| Type = [VoidType] void -# 452| ValueCategory = prvalue -# 452| getQualifier(): [VariableAccess] x144 -# 452| Type = [Struct] String -# 452| ValueCategory = lvalue -# 452| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 452| Conversion = [BoolConversion] conversion to bool -# 452| Type = [BoolType] bool -# 452| Value = [CStyleCast] 0 -# 452| ValueCategory = prvalue -# 453| getStmt(145): [DoStmt] do (...) ... -# 455| getCondition(): [Literal] 0 -# 455| Type = [IntType] int -# 455| Value = [Literal] 0 -# 455| ValueCategory = prvalue -# 453| getStmt(): [BlockStmt] { ... } -# 454| getStmt(0): [DeclStmt] declaration -# 454| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x145 -# 454| Type = [Struct] String -# 454| getVariable().getInitializer(): [Initializer] initializer for x145 -# 454| getExpr(): [ConstructorCall] call to String -# 454| Type = [VoidType] void -# 454| ValueCategory = prvalue -# 455| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 455| Type = [VoidType] void -# 455| ValueCategory = prvalue -# 455| getQualifier(): [VariableAccess] x145 -# 455| Type = [Struct] String -# 455| ValueCategory = lvalue -# 455| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 455| Conversion = [BoolConversion] conversion to bool -# 455| Type = [BoolType] bool -# 455| Value = [CStyleCast] 0 -# 455| ValueCategory = prvalue -# 456| getStmt(146): [DoStmt] do (...) ... -# 458| getCondition(): [Literal] 0 -# 458| Type = [IntType] int -# 458| Value = [Literal] 0 -# 458| ValueCategory = prvalue -# 456| getStmt(): [BlockStmt] { ... } -# 457| getStmt(0): [DeclStmt] declaration -# 457| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x146 -# 457| Type = [Struct] String -# 457| getVariable().getInitializer(): [Initializer] initializer for x146 -# 457| getExpr(): [ConstructorCall] call to String -# 457| Type = [VoidType] void -# 457| ValueCategory = prvalue -# 458| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 458| Type = [VoidType] void -# 458| ValueCategory = prvalue -# 458| getQualifier(): [VariableAccess] x146 -# 458| Type = [Struct] String -# 458| ValueCategory = lvalue -# 458| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 458| Conversion = [BoolConversion] conversion to bool -# 458| Type = [BoolType] bool -# 458| Value = [CStyleCast] 0 -# 458| ValueCategory = prvalue -# 459| getStmt(147): [DoStmt] do (...) ... -# 461| getCondition(): [Literal] 0 -# 461| Type = [IntType] int -# 461| Value = [Literal] 0 -# 461| ValueCategory = prvalue -# 459| getStmt(): [BlockStmt] { ... } -# 460| getStmt(0): [DeclStmt] declaration -# 460| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x147 -# 460| Type = [Struct] String -# 460| getVariable().getInitializer(): [Initializer] initializer for x147 -# 460| getExpr(): [ConstructorCall] call to String -# 460| Type = [VoidType] void -# 460| ValueCategory = prvalue -# 461| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 461| Type = [VoidType] void -# 461| ValueCategory = prvalue -# 461| getQualifier(): [VariableAccess] x147 -# 461| Type = [Struct] String -# 461| ValueCategory = lvalue -# 461| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 461| Conversion = [BoolConversion] conversion to bool -# 461| Type = [BoolType] bool -# 461| Value = [CStyleCast] 0 -# 461| ValueCategory = prvalue -# 462| getStmt(148): [DoStmt] do (...) ... -# 464| getCondition(): [Literal] 0 -# 464| Type = [IntType] int -# 464| Value = [Literal] 0 -# 464| ValueCategory = prvalue -# 462| getStmt(): [BlockStmt] { ... } -# 463| getStmt(0): [DeclStmt] declaration -# 463| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x148 -# 463| Type = [Struct] String -# 463| getVariable().getInitializer(): [Initializer] initializer for x148 -# 463| getExpr(): [ConstructorCall] call to String -# 463| Type = [VoidType] void -# 463| ValueCategory = prvalue -# 464| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 464| Type = [VoidType] void -# 464| ValueCategory = prvalue -# 464| getQualifier(): [VariableAccess] x148 -# 464| Type = [Struct] String -# 464| ValueCategory = lvalue -# 464| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 464| Conversion = [BoolConversion] conversion to bool -# 464| Type = [BoolType] bool -# 464| Value = [CStyleCast] 0 -# 464| ValueCategory = prvalue -# 465| getStmt(149): [DoStmt] do (...) ... -# 467| getCondition(): [Literal] 0 -# 467| Type = [IntType] int -# 467| Value = [Literal] 0 -# 467| ValueCategory = prvalue -# 465| getStmt(): [BlockStmt] { ... } -# 466| getStmt(0): [DeclStmt] declaration -# 466| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x149 -# 466| Type = [Struct] String -# 466| getVariable().getInitializer(): [Initializer] initializer for x149 -# 466| getExpr(): [ConstructorCall] call to String -# 466| Type = [VoidType] void -# 466| ValueCategory = prvalue -# 467| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 467| Type = [VoidType] void -# 467| ValueCategory = prvalue -# 467| getQualifier(): [VariableAccess] x149 -# 467| Type = [Struct] String -# 467| ValueCategory = lvalue -# 467| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 467| Conversion = [BoolConversion] conversion to bool -# 467| Type = [BoolType] bool -# 467| Value = [CStyleCast] 0 -# 467| ValueCategory = prvalue -# 468| getStmt(150): [DoStmt] do (...) ... -# 470| getCondition(): [Literal] 0 -# 470| Type = [IntType] int -# 470| Value = [Literal] 0 -# 470| ValueCategory = prvalue -# 468| getStmt(): [BlockStmt] { ... } -# 469| getStmt(0): [DeclStmt] declaration -# 469| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x150 -# 469| Type = [Struct] String -# 469| getVariable().getInitializer(): [Initializer] initializer for x150 -# 469| getExpr(): [ConstructorCall] call to String -# 469| Type = [VoidType] void -# 469| ValueCategory = prvalue -# 470| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 470| Type = [VoidType] void -# 470| ValueCategory = prvalue -# 470| getQualifier(): [VariableAccess] x150 -# 470| Type = [Struct] String -# 470| ValueCategory = lvalue -# 470| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 470| Conversion = [BoolConversion] conversion to bool -# 470| Type = [BoolType] bool -# 470| Value = [CStyleCast] 0 -# 470| ValueCategory = prvalue -# 471| getStmt(151): [DoStmt] do (...) ... -# 473| getCondition(): [Literal] 0 -# 473| Type = [IntType] int -# 473| Value = [Literal] 0 -# 473| ValueCategory = prvalue -# 471| getStmt(): [BlockStmt] { ... } -# 472| getStmt(0): [DeclStmt] declaration -# 472| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x151 -# 472| Type = [Struct] String -# 472| getVariable().getInitializer(): [Initializer] initializer for x151 -# 472| getExpr(): [ConstructorCall] call to String -# 472| Type = [VoidType] void -# 472| ValueCategory = prvalue -# 473| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 473| Type = [VoidType] void -# 473| ValueCategory = prvalue -# 473| getQualifier(): [VariableAccess] x151 -# 473| Type = [Struct] String -# 473| ValueCategory = lvalue -# 473| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 473| Conversion = [BoolConversion] conversion to bool -# 473| Type = [BoolType] bool -# 473| Value = [CStyleCast] 0 -# 473| ValueCategory = prvalue -# 474| getStmt(152): [DoStmt] do (...) ... -# 476| getCondition(): [Literal] 0 -# 476| Type = [IntType] int -# 476| Value = [Literal] 0 -# 476| ValueCategory = prvalue -# 474| getStmt(): [BlockStmt] { ... } -# 475| getStmt(0): [DeclStmt] declaration -# 475| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x152 -# 475| Type = [Struct] String -# 475| getVariable().getInitializer(): [Initializer] initializer for x152 -# 475| getExpr(): [ConstructorCall] call to String -# 475| Type = [VoidType] void -# 475| ValueCategory = prvalue -# 476| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 476| Type = [VoidType] void -# 476| ValueCategory = prvalue -# 476| getQualifier(): [VariableAccess] x152 -# 476| Type = [Struct] String -# 476| ValueCategory = lvalue -# 476| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 476| Conversion = [BoolConversion] conversion to bool -# 476| Type = [BoolType] bool -# 476| Value = [CStyleCast] 0 -# 476| ValueCategory = prvalue -# 477| getStmt(153): [DoStmt] do (...) ... -# 479| getCondition(): [Literal] 0 -# 479| Type = [IntType] int -# 479| Value = [Literal] 0 -# 479| ValueCategory = prvalue -# 477| getStmt(): [BlockStmt] { ... } -# 478| getStmt(0): [DeclStmt] declaration -# 478| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x153 -# 478| Type = [Struct] String -# 478| getVariable().getInitializer(): [Initializer] initializer for x153 -# 478| getExpr(): [ConstructorCall] call to String -# 478| Type = [VoidType] void -# 478| ValueCategory = prvalue -# 479| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 479| Type = [VoidType] void -# 479| ValueCategory = prvalue -# 479| getQualifier(): [VariableAccess] x153 -# 479| Type = [Struct] String -# 479| ValueCategory = lvalue -# 479| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 479| Conversion = [BoolConversion] conversion to bool -# 479| Type = [BoolType] bool -# 479| Value = [CStyleCast] 0 -# 479| ValueCategory = prvalue -# 480| getStmt(154): [DoStmt] do (...) ... -# 482| getCondition(): [Literal] 0 -# 482| Type = [IntType] int -# 482| Value = [Literal] 0 -# 482| ValueCategory = prvalue -# 480| getStmt(): [BlockStmt] { ... } -# 481| getStmt(0): [DeclStmt] declaration -# 481| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x154 -# 481| Type = [Struct] String -# 481| getVariable().getInitializer(): [Initializer] initializer for x154 -# 481| getExpr(): [ConstructorCall] call to String -# 481| Type = [VoidType] void -# 481| ValueCategory = prvalue -# 482| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 482| Type = [VoidType] void -# 482| ValueCategory = prvalue -# 482| getQualifier(): [VariableAccess] x154 -# 482| Type = [Struct] String -# 482| ValueCategory = lvalue -# 482| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 482| Conversion = [BoolConversion] conversion to bool -# 482| Type = [BoolType] bool -# 482| Value = [CStyleCast] 0 -# 482| ValueCategory = prvalue -# 483| getStmt(155): [DoStmt] do (...) ... -# 485| getCondition(): [Literal] 0 -# 485| Type = [IntType] int -# 485| Value = [Literal] 0 -# 485| ValueCategory = prvalue -# 483| getStmt(): [BlockStmt] { ... } -# 484| getStmt(0): [DeclStmt] declaration -# 484| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x155 -# 484| Type = [Struct] String -# 484| getVariable().getInitializer(): [Initializer] initializer for x155 -# 484| getExpr(): [ConstructorCall] call to String -# 484| Type = [VoidType] void -# 484| ValueCategory = prvalue -# 485| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 485| Type = [VoidType] void -# 485| ValueCategory = prvalue -# 485| getQualifier(): [VariableAccess] x155 -# 485| Type = [Struct] String -# 485| ValueCategory = lvalue -# 485| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 485| Conversion = [BoolConversion] conversion to bool -# 485| Type = [BoolType] bool -# 485| Value = [CStyleCast] 0 -# 485| ValueCategory = prvalue -# 486| getStmt(156): [DoStmt] do (...) ... -# 488| getCondition(): [Literal] 0 -# 488| Type = [IntType] int -# 488| Value = [Literal] 0 -# 488| ValueCategory = prvalue -# 486| getStmt(): [BlockStmt] { ... } -# 487| getStmt(0): [DeclStmt] declaration -# 487| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x156 -# 487| Type = [Struct] String -# 487| getVariable().getInitializer(): [Initializer] initializer for x156 -# 487| getExpr(): [ConstructorCall] call to String -# 487| Type = [VoidType] void -# 487| ValueCategory = prvalue -# 488| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 488| Type = [VoidType] void -# 488| ValueCategory = prvalue -# 488| getQualifier(): [VariableAccess] x156 -# 488| Type = [Struct] String -# 488| ValueCategory = lvalue -# 488| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 488| Conversion = [BoolConversion] conversion to bool -# 488| Type = [BoolType] bool -# 488| Value = [CStyleCast] 0 -# 488| ValueCategory = prvalue -# 489| getStmt(157): [DoStmt] do (...) ... -# 491| getCondition(): [Literal] 0 -# 491| Type = [IntType] int -# 491| Value = [Literal] 0 -# 491| ValueCategory = prvalue -# 489| getStmt(): [BlockStmt] { ... } -# 490| getStmt(0): [DeclStmt] declaration -# 490| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x157 -# 490| Type = [Struct] String -# 490| getVariable().getInitializer(): [Initializer] initializer for x157 -# 490| getExpr(): [ConstructorCall] call to String -# 490| Type = [VoidType] void -# 490| ValueCategory = prvalue -# 491| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 491| Type = [VoidType] void -# 491| ValueCategory = prvalue -# 491| getQualifier(): [VariableAccess] x157 -# 491| Type = [Struct] String -# 491| ValueCategory = lvalue -# 491| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 491| Conversion = [BoolConversion] conversion to bool -# 491| Type = [BoolType] bool -# 491| Value = [CStyleCast] 0 -# 491| ValueCategory = prvalue -# 492| getStmt(158): [DoStmt] do (...) ... -# 494| getCondition(): [Literal] 0 -# 494| Type = [IntType] int -# 494| Value = [Literal] 0 -# 494| ValueCategory = prvalue -# 492| getStmt(): [BlockStmt] { ... } -# 493| getStmt(0): [DeclStmt] declaration -# 493| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x158 -# 493| Type = [Struct] String -# 493| getVariable().getInitializer(): [Initializer] initializer for x158 -# 493| getExpr(): [ConstructorCall] call to String -# 493| Type = [VoidType] void -# 493| ValueCategory = prvalue -# 494| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 494| Type = [VoidType] void -# 494| ValueCategory = prvalue -# 494| getQualifier(): [VariableAccess] x158 -# 494| Type = [Struct] String -# 494| ValueCategory = lvalue -# 494| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 494| Conversion = [BoolConversion] conversion to bool -# 494| Type = [BoolType] bool -# 494| Value = [CStyleCast] 0 -# 494| ValueCategory = prvalue -# 495| getStmt(159): [DoStmt] do (...) ... -# 497| getCondition(): [Literal] 0 -# 497| Type = [IntType] int -# 497| Value = [Literal] 0 -# 497| ValueCategory = prvalue -# 495| getStmt(): [BlockStmt] { ... } -# 496| getStmt(0): [DeclStmt] declaration -# 496| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x159 -# 496| Type = [Struct] String -# 496| getVariable().getInitializer(): [Initializer] initializer for x159 -# 496| getExpr(): [ConstructorCall] call to String -# 496| Type = [VoidType] void -# 496| ValueCategory = prvalue -# 497| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 497| Type = [VoidType] void -# 497| ValueCategory = prvalue -# 497| getQualifier(): [VariableAccess] x159 -# 497| Type = [Struct] String -# 497| ValueCategory = lvalue -# 497| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 497| Conversion = [BoolConversion] conversion to bool -# 497| Type = [BoolType] bool -# 497| Value = [CStyleCast] 0 -# 497| ValueCategory = prvalue -# 498| getStmt(160): [DoStmt] do (...) ... -# 500| getCondition(): [Literal] 0 -# 500| Type = [IntType] int -# 500| Value = [Literal] 0 -# 500| ValueCategory = prvalue -# 498| getStmt(): [BlockStmt] { ... } -# 499| getStmt(0): [DeclStmt] declaration -# 499| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x160 -# 499| Type = [Struct] String -# 499| getVariable().getInitializer(): [Initializer] initializer for x160 -# 499| getExpr(): [ConstructorCall] call to String -# 499| Type = [VoidType] void -# 499| ValueCategory = prvalue -# 500| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 500| Type = [VoidType] void -# 500| ValueCategory = prvalue -# 500| getQualifier(): [VariableAccess] x160 -# 500| Type = [Struct] String -# 500| ValueCategory = lvalue -# 500| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 500| Conversion = [BoolConversion] conversion to bool -# 500| Type = [BoolType] bool -# 500| Value = [CStyleCast] 0 -# 500| ValueCategory = prvalue -# 501| getStmt(161): [DoStmt] do (...) ... -# 503| getCondition(): [Literal] 0 -# 503| Type = [IntType] int -# 503| Value = [Literal] 0 -# 503| ValueCategory = prvalue -# 501| getStmt(): [BlockStmt] { ... } -# 502| getStmt(0): [DeclStmt] declaration -# 502| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x161 -# 502| Type = [Struct] String -# 502| getVariable().getInitializer(): [Initializer] initializer for x161 -# 502| getExpr(): [ConstructorCall] call to String -# 502| Type = [VoidType] void -# 502| ValueCategory = prvalue -# 503| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 503| Type = [VoidType] void -# 503| ValueCategory = prvalue -# 503| getQualifier(): [VariableAccess] x161 -# 503| Type = [Struct] String -# 503| ValueCategory = lvalue -# 503| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 503| Conversion = [BoolConversion] conversion to bool -# 503| Type = [BoolType] bool -# 503| Value = [CStyleCast] 0 -# 503| ValueCategory = prvalue -# 504| getStmt(162): [DoStmt] do (...) ... -# 506| getCondition(): [Literal] 0 -# 506| Type = [IntType] int -# 506| Value = [Literal] 0 -# 506| ValueCategory = prvalue -# 504| getStmt(): [BlockStmt] { ... } -# 505| getStmt(0): [DeclStmt] declaration -# 505| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x162 -# 505| Type = [Struct] String -# 505| getVariable().getInitializer(): [Initializer] initializer for x162 -# 505| getExpr(): [ConstructorCall] call to String -# 505| Type = [VoidType] void -# 505| ValueCategory = prvalue -# 506| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 506| Type = [VoidType] void -# 506| ValueCategory = prvalue -# 506| getQualifier(): [VariableAccess] x162 -# 506| Type = [Struct] String -# 506| ValueCategory = lvalue -# 506| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 506| Conversion = [BoolConversion] conversion to bool -# 506| Type = [BoolType] bool -# 506| Value = [CStyleCast] 0 -# 506| ValueCategory = prvalue -# 507| getStmt(163): [DoStmt] do (...) ... -# 509| getCondition(): [Literal] 0 -# 509| Type = [IntType] int -# 509| Value = [Literal] 0 -# 509| ValueCategory = prvalue -# 507| getStmt(): [BlockStmt] { ... } -# 508| getStmt(0): [DeclStmt] declaration -# 508| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x163 -# 508| Type = [Struct] String -# 508| getVariable().getInitializer(): [Initializer] initializer for x163 -# 508| getExpr(): [ConstructorCall] call to String -# 508| Type = [VoidType] void -# 508| ValueCategory = prvalue -# 509| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 509| Type = [VoidType] void -# 509| ValueCategory = prvalue -# 509| getQualifier(): [VariableAccess] x163 -# 509| Type = [Struct] String -# 509| ValueCategory = lvalue -# 509| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 509| Conversion = [BoolConversion] conversion to bool -# 509| Type = [BoolType] bool -# 509| Value = [CStyleCast] 0 -# 509| ValueCategory = prvalue -# 510| getStmt(164): [DoStmt] do (...) ... -# 512| getCondition(): [Literal] 0 -# 512| Type = [IntType] int -# 512| Value = [Literal] 0 -# 512| ValueCategory = prvalue -# 510| getStmt(): [BlockStmt] { ... } -# 511| getStmt(0): [DeclStmt] declaration -# 511| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x164 -# 511| Type = [Struct] String -# 511| getVariable().getInitializer(): [Initializer] initializer for x164 -# 511| getExpr(): [ConstructorCall] call to String -# 511| Type = [VoidType] void -# 511| ValueCategory = prvalue -# 512| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 512| Type = [VoidType] void -# 512| ValueCategory = prvalue -# 512| getQualifier(): [VariableAccess] x164 -# 512| Type = [Struct] String -# 512| ValueCategory = lvalue -# 512| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 512| Conversion = [BoolConversion] conversion to bool -# 512| Type = [BoolType] bool -# 512| Value = [CStyleCast] 0 -# 512| ValueCategory = prvalue -# 513| getStmt(165): [DoStmt] do (...) ... -# 515| getCondition(): [Literal] 0 -# 515| Type = [IntType] int -# 515| Value = [Literal] 0 -# 515| ValueCategory = prvalue -# 513| getStmt(): [BlockStmt] { ... } -# 514| getStmt(0): [DeclStmt] declaration -# 514| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x165 -# 514| Type = [Struct] String -# 514| getVariable().getInitializer(): [Initializer] initializer for x165 -# 514| getExpr(): [ConstructorCall] call to String -# 514| Type = [VoidType] void -# 514| ValueCategory = prvalue -# 515| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 515| Type = [VoidType] void -# 515| ValueCategory = prvalue -# 515| getQualifier(): [VariableAccess] x165 -# 515| Type = [Struct] String -# 515| ValueCategory = lvalue -# 515| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 515| Conversion = [BoolConversion] conversion to bool -# 515| Type = [BoolType] bool -# 515| Value = [CStyleCast] 0 -# 515| ValueCategory = prvalue -# 516| getStmt(166): [DoStmt] do (...) ... -# 518| getCondition(): [Literal] 0 -# 518| Type = [IntType] int -# 518| Value = [Literal] 0 -# 518| ValueCategory = prvalue -# 516| getStmt(): [BlockStmt] { ... } -# 517| getStmt(0): [DeclStmt] declaration -# 517| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x166 -# 517| Type = [Struct] String -# 517| getVariable().getInitializer(): [Initializer] initializer for x166 -# 517| getExpr(): [ConstructorCall] call to String -# 517| Type = [VoidType] void -# 517| ValueCategory = prvalue -# 518| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 518| Type = [VoidType] void -# 518| ValueCategory = prvalue -# 518| getQualifier(): [VariableAccess] x166 -# 518| Type = [Struct] String -# 518| ValueCategory = lvalue -# 518| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 518| Conversion = [BoolConversion] conversion to bool -# 518| Type = [BoolType] bool -# 518| Value = [CStyleCast] 0 -# 518| ValueCategory = prvalue -# 519| getStmt(167): [DoStmt] do (...) ... -# 521| getCondition(): [Literal] 0 -# 521| Type = [IntType] int -# 521| Value = [Literal] 0 -# 521| ValueCategory = prvalue -# 519| getStmt(): [BlockStmt] { ... } -# 520| getStmt(0): [DeclStmt] declaration -# 520| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x167 -# 520| Type = [Struct] String -# 520| getVariable().getInitializer(): [Initializer] initializer for x167 -# 520| getExpr(): [ConstructorCall] call to String -# 520| Type = [VoidType] void -# 520| ValueCategory = prvalue -# 521| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 521| Type = [VoidType] void -# 521| ValueCategory = prvalue -# 521| getQualifier(): [VariableAccess] x167 -# 521| Type = [Struct] String -# 521| ValueCategory = lvalue -# 521| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 521| Conversion = [BoolConversion] conversion to bool -# 521| Type = [BoolType] bool -# 521| Value = [CStyleCast] 0 -# 521| ValueCategory = prvalue -# 522| getStmt(168): [DoStmt] do (...) ... -# 524| getCondition(): [Literal] 0 -# 524| Type = [IntType] int -# 524| Value = [Literal] 0 -# 524| ValueCategory = prvalue -# 522| getStmt(): [BlockStmt] { ... } -# 523| getStmt(0): [DeclStmt] declaration -# 523| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x168 -# 523| Type = [Struct] String -# 523| getVariable().getInitializer(): [Initializer] initializer for x168 -# 523| getExpr(): [ConstructorCall] call to String -# 523| Type = [VoidType] void -# 523| ValueCategory = prvalue -# 524| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 524| Type = [VoidType] void -# 524| ValueCategory = prvalue -# 524| getQualifier(): [VariableAccess] x168 -# 524| Type = [Struct] String -# 524| ValueCategory = lvalue -# 524| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 524| Conversion = [BoolConversion] conversion to bool -# 524| Type = [BoolType] bool -# 524| Value = [CStyleCast] 0 -# 524| ValueCategory = prvalue -# 525| getStmt(169): [DoStmt] do (...) ... -# 527| getCondition(): [Literal] 0 -# 527| Type = [IntType] int -# 527| Value = [Literal] 0 -# 527| ValueCategory = prvalue -# 525| getStmt(): [BlockStmt] { ... } -# 526| getStmt(0): [DeclStmt] declaration -# 526| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x169 -# 526| Type = [Struct] String -# 526| getVariable().getInitializer(): [Initializer] initializer for x169 -# 526| getExpr(): [ConstructorCall] call to String -# 526| Type = [VoidType] void -# 526| ValueCategory = prvalue -# 527| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 527| Type = [VoidType] void -# 527| ValueCategory = prvalue -# 527| getQualifier(): [VariableAccess] x169 -# 527| Type = [Struct] String -# 527| ValueCategory = lvalue -# 527| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 527| Conversion = [BoolConversion] conversion to bool -# 527| Type = [BoolType] bool -# 527| Value = [CStyleCast] 0 -# 527| ValueCategory = prvalue -# 528| getStmt(170): [DoStmt] do (...) ... -# 530| getCondition(): [Literal] 0 -# 530| Type = [IntType] int -# 530| Value = [Literal] 0 -# 530| ValueCategory = prvalue -# 528| getStmt(): [BlockStmt] { ... } -# 529| getStmt(0): [DeclStmt] declaration -# 529| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x170 -# 529| Type = [Struct] String -# 529| getVariable().getInitializer(): [Initializer] initializer for x170 -# 529| getExpr(): [ConstructorCall] call to String -# 529| Type = [VoidType] void -# 529| ValueCategory = prvalue -# 530| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 530| Type = [VoidType] void -# 530| ValueCategory = prvalue -# 530| getQualifier(): [VariableAccess] x170 -# 530| Type = [Struct] String -# 530| ValueCategory = lvalue -# 530| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 530| Conversion = [BoolConversion] conversion to bool -# 530| Type = [BoolType] bool -# 530| Value = [CStyleCast] 0 -# 530| ValueCategory = prvalue -# 531| getStmt(171): [DoStmt] do (...) ... -# 533| getCondition(): [Literal] 0 -# 533| Type = [IntType] int -# 533| Value = [Literal] 0 -# 533| ValueCategory = prvalue -# 531| getStmt(): [BlockStmt] { ... } -# 532| getStmt(0): [DeclStmt] declaration -# 532| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x171 -# 532| Type = [Struct] String -# 532| getVariable().getInitializer(): [Initializer] initializer for x171 -# 532| getExpr(): [ConstructorCall] call to String -# 532| Type = [VoidType] void -# 532| ValueCategory = prvalue -# 533| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 533| Type = [VoidType] void -# 533| ValueCategory = prvalue -# 533| getQualifier(): [VariableAccess] x171 -# 533| Type = [Struct] String -# 533| ValueCategory = lvalue -# 533| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 533| Conversion = [BoolConversion] conversion to bool -# 533| Type = [BoolType] bool -# 533| Value = [CStyleCast] 0 -# 533| ValueCategory = prvalue -# 534| getStmt(172): [DoStmt] do (...) ... -# 536| getCondition(): [Literal] 0 -# 536| Type = [IntType] int -# 536| Value = [Literal] 0 -# 536| ValueCategory = prvalue -# 534| getStmt(): [BlockStmt] { ... } -# 535| getStmt(0): [DeclStmt] declaration -# 535| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x172 -# 535| Type = [Struct] String -# 535| getVariable().getInitializer(): [Initializer] initializer for x172 -# 535| getExpr(): [ConstructorCall] call to String -# 535| Type = [VoidType] void -# 535| ValueCategory = prvalue -# 536| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 536| Type = [VoidType] void -# 536| ValueCategory = prvalue -# 536| getQualifier(): [VariableAccess] x172 -# 536| Type = [Struct] String -# 536| ValueCategory = lvalue -# 536| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 536| Conversion = [BoolConversion] conversion to bool -# 536| Type = [BoolType] bool -# 536| Value = [CStyleCast] 0 -# 536| ValueCategory = prvalue -# 537| getStmt(173): [DoStmt] do (...) ... -# 539| getCondition(): [Literal] 0 -# 539| Type = [IntType] int -# 539| Value = [Literal] 0 -# 539| ValueCategory = prvalue -# 537| getStmt(): [BlockStmt] { ... } -# 538| getStmt(0): [DeclStmt] declaration -# 538| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x173 -# 538| Type = [Struct] String -# 538| getVariable().getInitializer(): [Initializer] initializer for x173 -# 538| getExpr(): [ConstructorCall] call to String -# 538| Type = [VoidType] void -# 538| ValueCategory = prvalue -# 539| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 539| Type = [VoidType] void -# 539| ValueCategory = prvalue -# 539| getQualifier(): [VariableAccess] x173 -# 539| Type = [Struct] String -# 539| ValueCategory = lvalue -# 539| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 539| Conversion = [BoolConversion] conversion to bool -# 539| Type = [BoolType] bool -# 539| Value = [CStyleCast] 0 -# 539| ValueCategory = prvalue -# 540| getStmt(174): [DoStmt] do (...) ... -# 542| getCondition(): [Literal] 0 -# 542| Type = [IntType] int -# 542| Value = [Literal] 0 -# 542| ValueCategory = prvalue -# 540| getStmt(): [BlockStmt] { ... } -# 541| getStmt(0): [DeclStmt] declaration -# 541| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x174 -# 541| Type = [Struct] String -# 541| getVariable().getInitializer(): [Initializer] initializer for x174 -# 541| getExpr(): [ConstructorCall] call to String -# 541| Type = [VoidType] void -# 541| ValueCategory = prvalue -# 542| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 542| Type = [VoidType] void -# 542| ValueCategory = prvalue -# 542| getQualifier(): [VariableAccess] x174 -# 542| Type = [Struct] String -# 542| ValueCategory = lvalue -# 542| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 542| Conversion = [BoolConversion] conversion to bool -# 542| Type = [BoolType] bool -# 542| Value = [CStyleCast] 0 -# 542| ValueCategory = prvalue -# 543| getStmt(175): [DoStmt] do (...) ... -# 545| getCondition(): [Literal] 0 -# 545| Type = [IntType] int -# 545| Value = [Literal] 0 -# 545| ValueCategory = prvalue -# 543| getStmt(): [BlockStmt] { ... } -# 544| getStmt(0): [DeclStmt] declaration -# 544| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x175 -# 544| Type = [Struct] String -# 544| getVariable().getInitializer(): [Initializer] initializer for x175 -# 544| getExpr(): [ConstructorCall] call to String -# 544| Type = [VoidType] void -# 544| ValueCategory = prvalue -# 545| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 545| Type = [VoidType] void -# 545| ValueCategory = prvalue -# 545| getQualifier(): [VariableAccess] x175 -# 545| Type = [Struct] String -# 545| ValueCategory = lvalue -# 545| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 545| Conversion = [BoolConversion] conversion to bool -# 545| Type = [BoolType] bool -# 545| Value = [CStyleCast] 0 -# 545| ValueCategory = prvalue -# 546| getStmt(176): [DoStmt] do (...) ... -# 548| getCondition(): [Literal] 0 -# 548| Type = [IntType] int -# 548| Value = [Literal] 0 -# 548| ValueCategory = prvalue -# 546| getStmt(): [BlockStmt] { ... } -# 547| getStmt(0): [DeclStmt] declaration -# 547| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x176 -# 547| Type = [Struct] String -# 547| getVariable().getInitializer(): [Initializer] initializer for x176 -# 547| getExpr(): [ConstructorCall] call to String -# 547| Type = [VoidType] void -# 547| ValueCategory = prvalue -# 548| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 548| Type = [VoidType] void -# 548| ValueCategory = prvalue -# 548| getQualifier(): [VariableAccess] x176 -# 548| Type = [Struct] String -# 548| ValueCategory = lvalue -# 548| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 548| Conversion = [BoolConversion] conversion to bool -# 548| Type = [BoolType] bool -# 548| Value = [CStyleCast] 0 -# 548| ValueCategory = prvalue -# 549| getStmt(177): [DoStmt] do (...) ... -# 551| getCondition(): [Literal] 0 -# 551| Type = [IntType] int -# 551| Value = [Literal] 0 -# 551| ValueCategory = prvalue -# 549| getStmt(): [BlockStmt] { ... } -# 550| getStmt(0): [DeclStmt] declaration -# 550| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x177 -# 550| Type = [Struct] String -# 550| getVariable().getInitializer(): [Initializer] initializer for x177 -# 550| getExpr(): [ConstructorCall] call to String -# 550| Type = [VoidType] void -# 550| ValueCategory = prvalue -# 551| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 551| Type = [VoidType] void -# 551| ValueCategory = prvalue -# 551| getQualifier(): [VariableAccess] x177 -# 551| Type = [Struct] String -# 551| ValueCategory = lvalue -# 551| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 551| Conversion = [BoolConversion] conversion to bool -# 551| Type = [BoolType] bool -# 551| Value = [CStyleCast] 0 -# 551| ValueCategory = prvalue -# 552| getStmt(178): [DoStmt] do (...) ... -# 554| getCondition(): [Literal] 0 -# 554| Type = [IntType] int -# 554| Value = [Literal] 0 -# 554| ValueCategory = prvalue -# 552| getStmt(): [BlockStmt] { ... } -# 553| getStmt(0): [DeclStmt] declaration -# 553| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x178 -# 553| Type = [Struct] String -# 553| getVariable().getInitializer(): [Initializer] initializer for x178 -# 553| getExpr(): [ConstructorCall] call to String -# 553| Type = [VoidType] void -# 553| ValueCategory = prvalue -# 554| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 554| Type = [VoidType] void -# 554| ValueCategory = prvalue -# 554| getQualifier(): [VariableAccess] x178 -# 554| Type = [Struct] String -# 554| ValueCategory = lvalue -# 554| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 554| Conversion = [BoolConversion] conversion to bool -# 554| Type = [BoolType] bool -# 554| Value = [CStyleCast] 0 -# 554| ValueCategory = prvalue -# 555| getStmt(179): [DoStmt] do (...) ... -# 557| getCondition(): [Literal] 0 -# 557| Type = [IntType] int -# 557| Value = [Literal] 0 -# 557| ValueCategory = prvalue -# 555| getStmt(): [BlockStmt] { ... } -# 556| getStmt(0): [DeclStmt] declaration -# 556| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x179 -# 556| Type = [Struct] String -# 556| getVariable().getInitializer(): [Initializer] initializer for x179 -# 556| getExpr(): [ConstructorCall] call to String -# 556| Type = [VoidType] void -# 556| ValueCategory = prvalue -# 557| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 557| Type = [VoidType] void -# 557| ValueCategory = prvalue -# 557| getQualifier(): [VariableAccess] x179 -# 557| Type = [Struct] String -# 557| ValueCategory = lvalue -# 557| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 557| Conversion = [BoolConversion] conversion to bool -# 557| Type = [BoolType] bool -# 557| Value = [CStyleCast] 0 -# 557| ValueCategory = prvalue -# 558| getStmt(180): [DoStmt] do (...) ... -# 560| getCondition(): [Literal] 0 -# 560| Type = [IntType] int -# 560| Value = [Literal] 0 -# 560| ValueCategory = prvalue -# 558| getStmt(): [BlockStmt] { ... } -# 559| getStmt(0): [DeclStmt] declaration -# 559| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x180 -# 559| Type = [Struct] String -# 559| getVariable().getInitializer(): [Initializer] initializer for x180 -# 559| getExpr(): [ConstructorCall] call to String -# 559| Type = [VoidType] void -# 559| ValueCategory = prvalue -# 560| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 560| Type = [VoidType] void -# 560| ValueCategory = prvalue -# 560| getQualifier(): [VariableAccess] x180 -# 560| Type = [Struct] String -# 560| ValueCategory = lvalue -# 560| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 560| Conversion = [BoolConversion] conversion to bool -# 560| Type = [BoolType] bool -# 560| Value = [CStyleCast] 0 -# 560| ValueCategory = prvalue -# 561| getStmt(181): [DoStmt] do (...) ... -# 563| getCondition(): [Literal] 0 -# 563| Type = [IntType] int -# 563| Value = [Literal] 0 -# 563| ValueCategory = prvalue -# 561| getStmt(): [BlockStmt] { ... } -# 562| getStmt(0): [DeclStmt] declaration -# 562| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x181 -# 562| Type = [Struct] String -# 562| getVariable().getInitializer(): [Initializer] initializer for x181 -# 562| getExpr(): [ConstructorCall] call to String -# 562| Type = [VoidType] void -# 562| ValueCategory = prvalue -# 563| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 563| Type = [VoidType] void -# 563| ValueCategory = prvalue -# 563| getQualifier(): [VariableAccess] x181 -# 563| Type = [Struct] String -# 563| ValueCategory = lvalue -# 563| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 563| Conversion = [BoolConversion] conversion to bool -# 563| Type = [BoolType] bool -# 563| Value = [CStyleCast] 0 -# 563| ValueCategory = prvalue -# 564| getStmt(182): [DoStmt] do (...) ... -# 566| getCondition(): [Literal] 0 -# 566| Type = [IntType] int -# 566| Value = [Literal] 0 -# 566| ValueCategory = prvalue -# 564| getStmt(): [BlockStmt] { ... } -# 565| getStmt(0): [DeclStmt] declaration -# 565| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x182 -# 565| Type = [Struct] String -# 565| getVariable().getInitializer(): [Initializer] initializer for x182 -# 565| getExpr(): [ConstructorCall] call to String -# 565| Type = [VoidType] void -# 565| ValueCategory = prvalue -# 566| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 566| Type = [VoidType] void -# 566| ValueCategory = prvalue -# 566| getQualifier(): [VariableAccess] x182 -# 566| Type = [Struct] String -# 566| ValueCategory = lvalue -# 566| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 566| Conversion = [BoolConversion] conversion to bool -# 566| Type = [BoolType] bool -# 566| Value = [CStyleCast] 0 -# 566| ValueCategory = prvalue -# 567| getStmt(183): [DoStmt] do (...) ... -# 569| getCondition(): [Literal] 0 -# 569| Type = [IntType] int -# 569| Value = [Literal] 0 -# 569| ValueCategory = prvalue -# 567| getStmt(): [BlockStmt] { ... } -# 568| getStmt(0): [DeclStmt] declaration -# 568| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x183 -# 568| Type = [Struct] String -# 568| getVariable().getInitializer(): [Initializer] initializer for x183 -# 568| getExpr(): [ConstructorCall] call to String -# 568| Type = [VoidType] void -# 568| ValueCategory = prvalue -# 569| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 569| Type = [VoidType] void -# 569| ValueCategory = prvalue -# 569| getQualifier(): [VariableAccess] x183 -# 569| Type = [Struct] String -# 569| ValueCategory = lvalue -# 569| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 569| Conversion = [BoolConversion] conversion to bool -# 569| Type = [BoolType] bool -# 569| Value = [CStyleCast] 0 -# 569| ValueCategory = prvalue -# 570| getStmt(184): [DoStmt] do (...) ... -# 572| getCondition(): [Literal] 0 -# 572| Type = [IntType] int -# 572| Value = [Literal] 0 -# 572| ValueCategory = prvalue -# 570| getStmt(): [BlockStmt] { ... } -# 571| getStmt(0): [DeclStmt] declaration -# 571| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x184 -# 571| Type = [Struct] String -# 571| getVariable().getInitializer(): [Initializer] initializer for x184 -# 571| getExpr(): [ConstructorCall] call to String -# 571| Type = [VoidType] void -# 571| ValueCategory = prvalue -# 572| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 572| Type = [VoidType] void -# 572| ValueCategory = prvalue -# 572| getQualifier(): [VariableAccess] x184 -# 572| Type = [Struct] String -# 572| ValueCategory = lvalue -# 572| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 572| Conversion = [BoolConversion] conversion to bool -# 572| Type = [BoolType] bool -# 572| Value = [CStyleCast] 0 -# 572| ValueCategory = prvalue -# 573| getStmt(185): [DoStmt] do (...) ... -# 575| getCondition(): [Literal] 0 -# 575| Type = [IntType] int -# 575| Value = [Literal] 0 -# 575| ValueCategory = prvalue -# 573| getStmt(): [BlockStmt] { ... } -# 574| getStmt(0): [DeclStmt] declaration -# 574| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x185 -# 574| Type = [Struct] String -# 574| getVariable().getInitializer(): [Initializer] initializer for x185 -# 574| getExpr(): [ConstructorCall] call to String -# 574| Type = [VoidType] void -# 574| ValueCategory = prvalue -# 575| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 575| Type = [VoidType] void -# 575| ValueCategory = prvalue -# 575| getQualifier(): [VariableAccess] x185 -# 575| Type = [Struct] String -# 575| ValueCategory = lvalue -# 575| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 575| Conversion = [BoolConversion] conversion to bool -# 575| Type = [BoolType] bool -# 575| Value = [CStyleCast] 0 -# 575| ValueCategory = prvalue -# 576| getStmt(186): [DoStmt] do (...) ... -# 578| getCondition(): [Literal] 0 -# 578| Type = [IntType] int -# 578| Value = [Literal] 0 -# 578| ValueCategory = prvalue -# 576| getStmt(): [BlockStmt] { ... } -# 577| getStmt(0): [DeclStmt] declaration -# 577| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x186 -# 577| Type = [Struct] String -# 577| getVariable().getInitializer(): [Initializer] initializer for x186 -# 577| getExpr(): [ConstructorCall] call to String -# 577| Type = [VoidType] void -# 577| ValueCategory = prvalue -# 578| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 578| Type = [VoidType] void -# 578| ValueCategory = prvalue -# 578| getQualifier(): [VariableAccess] x186 -# 578| Type = [Struct] String -# 578| ValueCategory = lvalue -# 578| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 578| Conversion = [BoolConversion] conversion to bool -# 578| Type = [BoolType] bool -# 578| Value = [CStyleCast] 0 -# 578| ValueCategory = prvalue -# 579| getStmt(187): [DoStmt] do (...) ... -# 581| getCondition(): [Literal] 0 -# 581| Type = [IntType] int -# 581| Value = [Literal] 0 -# 581| ValueCategory = prvalue -# 579| getStmt(): [BlockStmt] { ... } -# 580| getStmt(0): [DeclStmt] declaration -# 580| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x187 -# 580| Type = [Struct] String -# 580| getVariable().getInitializer(): [Initializer] initializer for x187 -# 580| getExpr(): [ConstructorCall] call to String -# 580| Type = [VoidType] void -# 580| ValueCategory = prvalue -# 581| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 581| Type = [VoidType] void -# 581| ValueCategory = prvalue -# 581| getQualifier(): [VariableAccess] x187 -# 581| Type = [Struct] String -# 581| ValueCategory = lvalue -# 581| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 581| Conversion = [BoolConversion] conversion to bool -# 581| Type = [BoolType] bool -# 581| Value = [CStyleCast] 0 -# 581| ValueCategory = prvalue -# 582| getStmt(188): [DoStmt] do (...) ... -# 584| getCondition(): [Literal] 0 -# 584| Type = [IntType] int -# 584| Value = [Literal] 0 -# 584| ValueCategory = prvalue -# 582| getStmt(): [BlockStmt] { ... } -# 583| getStmt(0): [DeclStmt] declaration -# 583| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x188 -# 583| Type = [Struct] String -# 583| getVariable().getInitializer(): [Initializer] initializer for x188 -# 583| getExpr(): [ConstructorCall] call to String -# 583| Type = [VoidType] void -# 583| ValueCategory = prvalue -# 584| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 584| Type = [VoidType] void -# 584| ValueCategory = prvalue -# 584| getQualifier(): [VariableAccess] x188 -# 584| Type = [Struct] String -# 584| ValueCategory = lvalue -# 584| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 584| Conversion = [BoolConversion] conversion to bool -# 584| Type = [BoolType] bool -# 584| Value = [CStyleCast] 0 -# 584| ValueCategory = prvalue -# 585| getStmt(189): [DoStmt] do (...) ... -# 587| getCondition(): [Literal] 0 -# 587| Type = [IntType] int -# 587| Value = [Literal] 0 -# 587| ValueCategory = prvalue -# 585| getStmt(): [BlockStmt] { ... } -# 586| getStmt(0): [DeclStmt] declaration -# 586| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x189 -# 586| Type = [Struct] String -# 586| getVariable().getInitializer(): [Initializer] initializer for x189 -# 586| getExpr(): [ConstructorCall] call to String -# 586| Type = [VoidType] void -# 586| ValueCategory = prvalue -# 587| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 587| Type = [VoidType] void -# 587| ValueCategory = prvalue -# 587| getQualifier(): [VariableAccess] x189 -# 587| Type = [Struct] String -# 587| ValueCategory = lvalue -# 587| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 587| Conversion = [BoolConversion] conversion to bool -# 587| Type = [BoolType] bool -# 587| Value = [CStyleCast] 0 -# 587| ValueCategory = prvalue -# 588| getStmt(190): [DoStmt] do (...) ... -# 590| getCondition(): [Literal] 0 -# 590| Type = [IntType] int -# 590| Value = [Literal] 0 -# 590| ValueCategory = prvalue -# 588| getStmt(): [BlockStmt] { ... } -# 589| getStmt(0): [DeclStmt] declaration -# 589| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x190 -# 589| Type = [Struct] String -# 589| getVariable().getInitializer(): [Initializer] initializer for x190 -# 589| getExpr(): [ConstructorCall] call to String -# 589| Type = [VoidType] void -# 589| ValueCategory = prvalue -# 590| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 590| Type = [VoidType] void -# 590| ValueCategory = prvalue -# 590| getQualifier(): [VariableAccess] x190 -# 590| Type = [Struct] String -# 590| ValueCategory = lvalue -# 590| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 590| Conversion = [BoolConversion] conversion to bool -# 590| Type = [BoolType] bool -# 590| Value = [CStyleCast] 0 -# 590| ValueCategory = prvalue -# 591| getStmt(191): [DoStmt] do (...) ... -# 593| getCondition(): [Literal] 0 -# 593| Type = [IntType] int -# 593| Value = [Literal] 0 -# 593| ValueCategory = prvalue -# 591| getStmt(): [BlockStmt] { ... } -# 592| getStmt(0): [DeclStmt] declaration -# 592| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x191 -# 592| Type = [Struct] String -# 592| getVariable().getInitializer(): [Initializer] initializer for x191 -# 592| getExpr(): [ConstructorCall] call to String -# 592| Type = [VoidType] void -# 592| ValueCategory = prvalue -# 593| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 593| Type = [VoidType] void -# 593| ValueCategory = prvalue -# 593| getQualifier(): [VariableAccess] x191 -# 593| Type = [Struct] String -# 593| ValueCategory = lvalue -# 593| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 593| Conversion = [BoolConversion] conversion to bool -# 593| Type = [BoolType] bool -# 593| Value = [CStyleCast] 0 -# 593| ValueCategory = prvalue -# 594| getStmt(192): [DoStmt] do (...) ... -# 596| getCondition(): [Literal] 0 -# 596| Type = [IntType] int -# 596| Value = [Literal] 0 -# 596| ValueCategory = prvalue -# 594| getStmt(): [BlockStmt] { ... } -# 595| getStmt(0): [DeclStmt] declaration -# 595| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x192 -# 595| Type = [Struct] String -# 595| getVariable().getInitializer(): [Initializer] initializer for x192 -# 595| getExpr(): [ConstructorCall] call to String -# 595| Type = [VoidType] void -# 595| ValueCategory = prvalue -# 596| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 596| Type = [VoidType] void -# 596| ValueCategory = prvalue -# 596| getQualifier(): [VariableAccess] x192 -# 596| Type = [Struct] String -# 596| ValueCategory = lvalue -# 596| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 596| Conversion = [BoolConversion] conversion to bool -# 596| Type = [BoolType] bool -# 596| Value = [CStyleCast] 0 -# 596| ValueCategory = prvalue -# 597| getStmt(193): [DoStmt] do (...) ... -# 599| getCondition(): [Literal] 0 -# 599| Type = [IntType] int -# 599| Value = [Literal] 0 -# 599| ValueCategory = prvalue -# 597| getStmt(): [BlockStmt] { ... } -# 598| getStmt(0): [DeclStmt] declaration -# 598| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x193 -# 598| Type = [Struct] String -# 598| getVariable().getInitializer(): [Initializer] initializer for x193 -# 598| getExpr(): [ConstructorCall] call to String -# 598| Type = [VoidType] void -# 598| ValueCategory = prvalue -# 599| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 599| Type = [VoidType] void -# 599| ValueCategory = prvalue -# 599| getQualifier(): [VariableAccess] x193 -# 599| Type = [Struct] String -# 599| ValueCategory = lvalue -# 599| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 599| Conversion = [BoolConversion] conversion to bool -# 599| Type = [BoolType] bool -# 599| Value = [CStyleCast] 0 -# 599| ValueCategory = prvalue -# 600| getStmt(194): [DoStmt] do (...) ... -# 602| getCondition(): [Literal] 0 -# 602| Type = [IntType] int -# 602| Value = [Literal] 0 -# 602| ValueCategory = prvalue -# 600| getStmt(): [BlockStmt] { ... } -# 601| getStmt(0): [DeclStmt] declaration -# 601| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x194 -# 601| Type = [Struct] String -# 601| getVariable().getInitializer(): [Initializer] initializer for x194 -# 601| getExpr(): [ConstructorCall] call to String -# 601| Type = [VoidType] void -# 601| ValueCategory = prvalue -# 602| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 602| Type = [VoidType] void -# 602| ValueCategory = prvalue -# 602| getQualifier(): [VariableAccess] x194 -# 602| Type = [Struct] String -# 602| ValueCategory = lvalue -# 602| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 602| Conversion = [BoolConversion] conversion to bool -# 602| Type = [BoolType] bool -# 602| Value = [CStyleCast] 0 -# 602| ValueCategory = prvalue -# 603| getStmt(195): [DoStmt] do (...) ... -# 605| getCondition(): [Literal] 0 -# 605| Type = [IntType] int -# 605| Value = [Literal] 0 -# 605| ValueCategory = prvalue -# 603| getStmt(): [BlockStmt] { ... } -# 604| getStmt(0): [DeclStmt] declaration -# 604| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x195 -# 604| Type = [Struct] String -# 604| getVariable().getInitializer(): [Initializer] initializer for x195 -# 604| getExpr(): [ConstructorCall] call to String -# 604| Type = [VoidType] void -# 604| ValueCategory = prvalue -# 605| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 605| Type = [VoidType] void -# 605| ValueCategory = prvalue -# 605| getQualifier(): [VariableAccess] x195 -# 605| Type = [Struct] String -# 605| ValueCategory = lvalue -# 605| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 605| Conversion = [BoolConversion] conversion to bool -# 605| Type = [BoolType] bool -# 605| Value = [CStyleCast] 0 -# 605| ValueCategory = prvalue -# 606| getStmt(196): [DoStmt] do (...) ... -# 608| getCondition(): [Literal] 0 -# 608| Type = [IntType] int -# 608| Value = [Literal] 0 -# 608| ValueCategory = prvalue -# 606| getStmt(): [BlockStmt] { ... } -# 607| getStmt(0): [DeclStmt] declaration -# 607| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x196 -# 607| Type = [Struct] String -# 607| getVariable().getInitializer(): [Initializer] initializer for x196 -# 607| getExpr(): [ConstructorCall] call to String -# 607| Type = [VoidType] void -# 607| ValueCategory = prvalue -# 608| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 608| Type = [VoidType] void -# 608| ValueCategory = prvalue -# 608| getQualifier(): [VariableAccess] x196 -# 608| Type = [Struct] String -# 608| ValueCategory = lvalue -# 608| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 608| Conversion = [BoolConversion] conversion to bool -# 608| Type = [BoolType] bool -# 608| Value = [CStyleCast] 0 -# 608| ValueCategory = prvalue -# 609| getStmt(197): [DoStmt] do (...) ... -# 611| getCondition(): [Literal] 0 -# 611| Type = [IntType] int -# 611| Value = [Literal] 0 -# 611| ValueCategory = prvalue -# 609| getStmt(): [BlockStmt] { ... } -# 610| getStmt(0): [DeclStmt] declaration -# 610| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x197 -# 610| Type = [Struct] String -# 610| getVariable().getInitializer(): [Initializer] initializer for x197 -# 610| getExpr(): [ConstructorCall] call to String -# 610| Type = [VoidType] void -# 610| ValueCategory = prvalue -# 611| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 611| Type = [VoidType] void -# 611| ValueCategory = prvalue -# 611| getQualifier(): [VariableAccess] x197 -# 611| Type = [Struct] String -# 611| ValueCategory = lvalue -# 611| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 611| Conversion = [BoolConversion] conversion to bool -# 611| Type = [BoolType] bool -# 611| Value = [CStyleCast] 0 -# 611| ValueCategory = prvalue -# 612| getStmt(198): [DoStmt] do (...) ... -# 614| getCondition(): [Literal] 0 -# 614| Type = [IntType] int -# 614| Value = [Literal] 0 -# 614| ValueCategory = prvalue -# 612| getStmt(): [BlockStmt] { ... } -# 613| getStmt(0): [DeclStmt] declaration -# 613| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x198 -# 613| Type = [Struct] String -# 613| getVariable().getInitializer(): [Initializer] initializer for x198 -# 613| getExpr(): [ConstructorCall] call to String -# 613| Type = [VoidType] void -# 613| ValueCategory = prvalue -# 614| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 614| Type = [VoidType] void -# 614| ValueCategory = prvalue -# 614| getQualifier(): [VariableAccess] x198 -# 614| Type = [Struct] String -# 614| ValueCategory = lvalue -# 614| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 614| Conversion = [BoolConversion] conversion to bool -# 614| Type = [BoolType] bool -# 614| Value = [CStyleCast] 0 -# 614| ValueCategory = prvalue -# 615| getStmt(199): [DoStmt] do (...) ... -# 617| getCondition(): [Literal] 0 -# 617| Type = [IntType] int -# 617| Value = [Literal] 0 -# 617| ValueCategory = prvalue -# 615| getStmt(): [BlockStmt] { ... } -# 616| getStmt(0): [DeclStmt] declaration -# 616| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x199 -# 616| Type = [Struct] String -# 616| getVariable().getInitializer(): [Initializer] initializer for x199 -# 616| getExpr(): [ConstructorCall] call to String -# 616| Type = [VoidType] void -# 616| ValueCategory = prvalue -# 617| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 617| Type = [VoidType] void -# 617| ValueCategory = prvalue -# 617| getQualifier(): [VariableAccess] x199 -# 617| Type = [Struct] String -# 617| ValueCategory = lvalue -# 617| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 617| Conversion = [BoolConversion] conversion to bool -# 617| Type = [BoolType] bool -# 617| Value = [CStyleCast] 0 -# 617| ValueCategory = prvalue -# 618| getStmt(200): [DoStmt] do (...) ... -# 620| getCondition(): [Literal] 0 -# 620| Type = [IntType] int -# 620| Value = [Literal] 0 -# 620| ValueCategory = prvalue -# 618| getStmt(): [BlockStmt] { ... } -# 619| getStmt(0): [DeclStmt] declaration -# 619| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x200 -# 619| Type = [Struct] String -# 619| getVariable().getInitializer(): [Initializer] initializer for x200 -# 619| getExpr(): [ConstructorCall] call to String -# 619| Type = [VoidType] void -# 619| ValueCategory = prvalue -# 620| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 620| Type = [VoidType] void -# 620| ValueCategory = prvalue -# 620| getQualifier(): [VariableAccess] x200 -# 620| Type = [Struct] String -# 620| ValueCategory = lvalue -# 620| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 620| Conversion = [BoolConversion] conversion to bool -# 620| Type = [BoolType] bool -# 620| Value = [CStyleCast] 0 -# 620| ValueCategory = prvalue -# 621| getStmt(201): [DoStmt] do (...) ... -# 623| getCondition(): [Literal] 0 -# 623| Type = [IntType] int -# 623| Value = [Literal] 0 -# 623| ValueCategory = prvalue -# 621| getStmt(): [BlockStmt] { ... } -# 622| getStmt(0): [DeclStmt] declaration -# 622| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x201 -# 622| Type = [Struct] String -# 622| getVariable().getInitializer(): [Initializer] initializer for x201 -# 622| getExpr(): [ConstructorCall] call to String -# 622| Type = [VoidType] void -# 622| ValueCategory = prvalue -# 623| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 623| Type = [VoidType] void -# 623| ValueCategory = prvalue -# 623| getQualifier(): [VariableAccess] x201 -# 623| Type = [Struct] String -# 623| ValueCategory = lvalue -# 623| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 623| Conversion = [BoolConversion] conversion to bool -# 623| Type = [BoolType] bool -# 623| Value = [CStyleCast] 0 -# 623| ValueCategory = prvalue -# 624| getStmt(202): [DoStmt] do (...) ... -# 626| getCondition(): [Literal] 0 -# 626| Type = [IntType] int -# 626| Value = [Literal] 0 -# 626| ValueCategory = prvalue -# 624| getStmt(): [BlockStmt] { ... } -# 625| getStmt(0): [DeclStmt] declaration -# 625| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x202 -# 625| Type = [Struct] String -# 625| getVariable().getInitializer(): [Initializer] initializer for x202 -# 625| getExpr(): [ConstructorCall] call to String -# 625| Type = [VoidType] void -# 625| ValueCategory = prvalue -# 626| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 626| Type = [VoidType] void -# 626| ValueCategory = prvalue -# 626| getQualifier(): [VariableAccess] x202 -# 626| Type = [Struct] String -# 626| ValueCategory = lvalue -# 626| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 626| Conversion = [BoolConversion] conversion to bool -# 626| Type = [BoolType] bool -# 626| Value = [CStyleCast] 0 -# 626| ValueCategory = prvalue -# 627| getStmt(203): [DoStmt] do (...) ... -# 629| getCondition(): [Literal] 0 -# 629| Type = [IntType] int -# 629| Value = [Literal] 0 -# 629| ValueCategory = prvalue -# 627| getStmt(): [BlockStmt] { ... } -# 628| getStmt(0): [DeclStmt] declaration -# 628| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x203 -# 628| Type = [Struct] String -# 628| getVariable().getInitializer(): [Initializer] initializer for x203 -# 628| getExpr(): [ConstructorCall] call to String -# 628| Type = [VoidType] void -# 628| ValueCategory = prvalue -# 629| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 629| Type = [VoidType] void -# 629| ValueCategory = prvalue -# 629| getQualifier(): [VariableAccess] x203 -# 629| Type = [Struct] String -# 629| ValueCategory = lvalue -# 629| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 629| Conversion = [BoolConversion] conversion to bool -# 629| Type = [BoolType] bool -# 629| Value = [CStyleCast] 0 -# 629| ValueCategory = prvalue -# 630| getStmt(204): [DoStmt] do (...) ... -# 632| getCondition(): [Literal] 0 -# 632| Type = [IntType] int -# 632| Value = [Literal] 0 -# 632| ValueCategory = prvalue -# 630| getStmt(): [BlockStmt] { ... } -# 631| getStmt(0): [DeclStmt] declaration -# 631| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x204 -# 631| Type = [Struct] String -# 631| getVariable().getInitializer(): [Initializer] initializer for x204 -# 631| getExpr(): [ConstructorCall] call to String -# 631| Type = [VoidType] void -# 631| ValueCategory = prvalue -# 632| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 632| Type = [VoidType] void -# 632| ValueCategory = prvalue -# 632| getQualifier(): [VariableAccess] x204 -# 632| Type = [Struct] String -# 632| ValueCategory = lvalue -# 632| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 632| Conversion = [BoolConversion] conversion to bool -# 632| Type = [BoolType] bool -# 632| Value = [CStyleCast] 0 -# 632| ValueCategory = prvalue -# 633| getStmt(205): [DoStmt] do (...) ... -# 635| getCondition(): [Literal] 0 -# 635| Type = [IntType] int -# 635| Value = [Literal] 0 -# 635| ValueCategory = prvalue -# 633| getStmt(): [BlockStmt] { ... } -# 634| getStmt(0): [DeclStmt] declaration -# 634| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x205 -# 634| Type = [Struct] String -# 634| getVariable().getInitializer(): [Initializer] initializer for x205 -# 634| getExpr(): [ConstructorCall] call to String -# 634| Type = [VoidType] void -# 634| ValueCategory = prvalue -# 635| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 635| Type = [VoidType] void -# 635| ValueCategory = prvalue -# 635| getQualifier(): [VariableAccess] x205 -# 635| Type = [Struct] String -# 635| ValueCategory = lvalue -# 635| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 635| Conversion = [BoolConversion] conversion to bool -# 635| Type = [BoolType] bool -# 635| Value = [CStyleCast] 0 -# 635| ValueCategory = prvalue -# 636| getStmt(206): [DoStmt] do (...) ... -# 638| getCondition(): [Literal] 0 -# 638| Type = [IntType] int -# 638| Value = [Literal] 0 -# 638| ValueCategory = prvalue -# 636| getStmt(): [BlockStmt] { ... } -# 637| getStmt(0): [DeclStmt] declaration -# 637| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x206 -# 637| Type = [Struct] String -# 637| getVariable().getInitializer(): [Initializer] initializer for x206 -# 637| getExpr(): [ConstructorCall] call to String -# 637| Type = [VoidType] void -# 637| ValueCategory = prvalue -# 638| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 638| Type = [VoidType] void -# 638| ValueCategory = prvalue -# 638| getQualifier(): [VariableAccess] x206 -# 638| Type = [Struct] String -# 638| ValueCategory = lvalue -# 638| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 638| Conversion = [BoolConversion] conversion to bool -# 638| Type = [BoolType] bool -# 638| Value = [CStyleCast] 0 -# 638| ValueCategory = prvalue -# 639| getStmt(207): [DoStmt] do (...) ... -# 641| getCondition(): [Literal] 0 -# 641| Type = [IntType] int -# 641| Value = [Literal] 0 -# 641| ValueCategory = prvalue -# 639| getStmt(): [BlockStmt] { ... } -# 640| getStmt(0): [DeclStmt] declaration -# 640| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x207 -# 640| Type = [Struct] String -# 640| getVariable().getInitializer(): [Initializer] initializer for x207 -# 640| getExpr(): [ConstructorCall] call to String -# 640| Type = [VoidType] void -# 640| ValueCategory = prvalue -# 641| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 641| Type = [VoidType] void -# 641| ValueCategory = prvalue -# 641| getQualifier(): [VariableAccess] x207 -# 641| Type = [Struct] String -# 641| ValueCategory = lvalue -# 641| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 641| Conversion = [BoolConversion] conversion to bool -# 641| Type = [BoolType] bool -# 641| Value = [CStyleCast] 0 -# 641| ValueCategory = prvalue -# 642| getStmt(208): [DoStmt] do (...) ... -# 644| getCondition(): [Literal] 0 -# 644| Type = [IntType] int -# 644| Value = [Literal] 0 -# 644| ValueCategory = prvalue -# 642| getStmt(): [BlockStmt] { ... } -# 643| getStmt(0): [DeclStmt] declaration -# 643| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x208 -# 643| Type = [Struct] String -# 643| getVariable().getInitializer(): [Initializer] initializer for x208 -# 643| getExpr(): [ConstructorCall] call to String -# 643| Type = [VoidType] void -# 643| ValueCategory = prvalue -# 644| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 644| Type = [VoidType] void -# 644| ValueCategory = prvalue -# 644| getQualifier(): [VariableAccess] x208 -# 644| Type = [Struct] String -# 644| ValueCategory = lvalue -# 644| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 644| Conversion = [BoolConversion] conversion to bool -# 644| Type = [BoolType] bool -# 644| Value = [CStyleCast] 0 -# 644| ValueCategory = prvalue -# 645| getStmt(209): [DoStmt] do (...) ... -# 647| getCondition(): [Literal] 0 -# 647| Type = [IntType] int -# 647| Value = [Literal] 0 -# 647| ValueCategory = prvalue -# 645| getStmt(): [BlockStmt] { ... } -# 646| getStmt(0): [DeclStmt] declaration -# 646| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x209 -# 646| Type = [Struct] String -# 646| getVariable().getInitializer(): [Initializer] initializer for x209 -# 646| getExpr(): [ConstructorCall] call to String -# 646| Type = [VoidType] void -# 646| ValueCategory = prvalue -# 647| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 647| Type = [VoidType] void -# 647| ValueCategory = prvalue -# 647| getQualifier(): [VariableAccess] x209 -# 647| Type = [Struct] String -# 647| ValueCategory = lvalue -# 647| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 647| Conversion = [BoolConversion] conversion to bool -# 647| Type = [BoolType] bool -# 647| Value = [CStyleCast] 0 -# 647| ValueCategory = prvalue -# 648| getStmt(210): [DoStmt] do (...) ... -# 650| getCondition(): [Literal] 0 -# 650| Type = [IntType] int -# 650| Value = [Literal] 0 -# 650| ValueCategory = prvalue -# 648| getStmt(): [BlockStmt] { ... } -# 649| getStmt(0): [DeclStmt] declaration -# 649| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x210 -# 649| Type = [Struct] String -# 649| getVariable().getInitializer(): [Initializer] initializer for x210 -# 649| getExpr(): [ConstructorCall] call to String -# 649| Type = [VoidType] void -# 649| ValueCategory = prvalue -# 650| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 650| Type = [VoidType] void -# 650| ValueCategory = prvalue -# 650| getQualifier(): [VariableAccess] x210 -# 650| Type = [Struct] String -# 650| ValueCategory = lvalue -# 650| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 650| Conversion = [BoolConversion] conversion to bool -# 650| Type = [BoolType] bool -# 650| Value = [CStyleCast] 0 -# 650| ValueCategory = prvalue -# 651| getStmt(211): [DoStmt] do (...) ... -# 653| getCondition(): [Literal] 0 -# 653| Type = [IntType] int -# 653| Value = [Literal] 0 -# 653| ValueCategory = prvalue -# 651| getStmt(): [BlockStmt] { ... } -# 652| getStmt(0): [DeclStmt] declaration -# 652| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x211 -# 652| Type = [Struct] String -# 652| getVariable().getInitializer(): [Initializer] initializer for x211 -# 652| getExpr(): [ConstructorCall] call to String -# 652| Type = [VoidType] void -# 652| ValueCategory = prvalue -# 653| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 653| Type = [VoidType] void -# 653| ValueCategory = prvalue -# 653| getQualifier(): [VariableAccess] x211 -# 653| Type = [Struct] String -# 653| ValueCategory = lvalue -# 653| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 653| Conversion = [BoolConversion] conversion to bool -# 653| Type = [BoolType] bool -# 653| Value = [CStyleCast] 0 -# 653| ValueCategory = prvalue -# 654| getStmt(212): [DoStmt] do (...) ... -# 656| getCondition(): [Literal] 0 -# 656| Type = [IntType] int -# 656| Value = [Literal] 0 -# 656| ValueCategory = prvalue -# 654| getStmt(): [BlockStmt] { ... } -# 655| getStmt(0): [DeclStmt] declaration -# 655| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x212 -# 655| Type = [Struct] String -# 655| getVariable().getInitializer(): [Initializer] initializer for x212 -# 655| getExpr(): [ConstructorCall] call to String -# 655| Type = [VoidType] void -# 655| ValueCategory = prvalue -# 656| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 656| Type = [VoidType] void -# 656| ValueCategory = prvalue -# 656| getQualifier(): [VariableAccess] x212 -# 656| Type = [Struct] String -# 656| ValueCategory = lvalue -# 656| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 656| Conversion = [BoolConversion] conversion to bool -# 656| Type = [BoolType] bool -# 656| Value = [CStyleCast] 0 -# 656| ValueCategory = prvalue -# 657| getStmt(213): [DoStmt] do (...) ... -# 659| getCondition(): [Literal] 0 -# 659| Type = [IntType] int -# 659| Value = [Literal] 0 -# 659| ValueCategory = prvalue -# 657| getStmt(): [BlockStmt] { ... } -# 658| getStmt(0): [DeclStmt] declaration -# 658| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x213 -# 658| Type = [Struct] String -# 658| getVariable().getInitializer(): [Initializer] initializer for x213 -# 658| getExpr(): [ConstructorCall] call to String -# 658| Type = [VoidType] void -# 658| ValueCategory = prvalue -# 659| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 659| Type = [VoidType] void -# 659| ValueCategory = prvalue -# 659| getQualifier(): [VariableAccess] x213 -# 659| Type = [Struct] String -# 659| ValueCategory = lvalue -# 659| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 659| Conversion = [BoolConversion] conversion to bool -# 659| Type = [BoolType] bool -# 659| Value = [CStyleCast] 0 -# 659| ValueCategory = prvalue -# 660| getStmt(214): [DoStmt] do (...) ... -# 662| getCondition(): [Literal] 0 -# 662| Type = [IntType] int -# 662| Value = [Literal] 0 -# 662| ValueCategory = prvalue -# 660| getStmt(): [BlockStmt] { ... } -# 661| getStmt(0): [DeclStmt] declaration -# 661| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x214 -# 661| Type = [Struct] String -# 661| getVariable().getInitializer(): [Initializer] initializer for x214 -# 661| getExpr(): [ConstructorCall] call to String -# 661| Type = [VoidType] void -# 661| ValueCategory = prvalue -# 662| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 662| Type = [VoidType] void -# 662| ValueCategory = prvalue -# 662| getQualifier(): [VariableAccess] x214 -# 662| Type = [Struct] String -# 662| ValueCategory = lvalue -# 662| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 662| Conversion = [BoolConversion] conversion to bool -# 662| Type = [BoolType] bool -# 662| Value = [CStyleCast] 0 -# 662| ValueCategory = prvalue -# 663| getStmt(215): [DoStmt] do (...) ... -# 665| getCondition(): [Literal] 0 -# 665| Type = [IntType] int -# 665| Value = [Literal] 0 -# 665| ValueCategory = prvalue -# 663| getStmt(): [BlockStmt] { ... } -# 664| getStmt(0): [DeclStmt] declaration -# 664| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x215 -# 664| Type = [Struct] String -# 664| getVariable().getInitializer(): [Initializer] initializer for x215 -# 664| getExpr(): [ConstructorCall] call to String -# 664| Type = [VoidType] void -# 664| ValueCategory = prvalue -# 665| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 665| Type = [VoidType] void -# 665| ValueCategory = prvalue -# 665| getQualifier(): [VariableAccess] x215 -# 665| Type = [Struct] String -# 665| ValueCategory = lvalue -# 665| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 665| Conversion = [BoolConversion] conversion to bool -# 665| Type = [BoolType] bool -# 665| Value = [CStyleCast] 0 -# 665| ValueCategory = prvalue -# 666| getStmt(216): [DoStmt] do (...) ... -# 668| getCondition(): [Literal] 0 -# 668| Type = [IntType] int -# 668| Value = [Literal] 0 -# 668| ValueCategory = prvalue -# 666| getStmt(): [BlockStmt] { ... } -# 667| getStmt(0): [DeclStmt] declaration -# 667| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x216 -# 667| Type = [Struct] String -# 667| getVariable().getInitializer(): [Initializer] initializer for x216 -# 667| getExpr(): [ConstructorCall] call to String -# 667| Type = [VoidType] void -# 667| ValueCategory = prvalue -# 668| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 668| Type = [VoidType] void -# 668| ValueCategory = prvalue -# 668| getQualifier(): [VariableAccess] x216 -# 668| Type = [Struct] String -# 668| ValueCategory = lvalue -# 668| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 668| Conversion = [BoolConversion] conversion to bool -# 668| Type = [BoolType] bool -# 668| Value = [CStyleCast] 0 -# 668| ValueCategory = prvalue -# 669| getStmt(217): [DoStmt] do (...) ... -# 671| getCondition(): [Literal] 0 -# 671| Type = [IntType] int -# 671| Value = [Literal] 0 -# 671| ValueCategory = prvalue -# 669| getStmt(): [BlockStmt] { ... } -# 670| getStmt(0): [DeclStmt] declaration -# 670| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x217 -# 670| Type = [Struct] String -# 670| getVariable().getInitializer(): [Initializer] initializer for x217 -# 670| getExpr(): [ConstructorCall] call to String -# 670| Type = [VoidType] void -# 670| ValueCategory = prvalue -# 671| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 671| Type = [VoidType] void -# 671| ValueCategory = prvalue -# 671| getQualifier(): [VariableAccess] x217 -# 671| Type = [Struct] String -# 671| ValueCategory = lvalue -# 671| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 671| Conversion = [BoolConversion] conversion to bool -# 671| Type = [BoolType] bool -# 671| Value = [CStyleCast] 0 -# 671| ValueCategory = prvalue -# 672| getStmt(218): [DoStmt] do (...) ... -# 674| getCondition(): [Literal] 0 -# 674| Type = [IntType] int -# 674| Value = [Literal] 0 -# 674| ValueCategory = prvalue -# 672| getStmt(): [BlockStmt] { ... } -# 673| getStmt(0): [DeclStmt] declaration -# 673| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x218 -# 673| Type = [Struct] String -# 673| getVariable().getInitializer(): [Initializer] initializer for x218 -# 673| getExpr(): [ConstructorCall] call to String -# 673| Type = [VoidType] void -# 673| ValueCategory = prvalue -# 674| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 674| Type = [VoidType] void -# 674| ValueCategory = prvalue -# 674| getQualifier(): [VariableAccess] x218 -# 674| Type = [Struct] String -# 674| ValueCategory = lvalue -# 674| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 674| Conversion = [BoolConversion] conversion to bool -# 674| Type = [BoolType] bool -# 674| Value = [CStyleCast] 0 -# 674| ValueCategory = prvalue -# 675| getStmt(219): [DoStmt] do (...) ... -# 677| getCondition(): [Literal] 0 -# 677| Type = [IntType] int -# 677| Value = [Literal] 0 -# 677| ValueCategory = prvalue -# 675| getStmt(): [BlockStmt] { ... } -# 676| getStmt(0): [DeclStmt] declaration -# 676| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x219 -# 676| Type = [Struct] String -# 676| getVariable().getInitializer(): [Initializer] initializer for x219 -# 676| getExpr(): [ConstructorCall] call to String -# 676| Type = [VoidType] void -# 676| ValueCategory = prvalue -# 677| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 677| Type = [VoidType] void -# 677| ValueCategory = prvalue -# 677| getQualifier(): [VariableAccess] x219 -# 677| Type = [Struct] String -# 677| ValueCategory = lvalue -# 677| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 677| Conversion = [BoolConversion] conversion to bool -# 677| Type = [BoolType] bool -# 677| Value = [CStyleCast] 0 -# 677| ValueCategory = prvalue -# 678| getStmt(220): [DoStmt] do (...) ... -# 680| getCondition(): [Literal] 0 -# 680| Type = [IntType] int -# 680| Value = [Literal] 0 -# 680| ValueCategory = prvalue -# 678| getStmt(): [BlockStmt] { ... } -# 679| getStmt(0): [DeclStmt] declaration -# 679| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x220 -# 679| Type = [Struct] String -# 679| getVariable().getInitializer(): [Initializer] initializer for x220 -# 679| getExpr(): [ConstructorCall] call to String -# 679| Type = [VoidType] void -# 679| ValueCategory = prvalue -# 680| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 680| Type = [VoidType] void -# 680| ValueCategory = prvalue -# 680| getQualifier(): [VariableAccess] x220 -# 680| Type = [Struct] String -# 680| ValueCategory = lvalue -# 680| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 680| Conversion = [BoolConversion] conversion to bool -# 680| Type = [BoolType] bool -# 680| Value = [CStyleCast] 0 -# 680| ValueCategory = prvalue -# 681| getStmt(221): [DoStmt] do (...) ... -# 683| getCondition(): [Literal] 0 -# 683| Type = [IntType] int -# 683| Value = [Literal] 0 -# 683| ValueCategory = prvalue -# 681| getStmt(): [BlockStmt] { ... } -# 682| getStmt(0): [DeclStmt] declaration -# 682| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x221 -# 682| Type = [Struct] String -# 682| getVariable().getInitializer(): [Initializer] initializer for x221 -# 682| getExpr(): [ConstructorCall] call to String -# 682| Type = [VoidType] void -# 682| ValueCategory = prvalue -# 683| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 683| Type = [VoidType] void -# 683| ValueCategory = prvalue -# 683| getQualifier(): [VariableAccess] x221 -# 683| Type = [Struct] String -# 683| ValueCategory = lvalue -# 683| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 683| Conversion = [BoolConversion] conversion to bool -# 683| Type = [BoolType] bool -# 683| Value = [CStyleCast] 0 -# 683| ValueCategory = prvalue -# 684| getStmt(222): [DoStmt] do (...) ... -# 686| getCondition(): [Literal] 0 -# 686| Type = [IntType] int -# 686| Value = [Literal] 0 -# 686| ValueCategory = prvalue -# 684| getStmt(): [BlockStmt] { ... } -# 685| getStmt(0): [DeclStmt] declaration -# 685| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x222 -# 685| Type = [Struct] String -# 685| getVariable().getInitializer(): [Initializer] initializer for x222 -# 685| getExpr(): [ConstructorCall] call to String -# 685| Type = [VoidType] void -# 685| ValueCategory = prvalue -# 686| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 686| Type = [VoidType] void -# 686| ValueCategory = prvalue -# 686| getQualifier(): [VariableAccess] x222 -# 686| Type = [Struct] String -# 686| ValueCategory = lvalue -# 686| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 686| Conversion = [BoolConversion] conversion to bool -# 686| Type = [BoolType] bool -# 686| Value = [CStyleCast] 0 -# 686| ValueCategory = prvalue -# 687| getStmt(223): [DoStmt] do (...) ... -# 689| getCondition(): [Literal] 0 -# 689| Type = [IntType] int -# 689| Value = [Literal] 0 -# 689| ValueCategory = prvalue -# 687| getStmt(): [BlockStmt] { ... } -# 688| getStmt(0): [DeclStmt] declaration -# 688| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x223 -# 688| Type = [Struct] String -# 688| getVariable().getInitializer(): [Initializer] initializer for x223 -# 688| getExpr(): [ConstructorCall] call to String -# 688| Type = [VoidType] void -# 688| ValueCategory = prvalue -# 689| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 689| Type = [VoidType] void -# 689| ValueCategory = prvalue -# 689| getQualifier(): [VariableAccess] x223 -# 689| Type = [Struct] String -# 689| ValueCategory = lvalue -# 689| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 689| Conversion = [BoolConversion] conversion to bool -# 689| Type = [BoolType] bool -# 689| Value = [CStyleCast] 0 -# 689| ValueCategory = prvalue -# 690| getStmt(224): [DoStmt] do (...) ... -# 692| getCondition(): [Literal] 0 -# 692| Type = [IntType] int -# 692| Value = [Literal] 0 -# 692| ValueCategory = prvalue -# 690| getStmt(): [BlockStmt] { ... } -# 691| getStmt(0): [DeclStmt] declaration -# 691| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x224 -# 691| Type = [Struct] String -# 691| getVariable().getInitializer(): [Initializer] initializer for x224 -# 691| getExpr(): [ConstructorCall] call to String -# 691| Type = [VoidType] void -# 691| ValueCategory = prvalue -# 692| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 692| Type = [VoidType] void -# 692| ValueCategory = prvalue -# 692| getQualifier(): [VariableAccess] x224 -# 692| Type = [Struct] String -# 692| ValueCategory = lvalue -# 692| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 692| Conversion = [BoolConversion] conversion to bool -# 692| Type = [BoolType] bool -# 692| Value = [CStyleCast] 0 -# 692| ValueCategory = prvalue -# 693| getStmt(225): [DoStmt] do (...) ... -# 695| getCondition(): [Literal] 0 -# 695| Type = [IntType] int -# 695| Value = [Literal] 0 -# 695| ValueCategory = prvalue -# 693| getStmt(): [BlockStmt] { ... } -# 694| getStmt(0): [DeclStmt] declaration -# 694| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x225 -# 694| Type = [Struct] String -# 694| getVariable().getInitializer(): [Initializer] initializer for x225 -# 694| getExpr(): [ConstructorCall] call to String -# 694| Type = [VoidType] void -# 694| ValueCategory = prvalue -# 695| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 695| Type = [VoidType] void -# 695| ValueCategory = prvalue -# 695| getQualifier(): [VariableAccess] x225 -# 695| Type = [Struct] String -# 695| ValueCategory = lvalue -# 695| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 695| Conversion = [BoolConversion] conversion to bool -# 695| Type = [BoolType] bool -# 695| Value = [CStyleCast] 0 -# 695| ValueCategory = prvalue -# 696| getStmt(226): [DoStmt] do (...) ... -# 698| getCondition(): [Literal] 0 -# 698| Type = [IntType] int -# 698| Value = [Literal] 0 -# 698| ValueCategory = prvalue -# 696| getStmt(): [BlockStmt] { ... } -# 697| getStmt(0): [DeclStmt] declaration -# 697| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x226 -# 697| Type = [Struct] String -# 697| getVariable().getInitializer(): [Initializer] initializer for x226 -# 697| getExpr(): [ConstructorCall] call to String -# 697| Type = [VoidType] void -# 697| ValueCategory = prvalue -# 698| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 698| Type = [VoidType] void -# 698| ValueCategory = prvalue -# 698| getQualifier(): [VariableAccess] x226 -# 698| Type = [Struct] String -# 698| ValueCategory = lvalue -# 698| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 698| Conversion = [BoolConversion] conversion to bool -# 698| Type = [BoolType] bool -# 698| Value = [CStyleCast] 0 -# 698| ValueCategory = prvalue -# 699| getStmt(227): [DoStmt] do (...) ... -# 701| getCondition(): [Literal] 0 -# 701| Type = [IntType] int -# 701| Value = [Literal] 0 -# 701| ValueCategory = prvalue -# 699| getStmt(): [BlockStmt] { ... } -# 700| getStmt(0): [DeclStmt] declaration -# 700| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x227 -# 700| Type = [Struct] String -# 700| getVariable().getInitializer(): [Initializer] initializer for x227 -# 700| getExpr(): [ConstructorCall] call to String -# 700| Type = [VoidType] void -# 700| ValueCategory = prvalue -# 701| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 701| Type = [VoidType] void -# 701| ValueCategory = prvalue -# 701| getQualifier(): [VariableAccess] x227 -# 701| Type = [Struct] String -# 701| ValueCategory = lvalue -# 701| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 701| Conversion = [BoolConversion] conversion to bool -# 701| Type = [BoolType] bool -# 701| Value = [CStyleCast] 0 -# 701| ValueCategory = prvalue -# 702| getStmt(228): [DoStmt] do (...) ... -# 704| getCondition(): [Literal] 0 -# 704| Type = [IntType] int -# 704| Value = [Literal] 0 -# 704| ValueCategory = prvalue -# 702| getStmt(): [BlockStmt] { ... } -# 703| getStmt(0): [DeclStmt] declaration -# 703| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x228 -# 703| Type = [Struct] String -# 703| getVariable().getInitializer(): [Initializer] initializer for x228 -# 703| getExpr(): [ConstructorCall] call to String -# 703| Type = [VoidType] void -# 703| ValueCategory = prvalue -# 704| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 704| Type = [VoidType] void -# 704| ValueCategory = prvalue -# 704| getQualifier(): [VariableAccess] x228 -# 704| Type = [Struct] String -# 704| ValueCategory = lvalue -# 704| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 704| Conversion = [BoolConversion] conversion to bool -# 704| Type = [BoolType] bool -# 704| Value = [CStyleCast] 0 -# 704| ValueCategory = prvalue -# 705| getStmt(229): [DoStmt] do (...) ... -# 707| getCondition(): [Literal] 0 -# 707| Type = [IntType] int -# 707| Value = [Literal] 0 -# 707| ValueCategory = prvalue -# 705| getStmt(): [BlockStmt] { ... } -# 706| getStmt(0): [DeclStmt] declaration -# 706| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x229 -# 706| Type = [Struct] String -# 706| getVariable().getInitializer(): [Initializer] initializer for x229 -# 706| getExpr(): [ConstructorCall] call to String -# 706| Type = [VoidType] void -# 706| ValueCategory = prvalue -# 707| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 707| Type = [VoidType] void -# 707| ValueCategory = prvalue -# 707| getQualifier(): [VariableAccess] x229 -# 707| Type = [Struct] String -# 707| ValueCategory = lvalue -# 707| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 707| Conversion = [BoolConversion] conversion to bool -# 707| Type = [BoolType] bool -# 707| Value = [CStyleCast] 0 -# 707| ValueCategory = prvalue -# 708| getStmt(230): [DoStmt] do (...) ... -# 710| getCondition(): [Literal] 0 -# 710| Type = [IntType] int -# 710| Value = [Literal] 0 -# 710| ValueCategory = prvalue -# 708| getStmt(): [BlockStmt] { ... } -# 709| getStmt(0): [DeclStmt] declaration -# 709| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x230 -# 709| Type = [Struct] String -# 709| getVariable().getInitializer(): [Initializer] initializer for x230 -# 709| getExpr(): [ConstructorCall] call to String -# 709| Type = [VoidType] void -# 709| ValueCategory = prvalue -# 710| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 710| Type = [VoidType] void -# 710| ValueCategory = prvalue -# 710| getQualifier(): [VariableAccess] x230 -# 710| Type = [Struct] String -# 710| ValueCategory = lvalue -# 710| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 710| Conversion = [BoolConversion] conversion to bool -# 710| Type = [BoolType] bool -# 710| Value = [CStyleCast] 0 -# 710| ValueCategory = prvalue -# 711| getStmt(231): [DoStmt] do (...) ... -# 713| getCondition(): [Literal] 0 -# 713| Type = [IntType] int -# 713| Value = [Literal] 0 -# 713| ValueCategory = prvalue -# 711| getStmt(): [BlockStmt] { ... } -# 712| getStmt(0): [DeclStmt] declaration -# 712| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x231 -# 712| Type = [Struct] String -# 712| getVariable().getInitializer(): [Initializer] initializer for x231 -# 712| getExpr(): [ConstructorCall] call to String -# 712| Type = [VoidType] void -# 712| ValueCategory = prvalue -# 713| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 713| Type = [VoidType] void -# 713| ValueCategory = prvalue -# 713| getQualifier(): [VariableAccess] x231 -# 713| Type = [Struct] String -# 713| ValueCategory = lvalue -# 713| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 713| Conversion = [BoolConversion] conversion to bool -# 713| Type = [BoolType] bool -# 713| Value = [CStyleCast] 0 -# 713| ValueCategory = prvalue -# 714| getStmt(232): [DoStmt] do (...) ... -# 716| getCondition(): [Literal] 0 -# 716| Type = [IntType] int -# 716| Value = [Literal] 0 -# 716| ValueCategory = prvalue -# 714| getStmt(): [BlockStmt] { ... } -# 715| getStmt(0): [DeclStmt] declaration -# 715| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x232 -# 715| Type = [Struct] String -# 715| getVariable().getInitializer(): [Initializer] initializer for x232 -# 715| getExpr(): [ConstructorCall] call to String -# 715| Type = [VoidType] void -# 715| ValueCategory = prvalue -# 716| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 716| Type = [VoidType] void -# 716| ValueCategory = prvalue -# 716| getQualifier(): [VariableAccess] x232 -# 716| Type = [Struct] String -# 716| ValueCategory = lvalue -# 716| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 716| Conversion = [BoolConversion] conversion to bool -# 716| Type = [BoolType] bool -# 716| Value = [CStyleCast] 0 -# 716| ValueCategory = prvalue -# 717| getStmt(233): [DoStmt] do (...) ... -# 719| getCondition(): [Literal] 0 -# 719| Type = [IntType] int -# 719| Value = [Literal] 0 -# 719| ValueCategory = prvalue -# 717| getStmt(): [BlockStmt] { ... } -# 718| getStmt(0): [DeclStmt] declaration -# 718| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x233 -# 718| Type = [Struct] String -# 718| getVariable().getInitializer(): [Initializer] initializer for x233 -# 718| getExpr(): [ConstructorCall] call to String -# 718| Type = [VoidType] void -# 718| ValueCategory = prvalue -# 719| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 719| Type = [VoidType] void -# 719| ValueCategory = prvalue -# 719| getQualifier(): [VariableAccess] x233 -# 719| Type = [Struct] String -# 719| ValueCategory = lvalue -# 719| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 719| Conversion = [BoolConversion] conversion to bool -# 719| Type = [BoolType] bool -# 719| Value = [CStyleCast] 0 -# 719| ValueCategory = prvalue -# 720| getStmt(234): [DoStmt] do (...) ... -# 722| getCondition(): [Literal] 0 -# 722| Type = [IntType] int -# 722| Value = [Literal] 0 -# 722| ValueCategory = prvalue -# 720| getStmt(): [BlockStmt] { ... } -# 721| getStmt(0): [DeclStmt] declaration -# 721| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x234 -# 721| Type = [Struct] String -# 721| getVariable().getInitializer(): [Initializer] initializer for x234 -# 721| getExpr(): [ConstructorCall] call to String -# 721| Type = [VoidType] void -# 721| ValueCategory = prvalue -# 722| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 722| Type = [VoidType] void -# 722| ValueCategory = prvalue -# 722| getQualifier(): [VariableAccess] x234 -# 722| Type = [Struct] String -# 722| ValueCategory = lvalue -# 722| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 722| Conversion = [BoolConversion] conversion to bool -# 722| Type = [BoolType] bool -# 722| Value = [CStyleCast] 0 -# 722| ValueCategory = prvalue -# 723| getStmt(235): [DoStmt] do (...) ... -# 725| getCondition(): [Literal] 0 -# 725| Type = [IntType] int -# 725| Value = [Literal] 0 -# 725| ValueCategory = prvalue -# 723| getStmt(): [BlockStmt] { ... } -# 724| getStmt(0): [DeclStmt] declaration -# 724| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x235 -# 724| Type = [Struct] String -# 724| getVariable().getInitializer(): [Initializer] initializer for x235 -# 724| getExpr(): [ConstructorCall] call to String -# 724| Type = [VoidType] void -# 724| ValueCategory = prvalue -# 725| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 725| Type = [VoidType] void -# 725| ValueCategory = prvalue -# 725| getQualifier(): [VariableAccess] x235 -# 725| Type = [Struct] String -# 725| ValueCategory = lvalue -# 725| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 725| Conversion = [BoolConversion] conversion to bool -# 725| Type = [BoolType] bool -# 725| Value = [CStyleCast] 0 -# 725| ValueCategory = prvalue -# 726| getStmt(236): [DoStmt] do (...) ... -# 728| getCondition(): [Literal] 0 -# 728| Type = [IntType] int -# 728| Value = [Literal] 0 -# 728| ValueCategory = prvalue -# 726| getStmt(): [BlockStmt] { ... } -# 727| getStmt(0): [DeclStmt] declaration -# 727| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x236 -# 727| Type = [Struct] String -# 727| getVariable().getInitializer(): [Initializer] initializer for x236 -# 727| getExpr(): [ConstructorCall] call to String -# 727| Type = [VoidType] void -# 727| ValueCategory = prvalue -# 728| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 728| Type = [VoidType] void -# 728| ValueCategory = prvalue -# 728| getQualifier(): [VariableAccess] x236 -# 728| Type = [Struct] String -# 728| ValueCategory = lvalue -# 728| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 728| Conversion = [BoolConversion] conversion to bool -# 728| Type = [BoolType] bool -# 728| Value = [CStyleCast] 0 -# 728| ValueCategory = prvalue -# 729| getStmt(237): [DoStmt] do (...) ... -# 731| getCondition(): [Literal] 0 -# 731| Type = [IntType] int -# 731| Value = [Literal] 0 -# 731| ValueCategory = prvalue -# 729| getStmt(): [BlockStmt] { ... } -# 730| getStmt(0): [DeclStmt] declaration -# 730| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x237 -# 730| Type = [Struct] String -# 730| getVariable().getInitializer(): [Initializer] initializer for x237 -# 730| getExpr(): [ConstructorCall] call to String -# 730| Type = [VoidType] void -# 730| ValueCategory = prvalue -# 731| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 731| Type = [VoidType] void -# 731| ValueCategory = prvalue -# 731| getQualifier(): [VariableAccess] x237 -# 731| Type = [Struct] String -# 731| ValueCategory = lvalue -# 731| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 731| Conversion = [BoolConversion] conversion to bool -# 731| Type = [BoolType] bool -# 731| Value = [CStyleCast] 0 -# 731| ValueCategory = prvalue -# 732| getStmt(238): [DoStmt] do (...) ... -# 734| getCondition(): [Literal] 0 -# 734| Type = [IntType] int -# 734| Value = [Literal] 0 -# 734| ValueCategory = prvalue -# 732| getStmt(): [BlockStmt] { ... } -# 733| getStmt(0): [DeclStmt] declaration -# 733| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x238 -# 733| Type = [Struct] String -# 733| getVariable().getInitializer(): [Initializer] initializer for x238 -# 733| getExpr(): [ConstructorCall] call to String -# 733| Type = [VoidType] void -# 733| ValueCategory = prvalue -# 734| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 734| Type = [VoidType] void -# 734| ValueCategory = prvalue -# 734| getQualifier(): [VariableAccess] x238 -# 734| Type = [Struct] String -# 734| ValueCategory = lvalue -# 734| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 734| Conversion = [BoolConversion] conversion to bool -# 734| Type = [BoolType] bool -# 734| Value = [CStyleCast] 0 -# 734| ValueCategory = prvalue -# 735| getStmt(239): [DoStmt] do (...) ... -# 737| getCondition(): [Literal] 0 -# 737| Type = [IntType] int -# 737| Value = [Literal] 0 -# 737| ValueCategory = prvalue -# 735| getStmt(): [BlockStmt] { ... } -# 736| getStmt(0): [DeclStmt] declaration -# 736| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x239 -# 736| Type = [Struct] String -# 736| getVariable().getInitializer(): [Initializer] initializer for x239 -# 736| getExpr(): [ConstructorCall] call to String -# 736| Type = [VoidType] void -# 736| ValueCategory = prvalue -# 737| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 737| Type = [VoidType] void -# 737| ValueCategory = prvalue -# 737| getQualifier(): [VariableAccess] x239 -# 737| Type = [Struct] String -# 737| ValueCategory = lvalue -# 737| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 737| Conversion = [BoolConversion] conversion to bool -# 737| Type = [BoolType] bool -# 737| Value = [CStyleCast] 0 -# 737| ValueCategory = prvalue -# 738| getStmt(240): [DoStmt] do (...) ... -# 740| getCondition(): [Literal] 0 -# 740| Type = [IntType] int -# 740| Value = [Literal] 0 -# 740| ValueCategory = prvalue -# 738| getStmt(): [BlockStmt] { ... } -# 739| getStmt(0): [DeclStmt] declaration -# 739| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x240 -# 739| Type = [Struct] String -# 739| getVariable().getInitializer(): [Initializer] initializer for x240 -# 739| getExpr(): [ConstructorCall] call to String -# 739| Type = [VoidType] void -# 739| ValueCategory = prvalue -# 740| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 740| Type = [VoidType] void -# 740| ValueCategory = prvalue -# 740| getQualifier(): [VariableAccess] x240 -# 740| Type = [Struct] String -# 740| ValueCategory = lvalue -# 740| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 740| Conversion = [BoolConversion] conversion to bool -# 740| Type = [BoolType] bool -# 740| Value = [CStyleCast] 0 -# 740| ValueCategory = prvalue -# 741| getStmt(241): [DoStmt] do (...) ... -# 743| getCondition(): [Literal] 0 -# 743| Type = [IntType] int -# 743| Value = [Literal] 0 -# 743| ValueCategory = prvalue -# 741| getStmt(): [BlockStmt] { ... } -# 742| getStmt(0): [DeclStmt] declaration -# 742| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x241 -# 742| Type = [Struct] String -# 742| getVariable().getInitializer(): [Initializer] initializer for x241 -# 742| getExpr(): [ConstructorCall] call to String -# 742| Type = [VoidType] void -# 742| ValueCategory = prvalue -# 743| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 743| Type = [VoidType] void -# 743| ValueCategory = prvalue -# 743| getQualifier(): [VariableAccess] x241 -# 743| Type = [Struct] String -# 743| ValueCategory = lvalue -# 743| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 743| Conversion = [BoolConversion] conversion to bool -# 743| Type = [BoolType] bool -# 743| Value = [CStyleCast] 0 -# 743| ValueCategory = prvalue -# 744| getStmt(242): [DoStmt] do (...) ... -# 746| getCondition(): [Literal] 0 -# 746| Type = [IntType] int -# 746| Value = [Literal] 0 -# 746| ValueCategory = prvalue -# 744| getStmt(): [BlockStmt] { ... } -# 745| getStmt(0): [DeclStmt] declaration -# 745| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x242 -# 745| Type = [Struct] String -# 745| getVariable().getInitializer(): [Initializer] initializer for x242 -# 745| getExpr(): [ConstructorCall] call to String -# 745| Type = [VoidType] void -# 745| ValueCategory = prvalue -# 746| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 746| Type = [VoidType] void -# 746| ValueCategory = prvalue -# 746| getQualifier(): [VariableAccess] x242 -# 746| Type = [Struct] String -# 746| ValueCategory = lvalue -# 746| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 746| Conversion = [BoolConversion] conversion to bool -# 746| Type = [BoolType] bool -# 746| Value = [CStyleCast] 0 -# 746| ValueCategory = prvalue -# 747| getStmt(243): [DoStmt] do (...) ... -# 749| getCondition(): [Literal] 0 -# 749| Type = [IntType] int -# 749| Value = [Literal] 0 -# 749| ValueCategory = prvalue -# 747| getStmt(): [BlockStmt] { ... } -# 748| getStmt(0): [DeclStmt] declaration -# 748| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x243 -# 748| Type = [Struct] String -# 748| getVariable().getInitializer(): [Initializer] initializer for x243 -# 748| getExpr(): [ConstructorCall] call to String -# 748| Type = [VoidType] void -# 748| ValueCategory = prvalue -# 749| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 749| Type = [VoidType] void -# 749| ValueCategory = prvalue -# 749| getQualifier(): [VariableAccess] x243 -# 749| Type = [Struct] String -# 749| ValueCategory = lvalue -# 749| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 749| Conversion = [BoolConversion] conversion to bool -# 749| Type = [BoolType] bool -# 749| Value = [CStyleCast] 0 -# 749| ValueCategory = prvalue -# 750| getStmt(244): [DoStmt] do (...) ... -# 752| getCondition(): [Literal] 0 -# 752| Type = [IntType] int -# 752| Value = [Literal] 0 -# 752| ValueCategory = prvalue -# 750| getStmt(): [BlockStmt] { ... } -# 751| getStmt(0): [DeclStmt] declaration -# 751| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x244 -# 751| Type = [Struct] String -# 751| getVariable().getInitializer(): [Initializer] initializer for x244 -# 751| getExpr(): [ConstructorCall] call to String -# 751| Type = [VoidType] void -# 751| ValueCategory = prvalue -# 752| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 752| Type = [VoidType] void -# 752| ValueCategory = prvalue -# 752| getQualifier(): [VariableAccess] x244 -# 752| Type = [Struct] String -# 752| ValueCategory = lvalue -# 752| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 752| Conversion = [BoolConversion] conversion to bool -# 752| Type = [BoolType] bool -# 752| Value = [CStyleCast] 0 -# 752| ValueCategory = prvalue -# 753| getStmt(245): [DoStmt] do (...) ... -# 755| getCondition(): [Literal] 0 -# 755| Type = [IntType] int -# 755| Value = [Literal] 0 -# 755| ValueCategory = prvalue -# 753| getStmt(): [BlockStmt] { ... } -# 754| getStmt(0): [DeclStmt] declaration -# 754| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x245 -# 754| Type = [Struct] String -# 754| getVariable().getInitializer(): [Initializer] initializer for x245 -# 754| getExpr(): [ConstructorCall] call to String -# 754| Type = [VoidType] void -# 754| ValueCategory = prvalue -# 755| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 755| Type = [VoidType] void -# 755| ValueCategory = prvalue -# 755| getQualifier(): [VariableAccess] x245 -# 755| Type = [Struct] String -# 755| ValueCategory = lvalue -# 755| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 755| Conversion = [BoolConversion] conversion to bool -# 755| Type = [BoolType] bool -# 755| Value = [CStyleCast] 0 -# 755| ValueCategory = prvalue -# 756| getStmt(246): [DoStmt] do (...) ... -# 758| getCondition(): [Literal] 0 -# 758| Type = [IntType] int -# 758| Value = [Literal] 0 -# 758| ValueCategory = prvalue -# 756| getStmt(): [BlockStmt] { ... } -# 757| getStmt(0): [DeclStmt] declaration -# 757| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x246 -# 757| Type = [Struct] String -# 757| getVariable().getInitializer(): [Initializer] initializer for x246 -# 757| getExpr(): [ConstructorCall] call to String -# 757| Type = [VoidType] void -# 757| ValueCategory = prvalue -# 758| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 758| Type = [VoidType] void -# 758| ValueCategory = prvalue -# 758| getQualifier(): [VariableAccess] x246 -# 758| Type = [Struct] String -# 758| ValueCategory = lvalue -# 758| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 758| Conversion = [BoolConversion] conversion to bool -# 758| Type = [BoolType] bool -# 758| Value = [CStyleCast] 0 -# 758| ValueCategory = prvalue -# 759| getStmt(247): [DoStmt] do (...) ... -# 761| getCondition(): [Literal] 0 -# 761| Type = [IntType] int -# 761| Value = [Literal] 0 -# 761| ValueCategory = prvalue -# 759| getStmt(): [BlockStmt] { ... } -# 760| getStmt(0): [DeclStmt] declaration -# 760| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x247 -# 760| Type = [Struct] String -# 760| getVariable().getInitializer(): [Initializer] initializer for x247 -# 760| getExpr(): [ConstructorCall] call to String -# 760| Type = [VoidType] void -# 760| ValueCategory = prvalue -# 761| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 761| Type = [VoidType] void -# 761| ValueCategory = prvalue -# 761| getQualifier(): [VariableAccess] x247 -# 761| Type = [Struct] String -# 761| ValueCategory = lvalue -# 761| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 761| Conversion = [BoolConversion] conversion to bool -# 761| Type = [BoolType] bool -# 761| Value = [CStyleCast] 0 -# 761| ValueCategory = prvalue -# 762| getStmt(248): [DoStmt] do (...) ... -# 764| getCondition(): [Literal] 0 -# 764| Type = [IntType] int -# 764| Value = [Literal] 0 -# 764| ValueCategory = prvalue -# 762| getStmt(): [BlockStmt] { ... } -# 763| getStmt(0): [DeclStmt] declaration -# 763| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x248 -# 763| Type = [Struct] String -# 763| getVariable().getInitializer(): [Initializer] initializer for x248 -# 763| getExpr(): [ConstructorCall] call to String -# 763| Type = [VoidType] void -# 763| ValueCategory = prvalue -# 764| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 764| Type = [VoidType] void -# 764| ValueCategory = prvalue -# 764| getQualifier(): [VariableAccess] x248 -# 764| Type = [Struct] String -# 764| ValueCategory = lvalue -# 764| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 764| Conversion = [BoolConversion] conversion to bool -# 764| Type = [BoolType] bool -# 764| Value = [CStyleCast] 0 -# 764| ValueCategory = prvalue -# 765| getStmt(249): [DoStmt] do (...) ... -# 767| getCondition(): [Literal] 0 -# 767| Type = [IntType] int -# 767| Value = [Literal] 0 -# 767| ValueCategory = prvalue -# 765| getStmt(): [BlockStmt] { ... } -# 766| getStmt(0): [DeclStmt] declaration -# 766| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x249 -# 766| Type = [Struct] String -# 766| getVariable().getInitializer(): [Initializer] initializer for x249 -# 766| getExpr(): [ConstructorCall] call to String -# 766| Type = [VoidType] void -# 766| ValueCategory = prvalue -# 767| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 767| Type = [VoidType] void -# 767| ValueCategory = prvalue -# 767| getQualifier(): [VariableAccess] x249 -# 767| Type = [Struct] String -# 767| ValueCategory = lvalue -# 767| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 767| Conversion = [BoolConversion] conversion to bool -# 767| Type = [BoolType] bool -# 767| Value = [CStyleCast] 0 -# 767| ValueCategory = prvalue -# 768| getStmt(250): [DoStmt] do (...) ... -# 770| getCondition(): [Literal] 0 -# 770| Type = [IntType] int -# 770| Value = [Literal] 0 -# 770| ValueCategory = prvalue -# 768| getStmt(): [BlockStmt] { ... } -# 769| getStmt(0): [DeclStmt] declaration -# 769| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x250 -# 769| Type = [Struct] String -# 769| getVariable().getInitializer(): [Initializer] initializer for x250 -# 769| getExpr(): [ConstructorCall] call to String -# 769| Type = [VoidType] void -# 769| ValueCategory = prvalue -# 770| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 770| Type = [VoidType] void -# 770| ValueCategory = prvalue -# 770| getQualifier(): [VariableAccess] x250 -# 770| Type = [Struct] String -# 770| ValueCategory = lvalue -# 770| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 770| Conversion = [BoolConversion] conversion to bool -# 770| Type = [BoolType] bool -# 770| Value = [CStyleCast] 0 -# 770| ValueCategory = prvalue -# 771| getStmt(251): [DoStmt] do (...) ... -# 773| getCondition(): [Literal] 0 -# 773| Type = [IntType] int -# 773| Value = [Literal] 0 -# 773| ValueCategory = prvalue -# 771| getStmt(): [BlockStmt] { ... } -# 772| getStmt(0): [DeclStmt] declaration -# 772| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x251 -# 772| Type = [Struct] String -# 772| getVariable().getInitializer(): [Initializer] initializer for x251 -# 772| getExpr(): [ConstructorCall] call to String -# 772| Type = [VoidType] void -# 772| ValueCategory = prvalue -# 773| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 773| Type = [VoidType] void -# 773| ValueCategory = prvalue -# 773| getQualifier(): [VariableAccess] x251 -# 773| Type = [Struct] String -# 773| ValueCategory = lvalue -# 773| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 773| Conversion = [BoolConversion] conversion to bool -# 773| Type = [BoolType] bool -# 773| Value = [CStyleCast] 0 -# 773| ValueCategory = prvalue -# 774| getStmt(252): [DoStmt] do (...) ... -# 776| getCondition(): [Literal] 0 -# 776| Type = [IntType] int -# 776| Value = [Literal] 0 -# 776| ValueCategory = prvalue -# 774| getStmt(): [BlockStmt] { ... } -# 775| getStmt(0): [DeclStmt] declaration -# 775| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x252 -# 775| Type = [Struct] String -# 775| getVariable().getInitializer(): [Initializer] initializer for x252 -# 775| getExpr(): [ConstructorCall] call to String -# 775| Type = [VoidType] void -# 775| ValueCategory = prvalue -# 776| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 776| Type = [VoidType] void -# 776| ValueCategory = prvalue -# 776| getQualifier(): [VariableAccess] x252 -# 776| Type = [Struct] String -# 776| ValueCategory = lvalue -# 776| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 776| Conversion = [BoolConversion] conversion to bool -# 776| Type = [BoolType] bool -# 776| Value = [CStyleCast] 0 -# 776| ValueCategory = prvalue -# 777| getStmt(253): [DoStmt] do (...) ... -# 779| getCondition(): [Literal] 0 -# 779| Type = [IntType] int -# 779| Value = [Literal] 0 -# 779| ValueCategory = prvalue -# 777| getStmt(): [BlockStmt] { ... } -# 778| getStmt(0): [DeclStmt] declaration -# 778| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x253 -# 778| Type = [Struct] String -# 778| getVariable().getInitializer(): [Initializer] initializer for x253 -# 778| getExpr(): [ConstructorCall] call to String -# 778| Type = [VoidType] void -# 778| ValueCategory = prvalue -# 779| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 779| Type = [VoidType] void -# 779| ValueCategory = prvalue -# 779| getQualifier(): [VariableAccess] x253 -# 779| Type = [Struct] String -# 779| ValueCategory = lvalue -# 779| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 779| Conversion = [BoolConversion] conversion to bool -# 779| Type = [BoolType] bool -# 779| Value = [CStyleCast] 0 -# 779| ValueCategory = prvalue -# 780| getStmt(254): [DoStmt] do (...) ... -# 782| getCondition(): [Literal] 0 -# 782| Type = [IntType] int -# 782| Value = [Literal] 0 -# 782| ValueCategory = prvalue -# 780| getStmt(): [BlockStmt] { ... } -# 781| getStmt(0): [DeclStmt] declaration -# 781| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x254 -# 781| Type = [Struct] String -# 781| getVariable().getInitializer(): [Initializer] initializer for x254 -# 781| getExpr(): [ConstructorCall] call to String -# 781| Type = [VoidType] void -# 781| ValueCategory = prvalue -# 782| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 782| Type = [VoidType] void -# 782| ValueCategory = prvalue -# 782| getQualifier(): [VariableAccess] x254 -# 782| Type = [Struct] String -# 782| ValueCategory = lvalue -# 782| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 782| Conversion = [BoolConversion] conversion to bool -# 782| Type = [BoolType] bool -# 782| Value = [CStyleCast] 0 -# 782| ValueCategory = prvalue -# 783| getStmt(255): [DoStmt] do (...) ... -# 785| getCondition(): [Literal] 0 -# 785| Type = [IntType] int -# 785| Value = [Literal] 0 -# 785| ValueCategory = prvalue -# 783| getStmt(): [BlockStmt] { ... } -# 784| getStmt(0): [DeclStmt] declaration -# 784| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x255 -# 784| Type = [Struct] String -# 784| getVariable().getInitializer(): [Initializer] initializer for x255 -# 784| getExpr(): [ConstructorCall] call to String -# 784| Type = [VoidType] void -# 784| ValueCategory = prvalue -# 785| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 785| Type = [VoidType] void -# 785| ValueCategory = prvalue -# 785| getQualifier(): [VariableAccess] x255 -# 785| Type = [Struct] String -# 785| ValueCategory = lvalue -# 785| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 785| Conversion = [BoolConversion] conversion to bool -# 785| Type = [BoolType] bool -# 785| Value = [CStyleCast] 0 -# 785| ValueCategory = prvalue -# 786| getStmt(256): [DoStmt] do (...) ... -# 788| getCondition(): [Literal] 0 -# 788| Type = [IntType] int -# 788| Value = [Literal] 0 -# 788| ValueCategory = prvalue -# 786| getStmt(): [BlockStmt] { ... } -# 787| getStmt(0): [DeclStmt] declaration -# 787| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x256 -# 787| Type = [Struct] String -# 787| getVariable().getInitializer(): [Initializer] initializer for x256 -# 787| getExpr(): [ConstructorCall] call to String -# 787| Type = [VoidType] void -# 787| ValueCategory = prvalue -# 788| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 788| Type = [VoidType] void -# 788| ValueCategory = prvalue -# 788| getQualifier(): [VariableAccess] x256 -# 788| Type = [Struct] String -# 788| ValueCategory = lvalue -# 788| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 788| Conversion = [BoolConversion] conversion to bool -# 788| Type = [BoolType] bool -# 788| Value = [CStyleCast] 0 -# 788| ValueCategory = prvalue -# 789| getStmt(257): [DoStmt] do (...) ... -# 791| getCondition(): [Literal] 0 -# 791| Type = [IntType] int -# 791| Value = [Literal] 0 -# 791| ValueCategory = prvalue -# 789| getStmt(): [BlockStmt] { ... } -# 790| getStmt(0): [DeclStmt] declaration -# 790| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x257 -# 790| Type = [Struct] String -# 790| getVariable().getInitializer(): [Initializer] initializer for x257 -# 790| getExpr(): [ConstructorCall] call to String -# 790| Type = [VoidType] void -# 790| ValueCategory = prvalue -# 791| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 791| Type = [VoidType] void -# 791| ValueCategory = prvalue -# 791| getQualifier(): [VariableAccess] x257 -# 791| Type = [Struct] String -# 791| ValueCategory = lvalue -# 791| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 791| Conversion = [BoolConversion] conversion to bool -# 791| Type = [BoolType] bool -# 791| Value = [CStyleCast] 0 -# 791| ValueCategory = prvalue -# 792| getStmt(258): [DoStmt] do (...) ... -# 794| getCondition(): [Literal] 0 -# 794| Type = [IntType] int -# 794| Value = [Literal] 0 -# 794| ValueCategory = prvalue -# 792| getStmt(): [BlockStmt] { ... } -# 793| getStmt(0): [DeclStmt] declaration -# 793| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x258 -# 793| Type = [Struct] String -# 793| getVariable().getInitializer(): [Initializer] initializer for x258 -# 793| getExpr(): [ConstructorCall] call to String -# 793| Type = [VoidType] void -# 793| ValueCategory = prvalue -# 794| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 794| Type = [VoidType] void -# 794| ValueCategory = prvalue -# 794| getQualifier(): [VariableAccess] x258 -# 794| Type = [Struct] String -# 794| ValueCategory = lvalue -# 794| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 794| Conversion = [BoolConversion] conversion to bool -# 794| Type = [BoolType] bool -# 794| Value = [CStyleCast] 0 -# 794| ValueCategory = prvalue -# 795| getStmt(259): [DoStmt] do (...) ... -# 797| getCondition(): [Literal] 0 -# 797| Type = [IntType] int -# 797| Value = [Literal] 0 -# 797| ValueCategory = prvalue -# 795| getStmt(): [BlockStmt] { ... } -# 796| getStmt(0): [DeclStmt] declaration -# 796| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x259 -# 796| Type = [Struct] String -# 796| getVariable().getInitializer(): [Initializer] initializer for x259 -# 796| getExpr(): [ConstructorCall] call to String -# 796| Type = [VoidType] void -# 796| ValueCategory = prvalue -# 797| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 797| Type = [VoidType] void -# 797| ValueCategory = prvalue -# 797| getQualifier(): [VariableAccess] x259 -# 797| Type = [Struct] String -# 797| ValueCategory = lvalue -# 797| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 797| Conversion = [BoolConversion] conversion to bool -# 797| Type = [BoolType] bool -# 797| Value = [CStyleCast] 0 -# 797| ValueCategory = prvalue -# 798| getStmt(260): [DoStmt] do (...) ... -# 800| getCondition(): [Literal] 0 -# 800| Type = [IntType] int -# 800| Value = [Literal] 0 -# 800| ValueCategory = prvalue -# 798| getStmt(): [BlockStmt] { ... } -# 799| getStmt(0): [DeclStmt] declaration -# 799| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x260 -# 799| Type = [Struct] String -# 799| getVariable().getInitializer(): [Initializer] initializer for x260 -# 799| getExpr(): [ConstructorCall] call to String -# 799| Type = [VoidType] void -# 799| ValueCategory = prvalue -# 800| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 800| Type = [VoidType] void -# 800| ValueCategory = prvalue -# 800| getQualifier(): [VariableAccess] x260 -# 800| Type = [Struct] String -# 800| ValueCategory = lvalue -# 800| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 800| Conversion = [BoolConversion] conversion to bool -# 800| Type = [BoolType] bool -# 800| Value = [CStyleCast] 0 -# 800| ValueCategory = prvalue -# 801| getStmt(261): [DoStmt] do (...) ... -# 803| getCondition(): [Literal] 0 -# 803| Type = [IntType] int -# 803| Value = [Literal] 0 -# 803| ValueCategory = prvalue -# 801| getStmt(): [BlockStmt] { ... } -# 802| getStmt(0): [DeclStmt] declaration -# 802| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x261 -# 802| Type = [Struct] String -# 802| getVariable().getInitializer(): [Initializer] initializer for x261 -# 802| getExpr(): [ConstructorCall] call to String -# 802| Type = [VoidType] void -# 802| ValueCategory = prvalue -# 803| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 803| Type = [VoidType] void -# 803| ValueCategory = prvalue -# 803| getQualifier(): [VariableAccess] x261 -# 803| Type = [Struct] String -# 803| ValueCategory = lvalue -# 803| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 803| Conversion = [BoolConversion] conversion to bool -# 803| Type = [BoolType] bool -# 803| Value = [CStyleCast] 0 -# 803| ValueCategory = prvalue -# 804| getStmt(262): [DoStmt] do (...) ... -# 806| getCondition(): [Literal] 0 -# 806| Type = [IntType] int -# 806| Value = [Literal] 0 -# 806| ValueCategory = prvalue -# 804| getStmt(): [BlockStmt] { ... } -# 805| getStmt(0): [DeclStmt] declaration -# 805| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x262 -# 805| Type = [Struct] String -# 805| getVariable().getInitializer(): [Initializer] initializer for x262 -# 805| getExpr(): [ConstructorCall] call to String -# 805| Type = [VoidType] void -# 805| ValueCategory = prvalue -# 806| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 806| Type = [VoidType] void -# 806| ValueCategory = prvalue -# 806| getQualifier(): [VariableAccess] x262 -# 806| Type = [Struct] String -# 806| ValueCategory = lvalue -# 806| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 806| Conversion = [BoolConversion] conversion to bool -# 806| Type = [BoolType] bool -# 806| Value = [CStyleCast] 0 -# 806| ValueCategory = prvalue -# 807| getStmt(263): [DoStmt] do (...) ... -# 809| getCondition(): [Literal] 0 -# 809| Type = [IntType] int -# 809| Value = [Literal] 0 -# 809| ValueCategory = prvalue -# 807| getStmt(): [BlockStmt] { ... } -# 808| getStmt(0): [DeclStmt] declaration -# 808| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x263 -# 808| Type = [Struct] String -# 808| getVariable().getInitializer(): [Initializer] initializer for x263 -# 808| getExpr(): [ConstructorCall] call to String -# 808| Type = [VoidType] void -# 808| ValueCategory = prvalue -# 809| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 809| Type = [VoidType] void -# 809| ValueCategory = prvalue -# 809| getQualifier(): [VariableAccess] x263 -# 809| Type = [Struct] String -# 809| ValueCategory = lvalue -# 809| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 809| Conversion = [BoolConversion] conversion to bool -# 809| Type = [BoolType] bool -# 809| Value = [CStyleCast] 0 -# 809| ValueCategory = prvalue -# 810| getStmt(264): [DoStmt] do (...) ... -# 812| getCondition(): [Literal] 0 -# 812| Type = [IntType] int -# 812| Value = [Literal] 0 -# 812| ValueCategory = prvalue -# 810| getStmt(): [BlockStmt] { ... } -# 811| getStmt(0): [DeclStmt] declaration -# 811| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x264 -# 811| Type = [Struct] String -# 811| getVariable().getInitializer(): [Initializer] initializer for x264 -# 811| getExpr(): [ConstructorCall] call to String -# 811| Type = [VoidType] void -# 811| ValueCategory = prvalue -# 812| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 812| Type = [VoidType] void -# 812| ValueCategory = prvalue -# 812| getQualifier(): [VariableAccess] x264 -# 812| Type = [Struct] String -# 812| ValueCategory = lvalue -# 812| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 812| Conversion = [BoolConversion] conversion to bool -# 812| Type = [BoolType] bool -# 812| Value = [CStyleCast] 0 -# 812| ValueCategory = prvalue -# 813| getStmt(265): [DoStmt] do (...) ... -# 815| getCondition(): [Literal] 0 -# 815| Type = [IntType] int -# 815| Value = [Literal] 0 -# 815| ValueCategory = prvalue -# 813| getStmt(): [BlockStmt] { ... } -# 814| getStmt(0): [DeclStmt] declaration -# 814| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x265 -# 814| Type = [Struct] String -# 814| getVariable().getInitializer(): [Initializer] initializer for x265 -# 814| getExpr(): [ConstructorCall] call to String -# 814| Type = [VoidType] void -# 814| ValueCategory = prvalue -# 815| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 815| Type = [VoidType] void -# 815| ValueCategory = prvalue -# 815| getQualifier(): [VariableAccess] x265 -# 815| Type = [Struct] String -# 815| ValueCategory = lvalue -# 815| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 815| Conversion = [BoolConversion] conversion to bool -# 815| Type = [BoolType] bool -# 815| Value = [CStyleCast] 0 -# 815| ValueCategory = prvalue -# 816| getStmt(266): [DoStmt] do (...) ... -# 818| getCondition(): [Literal] 0 -# 818| Type = [IntType] int -# 818| Value = [Literal] 0 -# 818| ValueCategory = prvalue -# 816| getStmt(): [BlockStmt] { ... } -# 817| getStmt(0): [DeclStmt] declaration -# 817| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x266 -# 817| Type = [Struct] String -# 817| getVariable().getInitializer(): [Initializer] initializer for x266 -# 817| getExpr(): [ConstructorCall] call to String -# 817| Type = [VoidType] void -# 817| ValueCategory = prvalue -# 818| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 818| Type = [VoidType] void -# 818| ValueCategory = prvalue -# 818| getQualifier(): [VariableAccess] x266 -# 818| Type = [Struct] String -# 818| ValueCategory = lvalue -# 818| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 818| Conversion = [BoolConversion] conversion to bool -# 818| Type = [BoolType] bool -# 818| Value = [CStyleCast] 0 -# 818| ValueCategory = prvalue -# 819| getStmt(267): [DoStmt] do (...) ... -# 821| getCondition(): [Literal] 0 -# 821| Type = [IntType] int -# 821| Value = [Literal] 0 -# 821| ValueCategory = prvalue -# 819| getStmt(): [BlockStmt] { ... } -# 820| getStmt(0): [DeclStmt] declaration -# 820| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x267 -# 820| Type = [Struct] String -# 820| getVariable().getInitializer(): [Initializer] initializer for x267 -# 820| getExpr(): [ConstructorCall] call to String -# 820| Type = [VoidType] void -# 820| ValueCategory = prvalue -# 821| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 821| Type = [VoidType] void -# 821| ValueCategory = prvalue -# 821| getQualifier(): [VariableAccess] x267 -# 821| Type = [Struct] String -# 821| ValueCategory = lvalue -# 821| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 821| Conversion = [BoolConversion] conversion to bool -# 821| Type = [BoolType] bool -# 821| Value = [CStyleCast] 0 -# 821| ValueCategory = prvalue -# 822| getStmt(268): [DoStmt] do (...) ... -# 824| getCondition(): [Literal] 0 -# 824| Type = [IntType] int -# 824| Value = [Literal] 0 -# 824| ValueCategory = prvalue -# 822| getStmt(): [BlockStmt] { ... } -# 823| getStmt(0): [DeclStmt] declaration -# 823| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x268 -# 823| Type = [Struct] String -# 823| getVariable().getInitializer(): [Initializer] initializer for x268 -# 823| getExpr(): [ConstructorCall] call to String -# 823| Type = [VoidType] void -# 823| ValueCategory = prvalue -# 824| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 824| Type = [VoidType] void -# 824| ValueCategory = prvalue -# 824| getQualifier(): [VariableAccess] x268 -# 824| Type = [Struct] String -# 824| ValueCategory = lvalue -# 824| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 824| Conversion = [BoolConversion] conversion to bool -# 824| Type = [BoolType] bool -# 824| Value = [CStyleCast] 0 -# 824| ValueCategory = prvalue -# 825| getStmt(269): [DoStmt] do (...) ... -# 827| getCondition(): [Literal] 0 -# 827| Type = [IntType] int -# 827| Value = [Literal] 0 -# 827| ValueCategory = prvalue -# 825| getStmt(): [BlockStmt] { ... } -# 826| getStmt(0): [DeclStmt] declaration -# 826| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x269 -# 826| Type = [Struct] String -# 826| getVariable().getInitializer(): [Initializer] initializer for x269 -# 826| getExpr(): [ConstructorCall] call to String -# 826| Type = [VoidType] void -# 826| ValueCategory = prvalue -# 827| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 827| Type = [VoidType] void -# 827| ValueCategory = prvalue -# 827| getQualifier(): [VariableAccess] x269 -# 827| Type = [Struct] String -# 827| ValueCategory = lvalue -# 827| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 827| Conversion = [BoolConversion] conversion to bool -# 827| Type = [BoolType] bool -# 827| Value = [CStyleCast] 0 -# 827| ValueCategory = prvalue -# 828| getStmt(270): [DoStmt] do (...) ... -# 830| getCondition(): [Literal] 0 -# 830| Type = [IntType] int -# 830| Value = [Literal] 0 -# 830| ValueCategory = prvalue -# 828| getStmt(): [BlockStmt] { ... } -# 829| getStmt(0): [DeclStmt] declaration -# 829| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x270 -# 829| Type = [Struct] String -# 829| getVariable().getInitializer(): [Initializer] initializer for x270 -# 829| getExpr(): [ConstructorCall] call to String -# 829| Type = [VoidType] void -# 829| ValueCategory = prvalue -# 830| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 830| Type = [VoidType] void -# 830| ValueCategory = prvalue -# 830| getQualifier(): [VariableAccess] x270 -# 830| Type = [Struct] String -# 830| ValueCategory = lvalue -# 830| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 830| Conversion = [BoolConversion] conversion to bool -# 830| Type = [BoolType] bool -# 830| Value = [CStyleCast] 0 -# 830| ValueCategory = prvalue -# 831| getStmt(271): [DoStmt] do (...) ... -# 833| getCondition(): [Literal] 0 -# 833| Type = [IntType] int -# 833| Value = [Literal] 0 -# 833| ValueCategory = prvalue -# 831| getStmt(): [BlockStmt] { ... } -# 832| getStmt(0): [DeclStmt] declaration -# 832| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x271 -# 832| Type = [Struct] String -# 832| getVariable().getInitializer(): [Initializer] initializer for x271 -# 832| getExpr(): [ConstructorCall] call to String -# 832| Type = [VoidType] void -# 832| ValueCategory = prvalue -# 833| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 833| Type = [VoidType] void -# 833| ValueCategory = prvalue -# 833| getQualifier(): [VariableAccess] x271 -# 833| Type = [Struct] String -# 833| ValueCategory = lvalue -# 833| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 833| Conversion = [BoolConversion] conversion to bool -# 833| Type = [BoolType] bool -# 833| Value = [CStyleCast] 0 -# 833| ValueCategory = prvalue -# 834| getStmt(272): [DoStmt] do (...) ... -# 836| getCondition(): [Literal] 0 -# 836| Type = [IntType] int -# 836| Value = [Literal] 0 -# 836| ValueCategory = prvalue -# 834| getStmt(): [BlockStmt] { ... } -# 835| getStmt(0): [DeclStmt] declaration -# 835| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x272 -# 835| Type = [Struct] String -# 835| getVariable().getInitializer(): [Initializer] initializer for x272 -# 835| getExpr(): [ConstructorCall] call to String -# 835| Type = [VoidType] void -# 835| ValueCategory = prvalue -# 836| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 836| Type = [VoidType] void -# 836| ValueCategory = prvalue -# 836| getQualifier(): [VariableAccess] x272 -# 836| Type = [Struct] String -# 836| ValueCategory = lvalue -# 836| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 836| Conversion = [BoolConversion] conversion to bool -# 836| Type = [BoolType] bool -# 836| Value = [CStyleCast] 0 -# 836| ValueCategory = prvalue -# 837| getStmt(273): [DoStmt] do (...) ... -# 839| getCondition(): [Literal] 0 -# 839| Type = [IntType] int -# 839| Value = [Literal] 0 -# 839| ValueCategory = prvalue -# 837| getStmt(): [BlockStmt] { ... } -# 838| getStmt(0): [DeclStmt] declaration -# 838| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x273 -# 838| Type = [Struct] String -# 838| getVariable().getInitializer(): [Initializer] initializer for x273 -# 838| getExpr(): [ConstructorCall] call to String -# 838| Type = [VoidType] void -# 838| ValueCategory = prvalue -# 839| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 839| Type = [VoidType] void -# 839| ValueCategory = prvalue -# 839| getQualifier(): [VariableAccess] x273 -# 839| Type = [Struct] String -# 839| ValueCategory = lvalue -# 839| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 839| Conversion = [BoolConversion] conversion to bool -# 839| Type = [BoolType] bool -# 839| Value = [CStyleCast] 0 -# 839| ValueCategory = prvalue -# 840| getStmt(274): [DoStmt] do (...) ... -# 842| getCondition(): [Literal] 0 -# 842| Type = [IntType] int -# 842| Value = [Literal] 0 -# 842| ValueCategory = prvalue -# 840| getStmt(): [BlockStmt] { ... } -# 841| getStmt(0): [DeclStmt] declaration -# 841| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x274 -# 841| Type = [Struct] String -# 841| getVariable().getInitializer(): [Initializer] initializer for x274 -# 841| getExpr(): [ConstructorCall] call to String -# 841| Type = [VoidType] void -# 841| ValueCategory = prvalue -# 842| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 842| Type = [VoidType] void -# 842| ValueCategory = prvalue -# 842| getQualifier(): [VariableAccess] x274 -# 842| Type = [Struct] String -# 842| ValueCategory = lvalue -# 842| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 842| Conversion = [BoolConversion] conversion to bool -# 842| Type = [BoolType] bool -# 842| Value = [CStyleCast] 0 -# 842| ValueCategory = prvalue -# 843| getStmt(275): [DoStmt] do (...) ... -# 845| getCondition(): [Literal] 0 -# 845| Type = [IntType] int -# 845| Value = [Literal] 0 -# 845| ValueCategory = prvalue -# 843| getStmt(): [BlockStmt] { ... } -# 844| getStmt(0): [DeclStmt] declaration -# 844| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x275 -# 844| Type = [Struct] String -# 844| getVariable().getInitializer(): [Initializer] initializer for x275 -# 844| getExpr(): [ConstructorCall] call to String -# 844| Type = [VoidType] void -# 844| ValueCategory = prvalue -# 845| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 845| Type = [VoidType] void -# 845| ValueCategory = prvalue -# 845| getQualifier(): [VariableAccess] x275 -# 845| Type = [Struct] String -# 845| ValueCategory = lvalue -# 845| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 845| Conversion = [BoolConversion] conversion to bool -# 845| Type = [BoolType] bool -# 845| Value = [CStyleCast] 0 -# 845| ValueCategory = prvalue -# 846| getStmt(276): [DoStmt] do (...) ... -# 848| getCondition(): [Literal] 0 -# 848| Type = [IntType] int -# 848| Value = [Literal] 0 -# 848| ValueCategory = prvalue -# 846| getStmt(): [BlockStmt] { ... } -# 847| getStmt(0): [DeclStmt] declaration -# 847| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x276 -# 847| Type = [Struct] String -# 847| getVariable().getInitializer(): [Initializer] initializer for x276 -# 847| getExpr(): [ConstructorCall] call to String -# 847| Type = [VoidType] void -# 847| ValueCategory = prvalue -# 848| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 848| Type = [VoidType] void -# 848| ValueCategory = prvalue -# 848| getQualifier(): [VariableAccess] x276 -# 848| Type = [Struct] String -# 848| ValueCategory = lvalue -# 848| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 848| Conversion = [BoolConversion] conversion to bool -# 848| Type = [BoolType] bool -# 848| Value = [CStyleCast] 0 -# 848| ValueCategory = prvalue -# 849| getStmt(277): [DoStmt] do (...) ... -# 851| getCondition(): [Literal] 0 -# 851| Type = [IntType] int -# 851| Value = [Literal] 0 -# 851| ValueCategory = prvalue -# 849| getStmt(): [BlockStmt] { ... } -# 850| getStmt(0): [DeclStmt] declaration -# 850| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x277 -# 850| Type = [Struct] String -# 850| getVariable().getInitializer(): [Initializer] initializer for x277 -# 850| getExpr(): [ConstructorCall] call to String -# 850| Type = [VoidType] void -# 850| ValueCategory = prvalue -# 851| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 851| Type = [VoidType] void -# 851| ValueCategory = prvalue -# 851| getQualifier(): [VariableAccess] x277 -# 851| Type = [Struct] String -# 851| ValueCategory = lvalue -# 851| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 851| Conversion = [BoolConversion] conversion to bool -# 851| Type = [BoolType] bool -# 851| Value = [CStyleCast] 0 -# 851| ValueCategory = prvalue -# 852| getStmt(278): [DoStmt] do (...) ... -# 854| getCondition(): [Literal] 0 -# 854| Type = [IntType] int -# 854| Value = [Literal] 0 -# 854| ValueCategory = prvalue -# 852| getStmt(): [BlockStmt] { ... } -# 853| getStmt(0): [DeclStmt] declaration -# 853| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x278 -# 853| Type = [Struct] String -# 853| getVariable().getInitializer(): [Initializer] initializer for x278 -# 853| getExpr(): [ConstructorCall] call to String -# 853| Type = [VoidType] void -# 853| ValueCategory = prvalue -# 854| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 854| Type = [VoidType] void -# 854| ValueCategory = prvalue -# 854| getQualifier(): [VariableAccess] x278 -# 854| Type = [Struct] String -# 854| ValueCategory = lvalue -# 854| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 854| Conversion = [BoolConversion] conversion to bool -# 854| Type = [BoolType] bool -# 854| Value = [CStyleCast] 0 -# 854| ValueCategory = prvalue -# 855| getStmt(279): [DoStmt] do (...) ... -# 857| getCondition(): [Literal] 0 -# 857| Type = [IntType] int -# 857| Value = [Literal] 0 -# 857| ValueCategory = prvalue -# 855| getStmt(): [BlockStmt] { ... } -# 856| getStmt(0): [DeclStmt] declaration -# 856| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x279 -# 856| Type = [Struct] String -# 856| getVariable().getInitializer(): [Initializer] initializer for x279 -# 856| getExpr(): [ConstructorCall] call to String -# 856| Type = [VoidType] void -# 856| ValueCategory = prvalue -# 857| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 857| Type = [VoidType] void -# 857| ValueCategory = prvalue -# 857| getQualifier(): [VariableAccess] x279 -# 857| Type = [Struct] String -# 857| ValueCategory = lvalue -# 857| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 857| Conversion = [BoolConversion] conversion to bool -# 857| Type = [BoolType] bool -# 857| Value = [CStyleCast] 0 -# 857| ValueCategory = prvalue -# 858| getStmt(280): [DoStmt] do (...) ... -# 860| getCondition(): [Literal] 0 -# 860| Type = [IntType] int -# 860| Value = [Literal] 0 -# 860| ValueCategory = prvalue -# 858| getStmt(): [BlockStmt] { ... } -# 859| getStmt(0): [DeclStmt] declaration -# 859| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x280 -# 859| Type = [Struct] String -# 859| getVariable().getInitializer(): [Initializer] initializer for x280 -# 859| getExpr(): [ConstructorCall] call to String -# 859| Type = [VoidType] void -# 859| ValueCategory = prvalue -# 860| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 860| Type = [VoidType] void -# 860| ValueCategory = prvalue -# 860| getQualifier(): [VariableAccess] x280 -# 860| Type = [Struct] String -# 860| ValueCategory = lvalue -# 860| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 860| Conversion = [BoolConversion] conversion to bool -# 860| Type = [BoolType] bool -# 860| Value = [CStyleCast] 0 -# 860| ValueCategory = prvalue -# 861| getStmt(281): [DoStmt] do (...) ... -# 863| getCondition(): [Literal] 0 -# 863| Type = [IntType] int -# 863| Value = [Literal] 0 -# 863| ValueCategory = prvalue -# 861| getStmt(): [BlockStmt] { ... } -# 862| getStmt(0): [DeclStmt] declaration -# 862| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x281 -# 862| Type = [Struct] String -# 862| getVariable().getInitializer(): [Initializer] initializer for x281 -# 862| getExpr(): [ConstructorCall] call to String -# 862| Type = [VoidType] void -# 862| ValueCategory = prvalue -# 863| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 863| Type = [VoidType] void -# 863| ValueCategory = prvalue -# 863| getQualifier(): [VariableAccess] x281 -# 863| Type = [Struct] String -# 863| ValueCategory = lvalue -# 863| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 863| Conversion = [BoolConversion] conversion to bool -# 863| Type = [BoolType] bool -# 863| Value = [CStyleCast] 0 -# 863| ValueCategory = prvalue -# 864| getStmt(282): [DoStmt] do (...) ... -# 866| getCondition(): [Literal] 0 -# 866| Type = [IntType] int -# 866| Value = [Literal] 0 -# 866| ValueCategory = prvalue -# 864| getStmt(): [BlockStmt] { ... } -# 865| getStmt(0): [DeclStmt] declaration -# 865| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x282 -# 865| Type = [Struct] String -# 865| getVariable().getInitializer(): [Initializer] initializer for x282 -# 865| getExpr(): [ConstructorCall] call to String -# 865| Type = [VoidType] void -# 865| ValueCategory = prvalue -# 866| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 866| Type = [VoidType] void -# 866| ValueCategory = prvalue -# 866| getQualifier(): [VariableAccess] x282 -# 866| Type = [Struct] String -# 866| ValueCategory = lvalue -# 866| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 866| Conversion = [BoolConversion] conversion to bool -# 866| Type = [BoolType] bool -# 866| Value = [CStyleCast] 0 -# 866| ValueCategory = prvalue -# 867| getStmt(283): [DoStmt] do (...) ... -# 869| getCondition(): [Literal] 0 -# 869| Type = [IntType] int -# 869| Value = [Literal] 0 -# 869| ValueCategory = prvalue -# 867| getStmt(): [BlockStmt] { ... } -# 868| getStmt(0): [DeclStmt] declaration -# 868| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x283 -# 868| Type = [Struct] String -# 868| getVariable().getInitializer(): [Initializer] initializer for x283 -# 868| getExpr(): [ConstructorCall] call to String -# 868| Type = [VoidType] void -# 868| ValueCategory = prvalue -# 869| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 869| Type = [VoidType] void -# 869| ValueCategory = prvalue -# 869| getQualifier(): [VariableAccess] x283 -# 869| Type = [Struct] String -# 869| ValueCategory = lvalue -# 869| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 869| Conversion = [BoolConversion] conversion to bool -# 869| Type = [BoolType] bool -# 869| Value = [CStyleCast] 0 -# 869| ValueCategory = prvalue -# 870| getStmt(284): [DoStmt] do (...) ... -# 872| getCondition(): [Literal] 0 -# 872| Type = [IntType] int -# 872| Value = [Literal] 0 -# 872| ValueCategory = prvalue -# 870| getStmt(): [BlockStmt] { ... } -# 871| getStmt(0): [DeclStmt] declaration -# 871| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x284 -# 871| Type = [Struct] String -# 871| getVariable().getInitializer(): [Initializer] initializer for x284 -# 871| getExpr(): [ConstructorCall] call to String -# 871| Type = [VoidType] void -# 871| ValueCategory = prvalue -# 872| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 872| Type = [VoidType] void -# 872| ValueCategory = prvalue -# 872| getQualifier(): [VariableAccess] x284 -# 872| Type = [Struct] String -# 872| ValueCategory = lvalue -# 872| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 872| Conversion = [BoolConversion] conversion to bool -# 872| Type = [BoolType] bool -# 872| Value = [CStyleCast] 0 -# 872| ValueCategory = prvalue -# 873| getStmt(285): [DoStmt] do (...) ... -# 875| getCondition(): [Literal] 0 -# 875| Type = [IntType] int -# 875| Value = [Literal] 0 -# 875| ValueCategory = prvalue -# 873| getStmt(): [BlockStmt] { ... } -# 874| getStmt(0): [DeclStmt] declaration -# 874| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x285 -# 874| Type = [Struct] String -# 874| getVariable().getInitializer(): [Initializer] initializer for x285 -# 874| getExpr(): [ConstructorCall] call to String -# 874| Type = [VoidType] void -# 874| ValueCategory = prvalue -# 875| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 875| Type = [VoidType] void -# 875| ValueCategory = prvalue -# 875| getQualifier(): [VariableAccess] x285 -# 875| Type = [Struct] String -# 875| ValueCategory = lvalue -# 875| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 875| Conversion = [BoolConversion] conversion to bool -# 875| Type = [BoolType] bool -# 875| Value = [CStyleCast] 0 -# 875| ValueCategory = prvalue -# 876| getStmt(286): [DoStmt] do (...) ... -# 878| getCondition(): [Literal] 0 -# 878| Type = [IntType] int -# 878| Value = [Literal] 0 -# 878| ValueCategory = prvalue -# 876| getStmt(): [BlockStmt] { ... } -# 877| getStmt(0): [DeclStmt] declaration -# 877| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x286 -# 877| Type = [Struct] String -# 877| getVariable().getInitializer(): [Initializer] initializer for x286 -# 877| getExpr(): [ConstructorCall] call to String -# 877| Type = [VoidType] void -# 877| ValueCategory = prvalue -# 878| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 878| Type = [VoidType] void -# 878| ValueCategory = prvalue -# 878| getQualifier(): [VariableAccess] x286 -# 878| Type = [Struct] String -# 878| ValueCategory = lvalue -# 878| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 878| Conversion = [BoolConversion] conversion to bool -# 878| Type = [BoolType] bool -# 878| Value = [CStyleCast] 0 -# 878| ValueCategory = prvalue -# 879| getStmt(287): [DoStmt] do (...) ... -# 881| getCondition(): [Literal] 0 -# 881| Type = [IntType] int -# 881| Value = [Literal] 0 -# 881| ValueCategory = prvalue -# 879| getStmt(): [BlockStmt] { ... } -# 880| getStmt(0): [DeclStmt] declaration -# 880| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x287 -# 880| Type = [Struct] String -# 880| getVariable().getInitializer(): [Initializer] initializer for x287 -# 880| getExpr(): [ConstructorCall] call to String -# 880| Type = [VoidType] void -# 880| ValueCategory = prvalue -# 881| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 881| Type = [VoidType] void -# 881| ValueCategory = prvalue -# 881| getQualifier(): [VariableAccess] x287 -# 881| Type = [Struct] String -# 881| ValueCategory = lvalue -# 881| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 881| Conversion = [BoolConversion] conversion to bool -# 881| Type = [BoolType] bool -# 881| Value = [CStyleCast] 0 -# 881| ValueCategory = prvalue -# 882| getStmt(288): [DoStmt] do (...) ... -# 884| getCondition(): [Literal] 0 -# 884| Type = [IntType] int -# 884| Value = [Literal] 0 -# 884| ValueCategory = prvalue -# 882| getStmt(): [BlockStmt] { ... } -# 883| getStmt(0): [DeclStmt] declaration -# 883| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x288 -# 883| Type = [Struct] String -# 883| getVariable().getInitializer(): [Initializer] initializer for x288 -# 883| getExpr(): [ConstructorCall] call to String -# 883| Type = [VoidType] void -# 883| ValueCategory = prvalue -# 884| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 884| Type = [VoidType] void -# 884| ValueCategory = prvalue -# 884| getQualifier(): [VariableAccess] x288 -# 884| Type = [Struct] String -# 884| ValueCategory = lvalue -# 884| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 884| Conversion = [BoolConversion] conversion to bool -# 884| Type = [BoolType] bool -# 884| Value = [CStyleCast] 0 -# 884| ValueCategory = prvalue -# 885| getStmt(289): [DoStmt] do (...) ... -# 887| getCondition(): [Literal] 0 -# 887| Type = [IntType] int -# 887| Value = [Literal] 0 -# 887| ValueCategory = prvalue -# 885| getStmt(): [BlockStmt] { ... } -# 886| getStmt(0): [DeclStmt] declaration -# 886| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x289 -# 886| Type = [Struct] String -# 886| getVariable().getInitializer(): [Initializer] initializer for x289 -# 886| getExpr(): [ConstructorCall] call to String -# 886| Type = [VoidType] void -# 886| ValueCategory = prvalue -# 887| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 887| Type = [VoidType] void -# 887| ValueCategory = prvalue -# 887| getQualifier(): [VariableAccess] x289 -# 887| Type = [Struct] String -# 887| ValueCategory = lvalue -# 887| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 887| Conversion = [BoolConversion] conversion to bool -# 887| Type = [BoolType] bool -# 887| Value = [CStyleCast] 0 -# 887| ValueCategory = prvalue -# 888| getStmt(290): [DoStmt] do (...) ... -# 890| getCondition(): [Literal] 0 -# 890| Type = [IntType] int -# 890| Value = [Literal] 0 -# 890| ValueCategory = prvalue -# 888| getStmt(): [BlockStmt] { ... } -# 889| getStmt(0): [DeclStmt] declaration -# 889| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x290 -# 889| Type = [Struct] String -# 889| getVariable().getInitializer(): [Initializer] initializer for x290 -# 889| getExpr(): [ConstructorCall] call to String -# 889| Type = [VoidType] void -# 889| ValueCategory = prvalue -# 890| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 890| Type = [VoidType] void -# 890| ValueCategory = prvalue -# 890| getQualifier(): [VariableAccess] x290 -# 890| Type = [Struct] String -# 890| ValueCategory = lvalue -# 890| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 890| Conversion = [BoolConversion] conversion to bool -# 890| Type = [BoolType] bool -# 890| Value = [CStyleCast] 0 -# 890| ValueCategory = prvalue -# 891| getStmt(291): [DoStmt] do (...) ... -# 893| getCondition(): [Literal] 0 -# 893| Type = [IntType] int -# 893| Value = [Literal] 0 -# 893| ValueCategory = prvalue -# 891| getStmt(): [BlockStmt] { ... } -# 892| getStmt(0): [DeclStmt] declaration -# 892| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x291 -# 892| Type = [Struct] String -# 892| getVariable().getInitializer(): [Initializer] initializer for x291 -# 892| getExpr(): [ConstructorCall] call to String -# 892| Type = [VoidType] void -# 892| ValueCategory = prvalue -# 893| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 893| Type = [VoidType] void -# 893| ValueCategory = prvalue -# 893| getQualifier(): [VariableAccess] x291 -# 893| Type = [Struct] String -# 893| ValueCategory = lvalue -# 893| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 893| Conversion = [BoolConversion] conversion to bool -# 893| Type = [BoolType] bool -# 893| Value = [CStyleCast] 0 -# 893| ValueCategory = prvalue -# 894| getStmt(292): [DoStmt] do (...) ... -# 896| getCondition(): [Literal] 0 -# 896| Type = [IntType] int -# 896| Value = [Literal] 0 -# 896| ValueCategory = prvalue -# 894| getStmt(): [BlockStmt] { ... } -# 895| getStmt(0): [DeclStmt] declaration -# 895| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x292 -# 895| Type = [Struct] String -# 895| getVariable().getInitializer(): [Initializer] initializer for x292 -# 895| getExpr(): [ConstructorCall] call to String -# 895| Type = [VoidType] void -# 895| ValueCategory = prvalue -# 896| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 896| Type = [VoidType] void -# 896| ValueCategory = prvalue -# 896| getQualifier(): [VariableAccess] x292 -# 896| Type = [Struct] String -# 896| ValueCategory = lvalue -# 896| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 896| Conversion = [BoolConversion] conversion to bool -# 896| Type = [BoolType] bool -# 896| Value = [CStyleCast] 0 -# 896| ValueCategory = prvalue -# 897| getStmt(293): [DoStmt] do (...) ... -# 899| getCondition(): [Literal] 0 -# 899| Type = [IntType] int -# 899| Value = [Literal] 0 -# 899| ValueCategory = prvalue -# 897| getStmt(): [BlockStmt] { ... } -# 898| getStmt(0): [DeclStmt] declaration -# 898| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x293 -# 898| Type = [Struct] String -# 898| getVariable().getInitializer(): [Initializer] initializer for x293 -# 898| getExpr(): [ConstructorCall] call to String -# 898| Type = [VoidType] void -# 898| ValueCategory = prvalue -# 899| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 899| Type = [VoidType] void -# 899| ValueCategory = prvalue -# 899| getQualifier(): [VariableAccess] x293 -# 899| Type = [Struct] String -# 899| ValueCategory = lvalue -# 899| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 899| Conversion = [BoolConversion] conversion to bool -# 899| Type = [BoolType] bool -# 899| Value = [CStyleCast] 0 -# 899| ValueCategory = prvalue -# 900| getStmt(294): [DoStmt] do (...) ... -# 902| getCondition(): [Literal] 0 -# 902| Type = [IntType] int -# 902| Value = [Literal] 0 -# 902| ValueCategory = prvalue -# 900| getStmt(): [BlockStmt] { ... } -# 901| getStmt(0): [DeclStmt] declaration -# 901| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x294 -# 901| Type = [Struct] String -# 901| getVariable().getInitializer(): [Initializer] initializer for x294 -# 901| getExpr(): [ConstructorCall] call to String -# 901| Type = [VoidType] void -# 901| ValueCategory = prvalue -# 902| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 902| Type = [VoidType] void -# 902| ValueCategory = prvalue -# 902| getQualifier(): [VariableAccess] x294 -# 902| Type = [Struct] String -# 902| ValueCategory = lvalue -# 902| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 902| Conversion = [BoolConversion] conversion to bool -# 902| Type = [BoolType] bool -# 902| Value = [CStyleCast] 0 -# 902| ValueCategory = prvalue -# 903| getStmt(295): [DoStmt] do (...) ... -# 905| getCondition(): [Literal] 0 -# 905| Type = [IntType] int -# 905| Value = [Literal] 0 -# 905| ValueCategory = prvalue -# 903| getStmt(): [BlockStmt] { ... } -# 904| getStmt(0): [DeclStmt] declaration -# 904| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x295 -# 904| Type = [Struct] String -# 904| getVariable().getInitializer(): [Initializer] initializer for x295 -# 904| getExpr(): [ConstructorCall] call to String -# 904| Type = [VoidType] void -# 904| ValueCategory = prvalue -# 905| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 905| Type = [VoidType] void -# 905| ValueCategory = prvalue -# 905| getQualifier(): [VariableAccess] x295 -# 905| Type = [Struct] String -# 905| ValueCategory = lvalue -# 905| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 905| Conversion = [BoolConversion] conversion to bool -# 905| Type = [BoolType] bool -# 905| Value = [CStyleCast] 0 -# 905| ValueCategory = prvalue -# 906| getStmt(296): [DoStmt] do (...) ... -# 908| getCondition(): [Literal] 0 -# 908| Type = [IntType] int -# 908| Value = [Literal] 0 -# 908| ValueCategory = prvalue -# 906| getStmt(): [BlockStmt] { ... } -# 907| getStmt(0): [DeclStmt] declaration -# 907| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x296 -# 907| Type = [Struct] String -# 907| getVariable().getInitializer(): [Initializer] initializer for x296 -# 907| getExpr(): [ConstructorCall] call to String -# 907| Type = [VoidType] void -# 907| ValueCategory = prvalue -# 908| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 908| Type = [VoidType] void -# 908| ValueCategory = prvalue -# 908| getQualifier(): [VariableAccess] x296 -# 908| Type = [Struct] String -# 908| ValueCategory = lvalue -# 908| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 908| Conversion = [BoolConversion] conversion to bool -# 908| Type = [BoolType] bool -# 908| Value = [CStyleCast] 0 -# 908| ValueCategory = prvalue -# 909| getStmt(297): [DoStmt] do (...) ... -# 911| getCondition(): [Literal] 0 -# 911| Type = [IntType] int -# 911| Value = [Literal] 0 -# 911| ValueCategory = prvalue -# 909| getStmt(): [BlockStmt] { ... } -# 910| getStmt(0): [DeclStmt] declaration -# 910| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x297 -# 910| Type = [Struct] String -# 910| getVariable().getInitializer(): [Initializer] initializer for x297 -# 910| getExpr(): [ConstructorCall] call to String -# 910| Type = [VoidType] void -# 910| ValueCategory = prvalue -# 911| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 911| Type = [VoidType] void -# 911| ValueCategory = prvalue -# 911| getQualifier(): [VariableAccess] x297 -# 911| Type = [Struct] String -# 911| ValueCategory = lvalue -# 911| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 911| Conversion = [BoolConversion] conversion to bool -# 911| Type = [BoolType] bool -# 911| Value = [CStyleCast] 0 -# 911| ValueCategory = prvalue -# 912| getStmt(298): [DoStmt] do (...) ... -# 914| getCondition(): [Literal] 0 -# 914| Type = [IntType] int -# 914| Value = [Literal] 0 -# 914| ValueCategory = prvalue -# 912| getStmt(): [BlockStmt] { ... } -# 913| getStmt(0): [DeclStmt] declaration -# 913| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x298 -# 913| Type = [Struct] String -# 913| getVariable().getInitializer(): [Initializer] initializer for x298 -# 913| getExpr(): [ConstructorCall] call to String -# 913| Type = [VoidType] void -# 913| ValueCategory = prvalue -# 914| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 914| Type = [VoidType] void -# 914| ValueCategory = prvalue -# 914| getQualifier(): [VariableAccess] x298 -# 914| Type = [Struct] String -# 914| ValueCategory = lvalue -# 914| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 914| Conversion = [BoolConversion] conversion to bool -# 914| Type = [BoolType] bool -# 914| Value = [CStyleCast] 0 -# 914| ValueCategory = prvalue -# 915| getStmt(299): [DoStmt] do (...) ... -# 917| getCondition(): [Literal] 0 -# 917| Type = [IntType] int -# 917| Value = [Literal] 0 -# 917| ValueCategory = prvalue -# 915| getStmt(): [BlockStmt] { ... } -# 916| getStmt(0): [DeclStmt] declaration -# 916| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x299 -# 916| Type = [Struct] String -# 916| getVariable().getInitializer(): [Initializer] initializer for x299 -# 916| getExpr(): [ConstructorCall] call to String -# 916| Type = [VoidType] void -# 916| ValueCategory = prvalue -# 917| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 917| Type = [VoidType] void -# 917| ValueCategory = prvalue -# 917| getQualifier(): [VariableAccess] x299 -# 917| Type = [Struct] String -# 917| ValueCategory = lvalue -# 917| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 917| Conversion = [BoolConversion] conversion to bool -# 917| Type = [BoolType] bool -# 917| Value = [CStyleCast] 0 -# 917| ValueCategory = prvalue -# 918| getStmt(300): [DoStmt] do (...) ... -# 920| getCondition(): [Literal] 0 -# 920| Type = [IntType] int -# 920| Value = [Literal] 0 -# 920| ValueCategory = prvalue -# 918| getStmt(): [BlockStmt] { ... } -# 919| getStmt(0): [DeclStmt] declaration -# 919| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x300 -# 919| Type = [Struct] String -# 919| getVariable().getInitializer(): [Initializer] initializer for x300 -# 919| getExpr(): [ConstructorCall] call to String -# 919| Type = [VoidType] void -# 919| ValueCategory = prvalue -# 920| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 920| Type = [VoidType] void -# 920| ValueCategory = prvalue -# 920| getQualifier(): [VariableAccess] x300 -# 920| Type = [Struct] String -# 920| ValueCategory = lvalue -# 920| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 920| Conversion = [BoolConversion] conversion to bool -# 920| Type = [BoolType] bool -# 920| Value = [CStyleCast] 0 -# 920| ValueCategory = prvalue -# 921| getStmt(301): [DoStmt] do (...) ... -# 923| getCondition(): [Literal] 0 -# 923| Type = [IntType] int -# 923| Value = [Literal] 0 -# 923| ValueCategory = prvalue -# 921| getStmt(): [BlockStmt] { ... } -# 922| getStmt(0): [DeclStmt] declaration -# 922| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x301 -# 922| Type = [Struct] String -# 922| getVariable().getInitializer(): [Initializer] initializer for x301 -# 922| getExpr(): [ConstructorCall] call to String -# 922| Type = [VoidType] void -# 922| ValueCategory = prvalue -# 923| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 923| Type = [VoidType] void -# 923| ValueCategory = prvalue -# 923| getQualifier(): [VariableAccess] x301 -# 923| Type = [Struct] String -# 923| ValueCategory = lvalue -# 923| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 923| Conversion = [BoolConversion] conversion to bool -# 923| Type = [BoolType] bool -# 923| Value = [CStyleCast] 0 -# 923| ValueCategory = prvalue -# 924| getStmt(302): [DoStmt] do (...) ... -# 926| getCondition(): [Literal] 0 -# 926| Type = [IntType] int -# 926| Value = [Literal] 0 -# 926| ValueCategory = prvalue -# 924| getStmt(): [BlockStmt] { ... } -# 925| getStmt(0): [DeclStmt] declaration -# 925| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x302 -# 925| Type = [Struct] String -# 925| getVariable().getInitializer(): [Initializer] initializer for x302 -# 925| getExpr(): [ConstructorCall] call to String -# 925| Type = [VoidType] void -# 925| ValueCategory = prvalue -# 926| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 926| Type = [VoidType] void -# 926| ValueCategory = prvalue -# 926| getQualifier(): [VariableAccess] x302 -# 926| Type = [Struct] String -# 926| ValueCategory = lvalue -# 926| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 926| Conversion = [BoolConversion] conversion to bool -# 926| Type = [BoolType] bool -# 926| Value = [CStyleCast] 0 -# 926| ValueCategory = prvalue -# 927| getStmt(303): [DoStmt] do (...) ... -# 929| getCondition(): [Literal] 0 -# 929| Type = [IntType] int -# 929| Value = [Literal] 0 -# 929| ValueCategory = prvalue -# 927| getStmt(): [BlockStmt] { ... } -# 928| getStmt(0): [DeclStmt] declaration -# 928| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x303 -# 928| Type = [Struct] String -# 928| getVariable().getInitializer(): [Initializer] initializer for x303 -# 928| getExpr(): [ConstructorCall] call to String -# 928| Type = [VoidType] void -# 928| ValueCategory = prvalue -# 929| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 929| Type = [VoidType] void -# 929| ValueCategory = prvalue -# 929| getQualifier(): [VariableAccess] x303 -# 929| Type = [Struct] String -# 929| ValueCategory = lvalue -# 929| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 929| Conversion = [BoolConversion] conversion to bool -# 929| Type = [BoolType] bool -# 929| Value = [CStyleCast] 0 -# 929| ValueCategory = prvalue -# 930| getStmt(304): [DoStmt] do (...) ... -# 932| getCondition(): [Literal] 0 -# 932| Type = [IntType] int -# 932| Value = [Literal] 0 -# 932| ValueCategory = prvalue -# 930| getStmt(): [BlockStmt] { ... } -# 931| getStmt(0): [DeclStmt] declaration -# 931| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x304 -# 931| Type = [Struct] String -# 931| getVariable().getInitializer(): [Initializer] initializer for x304 -# 931| getExpr(): [ConstructorCall] call to String -# 931| Type = [VoidType] void -# 931| ValueCategory = prvalue -# 932| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 932| Type = [VoidType] void -# 932| ValueCategory = prvalue -# 932| getQualifier(): [VariableAccess] x304 -# 932| Type = [Struct] String -# 932| ValueCategory = lvalue -# 932| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 932| Conversion = [BoolConversion] conversion to bool -# 932| Type = [BoolType] bool -# 932| Value = [CStyleCast] 0 -# 932| ValueCategory = prvalue -# 933| getStmt(305): [DoStmt] do (...) ... -# 935| getCondition(): [Literal] 0 -# 935| Type = [IntType] int -# 935| Value = [Literal] 0 -# 935| ValueCategory = prvalue -# 933| getStmt(): [BlockStmt] { ... } -# 934| getStmt(0): [DeclStmt] declaration -# 934| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x305 -# 934| Type = [Struct] String -# 934| getVariable().getInitializer(): [Initializer] initializer for x305 -# 934| getExpr(): [ConstructorCall] call to String -# 934| Type = [VoidType] void -# 934| ValueCategory = prvalue -# 935| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 935| Type = [VoidType] void -# 935| ValueCategory = prvalue -# 935| getQualifier(): [VariableAccess] x305 -# 935| Type = [Struct] String -# 935| ValueCategory = lvalue -# 935| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 935| Conversion = [BoolConversion] conversion to bool -# 935| Type = [BoolType] bool -# 935| Value = [CStyleCast] 0 -# 935| ValueCategory = prvalue -# 936| getStmt(306): [DoStmt] do (...) ... -# 938| getCondition(): [Literal] 0 -# 938| Type = [IntType] int -# 938| Value = [Literal] 0 -# 938| ValueCategory = prvalue -# 936| getStmt(): [BlockStmt] { ... } -# 937| getStmt(0): [DeclStmt] declaration -# 937| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x306 -# 937| Type = [Struct] String -# 937| getVariable().getInitializer(): [Initializer] initializer for x306 -# 937| getExpr(): [ConstructorCall] call to String -# 937| Type = [VoidType] void -# 937| ValueCategory = prvalue -# 938| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 938| Type = [VoidType] void -# 938| ValueCategory = prvalue -# 938| getQualifier(): [VariableAccess] x306 -# 938| Type = [Struct] String -# 938| ValueCategory = lvalue -# 938| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 938| Conversion = [BoolConversion] conversion to bool -# 938| Type = [BoolType] bool -# 938| Value = [CStyleCast] 0 -# 938| ValueCategory = prvalue -# 939| getStmt(307): [DoStmt] do (...) ... -# 941| getCondition(): [Literal] 0 -# 941| Type = [IntType] int -# 941| Value = [Literal] 0 -# 941| ValueCategory = prvalue -# 939| getStmt(): [BlockStmt] { ... } -# 940| getStmt(0): [DeclStmt] declaration -# 940| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x307 -# 940| Type = [Struct] String -# 940| getVariable().getInitializer(): [Initializer] initializer for x307 -# 940| getExpr(): [ConstructorCall] call to String -# 940| Type = [VoidType] void -# 940| ValueCategory = prvalue -# 941| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 941| Type = [VoidType] void -# 941| ValueCategory = prvalue -# 941| getQualifier(): [VariableAccess] x307 -# 941| Type = [Struct] String -# 941| ValueCategory = lvalue -# 941| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 941| Conversion = [BoolConversion] conversion to bool -# 941| Type = [BoolType] bool -# 941| Value = [CStyleCast] 0 -# 941| ValueCategory = prvalue -# 942| getStmt(308): [DoStmt] do (...) ... -# 944| getCondition(): [Literal] 0 -# 944| Type = [IntType] int -# 944| Value = [Literal] 0 -# 944| ValueCategory = prvalue -# 942| getStmt(): [BlockStmt] { ... } -# 943| getStmt(0): [DeclStmt] declaration -# 943| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x308 -# 943| Type = [Struct] String -# 943| getVariable().getInitializer(): [Initializer] initializer for x308 -# 943| getExpr(): [ConstructorCall] call to String -# 943| Type = [VoidType] void -# 943| ValueCategory = prvalue -# 944| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 944| Type = [VoidType] void -# 944| ValueCategory = prvalue -# 944| getQualifier(): [VariableAccess] x308 -# 944| Type = [Struct] String -# 944| ValueCategory = lvalue -# 944| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 944| Conversion = [BoolConversion] conversion to bool -# 944| Type = [BoolType] bool -# 944| Value = [CStyleCast] 0 -# 944| ValueCategory = prvalue -# 945| getStmt(309): [DoStmt] do (...) ... -# 947| getCondition(): [Literal] 0 -# 947| Type = [IntType] int -# 947| Value = [Literal] 0 -# 947| ValueCategory = prvalue -# 945| getStmt(): [BlockStmt] { ... } -# 946| getStmt(0): [DeclStmt] declaration -# 946| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x309 -# 946| Type = [Struct] String -# 946| getVariable().getInitializer(): [Initializer] initializer for x309 -# 946| getExpr(): [ConstructorCall] call to String -# 946| Type = [VoidType] void -# 946| ValueCategory = prvalue -# 947| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 947| Type = [VoidType] void -# 947| ValueCategory = prvalue -# 947| getQualifier(): [VariableAccess] x309 -# 947| Type = [Struct] String -# 947| ValueCategory = lvalue -# 947| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 947| Conversion = [BoolConversion] conversion to bool -# 947| Type = [BoolType] bool -# 947| Value = [CStyleCast] 0 -# 947| ValueCategory = prvalue -# 948| getStmt(310): [DoStmt] do (...) ... -# 950| getCondition(): [Literal] 0 -# 950| Type = [IntType] int -# 950| Value = [Literal] 0 -# 950| ValueCategory = prvalue -# 948| getStmt(): [BlockStmt] { ... } -# 949| getStmt(0): [DeclStmt] declaration -# 949| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x310 -# 949| Type = [Struct] String -# 949| getVariable().getInitializer(): [Initializer] initializer for x310 -# 949| getExpr(): [ConstructorCall] call to String -# 949| Type = [VoidType] void -# 949| ValueCategory = prvalue -# 950| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 950| Type = [VoidType] void -# 950| ValueCategory = prvalue -# 950| getQualifier(): [VariableAccess] x310 -# 950| Type = [Struct] String -# 950| ValueCategory = lvalue -# 950| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 950| Conversion = [BoolConversion] conversion to bool -# 950| Type = [BoolType] bool -# 950| Value = [CStyleCast] 0 -# 950| ValueCategory = prvalue -# 951| getStmt(311): [DoStmt] do (...) ... -# 953| getCondition(): [Literal] 0 -# 953| Type = [IntType] int -# 953| Value = [Literal] 0 -# 953| ValueCategory = prvalue -# 951| getStmt(): [BlockStmt] { ... } -# 952| getStmt(0): [DeclStmt] declaration -# 952| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x311 -# 952| Type = [Struct] String -# 952| getVariable().getInitializer(): [Initializer] initializer for x311 -# 952| getExpr(): [ConstructorCall] call to String -# 952| Type = [VoidType] void -# 952| ValueCategory = prvalue -# 953| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 953| Type = [VoidType] void -# 953| ValueCategory = prvalue -# 953| getQualifier(): [VariableAccess] x311 -# 953| Type = [Struct] String -# 953| ValueCategory = lvalue -# 953| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 953| Conversion = [BoolConversion] conversion to bool -# 953| Type = [BoolType] bool -# 953| Value = [CStyleCast] 0 -# 953| ValueCategory = prvalue -# 954| getStmt(312): [DoStmt] do (...) ... -# 956| getCondition(): [Literal] 0 -# 956| Type = [IntType] int -# 956| Value = [Literal] 0 -# 956| ValueCategory = prvalue -# 954| getStmt(): [BlockStmt] { ... } -# 955| getStmt(0): [DeclStmt] declaration -# 955| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x312 -# 955| Type = [Struct] String -# 955| getVariable().getInitializer(): [Initializer] initializer for x312 -# 955| getExpr(): [ConstructorCall] call to String -# 955| Type = [VoidType] void -# 955| ValueCategory = prvalue -# 956| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 956| Type = [VoidType] void -# 956| ValueCategory = prvalue -# 956| getQualifier(): [VariableAccess] x312 -# 956| Type = [Struct] String -# 956| ValueCategory = lvalue -# 956| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 956| Conversion = [BoolConversion] conversion to bool -# 956| Type = [BoolType] bool -# 956| Value = [CStyleCast] 0 -# 956| ValueCategory = prvalue -# 957| getStmt(313): [DoStmt] do (...) ... -# 959| getCondition(): [Literal] 0 -# 959| Type = [IntType] int -# 959| Value = [Literal] 0 -# 959| ValueCategory = prvalue -# 957| getStmt(): [BlockStmt] { ... } -# 958| getStmt(0): [DeclStmt] declaration -# 958| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x313 -# 958| Type = [Struct] String -# 958| getVariable().getInitializer(): [Initializer] initializer for x313 -# 958| getExpr(): [ConstructorCall] call to String -# 958| Type = [VoidType] void -# 958| ValueCategory = prvalue -# 959| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 959| Type = [VoidType] void -# 959| ValueCategory = prvalue -# 959| getQualifier(): [VariableAccess] x313 -# 959| Type = [Struct] String -# 959| ValueCategory = lvalue -# 959| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 959| Conversion = [BoolConversion] conversion to bool -# 959| Type = [BoolType] bool -# 959| Value = [CStyleCast] 0 -# 959| ValueCategory = prvalue -# 960| getStmt(314): [DoStmt] do (...) ... -# 962| getCondition(): [Literal] 0 -# 962| Type = [IntType] int -# 962| Value = [Literal] 0 -# 962| ValueCategory = prvalue -# 960| getStmt(): [BlockStmt] { ... } -# 961| getStmt(0): [DeclStmt] declaration -# 961| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x314 -# 961| Type = [Struct] String -# 961| getVariable().getInitializer(): [Initializer] initializer for x314 -# 961| getExpr(): [ConstructorCall] call to String -# 961| Type = [VoidType] void -# 961| ValueCategory = prvalue -# 962| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 962| Type = [VoidType] void -# 962| ValueCategory = prvalue -# 962| getQualifier(): [VariableAccess] x314 -# 962| Type = [Struct] String -# 962| ValueCategory = lvalue -# 962| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 962| Conversion = [BoolConversion] conversion to bool -# 962| Type = [BoolType] bool -# 962| Value = [CStyleCast] 0 -# 962| ValueCategory = prvalue -# 963| getStmt(315): [DoStmt] do (...) ... -# 965| getCondition(): [Literal] 0 -# 965| Type = [IntType] int -# 965| Value = [Literal] 0 -# 965| ValueCategory = prvalue -# 963| getStmt(): [BlockStmt] { ... } -# 964| getStmt(0): [DeclStmt] declaration -# 964| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x315 -# 964| Type = [Struct] String -# 964| getVariable().getInitializer(): [Initializer] initializer for x315 -# 964| getExpr(): [ConstructorCall] call to String -# 964| Type = [VoidType] void -# 964| ValueCategory = prvalue -# 965| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 965| Type = [VoidType] void -# 965| ValueCategory = prvalue -# 965| getQualifier(): [VariableAccess] x315 -# 965| Type = [Struct] String -# 965| ValueCategory = lvalue -# 965| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 965| Conversion = [BoolConversion] conversion to bool -# 965| Type = [BoolType] bool -# 965| Value = [CStyleCast] 0 -# 965| ValueCategory = prvalue -# 966| getStmt(316): [DoStmt] do (...) ... -# 968| getCondition(): [Literal] 0 -# 968| Type = [IntType] int -# 968| Value = [Literal] 0 -# 968| ValueCategory = prvalue -# 966| getStmt(): [BlockStmt] { ... } -# 967| getStmt(0): [DeclStmt] declaration -# 967| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x316 -# 967| Type = [Struct] String -# 967| getVariable().getInitializer(): [Initializer] initializer for x316 -# 967| getExpr(): [ConstructorCall] call to String -# 967| Type = [VoidType] void -# 967| ValueCategory = prvalue -# 968| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 968| Type = [VoidType] void -# 968| ValueCategory = prvalue -# 968| getQualifier(): [VariableAccess] x316 -# 968| Type = [Struct] String -# 968| ValueCategory = lvalue -# 968| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 968| Conversion = [BoolConversion] conversion to bool -# 968| Type = [BoolType] bool -# 968| Value = [CStyleCast] 0 -# 968| ValueCategory = prvalue -# 969| getStmt(317): [DoStmt] do (...) ... -# 971| getCondition(): [Literal] 0 -# 971| Type = [IntType] int -# 971| Value = [Literal] 0 -# 971| ValueCategory = prvalue -# 969| getStmt(): [BlockStmt] { ... } -# 970| getStmt(0): [DeclStmt] declaration -# 970| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x317 -# 970| Type = [Struct] String -# 970| getVariable().getInitializer(): [Initializer] initializer for x317 -# 970| getExpr(): [ConstructorCall] call to String -# 970| Type = [VoidType] void -# 970| ValueCategory = prvalue -# 971| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 971| Type = [VoidType] void -# 971| ValueCategory = prvalue -# 971| getQualifier(): [VariableAccess] x317 -# 971| Type = [Struct] String -# 971| ValueCategory = lvalue -# 971| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 971| Conversion = [BoolConversion] conversion to bool -# 971| Type = [BoolType] bool -# 971| Value = [CStyleCast] 0 -# 971| ValueCategory = prvalue -# 972| getStmt(318): [DoStmt] do (...) ... -# 974| getCondition(): [Literal] 0 -# 974| Type = [IntType] int -# 974| Value = [Literal] 0 -# 974| ValueCategory = prvalue -# 972| getStmt(): [BlockStmt] { ... } -# 973| getStmt(0): [DeclStmt] declaration -# 973| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x318 -# 973| Type = [Struct] String -# 973| getVariable().getInitializer(): [Initializer] initializer for x318 -# 973| getExpr(): [ConstructorCall] call to String -# 973| Type = [VoidType] void -# 973| ValueCategory = prvalue -# 974| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 974| Type = [VoidType] void -# 974| ValueCategory = prvalue -# 974| getQualifier(): [VariableAccess] x318 -# 974| Type = [Struct] String -# 974| ValueCategory = lvalue -# 974| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 974| Conversion = [BoolConversion] conversion to bool -# 974| Type = [BoolType] bool -# 974| Value = [CStyleCast] 0 -# 974| ValueCategory = prvalue -# 975| getStmt(319): [DoStmt] do (...) ... -# 977| getCondition(): [Literal] 0 -# 977| Type = [IntType] int -# 977| Value = [Literal] 0 -# 977| ValueCategory = prvalue -# 975| getStmt(): [BlockStmt] { ... } -# 976| getStmt(0): [DeclStmt] declaration -# 976| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x319 -# 976| Type = [Struct] String -# 976| getVariable().getInitializer(): [Initializer] initializer for x319 -# 976| getExpr(): [ConstructorCall] call to String -# 976| Type = [VoidType] void -# 976| ValueCategory = prvalue -# 977| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 977| Type = [VoidType] void -# 977| ValueCategory = prvalue -# 977| getQualifier(): [VariableAccess] x319 -# 977| Type = [Struct] String -# 977| ValueCategory = lvalue -# 977| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 977| Conversion = [BoolConversion] conversion to bool -# 977| Type = [BoolType] bool -# 977| Value = [CStyleCast] 0 -# 977| ValueCategory = prvalue -# 978| getStmt(320): [DoStmt] do (...) ... -# 980| getCondition(): [Literal] 0 -# 980| Type = [IntType] int -# 980| Value = [Literal] 0 -# 980| ValueCategory = prvalue -# 978| getStmt(): [BlockStmt] { ... } -# 979| getStmt(0): [DeclStmt] declaration -# 979| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x320 -# 979| Type = [Struct] String -# 979| getVariable().getInitializer(): [Initializer] initializer for x320 -# 979| getExpr(): [ConstructorCall] call to String -# 979| Type = [VoidType] void -# 979| ValueCategory = prvalue -# 980| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 980| Type = [VoidType] void -# 980| ValueCategory = prvalue -# 980| getQualifier(): [VariableAccess] x320 -# 980| Type = [Struct] String -# 980| ValueCategory = lvalue -# 980| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 980| Conversion = [BoolConversion] conversion to bool -# 980| Type = [BoolType] bool -# 980| Value = [CStyleCast] 0 -# 980| ValueCategory = prvalue -# 981| getStmt(321): [DoStmt] do (...) ... -# 983| getCondition(): [Literal] 0 -# 983| Type = [IntType] int -# 983| Value = [Literal] 0 -# 983| ValueCategory = prvalue -# 981| getStmt(): [BlockStmt] { ... } -# 982| getStmt(0): [DeclStmt] declaration -# 982| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x321 -# 982| Type = [Struct] String -# 982| getVariable().getInitializer(): [Initializer] initializer for x321 -# 982| getExpr(): [ConstructorCall] call to String -# 982| Type = [VoidType] void -# 982| ValueCategory = prvalue -# 983| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 983| Type = [VoidType] void -# 983| ValueCategory = prvalue -# 983| getQualifier(): [VariableAccess] x321 -# 983| Type = [Struct] String -# 983| ValueCategory = lvalue -# 983| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 983| Conversion = [BoolConversion] conversion to bool -# 983| Type = [BoolType] bool -# 983| Value = [CStyleCast] 0 -# 983| ValueCategory = prvalue -# 984| getStmt(322): [DoStmt] do (...) ... -# 986| getCondition(): [Literal] 0 -# 986| Type = [IntType] int -# 986| Value = [Literal] 0 -# 986| ValueCategory = prvalue -# 984| getStmt(): [BlockStmt] { ... } -# 985| getStmt(0): [DeclStmt] declaration -# 985| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x322 -# 985| Type = [Struct] String -# 985| getVariable().getInitializer(): [Initializer] initializer for x322 -# 985| getExpr(): [ConstructorCall] call to String -# 985| Type = [VoidType] void -# 985| ValueCategory = prvalue -# 986| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 986| Type = [VoidType] void -# 986| ValueCategory = prvalue -# 986| getQualifier(): [VariableAccess] x322 -# 986| Type = [Struct] String -# 986| ValueCategory = lvalue -# 986| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 986| Conversion = [BoolConversion] conversion to bool -# 986| Type = [BoolType] bool -# 986| Value = [CStyleCast] 0 -# 986| ValueCategory = prvalue -# 987| getStmt(323): [DoStmt] do (...) ... -# 989| getCondition(): [Literal] 0 -# 989| Type = [IntType] int -# 989| Value = [Literal] 0 -# 989| ValueCategory = prvalue -# 987| getStmt(): [BlockStmt] { ... } -# 988| getStmt(0): [DeclStmt] declaration -# 988| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x323 -# 988| Type = [Struct] String -# 988| getVariable().getInitializer(): [Initializer] initializer for x323 -# 988| getExpr(): [ConstructorCall] call to String -# 988| Type = [VoidType] void -# 988| ValueCategory = prvalue -# 989| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 989| Type = [VoidType] void -# 989| ValueCategory = prvalue -# 989| getQualifier(): [VariableAccess] x323 -# 989| Type = [Struct] String -# 989| ValueCategory = lvalue -# 989| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 989| Conversion = [BoolConversion] conversion to bool -# 989| Type = [BoolType] bool -# 989| Value = [CStyleCast] 0 -# 989| ValueCategory = prvalue -# 990| getStmt(324): [DoStmt] do (...) ... -# 992| getCondition(): [Literal] 0 -# 992| Type = [IntType] int -# 992| Value = [Literal] 0 -# 992| ValueCategory = prvalue -# 990| getStmt(): [BlockStmt] { ... } -# 991| getStmt(0): [DeclStmt] declaration -# 991| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x324 -# 991| Type = [Struct] String -# 991| getVariable().getInitializer(): [Initializer] initializer for x324 -# 991| getExpr(): [ConstructorCall] call to String -# 991| Type = [VoidType] void -# 991| ValueCategory = prvalue -# 992| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 992| Type = [VoidType] void -# 992| ValueCategory = prvalue -# 992| getQualifier(): [VariableAccess] x324 -# 992| Type = [Struct] String -# 992| ValueCategory = lvalue -# 992| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 992| Conversion = [BoolConversion] conversion to bool -# 992| Type = [BoolType] bool -# 992| Value = [CStyleCast] 0 -# 992| ValueCategory = prvalue -# 993| getStmt(325): [DoStmt] do (...) ... -# 995| getCondition(): [Literal] 0 -# 995| Type = [IntType] int -# 995| Value = [Literal] 0 -# 995| ValueCategory = prvalue -# 993| getStmt(): [BlockStmt] { ... } -# 994| getStmt(0): [DeclStmt] declaration -# 994| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x325 -# 994| Type = [Struct] String -# 994| getVariable().getInitializer(): [Initializer] initializer for x325 -# 994| getExpr(): [ConstructorCall] call to String -# 994| Type = [VoidType] void -# 994| ValueCategory = prvalue -# 995| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 995| Type = [VoidType] void -# 995| ValueCategory = prvalue -# 995| getQualifier(): [VariableAccess] x325 -# 995| Type = [Struct] String -# 995| ValueCategory = lvalue -# 995| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 995| Conversion = [BoolConversion] conversion to bool -# 995| Type = [BoolType] bool -# 995| Value = [CStyleCast] 0 -# 995| ValueCategory = prvalue -# 996| getStmt(326): [DoStmt] do (...) ... -# 998| getCondition(): [Literal] 0 -# 998| Type = [IntType] int -# 998| Value = [Literal] 0 -# 998| ValueCategory = prvalue -# 996| getStmt(): [BlockStmt] { ... } -# 997| getStmt(0): [DeclStmt] declaration -# 997| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x326 -# 997| Type = [Struct] String -# 997| getVariable().getInitializer(): [Initializer] initializer for x326 -# 997| getExpr(): [ConstructorCall] call to String -# 997| Type = [VoidType] void -# 997| ValueCategory = prvalue -# 998| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 998| Type = [VoidType] void -# 998| ValueCategory = prvalue -# 998| getQualifier(): [VariableAccess] x326 -# 998| Type = [Struct] String -# 998| ValueCategory = lvalue -# 998| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 998| Conversion = [BoolConversion] conversion to bool -# 998| Type = [BoolType] bool -# 998| Value = [CStyleCast] 0 -# 998| ValueCategory = prvalue -# 999| getStmt(327): [DoStmt] do (...) ... -# 1001| getCondition(): [Literal] 0 -# 1001| Type = [IntType] int -# 1001| Value = [Literal] 0 -# 1001| ValueCategory = prvalue -# 999| getStmt(): [BlockStmt] { ... } -# 1000| getStmt(0): [DeclStmt] declaration -# 1000| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x327 -# 1000| Type = [Struct] String -# 1000| getVariable().getInitializer(): [Initializer] initializer for x327 -# 1000| getExpr(): [ConstructorCall] call to String -# 1000| Type = [VoidType] void -# 1000| ValueCategory = prvalue -# 1001| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1001| Type = [VoidType] void -# 1001| ValueCategory = prvalue -# 1001| getQualifier(): [VariableAccess] x327 -# 1001| Type = [Struct] String -# 1001| ValueCategory = lvalue -# 1001| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1001| Conversion = [BoolConversion] conversion to bool -# 1001| Type = [BoolType] bool -# 1001| Value = [CStyleCast] 0 -# 1001| ValueCategory = prvalue -# 1002| getStmt(328): [DoStmt] do (...) ... -# 1004| getCondition(): [Literal] 0 -# 1004| Type = [IntType] int -# 1004| Value = [Literal] 0 -# 1004| ValueCategory = prvalue -# 1002| getStmt(): [BlockStmt] { ... } -# 1003| getStmt(0): [DeclStmt] declaration -# 1003| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x328 -# 1003| Type = [Struct] String -# 1003| getVariable().getInitializer(): [Initializer] initializer for x328 -# 1003| getExpr(): [ConstructorCall] call to String -# 1003| Type = [VoidType] void -# 1003| ValueCategory = prvalue -# 1004| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1004| Type = [VoidType] void -# 1004| ValueCategory = prvalue -# 1004| getQualifier(): [VariableAccess] x328 -# 1004| Type = [Struct] String -# 1004| ValueCategory = lvalue -# 1004| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1004| Conversion = [BoolConversion] conversion to bool -# 1004| Type = [BoolType] bool -# 1004| Value = [CStyleCast] 0 -# 1004| ValueCategory = prvalue -# 1005| getStmt(329): [DoStmt] do (...) ... -# 1007| getCondition(): [Literal] 0 -# 1007| Type = [IntType] int -# 1007| Value = [Literal] 0 -# 1007| ValueCategory = prvalue -# 1005| getStmt(): [BlockStmt] { ... } -# 1006| getStmt(0): [DeclStmt] declaration -# 1006| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x329 -# 1006| Type = [Struct] String -# 1006| getVariable().getInitializer(): [Initializer] initializer for x329 -# 1006| getExpr(): [ConstructorCall] call to String -# 1006| Type = [VoidType] void -# 1006| ValueCategory = prvalue -# 1007| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1007| Type = [VoidType] void -# 1007| ValueCategory = prvalue -# 1007| getQualifier(): [VariableAccess] x329 -# 1007| Type = [Struct] String -# 1007| ValueCategory = lvalue -# 1007| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1007| Conversion = [BoolConversion] conversion to bool -# 1007| Type = [BoolType] bool -# 1007| Value = [CStyleCast] 0 -# 1007| ValueCategory = prvalue -# 1008| getStmt(330): [DoStmt] do (...) ... -# 1010| getCondition(): [Literal] 0 -# 1010| Type = [IntType] int -# 1010| Value = [Literal] 0 -# 1010| ValueCategory = prvalue -# 1008| getStmt(): [BlockStmt] { ... } -# 1009| getStmt(0): [DeclStmt] declaration -# 1009| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x330 -# 1009| Type = [Struct] String -# 1009| getVariable().getInitializer(): [Initializer] initializer for x330 -# 1009| getExpr(): [ConstructorCall] call to String -# 1009| Type = [VoidType] void -# 1009| ValueCategory = prvalue -# 1010| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1010| Type = [VoidType] void -# 1010| ValueCategory = prvalue -# 1010| getQualifier(): [VariableAccess] x330 -# 1010| Type = [Struct] String -# 1010| ValueCategory = lvalue -# 1010| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1010| Conversion = [BoolConversion] conversion to bool -# 1010| Type = [BoolType] bool -# 1010| Value = [CStyleCast] 0 -# 1010| ValueCategory = prvalue -# 1011| getStmt(331): [DoStmt] do (...) ... -# 1013| getCondition(): [Literal] 0 -# 1013| Type = [IntType] int -# 1013| Value = [Literal] 0 -# 1013| ValueCategory = prvalue -# 1011| getStmt(): [BlockStmt] { ... } -# 1012| getStmt(0): [DeclStmt] declaration -# 1012| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x331 -# 1012| Type = [Struct] String -# 1012| getVariable().getInitializer(): [Initializer] initializer for x331 -# 1012| getExpr(): [ConstructorCall] call to String -# 1012| Type = [VoidType] void -# 1012| ValueCategory = prvalue -# 1013| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1013| Type = [VoidType] void -# 1013| ValueCategory = prvalue -# 1013| getQualifier(): [VariableAccess] x331 -# 1013| Type = [Struct] String -# 1013| ValueCategory = lvalue -# 1013| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1013| Conversion = [BoolConversion] conversion to bool -# 1013| Type = [BoolType] bool -# 1013| Value = [CStyleCast] 0 -# 1013| ValueCategory = prvalue -# 1014| getStmt(332): [DoStmt] do (...) ... -# 1016| getCondition(): [Literal] 0 -# 1016| Type = [IntType] int -# 1016| Value = [Literal] 0 -# 1016| ValueCategory = prvalue -# 1014| getStmt(): [BlockStmt] { ... } -# 1015| getStmt(0): [DeclStmt] declaration -# 1015| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x332 -# 1015| Type = [Struct] String -# 1015| getVariable().getInitializer(): [Initializer] initializer for x332 -# 1015| getExpr(): [ConstructorCall] call to String -# 1015| Type = [VoidType] void -# 1015| ValueCategory = prvalue -# 1016| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1016| Type = [VoidType] void -# 1016| ValueCategory = prvalue -# 1016| getQualifier(): [VariableAccess] x332 -# 1016| Type = [Struct] String -# 1016| ValueCategory = lvalue -# 1016| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1016| Conversion = [BoolConversion] conversion to bool -# 1016| Type = [BoolType] bool -# 1016| Value = [CStyleCast] 0 -# 1016| ValueCategory = prvalue -# 1017| getStmt(333): [DoStmt] do (...) ... -# 1019| getCondition(): [Literal] 0 -# 1019| Type = [IntType] int -# 1019| Value = [Literal] 0 -# 1019| ValueCategory = prvalue -# 1017| getStmt(): [BlockStmt] { ... } -# 1018| getStmt(0): [DeclStmt] declaration -# 1018| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x333 -# 1018| Type = [Struct] String -# 1018| getVariable().getInitializer(): [Initializer] initializer for x333 -# 1018| getExpr(): [ConstructorCall] call to String -# 1018| Type = [VoidType] void -# 1018| ValueCategory = prvalue -# 1019| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1019| Type = [VoidType] void -# 1019| ValueCategory = prvalue -# 1019| getQualifier(): [VariableAccess] x333 -# 1019| Type = [Struct] String -# 1019| ValueCategory = lvalue -# 1019| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1019| Conversion = [BoolConversion] conversion to bool -# 1019| Type = [BoolType] bool -# 1019| Value = [CStyleCast] 0 -# 1019| ValueCategory = prvalue -# 1020| getStmt(334): [DoStmt] do (...) ... -# 1022| getCondition(): [Literal] 0 -# 1022| Type = [IntType] int -# 1022| Value = [Literal] 0 -# 1022| ValueCategory = prvalue -# 1020| getStmt(): [BlockStmt] { ... } -# 1021| getStmt(0): [DeclStmt] declaration -# 1021| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x334 -# 1021| Type = [Struct] String -# 1021| getVariable().getInitializer(): [Initializer] initializer for x334 -# 1021| getExpr(): [ConstructorCall] call to String -# 1021| Type = [VoidType] void -# 1021| ValueCategory = prvalue -# 1022| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1022| Type = [VoidType] void -# 1022| ValueCategory = prvalue -# 1022| getQualifier(): [VariableAccess] x334 -# 1022| Type = [Struct] String -# 1022| ValueCategory = lvalue -# 1022| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1022| Conversion = [BoolConversion] conversion to bool -# 1022| Type = [BoolType] bool -# 1022| Value = [CStyleCast] 0 -# 1022| ValueCategory = prvalue -# 1023| getStmt(335): [DoStmt] do (...) ... -# 1025| getCondition(): [Literal] 0 -# 1025| Type = [IntType] int -# 1025| Value = [Literal] 0 -# 1025| ValueCategory = prvalue -# 1023| getStmt(): [BlockStmt] { ... } -# 1024| getStmt(0): [DeclStmt] declaration -# 1024| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x335 -# 1024| Type = [Struct] String -# 1024| getVariable().getInitializer(): [Initializer] initializer for x335 -# 1024| getExpr(): [ConstructorCall] call to String -# 1024| Type = [VoidType] void -# 1024| ValueCategory = prvalue -# 1025| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1025| Type = [VoidType] void -# 1025| ValueCategory = prvalue -# 1025| getQualifier(): [VariableAccess] x335 -# 1025| Type = [Struct] String -# 1025| ValueCategory = lvalue -# 1025| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1025| Conversion = [BoolConversion] conversion to bool -# 1025| Type = [BoolType] bool -# 1025| Value = [CStyleCast] 0 -# 1025| ValueCategory = prvalue -# 1026| getStmt(336): [DoStmt] do (...) ... -# 1028| getCondition(): [Literal] 0 -# 1028| Type = [IntType] int -# 1028| Value = [Literal] 0 -# 1028| ValueCategory = prvalue -# 1026| getStmt(): [BlockStmt] { ... } -# 1027| getStmt(0): [DeclStmt] declaration -# 1027| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x336 -# 1027| Type = [Struct] String -# 1027| getVariable().getInitializer(): [Initializer] initializer for x336 -# 1027| getExpr(): [ConstructorCall] call to String -# 1027| Type = [VoidType] void -# 1027| ValueCategory = prvalue -# 1028| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1028| Type = [VoidType] void -# 1028| ValueCategory = prvalue -# 1028| getQualifier(): [VariableAccess] x336 -# 1028| Type = [Struct] String -# 1028| ValueCategory = lvalue -# 1028| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1028| Conversion = [BoolConversion] conversion to bool -# 1028| Type = [BoolType] bool -# 1028| Value = [CStyleCast] 0 -# 1028| ValueCategory = prvalue -# 1029| getStmt(337): [DoStmt] do (...) ... -# 1031| getCondition(): [Literal] 0 -# 1031| Type = [IntType] int -# 1031| Value = [Literal] 0 -# 1031| ValueCategory = prvalue -# 1029| getStmt(): [BlockStmt] { ... } -# 1030| getStmt(0): [DeclStmt] declaration -# 1030| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x337 -# 1030| Type = [Struct] String -# 1030| getVariable().getInitializer(): [Initializer] initializer for x337 -# 1030| getExpr(): [ConstructorCall] call to String -# 1030| Type = [VoidType] void -# 1030| ValueCategory = prvalue -# 1031| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1031| Type = [VoidType] void -# 1031| ValueCategory = prvalue -# 1031| getQualifier(): [VariableAccess] x337 -# 1031| Type = [Struct] String -# 1031| ValueCategory = lvalue -# 1031| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1031| Conversion = [BoolConversion] conversion to bool -# 1031| Type = [BoolType] bool -# 1031| Value = [CStyleCast] 0 -# 1031| ValueCategory = prvalue -# 1032| getStmt(338): [DoStmt] do (...) ... -# 1034| getCondition(): [Literal] 0 -# 1034| Type = [IntType] int -# 1034| Value = [Literal] 0 -# 1034| ValueCategory = prvalue -# 1032| getStmt(): [BlockStmt] { ... } -# 1033| getStmt(0): [DeclStmt] declaration -# 1033| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x338 -# 1033| Type = [Struct] String -# 1033| getVariable().getInitializer(): [Initializer] initializer for x338 -# 1033| getExpr(): [ConstructorCall] call to String -# 1033| Type = [VoidType] void -# 1033| ValueCategory = prvalue -# 1034| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1034| Type = [VoidType] void -# 1034| ValueCategory = prvalue -# 1034| getQualifier(): [VariableAccess] x338 -# 1034| Type = [Struct] String -# 1034| ValueCategory = lvalue -# 1034| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1034| Conversion = [BoolConversion] conversion to bool -# 1034| Type = [BoolType] bool -# 1034| Value = [CStyleCast] 0 -# 1034| ValueCategory = prvalue -# 1035| getStmt(339): [DoStmt] do (...) ... -# 1037| getCondition(): [Literal] 0 -# 1037| Type = [IntType] int -# 1037| Value = [Literal] 0 -# 1037| ValueCategory = prvalue -# 1035| getStmt(): [BlockStmt] { ... } -# 1036| getStmt(0): [DeclStmt] declaration -# 1036| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x339 -# 1036| Type = [Struct] String -# 1036| getVariable().getInitializer(): [Initializer] initializer for x339 -# 1036| getExpr(): [ConstructorCall] call to String -# 1036| Type = [VoidType] void -# 1036| ValueCategory = prvalue -# 1037| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1037| Type = [VoidType] void -# 1037| ValueCategory = prvalue -# 1037| getQualifier(): [VariableAccess] x339 -# 1037| Type = [Struct] String -# 1037| ValueCategory = lvalue -# 1037| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1037| Conversion = [BoolConversion] conversion to bool -# 1037| Type = [BoolType] bool -# 1037| Value = [CStyleCast] 0 -# 1037| ValueCategory = prvalue -# 1038| getStmt(340): [DoStmt] do (...) ... -# 1040| getCondition(): [Literal] 0 -# 1040| Type = [IntType] int -# 1040| Value = [Literal] 0 -# 1040| ValueCategory = prvalue -# 1038| getStmt(): [BlockStmt] { ... } -# 1039| getStmt(0): [DeclStmt] declaration -# 1039| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x340 -# 1039| Type = [Struct] String -# 1039| getVariable().getInitializer(): [Initializer] initializer for x340 -# 1039| getExpr(): [ConstructorCall] call to String -# 1039| Type = [VoidType] void -# 1039| ValueCategory = prvalue -# 1040| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1040| Type = [VoidType] void -# 1040| ValueCategory = prvalue -# 1040| getQualifier(): [VariableAccess] x340 -# 1040| Type = [Struct] String -# 1040| ValueCategory = lvalue -# 1040| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1040| Conversion = [BoolConversion] conversion to bool -# 1040| Type = [BoolType] bool -# 1040| Value = [CStyleCast] 0 -# 1040| ValueCategory = prvalue -# 1041| getStmt(341): [DoStmt] do (...) ... -# 1043| getCondition(): [Literal] 0 -# 1043| Type = [IntType] int -# 1043| Value = [Literal] 0 -# 1043| ValueCategory = prvalue -# 1041| getStmt(): [BlockStmt] { ... } -# 1042| getStmt(0): [DeclStmt] declaration -# 1042| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x341 -# 1042| Type = [Struct] String -# 1042| getVariable().getInitializer(): [Initializer] initializer for x341 -# 1042| getExpr(): [ConstructorCall] call to String -# 1042| Type = [VoidType] void -# 1042| ValueCategory = prvalue -# 1043| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1043| Type = [VoidType] void -# 1043| ValueCategory = prvalue -# 1043| getQualifier(): [VariableAccess] x341 -# 1043| Type = [Struct] String -# 1043| ValueCategory = lvalue -# 1043| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1043| Conversion = [BoolConversion] conversion to bool -# 1043| Type = [BoolType] bool -# 1043| Value = [CStyleCast] 0 -# 1043| ValueCategory = prvalue -# 1044| getStmt(342): [DoStmt] do (...) ... -# 1046| getCondition(): [Literal] 0 -# 1046| Type = [IntType] int -# 1046| Value = [Literal] 0 -# 1046| ValueCategory = prvalue -# 1044| getStmt(): [BlockStmt] { ... } -# 1045| getStmt(0): [DeclStmt] declaration -# 1045| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x342 -# 1045| Type = [Struct] String -# 1045| getVariable().getInitializer(): [Initializer] initializer for x342 -# 1045| getExpr(): [ConstructorCall] call to String -# 1045| Type = [VoidType] void -# 1045| ValueCategory = prvalue -# 1046| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1046| Type = [VoidType] void -# 1046| ValueCategory = prvalue -# 1046| getQualifier(): [VariableAccess] x342 -# 1046| Type = [Struct] String -# 1046| ValueCategory = lvalue -# 1046| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1046| Conversion = [BoolConversion] conversion to bool -# 1046| Type = [BoolType] bool -# 1046| Value = [CStyleCast] 0 -# 1046| ValueCategory = prvalue -# 1047| getStmt(343): [DoStmt] do (...) ... -# 1049| getCondition(): [Literal] 0 -# 1049| Type = [IntType] int -# 1049| Value = [Literal] 0 -# 1049| ValueCategory = prvalue -# 1047| getStmt(): [BlockStmt] { ... } -# 1048| getStmt(0): [DeclStmt] declaration -# 1048| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x343 -# 1048| Type = [Struct] String -# 1048| getVariable().getInitializer(): [Initializer] initializer for x343 -# 1048| getExpr(): [ConstructorCall] call to String -# 1048| Type = [VoidType] void -# 1048| ValueCategory = prvalue -# 1049| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1049| Type = [VoidType] void -# 1049| ValueCategory = prvalue -# 1049| getQualifier(): [VariableAccess] x343 -# 1049| Type = [Struct] String -# 1049| ValueCategory = lvalue -# 1049| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1049| Conversion = [BoolConversion] conversion to bool -# 1049| Type = [BoolType] bool -# 1049| Value = [CStyleCast] 0 -# 1049| ValueCategory = prvalue -# 1050| getStmt(344): [DoStmt] do (...) ... -# 1052| getCondition(): [Literal] 0 -# 1052| Type = [IntType] int -# 1052| Value = [Literal] 0 -# 1052| ValueCategory = prvalue -# 1050| getStmt(): [BlockStmt] { ... } -# 1051| getStmt(0): [DeclStmt] declaration -# 1051| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x344 -# 1051| Type = [Struct] String -# 1051| getVariable().getInitializer(): [Initializer] initializer for x344 -# 1051| getExpr(): [ConstructorCall] call to String -# 1051| Type = [VoidType] void -# 1051| ValueCategory = prvalue -# 1052| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1052| Type = [VoidType] void -# 1052| ValueCategory = prvalue -# 1052| getQualifier(): [VariableAccess] x344 -# 1052| Type = [Struct] String -# 1052| ValueCategory = lvalue -# 1052| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1052| Conversion = [BoolConversion] conversion to bool -# 1052| Type = [BoolType] bool -# 1052| Value = [CStyleCast] 0 -# 1052| ValueCategory = prvalue -# 1053| getStmt(345): [DoStmt] do (...) ... -# 1055| getCondition(): [Literal] 0 -# 1055| Type = [IntType] int -# 1055| Value = [Literal] 0 -# 1055| ValueCategory = prvalue -# 1053| getStmt(): [BlockStmt] { ... } -# 1054| getStmt(0): [DeclStmt] declaration -# 1054| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x345 -# 1054| Type = [Struct] String -# 1054| getVariable().getInitializer(): [Initializer] initializer for x345 -# 1054| getExpr(): [ConstructorCall] call to String -# 1054| Type = [VoidType] void -# 1054| ValueCategory = prvalue -# 1055| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1055| Type = [VoidType] void -# 1055| ValueCategory = prvalue -# 1055| getQualifier(): [VariableAccess] x345 -# 1055| Type = [Struct] String -# 1055| ValueCategory = lvalue -# 1055| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1055| Conversion = [BoolConversion] conversion to bool -# 1055| Type = [BoolType] bool -# 1055| Value = [CStyleCast] 0 -# 1055| ValueCategory = prvalue -# 1056| getStmt(346): [DoStmt] do (...) ... -# 1058| getCondition(): [Literal] 0 -# 1058| Type = [IntType] int -# 1058| Value = [Literal] 0 -# 1058| ValueCategory = prvalue -# 1056| getStmt(): [BlockStmt] { ... } -# 1057| getStmt(0): [DeclStmt] declaration -# 1057| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x346 -# 1057| Type = [Struct] String -# 1057| getVariable().getInitializer(): [Initializer] initializer for x346 -# 1057| getExpr(): [ConstructorCall] call to String -# 1057| Type = [VoidType] void -# 1057| ValueCategory = prvalue -# 1058| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1058| Type = [VoidType] void -# 1058| ValueCategory = prvalue -# 1058| getQualifier(): [VariableAccess] x346 -# 1058| Type = [Struct] String -# 1058| ValueCategory = lvalue -# 1058| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1058| Conversion = [BoolConversion] conversion to bool -# 1058| Type = [BoolType] bool -# 1058| Value = [CStyleCast] 0 -# 1058| ValueCategory = prvalue -# 1059| getStmt(347): [DoStmt] do (...) ... -# 1061| getCondition(): [Literal] 0 -# 1061| Type = [IntType] int -# 1061| Value = [Literal] 0 -# 1061| ValueCategory = prvalue -# 1059| getStmt(): [BlockStmt] { ... } -# 1060| getStmt(0): [DeclStmt] declaration -# 1060| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x347 -# 1060| Type = [Struct] String -# 1060| getVariable().getInitializer(): [Initializer] initializer for x347 -# 1060| getExpr(): [ConstructorCall] call to String -# 1060| Type = [VoidType] void -# 1060| ValueCategory = prvalue -# 1061| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1061| Type = [VoidType] void -# 1061| ValueCategory = prvalue -# 1061| getQualifier(): [VariableAccess] x347 -# 1061| Type = [Struct] String -# 1061| ValueCategory = lvalue -# 1061| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1061| Conversion = [BoolConversion] conversion to bool -# 1061| Type = [BoolType] bool -# 1061| Value = [CStyleCast] 0 -# 1061| ValueCategory = prvalue -# 1062| getStmt(348): [DoStmt] do (...) ... -# 1064| getCondition(): [Literal] 0 -# 1064| Type = [IntType] int -# 1064| Value = [Literal] 0 -# 1064| ValueCategory = prvalue -# 1062| getStmt(): [BlockStmt] { ... } -# 1063| getStmt(0): [DeclStmt] declaration -# 1063| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x348 -# 1063| Type = [Struct] String -# 1063| getVariable().getInitializer(): [Initializer] initializer for x348 -# 1063| getExpr(): [ConstructorCall] call to String -# 1063| Type = [VoidType] void -# 1063| ValueCategory = prvalue -# 1064| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1064| Type = [VoidType] void -# 1064| ValueCategory = prvalue -# 1064| getQualifier(): [VariableAccess] x348 -# 1064| Type = [Struct] String -# 1064| ValueCategory = lvalue -# 1064| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1064| Conversion = [BoolConversion] conversion to bool -# 1064| Type = [BoolType] bool -# 1064| Value = [CStyleCast] 0 -# 1064| ValueCategory = prvalue -# 1065| getStmt(349): [DoStmt] do (...) ... -# 1067| getCondition(): [Literal] 0 -# 1067| Type = [IntType] int -# 1067| Value = [Literal] 0 -# 1067| ValueCategory = prvalue -# 1065| getStmt(): [BlockStmt] { ... } -# 1066| getStmt(0): [DeclStmt] declaration -# 1066| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x349 -# 1066| Type = [Struct] String -# 1066| getVariable().getInitializer(): [Initializer] initializer for x349 -# 1066| getExpr(): [ConstructorCall] call to String -# 1066| Type = [VoidType] void -# 1066| ValueCategory = prvalue -# 1067| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1067| Type = [VoidType] void -# 1067| ValueCategory = prvalue -# 1067| getQualifier(): [VariableAccess] x349 -# 1067| Type = [Struct] String -# 1067| ValueCategory = lvalue -# 1067| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1067| Conversion = [BoolConversion] conversion to bool -# 1067| Type = [BoolType] bool -# 1067| Value = [CStyleCast] 0 -# 1067| ValueCategory = prvalue -# 1068| getStmt(350): [DoStmt] do (...) ... -# 1070| getCondition(): [Literal] 0 -# 1070| Type = [IntType] int -# 1070| Value = [Literal] 0 -# 1070| ValueCategory = prvalue -# 1068| getStmt(): [BlockStmt] { ... } -# 1069| getStmt(0): [DeclStmt] declaration -# 1069| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x350 -# 1069| Type = [Struct] String -# 1069| getVariable().getInitializer(): [Initializer] initializer for x350 -# 1069| getExpr(): [ConstructorCall] call to String -# 1069| Type = [VoidType] void -# 1069| ValueCategory = prvalue -# 1070| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1070| Type = [VoidType] void -# 1070| ValueCategory = prvalue -# 1070| getQualifier(): [VariableAccess] x350 -# 1070| Type = [Struct] String -# 1070| ValueCategory = lvalue -# 1070| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1070| Conversion = [BoolConversion] conversion to bool -# 1070| Type = [BoolType] bool -# 1070| Value = [CStyleCast] 0 -# 1070| ValueCategory = prvalue -# 1071| getStmt(351): [DoStmt] do (...) ... -# 1073| getCondition(): [Literal] 0 -# 1073| Type = [IntType] int -# 1073| Value = [Literal] 0 -# 1073| ValueCategory = prvalue -# 1071| getStmt(): [BlockStmt] { ... } -# 1072| getStmt(0): [DeclStmt] declaration -# 1072| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x351 -# 1072| Type = [Struct] String -# 1072| getVariable().getInitializer(): [Initializer] initializer for x351 -# 1072| getExpr(): [ConstructorCall] call to String -# 1072| Type = [VoidType] void -# 1072| ValueCategory = prvalue -# 1073| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1073| Type = [VoidType] void -# 1073| ValueCategory = prvalue -# 1073| getQualifier(): [VariableAccess] x351 -# 1073| Type = [Struct] String -# 1073| ValueCategory = lvalue -# 1073| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1073| Conversion = [BoolConversion] conversion to bool -# 1073| Type = [BoolType] bool -# 1073| Value = [CStyleCast] 0 -# 1073| ValueCategory = prvalue -# 1074| getStmt(352): [DoStmt] do (...) ... -# 1076| getCondition(): [Literal] 0 -# 1076| Type = [IntType] int -# 1076| Value = [Literal] 0 -# 1076| ValueCategory = prvalue -# 1074| getStmt(): [BlockStmt] { ... } -# 1075| getStmt(0): [DeclStmt] declaration -# 1075| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x352 -# 1075| Type = [Struct] String -# 1075| getVariable().getInitializer(): [Initializer] initializer for x352 -# 1075| getExpr(): [ConstructorCall] call to String -# 1075| Type = [VoidType] void -# 1075| ValueCategory = prvalue -# 1076| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1076| Type = [VoidType] void -# 1076| ValueCategory = prvalue -# 1076| getQualifier(): [VariableAccess] x352 -# 1076| Type = [Struct] String -# 1076| ValueCategory = lvalue -# 1076| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1076| Conversion = [BoolConversion] conversion to bool -# 1076| Type = [BoolType] bool -# 1076| Value = [CStyleCast] 0 -# 1076| ValueCategory = prvalue -# 1077| getStmt(353): [DoStmt] do (...) ... -# 1079| getCondition(): [Literal] 0 -# 1079| Type = [IntType] int -# 1079| Value = [Literal] 0 -# 1079| ValueCategory = prvalue -# 1077| getStmt(): [BlockStmt] { ... } -# 1078| getStmt(0): [DeclStmt] declaration -# 1078| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x353 -# 1078| Type = [Struct] String -# 1078| getVariable().getInitializer(): [Initializer] initializer for x353 -# 1078| getExpr(): [ConstructorCall] call to String -# 1078| Type = [VoidType] void -# 1078| ValueCategory = prvalue -# 1079| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1079| Type = [VoidType] void -# 1079| ValueCategory = prvalue -# 1079| getQualifier(): [VariableAccess] x353 -# 1079| Type = [Struct] String -# 1079| ValueCategory = lvalue -# 1079| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1079| Conversion = [BoolConversion] conversion to bool -# 1079| Type = [BoolType] bool -# 1079| Value = [CStyleCast] 0 -# 1079| ValueCategory = prvalue -# 1080| getStmt(354): [DoStmt] do (...) ... -# 1082| getCondition(): [Literal] 0 -# 1082| Type = [IntType] int -# 1082| Value = [Literal] 0 -# 1082| ValueCategory = prvalue -# 1080| getStmt(): [BlockStmt] { ... } -# 1081| getStmt(0): [DeclStmt] declaration -# 1081| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x354 -# 1081| Type = [Struct] String -# 1081| getVariable().getInitializer(): [Initializer] initializer for x354 -# 1081| getExpr(): [ConstructorCall] call to String -# 1081| Type = [VoidType] void -# 1081| ValueCategory = prvalue -# 1082| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1082| Type = [VoidType] void -# 1082| ValueCategory = prvalue -# 1082| getQualifier(): [VariableAccess] x354 -# 1082| Type = [Struct] String -# 1082| ValueCategory = lvalue -# 1082| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1082| Conversion = [BoolConversion] conversion to bool -# 1082| Type = [BoolType] bool -# 1082| Value = [CStyleCast] 0 -# 1082| ValueCategory = prvalue -# 1083| getStmt(355): [DoStmt] do (...) ... -# 1085| getCondition(): [Literal] 0 -# 1085| Type = [IntType] int -# 1085| Value = [Literal] 0 -# 1085| ValueCategory = prvalue -# 1083| getStmt(): [BlockStmt] { ... } -# 1084| getStmt(0): [DeclStmt] declaration -# 1084| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x355 -# 1084| Type = [Struct] String -# 1084| getVariable().getInitializer(): [Initializer] initializer for x355 -# 1084| getExpr(): [ConstructorCall] call to String -# 1084| Type = [VoidType] void -# 1084| ValueCategory = prvalue -# 1085| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1085| Type = [VoidType] void -# 1085| ValueCategory = prvalue -# 1085| getQualifier(): [VariableAccess] x355 -# 1085| Type = [Struct] String -# 1085| ValueCategory = lvalue -# 1085| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1085| Conversion = [BoolConversion] conversion to bool -# 1085| Type = [BoolType] bool -# 1085| Value = [CStyleCast] 0 -# 1085| ValueCategory = prvalue -# 1086| getStmt(356): [DoStmt] do (...) ... -# 1088| getCondition(): [Literal] 0 -# 1088| Type = [IntType] int -# 1088| Value = [Literal] 0 -# 1088| ValueCategory = prvalue -# 1086| getStmt(): [BlockStmt] { ... } -# 1087| getStmt(0): [DeclStmt] declaration -# 1087| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x356 -# 1087| Type = [Struct] String -# 1087| getVariable().getInitializer(): [Initializer] initializer for x356 -# 1087| getExpr(): [ConstructorCall] call to String -# 1087| Type = [VoidType] void -# 1087| ValueCategory = prvalue -# 1088| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1088| Type = [VoidType] void -# 1088| ValueCategory = prvalue -# 1088| getQualifier(): [VariableAccess] x356 -# 1088| Type = [Struct] String -# 1088| ValueCategory = lvalue -# 1088| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1088| Conversion = [BoolConversion] conversion to bool -# 1088| Type = [BoolType] bool -# 1088| Value = [CStyleCast] 0 -# 1088| ValueCategory = prvalue -# 1089| getStmt(357): [DoStmt] do (...) ... -# 1091| getCondition(): [Literal] 0 -# 1091| Type = [IntType] int -# 1091| Value = [Literal] 0 -# 1091| ValueCategory = prvalue -# 1089| getStmt(): [BlockStmt] { ... } -# 1090| getStmt(0): [DeclStmt] declaration -# 1090| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x357 -# 1090| Type = [Struct] String -# 1090| getVariable().getInitializer(): [Initializer] initializer for x357 -# 1090| getExpr(): [ConstructorCall] call to String -# 1090| Type = [VoidType] void -# 1090| ValueCategory = prvalue -# 1091| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1091| Type = [VoidType] void -# 1091| ValueCategory = prvalue -# 1091| getQualifier(): [VariableAccess] x357 -# 1091| Type = [Struct] String -# 1091| ValueCategory = lvalue -# 1091| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1091| Conversion = [BoolConversion] conversion to bool -# 1091| Type = [BoolType] bool -# 1091| Value = [CStyleCast] 0 -# 1091| ValueCategory = prvalue -# 1092| getStmt(358): [DoStmt] do (...) ... -# 1094| getCondition(): [Literal] 0 -# 1094| Type = [IntType] int -# 1094| Value = [Literal] 0 -# 1094| ValueCategory = prvalue -# 1092| getStmt(): [BlockStmt] { ... } -# 1093| getStmt(0): [DeclStmt] declaration -# 1093| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x358 -# 1093| Type = [Struct] String -# 1093| getVariable().getInitializer(): [Initializer] initializer for x358 -# 1093| getExpr(): [ConstructorCall] call to String -# 1093| Type = [VoidType] void -# 1093| ValueCategory = prvalue -# 1094| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1094| Type = [VoidType] void -# 1094| ValueCategory = prvalue -# 1094| getQualifier(): [VariableAccess] x358 -# 1094| Type = [Struct] String -# 1094| ValueCategory = lvalue -# 1094| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1094| Conversion = [BoolConversion] conversion to bool -# 1094| Type = [BoolType] bool -# 1094| Value = [CStyleCast] 0 -# 1094| ValueCategory = prvalue -# 1095| getStmt(359): [DoStmt] do (...) ... -# 1097| getCondition(): [Literal] 0 -# 1097| Type = [IntType] int -# 1097| Value = [Literal] 0 -# 1097| ValueCategory = prvalue -# 1095| getStmt(): [BlockStmt] { ... } -# 1096| getStmt(0): [DeclStmt] declaration -# 1096| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x359 -# 1096| Type = [Struct] String -# 1096| getVariable().getInitializer(): [Initializer] initializer for x359 -# 1096| getExpr(): [ConstructorCall] call to String -# 1096| Type = [VoidType] void -# 1096| ValueCategory = prvalue -# 1097| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1097| Type = [VoidType] void -# 1097| ValueCategory = prvalue -# 1097| getQualifier(): [VariableAccess] x359 -# 1097| Type = [Struct] String -# 1097| ValueCategory = lvalue -# 1097| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1097| Conversion = [BoolConversion] conversion to bool -# 1097| Type = [BoolType] bool -# 1097| Value = [CStyleCast] 0 -# 1097| ValueCategory = prvalue -# 1098| getStmt(360): [DoStmt] do (...) ... -# 1100| getCondition(): [Literal] 0 -# 1100| Type = [IntType] int -# 1100| Value = [Literal] 0 -# 1100| ValueCategory = prvalue -# 1098| getStmt(): [BlockStmt] { ... } -# 1099| getStmt(0): [DeclStmt] declaration -# 1099| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x360 -# 1099| Type = [Struct] String -# 1099| getVariable().getInitializer(): [Initializer] initializer for x360 -# 1099| getExpr(): [ConstructorCall] call to String -# 1099| Type = [VoidType] void -# 1099| ValueCategory = prvalue -# 1100| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1100| Type = [VoidType] void -# 1100| ValueCategory = prvalue -# 1100| getQualifier(): [VariableAccess] x360 -# 1100| Type = [Struct] String -# 1100| ValueCategory = lvalue -# 1100| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1100| Conversion = [BoolConversion] conversion to bool -# 1100| Type = [BoolType] bool -# 1100| Value = [CStyleCast] 0 -# 1100| ValueCategory = prvalue -# 1101| getStmt(361): [DoStmt] do (...) ... -# 1103| getCondition(): [Literal] 0 -# 1103| Type = [IntType] int -# 1103| Value = [Literal] 0 -# 1103| ValueCategory = prvalue -# 1101| getStmt(): [BlockStmt] { ... } -# 1102| getStmt(0): [DeclStmt] declaration -# 1102| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x361 -# 1102| Type = [Struct] String -# 1102| getVariable().getInitializer(): [Initializer] initializer for x361 -# 1102| getExpr(): [ConstructorCall] call to String -# 1102| Type = [VoidType] void -# 1102| ValueCategory = prvalue -# 1103| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1103| Type = [VoidType] void -# 1103| ValueCategory = prvalue -# 1103| getQualifier(): [VariableAccess] x361 -# 1103| Type = [Struct] String -# 1103| ValueCategory = lvalue -# 1103| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1103| Conversion = [BoolConversion] conversion to bool -# 1103| Type = [BoolType] bool -# 1103| Value = [CStyleCast] 0 -# 1103| ValueCategory = prvalue -# 1104| getStmt(362): [DoStmt] do (...) ... -# 1106| getCondition(): [Literal] 0 -# 1106| Type = [IntType] int -# 1106| Value = [Literal] 0 -# 1106| ValueCategory = prvalue -# 1104| getStmt(): [BlockStmt] { ... } -# 1105| getStmt(0): [DeclStmt] declaration -# 1105| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x362 -# 1105| Type = [Struct] String -# 1105| getVariable().getInitializer(): [Initializer] initializer for x362 -# 1105| getExpr(): [ConstructorCall] call to String -# 1105| Type = [VoidType] void -# 1105| ValueCategory = prvalue -# 1106| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1106| Type = [VoidType] void -# 1106| ValueCategory = prvalue -# 1106| getQualifier(): [VariableAccess] x362 -# 1106| Type = [Struct] String -# 1106| ValueCategory = lvalue -# 1106| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1106| Conversion = [BoolConversion] conversion to bool -# 1106| Type = [BoolType] bool -# 1106| Value = [CStyleCast] 0 -# 1106| ValueCategory = prvalue -# 1107| getStmt(363): [DoStmt] do (...) ... -# 1109| getCondition(): [Literal] 0 -# 1109| Type = [IntType] int -# 1109| Value = [Literal] 0 -# 1109| ValueCategory = prvalue -# 1107| getStmt(): [BlockStmt] { ... } -# 1108| getStmt(0): [DeclStmt] declaration -# 1108| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x363 -# 1108| Type = [Struct] String -# 1108| getVariable().getInitializer(): [Initializer] initializer for x363 -# 1108| getExpr(): [ConstructorCall] call to String -# 1108| Type = [VoidType] void -# 1108| ValueCategory = prvalue -# 1109| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1109| Type = [VoidType] void -# 1109| ValueCategory = prvalue -# 1109| getQualifier(): [VariableAccess] x363 -# 1109| Type = [Struct] String -# 1109| ValueCategory = lvalue -# 1109| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1109| Conversion = [BoolConversion] conversion to bool -# 1109| Type = [BoolType] bool -# 1109| Value = [CStyleCast] 0 -# 1109| ValueCategory = prvalue -# 1110| getStmt(364): [DoStmt] do (...) ... -# 1112| getCondition(): [Literal] 0 -# 1112| Type = [IntType] int -# 1112| Value = [Literal] 0 -# 1112| ValueCategory = prvalue -# 1110| getStmt(): [BlockStmt] { ... } -# 1111| getStmt(0): [DeclStmt] declaration -# 1111| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x364 -# 1111| Type = [Struct] String -# 1111| getVariable().getInitializer(): [Initializer] initializer for x364 -# 1111| getExpr(): [ConstructorCall] call to String -# 1111| Type = [VoidType] void -# 1111| ValueCategory = prvalue -# 1112| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1112| Type = [VoidType] void -# 1112| ValueCategory = prvalue -# 1112| getQualifier(): [VariableAccess] x364 -# 1112| Type = [Struct] String -# 1112| ValueCategory = lvalue -# 1112| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1112| Conversion = [BoolConversion] conversion to bool -# 1112| Type = [BoolType] bool -# 1112| Value = [CStyleCast] 0 -# 1112| ValueCategory = prvalue -# 1113| getStmt(365): [DoStmt] do (...) ... -# 1115| getCondition(): [Literal] 0 -# 1115| Type = [IntType] int -# 1115| Value = [Literal] 0 -# 1115| ValueCategory = prvalue -# 1113| getStmt(): [BlockStmt] { ... } -# 1114| getStmt(0): [DeclStmt] declaration -# 1114| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x365 -# 1114| Type = [Struct] String -# 1114| getVariable().getInitializer(): [Initializer] initializer for x365 -# 1114| getExpr(): [ConstructorCall] call to String -# 1114| Type = [VoidType] void -# 1114| ValueCategory = prvalue -# 1115| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1115| Type = [VoidType] void -# 1115| ValueCategory = prvalue -# 1115| getQualifier(): [VariableAccess] x365 -# 1115| Type = [Struct] String -# 1115| ValueCategory = lvalue -# 1115| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1115| Conversion = [BoolConversion] conversion to bool -# 1115| Type = [BoolType] bool -# 1115| Value = [CStyleCast] 0 -# 1115| ValueCategory = prvalue -# 1116| getStmt(366): [DoStmt] do (...) ... -# 1118| getCondition(): [Literal] 0 -# 1118| Type = [IntType] int -# 1118| Value = [Literal] 0 -# 1118| ValueCategory = prvalue -# 1116| getStmt(): [BlockStmt] { ... } -# 1117| getStmt(0): [DeclStmt] declaration -# 1117| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x366 -# 1117| Type = [Struct] String -# 1117| getVariable().getInitializer(): [Initializer] initializer for x366 -# 1117| getExpr(): [ConstructorCall] call to String -# 1117| Type = [VoidType] void -# 1117| ValueCategory = prvalue -# 1118| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1118| Type = [VoidType] void -# 1118| ValueCategory = prvalue -# 1118| getQualifier(): [VariableAccess] x366 -# 1118| Type = [Struct] String -# 1118| ValueCategory = lvalue -# 1118| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1118| Conversion = [BoolConversion] conversion to bool -# 1118| Type = [BoolType] bool -# 1118| Value = [CStyleCast] 0 -# 1118| ValueCategory = prvalue -# 1119| getStmt(367): [DoStmt] do (...) ... -# 1121| getCondition(): [Literal] 0 -# 1121| Type = [IntType] int -# 1121| Value = [Literal] 0 -# 1121| ValueCategory = prvalue -# 1119| getStmt(): [BlockStmt] { ... } -# 1120| getStmt(0): [DeclStmt] declaration -# 1120| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x367 -# 1120| Type = [Struct] String -# 1120| getVariable().getInitializer(): [Initializer] initializer for x367 -# 1120| getExpr(): [ConstructorCall] call to String -# 1120| Type = [VoidType] void -# 1120| ValueCategory = prvalue -# 1121| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1121| Type = [VoidType] void -# 1121| ValueCategory = prvalue -# 1121| getQualifier(): [VariableAccess] x367 -# 1121| Type = [Struct] String -# 1121| ValueCategory = lvalue -# 1121| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1121| Conversion = [BoolConversion] conversion to bool -# 1121| Type = [BoolType] bool -# 1121| Value = [CStyleCast] 0 -# 1121| ValueCategory = prvalue -# 1122| getStmt(368): [DoStmt] do (...) ... -# 1124| getCondition(): [Literal] 0 -# 1124| Type = [IntType] int -# 1124| Value = [Literal] 0 -# 1124| ValueCategory = prvalue -# 1122| getStmt(): [BlockStmt] { ... } -# 1123| getStmt(0): [DeclStmt] declaration -# 1123| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x368 -# 1123| Type = [Struct] String -# 1123| getVariable().getInitializer(): [Initializer] initializer for x368 -# 1123| getExpr(): [ConstructorCall] call to String -# 1123| Type = [VoidType] void -# 1123| ValueCategory = prvalue -# 1124| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1124| Type = [VoidType] void -# 1124| ValueCategory = prvalue -# 1124| getQualifier(): [VariableAccess] x368 -# 1124| Type = [Struct] String -# 1124| ValueCategory = lvalue -# 1124| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1124| Conversion = [BoolConversion] conversion to bool -# 1124| Type = [BoolType] bool -# 1124| Value = [CStyleCast] 0 -# 1124| ValueCategory = prvalue -# 1125| getStmt(369): [DoStmt] do (...) ... -# 1127| getCondition(): [Literal] 0 -# 1127| Type = [IntType] int -# 1127| Value = [Literal] 0 -# 1127| ValueCategory = prvalue -# 1125| getStmt(): [BlockStmt] { ... } -# 1126| getStmt(0): [DeclStmt] declaration -# 1126| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x369 -# 1126| Type = [Struct] String -# 1126| getVariable().getInitializer(): [Initializer] initializer for x369 -# 1126| getExpr(): [ConstructorCall] call to String -# 1126| Type = [VoidType] void -# 1126| ValueCategory = prvalue -# 1127| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1127| Type = [VoidType] void -# 1127| ValueCategory = prvalue -# 1127| getQualifier(): [VariableAccess] x369 -# 1127| Type = [Struct] String -# 1127| ValueCategory = lvalue -# 1127| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1127| Conversion = [BoolConversion] conversion to bool -# 1127| Type = [BoolType] bool -# 1127| Value = [CStyleCast] 0 -# 1127| ValueCategory = prvalue -# 1128| getStmt(370): [DoStmt] do (...) ... -# 1130| getCondition(): [Literal] 0 -# 1130| Type = [IntType] int -# 1130| Value = [Literal] 0 -# 1130| ValueCategory = prvalue -# 1128| getStmt(): [BlockStmt] { ... } -# 1129| getStmt(0): [DeclStmt] declaration -# 1129| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x370 -# 1129| Type = [Struct] String -# 1129| getVariable().getInitializer(): [Initializer] initializer for x370 -# 1129| getExpr(): [ConstructorCall] call to String -# 1129| Type = [VoidType] void -# 1129| ValueCategory = prvalue -# 1130| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1130| Type = [VoidType] void -# 1130| ValueCategory = prvalue -# 1130| getQualifier(): [VariableAccess] x370 -# 1130| Type = [Struct] String -# 1130| ValueCategory = lvalue -# 1130| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1130| Conversion = [BoolConversion] conversion to bool -# 1130| Type = [BoolType] bool -# 1130| Value = [CStyleCast] 0 -# 1130| ValueCategory = prvalue -# 1131| getStmt(371): [DoStmt] do (...) ... -# 1133| getCondition(): [Literal] 0 -# 1133| Type = [IntType] int -# 1133| Value = [Literal] 0 -# 1133| ValueCategory = prvalue -# 1131| getStmt(): [BlockStmt] { ... } -# 1132| getStmt(0): [DeclStmt] declaration -# 1132| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x371 -# 1132| Type = [Struct] String -# 1132| getVariable().getInitializer(): [Initializer] initializer for x371 -# 1132| getExpr(): [ConstructorCall] call to String -# 1132| Type = [VoidType] void -# 1132| ValueCategory = prvalue -# 1133| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1133| Type = [VoidType] void -# 1133| ValueCategory = prvalue -# 1133| getQualifier(): [VariableAccess] x371 -# 1133| Type = [Struct] String -# 1133| ValueCategory = lvalue -# 1133| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1133| Conversion = [BoolConversion] conversion to bool -# 1133| Type = [BoolType] bool -# 1133| Value = [CStyleCast] 0 -# 1133| ValueCategory = prvalue -# 1134| getStmt(372): [DoStmt] do (...) ... -# 1136| getCondition(): [Literal] 0 -# 1136| Type = [IntType] int -# 1136| Value = [Literal] 0 -# 1136| ValueCategory = prvalue -# 1134| getStmt(): [BlockStmt] { ... } -# 1135| getStmt(0): [DeclStmt] declaration -# 1135| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x372 -# 1135| Type = [Struct] String -# 1135| getVariable().getInitializer(): [Initializer] initializer for x372 -# 1135| getExpr(): [ConstructorCall] call to String -# 1135| Type = [VoidType] void -# 1135| ValueCategory = prvalue -# 1136| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1136| Type = [VoidType] void -# 1136| ValueCategory = prvalue -# 1136| getQualifier(): [VariableAccess] x372 -# 1136| Type = [Struct] String -# 1136| ValueCategory = lvalue -# 1136| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1136| Conversion = [BoolConversion] conversion to bool -# 1136| Type = [BoolType] bool -# 1136| Value = [CStyleCast] 0 -# 1136| ValueCategory = prvalue -# 1137| getStmt(373): [DoStmt] do (...) ... -# 1139| getCondition(): [Literal] 0 -# 1139| Type = [IntType] int -# 1139| Value = [Literal] 0 -# 1139| ValueCategory = prvalue -# 1137| getStmt(): [BlockStmt] { ... } -# 1138| getStmt(0): [DeclStmt] declaration -# 1138| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x373 -# 1138| Type = [Struct] String -# 1138| getVariable().getInitializer(): [Initializer] initializer for x373 -# 1138| getExpr(): [ConstructorCall] call to String -# 1138| Type = [VoidType] void -# 1138| ValueCategory = prvalue -# 1139| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1139| Type = [VoidType] void -# 1139| ValueCategory = prvalue -# 1139| getQualifier(): [VariableAccess] x373 -# 1139| Type = [Struct] String -# 1139| ValueCategory = lvalue -# 1139| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1139| Conversion = [BoolConversion] conversion to bool -# 1139| Type = [BoolType] bool -# 1139| Value = [CStyleCast] 0 -# 1139| ValueCategory = prvalue -# 1140| getStmt(374): [DoStmt] do (...) ... -# 1142| getCondition(): [Literal] 0 -# 1142| Type = [IntType] int -# 1142| Value = [Literal] 0 -# 1142| ValueCategory = prvalue -# 1140| getStmt(): [BlockStmt] { ... } -# 1141| getStmt(0): [DeclStmt] declaration -# 1141| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x374 -# 1141| Type = [Struct] String -# 1141| getVariable().getInitializer(): [Initializer] initializer for x374 -# 1141| getExpr(): [ConstructorCall] call to String -# 1141| Type = [VoidType] void -# 1141| ValueCategory = prvalue -# 1142| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1142| Type = [VoidType] void -# 1142| ValueCategory = prvalue -# 1142| getQualifier(): [VariableAccess] x374 -# 1142| Type = [Struct] String -# 1142| ValueCategory = lvalue -# 1142| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1142| Conversion = [BoolConversion] conversion to bool -# 1142| Type = [BoolType] bool -# 1142| Value = [CStyleCast] 0 -# 1142| ValueCategory = prvalue -# 1143| getStmt(375): [DoStmt] do (...) ... -# 1145| getCondition(): [Literal] 0 -# 1145| Type = [IntType] int -# 1145| Value = [Literal] 0 -# 1145| ValueCategory = prvalue -# 1143| getStmt(): [BlockStmt] { ... } -# 1144| getStmt(0): [DeclStmt] declaration -# 1144| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x375 -# 1144| Type = [Struct] String -# 1144| getVariable().getInitializer(): [Initializer] initializer for x375 -# 1144| getExpr(): [ConstructorCall] call to String -# 1144| Type = [VoidType] void -# 1144| ValueCategory = prvalue -# 1145| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1145| Type = [VoidType] void -# 1145| ValueCategory = prvalue -# 1145| getQualifier(): [VariableAccess] x375 -# 1145| Type = [Struct] String -# 1145| ValueCategory = lvalue -# 1145| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1145| Conversion = [BoolConversion] conversion to bool -# 1145| Type = [BoolType] bool -# 1145| Value = [CStyleCast] 0 -# 1145| ValueCategory = prvalue -# 1146| getStmt(376): [DoStmt] do (...) ... -# 1148| getCondition(): [Literal] 0 -# 1148| Type = [IntType] int -# 1148| Value = [Literal] 0 -# 1148| ValueCategory = prvalue -# 1146| getStmt(): [BlockStmt] { ... } -# 1147| getStmt(0): [DeclStmt] declaration -# 1147| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x376 -# 1147| Type = [Struct] String -# 1147| getVariable().getInitializer(): [Initializer] initializer for x376 -# 1147| getExpr(): [ConstructorCall] call to String -# 1147| Type = [VoidType] void -# 1147| ValueCategory = prvalue -# 1148| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1148| Type = [VoidType] void -# 1148| ValueCategory = prvalue -# 1148| getQualifier(): [VariableAccess] x376 -# 1148| Type = [Struct] String -# 1148| ValueCategory = lvalue -# 1148| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1148| Conversion = [BoolConversion] conversion to bool -# 1148| Type = [BoolType] bool -# 1148| Value = [CStyleCast] 0 -# 1148| ValueCategory = prvalue -# 1149| getStmt(377): [DoStmt] do (...) ... -# 1151| getCondition(): [Literal] 0 -# 1151| Type = [IntType] int -# 1151| Value = [Literal] 0 -# 1151| ValueCategory = prvalue -# 1149| getStmt(): [BlockStmt] { ... } -# 1150| getStmt(0): [DeclStmt] declaration -# 1150| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x377 -# 1150| Type = [Struct] String -# 1150| getVariable().getInitializer(): [Initializer] initializer for x377 -# 1150| getExpr(): [ConstructorCall] call to String -# 1150| Type = [VoidType] void -# 1150| ValueCategory = prvalue -# 1151| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1151| Type = [VoidType] void -# 1151| ValueCategory = prvalue -# 1151| getQualifier(): [VariableAccess] x377 -# 1151| Type = [Struct] String -# 1151| ValueCategory = lvalue -# 1151| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1151| Conversion = [BoolConversion] conversion to bool -# 1151| Type = [BoolType] bool -# 1151| Value = [CStyleCast] 0 -# 1151| ValueCategory = prvalue -# 1152| getStmt(378): [DoStmt] do (...) ... -# 1154| getCondition(): [Literal] 0 -# 1154| Type = [IntType] int -# 1154| Value = [Literal] 0 -# 1154| ValueCategory = prvalue -# 1152| getStmt(): [BlockStmt] { ... } -# 1153| getStmt(0): [DeclStmt] declaration -# 1153| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x378 -# 1153| Type = [Struct] String -# 1153| getVariable().getInitializer(): [Initializer] initializer for x378 -# 1153| getExpr(): [ConstructorCall] call to String -# 1153| Type = [VoidType] void -# 1153| ValueCategory = prvalue -# 1154| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1154| Type = [VoidType] void -# 1154| ValueCategory = prvalue -# 1154| getQualifier(): [VariableAccess] x378 -# 1154| Type = [Struct] String -# 1154| ValueCategory = lvalue -# 1154| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1154| Conversion = [BoolConversion] conversion to bool -# 1154| Type = [BoolType] bool -# 1154| Value = [CStyleCast] 0 -# 1154| ValueCategory = prvalue -# 1155| getStmt(379): [DoStmt] do (...) ... -# 1157| getCondition(): [Literal] 0 -# 1157| Type = [IntType] int -# 1157| Value = [Literal] 0 -# 1157| ValueCategory = prvalue -# 1155| getStmt(): [BlockStmt] { ... } -# 1156| getStmt(0): [DeclStmt] declaration -# 1156| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x379 -# 1156| Type = [Struct] String -# 1156| getVariable().getInitializer(): [Initializer] initializer for x379 -# 1156| getExpr(): [ConstructorCall] call to String -# 1156| Type = [VoidType] void -# 1156| ValueCategory = prvalue -# 1157| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1157| Type = [VoidType] void -# 1157| ValueCategory = prvalue -# 1157| getQualifier(): [VariableAccess] x379 -# 1157| Type = [Struct] String -# 1157| ValueCategory = lvalue -# 1157| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1157| Conversion = [BoolConversion] conversion to bool -# 1157| Type = [BoolType] bool -# 1157| Value = [CStyleCast] 0 -# 1157| ValueCategory = prvalue -# 1158| getStmt(380): [DoStmt] do (...) ... -# 1160| getCondition(): [Literal] 0 -# 1160| Type = [IntType] int -# 1160| Value = [Literal] 0 -# 1160| ValueCategory = prvalue -# 1158| getStmt(): [BlockStmt] { ... } -# 1159| getStmt(0): [DeclStmt] declaration -# 1159| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x380 -# 1159| Type = [Struct] String -# 1159| getVariable().getInitializer(): [Initializer] initializer for x380 -# 1159| getExpr(): [ConstructorCall] call to String -# 1159| Type = [VoidType] void -# 1159| ValueCategory = prvalue -# 1160| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1160| Type = [VoidType] void -# 1160| ValueCategory = prvalue -# 1160| getQualifier(): [VariableAccess] x380 -# 1160| Type = [Struct] String -# 1160| ValueCategory = lvalue -# 1160| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1160| Conversion = [BoolConversion] conversion to bool -# 1160| Type = [BoolType] bool -# 1160| Value = [CStyleCast] 0 -# 1160| ValueCategory = prvalue -# 1161| getStmt(381): [DoStmt] do (...) ... -# 1163| getCondition(): [Literal] 0 -# 1163| Type = [IntType] int -# 1163| Value = [Literal] 0 -# 1163| ValueCategory = prvalue -# 1161| getStmt(): [BlockStmt] { ... } -# 1162| getStmt(0): [DeclStmt] declaration -# 1162| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x381 -# 1162| Type = [Struct] String -# 1162| getVariable().getInitializer(): [Initializer] initializer for x381 -# 1162| getExpr(): [ConstructorCall] call to String -# 1162| Type = [VoidType] void -# 1162| ValueCategory = prvalue -# 1163| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1163| Type = [VoidType] void -# 1163| ValueCategory = prvalue -# 1163| getQualifier(): [VariableAccess] x381 -# 1163| Type = [Struct] String -# 1163| ValueCategory = lvalue -# 1163| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1163| Conversion = [BoolConversion] conversion to bool -# 1163| Type = [BoolType] bool -# 1163| Value = [CStyleCast] 0 -# 1163| ValueCategory = prvalue -# 1164| getStmt(382): [DoStmt] do (...) ... -# 1166| getCondition(): [Literal] 0 -# 1166| Type = [IntType] int -# 1166| Value = [Literal] 0 -# 1166| ValueCategory = prvalue -# 1164| getStmt(): [BlockStmt] { ... } -# 1165| getStmt(0): [DeclStmt] declaration -# 1165| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x382 -# 1165| Type = [Struct] String -# 1165| getVariable().getInitializer(): [Initializer] initializer for x382 -# 1165| getExpr(): [ConstructorCall] call to String -# 1165| Type = [VoidType] void -# 1165| ValueCategory = prvalue -# 1166| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1166| Type = [VoidType] void -# 1166| ValueCategory = prvalue -# 1166| getQualifier(): [VariableAccess] x382 -# 1166| Type = [Struct] String -# 1166| ValueCategory = lvalue -# 1166| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1166| Conversion = [BoolConversion] conversion to bool -# 1166| Type = [BoolType] bool -# 1166| Value = [CStyleCast] 0 -# 1166| ValueCategory = prvalue -# 1167| getStmt(383): [DoStmt] do (...) ... -# 1169| getCondition(): [Literal] 0 -# 1169| Type = [IntType] int -# 1169| Value = [Literal] 0 -# 1169| ValueCategory = prvalue -# 1167| getStmt(): [BlockStmt] { ... } -# 1168| getStmt(0): [DeclStmt] declaration -# 1168| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x383 -# 1168| Type = [Struct] String -# 1168| getVariable().getInitializer(): [Initializer] initializer for x383 -# 1168| getExpr(): [ConstructorCall] call to String -# 1168| Type = [VoidType] void -# 1168| ValueCategory = prvalue -# 1169| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1169| Type = [VoidType] void -# 1169| ValueCategory = prvalue -# 1169| getQualifier(): [VariableAccess] x383 -# 1169| Type = [Struct] String -# 1169| ValueCategory = lvalue -# 1169| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1169| Conversion = [BoolConversion] conversion to bool -# 1169| Type = [BoolType] bool -# 1169| Value = [CStyleCast] 0 -# 1169| ValueCategory = prvalue -# 1170| getStmt(384): [DoStmt] do (...) ... -# 1172| getCondition(): [Literal] 0 -# 1172| Type = [IntType] int -# 1172| Value = [Literal] 0 -# 1172| ValueCategory = prvalue -# 1170| getStmt(): [BlockStmt] { ... } -# 1171| getStmt(0): [DeclStmt] declaration -# 1171| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x384 -# 1171| Type = [Struct] String -# 1171| getVariable().getInitializer(): [Initializer] initializer for x384 -# 1171| getExpr(): [ConstructorCall] call to String -# 1171| Type = [VoidType] void -# 1171| ValueCategory = prvalue -# 1172| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1172| Type = [VoidType] void -# 1172| ValueCategory = prvalue -# 1172| getQualifier(): [VariableAccess] x384 -# 1172| Type = [Struct] String -# 1172| ValueCategory = lvalue -# 1172| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1172| Conversion = [BoolConversion] conversion to bool -# 1172| Type = [BoolType] bool -# 1172| Value = [CStyleCast] 0 -# 1172| ValueCategory = prvalue -# 1173| getStmt(385): [DoStmt] do (...) ... -# 1175| getCondition(): [Literal] 0 -# 1175| Type = [IntType] int -# 1175| Value = [Literal] 0 -# 1175| ValueCategory = prvalue -# 1173| getStmt(): [BlockStmt] { ... } -# 1174| getStmt(0): [DeclStmt] declaration -# 1174| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x385 -# 1174| Type = [Struct] String -# 1174| getVariable().getInitializer(): [Initializer] initializer for x385 -# 1174| getExpr(): [ConstructorCall] call to String -# 1174| Type = [VoidType] void -# 1174| ValueCategory = prvalue -# 1175| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1175| Type = [VoidType] void -# 1175| ValueCategory = prvalue -# 1175| getQualifier(): [VariableAccess] x385 -# 1175| Type = [Struct] String -# 1175| ValueCategory = lvalue -# 1175| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1175| Conversion = [BoolConversion] conversion to bool -# 1175| Type = [BoolType] bool -# 1175| Value = [CStyleCast] 0 -# 1175| ValueCategory = prvalue -# 1176| getStmt(386): [DoStmt] do (...) ... -# 1178| getCondition(): [Literal] 0 -# 1178| Type = [IntType] int -# 1178| Value = [Literal] 0 -# 1178| ValueCategory = prvalue -# 1176| getStmt(): [BlockStmt] { ... } -# 1177| getStmt(0): [DeclStmt] declaration -# 1177| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x386 -# 1177| Type = [Struct] String -# 1177| getVariable().getInitializer(): [Initializer] initializer for x386 -# 1177| getExpr(): [ConstructorCall] call to String -# 1177| Type = [VoidType] void -# 1177| ValueCategory = prvalue -# 1178| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1178| Type = [VoidType] void -# 1178| ValueCategory = prvalue -# 1178| getQualifier(): [VariableAccess] x386 -# 1178| Type = [Struct] String -# 1178| ValueCategory = lvalue -# 1178| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1178| Conversion = [BoolConversion] conversion to bool -# 1178| Type = [BoolType] bool -# 1178| Value = [CStyleCast] 0 -# 1178| ValueCategory = prvalue -# 1179| getStmt(387): [DoStmt] do (...) ... -# 1181| getCondition(): [Literal] 0 -# 1181| Type = [IntType] int -# 1181| Value = [Literal] 0 -# 1181| ValueCategory = prvalue -# 1179| getStmt(): [BlockStmt] { ... } -# 1180| getStmt(0): [DeclStmt] declaration -# 1180| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x387 -# 1180| Type = [Struct] String -# 1180| getVariable().getInitializer(): [Initializer] initializer for x387 -# 1180| getExpr(): [ConstructorCall] call to String -# 1180| Type = [VoidType] void -# 1180| ValueCategory = prvalue -# 1181| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1181| Type = [VoidType] void -# 1181| ValueCategory = prvalue -# 1181| getQualifier(): [VariableAccess] x387 -# 1181| Type = [Struct] String -# 1181| ValueCategory = lvalue -# 1181| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1181| Conversion = [BoolConversion] conversion to bool -# 1181| Type = [BoolType] bool -# 1181| Value = [CStyleCast] 0 -# 1181| ValueCategory = prvalue -# 1182| getStmt(388): [DoStmt] do (...) ... -# 1184| getCondition(): [Literal] 0 -# 1184| Type = [IntType] int -# 1184| Value = [Literal] 0 -# 1184| ValueCategory = prvalue -# 1182| getStmt(): [BlockStmt] { ... } -# 1183| getStmt(0): [DeclStmt] declaration -# 1183| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x388 -# 1183| Type = [Struct] String -# 1183| getVariable().getInitializer(): [Initializer] initializer for x388 -# 1183| getExpr(): [ConstructorCall] call to String -# 1183| Type = [VoidType] void -# 1183| ValueCategory = prvalue -# 1184| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1184| Type = [VoidType] void -# 1184| ValueCategory = prvalue -# 1184| getQualifier(): [VariableAccess] x388 -# 1184| Type = [Struct] String -# 1184| ValueCategory = lvalue -# 1184| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1184| Conversion = [BoolConversion] conversion to bool -# 1184| Type = [BoolType] bool -# 1184| Value = [CStyleCast] 0 -# 1184| ValueCategory = prvalue -# 1185| getStmt(389): [DoStmt] do (...) ... -# 1187| getCondition(): [Literal] 0 -# 1187| Type = [IntType] int -# 1187| Value = [Literal] 0 -# 1187| ValueCategory = prvalue -# 1185| getStmt(): [BlockStmt] { ... } -# 1186| getStmt(0): [DeclStmt] declaration -# 1186| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x389 -# 1186| Type = [Struct] String -# 1186| getVariable().getInitializer(): [Initializer] initializer for x389 -# 1186| getExpr(): [ConstructorCall] call to String -# 1186| Type = [VoidType] void -# 1186| ValueCategory = prvalue -# 1187| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1187| Type = [VoidType] void -# 1187| ValueCategory = prvalue -# 1187| getQualifier(): [VariableAccess] x389 -# 1187| Type = [Struct] String -# 1187| ValueCategory = lvalue -# 1187| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1187| Conversion = [BoolConversion] conversion to bool -# 1187| Type = [BoolType] bool -# 1187| Value = [CStyleCast] 0 -# 1187| ValueCategory = prvalue -# 1188| getStmt(390): [DoStmt] do (...) ... -# 1190| getCondition(): [Literal] 0 -# 1190| Type = [IntType] int -# 1190| Value = [Literal] 0 -# 1190| ValueCategory = prvalue -# 1188| getStmt(): [BlockStmt] { ... } -# 1189| getStmt(0): [DeclStmt] declaration -# 1189| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x390 -# 1189| Type = [Struct] String -# 1189| getVariable().getInitializer(): [Initializer] initializer for x390 -# 1189| getExpr(): [ConstructorCall] call to String -# 1189| Type = [VoidType] void -# 1189| ValueCategory = prvalue -# 1190| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1190| Type = [VoidType] void -# 1190| ValueCategory = prvalue -# 1190| getQualifier(): [VariableAccess] x390 -# 1190| Type = [Struct] String -# 1190| ValueCategory = lvalue -# 1190| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1190| Conversion = [BoolConversion] conversion to bool -# 1190| Type = [BoolType] bool -# 1190| Value = [CStyleCast] 0 -# 1190| ValueCategory = prvalue -# 1191| getStmt(391): [DoStmt] do (...) ... -# 1193| getCondition(): [Literal] 0 -# 1193| Type = [IntType] int -# 1193| Value = [Literal] 0 -# 1193| ValueCategory = prvalue -# 1191| getStmt(): [BlockStmt] { ... } -# 1192| getStmt(0): [DeclStmt] declaration -# 1192| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x391 -# 1192| Type = [Struct] String -# 1192| getVariable().getInitializer(): [Initializer] initializer for x391 -# 1192| getExpr(): [ConstructorCall] call to String -# 1192| Type = [VoidType] void -# 1192| ValueCategory = prvalue -# 1193| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1193| Type = [VoidType] void -# 1193| ValueCategory = prvalue -# 1193| getQualifier(): [VariableAccess] x391 -# 1193| Type = [Struct] String -# 1193| ValueCategory = lvalue -# 1193| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1193| Conversion = [BoolConversion] conversion to bool -# 1193| Type = [BoolType] bool -# 1193| Value = [CStyleCast] 0 -# 1193| ValueCategory = prvalue -# 1194| getStmt(392): [DoStmt] do (...) ... -# 1196| getCondition(): [Literal] 0 -# 1196| Type = [IntType] int -# 1196| Value = [Literal] 0 -# 1196| ValueCategory = prvalue -# 1194| getStmt(): [BlockStmt] { ... } -# 1195| getStmt(0): [DeclStmt] declaration -# 1195| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x392 -# 1195| Type = [Struct] String -# 1195| getVariable().getInitializer(): [Initializer] initializer for x392 -# 1195| getExpr(): [ConstructorCall] call to String -# 1195| Type = [VoidType] void -# 1195| ValueCategory = prvalue -# 1196| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1196| Type = [VoidType] void -# 1196| ValueCategory = prvalue -# 1196| getQualifier(): [VariableAccess] x392 -# 1196| Type = [Struct] String -# 1196| ValueCategory = lvalue -# 1196| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1196| Conversion = [BoolConversion] conversion to bool -# 1196| Type = [BoolType] bool -# 1196| Value = [CStyleCast] 0 -# 1196| ValueCategory = prvalue -# 1197| getStmt(393): [DoStmt] do (...) ... -# 1199| getCondition(): [Literal] 0 -# 1199| Type = [IntType] int -# 1199| Value = [Literal] 0 -# 1199| ValueCategory = prvalue -# 1197| getStmt(): [BlockStmt] { ... } -# 1198| getStmt(0): [DeclStmt] declaration -# 1198| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x393 -# 1198| Type = [Struct] String -# 1198| getVariable().getInitializer(): [Initializer] initializer for x393 -# 1198| getExpr(): [ConstructorCall] call to String -# 1198| Type = [VoidType] void -# 1198| ValueCategory = prvalue -# 1199| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1199| Type = [VoidType] void -# 1199| ValueCategory = prvalue -# 1199| getQualifier(): [VariableAccess] x393 -# 1199| Type = [Struct] String -# 1199| ValueCategory = lvalue -# 1199| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1199| Conversion = [BoolConversion] conversion to bool -# 1199| Type = [BoolType] bool -# 1199| Value = [CStyleCast] 0 -# 1199| ValueCategory = prvalue -# 1200| getStmt(394): [DoStmt] do (...) ... -# 1202| getCondition(): [Literal] 0 -# 1202| Type = [IntType] int -# 1202| Value = [Literal] 0 -# 1202| ValueCategory = prvalue -# 1200| getStmt(): [BlockStmt] { ... } -# 1201| getStmt(0): [DeclStmt] declaration -# 1201| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x394 -# 1201| Type = [Struct] String -# 1201| getVariable().getInitializer(): [Initializer] initializer for x394 -# 1201| getExpr(): [ConstructorCall] call to String -# 1201| Type = [VoidType] void -# 1201| ValueCategory = prvalue -# 1202| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1202| Type = [VoidType] void -# 1202| ValueCategory = prvalue -# 1202| getQualifier(): [VariableAccess] x394 -# 1202| Type = [Struct] String -# 1202| ValueCategory = lvalue -# 1202| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1202| Conversion = [BoolConversion] conversion to bool -# 1202| Type = [BoolType] bool -# 1202| Value = [CStyleCast] 0 -# 1202| ValueCategory = prvalue -# 1203| getStmt(395): [DoStmt] do (...) ... -# 1205| getCondition(): [Literal] 0 -# 1205| Type = [IntType] int -# 1205| Value = [Literal] 0 -# 1205| ValueCategory = prvalue -# 1203| getStmt(): [BlockStmt] { ... } -# 1204| getStmt(0): [DeclStmt] declaration -# 1204| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x395 -# 1204| Type = [Struct] String -# 1204| getVariable().getInitializer(): [Initializer] initializer for x395 -# 1204| getExpr(): [ConstructorCall] call to String -# 1204| Type = [VoidType] void -# 1204| ValueCategory = prvalue -# 1205| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1205| Type = [VoidType] void -# 1205| ValueCategory = prvalue -# 1205| getQualifier(): [VariableAccess] x395 -# 1205| Type = [Struct] String -# 1205| ValueCategory = lvalue -# 1205| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1205| Conversion = [BoolConversion] conversion to bool -# 1205| Type = [BoolType] bool -# 1205| Value = [CStyleCast] 0 -# 1205| ValueCategory = prvalue -# 1206| getStmt(396): [DoStmt] do (...) ... -# 1208| getCondition(): [Literal] 0 -# 1208| Type = [IntType] int -# 1208| Value = [Literal] 0 -# 1208| ValueCategory = prvalue -# 1206| getStmt(): [BlockStmt] { ... } -# 1207| getStmt(0): [DeclStmt] declaration -# 1207| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x396 -# 1207| Type = [Struct] String -# 1207| getVariable().getInitializer(): [Initializer] initializer for x396 -# 1207| getExpr(): [ConstructorCall] call to String -# 1207| Type = [VoidType] void -# 1207| ValueCategory = prvalue -# 1208| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1208| Type = [VoidType] void -# 1208| ValueCategory = prvalue -# 1208| getQualifier(): [VariableAccess] x396 -# 1208| Type = [Struct] String -# 1208| ValueCategory = lvalue -# 1208| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1208| Conversion = [BoolConversion] conversion to bool -# 1208| Type = [BoolType] bool -# 1208| Value = [CStyleCast] 0 -# 1208| ValueCategory = prvalue -# 1209| getStmt(397): [DoStmt] do (...) ... -# 1211| getCondition(): [Literal] 0 -# 1211| Type = [IntType] int -# 1211| Value = [Literal] 0 -# 1211| ValueCategory = prvalue -# 1209| getStmt(): [BlockStmt] { ... } -# 1210| getStmt(0): [DeclStmt] declaration -# 1210| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x397 -# 1210| Type = [Struct] String -# 1210| getVariable().getInitializer(): [Initializer] initializer for x397 -# 1210| getExpr(): [ConstructorCall] call to String -# 1210| Type = [VoidType] void -# 1210| ValueCategory = prvalue -# 1211| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1211| Type = [VoidType] void -# 1211| ValueCategory = prvalue -# 1211| getQualifier(): [VariableAccess] x397 -# 1211| Type = [Struct] String -# 1211| ValueCategory = lvalue -# 1211| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1211| Conversion = [BoolConversion] conversion to bool -# 1211| Type = [BoolType] bool -# 1211| Value = [CStyleCast] 0 -# 1211| ValueCategory = prvalue -# 1212| getStmt(398): [DoStmt] do (...) ... -# 1214| getCondition(): [Literal] 0 -# 1214| Type = [IntType] int -# 1214| Value = [Literal] 0 -# 1214| ValueCategory = prvalue -# 1212| getStmt(): [BlockStmt] { ... } -# 1213| getStmt(0): [DeclStmt] declaration -# 1213| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x398 -# 1213| Type = [Struct] String -# 1213| getVariable().getInitializer(): [Initializer] initializer for x398 -# 1213| getExpr(): [ConstructorCall] call to String -# 1213| Type = [VoidType] void -# 1213| ValueCategory = prvalue -# 1214| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1214| Type = [VoidType] void -# 1214| ValueCategory = prvalue -# 1214| getQualifier(): [VariableAccess] x398 -# 1214| Type = [Struct] String -# 1214| ValueCategory = lvalue -# 1214| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1214| Conversion = [BoolConversion] conversion to bool -# 1214| Type = [BoolType] bool -# 1214| Value = [CStyleCast] 0 -# 1214| ValueCategory = prvalue -# 1215| getStmt(399): [DoStmt] do (...) ... -# 1217| getCondition(): [Literal] 0 -# 1217| Type = [IntType] int -# 1217| Value = [Literal] 0 -# 1217| ValueCategory = prvalue -# 1215| getStmt(): [BlockStmt] { ... } -# 1216| getStmt(0): [DeclStmt] declaration -# 1216| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x399 -# 1216| Type = [Struct] String -# 1216| getVariable().getInitializer(): [Initializer] initializer for x399 -# 1216| getExpr(): [ConstructorCall] call to String -# 1216| Type = [VoidType] void -# 1216| ValueCategory = prvalue -# 1217| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1217| Type = [VoidType] void -# 1217| ValueCategory = prvalue -# 1217| getQualifier(): [VariableAccess] x399 -# 1217| Type = [Struct] String -# 1217| ValueCategory = lvalue -# 1217| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1217| Conversion = [BoolConversion] conversion to bool -# 1217| Type = [BoolType] bool -# 1217| Value = [CStyleCast] 0 -# 1217| ValueCategory = prvalue -# 1218| getStmt(400): [DoStmt] do (...) ... -# 1220| getCondition(): [Literal] 0 -# 1220| Type = [IntType] int -# 1220| Value = [Literal] 0 -# 1220| ValueCategory = prvalue -# 1218| getStmt(): [BlockStmt] { ... } -# 1219| getStmt(0): [DeclStmt] declaration -# 1219| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x400 -# 1219| Type = [Struct] String -# 1219| getVariable().getInitializer(): [Initializer] initializer for x400 -# 1219| getExpr(): [ConstructorCall] call to String -# 1219| Type = [VoidType] void -# 1219| ValueCategory = prvalue -# 1220| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1220| Type = [VoidType] void -# 1220| ValueCategory = prvalue -# 1220| getQualifier(): [VariableAccess] x400 -# 1220| Type = [Struct] String -# 1220| ValueCategory = lvalue -# 1220| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1220| Conversion = [BoolConversion] conversion to bool -# 1220| Type = [BoolType] bool -# 1220| Value = [CStyleCast] 0 -# 1220| ValueCategory = prvalue -# 1221| getStmt(401): [DoStmt] do (...) ... -# 1223| getCondition(): [Literal] 0 -# 1223| Type = [IntType] int -# 1223| Value = [Literal] 0 -# 1223| ValueCategory = prvalue -# 1221| getStmt(): [BlockStmt] { ... } -# 1222| getStmt(0): [DeclStmt] declaration -# 1222| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x401 -# 1222| Type = [Struct] String -# 1222| getVariable().getInitializer(): [Initializer] initializer for x401 -# 1222| getExpr(): [ConstructorCall] call to String -# 1222| Type = [VoidType] void -# 1222| ValueCategory = prvalue -# 1223| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1223| Type = [VoidType] void -# 1223| ValueCategory = prvalue -# 1223| getQualifier(): [VariableAccess] x401 -# 1223| Type = [Struct] String -# 1223| ValueCategory = lvalue -# 1223| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1223| Conversion = [BoolConversion] conversion to bool -# 1223| Type = [BoolType] bool -# 1223| Value = [CStyleCast] 0 -# 1223| ValueCategory = prvalue -# 1224| getStmt(402): [DoStmt] do (...) ... -# 1226| getCondition(): [Literal] 0 -# 1226| Type = [IntType] int -# 1226| Value = [Literal] 0 -# 1226| ValueCategory = prvalue -# 1224| getStmt(): [BlockStmt] { ... } -# 1225| getStmt(0): [DeclStmt] declaration -# 1225| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x402 -# 1225| Type = [Struct] String -# 1225| getVariable().getInitializer(): [Initializer] initializer for x402 -# 1225| getExpr(): [ConstructorCall] call to String -# 1225| Type = [VoidType] void -# 1225| ValueCategory = prvalue -# 1226| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1226| Type = [VoidType] void -# 1226| ValueCategory = prvalue -# 1226| getQualifier(): [VariableAccess] x402 -# 1226| Type = [Struct] String -# 1226| ValueCategory = lvalue -# 1226| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1226| Conversion = [BoolConversion] conversion to bool -# 1226| Type = [BoolType] bool -# 1226| Value = [CStyleCast] 0 -# 1226| ValueCategory = prvalue -# 1227| getStmt(403): [DoStmt] do (...) ... -# 1229| getCondition(): [Literal] 0 -# 1229| Type = [IntType] int -# 1229| Value = [Literal] 0 -# 1229| ValueCategory = prvalue -# 1227| getStmt(): [BlockStmt] { ... } -# 1228| getStmt(0): [DeclStmt] declaration -# 1228| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x403 -# 1228| Type = [Struct] String -# 1228| getVariable().getInitializer(): [Initializer] initializer for x403 -# 1228| getExpr(): [ConstructorCall] call to String -# 1228| Type = [VoidType] void -# 1228| ValueCategory = prvalue -# 1229| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1229| Type = [VoidType] void -# 1229| ValueCategory = prvalue -# 1229| getQualifier(): [VariableAccess] x403 -# 1229| Type = [Struct] String -# 1229| ValueCategory = lvalue -# 1229| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1229| Conversion = [BoolConversion] conversion to bool -# 1229| Type = [BoolType] bool -# 1229| Value = [CStyleCast] 0 -# 1229| ValueCategory = prvalue -# 1230| getStmt(404): [DoStmt] do (...) ... -# 1232| getCondition(): [Literal] 0 -# 1232| Type = [IntType] int -# 1232| Value = [Literal] 0 -# 1232| ValueCategory = prvalue -# 1230| getStmt(): [BlockStmt] { ... } -# 1231| getStmt(0): [DeclStmt] declaration -# 1231| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x404 -# 1231| Type = [Struct] String -# 1231| getVariable().getInitializer(): [Initializer] initializer for x404 -# 1231| getExpr(): [ConstructorCall] call to String -# 1231| Type = [VoidType] void -# 1231| ValueCategory = prvalue -# 1232| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1232| Type = [VoidType] void -# 1232| ValueCategory = prvalue -# 1232| getQualifier(): [VariableAccess] x404 -# 1232| Type = [Struct] String -# 1232| ValueCategory = lvalue -# 1232| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1232| Conversion = [BoolConversion] conversion to bool -# 1232| Type = [BoolType] bool -# 1232| Value = [CStyleCast] 0 -# 1232| ValueCategory = prvalue -# 1233| getStmt(405): [DoStmt] do (...) ... -# 1235| getCondition(): [Literal] 0 -# 1235| Type = [IntType] int -# 1235| Value = [Literal] 0 -# 1235| ValueCategory = prvalue -# 1233| getStmt(): [BlockStmt] { ... } -# 1234| getStmt(0): [DeclStmt] declaration -# 1234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x405 -# 1234| Type = [Struct] String -# 1234| getVariable().getInitializer(): [Initializer] initializer for x405 -# 1234| getExpr(): [ConstructorCall] call to String -# 1234| Type = [VoidType] void -# 1234| ValueCategory = prvalue -# 1235| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1235| Type = [VoidType] void -# 1235| ValueCategory = prvalue -# 1235| getQualifier(): [VariableAccess] x405 -# 1235| Type = [Struct] String -# 1235| ValueCategory = lvalue -# 1235| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1235| Conversion = [BoolConversion] conversion to bool -# 1235| Type = [BoolType] bool -# 1235| Value = [CStyleCast] 0 -# 1235| ValueCategory = prvalue -# 1236| getStmt(406): [DoStmt] do (...) ... -# 1238| getCondition(): [Literal] 0 -# 1238| Type = [IntType] int -# 1238| Value = [Literal] 0 -# 1238| ValueCategory = prvalue -# 1236| getStmt(): [BlockStmt] { ... } -# 1237| getStmt(0): [DeclStmt] declaration -# 1237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x406 -# 1237| Type = [Struct] String -# 1237| getVariable().getInitializer(): [Initializer] initializer for x406 -# 1237| getExpr(): [ConstructorCall] call to String -# 1237| Type = [VoidType] void -# 1237| ValueCategory = prvalue -# 1238| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1238| Type = [VoidType] void -# 1238| ValueCategory = prvalue -# 1238| getQualifier(): [VariableAccess] x406 -# 1238| Type = [Struct] String -# 1238| ValueCategory = lvalue -# 1238| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1238| Conversion = [BoolConversion] conversion to bool -# 1238| Type = [BoolType] bool -# 1238| Value = [CStyleCast] 0 -# 1238| ValueCategory = prvalue -# 1239| getStmt(407): [DoStmt] do (...) ... -# 1241| getCondition(): [Literal] 0 -# 1241| Type = [IntType] int -# 1241| Value = [Literal] 0 -# 1241| ValueCategory = prvalue -# 1239| getStmt(): [BlockStmt] { ... } -# 1240| getStmt(0): [DeclStmt] declaration -# 1240| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x407 -# 1240| Type = [Struct] String -# 1240| getVariable().getInitializer(): [Initializer] initializer for x407 -# 1240| getExpr(): [ConstructorCall] call to String -# 1240| Type = [VoidType] void -# 1240| ValueCategory = prvalue -# 1241| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1241| Type = [VoidType] void -# 1241| ValueCategory = prvalue -# 1241| getQualifier(): [VariableAccess] x407 -# 1241| Type = [Struct] String -# 1241| ValueCategory = lvalue -# 1241| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1241| Conversion = [BoolConversion] conversion to bool -# 1241| Type = [BoolType] bool -# 1241| Value = [CStyleCast] 0 -# 1241| ValueCategory = prvalue -# 1242| getStmt(408): [DoStmt] do (...) ... -# 1244| getCondition(): [Literal] 0 -# 1244| Type = [IntType] int -# 1244| Value = [Literal] 0 -# 1244| ValueCategory = prvalue -# 1242| getStmt(): [BlockStmt] { ... } -# 1243| getStmt(0): [DeclStmt] declaration -# 1243| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x408 -# 1243| Type = [Struct] String -# 1243| getVariable().getInitializer(): [Initializer] initializer for x408 -# 1243| getExpr(): [ConstructorCall] call to String -# 1243| Type = [VoidType] void -# 1243| ValueCategory = prvalue -# 1244| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1244| Type = [VoidType] void -# 1244| ValueCategory = prvalue -# 1244| getQualifier(): [VariableAccess] x408 -# 1244| Type = [Struct] String -# 1244| ValueCategory = lvalue -# 1244| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1244| Conversion = [BoolConversion] conversion to bool -# 1244| Type = [BoolType] bool -# 1244| Value = [CStyleCast] 0 -# 1244| ValueCategory = prvalue -# 1245| getStmt(409): [DoStmt] do (...) ... -# 1247| getCondition(): [Literal] 0 -# 1247| Type = [IntType] int -# 1247| Value = [Literal] 0 -# 1247| ValueCategory = prvalue -# 1245| getStmt(): [BlockStmt] { ... } -# 1246| getStmt(0): [DeclStmt] declaration -# 1246| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x409 -# 1246| Type = [Struct] String -# 1246| getVariable().getInitializer(): [Initializer] initializer for x409 -# 1246| getExpr(): [ConstructorCall] call to String -# 1246| Type = [VoidType] void -# 1246| ValueCategory = prvalue -# 1247| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1247| Type = [VoidType] void -# 1247| ValueCategory = prvalue -# 1247| getQualifier(): [VariableAccess] x409 -# 1247| Type = [Struct] String -# 1247| ValueCategory = lvalue -# 1247| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1247| Conversion = [BoolConversion] conversion to bool -# 1247| Type = [BoolType] bool -# 1247| Value = [CStyleCast] 0 -# 1247| ValueCategory = prvalue -# 1248| getStmt(410): [DoStmt] do (...) ... -# 1250| getCondition(): [Literal] 0 -# 1250| Type = [IntType] int -# 1250| Value = [Literal] 0 -# 1250| ValueCategory = prvalue -# 1248| getStmt(): [BlockStmt] { ... } -# 1249| getStmt(0): [DeclStmt] declaration -# 1249| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x410 -# 1249| Type = [Struct] String -# 1249| getVariable().getInitializer(): [Initializer] initializer for x410 -# 1249| getExpr(): [ConstructorCall] call to String -# 1249| Type = [VoidType] void -# 1249| ValueCategory = prvalue -# 1250| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1250| Type = [VoidType] void -# 1250| ValueCategory = prvalue -# 1250| getQualifier(): [VariableAccess] x410 -# 1250| Type = [Struct] String -# 1250| ValueCategory = lvalue -# 1250| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1250| Conversion = [BoolConversion] conversion to bool -# 1250| Type = [BoolType] bool -# 1250| Value = [CStyleCast] 0 -# 1250| ValueCategory = prvalue -# 1251| getStmt(411): [DoStmt] do (...) ... -# 1253| getCondition(): [Literal] 0 -# 1253| Type = [IntType] int -# 1253| Value = [Literal] 0 -# 1253| ValueCategory = prvalue -# 1251| getStmt(): [BlockStmt] { ... } -# 1252| getStmt(0): [DeclStmt] declaration -# 1252| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x411 -# 1252| Type = [Struct] String -# 1252| getVariable().getInitializer(): [Initializer] initializer for x411 -# 1252| getExpr(): [ConstructorCall] call to String -# 1252| Type = [VoidType] void -# 1252| ValueCategory = prvalue -# 1253| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1253| Type = [VoidType] void -# 1253| ValueCategory = prvalue -# 1253| getQualifier(): [VariableAccess] x411 -# 1253| Type = [Struct] String -# 1253| ValueCategory = lvalue -# 1253| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1253| Conversion = [BoolConversion] conversion to bool -# 1253| Type = [BoolType] bool -# 1253| Value = [CStyleCast] 0 -# 1253| ValueCategory = prvalue -# 1254| getStmt(412): [DoStmt] do (...) ... -# 1256| getCondition(): [Literal] 0 -# 1256| Type = [IntType] int -# 1256| Value = [Literal] 0 -# 1256| ValueCategory = prvalue -# 1254| getStmt(): [BlockStmt] { ... } -# 1255| getStmt(0): [DeclStmt] declaration -# 1255| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x412 -# 1255| Type = [Struct] String -# 1255| getVariable().getInitializer(): [Initializer] initializer for x412 -# 1255| getExpr(): [ConstructorCall] call to String -# 1255| Type = [VoidType] void -# 1255| ValueCategory = prvalue -# 1256| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1256| Type = [VoidType] void -# 1256| ValueCategory = prvalue -# 1256| getQualifier(): [VariableAccess] x412 -# 1256| Type = [Struct] String -# 1256| ValueCategory = lvalue -# 1256| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1256| Conversion = [BoolConversion] conversion to bool -# 1256| Type = [BoolType] bool -# 1256| Value = [CStyleCast] 0 -# 1256| ValueCategory = prvalue -# 1257| getStmt(413): [DoStmt] do (...) ... -# 1259| getCondition(): [Literal] 0 -# 1259| Type = [IntType] int -# 1259| Value = [Literal] 0 -# 1259| ValueCategory = prvalue -# 1257| getStmt(): [BlockStmt] { ... } -# 1258| getStmt(0): [DeclStmt] declaration -# 1258| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x413 -# 1258| Type = [Struct] String -# 1258| getVariable().getInitializer(): [Initializer] initializer for x413 -# 1258| getExpr(): [ConstructorCall] call to String -# 1258| Type = [VoidType] void -# 1258| ValueCategory = prvalue -# 1259| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1259| Type = [VoidType] void -# 1259| ValueCategory = prvalue -# 1259| getQualifier(): [VariableAccess] x413 -# 1259| Type = [Struct] String -# 1259| ValueCategory = lvalue -# 1259| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1259| Conversion = [BoolConversion] conversion to bool -# 1259| Type = [BoolType] bool -# 1259| Value = [CStyleCast] 0 -# 1259| ValueCategory = prvalue -# 1260| getStmt(414): [DoStmt] do (...) ... -# 1262| getCondition(): [Literal] 0 -# 1262| Type = [IntType] int -# 1262| Value = [Literal] 0 -# 1262| ValueCategory = prvalue -# 1260| getStmt(): [BlockStmt] { ... } -# 1261| getStmt(0): [DeclStmt] declaration -# 1261| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x414 -# 1261| Type = [Struct] String -# 1261| getVariable().getInitializer(): [Initializer] initializer for x414 -# 1261| getExpr(): [ConstructorCall] call to String -# 1261| Type = [VoidType] void -# 1261| ValueCategory = prvalue -# 1262| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1262| Type = [VoidType] void -# 1262| ValueCategory = prvalue -# 1262| getQualifier(): [VariableAccess] x414 -# 1262| Type = [Struct] String -# 1262| ValueCategory = lvalue -# 1262| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1262| Conversion = [BoolConversion] conversion to bool -# 1262| Type = [BoolType] bool -# 1262| Value = [CStyleCast] 0 -# 1262| ValueCategory = prvalue -# 1263| getStmt(415): [DoStmt] do (...) ... -# 1265| getCondition(): [Literal] 0 -# 1265| Type = [IntType] int -# 1265| Value = [Literal] 0 -# 1265| ValueCategory = prvalue -# 1263| getStmt(): [BlockStmt] { ... } -# 1264| getStmt(0): [DeclStmt] declaration -# 1264| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x415 -# 1264| Type = [Struct] String -# 1264| getVariable().getInitializer(): [Initializer] initializer for x415 -# 1264| getExpr(): [ConstructorCall] call to String -# 1264| Type = [VoidType] void -# 1264| ValueCategory = prvalue -# 1265| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1265| Type = [VoidType] void -# 1265| ValueCategory = prvalue -# 1265| getQualifier(): [VariableAccess] x415 -# 1265| Type = [Struct] String -# 1265| ValueCategory = lvalue -# 1265| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1265| Conversion = [BoolConversion] conversion to bool -# 1265| Type = [BoolType] bool -# 1265| Value = [CStyleCast] 0 -# 1265| ValueCategory = prvalue -# 1266| getStmt(416): [DoStmt] do (...) ... -# 1268| getCondition(): [Literal] 0 -# 1268| Type = [IntType] int -# 1268| Value = [Literal] 0 -# 1268| ValueCategory = prvalue -# 1266| getStmt(): [BlockStmt] { ... } -# 1267| getStmt(0): [DeclStmt] declaration -# 1267| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x416 -# 1267| Type = [Struct] String -# 1267| getVariable().getInitializer(): [Initializer] initializer for x416 -# 1267| getExpr(): [ConstructorCall] call to String -# 1267| Type = [VoidType] void -# 1267| ValueCategory = prvalue -# 1268| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1268| Type = [VoidType] void -# 1268| ValueCategory = prvalue -# 1268| getQualifier(): [VariableAccess] x416 -# 1268| Type = [Struct] String -# 1268| ValueCategory = lvalue -# 1268| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1268| Conversion = [BoolConversion] conversion to bool -# 1268| Type = [BoolType] bool -# 1268| Value = [CStyleCast] 0 -# 1268| ValueCategory = prvalue -# 1269| getStmt(417): [DoStmt] do (...) ... -# 1271| getCondition(): [Literal] 0 -# 1271| Type = [IntType] int -# 1271| Value = [Literal] 0 -# 1271| ValueCategory = prvalue -# 1269| getStmt(): [BlockStmt] { ... } -# 1270| getStmt(0): [DeclStmt] declaration -# 1270| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x417 -# 1270| Type = [Struct] String -# 1270| getVariable().getInitializer(): [Initializer] initializer for x417 -# 1270| getExpr(): [ConstructorCall] call to String -# 1270| Type = [VoidType] void -# 1270| ValueCategory = prvalue -# 1271| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1271| Type = [VoidType] void -# 1271| ValueCategory = prvalue -# 1271| getQualifier(): [VariableAccess] x417 -# 1271| Type = [Struct] String -# 1271| ValueCategory = lvalue -# 1271| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1271| Conversion = [BoolConversion] conversion to bool -# 1271| Type = [BoolType] bool -# 1271| Value = [CStyleCast] 0 -# 1271| ValueCategory = prvalue -# 1272| getStmt(418): [DoStmt] do (...) ... -# 1274| getCondition(): [Literal] 0 -# 1274| Type = [IntType] int -# 1274| Value = [Literal] 0 -# 1274| ValueCategory = prvalue -# 1272| getStmt(): [BlockStmt] { ... } -# 1273| getStmt(0): [DeclStmt] declaration -# 1273| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x418 -# 1273| Type = [Struct] String -# 1273| getVariable().getInitializer(): [Initializer] initializer for x418 -# 1273| getExpr(): [ConstructorCall] call to String -# 1273| Type = [VoidType] void -# 1273| ValueCategory = prvalue -# 1274| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1274| Type = [VoidType] void -# 1274| ValueCategory = prvalue -# 1274| getQualifier(): [VariableAccess] x418 -# 1274| Type = [Struct] String -# 1274| ValueCategory = lvalue -# 1274| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1274| Conversion = [BoolConversion] conversion to bool -# 1274| Type = [BoolType] bool -# 1274| Value = [CStyleCast] 0 -# 1274| ValueCategory = prvalue -# 1275| getStmt(419): [DoStmt] do (...) ... -# 1277| getCondition(): [Literal] 0 -# 1277| Type = [IntType] int -# 1277| Value = [Literal] 0 -# 1277| ValueCategory = prvalue -# 1275| getStmt(): [BlockStmt] { ... } -# 1276| getStmt(0): [DeclStmt] declaration -# 1276| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x419 -# 1276| Type = [Struct] String -# 1276| getVariable().getInitializer(): [Initializer] initializer for x419 -# 1276| getExpr(): [ConstructorCall] call to String -# 1276| Type = [VoidType] void -# 1276| ValueCategory = prvalue -# 1277| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1277| Type = [VoidType] void -# 1277| ValueCategory = prvalue -# 1277| getQualifier(): [VariableAccess] x419 -# 1277| Type = [Struct] String -# 1277| ValueCategory = lvalue -# 1277| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1277| Conversion = [BoolConversion] conversion to bool -# 1277| Type = [BoolType] bool -# 1277| Value = [CStyleCast] 0 -# 1277| ValueCategory = prvalue -# 1278| getStmt(420): [DoStmt] do (...) ... -# 1280| getCondition(): [Literal] 0 -# 1280| Type = [IntType] int -# 1280| Value = [Literal] 0 -# 1280| ValueCategory = prvalue -# 1278| getStmt(): [BlockStmt] { ... } -# 1279| getStmt(0): [DeclStmt] declaration -# 1279| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x420 -# 1279| Type = [Struct] String -# 1279| getVariable().getInitializer(): [Initializer] initializer for x420 -# 1279| getExpr(): [ConstructorCall] call to String -# 1279| Type = [VoidType] void -# 1279| ValueCategory = prvalue -# 1280| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1280| Type = [VoidType] void -# 1280| ValueCategory = prvalue -# 1280| getQualifier(): [VariableAccess] x420 -# 1280| Type = [Struct] String -# 1280| ValueCategory = lvalue -# 1280| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1280| Conversion = [BoolConversion] conversion to bool -# 1280| Type = [BoolType] bool -# 1280| Value = [CStyleCast] 0 -# 1280| ValueCategory = prvalue -# 1281| getStmt(421): [DoStmt] do (...) ... -# 1283| getCondition(): [Literal] 0 -# 1283| Type = [IntType] int -# 1283| Value = [Literal] 0 -# 1283| ValueCategory = prvalue -# 1281| getStmt(): [BlockStmt] { ... } -# 1282| getStmt(0): [DeclStmt] declaration -# 1282| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x421 -# 1282| Type = [Struct] String -# 1282| getVariable().getInitializer(): [Initializer] initializer for x421 -# 1282| getExpr(): [ConstructorCall] call to String -# 1282| Type = [VoidType] void -# 1282| ValueCategory = prvalue -# 1283| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1283| Type = [VoidType] void -# 1283| ValueCategory = prvalue -# 1283| getQualifier(): [VariableAccess] x421 -# 1283| Type = [Struct] String -# 1283| ValueCategory = lvalue -# 1283| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1283| Conversion = [BoolConversion] conversion to bool -# 1283| Type = [BoolType] bool -# 1283| Value = [CStyleCast] 0 -# 1283| ValueCategory = prvalue -# 1284| getStmt(422): [DoStmt] do (...) ... -# 1286| getCondition(): [Literal] 0 -# 1286| Type = [IntType] int -# 1286| Value = [Literal] 0 -# 1286| ValueCategory = prvalue -# 1284| getStmt(): [BlockStmt] { ... } -# 1285| getStmt(0): [DeclStmt] declaration -# 1285| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x422 -# 1285| Type = [Struct] String -# 1285| getVariable().getInitializer(): [Initializer] initializer for x422 -# 1285| getExpr(): [ConstructorCall] call to String -# 1285| Type = [VoidType] void -# 1285| ValueCategory = prvalue -# 1286| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1286| Type = [VoidType] void -# 1286| ValueCategory = prvalue -# 1286| getQualifier(): [VariableAccess] x422 -# 1286| Type = [Struct] String -# 1286| ValueCategory = lvalue -# 1286| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1286| Conversion = [BoolConversion] conversion to bool -# 1286| Type = [BoolType] bool -# 1286| Value = [CStyleCast] 0 -# 1286| ValueCategory = prvalue -# 1287| getStmt(423): [DoStmt] do (...) ... -# 1289| getCondition(): [Literal] 0 -# 1289| Type = [IntType] int -# 1289| Value = [Literal] 0 -# 1289| ValueCategory = prvalue -# 1287| getStmt(): [BlockStmt] { ... } -# 1288| getStmt(0): [DeclStmt] declaration -# 1288| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x423 -# 1288| Type = [Struct] String -# 1288| getVariable().getInitializer(): [Initializer] initializer for x423 -# 1288| getExpr(): [ConstructorCall] call to String -# 1288| Type = [VoidType] void -# 1288| ValueCategory = prvalue -# 1289| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1289| Type = [VoidType] void -# 1289| ValueCategory = prvalue -# 1289| getQualifier(): [VariableAccess] x423 -# 1289| Type = [Struct] String -# 1289| ValueCategory = lvalue -# 1289| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1289| Conversion = [BoolConversion] conversion to bool -# 1289| Type = [BoolType] bool -# 1289| Value = [CStyleCast] 0 -# 1289| ValueCategory = prvalue -# 1290| getStmt(424): [DoStmt] do (...) ... -# 1292| getCondition(): [Literal] 0 -# 1292| Type = [IntType] int -# 1292| Value = [Literal] 0 -# 1292| ValueCategory = prvalue -# 1290| getStmt(): [BlockStmt] { ... } -# 1291| getStmt(0): [DeclStmt] declaration -# 1291| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x424 -# 1291| Type = [Struct] String -# 1291| getVariable().getInitializer(): [Initializer] initializer for x424 -# 1291| getExpr(): [ConstructorCall] call to String -# 1291| Type = [VoidType] void -# 1291| ValueCategory = prvalue -# 1292| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1292| Type = [VoidType] void -# 1292| ValueCategory = prvalue -# 1292| getQualifier(): [VariableAccess] x424 -# 1292| Type = [Struct] String -# 1292| ValueCategory = lvalue -# 1292| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1292| Conversion = [BoolConversion] conversion to bool -# 1292| Type = [BoolType] bool -# 1292| Value = [CStyleCast] 0 -# 1292| ValueCategory = prvalue -# 1293| getStmt(425): [DoStmt] do (...) ... -# 1295| getCondition(): [Literal] 0 -# 1295| Type = [IntType] int -# 1295| Value = [Literal] 0 -# 1295| ValueCategory = prvalue -# 1293| getStmt(): [BlockStmt] { ... } -# 1294| getStmt(0): [DeclStmt] declaration -# 1294| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x425 -# 1294| Type = [Struct] String -# 1294| getVariable().getInitializer(): [Initializer] initializer for x425 -# 1294| getExpr(): [ConstructorCall] call to String -# 1294| Type = [VoidType] void -# 1294| ValueCategory = prvalue -# 1295| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1295| Type = [VoidType] void -# 1295| ValueCategory = prvalue -# 1295| getQualifier(): [VariableAccess] x425 -# 1295| Type = [Struct] String -# 1295| ValueCategory = lvalue -# 1295| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1295| Conversion = [BoolConversion] conversion to bool -# 1295| Type = [BoolType] bool -# 1295| Value = [CStyleCast] 0 -# 1295| ValueCategory = prvalue -# 1296| getStmt(426): [DoStmt] do (...) ... -# 1298| getCondition(): [Literal] 0 -# 1298| Type = [IntType] int -# 1298| Value = [Literal] 0 -# 1298| ValueCategory = prvalue -# 1296| getStmt(): [BlockStmt] { ... } -# 1297| getStmt(0): [DeclStmt] declaration -# 1297| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x426 -# 1297| Type = [Struct] String -# 1297| getVariable().getInitializer(): [Initializer] initializer for x426 -# 1297| getExpr(): [ConstructorCall] call to String -# 1297| Type = [VoidType] void -# 1297| ValueCategory = prvalue -# 1298| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1298| Type = [VoidType] void -# 1298| ValueCategory = prvalue -# 1298| getQualifier(): [VariableAccess] x426 -# 1298| Type = [Struct] String -# 1298| ValueCategory = lvalue -# 1298| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1298| Conversion = [BoolConversion] conversion to bool -# 1298| Type = [BoolType] bool -# 1298| Value = [CStyleCast] 0 -# 1298| ValueCategory = prvalue -# 1299| getStmt(427): [DoStmt] do (...) ... -# 1301| getCondition(): [Literal] 0 -# 1301| Type = [IntType] int -# 1301| Value = [Literal] 0 -# 1301| ValueCategory = prvalue -# 1299| getStmt(): [BlockStmt] { ... } -# 1300| getStmt(0): [DeclStmt] declaration -# 1300| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x427 -# 1300| Type = [Struct] String -# 1300| getVariable().getInitializer(): [Initializer] initializer for x427 -# 1300| getExpr(): [ConstructorCall] call to String -# 1300| Type = [VoidType] void -# 1300| ValueCategory = prvalue -# 1301| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1301| Type = [VoidType] void -# 1301| ValueCategory = prvalue -# 1301| getQualifier(): [VariableAccess] x427 -# 1301| Type = [Struct] String -# 1301| ValueCategory = lvalue -# 1301| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1301| Conversion = [BoolConversion] conversion to bool -# 1301| Type = [BoolType] bool -# 1301| Value = [CStyleCast] 0 -# 1301| ValueCategory = prvalue -# 1302| getStmt(428): [DoStmt] do (...) ... -# 1304| getCondition(): [Literal] 0 -# 1304| Type = [IntType] int -# 1304| Value = [Literal] 0 -# 1304| ValueCategory = prvalue -# 1302| getStmt(): [BlockStmt] { ... } -# 1303| getStmt(0): [DeclStmt] declaration -# 1303| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x428 -# 1303| Type = [Struct] String -# 1303| getVariable().getInitializer(): [Initializer] initializer for x428 -# 1303| getExpr(): [ConstructorCall] call to String -# 1303| Type = [VoidType] void -# 1303| ValueCategory = prvalue -# 1304| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1304| Type = [VoidType] void -# 1304| ValueCategory = prvalue -# 1304| getQualifier(): [VariableAccess] x428 -# 1304| Type = [Struct] String -# 1304| ValueCategory = lvalue -# 1304| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1304| Conversion = [BoolConversion] conversion to bool -# 1304| Type = [BoolType] bool -# 1304| Value = [CStyleCast] 0 -# 1304| ValueCategory = prvalue -# 1305| getStmt(429): [DoStmt] do (...) ... -# 1307| getCondition(): [Literal] 0 -# 1307| Type = [IntType] int -# 1307| Value = [Literal] 0 -# 1307| ValueCategory = prvalue -# 1305| getStmt(): [BlockStmt] { ... } -# 1306| getStmt(0): [DeclStmt] declaration -# 1306| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x429 -# 1306| Type = [Struct] String -# 1306| getVariable().getInitializer(): [Initializer] initializer for x429 -# 1306| getExpr(): [ConstructorCall] call to String -# 1306| Type = [VoidType] void -# 1306| ValueCategory = prvalue -# 1307| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1307| Type = [VoidType] void -# 1307| ValueCategory = prvalue -# 1307| getQualifier(): [VariableAccess] x429 -# 1307| Type = [Struct] String -# 1307| ValueCategory = lvalue -# 1307| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1307| Conversion = [BoolConversion] conversion to bool -# 1307| Type = [BoolType] bool -# 1307| Value = [CStyleCast] 0 -# 1307| ValueCategory = prvalue -# 1308| getStmt(430): [DoStmt] do (...) ... -# 1310| getCondition(): [Literal] 0 -# 1310| Type = [IntType] int -# 1310| Value = [Literal] 0 -# 1310| ValueCategory = prvalue -# 1308| getStmt(): [BlockStmt] { ... } -# 1309| getStmt(0): [DeclStmt] declaration -# 1309| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x430 -# 1309| Type = [Struct] String -# 1309| getVariable().getInitializer(): [Initializer] initializer for x430 -# 1309| getExpr(): [ConstructorCall] call to String -# 1309| Type = [VoidType] void -# 1309| ValueCategory = prvalue -# 1310| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1310| Type = [VoidType] void -# 1310| ValueCategory = prvalue -# 1310| getQualifier(): [VariableAccess] x430 -# 1310| Type = [Struct] String -# 1310| ValueCategory = lvalue -# 1310| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1310| Conversion = [BoolConversion] conversion to bool -# 1310| Type = [BoolType] bool -# 1310| Value = [CStyleCast] 0 -# 1310| ValueCategory = prvalue -# 1311| getStmt(431): [DoStmt] do (...) ... -# 1313| getCondition(): [Literal] 0 -# 1313| Type = [IntType] int -# 1313| Value = [Literal] 0 -# 1313| ValueCategory = prvalue -# 1311| getStmt(): [BlockStmt] { ... } -# 1312| getStmt(0): [DeclStmt] declaration -# 1312| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x431 -# 1312| Type = [Struct] String -# 1312| getVariable().getInitializer(): [Initializer] initializer for x431 -# 1312| getExpr(): [ConstructorCall] call to String -# 1312| Type = [VoidType] void -# 1312| ValueCategory = prvalue -# 1313| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1313| Type = [VoidType] void -# 1313| ValueCategory = prvalue -# 1313| getQualifier(): [VariableAccess] x431 -# 1313| Type = [Struct] String -# 1313| ValueCategory = lvalue -# 1313| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1313| Conversion = [BoolConversion] conversion to bool -# 1313| Type = [BoolType] bool -# 1313| Value = [CStyleCast] 0 -# 1313| ValueCategory = prvalue -# 1314| getStmt(432): [DoStmt] do (...) ... -# 1316| getCondition(): [Literal] 0 -# 1316| Type = [IntType] int -# 1316| Value = [Literal] 0 -# 1316| ValueCategory = prvalue -# 1314| getStmt(): [BlockStmt] { ... } -# 1315| getStmt(0): [DeclStmt] declaration -# 1315| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x432 -# 1315| Type = [Struct] String -# 1315| getVariable().getInitializer(): [Initializer] initializer for x432 -# 1315| getExpr(): [ConstructorCall] call to String -# 1315| Type = [VoidType] void -# 1315| ValueCategory = prvalue -# 1316| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1316| Type = [VoidType] void -# 1316| ValueCategory = prvalue -# 1316| getQualifier(): [VariableAccess] x432 -# 1316| Type = [Struct] String -# 1316| ValueCategory = lvalue -# 1316| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1316| Conversion = [BoolConversion] conversion to bool -# 1316| Type = [BoolType] bool -# 1316| Value = [CStyleCast] 0 -# 1316| ValueCategory = prvalue -# 1317| getStmt(433): [DoStmt] do (...) ... -# 1319| getCondition(): [Literal] 0 -# 1319| Type = [IntType] int -# 1319| Value = [Literal] 0 -# 1319| ValueCategory = prvalue -# 1317| getStmt(): [BlockStmt] { ... } -# 1318| getStmt(0): [DeclStmt] declaration -# 1318| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x433 -# 1318| Type = [Struct] String -# 1318| getVariable().getInitializer(): [Initializer] initializer for x433 -# 1318| getExpr(): [ConstructorCall] call to String -# 1318| Type = [VoidType] void -# 1318| ValueCategory = prvalue -# 1319| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1319| Type = [VoidType] void -# 1319| ValueCategory = prvalue -# 1319| getQualifier(): [VariableAccess] x433 -# 1319| Type = [Struct] String -# 1319| ValueCategory = lvalue -# 1319| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1319| Conversion = [BoolConversion] conversion to bool -# 1319| Type = [BoolType] bool -# 1319| Value = [CStyleCast] 0 -# 1319| ValueCategory = prvalue -# 1320| getStmt(434): [DoStmt] do (...) ... -# 1322| getCondition(): [Literal] 0 -# 1322| Type = [IntType] int -# 1322| Value = [Literal] 0 -# 1322| ValueCategory = prvalue -# 1320| getStmt(): [BlockStmt] { ... } -# 1321| getStmt(0): [DeclStmt] declaration -# 1321| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x434 -# 1321| Type = [Struct] String -# 1321| getVariable().getInitializer(): [Initializer] initializer for x434 -# 1321| getExpr(): [ConstructorCall] call to String -# 1321| Type = [VoidType] void -# 1321| ValueCategory = prvalue -# 1322| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1322| Type = [VoidType] void -# 1322| ValueCategory = prvalue -# 1322| getQualifier(): [VariableAccess] x434 -# 1322| Type = [Struct] String -# 1322| ValueCategory = lvalue -# 1322| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1322| Conversion = [BoolConversion] conversion to bool -# 1322| Type = [BoolType] bool -# 1322| Value = [CStyleCast] 0 -# 1322| ValueCategory = prvalue -# 1323| getStmt(435): [DoStmt] do (...) ... -# 1325| getCondition(): [Literal] 0 -# 1325| Type = [IntType] int -# 1325| Value = [Literal] 0 -# 1325| ValueCategory = prvalue -# 1323| getStmt(): [BlockStmt] { ... } -# 1324| getStmt(0): [DeclStmt] declaration -# 1324| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x435 -# 1324| Type = [Struct] String -# 1324| getVariable().getInitializer(): [Initializer] initializer for x435 -# 1324| getExpr(): [ConstructorCall] call to String -# 1324| Type = [VoidType] void -# 1324| ValueCategory = prvalue -# 1325| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1325| Type = [VoidType] void -# 1325| ValueCategory = prvalue -# 1325| getQualifier(): [VariableAccess] x435 -# 1325| Type = [Struct] String -# 1325| ValueCategory = lvalue -# 1325| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1325| Conversion = [BoolConversion] conversion to bool -# 1325| Type = [BoolType] bool -# 1325| Value = [CStyleCast] 0 -# 1325| ValueCategory = prvalue -# 1326| getStmt(436): [DoStmt] do (...) ... -# 1328| getCondition(): [Literal] 0 -# 1328| Type = [IntType] int -# 1328| Value = [Literal] 0 -# 1328| ValueCategory = prvalue -# 1326| getStmt(): [BlockStmt] { ... } -# 1327| getStmt(0): [DeclStmt] declaration -# 1327| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x436 -# 1327| Type = [Struct] String -# 1327| getVariable().getInitializer(): [Initializer] initializer for x436 -# 1327| getExpr(): [ConstructorCall] call to String -# 1327| Type = [VoidType] void -# 1327| ValueCategory = prvalue -# 1328| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1328| Type = [VoidType] void -# 1328| ValueCategory = prvalue -# 1328| getQualifier(): [VariableAccess] x436 -# 1328| Type = [Struct] String -# 1328| ValueCategory = lvalue -# 1328| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1328| Conversion = [BoolConversion] conversion to bool -# 1328| Type = [BoolType] bool -# 1328| Value = [CStyleCast] 0 -# 1328| ValueCategory = prvalue -# 1329| getStmt(437): [DoStmt] do (...) ... -# 1331| getCondition(): [Literal] 0 -# 1331| Type = [IntType] int -# 1331| Value = [Literal] 0 -# 1331| ValueCategory = prvalue -# 1329| getStmt(): [BlockStmt] { ... } -# 1330| getStmt(0): [DeclStmt] declaration -# 1330| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x437 -# 1330| Type = [Struct] String -# 1330| getVariable().getInitializer(): [Initializer] initializer for x437 -# 1330| getExpr(): [ConstructorCall] call to String -# 1330| Type = [VoidType] void -# 1330| ValueCategory = prvalue -# 1331| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1331| Type = [VoidType] void -# 1331| ValueCategory = prvalue -# 1331| getQualifier(): [VariableAccess] x437 -# 1331| Type = [Struct] String -# 1331| ValueCategory = lvalue -# 1331| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1331| Conversion = [BoolConversion] conversion to bool -# 1331| Type = [BoolType] bool -# 1331| Value = [CStyleCast] 0 -# 1331| ValueCategory = prvalue -# 1332| getStmt(438): [DoStmt] do (...) ... -# 1334| getCondition(): [Literal] 0 -# 1334| Type = [IntType] int -# 1334| Value = [Literal] 0 -# 1334| ValueCategory = prvalue -# 1332| getStmt(): [BlockStmt] { ... } -# 1333| getStmt(0): [DeclStmt] declaration -# 1333| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x438 -# 1333| Type = [Struct] String -# 1333| getVariable().getInitializer(): [Initializer] initializer for x438 -# 1333| getExpr(): [ConstructorCall] call to String -# 1333| Type = [VoidType] void -# 1333| ValueCategory = prvalue -# 1334| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1334| Type = [VoidType] void -# 1334| ValueCategory = prvalue -# 1334| getQualifier(): [VariableAccess] x438 -# 1334| Type = [Struct] String -# 1334| ValueCategory = lvalue -# 1334| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1334| Conversion = [BoolConversion] conversion to bool -# 1334| Type = [BoolType] bool -# 1334| Value = [CStyleCast] 0 -# 1334| ValueCategory = prvalue -# 1335| getStmt(439): [DoStmt] do (...) ... -# 1337| getCondition(): [Literal] 0 -# 1337| Type = [IntType] int -# 1337| Value = [Literal] 0 -# 1337| ValueCategory = prvalue -# 1335| getStmt(): [BlockStmt] { ... } -# 1336| getStmt(0): [DeclStmt] declaration -# 1336| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x439 -# 1336| Type = [Struct] String -# 1336| getVariable().getInitializer(): [Initializer] initializer for x439 -# 1336| getExpr(): [ConstructorCall] call to String -# 1336| Type = [VoidType] void -# 1336| ValueCategory = prvalue -# 1337| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1337| Type = [VoidType] void -# 1337| ValueCategory = prvalue -# 1337| getQualifier(): [VariableAccess] x439 -# 1337| Type = [Struct] String -# 1337| ValueCategory = lvalue -# 1337| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1337| Conversion = [BoolConversion] conversion to bool -# 1337| Type = [BoolType] bool -# 1337| Value = [CStyleCast] 0 -# 1337| ValueCategory = prvalue -# 1338| getStmt(440): [DoStmt] do (...) ... -# 1340| getCondition(): [Literal] 0 -# 1340| Type = [IntType] int -# 1340| Value = [Literal] 0 -# 1340| ValueCategory = prvalue -# 1338| getStmt(): [BlockStmt] { ... } -# 1339| getStmt(0): [DeclStmt] declaration -# 1339| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x440 -# 1339| Type = [Struct] String -# 1339| getVariable().getInitializer(): [Initializer] initializer for x440 -# 1339| getExpr(): [ConstructorCall] call to String -# 1339| Type = [VoidType] void -# 1339| ValueCategory = prvalue -# 1340| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1340| Type = [VoidType] void -# 1340| ValueCategory = prvalue -# 1340| getQualifier(): [VariableAccess] x440 -# 1340| Type = [Struct] String -# 1340| ValueCategory = lvalue -# 1340| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1340| Conversion = [BoolConversion] conversion to bool -# 1340| Type = [BoolType] bool -# 1340| Value = [CStyleCast] 0 -# 1340| ValueCategory = prvalue -# 1341| getStmt(441): [DoStmt] do (...) ... -# 1343| getCondition(): [Literal] 0 -# 1343| Type = [IntType] int -# 1343| Value = [Literal] 0 -# 1343| ValueCategory = prvalue -# 1341| getStmt(): [BlockStmt] { ... } -# 1342| getStmt(0): [DeclStmt] declaration -# 1342| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x441 -# 1342| Type = [Struct] String -# 1342| getVariable().getInitializer(): [Initializer] initializer for x441 -# 1342| getExpr(): [ConstructorCall] call to String -# 1342| Type = [VoidType] void -# 1342| ValueCategory = prvalue -# 1343| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1343| Type = [VoidType] void -# 1343| ValueCategory = prvalue -# 1343| getQualifier(): [VariableAccess] x441 -# 1343| Type = [Struct] String -# 1343| ValueCategory = lvalue -# 1343| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1343| Conversion = [BoolConversion] conversion to bool -# 1343| Type = [BoolType] bool -# 1343| Value = [CStyleCast] 0 -# 1343| ValueCategory = prvalue -# 1344| getStmt(442): [DoStmt] do (...) ... -# 1346| getCondition(): [Literal] 0 -# 1346| Type = [IntType] int -# 1346| Value = [Literal] 0 -# 1346| ValueCategory = prvalue -# 1344| getStmt(): [BlockStmt] { ... } -# 1345| getStmt(0): [DeclStmt] declaration -# 1345| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x442 -# 1345| Type = [Struct] String -# 1345| getVariable().getInitializer(): [Initializer] initializer for x442 -# 1345| getExpr(): [ConstructorCall] call to String -# 1345| Type = [VoidType] void -# 1345| ValueCategory = prvalue -# 1346| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1346| Type = [VoidType] void -# 1346| ValueCategory = prvalue -# 1346| getQualifier(): [VariableAccess] x442 -# 1346| Type = [Struct] String -# 1346| ValueCategory = lvalue -# 1346| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1346| Conversion = [BoolConversion] conversion to bool -# 1346| Type = [BoolType] bool -# 1346| Value = [CStyleCast] 0 -# 1346| ValueCategory = prvalue -# 1347| getStmt(443): [DoStmt] do (...) ... -# 1349| getCondition(): [Literal] 0 -# 1349| Type = [IntType] int -# 1349| Value = [Literal] 0 -# 1349| ValueCategory = prvalue -# 1347| getStmt(): [BlockStmt] { ... } -# 1348| getStmt(0): [DeclStmt] declaration -# 1348| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x443 -# 1348| Type = [Struct] String -# 1348| getVariable().getInitializer(): [Initializer] initializer for x443 -# 1348| getExpr(): [ConstructorCall] call to String -# 1348| Type = [VoidType] void -# 1348| ValueCategory = prvalue -# 1349| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1349| Type = [VoidType] void -# 1349| ValueCategory = prvalue -# 1349| getQualifier(): [VariableAccess] x443 -# 1349| Type = [Struct] String -# 1349| ValueCategory = lvalue -# 1349| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1349| Conversion = [BoolConversion] conversion to bool -# 1349| Type = [BoolType] bool -# 1349| Value = [CStyleCast] 0 -# 1349| ValueCategory = prvalue -# 1350| getStmt(444): [DoStmt] do (...) ... -# 1352| getCondition(): [Literal] 0 -# 1352| Type = [IntType] int -# 1352| Value = [Literal] 0 -# 1352| ValueCategory = prvalue -# 1350| getStmt(): [BlockStmt] { ... } -# 1351| getStmt(0): [DeclStmt] declaration -# 1351| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x444 -# 1351| Type = [Struct] String -# 1351| getVariable().getInitializer(): [Initializer] initializer for x444 -# 1351| getExpr(): [ConstructorCall] call to String -# 1351| Type = [VoidType] void -# 1351| ValueCategory = prvalue -# 1352| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1352| Type = [VoidType] void -# 1352| ValueCategory = prvalue -# 1352| getQualifier(): [VariableAccess] x444 -# 1352| Type = [Struct] String -# 1352| ValueCategory = lvalue -# 1352| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1352| Conversion = [BoolConversion] conversion to bool -# 1352| Type = [BoolType] bool -# 1352| Value = [CStyleCast] 0 -# 1352| ValueCategory = prvalue -# 1353| getStmt(445): [DoStmt] do (...) ... -# 1355| getCondition(): [Literal] 0 -# 1355| Type = [IntType] int -# 1355| Value = [Literal] 0 -# 1355| ValueCategory = prvalue -# 1353| getStmt(): [BlockStmt] { ... } -# 1354| getStmt(0): [DeclStmt] declaration -# 1354| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x445 -# 1354| Type = [Struct] String -# 1354| getVariable().getInitializer(): [Initializer] initializer for x445 -# 1354| getExpr(): [ConstructorCall] call to String -# 1354| Type = [VoidType] void -# 1354| ValueCategory = prvalue -# 1355| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1355| Type = [VoidType] void -# 1355| ValueCategory = prvalue -# 1355| getQualifier(): [VariableAccess] x445 -# 1355| Type = [Struct] String -# 1355| ValueCategory = lvalue -# 1355| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1355| Conversion = [BoolConversion] conversion to bool -# 1355| Type = [BoolType] bool -# 1355| Value = [CStyleCast] 0 -# 1355| ValueCategory = prvalue -# 1356| getStmt(446): [DoStmt] do (...) ... -# 1358| getCondition(): [Literal] 0 -# 1358| Type = [IntType] int -# 1358| Value = [Literal] 0 -# 1358| ValueCategory = prvalue -# 1356| getStmt(): [BlockStmt] { ... } -# 1357| getStmt(0): [DeclStmt] declaration -# 1357| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x446 -# 1357| Type = [Struct] String -# 1357| getVariable().getInitializer(): [Initializer] initializer for x446 -# 1357| getExpr(): [ConstructorCall] call to String -# 1357| Type = [VoidType] void -# 1357| ValueCategory = prvalue -# 1358| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1358| Type = [VoidType] void -# 1358| ValueCategory = prvalue -# 1358| getQualifier(): [VariableAccess] x446 -# 1358| Type = [Struct] String -# 1358| ValueCategory = lvalue -# 1358| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1358| Conversion = [BoolConversion] conversion to bool -# 1358| Type = [BoolType] bool -# 1358| Value = [CStyleCast] 0 -# 1358| ValueCategory = prvalue -# 1359| getStmt(447): [DoStmt] do (...) ... -# 1361| getCondition(): [Literal] 0 -# 1361| Type = [IntType] int -# 1361| Value = [Literal] 0 -# 1361| ValueCategory = prvalue -# 1359| getStmt(): [BlockStmt] { ... } -# 1360| getStmt(0): [DeclStmt] declaration -# 1360| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x447 -# 1360| Type = [Struct] String -# 1360| getVariable().getInitializer(): [Initializer] initializer for x447 -# 1360| getExpr(): [ConstructorCall] call to String -# 1360| Type = [VoidType] void -# 1360| ValueCategory = prvalue -# 1361| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1361| Type = [VoidType] void -# 1361| ValueCategory = prvalue -# 1361| getQualifier(): [VariableAccess] x447 -# 1361| Type = [Struct] String -# 1361| ValueCategory = lvalue -# 1361| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1361| Conversion = [BoolConversion] conversion to bool -# 1361| Type = [BoolType] bool -# 1361| Value = [CStyleCast] 0 -# 1361| ValueCategory = prvalue -# 1362| getStmt(448): [DoStmt] do (...) ... -# 1364| getCondition(): [Literal] 0 -# 1364| Type = [IntType] int -# 1364| Value = [Literal] 0 -# 1364| ValueCategory = prvalue -# 1362| getStmt(): [BlockStmt] { ... } -# 1363| getStmt(0): [DeclStmt] declaration -# 1363| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x448 -# 1363| Type = [Struct] String -# 1363| getVariable().getInitializer(): [Initializer] initializer for x448 -# 1363| getExpr(): [ConstructorCall] call to String -# 1363| Type = [VoidType] void -# 1363| ValueCategory = prvalue -# 1364| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1364| Type = [VoidType] void -# 1364| ValueCategory = prvalue -# 1364| getQualifier(): [VariableAccess] x448 -# 1364| Type = [Struct] String -# 1364| ValueCategory = lvalue -# 1364| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1364| Conversion = [BoolConversion] conversion to bool -# 1364| Type = [BoolType] bool -# 1364| Value = [CStyleCast] 0 -# 1364| ValueCategory = prvalue -# 1365| getStmt(449): [DoStmt] do (...) ... -# 1367| getCondition(): [Literal] 0 -# 1367| Type = [IntType] int -# 1367| Value = [Literal] 0 -# 1367| ValueCategory = prvalue -# 1365| getStmt(): [BlockStmt] { ... } -# 1366| getStmt(0): [DeclStmt] declaration -# 1366| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x449 -# 1366| Type = [Struct] String -# 1366| getVariable().getInitializer(): [Initializer] initializer for x449 -# 1366| getExpr(): [ConstructorCall] call to String -# 1366| Type = [VoidType] void -# 1366| ValueCategory = prvalue -# 1367| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1367| Type = [VoidType] void -# 1367| ValueCategory = prvalue -# 1367| getQualifier(): [VariableAccess] x449 -# 1367| Type = [Struct] String -# 1367| ValueCategory = lvalue -# 1367| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1367| Conversion = [BoolConversion] conversion to bool -# 1367| Type = [BoolType] bool -# 1367| Value = [CStyleCast] 0 -# 1367| ValueCategory = prvalue -# 1368| getStmt(450): [DoStmt] do (...) ... -# 1370| getCondition(): [Literal] 0 -# 1370| Type = [IntType] int -# 1370| Value = [Literal] 0 -# 1370| ValueCategory = prvalue -# 1368| getStmt(): [BlockStmt] { ... } -# 1369| getStmt(0): [DeclStmt] declaration -# 1369| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x450 -# 1369| Type = [Struct] String -# 1369| getVariable().getInitializer(): [Initializer] initializer for x450 -# 1369| getExpr(): [ConstructorCall] call to String -# 1369| Type = [VoidType] void -# 1369| ValueCategory = prvalue -# 1370| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1370| Type = [VoidType] void -# 1370| ValueCategory = prvalue -# 1370| getQualifier(): [VariableAccess] x450 -# 1370| Type = [Struct] String -# 1370| ValueCategory = lvalue -# 1370| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1370| Conversion = [BoolConversion] conversion to bool -# 1370| Type = [BoolType] bool -# 1370| Value = [CStyleCast] 0 -# 1370| ValueCategory = prvalue -# 1371| getStmt(451): [DoStmt] do (...) ... -# 1373| getCondition(): [Literal] 0 -# 1373| Type = [IntType] int -# 1373| Value = [Literal] 0 -# 1373| ValueCategory = prvalue -# 1371| getStmt(): [BlockStmt] { ... } -# 1372| getStmt(0): [DeclStmt] declaration -# 1372| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x451 -# 1372| Type = [Struct] String -# 1372| getVariable().getInitializer(): [Initializer] initializer for x451 -# 1372| getExpr(): [ConstructorCall] call to String -# 1372| Type = [VoidType] void -# 1372| ValueCategory = prvalue -# 1373| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1373| Type = [VoidType] void -# 1373| ValueCategory = prvalue -# 1373| getQualifier(): [VariableAccess] x451 -# 1373| Type = [Struct] String -# 1373| ValueCategory = lvalue -# 1373| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1373| Conversion = [BoolConversion] conversion to bool -# 1373| Type = [BoolType] bool -# 1373| Value = [CStyleCast] 0 -# 1373| ValueCategory = prvalue -# 1374| getStmt(452): [DoStmt] do (...) ... -# 1376| getCondition(): [Literal] 0 -# 1376| Type = [IntType] int -# 1376| Value = [Literal] 0 -# 1376| ValueCategory = prvalue -# 1374| getStmt(): [BlockStmt] { ... } -# 1375| getStmt(0): [DeclStmt] declaration -# 1375| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x452 -# 1375| Type = [Struct] String -# 1375| getVariable().getInitializer(): [Initializer] initializer for x452 -# 1375| getExpr(): [ConstructorCall] call to String -# 1375| Type = [VoidType] void -# 1375| ValueCategory = prvalue -# 1376| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1376| Type = [VoidType] void -# 1376| ValueCategory = prvalue -# 1376| getQualifier(): [VariableAccess] x452 -# 1376| Type = [Struct] String -# 1376| ValueCategory = lvalue -# 1376| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1376| Conversion = [BoolConversion] conversion to bool -# 1376| Type = [BoolType] bool -# 1376| Value = [CStyleCast] 0 -# 1376| ValueCategory = prvalue -# 1377| getStmt(453): [DoStmt] do (...) ... -# 1379| getCondition(): [Literal] 0 -# 1379| Type = [IntType] int -# 1379| Value = [Literal] 0 -# 1379| ValueCategory = prvalue -# 1377| getStmt(): [BlockStmt] { ... } -# 1378| getStmt(0): [DeclStmt] declaration -# 1378| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x453 -# 1378| Type = [Struct] String -# 1378| getVariable().getInitializer(): [Initializer] initializer for x453 -# 1378| getExpr(): [ConstructorCall] call to String -# 1378| Type = [VoidType] void -# 1378| ValueCategory = prvalue -# 1379| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1379| Type = [VoidType] void -# 1379| ValueCategory = prvalue -# 1379| getQualifier(): [VariableAccess] x453 -# 1379| Type = [Struct] String -# 1379| ValueCategory = lvalue -# 1379| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1379| Conversion = [BoolConversion] conversion to bool -# 1379| Type = [BoolType] bool -# 1379| Value = [CStyleCast] 0 -# 1379| ValueCategory = prvalue -# 1380| getStmt(454): [DoStmt] do (...) ... -# 1382| getCondition(): [Literal] 0 -# 1382| Type = [IntType] int -# 1382| Value = [Literal] 0 -# 1382| ValueCategory = prvalue -# 1380| getStmt(): [BlockStmt] { ... } -# 1381| getStmt(0): [DeclStmt] declaration -# 1381| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x454 -# 1381| Type = [Struct] String -# 1381| getVariable().getInitializer(): [Initializer] initializer for x454 -# 1381| getExpr(): [ConstructorCall] call to String -# 1381| Type = [VoidType] void -# 1381| ValueCategory = prvalue -# 1382| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1382| Type = [VoidType] void -# 1382| ValueCategory = prvalue -# 1382| getQualifier(): [VariableAccess] x454 -# 1382| Type = [Struct] String -# 1382| ValueCategory = lvalue -# 1382| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1382| Conversion = [BoolConversion] conversion to bool -# 1382| Type = [BoolType] bool -# 1382| Value = [CStyleCast] 0 -# 1382| ValueCategory = prvalue -# 1383| getStmt(455): [DoStmt] do (...) ... -# 1385| getCondition(): [Literal] 0 -# 1385| Type = [IntType] int -# 1385| Value = [Literal] 0 -# 1385| ValueCategory = prvalue -# 1383| getStmt(): [BlockStmt] { ... } -# 1384| getStmt(0): [DeclStmt] declaration -# 1384| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x455 -# 1384| Type = [Struct] String -# 1384| getVariable().getInitializer(): [Initializer] initializer for x455 -# 1384| getExpr(): [ConstructorCall] call to String -# 1384| Type = [VoidType] void -# 1384| ValueCategory = prvalue -# 1385| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1385| Type = [VoidType] void -# 1385| ValueCategory = prvalue -# 1385| getQualifier(): [VariableAccess] x455 -# 1385| Type = [Struct] String -# 1385| ValueCategory = lvalue -# 1385| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1385| Conversion = [BoolConversion] conversion to bool -# 1385| Type = [BoolType] bool -# 1385| Value = [CStyleCast] 0 -# 1385| ValueCategory = prvalue -# 1386| getStmt(456): [DoStmt] do (...) ... -# 1388| getCondition(): [Literal] 0 -# 1388| Type = [IntType] int -# 1388| Value = [Literal] 0 -# 1388| ValueCategory = prvalue -# 1386| getStmt(): [BlockStmt] { ... } -# 1387| getStmt(0): [DeclStmt] declaration -# 1387| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x456 -# 1387| Type = [Struct] String -# 1387| getVariable().getInitializer(): [Initializer] initializer for x456 -# 1387| getExpr(): [ConstructorCall] call to String -# 1387| Type = [VoidType] void -# 1387| ValueCategory = prvalue -# 1388| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1388| Type = [VoidType] void -# 1388| ValueCategory = prvalue -# 1388| getQualifier(): [VariableAccess] x456 -# 1388| Type = [Struct] String -# 1388| ValueCategory = lvalue -# 1388| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1388| Conversion = [BoolConversion] conversion to bool -# 1388| Type = [BoolType] bool -# 1388| Value = [CStyleCast] 0 -# 1388| ValueCategory = prvalue -# 1389| getStmt(457): [DoStmt] do (...) ... -# 1391| getCondition(): [Literal] 0 -# 1391| Type = [IntType] int -# 1391| Value = [Literal] 0 -# 1391| ValueCategory = prvalue -# 1389| getStmt(): [BlockStmt] { ... } -# 1390| getStmt(0): [DeclStmt] declaration -# 1390| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x457 -# 1390| Type = [Struct] String -# 1390| getVariable().getInitializer(): [Initializer] initializer for x457 -# 1390| getExpr(): [ConstructorCall] call to String -# 1390| Type = [VoidType] void -# 1390| ValueCategory = prvalue -# 1391| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1391| Type = [VoidType] void -# 1391| ValueCategory = prvalue -# 1391| getQualifier(): [VariableAccess] x457 -# 1391| Type = [Struct] String -# 1391| ValueCategory = lvalue -# 1391| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1391| Conversion = [BoolConversion] conversion to bool -# 1391| Type = [BoolType] bool -# 1391| Value = [CStyleCast] 0 -# 1391| ValueCategory = prvalue -# 1392| getStmt(458): [DoStmt] do (...) ... -# 1394| getCondition(): [Literal] 0 -# 1394| Type = [IntType] int -# 1394| Value = [Literal] 0 -# 1394| ValueCategory = prvalue -# 1392| getStmt(): [BlockStmt] { ... } -# 1393| getStmt(0): [DeclStmt] declaration -# 1393| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x458 -# 1393| Type = [Struct] String -# 1393| getVariable().getInitializer(): [Initializer] initializer for x458 -# 1393| getExpr(): [ConstructorCall] call to String -# 1393| Type = [VoidType] void -# 1393| ValueCategory = prvalue -# 1394| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1394| Type = [VoidType] void -# 1394| ValueCategory = prvalue -# 1394| getQualifier(): [VariableAccess] x458 -# 1394| Type = [Struct] String -# 1394| ValueCategory = lvalue -# 1394| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1394| Conversion = [BoolConversion] conversion to bool -# 1394| Type = [BoolType] bool -# 1394| Value = [CStyleCast] 0 -# 1394| ValueCategory = prvalue -# 1395| getStmt(459): [DoStmt] do (...) ... -# 1397| getCondition(): [Literal] 0 -# 1397| Type = [IntType] int -# 1397| Value = [Literal] 0 -# 1397| ValueCategory = prvalue -# 1395| getStmt(): [BlockStmt] { ... } -# 1396| getStmt(0): [DeclStmt] declaration -# 1396| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x459 -# 1396| Type = [Struct] String -# 1396| getVariable().getInitializer(): [Initializer] initializer for x459 -# 1396| getExpr(): [ConstructorCall] call to String -# 1396| Type = [VoidType] void -# 1396| ValueCategory = prvalue -# 1397| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1397| Type = [VoidType] void -# 1397| ValueCategory = prvalue -# 1397| getQualifier(): [VariableAccess] x459 -# 1397| Type = [Struct] String -# 1397| ValueCategory = lvalue -# 1397| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1397| Conversion = [BoolConversion] conversion to bool -# 1397| Type = [BoolType] bool -# 1397| Value = [CStyleCast] 0 -# 1397| ValueCategory = prvalue -# 1398| getStmt(460): [DoStmt] do (...) ... -# 1400| getCondition(): [Literal] 0 -# 1400| Type = [IntType] int -# 1400| Value = [Literal] 0 -# 1400| ValueCategory = prvalue -# 1398| getStmt(): [BlockStmt] { ... } -# 1399| getStmt(0): [DeclStmt] declaration -# 1399| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x460 -# 1399| Type = [Struct] String -# 1399| getVariable().getInitializer(): [Initializer] initializer for x460 -# 1399| getExpr(): [ConstructorCall] call to String -# 1399| Type = [VoidType] void -# 1399| ValueCategory = prvalue -# 1400| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1400| Type = [VoidType] void -# 1400| ValueCategory = prvalue -# 1400| getQualifier(): [VariableAccess] x460 -# 1400| Type = [Struct] String -# 1400| ValueCategory = lvalue -# 1400| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1400| Conversion = [BoolConversion] conversion to bool -# 1400| Type = [BoolType] bool -# 1400| Value = [CStyleCast] 0 -# 1400| ValueCategory = prvalue -# 1401| getStmt(461): [DoStmt] do (...) ... -# 1403| getCondition(): [Literal] 0 -# 1403| Type = [IntType] int -# 1403| Value = [Literal] 0 -# 1403| ValueCategory = prvalue -# 1401| getStmt(): [BlockStmt] { ... } -# 1402| getStmt(0): [DeclStmt] declaration -# 1402| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x461 -# 1402| Type = [Struct] String -# 1402| getVariable().getInitializer(): [Initializer] initializer for x461 -# 1402| getExpr(): [ConstructorCall] call to String -# 1402| Type = [VoidType] void -# 1402| ValueCategory = prvalue -# 1403| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1403| Type = [VoidType] void -# 1403| ValueCategory = prvalue -# 1403| getQualifier(): [VariableAccess] x461 -# 1403| Type = [Struct] String -# 1403| ValueCategory = lvalue -# 1403| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1403| Conversion = [BoolConversion] conversion to bool -# 1403| Type = [BoolType] bool -# 1403| Value = [CStyleCast] 0 -# 1403| ValueCategory = prvalue -# 1404| getStmt(462): [DoStmt] do (...) ... -# 1406| getCondition(): [Literal] 0 -# 1406| Type = [IntType] int -# 1406| Value = [Literal] 0 -# 1406| ValueCategory = prvalue -# 1404| getStmt(): [BlockStmt] { ... } -# 1405| getStmt(0): [DeclStmt] declaration -# 1405| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x462 -# 1405| Type = [Struct] String -# 1405| getVariable().getInitializer(): [Initializer] initializer for x462 -# 1405| getExpr(): [ConstructorCall] call to String -# 1405| Type = [VoidType] void -# 1405| ValueCategory = prvalue -# 1406| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1406| Type = [VoidType] void -# 1406| ValueCategory = prvalue -# 1406| getQualifier(): [VariableAccess] x462 -# 1406| Type = [Struct] String -# 1406| ValueCategory = lvalue -# 1406| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1406| Conversion = [BoolConversion] conversion to bool -# 1406| Type = [BoolType] bool -# 1406| Value = [CStyleCast] 0 -# 1406| ValueCategory = prvalue -# 1407| getStmt(463): [DoStmt] do (...) ... -# 1409| getCondition(): [Literal] 0 -# 1409| Type = [IntType] int -# 1409| Value = [Literal] 0 -# 1409| ValueCategory = prvalue -# 1407| getStmt(): [BlockStmt] { ... } -# 1408| getStmt(0): [DeclStmt] declaration -# 1408| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x463 -# 1408| Type = [Struct] String -# 1408| getVariable().getInitializer(): [Initializer] initializer for x463 -# 1408| getExpr(): [ConstructorCall] call to String -# 1408| Type = [VoidType] void -# 1408| ValueCategory = prvalue -# 1409| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1409| Type = [VoidType] void -# 1409| ValueCategory = prvalue -# 1409| getQualifier(): [VariableAccess] x463 -# 1409| Type = [Struct] String -# 1409| ValueCategory = lvalue -# 1409| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1409| Conversion = [BoolConversion] conversion to bool -# 1409| Type = [BoolType] bool -# 1409| Value = [CStyleCast] 0 -# 1409| ValueCategory = prvalue -# 1410| getStmt(464): [DoStmt] do (...) ... -# 1412| getCondition(): [Literal] 0 -# 1412| Type = [IntType] int -# 1412| Value = [Literal] 0 -# 1412| ValueCategory = prvalue -# 1410| getStmt(): [BlockStmt] { ... } -# 1411| getStmt(0): [DeclStmt] declaration -# 1411| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x464 -# 1411| Type = [Struct] String -# 1411| getVariable().getInitializer(): [Initializer] initializer for x464 -# 1411| getExpr(): [ConstructorCall] call to String -# 1411| Type = [VoidType] void -# 1411| ValueCategory = prvalue -# 1412| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1412| Type = [VoidType] void -# 1412| ValueCategory = prvalue -# 1412| getQualifier(): [VariableAccess] x464 -# 1412| Type = [Struct] String -# 1412| ValueCategory = lvalue -# 1412| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1412| Conversion = [BoolConversion] conversion to bool -# 1412| Type = [BoolType] bool -# 1412| Value = [CStyleCast] 0 -# 1412| ValueCategory = prvalue -# 1413| getStmt(465): [DoStmt] do (...) ... -# 1415| getCondition(): [Literal] 0 -# 1415| Type = [IntType] int -# 1415| Value = [Literal] 0 -# 1415| ValueCategory = prvalue -# 1413| getStmt(): [BlockStmt] { ... } -# 1414| getStmt(0): [DeclStmt] declaration -# 1414| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x465 -# 1414| Type = [Struct] String -# 1414| getVariable().getInitializer(): [Initializer] initializer for x465 -# 1414| getExpr(): [ConstructorCall] call to String -# 1414| Type = [VoidType] void -# 1414| ValueCategory = prvalue -# 1415| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1415| Type = [VoidType] void -# 1415| ValueCategory = prvalue -# 1415| getQualifier(): [VariableAccess] x465 -# 1415| Type = [Struct] String -# 1415| ValueCategory = lvalue -# 1415| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1415| Conversion = [BoolConversion] conversion to bool -# 1415| Type = [BoolType] bool -# 1415| Value = [CStyleCast] 0 -# 1415| ValueCategory = prvalue -# 1416| getStmt(466): [DoStmt] do (...) ... -# 1418| getCondition(): [Literal] 0 -# 1418| Type = [IntType] int -# 1418| Value = [Literal] 0 -# 1418| ValueCategory = prvalue -# 1416| getStmt(): [BlockStmt] { ... } -# 1417| getStmt(0): [DeclStmt] declaration -# 1417| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x466 -# 1417| Type = [Struct] String -# 1417| getVariable().getInitializer(): [Initializer] initializer for x466 -# 1417| getExpr(): [ConstructorCall] call to String -# 1417| Type = [VoidType] void -# 1417| ValueCategory = prvalue -# 1418| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1418| Type = [VoidType] void -# 1418| ValueCategory = prvalue -# 1418| getQualifier(): [VariableAccess] x466 -# 1418| Type = [Struct] String -# 1418| ValueCategory = lvalue -# 1418| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1418| Conversion = [BoolConversion] conversion to bool -# 1418| Type = [BoolType] bool -# 1418| Value = [CStyleCast] 0 -# 1418| ValueCategory = prvalue -# 1419| getStmt(467): [DoStmt] do (...) ... -# 1421| getCondition(): [Literal] 0 -# 1421| Type = [IntType] int -# 1421| Value = [Literal] 0 -# 1421| ValueCategory = prvalue -# 1419| getStmt(): [BlockStmt] { ... } -# 1420| getStmt(0): [DeclStmt] declaration -# 1420| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x467 -# 1420| Type = [Struct] String -# 1420| getVariable().getInitializer(): [Initializer] initializer for x467 -# 1420| getExpr(): [ConstructorCall] call to String -# 1420| Type = [VoidType] void -# 1420| ValueCategory = prvalue -# 1421| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1421| Type = [VoidType] void -# 1421| ValueCategory = prvalue -# 1421| getQualifier(): [VariableAccess] x467 -# 1421| Type = [Struct] String -# 1421| ValueCategory = lvalue -# 1421| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1421| Conversion = [BoolConversion] conversion to bool -# 1421| Type = [BoolType] bool -# 1421| Value = [CStyleCast] 0 -# 1421| ValueCategory = prvalue -# 1422| getStmt(468): [DoStmt] do (...) ... -# 1424| getCondition(): [Literal] 0 -# 1424| Type = [IntType] int -# 1424| Value = [Literal] 0 -# 1424| ValueCategory = prvalue -# 1422| getStmt(): [BlockStmt] { ... } -# 1423| getStmt(0): [DeclStmt] declaration -# 1423| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x468 -# 1423| Type = [Struct] String -# 1423| getVariable().getInitializer(): [Initializer] initializer for x468 -# 1423| getExpr(): [ConstructorCall] call to String -# 1423| Type = [VoidType] void -# 1423| ValueCategory = prvalue -# 1424| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1424| Type = [VoidType] void -# 1424| ValueCategory = prvalue -# 1424| getQualifier(): [VariableAccess] x468 -# 1424| Type = [Struct] String -# 1424| ValueCategory = lvalue -# 1424| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1424| Conversion = [BoolConversion] conversion to bool -# 1424| Type = [BoolType] bool -# 1424| Value = [CStyleCast] 0 -# 1424| ValueCategory = prvalue -# 1425| getStmt(469): [DoStmt] do (...) ... -# 1427| getCondition(): [Literal] 0 -# 1427| Type = [IntType] int -# 1427| Value = [Literal] 0 -# 1427| ValueCategory = prvalue -# 1425| getStmt(): [BlockStmt] { ... } -# 1426| getStmt(0): [DeclStmt] declaration -# 1426| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x469 -# 1426| Type = [Struct] String -# 1426| getVariable().getInitializer(): [Initializer] initializer for x469 -# 1426| getExpr(): [ConstructorCall] call to String -# 1426| Type = [VoidType] void -# 1426| ValueCategory = prvalue -# 1427| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1427| Type = [VoidType] void -# 1427| ValueCategory = prvalue -# 1427| getQualifier(): [VariableAccess] x469 -# 1427| Type = [Struct] String -# 1427| ValueCategory = lvalue -# 1427| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1427| Conversion = [BoolConversion] conversion to bool -# 1427| Type = [BoolType] bool -# 1427| Value = [CStyleCast] 0 -# 1427| ValueCategory = prvalue -# 1428| getStmt(470): [DoStmt] do (...) ... -# 1430| getCondition(): [Literal] 0 -# 1430| Type = [IntType] int -# 1430| Value = [Literal] 0 -# 1430| ValueCategory = prvalue -# 1428| getStmt(): [BlockStmt] { ... } -# 1429| getStmt(0): [DeclStmt] declaration -# 1429| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x470 -# 1429| Type = [Struct] String -# 1429| getVariable().getInitializer(): [Initializer] initializer for x470 -# 1429| getExpr(): [ConstructorCall] call to String -# 1429| Type = [VoidType] void -# 1429| ValueCategory = prvalue -# 1430| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1430| Type = [VoidType] void -# 1430| ValueCategory = prvalue -# 1430| getQualifier(): [VariableAccess] x470 -# 1430| Type = [Struct] String -# 1430| ValueCategory = lvalue -# 1430| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1430| Conversion = [BoolConversion] conversion to bool -# 1430| Type = [BoolType] bool -# 1430| Value = [CStyleCast] 0 -# 1430| ValueCategory = prvalue -# 1431| getStmt(471): [DoStmt] do (...) ... -# 1433| getCondition(): [Literal] 0 -# 1433| Type = [IntType] int -# 1433| Value = [Literal] 0 -# 1433| ValueCategory = prvalue -# 1431| getStmt(): [BlockStmt] { ... } -# 1432| getStmt(0): [DeclStmt] declaration -# 1432| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x471 -# 1432| Type = [Struct] String -# 1432| getVariable().getInitializer(): [Initializer] initializer for x471 -# 1432| getExpr(): [ConstructorCall] call to String -# 1432| Type = [VoidType] void -# 1432| ValueCategory = prvalue -# 1433| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1433| Type = [VoidType] void -# 1433| ValueCategory = prvalue -# 1433| getQualifier(): [VariableAccess] x471 -# 1433| Type = [Struct] String -# 1433| ValueCategory = lvalue -# 1433| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1433| Conversion = [BoolConversion] conversion to bool -# 1433| Type = [BoolType] bool -# 1433| Value = [CStyleCast] 0 -# 1433| ValueCategory = prvalue -# 1434| getStmt(472): [DoStmt] do (...) ... -# 1436| getCondition(): [Literal] 0 -# 1436| Type = [IntType] int -# 1436| Value = [Literal] 0 -# 1436| ValueCategory = prvalue -# 1434| getStmt(): [BlockStmt] { ... } -# 1435| getStmt(0): [DeclStmt] declaration -# 1435| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x472 -# 1435| Type = [Struct] String -# 1435| getVariable().getInitializer(): [Initializer] initializer for x472 -# 1435| getExpr(): [ConstructorCall] call to String -# 1435| Type = [VoidType] void -# 1435| ValueCategory = prvalue -# 1436| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1436| Type = [VoidType] void -# 1436| ValueCategory = prvalue -# 1436| getQualifier(): [VariableAccess] x472 -# 1436| Type = [Struct] String -# 1436| ValueCategory = lvalue -# 1436| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1436| Conversion = [BoolConversion] conversion to bool -# 1436| Type = [BoolType] bool -# 1436| Value = [CStyleCast] 0 -# 1436| ValueCategory = prvalue -# 1437| getStmt(473): [DoStmt] do (...) ... -# 1439| getCondition(): [Literal] 0 -# 1439| Type = [IntType] int -# 1439| Value = [Literal] 0 -# 1439| ValueCategory = prvalue -# 1437| getStmt(): [BlockStmt] { ... } -# 1438| getStmt(0): [DeclStmt] declaration -# 1438| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x473 -# 1438| Type = [Struct] String -# 1438| getVariable().getInitializer(): [Initializer] initializer for x473 -# 1438| getExpr(): [ConstructorCall] call to String -# 1438| Type = [VoidType] void -# 1438| ValueCategory = prvalue -# 1439| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1439| Type = [VoidType] void -# 1439| ValueCategory = prvalue -# 1439| getQualifier(): [VariableAccess] x473 -# 1439| Type = [Struct] String -# 1439| ValueCategory = lvalue -# 1439| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1439| Conversion = [BoolConversion] conversion to bool -# 1439| Type = [BoolType] bool -# 1439| Value = [CStyleCast] 0 -# 1439| ValueCategory = prvalue -# 1440| getStmt(474): [DoStmt] do (...) ... -# 1442| getCondition(): [Literal] 0 -# 1442| Type = [IntType] int -# 1442| Value = [Literal] 0 -# 1442| ValueCategory = prvalue -# 1440| getStmt(): [BlockStmt] { ... } -# 1441| getStmt(0): [DeclStmt] declaration -# 1441| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x474 -# 1441| Type = [Struct] String -# 1441| getVariable().getInitializer(): [Initializer] initializer for x474 -# 1441| getExpr(): [ConstructorCall] call to String -# 1441| Type = [VoidType] void -# 1441| ValueCategory = prvalue -# 1442| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1442| Type = [VoidType] void -# 1442| ValueCategory = prvalue -# 1442| getQualifier(): [VariableAccess] x474 -# 1442| Type = [Struct] String -# 1442| ValueCategory = lvalue -# 1442| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1442| Conversion = [BoolConversion] conversion to bool -# 1442| Type = [BoolType] bool -# 1442| Value = [CStyleCast] 0 -# 1442| ValueCategory = prvalue -# 1443| getStmt(475): [DoStmt] do (...) ... -# 1445| getCondition(): [Literal] 0 -# 1445| Type = [IntType] int -# 1445| Value = [Literal] 0 -# 1445| ValueCategory = prvalue -# 1443| getStmt(): [BlockStmt] { ... } -# 1444| getStmt(0): [DeclStmt] declaration -# 1444| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x475 -# 1444| Type = [Struct] String -# 1444| getVariable().getInitializer(): [Initializer] initializer for x475 -# 1444| getExpr(): [ConstructorCall] call to String -# 1444| Type = [VoidType] void -# 1444| ValueCategory = prvalue -# 1445| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1445| Type = [VoidType] void -# 1445| ValueCategory = prvalue -# 1445| getQualifier(): [VariableAccess] x475 -# 1445| Type = [Struct] String -# 1445| ValueCategory = lvalue -# 1445| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1445| Conversion = [BoolConversion] conversion to bool -# 1445| Type = [BoolType] bool -# 1445| Value = [CStyleCast] 0 -# 1445| ValueCategory = prvalue -# 1446| getStmt(476): [DoStmt] do (...) ... -# 1448| getCondition(): [Literal] 0 -# 1448| Type = [IntType] int -# 1448| Value = [Literal] 0 -# 1448| ValueCategory = prvalue -# 1446| getStmt(): [BlockStmt] { ... } -# 1447| getStmt(0): [DeclStmt] declaration -# 1447| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x476 -# 1447| Type = [Struct] String -# 1447| getVariable().getInitializer(): [Initializer] initializer for x476 -# 1447| getExpr(): [ConstructorCall] call to String -# 1447| Type = [VoidType] void -# 1447| ValueCategory = prvalue -# 1448| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1448| Type = [VoidType] void -# 1448| ValueCategory = prvalue -# 1448| getQualifier(): [VariableAccess] x476 -# 1448| Type = [Struct] String -# 1448| ValueCategory = lvalue -# 1448| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1448| Conversion = [BoolConversion] conversion to bool -# 1448| Type = [BoolType] bool -# 1448| Value = [CStyleCast] 0 -# 1448| ValueCategory = prvalue -# 1449| getStmt(477): [DoStmt] do (...) ... -# 1451| getCondition(): [Literal] 0 -# 1451| Type = [IntType] int -# 1451| Value = [Literal] 0 -# 1451| ValueCategory = prvalue -# 1449| getStmt(): [BlockStmt] { ... } -# 1450| getStmt(0): [DeclStmt] declaration -# 1450| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x477 -# 1450| Type = [Struct] String -# 1450| getVariable().getInitializer(): [Initializer] initializer for x477 -# 1450| getExpr(): [ConstructorCall] call to String -# 1450| Type = [VoidType] void -# 1450| ValueCategory = prvalue -# 1451| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1451| Type = [VoidType] void -# 1451| ValueCategory = prvalue -# 1451| getQualifier(): [VariableAccess] x477 -# 1451| Type = [Struct] String -# 1451| ValueCategory = lvalue -# 1451| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1451| Conversion = [BoolConversion] conversion to bool -# 1451| Type = [BoolType] bool -# 1451| Value = [CStyleCast] 0 -# 1451| ValueCategory = prvalue -# 1452| getStmt(478): [DoStmt] do (...) ... -# 1454| getCondition(): [Literal] 0 -# 1454| Type = [IntType] int -# 1454| Value = [Literal] 0 -# 1454| ValueCategory = prvalue -# 1452| getStmt(): [BlockStmt] { ... } -# 1453| getStmt(0): [DeclStmt] declaration -# 1453| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x478 -# 1453| Type = [Struct] String -# 1453| getVariable().getInitializer(): [Initializer] initializer for x478 -# 1453| getExpr(): [ConstructorCall] call to String -# 1453| Type = [VoidType] void -# 1453| ValueCategory = prvalue -# 1454| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1454| Type = [VoidType] void -# 1454| ValueCategory = prvalue -# 1454| getQualifier(): [VariableAccess] x478 -# 1454| Type = [Struct] String -# 1454| ValueCategory = lvalue -# 1454| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1454| Conversion = [BoolConversion] conversion to bool -# 1454| Type = [BoolType] bool -# 1454| Value = [CStyleCast] 0 -# 1454| ValueCategory = prvalue -# 1455| getStmt(479): [DoStmt] do (...) ... -# 1457| getCondition(): [Literal] 0 -# 1457| Type = [IntType] int -# 1457| Value = [Literal] 0 -# 1457| ValueCategory = prvalue -# 1455| getStmt(): [BlockStmt] { ... } -# 1456| getStmt(0): [DeclStmt] declaration -# 1456| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x479 -# 1456| Type = [Struct] String -# 1456| getVariable().getInitializer(): [Initializer] initializer for x479 -# 1456| getExpr(): [ConstructorCall] call to String -# 1456| Type = [VoidType] void -# 1456| ValueCategory = prvalue -# 1457| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1457| Type = [VoidType] void -# 1457| ValueCategory = prvalue -# 1457| getQualifier(): [VariableAccess] x479 -# 1457| Type = [Struct] String -# 1457| ValueCategory = lvalue -# 1457| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1457| Conversion = [BoolConversion] conversion to bool -# 1457| Type = [BoolType] bool -# 1457| Value = [CStyleCast] 0 -# 1457| ValueCategory = prvalue -# 1458| getStmt(480): [DoStmt] do (...) ... -# 1460| getCondition(): [Literal] 0 -# 1460| Type = [IntType] int -# 1460| Value = [Literal] 0 -# 1460| ValueCategory = prvalue -# 1458| getStmt(): [BlockStmt] { ... } -# 1459| getStmt(0): [DeclStmt] declaration -# 1459| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x480 -# 1459| Type = [Struct] String -# 1459| getVariable().getInitializer(): [Initializer] initializer for x480 -# 1459| getExpr(): [ConstructorCall] call to String -# 1459| Type = [VoidType] void -# 1459| ValueCategory = prvalue -# 1460| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1460| Type = [VoidType] void -# 1460| ValueCategory = prvalue -# 1460| getQualifier(): [VariableAccess] x480 -# 1460| Type = [Struct] String -# 1460| ValueCategory = lvalue -# 1460| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1460| Conversion = [BoolConversion] conversion to bool -# 1460| Type = [BoolType] bool -# 1460| Value = [CStyleCast] 0 -# 1460| ValueCategory = prvalue -# 1461| getStmt(481): [DoStmt] do (...) ... -# 1463| getCondition(): [Literal] 0 -# 1463| Type = [IntType] int -# 1463| Value = [Literal] 0 -# 1463| ValueCategory = prvalue -# 1461| getStmt(): [BlockStmt] { ... } -# 1462| getStmt(0): [DeclStmt] declaration -# 1462| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x481 -# 1462| Type = [Struct] String -# 1462| getVariable().getInitializer(): [Initializer] initializer for x481 -# 1462| getExpr(): [ConstructorCall] call to String -# 1462| Type = [VoidType] void -# 1462| ValueCategory = prvalue -# 1463| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1463| Type = [VoidType] void -# 1463| ValueCategory = prvalue -# 1463| getQualifier(): [VariableAccess] x481 -# 1463| Type = [Struct] String -# 1463| ValueCategory = lvalue -# 1463| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1463| Conversion = [BoolConversion] conversion to bool -# 1463| Type = [BoolType] bool -# 1463| Value = [CStyleCast] 0 -# 1463| ValueCategory = prvalue -# 1464| getStmt(482): [DoStmt] do (...) ... -# 1466| getCondition(): [Literal] 0 -# 1466| Type = [IntType] int -# 1466| Value = [Literal] 0 -# 1466| ValueCategory = prvalue -# 1464| getStmt(): [BlockStmt] { ... } -# 1465| getStmt(0): [DeclStmt] declaration -# 1465| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x482 -# 1465| Type = [Struct] String -# 1465| getVariable().getInitializer(): [Initializer] initializer for x482 -# 1465| getExpr(): [ConstructorCall] call to String -# 1465| Type = [VoidType] void -# 1465| ValueCategory = prvalue -# 1466| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1466| Type = [VoidType] void -# 1466| ValueCategory = prvalue -# 1466| getQualifier(): [VariableAccess] x482 -# 1466| Type = [Struct] String -# 1466| ValueCategory = lvalue -# 1466| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1466| Conversion = [BoolConversion] conversion to bool -# 1466| Type = [BoolType] bool -# 1466| Value = [CStyleCast] 0 -# 1466| ValueCategory = prvalue -# 1467| getStmt(483): [DoStmt] do (...) ... -# 1469| getCondition(): [Literal] 0 -# 1469| Type = [IntType] int -# 1469| Value = [Literal] 0 -# 1469| ValueCategory = prvalue -# 1467| getStmt(): [BlockStmt] { ... } -# 1468| getStmt(0): [DeclStmt] declaration -# 1468| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x483 -# 1468| Type = [Struct] String -# 1468| getVariable().getInitializer(): [Initializer] initializer for x483 -# 1468| getExpr(): [ConstructorCall] call to String -# 1468| Type = [VoidType] void -# 1468| ValueCategory = prvalue -# 1469| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1469| Type = [VoidType] void -# 1469| ValueCategory = prvalue -# 1469| getQualifier(): [VariableAccess] x483 -# 1469| Type = [Struct] String -# 1469| ValueCategory = lvalue -# 1469| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1469| Conversion = [BoolConversion] conversion to bool -# 1469| Type = [BoolType] bool -# 1469| Value = [CStyleCast] 0 -# 1469| ValueCategory = prvalue -# 1470| getStmt(484): [DoStmt] do (...) ... -# 1472| getCondition(): [Literal] 0 -# 1472| Type = [IntType] int -# 1472| Value = [Literal] 0 -# 1472| ValueCategory = prvalue -# 1470| getStmt(): [BlockStmt] { ... } -# 1471| getStmt(0): [DeclStmt] declaration -# 1471| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x484 -# 1471| Type = [Struct] String -# 1471| getVariable().getInitializer(): [Initializer] initializer for x484 -# 1471| getExpr(): [ConstructorCall] call to String -# 1471| Type = [VoidType] void -# 1471| ValueCategory = prvalue -# 1472| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1472| Type = [VoidType] void -# 1472| ValueCategory = prvalue -# 1472| getQualifier(): [VariableAccess] x484 -# 1472| Type = [Struct] String -# 1472| ValueCategory = lvalue -# 1472| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1472| Conversion = [BoolConversion] conversion to bool -# 1472| Type = [BoolType] bool -# 1472| Value = [CStyleCast] 0 -# 1472| ValueCategory = prvalue -# 1473| getStmt(485): [DoStmt] do (...) ... -# 1475| getCondition(): [Literal] 0 -# 1475| Type = [IntType] int -# 1475| Value = [Literal] 0 -# 1475| ValueCategory = prvalue -# 1473| getStmt(): [BlockStmt] { ... } -# 1474| getStmt(0): [DeclStmt] declaration -# 1474| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x485 -# 1474| Type = [Struct] String -# 1474| getVariable().getInitializer(): [Initializer] initializer for x485 -# 1474| getExpr(): [ConstructorCall] call to String -# 1474| Type = [VoidType] void -# 1474| ValueCategory = prvalue -# 1475| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1475| Type = [VoidType] void -# 1475| ValueCategory = prvalue -# 1475| getQualifier(): [VariableAccess] x485 -# 1475| Type = [Struct] String -# 1475| ValueCategory = lvalue -# 1475| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1475| Conversion = [BoolConversion] conversion to bool -# 1475| Type = [BoolType] bool -# 1475| Value = [CStyleCast] 0 -# 1475| ValueCategory = prvalue -# 1476| getStmt(486): [DoStmt] do (...) ... -# 1478| getCondition(): [Literal] 0 -# 1478| Type = [IntType] int -# 1478| Value = [Literal] 0 -# 1478| ValueCategory = prvalue -# 1476| getStmt(): [BlockStmt] { ... } -# 1477| getStmt(0): [DeclStmt] declaration -# 1477| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x486 -# 1477| Type = [Struct] String -# 1477| getVariable().getInitializer(): [Initializer] initializer for x486 -# 1477| getExpr(): [ConstructorCall] call to String -# 1477| Type = [VoidType] void -# 1477| ValueCategory = prvalue -# 1478| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1478| Type = [VoidType] void -# 1478| ValueCategory = prvalue -# 1478| getQualifier(): [VariableAccess] x486 -# 1478| Type = [Struct] String -# 1478| ValueCategory = lvalue -# 1478| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1478| Conversion = [BoolConversion] conversion to bool -# 1478| Type = [BoolType] bool -# 1478| Value = [CStyleCast] 0 -# 1478| ValueCategory = prvalue -# 1479| getStmt(487): [DoStmt] do (...) ... -# 1481| getCondition(): [Literal] 0 -# 1481| Type = [IntType] int -# 1481| Value = [Literal] 0 -# 1481| ValueCategory = prvalue -# 1479| getStmt(): [BlockStmt] { ... } -# 1480| getStmt(0): [DeclStmt] declaration -# 1480| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x487 -# 1480| Type = [Struct] String -# 1480| getVariable().getInitializer(): [Initializer] initializer for x487 -# 1480| getExpr(): [ConstructorCall] call to String -# 1480| Type = [VoidType] void -# 1480| ValueCategory = prvalue -# 1481| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1481| Type = [VoidType] void -# 1481| ValueCategory = prvalue -# 1481| getQualifier(): [VariableAccess] x487 -# 1481| Type = [Struct] String -# 1481| ValueCategory = lvalue -# 1481| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1481| Conversion = [BoolConversion] conversion to bool -# 1481| Type = [BoolType] bool -# 1481| Value = [CStyleCast] 0 -# 1481| ValueCategory = prvalue -# 1482| getStmt(488): [DoStmt] do (...) ... -# 1484| getCondition(): [Literal] 0 -# 1484| Type = [IntType] int -# 1484| Value = [Literal] 0 -# 1484| ValueCategory = prvalue -# 1482| getStmt(): [BlockStmt] { ... } -# 1483| getStmt(0): [DeclStmt] declaration -# 1483| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x488 -# 1483| Type = [Struct] String -# 1483| getVariable().getInitializer(): [Initializer] initializer for x488 -# 1483| getExpr(): [ConstructorCall] call to String -# 1483| Type = [VoidType] void -# 1483| ValueCategory = prvalue -# 1484| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1484| Type = [VoidType] void -# 1484| ValueCategory = prvalue -# 1484| getQualifier(): [VariableAccess] x488 -# 1484| Type = [Struct] String -# 1484| ValueCategory = lvalue -# 1484| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1484| Conversion = [BoolConversion] conversion to bool -# 1484| Type = [BoolType] bool -# 1484| Value = [CStyleCast] 0 -# 1484| ValueCategory = prvalue -# 1485| getStmt(489): [DoStmt] do (...) ... -# 1487| getCondition(): [Literal] 0 -# 1487| Type = [IntType] int -# 1487| Value = [Literal] 0 -# 1487| ValueCategory = prvalue -# 1485| getStmt(): [BlockStmt] { ... } -# 1486| getStmt(0): [DeclStmt] declaration -# 1486| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x489 -# 1486| Type = [Struct] String -# 1486| getVariable().getInitializer(): [Initializer] initializer for x489 -# 1486| getExpr(): [ConstructorCall] call to String -# 1486| Type = [VoidType] void -# 1486| ValueCategory = prvalue -# 1487| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1487| Type = [VoidType] void -# 1487| ValueCategory = prvalue -# 1487| getQualifier(): [VariableAccess] x489 -# 1487| Type = [Struct] String -# 1487| ValueCategory = lvalue -# 1487| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1487| Conversion = [BoolConversion] conversion to bool -# 1487| Type = [BoolType] bool -# 1487| Value = [CStyleCast] 0 -# 1487| ValueCategory = prvalue -# 1488| getStmt(490): [DoStmt] do (...) ... -# 1490| getCondition(): [Literal] 0 -# 1490| Type = [IntType] int -# 1490| Value = [Literal] 0 -# 1490| ValueCategory = prvalue -# 1488| getStmt(): [BlockStmt] { ... } -# 1489| getStmt(0): [DeclStmt] declaration -# 1489| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x490 -# 1489| Type = [Struct] String -# 1489| getVariable().getInitializer(): [Initializer] initializer for x490 -# 1489| getExpr(): [ConstructorCall] call to String -# 1489| Type = [VoidType] void -# 1489| ValueCategory = prvalue -# 1490| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1490| Type = [VoidType] void -# 1490| ValueCategory = prvalue -# 1490| getQualifier(): [VariableAccess] x490 -# 1490| Type = [Struct] String -# 1490| ValueCategory = lvalue -# 1490| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1490| Conversion = [BoolConversion] conversion to bool -# 1490| Type = [BoolType] bool -# 1490| Value = [CStyleCast] 0 -# 1490| ValueCategory = prvalue -# 1491| getStmt(491): [DoStmt] do (...) ... -# 1493| getCondition(): [Literal] 0 -# 1493| Type = [IntType] int -# 1493| Value = [Literal] 0 -# 1493| ValueCategory = prvalue -# 1491| getStmt(): [BlockStmt] { ... } -# 1492| getStmt(0): [DeclStmt] declaration -# 1492| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x491 -# 1492| Type = [Struct] String -# 1492| getVariable().getInitializer(): [Initializer] initializer for x491 -# 1492| getExpr(): [ConstructorCall] call to String -# 1492| Type = [VoidType] void -# 1492| ValueCategory = prvalue -# 1493| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1493| Type = [VoidType] void -# 1493| ValueCategory = prvalue -# 1493| getQualifier(): [VariableAccess] x491 -# 1493| Type = [Struct] String -# 1493| ValueCategory = lvalue -# 1493| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1493| Conversion = [BoolConversion] conversion to bool -# 1493| Type = [BoolType] bool -# 1493| Value = [CStyleCast] 0 -# 1493| ValueCategory = prvalue -# 1494| getStmt(492): [DoStmt] do (...) ... -# 1496| getCondition(): [Literal] 0 -# 1496| Type = [IntType] int -# 1496| Value = [Literal] 0 -# 1496| ValueCategory = prvalue -# 1494| getStmt(): [BlockStmt] { ... } -# 1495| getStmt(0): [DeclStmt] declaration -# 1495| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x492 -# 1495| Type = [Struct] String -# 1495| getVariable().getInitializer(): [Initializer] initializer for x492 -# 1495| getExpr(): [ConstructorCall] call to String -# 1495| Type = [VoidType] void -# 1495| ValueCategory = prvalue -# 1496| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1496| Type = [VoidType] void -# 1496| ValueCategory = prvalue -# 1496| getQualifier(): [VariableAccess] x492 -# 1496| Type = [Struct] String -# 1496| ValueCategory = lvalue -# 1496| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1496| Conversion = [BoolConversion] conversion to bool -# 1496| Type = [BoolType] bool -# 1496| Value = [CStyleCast] 0 -# 1496| ValueCategory = prvalue -# 1497| getStmt(493): [DoStmt] do (...) ... -# 1499| getCondition(): [Literal] 0 -# 1499| Type = [IntType] int -# 1499| Value = [Literal] 0 -# 1499| ValueCategory = prvalue -# 1497| getStmt(): [BlockStmt] { ... } -# 1498| getStmt(0): [DeclStmt] declaration -# 1498| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x493 -# 1498| Type = [Struct] String -# 1498| getVariable().getInitializer(): [Initializer] initializer for x493 -# 1498| getExpr(): [ConstructorCall] call to String -# 1498| Type = [VoidType] void -# 1498| ValueCategory = prvalue -# 1499| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1499| Type = [VoidType] void -# 1499| ValueCategory = prvalue -# 1499| getQualifier(): [VariableAccess] x493 -# 1499| Type = [Struct] String -# 1499| ValueCategory = lvalue -# 1499| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1499| Conversion = [BoolConversion] conversion to bool -# 1499| Type = [BoolType] bool -# 1499| Value = [CStyleCast] 0 -# 1499| ValueCategory = prvalue -# 1500| getStmt(494): [DoStmt] do (...) ... -# 1502| getCondition(): [Literal] 0 -# 1502| Type = [IntType] int -# 1502| Value = [Literal] 0 -# 1502| ValueCategory = prvalue -# 1500| getStmt(): [BlockStmt] { ... } -# 1501| getStmt(0): [DeclStmt] declaration -# 1501| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x494 -# 1501| Type = [Struct] String -# 1501| getVariable().getInitializer(): [Initializer] initializer for x494 -# 1501| getExpr(): [ConstructorCall] call to String -# 1501| Type = [VoidType] void -# 1501| ValueCategory = prvalue -# 1502| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1502| Type = [VoidType] void -# 1502| ValueCategory = prvalue -# 1502| getQualifier(): [VariableAccess] x494 -# 1502| Type = [Struct] String -# 1502| ValueCategory = lvalue -# 1502| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1502| Conversion = [BoolConversion] conversion to bool -# 1502| Type = [BoolType] bool -# 1502| Value = [CStyleCast] 0 -# 1502| ValueCategory = prvalue -# 1503| getStmt(495): [DoStmt] do (...) ... -# 1505| getCondition(): [Literal] 0 -# 1505| Type = [IntType] int -# 1505| Value = [Literal] 0 -# 1505| ValueCategory = prvalue -# 1503| getStmt(): [BlockStmt] { ... } -# 1504| getStmt(0): [DeclStmt] declaration -# 1504| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x495 -# 1504| Type = [Struct] String -# 1504| getVariable().getInitializer(): [Initializer] initializer for x495 -# 1504| getExpr(): [ConstructorCall] call to String -# 1504| Type = [VoidType] void -# 1504| ValueCategory = prvalue -# 1505| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1505| Type = [VoidType] void -# 1505| ValueCategory = prvalue -# 1505| getQualifier(): [VariableAccess] x495 -# 1505| Type = [Struct] String -# 1505| ValueCategory = lvalue -# 1505| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1505| Conversion = [BoolConversion] conversion to bool -# 1505| Type = [BoolType] bool -# 1505| Value = [CStyleCast] 0 -# 1505| ValueCategory = prvalue -# 1506| getStmt(496): [DoStmt] do (...) ... -# 1508| getCondition(): [Literal] 0 -# 1508| Type = [IntType] int -# 1508| Value = [Literal] 0 -# 1508| ValueCategory = prvalue -# 1506| getStmt(): [BlockStmt] { ... } -# 1507| getStmt(0): [DeclStmt] declaration -# 1507| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x496 -# 1507| Type = [Struct] String -# 1507| getVariable().getInitializer(): [Initializer] initializer for x496 -# 1507| getExpr(): [ConstructorCall] call to String -# 1507| Type = [VoidType] void -# 1507| ValueCategory = prvalue -# 1508| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1508| Type = [VoidType] void -# 1508| ValueCategory = prvalue -# 1508| getQualifier(): [VariableAccess] x496 -# 1508| Type = [Struct] String -# 1508| ValueCategory = lvalue -# 1508| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1508| Conversion = [BoolConversion] conversion to bool -# 1508| Type = [BoolType] bool -# 1508| Value = [CStyleCast] 0 -# 1508| ValueCategory = prvalue -# 1509| getStmt(497): [DoStmt] do (...) ... -# 1511| getCondition(): [Literal] 0 -# 1511| Type = [IntType] int -# 1511| Value = [Literal] 0 -# 1511| ValueCategory = prvalue -# 1509| getStmt(): [BlockStmt] { ... } -# 1510| getStmt(0): [DeclStmt] declaration -# 1510| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x497 -# 1510| Type = [Struct] String -# 1510| getVariable().getInitializer(): [Initializer] initializer for x497 -# 1510| getExpr(): [ConstructorCall] call to String -# 1510| Type = [VoidType] void -# 1510| ValueCategory = prvalue -# 1511| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1511| Type = [VoidType] void -# 1511| ValueCategory = prvalue -# 1511| getQualifier(): [VariableAccess] x497 -# 1511| Type = [Struct] String -# 1511| ValueCategory = lvalue -# 1511| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1511| Conversion = [BoolConversion] conversion to bool -# 1511| Type = [BoolType] bool -# 1511| Value = [CStyleCast] 0 -# 1511| ValueCategory = prvalue -# 1512| getStmt(498): [DoStmt] do (...) ... -# 1514| getCondition(): [Literal] 0 -# 1514| Type = [IntType] int -# 1514| Value = [Literal] 0 -# 1514| ValueCategory = prvalue -# 1512| getStmt(): [BlockStmt] { ... } -# 1513| getStmt(0): [DeclStmt] declaration -# 1513| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x498 -# 1513| Type = [Struct] String -# 1513| getVariable().getInitializer(): [Initializer] initializer for x498 -# 1513| getExpr(): [ConstructorCall] call to String -# 1513| Type = [VoidType] void -# 1513| ValueCategory = prvalue -# 1514| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1514| Type = [VoidType] void -# 1514| ValueCategory = prvalue -# 1514| getQualifier(): [VariableAccess] x498 -# 1514| Type = [Struct] String -# 1514| ValueCategory = lvalue -# 1514| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1514| Conversion = [BoolConversion] conversion to bool -# 1514| Type = [BoolType] bool -# 1514| Value = [CStyleCast] 0 -# 1514| ValueCategory = prvalue -# 1515| getStmt(499): [DoStmt] do (...) ... -# 1517| getCondition(): [Literal] 0 -# 1517| Type = [IntType] int -# 1517| Value = [Literal] 0 -# 1517| ValueCategory = prvalue -# 1515| getStmt(): [BlockStmt] { ... } -# 1516| getStmt(0): [DeclStmt] declaration -# 1516| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x499 -# 1516| Type = [Struct] String -# 1516| getVariable().getInitializer(): [Initializer] initializer for x499 -# 1516| getExpr(): [ConstructorCall] call to String -# 1516| Type = [VoidType] void -# 1516| ValueCategory = prvalue -# 1517| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1517| Type = [VoidType] void -# 1517| ValueCategory = prvalue -# 1517| getQualifier(): [VariableAccess] x499 -# 1517| Type = [Struct] String -# 1517| ValueCategory = lvalue -# 1517| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1517| Conversion = [BoolConversion] conversion to bool -# 1517| Type = [BoolType] bool -# 1517| Value = [CStyleCast] 0 -# 1517| ValueCategory = prvalue -# 1518| getStmt(500): [DoStmt] do (...) ... -# 1520| getCondition(): [Literal] 0 -# 1520| Type = [IntType] int -# 1520| Value = [Literal] 0 -# 1520| ValueCategory = prvalue -# 1518| getStmt(): [BlockStmt] { ... } -# 1519| getStmt(0): [DeclStmt] declaration -# 1519| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x500 -# 1519| Type = [Struct] String -# 1519| getVariable().getInitializer(): [Initializer] initializer for x500 -# 1519| getExpr(): [ConstructorCall] call to String -# 1519| Type = [VoidType] void -# 1519| ValueCategory = prvalue -# 1520| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1520| Type = [VoidType] void -# 1520| ValueCategory = prvalue -# 1520| getQualifier(): [VariableAccess] x500 -# 1520| Type = [Struct] String -# 1520| ValueCategory = lvalue -# 1520| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1520| Conversion = [BoolConversion] conversion to bool -# 1520| Type = [BoolType] bool -# 1520| Value = [CStyleCast] 0 -# 1520| ValueCategory = prvalue -# 1521| getStmt(501): [DoStmt] do (...) ... -# 1523| getCondition(): [Literal] 0 -# 1523| Type = [IntType] int -# 1523| Value = [Literal] 0 -# 1523| ValueCategory = prvalue -# 1521| getStmt(): [BlockStmt] { ... } -# 1522| getStmt(0): [DeclStmt] declaration -# 1522| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x501 -# 1522| Type = [Struct] String -# 1522| getVariable().getInitializer(): [Initializer] initializer for x501 -# 1522| getExpr(): [ConstructorCall] call to String -# 1522| Type = [VoidType] void -# 1522| ValueCategory = prvalue -# 1523| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1523| Type = [VoidType] void -# 1523| ValueCategory = prvalue -# 1523| getQualifier(): [VariableAccess] x501 -# 1523| Type = [Struct] String -# 1523| ValueCategory = lvalue -# 1523| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1523| Conversion = [BoolConversion] conversion to bool -# 1523| Type = [BoolType] bool -# 1523| Value = [CStyleCast] 0 -# 1523| ValueCategory = prvalue -# 1524| getStmt(502): [DoStmt] do (...) ... -# 1526| getCondition(): [Literal] 0 -# 1526| Type = [IntType] int -# 1526| Value = [Literal] 0 -# 1526| ValueCategory = prvalue -# 1524| getStmt(): [BlockStmt] { ... } -# 1525| getStmt(0): [DeclStmt] declaration -# 1525| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x502 -# 1525| Type = [Struct] String -# 1525| getVariable().getInitializer(): [Initializer] initializer for x502 -# 1525| getExpr(): [ConstructorCall] call to String -# 1525| Type = [VoidType] void -# 1525| ValueCategory = prvalue -# 1526| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1526| Type = [VoidType] void -# 1526| ValueCategory = prvalue -# 1526| getQualifier(): [VariableAccess] x502 -# 1526| Type = [Struct] String -# 1526| ValueCategory = lvalue -# 1526| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1526| Conversion = [BoolConversion] conversion to bool -# 1526| Type = [BoolType] bool -# 1526| Value = [CStyleCast] 0 -# 1526| ValueCategory = prvalue -# 1527| getStmt(503): [DoStmt] do (...) ... -# 1529| getCondition(): [Literal] 0 -# 1529| Type = [IntType] int -# 1529| Value = [Literal] 0 -# 1529| ValueCategory = prvalue -# 1527| getStmt(): [BlockStmt] { ... } -# 1528| getStmt(0): [DeclStmt] declaration -# 1528| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x503 -# 1528| Type = [Struct] String -# 1528| getVariable().getInitializer(): [Initializer] initializer for x503 -# 1528| getExpr(): [ConstructorCall] call to String -# 1528| Type = [VoidType] void -# 1528| ValueCategory = prvalue -# 1529| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1529| Type = [VoidType] void -# 1529| ValueCategory = prvalue -# 1529| getQualifier(): [VariableAccess] x503 -# 1529| Type = [Struct] String -# 1529| ValueCategory = lvalue -# 1529| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1529| Conversion = [BoolConversion] conversion to bool -# 1529| Type = [BoolType] bool -# 1529| Value = [CStyleCast] 0 -# 1529| ValueCategory = prvalue -# 1530| getStmt(504): [DoStmt] do (...) ... -# 1532| getCondition(): [Literal] 0 -# 1532| Type = [IntType] int -# 1532| Value = [Literal] 0 -# 1532| ValueCategory = prvalue -# 1530| getStmt(): [BlockStmt] { ... } -# 1531| getStmt(0): [DeclStmt] declaration -# 1531| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x504 -# 1531| Type = [Struct] String -# 1531| getVariable().getInitializer(): [Initializer] initializer for x504 -# 1531| getExpr(): [ConstructorCall] call to String -# 1531| Type = [VoidType] void -# 1531| ValueCategory = prvalue -# 1532| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1532| Type = [VoidType] void -# 1532| ValueCategory = prvalue -# 1532| getQualifier(): [VariableAccess] x504 -# 1532| Type = [Struct] String -# 1532| ValueCategory = lvalue -# 1532| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1532| Conversion = [BoolConversion] conversion to bool -# 1532| Type = [BoolType] bool -# 1532| Value = [CStyleCast] 0 -# 1532| ValueCategory = prvalue -# 1533| getStmt(505): [DoStmt] do (...) ... -# 1535| getCondition(): [Literal] 0 -# 1535| Type = [IntType] int -# 1535| Value = [Literal] 0 -# 1535| ValueCategory = prvalue -# 1533| getStmt(): [BlockStmt] { ... } -# 1534| getStmt(0): [DeclStmt] declaration -# 1534| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x505 -# 1534| Type = [Struct] String -# 1534| getVariable().getInitializer(): [Initializer] initializer for x505 -# 1534| getExpr(): [ConstructorCall] call to String -# 1534| Type = [VoidType] void -# 1534| ValueCategory = prvalue -# 1535| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1535| Type = [VoidType] void -# 1535| ValueCategory = prvalue -# 1535| getQualifier(): [VariableAccess] x505 -# 1535| Type = [Struct] String -# 1535| ValueCategory = lvalue -# 1535| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1535| Conversion = [BoolConversion] conversion to bool -# 1535| Type = [BoolType] bool -# 1535| Value = [CStyleCast] 0 -# 1535| ValueCategory = prvalue -# 1536| getStmt(506): [DoStmt] do (...) ... -# 1538| getCondition(): [Literal] 0 -# 1538| Type = [IntType] int -# 1538| Value = [Literal] 0 -# 1538| ValueCategory = prvalue -# 1536| getStmt(): [BlockStmt] { ... } -# 1537| getStmt(0): [DeclStmt] declaration -# 1537| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x506 -# 1537| Type = [Struct] String -# 1537| getVariable().getInitializer(): [Initializer] initializer for x506 -# 1537| getExpr(): [ConstructorCall] call to String -# 1537| Type = [VoidType] void -# 1537| ValueCategory = prvalue -# 1538| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1538| Type = [VoidType] void -# 1538| ValueCategory = prvalue -# 1538| getQualifier(): [VariableAccess] x506 -# 1538| Type = [Struct] String -# 1538| ValueCategory = lvalue -# 1538| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1538| Conversion = [BoolConversion] conversion to bool -# 1538| Type = [BoolType] bool -# 1538| Value = [CStyleCast] 0 -# 1538| ValueCategory = prvalue -# 1539| getStmt(507): [DoStmt] do (...) ... -# 1541| getCondition(): [Literal] 0 -# 1541| Type = [IntType] int -# 1541| Value = [Literal] 0 -# 1541| ValueCategory = prvalue -# 1539| getStmt(): [BlockStmt] { ... } -# 1540| getStmt(0): [DeclStmt] declaration -# 1540| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x507 -# 1540| Type = [Struct] String -# 1540| getVariable().getInitializer(): [Initializer] initializer for x507 -# 1540| getExpr(): [ConstructorCall] call to String -# 1540| Type = [VoidType] void -# 1540| ValueCategory = prvalue -# 1541| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1541| Type = [VoidType] void -# 1541| ValueCategory = prvalue -# 1541| getQualifier(): [VariableAccess] x507 -# 1541| Type = [Struct] String -# 1541| ValueCategory = lvalue -# 1541| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1541| Conversion = [BoolConversion] conversion to bool -# 1541| Type = [BoolType] bool -# 1541| Value = [CStyleCast] 0 -# 1541| ValueCategory = prvalue -# 1542| getStmt(508): [DoStmt] do (...) ... -# 1544| getCondition(): [Literal] 0 -# 1544| Type = [IntType] int -# 1544| Value = [Literal] 0 -# 1544| ValueCategory = prvalue -# 1542| getStmt(): [BlockStmt] { ... } -# 1543| getStmt(0): [DeclStmt] declaration -# 1543| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x508 -# 1543| Type = [Struct] String -# 1543| getVariable().getInitializer(): [Initializer] initializer for x508 -# 1543| getExpr(): [ConstructorCall] call to String -# 1543| Type = [VoidType] void -# 1543| ValueCategory = prvalue -# 1544| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1544| Type = [VoidType] void -# 1544| ValueCategory = prvalue -# 1544| getQualifier(): [VariableAccess] x508 -# 1544| Type = [Struct] String -# 1544| ValueCategory = lvalue -# 1544| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1544| Conversion = [BoolConversion] conversion to bool -# 1544| Type = [BoolType] bool -# 1544| Value = [CStyleCast] 0 -# 1544| ValueCategory = prvalue -# 1545| getStmt(509): [DoStmt] do (...) ... -# 1547| getCondition(): [Literal] 0 -# 1547| Type = [IntType] int -# 1547| Value = [Literal] 0 -# 1547| ValueCategory = prvalue -# 1545| getStmt(): [BlockStmt] { ... } -# 1546| getStmt(0): [DeclStmt] declaration -# 1546| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x509 -# 1546| Type = [Struct] String -# 1546| getVariable().getInitializer(): [Initializer] initializer for x509 -# 1546| getExpr(): [ConstructorCall] call to String -# 1546| Type = [VoidType] void -# 1546| ValueCategory = prvalue -# 1547| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1547| Type = [VoidType] void -# 1547| ValueCategory = prvalue -# 1547| getQualifier(): [VariableAccess] x509 -# 1547| Type = [Struct] String -# 1547| ValueCategory = lvalue -# 1547| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1547| Conversion = [BoolConversion] conversion to bool -# 1547| Type = [BoolType] bool -# 1547| Value = [CStyleCast] 0 -# 1547| ValueCategory = prvalue -# 1548| getStmt(510): [DoStmt] do (...) ... -# 1550| getCondition(): [Literal] 0 -# 1550| Type = [IntType] int -# 1550| Value = [Literal] 0 -# 1550| ValueCategory = prvalue -# 1548| getStmt(): [BlockStmt] { ... } -# 1549| getStmt(0): [DeclStmt] declaration -# 1549| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x510 -# 1549| Type = [Struct] String -# 1549| getVariable().getInitializer(): [Initializer] initializer for x510 -# 1549| getExpr(): [ConstructorCall] call to String -# 1549| Type = [VoidType] void -# 1549| ValueCategory = prvalue -# 1550| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1550| Type = [VoidType] void -# 1550| ValueCategory = prvalue -# 1550| getQualifier(): [VariableAccess] x510 -# 1550| Type = [Struct] String -# 1550| ValueCategory = lvalue -# 1550| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1550| Conversion = [BoolConversion] conversion to bool -# 1550| Type = [BoolType] bool -# 1550| Value = [CStyleCast] 0 -# 1550| ValueCategory = prvalue -# 1551| getStmt(511): [DoStmt] do (...) ... -# 1553| getCondition(): [Literal] 0 -# 1553| Type = [IntType] int -# 1553| Value = [Literal] 0 -# 1553| ValueCategory = prvalue -# 1551| getStmt(): [BlockStmt] { ... } -# 1552| getStmt(0): [DeclStmt] declaration -# 1552| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x511 -# 1552| Type = [Struct] String -# 1552| getVariable().getInitializer(): [Initializer] initializer for x511 -# 1552| getExpr(): [ConstructorCall] call to String -# 1552| Type = [VoidType] void -# 1552| ValueCategory = prvalue -# 1553| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1553| Type = [VoidType] void -# 1553| ValueCategory = prvalue -# 1553| getQualifier(): [VariableAccess] x511 -# 1553| Type = [Struct] String -# 1553| ValueCategory = lvalue -# 1553| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1553| Conversion = [BoolConversion] conversion to bool -# 1553| Type = [BoolType] bool -# 1553| Value = [CStyleCast] 0 -# 1553| ValueCategory = prvalue -# 1554| getStmt(512): [DoStmt] do (...) ... -# 1556| getCondition(): [Literal] 0 -# 1556| Type = [IntType] int -# 1556| Value = [Literal] 0 -# 1556| ValueCategory = prvalue -# 1554| getStmt(): [BlockStmt] { ... } -# 1555| getStmt(0): [DeclStmt] declaration -# 1555| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x512 -# 1555| Type = [Struct] String -# 1555| getVariable().getInitializer(): [Initializer] initializer for x512 -# 1555| getExpr(): [ConstructorCall] call to String -# 1555| Type = [VoidType] void -# 1555| ValueCategory = prvalue -# 1556| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1556| Type = [VoidType] void -# 1556| ValueCategory = prvalue -# 1556| getQualifier(): [VariableAccess] x512 -# 1556| Type = [Struct] String -# 1556| ValueCategory = lvalue -# 1556| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1556| Conversion = [BoolConversion] conversion to bool -# 1556| Type = [BoolType] bool -# 1556| Value = [CStyleCast] 0 -# 1556| ValueCategory = prvalue -# 1557| getStmt(513): [DoStmt] do (...) ... -# 1559| getCondition(): [Literal] 0 -# 1559| Type = [IntType] int -# 1559| Value = [Literal] 0 -# 1559| ValueCategory = prvalue -# 1557| getStmt(): [BlockStmt] { ... } -# 1558| getStmt(0): [DeclStmt] declaration -# 1558| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x513 -# 1558| Type = [Struct] String -# 1558| getVariable().getInitializer(): [Initializer] initializer for x513 -# 1558| getExpr(): [ConstructorCall] call to String -# 1558| Type = [VoidType] void -# 1558| ValueCategory = prvalue -# 1559| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1559| Type = [VoidType] void -# 1559| ValueCategory = prvalue -# 1559| getQualifier(): [VariableAccess] x513 -# 1559| Type = [Struct] String -# 1559| ValueCategory = lvalue -# 1559| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1559| Conversion = [BoolConversion] conversion to bool -# 1559| Type = [BoolType] bool -# 1559| Value = [CStyleCast] 0 -# 1559| ValueCategory = prvalue -# 1560| getStmt(514): [DoStmt] do (...) ... -# 1562| getCondition(): [Literal] 0 -# 1562| Type = [IntType] int -# 1562| Value = [Literal] 0 -# 1562| ValueCategory = prvalue -# 1560| getStmt(): [BlockStmt] { ... } -# 1561| getStmt(0): [DeclStmt] declaration -# 1561| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x514 -# 1561| Type = [Struct] String -# 1561| getVariable().getInitializer(): [Initializer] initializer for x514 -# 1561| getExpr(): [ConstructorCall] call to String -# 1561| Type = [VoidType] void -# 1561| ValueCategory = prvalue -# 1562| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1562| Type = [VoidType] void -# 1562| ValueCategory = prvalue -# 1562| getQualifier(): [VariableAccess] x514 -# 1562| Type = [Struct] String -# 1562| ValueCategory = lvalue -# 1562| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1562| Conversion = [BoolConversion] conversion to bool -# 1562| Type = [BoolType] bool -# 1562| Value = [CStyleCast] 0 -# 1562| ValueCategory = prvalue -# 1563| getStmt(515): [DoStmt] do (...) ... -# 1565| getCondition(): [Literal] 0 -# 1565| Type = [IntType] int -# 1565| Value = [Literal] 0 -# 1565| ValueCategory = prvalue -# 1563| getStmt(): [BlockStmt] { ... } -# 1564| getStmt(0): [DeclStmt] declaration -# 1564| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x515 -# 1564| Type = [Struct] String -# 1564| getVariable().getInitializer(): [Initializer] initializer for x515 -# 1564| getExpr(): [ConstructorCall] call to String -# 1564| Type = [VoidType] void -# 1564| ValueCategory = prvalue -# 1565| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1565| Type = [VoidType] void -# 1565| ValueCategory = prvalue -# 1565| getQualifier(): [VariableAccess] x515 -# 1565| Type = [Struct] String -# 1565| ValueCategory = lvalue -# 1565| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1565| Conversion = [BoolConversion] conversion to bool -# 1565| Type = [BoolType] bool -# 1565| Value = [CStyleCast] 0 -# 1565| ValueCategory = prvalue -# 1566| getStmt(516): [DoStmt] do (...) ... -# 1568| getCondition(): [Literal] 0 -# 1568| Type = [IntType] int -# 1568| Value = [Literal] 0 -# 1568| ValueCategory = prvalue -# 1566| getStmt(): [BlockStmt] { ... } -# 1567| getStmt(0): [DeclStmt] declaration -# 1567| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x516 -# 1567| Type = [Struct] String -# 1567| getVariable().getInitializer(): [Initializer] initializer for x516 -# 1567| getExpr(): [ConstructorCall] call to String -# 1567| Type = [VoidType] void -# 1567| ValueCategory = prvalue -# 1568| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1568| Type = [VoidType] void -# 1568| ValueCategory = prvalue -# 1568| getQualifier(): [VariableAccess] x516 -# 1568| Type = [Struct] String -# 1568| ValueCategory = lvalue -# 1568| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1568| Conversion = [BoolConversion] conversion to bool -# 1568| Type = [BoolType] bool -# 1568| Value = [CStyleCast] 0 -# 1568| ValueCategory = prvalue -# 1569| getStmt(517): [DoStmt] do (...) ... -# 1571| getCondition(): [Literal] 0 -# 1571| Type = [IntType] int -# 1571| Value = [Literal] 0 -# 1571| ValueCategory = prvalue -# 1569| getStmt(): [BlockStmt] { ... } -# 1570| getStmt(0): [DeclStmt] declaration -# 1570| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x517 -# 1570| Type = [Struct] String -# 1570| getVariable().getInitializer(): [Initializer] initializer for x517 -# 1570| getExpr(): [ConstructorCall] call to String -# 1570| Type = [VoidType] void -# 1570| ValueCategory = prvalue -# 1571| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1571| Type = [VoidType] void -# 1571| ValueCategory = prvalue -# 1571| getQualifier(): [VariableAccess] x517 -# 1571| Type = [Struct] String -# 1571| ValueCategory = lvalue -# 1571| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1571| Conversion = [BoolConversion] conversion to bool -# 1571| Type = [BoolType] bool -# 1571| Value = [CStyleCast] 0 -# 1571| ValueCategory = prvalue -# 1572| getStmt(518): [DoStmt] do (...) ... -# 1574| getCondition(): [Literal] 0 -# 1574| Type = [IntType] int -# 1574| Value = [Literal] 0 -# 1574| ValueCategory = prvalue -# 1572| getStmt(): [BlockStmt] { ... } -# 1573| getStmt(0): [DeclStmt] declaration -# 1573| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x518 -# 1573| Type = [Struct] String -# 1573| getVariable().getInitializer(): [Initializer] initializer for x518 -# 1573| getExpr(): [ConstructorCall] call to String -# 1573| Type = [VoidType] void -# 1573| ValueCategory = prvalue -# 1574| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1574| Type = [VoidType] void -# 1574| ValueCategory = prvalue -# 1574| getQualifier(): [VariableAccess] x518 -# 1574| Type = [Struct] String -# 1574| ValueCategory = lvalue -# 1574| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1574| Conversion = [BoolConversion] conversion to bool -# 1574| Type = [BoolType] bool -# 1574| Value = [CStyleCast] 0 -# 1574| ValueCategory = prvalue -# 1575| getStmt(519): [DoStmt] do (...) ... -# 1577| getCondition(): [Literal] 0 -# 1577| Type = [IntType] int -# 1577| Value = [Literal] 0 -# 1577| ValueCategory = prvalue -# 1575| getStmt(): [BlockStmt] { ... } -# 1576| getStmt(0): [DeclStmt] declaration -# 1576| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x519 -# 1576| Type = [Struct] String -# 1576| getVariable().getInitializer(): [Initializer] initializer for x519 -# 1576| getExpr(): [ConstructorCall] call to String -# 1576| Type = [VoidType] void -# 1576| ValueCategory = prvalue -# 1577| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1577| Type = [VoidType] void -# 1577| ValueCategory = prvalue -# 1577| getQualifier(): [VariableAccess] x519 -# 1577| Type = [Struct] String -# 1577| ValueCategory = lvalue -# 1577| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1577| Conversion = [BoolConversion] conversion to bool -# 1577| Type = [BoolType] bool -# 1577| Value = [CStyleCast] 0 -# 1577| ValueCategory = prvalue -# 1578| getStmt(520): [DoStmt] do (...) ... -# 1580| getCondition(): [Literal] 0 -# 1580| Type = [IntType] int -# 1580| Value = [Literal] 0 -# 1580| ValueCategory = prvalue -# 1578| getStmt(): [BlockStmt] { ... } -# 1579| getStmt(0): [DeclStmt] declaration -# 1579| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x520 -# 1579| Type = [Struct] String -# 1579| getVariable().getInitializer(): [Initializer] initializer for x520 -# 1579| getExpr(): [ConstructorCall] call to String -# 1579| Type = [VoidType] void -# 1579| ValueCategory = prvalue -# 1580| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1580| Type = [VoidType] void -# 1580| ValueCategory = prvalue -# 1580| getQualifier(): [VariableAccess] x520 -# 1580| Type = [Struct] String -# 1580| ValueCategory = lvalue -# 1580| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1580| Conversion = [BoolConversion] conversion to bool -# 1580| Type = [BoolType] bool -# 1580| Value = [CStyleCast] 0 -# 1580| ValueCategory = prvalue -# 1581| getStmt(521): [DoStmt] do (...) ... -# 1583| getCondition(): [Literal] 0 -# 1583| Type = [IntType] int -# 1583| Value = [Literal] 0 -# 1583| ValueCategory = prvalue -# 1581| getStmt(): [BlockStmt] { ... } -# 1582| getStmt(0): [DeclStmt] declaration -# 1582| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x521 -# 1582| Type = [Struct] String -# 1582| getVariable().getInitializer(): [Initializer] initializer for x521 -# 1582| getExpr(): [ConstructorCall] call to String -# 1582| Type = [VoidType] void -# 1582| ValueCategory = prvalue -# 1583| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1583| Type = [VoidType] void -# 1583| ValueCategory = prvalue -# 1583| getQualifier(): [VariableAccess] x521 -# 1583| Type = [Struct] String -# 1583| ValueCategory = lvalue -# 1583| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1583| Conversion = [BoolConversion] conversion to bool -# 1583| Type = [BoolType] bool -# 1583| Value = [CStyleCast] 0 -# 1583| ValueCategory = prvalue -# 1584| getStmt(522): [DoStmt] do (...) ... -# 1586| getCondition(): [Literal] 0 -# 1586| Type = [IntType] int -# 1586| Value = [Literal] 0 -# 1586| ValueCategory = prvalue -# 1584| getStmt(): [BlockStmt] { ... } -# 1585| getStmt(0): [DeclStmt] declaration -# 1585| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x522 -# 1585| Type = [Struct] String -# 1585| getVariable().getInitializer(): [Initializer] initializer for x522 -# 1585| getExpr(): [ConstructorCall] call to String -# 1585| Type = [VoidType] void -# 1585| ValueCategory = prvalue -# 1586| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1586| Type = [VoidType] void -# 1586| ValueCategory = prvalue -# 1586| getQualifier(): [VariableAccess] x522 -# 1586| Type = [Struct] String -# 1586| ValueCategory = lvalue -# 1586| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1586| Conversion = [BoolConversion] conversion to bool -# 1586| Type = [BoolType] bool -# 1586| Value = [CStyleCast] 0 -# 1586| ValueCategory = prvalue -# 1587| getStmt(523): [DoStmt] do (...) ... -# 1589| getCondition(): [Literal] 0 -# 1589| Type = [IntType] int -# 1589| Value = [Literal] 0 -# 1589| ValueCategory = prvalue -# 1587| getStmt(): [BlockStmt] { ... } -# 1588| getStmt(0): [DeclStmt] declaration -# 1588| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x523 -# 1588| Type = [Struct] String -# 1588| getVariable().getInitializer(): [Initializer] initializer for x523 -# 1588| getExpr(): [ConstructorCall] call to String -# 1588| Type = [VoidType] void -# 1588| ValueCategory = prvalue -# 1589| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1589| Type = [VoidType] void -# 1589| ValueCategory = prvalue -# 1589| getQualifier(): [VariableAccess] x523 -# 1589| Type = [Struct] String -# 1589| ValueCategory = lvalue -# 1589| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1589| Conversion = [BoolConversion] conversion to bool -# 1589| Type = [BoolType] bool -# 1589| Value = [CStyleCast] 0 -# 1589| ValueCategory = prvalue -# 1590| getStmt(524): [DoStmt] do (...) ... -# 1592| getCondition(): [Literal] 0 -# 1592| Type = [IntType] int -# 1592| Value = [Literal] 0 -# 1592| ValueCategory = prvalue -# 1590| getStmt(): [BlockStmt] { ... } -# 1591| getStmt(0): [DeclStmt] declaration -# 1591| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x524 -# 1591| Type = [Struct] String -# 1591| getVariable().getInitializer(): [Initializer] initializer for x524 -# 1591| getExpr(): [ConstructorCall] call to String -# 1591| Type = [VoidType] void -# 1591| ValueCategory = prvalue -# 1592| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1592| Type = [VoidType] void -# 1592| ValueCategory = prvalue -# 1592| getQualifier(): [VariableAccess] x524 -# 1592| Type = [Struct] String -# 1592| ValueCategory = lvalue -# 1592| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1592| Conversion = [BoolConversion] conversion to bool -# 1592| Type = [BoolType] bool -# 1592| Value = [CStyleCast] 0 -# 1592| ValueCategory = prvalue -# 1593| getStmt(525): [DoStmt] do (...) ... -# 1595| getCondition(): [Literal] 0 -# 1595| Type = [IntType] int -# 1595| Value = [Literal] 0 -# 1595| ValueCategory = prvalue -# 1593| getStmt(): [BlockStmt] { ... } -# 1594| getStmt(0): [DeclStmt] declaration -# 1594| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x525 -# 1594| Type = [Struct] String -# 1594| getVariable().getInitializer(): [Initializer] initializer for x525 -# 1594| getExpr(): [ConstructorCall] call to String -# 1594| Type = [VoidType] void -# 1594| ValueCategory = prvalue -# 1595| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1595| Type = [VoidType] void -# 1595| ValueCategory = prvalue -# 1595| getQualifier(): [VariableAccess] x525 -# 1595| Type = [Struct] String -# 1595| ValueCategory = lvalue -# 1595| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1595| Conversion = [BoolConversion] conversion to bool -# 1595| Type = [BoolType] bool -# 1595| Value = [CStyleCast] 0 -# 1595| ValueCategory = prvalue -# 1596| getStmt(526): [DoStmt] do (...) ... -# 1598| getCondition(): [Literal] 0 -# 1598| Type = [IntType] int -# 1598| Value = [Literal] 0 -# 1598| ValueCategory = prvalue -# 1596| getStmt(): [BlockStmt] { ... } -# 1597| getStmt(0): [DeclStmt] declaration -# 1597| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x526 -# 1597| Type = [Struct] String -# 1597| getVariable().getInitializer(): [Initializer] initializer for x526 -# 1597| getExpr(): [ConstructorCall] call to String -# 1597| Type = [VoidType] void -# 1597| ValueCategory = prvalue -# 1598| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1598| Type = [VoidType] void -# 1598| ValueCategory = prvalue -# 1598| getQualifier(): [VariableAccess] x526 -# 1598| Type = [Struct] String -# 1598| ValueCategory = lvalue -# 1598| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1598| Conversion = [BoolConversion] conversion to bool -# 1598| Type = [BoolType] bool -# 1598| Value = [CStyleCast] 0 -# 1598| ValueCategory = prvalue -# 1599| getStmt(527): [DoStmt] do (...) ... -# 1601| getCondition(): [Literal] 0 -# 1601| Type = [IntType] int -# 1601| Value = [Literal] 0 -# 1601| ValueCategory = prvalue -# 1599| getStmt(): [BlockStmt] { ... } -# 1600| getStmt(0): [DeclStmt] declaration -# 1600| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x527 -# 1600| Type = [Struct] String -# 1600| getVariable().getInitializer(): [Initializer] initializer for x527 -# 1600| getExpr(): [ConstructorCall] call to String -# 1600| Type = [VoidType] void -# 1600| ValueCategory = prvalue -# 1601| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1601| Type = [VoidType] void -# 1601| ValueCategory = prvalue -# 1601| getQualifier(): [VariableAccess] x527 -# 1601| Type = [Struct] String -# 1601| ValueCategory = lvalue -# 1601| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1601| Conversion = [BoolConversion] conversion to bool -# 1601| Type = [BoolType] bool -# 1601| Value = [CStyleCast] 0 -# 1601| ValueCategory = prvalue -# 1602| getStmt(528): [DoStmt] do (...) ... -# 1604| getCondition(): [Literal] 0 -# 1604| Type = [IntType] int -# 1604| Value = [Literal] 0 -# 1604| ValueCategory = prvalue -# 1602| getStmt(): [BlockStmt] { ... } -# 1603| getStmt(0): [DeclStmt] declaration -# 1603| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x528 -# 1603| Type = [Struct] String -# 1603| getVariable().getInitializer(): [Initializer] initializer for x528 -# 1603| getExpr(): [ConstructorCall] call to String -# 1603| Type = [VoidType] void -# 1603| ValueCategory = prvalue -# 1604| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1604| Type = [VoidType] void -# 1604| ValueCategory = prvalue -# 1604| getQualifier(): [VariableAccess] x528 -# 1604| Type = [Struct] String -# 1604| ValueCategory = lvalue -# 1604| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1604| Conversion = [BoolConversion] conversion to bool -# 1604| Type = [BoolType] bool -# 1604| Value = [CStyleCast] 0 -# 1604| ValueCategory = prvalue -# 1605| getStmt(529): [DoStmt] do (...) ... -# 1607| getCondition(): [Literal] 0 -# 1607| Type = [IntType] int -# 1607| Value = [Literal] 0 -# 1607| ValueCategory = prvalue -# 1605| getStmt(): [BlockStmt] { ... } -# 1606| getStmt(0): [DeclStmt] declaration -# 1606| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x529 -# 1606| Type = [Struct] String -# 1606| getVariable().getInitializer(): [Initializer] initializer for x529 -# 1606| getExpr(): [ConstructorCall] call to String -# 1606| Type = [VoidType] void -# 1606| ValueCategory = prvalue -# 1607| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1607| Type = [VoidType] void -# 1607| ValueCategory = prvalue -# 1607| getQualifier(): [VariableAccess] x529 -# 1607| Type = [Struct] String -# 1607| ValueCategory = lvalue -# 1607| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1607| Conversion = [BoolConversion] conversion to bool -# 1607| Type = [BoolType] bool -# 1607| Value = [CStyleCast] 0 -# 1607| ValueCategory = prvalue -# 1608| getStmt(530): [DoStmt] do (...) ... -# 1610| getCondition(): [Literal] 0 -# 1610| Type = [IntType] int -# 1610| Value = [Literal] 0 -# 1610| ValueCategory = prvalue -# 1608| getStmt(): [BlockStmt] { ... } -# 1609| getStmt(0): [DeclStmt] declaration -# 1609| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x530 -# 1609| Type = [Struct] String -# 1609| getVariable().getInitializer(): [Initializer] initializer for x530 -# 1609| getExpr(): [ConstructorCall] call to String -# 1609| Type = [VoidType] void -# 1609| ValueCategory = prvalue -# 1610| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1610| Type = [VoidType] void -# 1610| ValueCategory = prvalue -# 1610| getQualifier(): [VariableAccess] x530 -# 1610| Type = [Struct] String -# 1610| ValueCategory = lvalue -# 1610| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1610| Conversion = [BoolConversion] conversion to bool -# 1610| Type = [BoolType] bool -# 1610| Value = [CStyleCast] 0 -# 1610| ValueCategory = prvalue -# 1611| getStmt(531): [DoStmt] do (...) ... -# 1613| getCondition(): [Literal] 0 -# 1613| Type = [IntType] int -# 1613| Value = [Literal] 0 -# 1613| ValueCategory = prvalue -# 1611| getStmt(): [BlockStmt] { ... } -# 1612| getStmt(0): [DeclStmt] declaration -# 1612| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x531 -# 1612| Type = [Struct] String -# 1612| getVariable().getInitializer(): [Initializer] initializer for x531 -# 1612| getExpr(): [ConstructorCall] call to String -# 1612| Type = [VoidType] void -# 1612| ValueCategory = prvalue -# 1613| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1613| Type = [VoidType] void -# 1613| ValueCategory = prvalue -# 1613| getQualifier(): [VariableAccess] x531 -# 1613| Type = [Struct] String -# 1613| ValueCategory = lvalue -# 1613| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1613| Conversion = [BoolConversion] conversion to bool -# 1613| Type = [BoolType] bool -# 1613| Value = [CStyleCast] 0 -# 1613| ValueCategory = prvalue -# 1614| getStmt(532): [DoStmt] do (...) ... -# 1616| getCondition(): [Literal] 0 -# 1616| Type = [IntType] int -# 1616| Value = [Literal] 0 -# 1616| ValueCategory = prvalue -# 1614| getStmt(): [BlockStmt] { ... } -# 1615| getStmt(0): [DeclStmt] declaration -# 1615| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x532 -# 1615| Type = [Struct] String -# 1615| getVariable().getInitializer(): [Initializer] initializer for x532 -# 1615| getExpr(): [ConstructorCall] call to String -# 1615| Type = [VoidType] void -# 1615| ValueCategory = prvalue -# 1616| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1616| Type = [VoidType] void -# 1616| ValueCategory = prvalue -# 1616| getQualifier(): [VariableAccess] x532 -# 1616| Type = [Struct] String -# 1616| ValueCategory = lvalue -# 1616| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1616| Conversion = [BoolConversion] conversion to bool -# 1616| Type = [BoolType] bool -# 1616| Value = [CStyleCast] 0 -# 1616| ValueCategory = prvalue -# 1617| getStmt(533): [DoStmt] do (...) ... -# 1619| getCondition(): [Literal] 0 -# 1619| Type = [IntType] int -# 1619| Value = [Literal] 0 -# 1619| ValueCategory = prvalue -# 1617| getStmt(): [BlockStmt] { ... } -# 1618| getStmt(0): [DeclStmt] declaration -# 1618| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x533 -# 1618| Type = [Struct] String -# 1618| getVariable().getInitializer(): [Initializer] initializer for x533 -# 1618| getExpr(): [ConstructorCall] call to String -# 1618| Type = [VoidType] void -# 1618| ValueCategory = prvalue -# 1619| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1619| Type = [VoidType] void -# 1619| ValueCategory = prvalue -# 1619| getQualifier(): [VariableAccess] x533 -# 1619| Type = [Struct] String -# 1619| ValueCategory = lvalue -# 1619| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1619| Conversion = [BoolConversion] conversion to bool -# 1619| Type = [BoolType] bool -# 1619| Value = [CStyleCast] 0 -# 1619| ValueCategory = prvalue -# 1620| getStmt(534): [DoStmt] do (...) ... -# 1622| getCondition(): [Literal] 0 -# 1622| Type = [IntType] int -# 1622| Value = [Literal] 0 -# 1622| ValueCategory = prvalue -# 1620| getStmt(): [BlockStmt] { ... } -# 1621| getStmt(0): [DeclStmt] declaration -# 1621| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x534 -# 1621| Type = [Struct] String -# 1621| getVariable().getInitializer(): [Initializer] initializer for x534 -# 1621| getExpr(): [ConstructorCall] call to String -# 1621| Type = [VoidType] void -# 1621| ValueCategory = prvalue -# 1622| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1622| Type = [VoidType] void -# 1622| ValueCategory = prvalue -# 1622| getQualifier(): [VariableAccess] x534 -# 1622| Type = [Struct] String -# 1622| ValueCategory = lvalue -# 1622| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1622| Conversion = [BoolConversion] conversion to bool -# 1622| Type = [BoolType] bool -# 1622| Value = [CStyleCast] 0 -# 1622| ValueCategory = prvalue -# 1623| getStmt(535): [DoStmt] do (...) ... -# 1625| getCondition(): [Literal] 0 -# 1625| Type = [IntType] int -# 1625| Value = [Literal] 0 -# 1625| ValueCategory = prvalue -# 1623| getStmt(): [BlockStmt] { ... } -# 1624| getStmt(0): [DeclStmt] declaration -# 1624| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x535 -# 1624| Type = [Struct] String -# 1624| getVariable().getInitializer(): [Initializer] initializer for x535 -# 1624| getExpr(): [ConstructorCall] call to String -# 1624| Type = [VoidType] void -# 1624| ValueCategory = prvalue -# 1625| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1625| Type = [VoidType] void -# 1625| ValueCategory = prvalue -# 1625| getQualifier(): [VariableAccess] x535 -# 1625| Type = [Struct] String -# 1625| ValueCategory = lvalue -# 1625| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1625| Conversion = [BoolConversion] conversion to bool -# 1625| Type = [BoolType] bool -# 1625| Value = [CStyleCast] 0 -# 1625| ValueCategory = prvalue -# 1626| getStmt(536): [DoStmt] do (...) ... -# 1628| getCondition(): [Literal] 0 -# 1628| Type = [IntType] int -# 1628| Value = [Literal] 0 -# 1628| ValueCategory = prvalue -# 1626| getStmt(): [BlockStmt] { ... } -# 1627| getStmt(0): [DeclStmt] declaration -# 1627| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x536 -# 1627| Type = [Struct] String -# 1627| getVariable().getInitializer(): [Initializer] initializer for x536 -# 1627| getExpr(): [ConstructorCall] call to String -# 1627| Type = [VoidType] void -# 1627| ValueCategory = prvalue -# 1628| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1628| Type = [VoidType] void -# 1628| ValueCategory = prvalue -# 1628| getQualifier(): [VariableAccess] x536 -# 1628| Type = [Struct] String -# 1628| ValueCategory = lvalue -# 1628| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1628| Conversion = [BoolConversion] conversion to bool -# 1628| Type = [BoolType] bool -# 1628| Value = [CStyleCast] 0 -# 1628| ValueCategory = prvalue -# 1629| getStmt(537): [DoStmt] do (...) ... -# 1631| getCondition(): [Literal] 0 -# 1631| Type = [IntType] int -# 1631| Value = [Literal] 0 -# 1631| ValueCategory = prvalue -# 1629| getStmt(): [BlockStmt] { ... } -# 1630| getStmt(0): [DeclStmt] declaration -# 1630| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x537 -# 1630| Type = [Struct] String -# 1630| getVariable().getInitializer(): [Initializer] initializer for x537 -# 1630| getExpr(): [ConstructorCall] call to String -# 1630| Type = [VoidType] void -# 1630| ValueCategory = prvalue -# 1631| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1631| Type = [VoidType] void -# 1631| ValueCategory = prvalue -# 1631| getQualifier(): [VariableAccess] x537 -# 1631| Type = [Struct] String -# 1631| ValueCategory = lvalue -# 1631| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1631| Conversion = [BoolConversion] conversion to bool -# 1631| Type = [BoolType] bool -# 1631| Value = [CStyleCast] 0 -# 1631| ValueCategory = prvalue -# 1632| getStmt(538): [DoStmt] do (...) ... -# 1634| getCondition(): [Literal] 0 -# 1634| Type = [IntType] int -# 1634| Value = [Literal] 0 -# 1634| ValueCategory = prvalue -# 1632| getStmt(): [BlockStmt] { ... } -# 1633| getStmt(0): [DeclStmt] declaration -# 1633| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x538 -# 1633| Type = [Struct] String -# 1633| getVariable().getInitializer(): [Initializer] initializer for x538 -# 1633| getExpr(): [ConstructorCall] call to String -# 1633| Type = [VoidType] void -# 1633| ValueCategory = prvalue -# 1634| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1634| Type = [VoidType] void -# 1634| ValueCategory = prvalue -# 1634| getQualifier(): [VariableAccess] x538 -# 1634| Type = [Struct] String -# 1634| ValueCategory = lvalue -# 1634| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1634| Conversion = [BoolConversion] conversion to bool -# 1634| Type = [BoolType] bool -# 1634| Value = [CStyleCast] 0 -# 1634| ValueCategory = prvalue -# 1635| getStmt(539): [DoStmt] do (...) ... -# 1637| getCondition(): [Literal] 0 -# 1637| Type = [IntType] int -# 1637| Value = [Literal] 0 -# 1637| ValueCategory = prvalue -# 1635| getStmt(): [BlockStmt] { ... } -# 1636| getStmt(0): [DeclStmt] declaration -# 1636| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x539 -# 1636| Type = [Struct] String -# 1636| getVariable().getInitializer(): [Initializer] initializer for x539 -# 1636| getExpr(): [ConstructorCall] call to String -# 1636| Type = [VoidType] void -# 1636| ValueCategory = prvalue -# 1637| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1637| Type = [VoidType] void -# 1637| ValueCategory = prvalue -# 1637| getQualifier(): [VariableAccess] x539 -# 1637| Type = [Struct] String -# 1637| ValueCategory = lvalue -# 1637| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1637| Conversion = [BoolConversion] conversion to bool -# 1637| Type = [BoolType] bool -# 1637| Value = [CStyleCast] 0 -# 1637| ValueCategory = prvalue -# 1638| getStmt(540): [DoStmt] do (...) ... -# 1640| getCondition(): [Literal] 0 -# 1640| Type = [IntType] int -# 1640| Value = [Literal] 0 -# 1640| ValueCategory = prvalue -# 1638| getStmt(): [BlockStmt] { ... } -# 1639| getStmt(0): [DeclStmt] declaration -# 1639| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x540 -# 1639| Type = [Struct] String -# 1639| getVariable().getInitializer(): [Initializer] initializer for x540 -# 1639| getExpr(): [ConstructorCall] call to String -# 1639| Type = [VoidType] void -# 1639| ValueCategory = prvalue -# 1640| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1640| Type = [VoidType] void -# 1640| ValueCategory = prvalue -# 1640| getQualifier(): [VariableAccess] x540 -# 1640| Type = [Struct] String -# 1640| ValueCategory = lvalue -# 1640| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1640| Conversion = [BoolConversion] conversion to bool -# 1640| Type = [BoolType] bool -# 1640| Value = [CStyleCast] 0 -# 1640| ValueCategory = prvalue -# 1641| getStmt(541): [DoStmt] do (...) ... -# 1643| getCondition(): [Literal] 0 -# 1643| Type = [IntType] int -# 1643| Value = [Literal] 0 -# 1643| ValueCategory = prvalue -# 1641| getStmt(): [BlockStmt] { ... } -# 1642| getStmt(0): [DeclStmt] declaration -# 1642| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x541 -# 1642| Type = [Struct] String -# 1642| getVariable().getInitializer(): [Initializer] initializer for x541 -# 1642| getExpr(): [ConstructorCall] call to String -# 1642| Type = [VoidType] void -# 1642| ValueCategory = prvalue -# 1643| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1643| Type = [VoidType] void -# 1643| ValueCategory = prvalue -# 1643| getQualifier(): [VariableAccess] x541 -# 1643| Type = [Struct] String -# 1643| ValueCategory = lvalue -# 1643| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1643| Conversion = [BoolConversion] conversion to bool -# 1643| Type = [BoolType] bool -# 1643| Value = [CStyleCast] 0 -# 1643| ValueCategory = prvalue -# 1644| getStmt(542): [DoStmt] do (...) ... -# 1646| getCondition(): [Literal] 0 -# 1646| Type = [IntType] int -# 1646| Value = [Literal] 0 -# 1646| ValueCategory = prvalue -# 1644| getStmt(): [BlockStmt] { ... } -# 1645| getStmt(0): [DeclStmt] declaration -# 1645| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x542 -# 1645| Type = [Struct] String -# 1645| getVariable().getInitializer(): [Initializer] initializer for x542 -# 1645| getExpr(): [ConstructorCall] call to String -# 1645| Type = [VoidType] void -# 1645| ValueCategory = prvalue -# 1646| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1646| Type = [VoidType] void -# 1646| ValueCategory = prvalue -# 1646| getQualifier(): [VariableAccess] x542 -# 1646| Type = [Struct] String -# 1646| ValueCategory = lvalue -# 1646| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1646| Conversion = [BoolConversion] conversion to bool -# 1646| Type = [BoolType] bool -# 1646| Value = [CStyleCast] 0 -# 1646| ValueCategory = prvalue -# 1647| getStmt(543): [DoStmt] do (...) ... -# 1649| getCondition(): [Literal] 0 -# 1649| Type = [IntType] int -# 1649| Value = [Literal] 0 -# 1649| ValueCategory = prvalue -# 1647| getStmt(): [BlockStmt] { ... } -# 1648| getStmt(0): [DeclStmt] declaration -# 1648| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x543 -# 1648| Type = [Struct] String -# 1648| getVariable().getInitializer(): [Initializer] initializer for x543 -# 1648| getExpr(): [ConstructorCall] call to String -# 1648| Type = [VoidType] void -# 1648| ValueCategory = prvalue -# 1649| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1649| Type = [VoidType] void -# 1649| ValueCategory = prvalue -# 1649| getQualifier(): [VariableAccess] x543 -# 1649| Type = [Struct] String -# 1649| ValueCategory = lvalue -# 1649| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1649| Conversion = [BoolConversion] conversion to bool -# 1649| Type = [BoolType] bool -# 1649| Value = [CStyleCast] 0 -# 1649| ValueCategory = prvalue -# 1650| getStmt(544): [DoStmt] do (...) ... -# 1652| getCondition(): [Literal] 0 -# 1652| Type = [IntType] int -# 1652| Value = [Literal] 0 -# 1652| ValueCategory = prvalue -# 1650| getStmt(): [BlockStmt] { ... } -# 1651| getStmt(0): [DeclStmt] declaration -# 1651| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x544 -# 1651| Type = [Struct] String -# 1651| getVariable().getInitializer(): [Initializer] initializer for x544 -# 1651| getExpr(): [ConstructorCall] call to String -# 1651| Type = [VoidType] void -# 1651| ValueCategory = prvalue -# 1652| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1652| Type = [VoidType] void -# 1652| ValueCategory = prvalue -# 1652| getQualifier(): [VariableAccess] x544 -# 1652| Type = [Struct] String -# 1652| ValueCategory = lvalue -# 1652| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1652| Conversion = [BoolConversion] conversion to bool -# 1652| Type = [BoolType] bool -# 1652| Value = [CStyleCast] 0 -# 1652| ValueCategory = prvalue -# 1653| getStmt(545): [DoStmt] do (...) ... -# 1655| getCondition(): [Literal] 0 -# 1655| Type = [IntType] int -# 1655| Value = [Literal] 0 -# 1655| ValueCategory = prvalue -# 1653| getStmt(): [BlockStmt] { ... } -# 1654| getStmt(0): [DeclStmt] declaration -# 1654| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x545 -# 1654| Type = [Struct] String -# 1654| getVariable().getInitializer(): [Initializer] initializer for x545 -# 1654| getExpr(): [ConstructorCall] call to String -# 1654| Type = [VoidType] void -# 1654| ValueCategory = prvalue -# 1655| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1655| Type = [VoidType] void -# 1655| ValueCategory = prvalue -# 1655| getQualifier(): [VariableAccess] x545 -# 1655| Type = [Struct] String -# 1655| ValueCategory = lvalue -# 1655| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1655| Conversion = [BoolConversion] conversion to bool -# 1655| Type = [BoolType] bool -# 1655| Value = [CStyleCast] 0 -# 1655| ValueCategory = prvalue -# 1656| getStmt(546): [DoStmt] do (...) ... -# 1658| getCondition(): [Literal] 0 -# 1658| Type = [IntType] int -# 1658| Value = [Literal] 0 -# 1658| ValueCategory = prvalue -# 1656| getStmt(): [BlockStmt] { ... } -# 1657| getStmt(0): [DeclStmt] declaration -# 1657| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x546 -# 1657| Type = [Struct] String -# 1657| getVariable().getInitializer(): [Initializer] initializer for x546 -# 1657| getExpr(): [ConstructorCall] call to String -# 1657| Type = [VoidType] void -# 1657| ValueCategory = prvalue -# 1658| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1658| Type = [VoidType] void -# 1658| ValueCategory = prvalue -# 1658| getQualifier(): [VariableAccess] x546 -# 1658| Type = [Struct] String -# 1658| ValueCategory = lvalue -# 1658| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1658| Conversion = [BoolConversion] conversion to bool -# 1658| Type = [BoolType] bool -# 1658| Value = [CStyleCast] 0 -# 1658| ValueCategory = prvalue -# 1659| getStmt(547): [DoStmt] do (...) ... -# 1661| getCondition(): [Literal] 0 -# 1661| Type = [IntType] int -# 1661| Value = [Literal] 0 -# 1661| ValueCategory = prvalue -# 1659| getStmt(): [BlockStmt] { ... } -# 1660| getStmt(0): [DeclStmt] declaration -# 1660| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x547 -# 1660| Type = [Struct] String -# 1660| getVariable().getInitializer(): [Initializer] initializer for x547 -# 1660| getExpr(): [ConstructorCall] call to String -# 1660| Type = [VoidType] void -# 1660| ValueCategory = prvalue -# 1661| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1661| Type = [VoidType] void -# 1661| ValueCategory = prvalue -# 1661| getQualifier(): [VariableAccess] x547 -# 1661| Type = [Struct] String -# 1661| ValueCategory = lvalue -# 1661| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1661| Conversion = [BoolConversion] conversion to bool -# 1661| Type = [BoolType] bool -# 1661| Value = [CStyleCast] 0 -# 1661| ValueCategory = prvalue -# 1662| getStmt(548): [DoStmt] do (...) ... -# 1664| getCondition(): [Literal] 0 -# 1664| Type = [IntType] int -# 1664| Value = [Literal] 0 -# 1664| ValueCategory = prvalue -# 1662| getStmt(): [BlockStmt] { ... } -# 1663| getStmt(0): [DeclStmt] declaration -# 1663| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x548 -# 1663| Type = [Struct] String -# 1663| getVariable().getInitializer(): [Initializer] initializer for x548 -# 1663| getExpr(): [ConstructorCall] call to String -# 1663| Type = [VoidType] void -# 1663| ValueCategory = prvalue -# 1664| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1664| Type = [VoidType] void -# 1664| ValueCategory = prvalue -# 1664| getQualifier(): [VariableAccess] x548 -# 1664| Type = [Struct] String -# 1664| ValueCategory = lvalue -# 1664| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1664| Conversion = [BoolConversion] conversion to bool -# 1664| Type = [BoolType] bool -# 1664| Value = [CStyleCast] 0 -# 1664| ValueCategory = prvalue -# 1665| getStmt(549): [DoStmt] do (...) ... -# 1667| getCondition(): [Literal] 0 -# 1667| Type = [IntType] int -# 1667| Value = [Literal] 0 -# 1667| ValueCategory = prvalue -# 1665| getStmt(): [BlockStmt] { ... } -# 1666| getStmt(0): [DeclStmt] declaration -# 1666| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x549 -# 1666| Type = [Struct] String -# 1666| getVariable().getInitializer(): [Initializer] initializer for x549 -# 1666| getExpr(): [ConstructorCall] call to String -# 1666| Type = [VoidType] void -# 1666| ValueCategory = prvalue -# 1667| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1667| Type = [VoidType] void -# 1667| ValueCategory = prvalue -# 1667| getQualifier(): [VariableAccess] x549 -# 1667| Type = [Struct] String -# 1667| ValueCategory = lvalue -# 1667| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1667| Conversion = [BoolConversion] conversion to bool -# 1667| Type = [BoolType] bool -# 1667| Value = [CStyleCast] 0 -# 1667| ValueCategory = prvalue -# 1668| getStmt(550): [DoStmt] do (...) ... -# 1670| getCondition(): [Literal] 0 -# 1670| Type = [IntType] int -# 1670| Value = [Literal] 0 -# 1670| ValueCategory = prvalue -# 1668| getStmt(): [BlockStmt] { ... } -# 1669| getStmt(0): [DeclStmt] declaration -# 1669| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x550 -# 1669| Type = [Struct] String -# 1669| getVariable().getInitializer(): [Initializer] initializer for x550 -# 1669| getExpr(): [ConstructorCall] call to String -# 1669| Type = [VoidType] void -# 1669| ValueCategory = prvalue -# 1670| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1670| Type = [VoidType] void -# 1670| ValueCategory = prvalue -# 1670| getQualifier(): [VariableAccess] x550 -# 1670| Type = [Struct] String -# 1670| ValueCategory = lvalue -# 1670| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1670| Conversion = [BoolConversion] conversion to bool -# 1670| Type = [BoolType] bool -# 1670| Value = [CStyleCast] 0 -# 1670| ValueCategory = prvalue -# 1671| getStmt(551): [DoStmt] do (...) ... -# 1673| getCondition(): [Literal] 0 -# 1673| Type = [IntType] int -# 1673| Value = [Literal] 0 -# 1673| ValueCategory = prvalue -# 1671| getStmt(): [BlockStmt] { ... } -# 1672| getStmt(0): [DeclStmt] declaration -# 1672| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x551 -# 1672| Type = [Struct] String -# 1672| getVariable().getInitializer(): [Initializer] initializer for x551 -# 1672| getExpr(): [ConstructorCall] call to String -# 1672| Type = [VoidType] void -# 1672| ValueCategory = prvalue -# 1673| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1673| Type = [VoidType] void -# 1673| ValueCategory = prvalue -# 1673| getQualifier(): [VariableAccess] x551 -# 1673| Type = [Struct] String -# 1673| ValueCategory = lvalue -# 1673| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1673| Conversion = [BoolConversion] conversion to bool -# 1673| Type = [BoolType] bool -# 1673| Value = [CStyleCast] 0 -# 1673| ValueCategory = prvalue -# 1674| getStmt(552): [DoStmt] do (...) ... -# 1676| getCondition(): [Literal] 0 -# 1676| Type = [IntType] int -# 1676| Value = [Literal] 0 -# 1676| ValueCategory = prvalue -# 1674| getStmt(): [BlockStmt] { ... } -# 1675| getStmt(0): [DeclStmt] declaration -# 1675| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x552 -# 1675| Type = [Struct] String -# 1675| getVariable().getInitializer(): [Initializer] initializer for x552 -# 1675| getExpr(): [ConstructorCall] call to String -# 1675| Type = [VoidType] void -# 1675| ValueCategory = prvalue -# 1676| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1676| Type = [VoidType] void -# 1676| ValueCategory = prvalue -# 1676| getQualifier(): [VariableAccess] x552 -# 1676| Type = [Struct] String -# 1676| ValueCategory = lvalue -# 1676| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1676| Conversion = [BoolConversion] conversion to bool -# 1676| Type = [BoolType] bool -# 1676| Value = [CStyleCast] 0 -# 1676| ValueCategory = prvalue -# 1677| getStmt(553): [DoStmt] do (...) ... -# 1679| getCondition(): [Literal] 0 -# 1679| Type = [IntType] int -# 1679| Value = [Literal] 0 -# 1679| ValueCategory = prvalue -# 1677| getStmt(): [BlockStmt] { ... } -# 1678| getStmt(0): [DeclStmt] declaration -# 1678| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x553 -# 1678| Type = [Struct] String -# 1678| getVariable().getInitializer(): [Initializer] initializer for x553 -# 1678| getExpr(): [ConstructorCall] call to String -# 1678| Type = [VoidType] void -# 1678| ValueCategory = prvalue -# 1679| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1679| Type = [VoidType] void -# 1679| ValueCategory = prvalue -# 1679| getQualifier(): [VariableAccess] x553 -# 1679| Type = [Struct] String -# 1679| ValueCategory = lvalue -# 1679| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1679| Conversion = [BoolConversion] conversion to bool -# 1679| Type = [BoolType] bool -# 1679| Value = [CStyleCast] 0 -# 1679| ValueCategory = prvalue -# 1680| getStmt(554): [DoStmt] do (...) ... -# 1682| getCondition(): [Literal] 0 -# 1682| Type = [IntType] int -# 1682| Value = [Literal] 0 -# 1682| ValueCategory = prvalue -# 1680| getStmt(): [BlockStmt] { ... } -# 1681| getStmt(0): [DeclStmt] declaration -# 1681| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x554 -# 1681| Type = [Struct] String -# 1681| getVariable().getInitializer(): [Initializer] initializer for x554 -# 1681| getExpr(): [ConstructorCall] call to String -# 1681| Type = [VoidType] void -# 1681| ValueCategory = prvalue -# 1682| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1682| Type = [VoidType] void -# 1682| ValueCategory = prvalue -# 1682| getQualifier(): [VariableAccess] x554 -# 1682| Type = [Struct] String -# 1682| ValueCategory = lvalue -# 1682| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1682| Conversion = [BoolConversion] conversion to bool -# 1682| Type = [BoolType] bool -# 1682| Value = [CStyleCast] 0 -# 1682| ValueCategory = prvalue -# 1683| getStmt(555): [DoStmt] do (...) ... -# 1685| getCondition(): [Literal] 0 -# 1685| Type = [IntType] int -# 1685| Value = [Literal] 0 -# 1685| ValueCategory = prvalue -# 1683| getStmt(): [BlockStmt] { ... } -# 1684| getStmt(0): [DeclStmt] declaration -# 1684| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x555 -# 1684| Type = [Struct] String -# 1684| getVariable().getInitializer(): [Initializer] initializer for x555 -# 1684| getExpr(): [ConstructorCall] call to String -# 1684| Type = [VoidType] void -# 1684| ValueCategory = prvalue -# 1685| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1685| Type = [VoidType] void -# 1685| ValueCategory = prvalue -# 1685| getQualifier(): [VariableAccess] x555 -# 1685| Type = [Struct] String -# 1685| ValueCategory = lvalue -# 1685| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1685| Conversion = [BoolConversion] conversion to bool -# 1685| Type = [BoolType] bool -# 1685| Value = [CStyleCast] 0 -# 1685| ValueCategory = prvalue -# 1686| getStmt(556): [DoStmt] do (...) ... -# 1688| getCondition(): [Literal] 0 -# 1688| Type = [IntType] int -# 1688| Value = [Literal] 0 -# 1688| ValueCategory = prvalue -# 1686| getStmt(): [BlockStmt] { ... } -# 1687| getStmt(0): [DeclStmt] declaration -# 1687| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x556 -# 1687| Type = [Struct] String -# 1687| getVariable().getInitializer(): [Initializer] initializer for x556 -# 1687| getExpr(): [ConstructorCall] call to String -# 1687| Type = [VoidType] void -# 1687| ValueCategory = prvalue -# 1688| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1688| Type = [VoidType] void -# 1688| ValueCategory = prvalue -# 1688| getQualifier(): [VariableAccess] x556 -# 1688| Type = [Struct] String -# 1688| ValueCategory = lvalue -# 1688| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1688| Conversion = [BoolConversion] conversion to bool -# 1688| Type = [BoolType] bool -# 1688| Value = [CStyleCast] 0 -# 1688| ValueCategory = prvalue -# 1689| getStmt(557): [DoStmt] do (...) ... -# 1691| getCondition(): [Literal] 0 -# 1691| Type = [IntType] int -# 1691| Value = [Literal] 0 -# 1691| ValueCategory = prvalue -# 1689| getStmt(): [BlockStmt] { ... } -# 1690| getStmt(0): [DeclStmt] declaration -# 1690| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x557 -# 1690| Type = [Struct] String -# 1690| getVariable().getInitializer(): [Initializer] initializer for x557 -# 1690| getExpr(): [ConstructorCall] call to String -# 1690| Type = [VoidType] void -# 1690| ValueCategory = prvalue -# 1691| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1691| Type = [VoidType] void -# 1691| ValueCategory = prvalue -# 1691| getQualifier(): [VariableAccess] x557 -# 1691| Type = [Struct] String -# 1691| ValueCategory = lvalue -# 1691| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1691| Conversion = [BoolConversion] conversion to bool -# 1691| Type = [BoolType] bool -# 1691| Value = [CStyleCast] 0 -# 1691| ValueCategory = prvalue -# 1692| getStmt(558): [DoStmt] do (...) ... -# 1694| getCondition(): [Literal] 0 -# 1694| Type = [IntType] int -# 1694| Value = [Literal] 0 -# 1694| ValueCategory = prvalue -# 1692| getStmt(): [BlockStmt] { ... } -# 1693| getStmt(0): [DeclStmt] declaration -# 1693| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x558 -# 1693| Type = [Struct] String -# 1693| getVariable().getInitializer(): [Initializer] initializer for x558 -# 1693| getExpr(): [ConstructorCall] call to String -# 1693| Type = [VoidType] void -# 1693| ValueCategory = prvalue -# 1694| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1694| Type = [VoidType] void -# 1694| ValueCategory = prvalue -# 1694| getQualifier(): [VariableAccess] x558 -# 1694| Type = [Struct] String -# 1694| ValueCategory = lvalue -# 1694| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1694| Conversion = [BoolConversion] conversion to bool -# 1694| Type = [BoolType] bool -# 1694| Value = [CStyleCast] 0 -# 1694| ValueCategory = prvalue -# 1695| getStmt(559): [DoStmt] do (...) ... -# 1697| getCondition(): [Literal] 0 -# 1697| Type = [IntType] int -# 1697| Value = [Literal] 0 -# 1697| ValueCategory = prvalue -# 1695| getStmt(): [BlockStmt] { ... } -# 1696| getStmt(0): [DeclStmt] declaration -# 1696| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x559 -# 1696| Type = [Struct] String -# 1696| getVariable().getInitializer(): [Initializer] initializer for x559 -# 1696| getExpr(): [ConstructorCall] call to String -# 1696| Type = [VoidType] void -# 1696| ValueCategory = prvalue -# 1697| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1697| Type = [VoidType] void -# 1697| ValueCategory = prvalue -# 1697| getQualifier(): [VariableAccess] x559 -# 1697| Type = [Struct] String -# 1697| ValueCategory = lvalue -# 1697| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1697| Conversion = [BoolConversion] conversion to bool -# 1697| Type = [BoolType] bool -# 1697| Value = [CStyleCast] 0 -# 1697| ValueCategory = prvalue -# 1698| getStmt(560): [DoStmt] do (...) ... -# 1700| getCondition(): [Literal] 0 -# 1700| Type = [IntType] int -# 1700| Value = [Literal] 0 -# 1700| ValueCategory = prvalue -# 1698| getStmt(): [BlockStmt] { ... } -# 1699| getStmt(0): [DeclStmt] declaration -# 1699| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x560 -# 1699| Type = [Struct] String -# 1699| getVariable().getInitializer(): [Initializer] initializer for x560 -# 1699| getExpr(): [ConstructorCall] call to String -# 1699| Type = [VoidType] void -# 1699| ValueCategory = prvalue -# 1700| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1700| Type = [VoidType] void -# 1700| ValueCategory = prvalue -# 1700| getQualifier(): [VariableAccess] x560 -# 1700| Type = [Struct] String -# 1700| ValueCategory = lvalue -# 1700| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1700| Conversion = [BoolConversion] conversion to bool -# 1700| Type = [BoolType] bool -# 1700| Value = [CStyleCast] 0 -# 1700| ValueCategory = prvalue -# 1701| getStmt(561): [DoStmt] do (...) ... -# 1703| getCondition(): [Literal] 0 -# 1703| Type = [IntType] int -# 1703| Value = [Literal] 0 -# 1703| ValueCategory = prvalue -# 1701| getStmt(): [BlockStmt] { ... } -# 1702| getStmt(0): [DeclStmt] declaration -# 1702| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x561 -# 1702| Type = [Struct] String -# 1702| getVariable().getInitializer(): [Initializer] initializer for x561 -# 1702| getExpr(): [ConstructorCall] call to String -# 1702| Type = [VoidType] void -# 1702| ValueCategory = prvalue -# 1703| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1703| Type = [VoidType] void -# 1703| ValueCategory = prvalue -# 1703| getQualifier(): [VariableAccess] x561 -# 1703| Type = [Struct] String -# 1703| ValueCategory = lvalue -# 1703| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1703| Conversion = [BoolConversion] conversion to bool -# 1703| Type = [BoolType] bool -# 1703| Value = [CStyleCast] 0 -# 1703| ValueCategory = prvalue -# 1704| getStmt(562): [DoStmt] do (...) ... -# 1706| getCondition(): [Literal] 0 -# 1706| Type = [IntType] int -# 1706| Value = [Literal] 0 -# 1706| ValueCategory = prvalue -# 1704| getStmt(): [BlockStmt] { ... } -# 1705| getStmt(0): [DeclStmt] declaration -# 1705| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x562 -# 1705| Type = [Struct] String -# 1705| getVariable().getInitializer(): [Initializer] initializer for x562 -# 1705| getExpr(): [ConstructorCall] call to String -# 1705| Type = [VoidType] void -# 1705| ValueCategory = prvalue -# 1706| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1706| Type = [VoidType] void -# 1706| ValueCategory = prvalue -# 1706| getQualifier(): [VariableAccess] x562 -# 1706| Type = [Struct] String -# 1706| ValueCategory = lvalue -# 1706| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1706| Conversion = [BoolConversion] conversion to bool -# 1706| Type = [BoolType] bool -# 1706| Value = [CStyleCast] 0 -# 1706| ValueCategory = prvalue -# 1707| getStmt(563): [DoStmt] do (...) ... -# 1709| getCondition(): [Literal] 0 -# 1709| Type = [IntType] int -# 1709| Value = [Literal] 0 -# 1709| ValueCategory = prvalue -# 1707| getStmt(): [BlockStmt] { ... } -# 1708| getStmt(0): [DeclStmt] declaration -# 1708| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x563 -# 1708| Type = [Struct] String -# 1708| getVariable().getInitializer(): [Initializer] initializer for x563 -# 1708| getExpr(): [ConstructorCall] call to String -# 1708| Type = [VoidType] void -# 1708| ValueCategory = prvalue -# 1709| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1709| Type = [VoidType] void -# 1709| ValueCategory = prvalue -# 1709| getQualifier(): [VariableAccess] x563 -# 1709| Type = [Struct] String -# 1709| ValueCategory = lvalue -# 1709| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1709| Conversion = [BoolConversion] conversion to bool -# 1709| Type = [BoolType] bool -# 1709| Value = [CStyleCast] 0 -# 1709| ValueCategory = prvalue -# 1710| getStmt(564): [DoStmt] do (...) ... -# 1712| getCondition(): [Literal] 0 -# 1712| Type = [IntType] int -# 1712| Value = [Literal] 0 -# 1712| ValueCategory = prvalue -# 1710| getStmt(): [BlockStmt] { ... } -# 1711| getStmt(0): [DeclStmt] declaration -# 1711| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x564 -# 1711| Type = [Struct] String -# 1711| getVariable().getInitializer(): [Initializer] initializer for x564 -# 1711| getExpr(): [ConstructorCall] call to String -# 1711| Type = [VoidType] void -# 1711| ValueCategory = prvalue -# 1712| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1712| Type = [VoidType] void -# 1712| ValueCategory = prvalue -# 1712| getQualifier(): [VariableAccess] x564 -# 1712| Type = [Struct] String -# 1712| ValueCategory = lvalue -# 1712| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1712| Conversion = [BoolConversion] conversion to bool -# 1712| Type = [BoolType] bool -# 1712| Value = [CStyleCast] 0 -# 1712| ValueCategory = prvalue -# 1713| getStmt(565): [DoStmt] do (...) ... -# 1715| getCondition(): [Literal] 0 -# 1715| Type = [IntType] int -# 1715| Value = [Literal] 0 -# 1715| ValueCategory = prvalue -# 1713| getStmt(): [BlockStmt] { ... } -# 1714| getStmt(0): [DeclStmt] declaration -# 1714| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x565 -# 1714| Type = [Struct] String -# 1714| getVariable().getInitializer(): [Initializer] initializer for x565 -# 1714| getExpr(): [ConstructorCall] call to String -# 1714| Type = [VoidType] void -# 1714| ValueCategory = prvalue -# 1715| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1715| Type = [VoidType] void -# 1715| ValueCategory = prvalue -# 1715| getQualifier(): [VariableAccess] x565 -# 1715| Type = [Struct] String -# 1715| ValueCategory = lvalue -# 1715| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1715| Conversion = [BoolConversion] conversion to bool -# 1715| Type = [BoolType] bool -# 1715| Value = [CStyleCast] 0 -# 1715| ValueCategory = prvalue -# 1716| getStmt(566): [DoStmt] do (...) ... -# 1718| getCondition(): [Literal] 0 -# 1718| Type = [IntType] int -# 1718| Value = [Literal] 0 -# 1718| ValueCategory = prvalue -# 1716| getStmt(): [BlockStmt] { ... } -# 1717| getStmt(0): [DeclStmt] declaration -# 1717| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x566 -# 1717| Type = [Struct] String -# 1717| getVariable().getInitializer(): [Initializer] initializer for x566 -# 1717| getExpr(): [ConstructorCall] call to String -# 1717| Type = [VoidType] void -# 1717| ValueCategory = prvalue -# 1718| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1718| Type = [VoidType] void -# 1718| ValueCategory = prvalue -# 1718| getQualifier(): [VariableAccess] x566 -# 1718| Type = [Struct] String -# 1718| ValueCategory = lvalue -# 1718| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1718| Conversion = [BoolConversion] conversion to bool -# 1718| Type = [BoolType] bool -# 1718| Value = [CStyleCast] 0 -# 1718| ValueCategory = prvalue -# 1719| getStmt(567): [DoStmt] do (...) ... -# 1721| getCondition(): [Literal] 0 -# 1721| Type = [IntType] int -# 1721| Value = [Literal] 0 -# 1721| ValueCategory = prvalue -# 1719| getStmt(): [BlockStmt] { ... } -# 1720| getStmt(0): [DeclStmt] declaration -# 1720| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x567 -# 1720| Type = [Struct] String -# 1720| getVariable().getInitializer(): [Initializer] initializer for x567 -# 1720| getExpr(): [ConstructorCall] call to String -# 1720| Type = [VoidType] void -# 1720| ValueCategory = prvalue -# 1721| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1721| Type = [VoidType] void -# 1721| ValueCategory = prvalue -# 1721| getQualifier(): [VariableAccess] x567 -# 1721| Type = [Struct] String -# 1721| ValueCategory = lvalue -# 1721| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1721| Conversion = [BoolConversion] conversion to bool -# 1721| Type = [BoolType] bool -# 1721| Value = [CStyleCast] 0 -# 1721| ValueCategory = prvalue -# 1722| getStmt(568): [DoStmt] do (...) ... -# 1724| getCondition(): [Literal] 0 -# 1724| Type = [IntType] int -# 1724| Value = [Literal] 0 -# 1724| ValueCategory = prvalue -# 1722| getStmt(): [BlockStmt] { ... } -# 1723| getStmt(0): [DeclStmt] declaration -# 1723| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x568 -# 1723| Type = [Struct] String -# 1723| getVariable().getInitializer(): [Initializer] initializer for x568 -# 1723| getExpr(): [ConstructorCall] call to String -# 1723| Type = [VoidType] void -# 1723| ValueCategory = prvalue -# 1724| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1724| Type = [VoidType] void -# 1724| ValueCategory = prvalue -# 1724| getQualifier(): [VariableAccess] x568 -# 1724| Type = [Struct] String -# 1724| ValueCategory = lvalue -# 1724| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1724| Conversion = [BoolConversion] conversion to bool -# 1724| Type = [BoolType] bool -# 1724| Value = [CStyleCast] 0 -# 1724| ValueCategory = prvalue -# 1725| getStmt(569): [DoStmt] do (...) ... -# 1727| getCondition(): [Literal] 0 -# 1727| Type = [IntType] int -# 1727| Value = [Literal] 0 -# 1727| ValueCategory = prvalue -# 1725| getStmt(): [BlockStmt] { ... } -# 1726| getStmt(0): [DeclStmt] declaration -# 1726| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x569 -# 1726| Type = [Struct] String -# 1726| getVariable().getInitializer(): [Initializer] initializer for x569 -# 1726| getExpr(): [ConstructorCall] call to String -# 1726| Type = [VoidType] void -# 1726| ValueCategory = prvalue -# 1727| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1727| Type = [VoidType] void -# 1727| ValueCategory = prvalue -# 1727| getQualifier(): [VariableAccess] x569 -# 1727| Type = [Struct] String -# 1727| ValueCategory = lvalue -# 1727| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1727| Conversion = [BoolConversion] conversion to bool -# 1727| Type = [BoolType] bool -# 1727| Value = [CStyleCast] 0 -# 1727| ValueCategory = prvalue -# 1728| getStmt(570): [DoStmt] do (...) ... -# 1730| getCondition(): [Literal] 0 -# 1730| Type = [IntType] int -# 1730| Value = [Literal] 0 -# 1730| ValueCategory = prvalue -# 1728| getStmt(): [BlockStmt] { ... } -# 1729| getStmt(0): [DeclStmt] declaration -# 1729| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x570 -# 1729| Type = [Struct] String -# 1729| getVariable().getInitializer(): [Initializer] initializer for x570 -# 1729| getExpr(): [ConstructorCall] call to String -# 1729| Type = [VoidType] void -# 1729| ValueCategory = prvalue -# 1730| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1730| Type = [VoidType] void -# 1730| ValueCategory = prvalue -# 1730| getQualifier(): [VariableAccess] x570 -# 1730| Type = [Struct] String -# 1730| ValueCategory = lvalue -# 1730| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1730| Conversion = [BoolConversion] conversion to bool -# 1730| Type = [BoolType] bool -# 1730| Value = [CStyleCast] 0 -# 1730| ValueCategory = prvalue -# 1731| getStmt(571): [DoStmt] do (...) ... -# 1733| getCondition(): [Literal] 0 -# 1733| Type = [IntType] int -# 1733| Value = [Literal] 0 -# 1733| ValueCategory = prvalue -# 1731| getStmt(): [BlockStmt] { ... } -# 1732| getStmt(0): [DeclStmt] declaration -# 1732| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x571 -# 1732| Type = [Struct] String -# 1732| getVariable().getInitializer(): [Initializer] initializer for x571 -# 1732| getExpr(): [ConstructorCall] call to String -# 1732| Type = [VoidType] void -# 1732| ValueCategory = prvalue -# 1733| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1733| Type = [VoidType] void -# 1733| ValueCategory = prvalue -# 1733| getQualifier(): [VariableAccess] x571 -# 1733| Type = [Struct] String -# 1733| ValueCategory = lvalue -# 1733| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1733| Conversion = [BoolConversion] conversion to bool -# 1733| Type = [BoolType] bool -# 1733| Value = [CStyleCast] 0 -# 1733| ValueCategory = prvalue -# 1734| getStmt(572): [DoStmt] do (...) ... -# 1736| getCondition(): [Literal] 0 -# 1736| Type = [IntType] int -# 1736| Value = [Literal] 0 -# 1736| ValueCategory = prvalue -# 1734| getStmt(): [BlockStmt] { ... } -# 1735| getStmt(0): [DeclStmt] declaration -# 1735| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x572 -# 1735| Type = [Struct] String -# 1735| getVariable().getInitializer(): [Initializer] initializer for x572 -# 1735| getExpr(): [ConstructorCall] call to String -# 1735| Type = [VoidType] void -# 1735| ValueCategory = prvalue -# 1736| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1736| Type = [VoidType] void -# 1736| ValueCategory = prvalue -# 1736| getQualifier(): [VariableAccess] x572 -# 1736| Type = [Struct] String -# 1736| ValueCategory = lvalue -# 1736| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1736| Conversion = [BoolConversion] conversion to bool -# 1736| Type = [BoolType] bool -# 1736| Value = [CStyleCast] 0 -# 1736| ValueCategory = prvalue -# 1737| getStmt(573): [DoStmt] do (...) ... -# 1739| getCondition(): [Literal] 0 -# 1739| Type = [IntType] int -# 1739| Value = [Literal] 0 -# 1739| ValueCategory = prvalue -# 1737| getStmt(): [BlockStmt] { ... } -# 1738| getStmt(0): [DeclStmt] declaration -# 1738| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x573 -# 1738| Type = [Struct] String -# 1738| getVariable().getInitializer(): [Initializer] initializer for x573 -# 1738| getExpr(): [ConstructorCall] call to String -# 1738| Type = [VoidType] void -# 1738| ValueCategory = prvalue -# 1739| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1739| Type = [VoidType] void -# 1739| ValueCategory = prvalue -# 1739| getQualifier(): [VariableAccess] x573 -# 1739| Type = [Struct] String -# 1739| ValueCategory = lvalue -# 1739| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1739| Conversion = [BoolConversion] conversion to bool -# 1739| Type = [BoolType] bool -# 1739| Value = [CStyleCast] 0 -# 1739| ValueCategory = prvalue -# 1740| getStmt(574): [DoStmt] do (...) ... -# 1742| getCondition(): [Literal] 0 -# 1742| Type = [IntType] int -# 1742| Value = [Literal] 0 -# 1742| ValueCategory = prvalue -# 1740| getStmt(): [BlockStmt] { ... } -# 1741| getStmt(0): [DeclStmt] declaration -# 1741| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x574 -# 1741| Type = [Struct] String -# 1741| getVariable().getInitializer(): [Initializer] initializer for x574 -# 1741| getExpr(): [ConstructorCall] call to String -# 1741| Type = [VoidType] void -# 1741| ValueCategory = prvalue -# 1742| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1742| Type = [VoidType] void -# 1742| ValueCategory = prvalue -# 1742| getQualifier(): [VariableAccess] x574 -# 1742| Type = [Struct] String -# 1742| ValueCategory = lvalue -# 1742| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1742| Conversion = [BoolConversion] conversion to bool -# 1742| Type = [BoolType] bool -# 1742| Value = [CStyleCast] 0 -# 1742| ValueCategory = prvalue -# 1743| getStmt(575): [DoStmt] do (...) ... -# 1745| getCondition(): [Literal] 0 -# 1745| Type = [IntType] int -# 1745| Value = [Literal] 0 -# 1745| ValueCategory = prvalue -# 1743| getStmt(): [BlockStmt] { ... } -# 1744| getStmt(0): [DeclStmt] declaration -# 1744| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x575 -# 1744| Type = [Struct] String -# 1744| getVariable().getInitializer(): [Initializer] initializer for x575 -# 1744| getExpr(): [ConstructorCall] call to String -# 1744| Type = [VoidType] void -# 1744| ValueCategory = prvalue -# 1745| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1745| Type = [VoidType] void -# 1745| ValueCategory = prvalue -# 1745| getQualifier(): [VariableAccess] x575 -# 1745| Type = [Struct] String -# 1745| ValueCategory = lvalue -# 1745| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1745| Conversion = [BoolConversion] conversion to bool -# 1745| Type = [BoolType] bool -# 1745| Value = [CStyleCast] 0 -# 1745| ValueCategory = prvalue -# 1746| getStmt(576): [DoStmt] do (...) ... -# 1748| getCondition(): [Literal] 0 -# 1748| Type = [IntType] int -# 1748| Value = [Literal] 0 -# 1748| ValueCategory = prvalue -# 1746| getStmt(): [BlockStmt] { ... } -# 1747| getStmt(0): [DeclStmt] declaration -# 1747| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x576 -# 1747| Type = [Struct] String -# 1747| getVariable().getInitializer(): [Initializer] initializer for x576 -# 1747| getExpr(): [ConstructorCall] call to String -# 1747| Type = [VoidType] void -# 1747| ValueCategory = prvalue -# 1748| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1748| Type = [VoidType] void -# 1748| ValueCategory = prvalue -# 1748| getQualifier(): [VariableAccess] x576 -# 1748| Type = [Struct] String -# 1748| ValueCategory = lvalue -# 1748| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1748| Conversion = [BoolConversion] conversion to bool -# 1748| Type = [BoolType] bool -# 1748| Value = [CStyleCast] 0 -# 1748| ValueCategory = prvalue -# 1749| getStmt(577): [DoStmt] do (...) ... -# 1751| getCondition(): [Literal] 0 -# 1751| Type = [IntType] int -# 1751| Value = [Literal] 0 -# 1751| ValueCategory = prvalue -# 1749| getStmt(): [BlockStmt] { ... } -# 1750| getStmt(0): [DeclStmt] declaration -# 1750| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x577 -# 1750| Type = [Struct] String -# 1750| getVariable().getInitializer(): [Initializer] initializer for x577 -# 1750| getExpr(): [ConstructorCall] call to String -# 1750| Type = [VoidType] void -# 1750| ValueCategory = prvalue -# 1751| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1751| Type = [VoidType] void -# 1751| ValueCategory = prvalue -# 1751| getQualifier(): [VariableAccess] x577 -# 1751| Type = [Struct] String -# 1751| ValueCategory = lvalue -# 1751| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1751| Conversion = [BoolConversion] conversion to bool -# 1751| Type = [BoolType] bool -# 1751| Value = [CStyleCast] 0 -# 1751| ValueCategory = prvalue -# 1752| getStmt(578): [DoStmt] do (...) ... -# 1754| getCondition(): [Literal] 0 -# 1754| Type = [IntType] int -# 1754| Value = [Literal] 0 -# 1754| ValueCategory = prvalue -# 1752| getStmt(): [BlockStmt] { ... } -# 1753| getStmt(0): [DeclStmt] declaration -# 1753| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x578 -# 1753| Type = [Struct] String -# 1753| getVariable().getInitializer(): [Initializer] initializer for x578 -# 1753| getExpr(): [ConstructorCall] call to String -# 1753| Type = [VoidType] void -# 1753| ValueCategory = prvalue -# 1754| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1754| Type = [VoidType] void -# 1754| ValueCategory = prvalue -# 1754| getQualifier(): [VariableAccess] x578 -# 1754| Type = [Struct] String -# 1754| ValueCategory = lvalue -# 1754| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1754| Conversion = [BoolConversion] conversion to bool -# 1754| Type = [BoolType] bool -# 1754| Value = [CStyleCast] 0 -# 1754| ValueCategory = prvalue -# 1755| getStmt(579): [DoStmt] do (...) ... -# 1757| getCondition(): [Literal] 0 -# 1757| Type = [IntType] int -# 1757| Value = [Literal] 0 -# 1757| ValueCategory = prvalue -# 1755| getStmt(): [BlockStmt] { ... } -# 1756| getStmt(0): [DeclStmt] declaration -# 1756| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x579 -# 1756| Type = [Struct] String -# 1756| getVariable().getInitializer(): [Initializer] initializer for x579 -# 1756| getExpr(): [ConstructorCall] call to String -# 1756| Type = [VoidType] void -# 1756| ValueCategory = prvalue -# 1757| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1757| Type = [VoidType] void -# 1757| ValueCategory = prvalue -# 1757| getQualifier(): [VariableAccess] x579 -# 1757| Type = [Struct] String -# 1757| ValueCategory = lvalue -# 1757| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1757| Conversion = [BoolConversion] conversion to bool -# 1757| Type = [BoolType] bool -# 1757| Value = [CStyleCast] 0 -# 1757| ValueCategory = prvalue -# 1758| getStmt(580): [DoStmt] do (...) ... -# 1760| getCondition(): [Literal] 0 -# 1760| Type = [IntType] int -# 1760| Value = [Literal] 0 -# 1760| ValueCategory = prvalue -# 1758| getStmt(): [BlockStmt] { ... } -# 1759| getStmt(0): [DeclStmt] declaration -# 1759| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x580 -# 1759| Type = [Struct] String -# 1759| getVariable().getInitializer(): [Initializer] initializer for x580 -# 1759| getExpr(): [ConstructorCall] call to String -# 1759| Type = [VoidType] void -# 1759| ValueCategory = prvalue -# 1760| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1760| Type = [VoidType] void -# 1760| ValueCategory = prvalue -# 1760| getQualifier(): [VariableAccess] x580 -# 1760| Type = [Struct] String -# 1760| ValueCategory = lvalue -# 1760| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1760| Conversion = [BoolConversion] conversion to bool -# 1760| Type = [BoolType] bool -# 1760| Value = [CStyleCast] 0 -# 1760| ValueCategory = prvalue -# 1761| getStmt(581): [DoStmt] do (...) ... -# 1763| getCondition(): [Literal] 0 -# 1763| Type = [IntType] int -# 1763| Value = [Literal] 0 -# 1763| ValueCategory = prvalue -# 1761| getStmt(): [BlockStmt] { ... } -# 1762| getStmt(0): [DeclStmt] declaration -# 1762| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x581 -# 1762| Type = [Struct] String -# 1762| getVariable().getInitializer(): [Initializer] initializer for x581 -# 1762| getExpr(): [ConstructorCall] call to String -# 1762| Type = [VoidType] void -# 1762| ValueCategory = prvalue -# 1763| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1763| Type = [VoidType] void -# 1763| ValueCategory = prvalue -# 1763| getQualifier(): [VariableAccess] x581 -# 1763| Type = [Struct] String -# 1763| ValueCategory = lvalue -# 1763| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1763| Conversion = [BoolConversion] conversion to bool -# 1763| Type = [BoolType] bool -# 1763| Value = [CStyleCast] 0 -# 1763| ValueCategory = prvalue -# 1764| getStmt(582): [DoStmt] do (...) ... -# 1766| getCondition(): [Literal] 0 -# 1766| Type = [IntType] int -# 1766| Value = [Literal] 0 -# 1766| ValueCategory = prvalue -# 1764| getStmt(): [BlockStmt] { ... } -# 1765| getStmt(0): [DeclStmt] declaration -# 1765| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x582 -# 1765| Type = [Struct] String -# 1765| getVariable().getInitializer(): [Initializer] initializer for x582 -# 1765| getExpr(): [ConstructorCall] call to String -# 1765| Type = [VoidType] void -# 1765| ValueCategory = prvalue -# 1766| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1766| Type = [VoidType] void -# 1766| ValueCategory = prvalue -# 1766| getQualifier(): [VariableAccess] x582 -# 1766| Type = [Struct] String -# 1766| ValueCategory = lvalue -# 1766| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1766| Conversion = [BoolConversion] conversion to bool -# 1766| Type = [BoolType] bool -# 1766| Value = [CStyleCast] 0 -# 1766| ValueCategory = prvalue -# 1767| getStmt(583): [DoStmt] do (...) ... -# 1769| getCondition(): [Literal] 0 -# 1769| Type = [IntType] int -# 1769| Value = [Literal] 0 -# 1769| ValueCategory = prvalue -# 1767| getStmt(): [BlockStmt] { ... } -# 1768| getStmt(0): [DeclStmt] declaration -# 1768| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x583 -# 1768| Type = [Struct] String -# 1768| getVariable().getInitializer(): [Initializer] initializer for x583 -# 1768| getExpr(): [ConstructorCall] call to String -# 1768| Type = [VoidType] void -# 1768| ValueCategory = prvalue -# 1769| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1769| Type = [VoidType] void -# 1769| ValueCategory = prvalue -# 1769| getQualifier(): [VariableAccess] x583 -# 1769| Type = [Struct] String -# 1769| ValueCategory = lvalue -# 1769| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1769| Conversion = [BoolConversion] conversion to bool -# 1769| Type = [BoolType] bool -# 1769| Value = [CStyleCast] 0 -# 1769| ValueCategory = prvalue -# 1770| getStmt(584): [DoStmt] do (...) ... -# 1772| getCondition(): [Literal] 0 -# 1772| Type = [IntType] int -# 1772| Value = [Literal] 0 -# 1772| ValueCategory = prvalue -# 1770| getStmt(): [BlockStmt] { ... } -# 1771| getStmt(0): [DeclStmt] declaration -# 1771| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x584 -# 1771| Type = [Struct] String -# 1771| getVariable().getInitializer(): [Initializer] initializer for x584 -# 1771| getExpr(): [ConstructorCall] call to String -# 1771| Type = [VoidType] void -# 1771| ValueCategory = prvalue -# 1772| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1772| Type = [VoidType] void -# 1772| ValueCategory = prvalue -# 1772| getQualifier(): [VariableAccess] x584 -# 1772| Type = [Struct] String -# 1772| ValueCategory = lvalue -# 1772| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1772| Conversion = [BoolConversion] conversion to bool -# 1772| Type = [BoolType] bool -# 1772| Value = [CStyleCast] 0 -# 1772| ValueCategory = prvalue -# 1773| getStmt(585): [DoStmt] do (...) ... -# 1775| getCondition(): [Literal] 0 -# 1775| Type = [IntType] int -# 1775| Value = [Literal] 0 -# 1775| ValueCategory = prvalue -# 1773| getStmt(): [BlockStmt] { ... } -# 1774| getStmt(0): [DeclStmt] declaration -# 1774| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x585 -# 1774| Type = [Struct] String -# 1774| getVariable().getInitializer(): [Initializer] initializer for x585 -# 1774| getExpr(): [ConstructorCall] call to String -# 1774| Type = [VoidType] void -# 1774| ValueCategory = prvalue -# 1775| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1775| Type = [VoidType] void -# 1775| ValueCategory = prvalue -# 1775| getQualifier(): [VariableAccess] x585 -# 1775| Type = [Struct] String -# 1775| ValueCategory = lvalue -# 1775| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1775| Conversion = [BoolConversion] conversion to bool -# 1775| Type = [BoolType] bool -# 1775| Value = [CStyleCast] 0 -# 1775| ValueCategory = prvalue -# 1776| getStmt(586): [DoStmt] do (...) ... -# 1778| getCondition(): [Literal] 0 -# 1778| Type = [IntType] int -# 1778| Value = [Literal] 0 -# 1778| ValueCategory = prvalue -# 1776| getStmt(): [BlockStmt] { ... } -# 1777| getStmt(0): [DeclStmt] declaration -# 1777| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x586 -# 1777| Type = [Struct] String -# 1777| getVariable().getInitializer(): [Initializer] initializer for x586 -# 1777| getExpr(): [ConstructorCall] call to String -# 1777| Type = [VoidType] void -# 1777| ValueCategory = prvalue -# 1778| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1778| Type = [VoidType] void -# 1778| ValueCategory = prvalue -# 1778| getQualifier(): [VariableAccess] x586 -# 1778| Type = [Struct] String -# 1778| ValueCategory = lvalue -# 1778| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1778| Conversion = [BoolConversion] conversion to bool -# 1778| Type = [BoolType] bool -# 1778| Value = [CStyleCast] 0 -# 1778| ValueCategory = prvalue -# 1779| getStmt(587): [DoStmt] do (...) ... -# 1781| getCondition(): [Literal] 0 -# 1781| Type = [IntType] int -# 1781| Value = [Literal] 0 -# 1781| ValueCategory = prvalue -# 1779| getStmt(): [BlockStmt] { ... } -# 1780| getStmt(0): [DeclStmt] declaration -# 1780| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x587 -# 1780| Type = [Struct] String -# 1780| getVariable().getInitializer(): [Initializer] initializer for x587 -# 1780| getExpr(): [ConstructorCall] call to String -# 1780| Type = [VoidType] void -# 1780| ValueCategory = prvalue -# 1781| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1781| Type = [VoidType] void -# 1781| ValueCategory = prvalue -# 1781| getQualifier(): [VariableAccess] x587 -# 1781| Type = [Struct] String -# 1781| ValueCategory = lvalue -# 1781| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1781| Conversion = [BoolConversion] conversion to bool -# 1781| Type = [BoolType] bool -# 1781| Value = [CStyleCast] 0 -# 1781| ValueCategory = prvalue -# 1782| getStmt(588): [DoStmt] do (...) ... -# 1784| getCondition(): [Literal] 0 -# 1784| Type = [IntType] int -# 1784| Value = [Literal] 0 -# 1784| ValueCategory = prvalue -# 1782| getStmt(): [BlockStmt] { ... } -# 1783| getStmt(0): [DeclStmt] declaration -# 1783| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x588 -# 1783| Type = [Struct] String -# 1783| getVariable().getInitializer(): [Initializer] initializer for x588 -# 1783| getExpr(): [ConstructorCall] call to String -# 1783| Type = [VoidType] void -# 1783| ValueCategory = prvalue -# 1784| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1784| Type = [VoidType] void -# 1784| ValueCategory = prvalue -# 1784| getQualifier(): [VariableAccess] x588 -# 1784| Type = [Struct] String -# 1784| ValueCategory = lvalue -# 1784| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1784| Conversion = [BoolConversion] conversion to bool -# 1784| Type = [BoolType] bool -# 1784| Value = [CStyleCast] 0 -# 1784| ValueCategory = prvalue -# 1785| getStmt(589): [DoStmt] do (...) ... -# 1787| getCondition(): [Literal] 0 -# 1787| Type = [IntType] int -# 1787| Value = [Literal] 0 -# 1787| ValueCategory = prvalue -# 1785| getStmt(): [BlockStmt] { ... } -# 1786| getStmt(0): [DeclStmt] declaration -# 1786| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x589 -# 1786| Type = [Struct] String -# 1786| getVariable().getInitializer(): [Initializer] initializer for x589 -# 1786| getExpr(): [ConstructorCall] call to String -# 1786| Type = [VoidType] void -# 1786| ValueCategory = prvalue -# 1787| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1787| Type = [VoidType] void -# 1787| ValueCategory = prvalue -# 1787| getQualifier(): [VariableAccess] x589 -# 1787| Type = [Struct] String -# 1787| ValueCategory = lvalue -# 1787| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1787| Conversion = [BoolConversion] conversion to bool -# 1787| Type = [BoolType] bool -# 1787| Value = [CStyleCast] 0 -# 1787| ValueCategory = prvalue -# 1788| getStmt(590): [DoStmt] do (...) ... -# 1790| getCondition(): [Literal] 0 -# 1790| Type = [IntType] int -# 1790| Value = [Literal] 0 -# 1790| ValueCategory = prvalue -# 1788| getStmt(): [BlockStmt] { ... } -# 1789| getStmt(0): [DeclStmt] declaration -# 1789| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x590 -# 1789| Type = [Struct] String -# 1789| getVariable().getInitializer(): [Initializer] initializer for x590 -# 1789| getExpr(): [ConstructorCall] call to String -# 1789| Type = [VoidType] void -# 1789| ValueCategory = prvalue -# 1790| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1790| Type = [VoidType] void -# 1790| ValueCategory = prvalue -# 1790| getQualifier(): [VariableAccess] x590 -# 1790| Type = [Struct] String -# 1790| ValueCategory = lvalue -# 1790| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1790| Conversion = [BoolConversion] conversion to bool -# 1790| Type = [BoolType] bool -# 1790| Value = [CStyleCast] 0 -# 1790| ValueCategory = prvalue -# 1791| getStmt(591): [DoStmt] do (...) ... -# 1793| getCondition(): [Literal] 0 -# 1793| Type = [IntType] int -# 1793| Value = [Literal] 0 -# 1793| ValueCategory = prvalue -# 1791| getStmt(): [BlockStmt] { ... } -# 1792| getStmt(0): [DeclStmt] declaration -# 1792| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x591 -# 1792| Type = [Struct] String -# 1792| getVariable().getInitializer(): [Initializer] initializer for x591 -# 1792| getExpr(): [ConstructorCall] call to String -# 1792| Type = [VoidType] void -# 1792| ValueCategory = prvalue -# 1793| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1793| Type = [VoidType] void -# 1793| ValueCategory = prvalue -# 1793| getQualifier(): [VariableAccess] x591 -# 1793| Type = [Struct] String -# 1793| ValueCategory = lvalue -# 1793| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1793| Conversion = [BoolConversion] conversion to bool -# 1793| Type = [BoolType] bool -# 1793| Value = [CStyleCast] 0 -# 1793| ValueCategory = prvalue -# 1794| getStmt(592): [DoStmt] do (...) ... -# 1796| getCondition(): [Literal] 0 -# 1796| Type = [IntType] int -# 1796| Value = [Literal] 0 -# 1796| ValueCategory = prvalue -# 1794| getStmt(): [BlockStmt] { ... } -# 1795| getStmt(0): [DeclStmt] declaration -# 1795| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x592 -# 1795| Type = [Struct] String -# 1795| getVariable().getInitializer(): [Initializer] initializer for x592 -# 1795| getExpr(): [ConstructorCall] call to String -# 1795| Type = [VoidType] void -# 1795| ValueCategory = prvalue -# 1796| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1796| Type = [VoidType] void -# 1796| ValueCategory = prvalue -# 1796| getQualifier(): [VariableAccess] x592 -# 1796| Type = [Struct] String -# 1796| ValueCategory = lvalue -# 1796| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1796| Conversion = [BoolConversion] conversion to bool -# 1796| Type = [BoolType] bool -# 1796| Value = [CStyleCast] 0 -# 1796| ValueCategory = prvalue -# 1797| getStmt(593): [DoStmt] do (...) ... -# 1799| getCondition(): [Literal] 0 -# 1799| Type = [IntType] int -# 1799| Value = [Literal] 0 -# 1799| ValueCategory = prvalue -# 1797| getStmt(): [BlockStmt] { ... } -# 1798| getStmt(0): [DeclStmt] declaration -# 1798| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x593 -# 1798| Type = [Struct] String -# 1798| getVariable().getInitializer(): [Initializer] initializer for x593 -# 1798| getExpr(): [ConstructorCall] call to String -# 1798| Type = [VoidType] void -# 1798| ValueCategory = prvalue -# 1799| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1799| Type = [VoidType] void -# 1799| ValueCategory = prvalue -# 1799| getQualifier(): [VariableAccess] x593 -# 1799| Type = [Struct] String -# 1799| ValueCategory = lvalue -# 1799| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1799| Conversion = [BoolConversion] conversion to bool -# 1799| Type = [BoolType] bool -# 1799| Value = [CStyleCast] 0 -# 1799| ValueCategory = prvalue -# 1800| getStmt(594): [DoStmt] do (...) ... -# 1802| getCondition(): [Literal] 0 -# 1802| Type = [IntType] int -# 1802| Value = [Literal] 0 -# 1802| ValueCategory = prvalue -# 1800| getStmt(): [BlockStmt] { ... } -# 1801| getStmt(0): [DeclStmt] declaration -# 1801| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x594 -# 1801| Type = [Struct] String -# 1801| getVariable().getInitializer(): [Initializer] initializer for x594 -# 1801| getExpr(): [ConstructorCall] call to String -# 1801| Type = [VoidType] void -# 1801| ValueCategory = prvalue -# 1802| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1802| Type = [VoidType] void -# 1802| ValueCategory = prvalue -# 1802| getQualifier(): [VariableAccess] x594 -# 1802| Type = [Struct] String -# 1802| ValueCategory = lvalue -# 1802| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1802| Conversion = [BoolConversion] conversion to bool -# 1802| Type = [BoolType] bool -# 1802| Value = [CStyleCast] 0 -# 1802| ValueCategory = prvalue -# 1803| getStmt(595): [DoStmt] do (...) ... -# 1805| getCondition(): [Literal] 0 -# 1805| Type = [IntType] int -# 1805| Value = [Literal] 0 -# 1805| ValueCategory = prvalue -# 1803| getStmt(): [BlockStmt] { ... } -# 1804| getStmt(0): [DeclStmt] declaration -# 1804| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x595 -# 1804| Type = [Struct] String -# 1804| getVariable().getInitializer(): [Initializer] initializer for x595 -# 1804| getExpr(): [ConstructorCall] call to String -# 1804| Type = [VoidType] void -# 1804| ValueCategory = prvalue -# 1805| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1805| Type = [VoidType] void -# 1805| ValueCategory = prvalue -# 1805| getQualifier(): [VariableAccess] x595 -# 1805| Type = [Struct] String -# 1805| ValueCategory = lvalue -# 1805| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1805| Conversion = [BoolConversion] conversion to bool -# 1805| Type = [BoolType] bool -# 1805| Value = [CStyleCast] 0 -# 1805| ValueCategory = prvalue -# 1806| getStmt(596): [DoStmt] do (...) ... -# 1808| getCondition(): [Literal] 0 -# 1808| Type = [IntType] int -# 1808| Value = [Literal] 0 -# 1808| ValueCategory = prvalue -# 1806| getStmt(): [BlockStmt] { ... } -# 1807| getStmt(0): [DeclStmt] declaration -# 1807| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x596 -# 1807| Type = [Struct] String -# 1807| getVariable().getInitializer(): [Initializer] initializer for x596 -# 1807| getExpr(): [ConstructorCall] call to String -# 1807| Type = [VoidType] void -# 1807| ValueCategory = prvalue -# 1808| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1808| Type = [VoidType] void -# 1808| ValueCategory = prvalue -# 1808| getQualifier(): [VariableAccess] x596 -# 1808| Type = [Struct] String -# 1808| ValueCategory = lvalue -# 1808| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1808| Conversion = [BoolConversion] conversion to bool -# 1808| Type = [BoolType] bool -# 1808| Value = [CStyleCast] 0 -# 1808| ValueCategory = prvalue -# 1809| getStmt(597): [DoStmt] do (...) ... -# 1811| getCondition(): [Literal] 0 -# 1811| Type = [IntType] int -# 1811| Value = [Literal] 0 -# 1811| ValueCategory = prvalue -# 1809| getStmt(): [BlockStmt] { ... } -# 1810| getStmt(0): [DeclStmt] declaration -# 1810| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x597 -# 1810| Type = [Struct] String -# 1810| getVariable().getInitializer(): [Initializer] initializer for x597 -# 1810| getExpr(): [ConstructorCall] call to String -# 1810| Type = [VoidType] void -# 1810| ValueCategory = prvalue -# 1811| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1811| Type = [VoidType] void -# 1811| ValueCategory = prvalue -# 1811| getQualifier(): [VariableAccess] x597 -# 1811| Type = [Struct] String -# 1811| ValueCategory = lvalue -# 1811| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1811| Conversion = [BoolConversion] conversion to bool -# 1811| Type = [BoolType] bool -# 1811| Value = [CStyleCast] 0 -# 1811| ValueCategory = prvalue -# 1812| getStmt(598): [DoStmt] do (...) ... -# 1814| getCondition(): [Literal] 0 -# 1814| Type = [IntType] int -# 1814| Value = [Literal] 0 -# 1814| ValueCategory = prvalue -# 1812| getStmt(): [BlockStmt] { ... } -# 1813| getStmt(0): [DeclStmt] declaration -# 1813| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x598 -# 1813| Type = [Struct] String -# 1813| getVariable().getInitializer(): [Initializer] initializer for x598 -# 1813| getExpr(): [ConstructorCall] call to String -# 1813| Type = [VoidType] void -# 1813| ValueCategory = prvalue -# 1814| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1814| Type = [VoidType] void -# 1814| ValueCategory = prvalue -# 1814| getQualifier(): [VariableAccess] x598 -# 1814| Type = [Struct] String -# 1814| ValueCategory = lvalue -# 1814| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1814| Conversion = [BoolConversion] conversion to bool -# 1814| Type = [BoolType] bool -# 1814| Value = [CStyleCast] 0 -# 1814| ValueCategory = prvalue -# 1815| getStmt(599): [DoStmt] do (...) ... -# 1817| getCondition(): [Literal] 0 -# 1817| Type = [IntType] int -# 1817| Value = [Literal] 0 -# 1817| ValueCategory = prvalue -# 1815| getStmt(): [BlockStmt] { ... } -# 1816| getStmt(0): [DeclStmt] declaration -# 1816| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x599 -# 1816| Type = [Struct] String -# 1816| getVariable().getInitializer(): [Initializer] initializer for x599 -# 1816| getExpr(): [ConstructorCall] call to String -# 1816| Type = [VoidType] void -# 1816| ValueCategory = prvalue -# 1817| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1817| Type = [VoidType] void -# 1817| ValueCategory = prvalue -# 1817| getQualifier(): [VariableAccess] x599 -# 1817| Type = [Struct] String -# 1817| ValueCategory = lvalue -# 1817| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1817| Conversion = [BoolConversion] conversion to bool -# 1817| Type = [BoolType] bool -# 1817| Value = [CStyleCast] 0 -# 1817| ValueCategory = prvalue -# 1818| getStmt(600): [DoStmt] do (...) ... -# 1820| getCondition(): [Literal] 0 -# 1820| Type = [IntType] int -# 1820| Value = [Literal] 0 -# 1820| ValueCategory = prvalue -# 1818| getStmt(): [BlockStmt] { ... } -# 1819| getStmt(0): [DeclStmt] declaration -# 1819| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x600 -# 1819| Type = [Struct] String -# 1819| getVariable().getInitializer(): [Initializer] initializer for x600 -# 1819| getExpr(): [ConstructorCall] call to String -# 1819| Type = [VoidType] void -# 1819| ValueCategory = prvalue -# 1820| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1820| Type = [VoidType] void -# 1820| ValueCategory = prvalue -# 1820| getQualifier(): [VariableAccess] x600 -# 1820| Type = [Struct] String -# 1820| ValueCategory = lvalue -# 1820| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1820| Conversion = [BoolConversion] conversion to bool -# 1820| Type = [BoolType] bool -# 1820| Value = [CStyleCast] 0 -# 1820| ValueCategory = prvalue -# 1821| getStmt(601): [DoStmt] do (...) ... -# 1823| getCondition(): [Literal] 0 -# 1823| Type = [IntType] int -# 1823| Value = [Literal] 0 -# 1823| ValueCategory = prvalue -# 1821| getStmt(): [BlockStmt] { ... } -# 1822| getStmt(0): [DeclStmt] declaration -# 1822| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x601 -# 1822| Type = [Struct] String -# 1822| getVariable().getInitializer(): [Initializer] initializer for x601 -# 1822| getExpr(): [ConstructorCall] call to String -# 1822| Type = [VoidType] void -# 1822| ValueCategory = prvalue -# 1823| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1823| Type = [VoidType] void -# 1823| ValueCategory = prvalue -# 1823| getQualifier(): [VariableAccess] x601 -# 1823| Type = [Struct] String -# 1823| ValueCategory = lvalue -# 1823| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1823| Conversion = [BoolConversion] conversion to bool -# 1823| Type = [BoolType] bool -# 1823| Value = [CStyleCast] 0 -# 1823| ValueCategory = prvalue -# 1824| getStmt(602): [DoStmt] do (...) ... -# 1826| getCondition(): [Literal] 0 -# 1826| Type = [IntType] int -# 1826| Value = [Literal] 0 -# 1826| ValueCategory = prvalue -# 1824| getStmt(): [BlockStmt] { ... } -# 1825| getStmt(0): [DeclStmt] declaration -# 1825| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x602 -# 1825| Type = [Struct] String -# 1825| getVariable().getInitializer(): [Initializer] initializer for x602 -# 1825| getExpr(): [ConstructorCall] call to String -# 1825| Type = [VoidType] void -# 1825| ValueCategory = prvalue -# 1826| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1826| Type = [VoidType] void -# 1826| ValueCategory = prvalue -# 1826| getQualifier(): [VariableAccess] x602 -# 1826| Type = [Struct] String -# 1826| ValueCategory = lvalue -# 1826| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1826| Conversion = [BoolConversion] conversion to bool -# 1826| Type = [BoolType] bool -# 1826| Value = [CStyleCast] 0 -# 1826| ValueCategory = prvalue -# 1827| getStmt(603): [DoStmt] do (...) ... -# 1829| getCondition(): [Literal] 0 -# 1829| Type = [IntType] int -# 1829| Value = [Literal] 0 -# 1829| ValueCategory = prvalue -# 1827| getStmt(): [BlockStmt] { ... } -# 1828| getStmt(0): [DeclStmt] declaration -# 1828| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x603 -# 1828| Type = [Struct] String -# 1828| getVariable().getInitializer(): [Initializer] initializer for x603 -# 1828| getExpr(): [ConstructorCall] call to String -# 1828| Type = [VoidType] void -# 1828| ValueCategory = prvalue -# 1829| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1829| Type = [VoidType] void -# 1829| ValueCategory = prvalue -# 1829| getQualifier(): [VariableAccess] x603 -# 1829| Type = [Struct] String -# 1829| ValueCategory = lvalue -# 1829| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1829| Conversion = [BoolConversion] conversion to bool -# 1829| Type = [BoolType] bool -# 1829| Value = [CStyleCast] 0 -# 1829| ValueCategory = prvalue -# 1830| getStmt(604): [DoStmt] do (...) ... -# 1832| getCondition(): [Literal] 0 -# 1832| Type = [IntType] int -# 1832| Value = [Literal] 0 -# 1832| ValueCategory = prvalue -# 1830| getStmt(): [BlockStmt] { ... } -# 1831| getStmt(0): [DeclStmt] declaration -# 1831| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x604 -# 1831| Type = [Struct] String -# 1831| getVariable().getInitializer(): [Initializer] initializer for x604 -# 1831| getExpr(): [ConstructorCall] call to String -# 1831| Type = [VoidType] void -# 1831| ValueCategory = prvalue -# 1832| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1832| Type = [VoidType] void -# 1832| ValueCategory = prvalue -# 1832| getQualifier(): [VariableAccess] x604 -# 1832| Type = [Struct] String -# 1832| ValueCategory = lvalue -# 1832| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1832| Conversion = [BoolConversion] conversion to bool -# 1832| Type = [BoolType] bool -# 1832| Value = [CStyleCast] 0 -# 1832| ValueCategory = prvalue -# 1833| getStmt(605): [DoStmt] do (...) ... -# 1835| getCondition(): [Literal] 0 -# 1835| Type = [IntType] int -# 1835| Value = [Literal] 0 -# 1835| ValueCategory = prvalue -# 1833| getStmt(): [BlockStmt] { ... } -# 1834| getStmt(0): [DeclStmt] declaration -# 1834| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x605 -# 1834| Type = [Struct] String -# 1834| getVariable().getInitializer(): [Initializer] initializer for x605 -# 1834| getExpr(): [ConstructorCall] call to String -# 1834| Type = [VoidType] void -# 1834| ValueCategory = prvalue -# 1835| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1835| Type = [VoidType] void -# 1835| ValueCategory = prvalue -# 1835| getQualifier(): [VariableAccess] x605 -# 1835| Type = [Struct] String -# 1835| ValueCategory = lvalue -# 1835| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1835| Conversion = [BoolConversion] conversion to bool -# 1835| Type = [BoolType] bool -# 1835| Value = [CStyleCast] 0 -# 1835| ValueCategory = prvalue -# 1836| getStmt(606): [DoStmt] do (...) ... -# 1838| getCondition(): [Literal] 0 -# 1838| Type = [IntType] int -# 1838| Value = [Literal] 0 -# 1838| ValueCategory = prvalue -# 1836| getStmt(): [BlockStmt] { ... } -# 1837| getStmt(0): [DeclStmt] declaration -# 1837| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x606 -# 1837| Type = [Struct] String -# 1837| getVariable().getInitializer(): [Initializer] initializer for x606 -# 1837| getExpr(): [ConstructorCall] call to String -# 1837| Type = [VoidType] void -# 1837| ValueCategory = prvalue -# 1838| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1838| Type = [VoidType] void -# 1838| ValueCategory = prvalue -# 1838| getQualifier(): [VariableAccess] x606 -# 1838| Type = [Struct] String -# 1838| ValueCategory = lvalue -# 1838| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1838| Conversion = [BoolConversion] conversion to bool -# 1838| Type = [BoolType] bool -# 1838| Value = [CStyleCast] 0 -# 1838| ValueCategory = prvalue -# 1839| getStmt(607): [DoStmt] do (...) ... -# 1841| getCondition(): [Literal] 0 -# 1841| Type = [IntType] int -# 1841| Value = [Literal] 0 -# 1841| ValueCategory = prvalue -# 1839| getStmt(): [BlockStmt] { ... } -# 1840| getStmt(0): [DeclStmt] declaration -# 1840| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x607 -# 1840| Type = [Struct] String -# 1840| getVariable().getInitializer(): [Initializer] initializer for x607 -# 1840| getExpr(): [ConstructorCall] call to String -# 1840| Type = [VoidType] void -# 1840| ValueCategory = prvalue -# 1841| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1841| Type = [VoidType] void -# 1841| ValueCategory = prvalue -# 1841| getQualifier(): [VariableAccess] x607 -# 1841| Type = [Struct] String -# 1841| ValueCategory = lvalue -# 1841| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1841| Conversion = [BoolConversion] conversion to bool -# 1841| Type = [BoolType] bool -# 1841| Value = [CStyleCast] 0 -# 1841| ValueCategory = prvalue -# 1842| getStmt(608): [DoStmt] do (...) ... -# 1844| getCondition(): [Literal] 0 -# 1844| Type = [IntType] int -# 1844| Value = [Literal] 0 -# 1844| ValueCategory = prvalue -# 1842| getStmt(): [BlockStmt] { ... } -# 1843| getStmt(0): [DeclStmt] declaration -# 1843| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x608 -# 1843| Type = [Struct] String -# 1843| getVariable().getInitializer(): [Initializer] initializer for x608 -# 1843| getExpr(): [ConstructorCall] call to String -# 1843| Type = [VoidType] void -# 1843| ValueCategory = prvalue -# 1844| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1844| Type = [VoidType] void -# 1844| ValueCategory = prvalue -# 1844| getQualifier(): [VariableAccess] x608 -# 1844| Type = [Struct] String -# 1844| ValueCategory = lvalue -# 1844| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1844| Conversion = [BoolConversion] conversion to bool -# 1844| Type = [BoolType] bool -# 1844| Value = [CStyleCast] 0 -# 1844| ValueCategory = prvalue -# 1845| getStmt(609): [DoStmt] do (...) ... -# 1847| getCondition(): [Literal] 0 -# 1847| Type = [IntType] int -# 1847| Value = [Literal] 0 -# 1847| ValueCategory = prvalue -# 1845| getStmt(): [BlockStmt] { ... } -# 1846| getStmt(0): [DeclStmt] declaration -# 1846| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x609 -# 1846| Type = [Struct] String -# 1846| getVariable().getInitializer(): [Initializer] initializer for x609 -# 1846| getExpr(): [ConstructorCall] call to String -# 1846| Type = [VoidType] void -# 1846| ValueCategory = prvalue -# 1847| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1847| Type = [VoidType] void -# 1847| ValueCategory = prvalue -# 1847| getQualifier(): [VariableAccess] x609 -# 1847| Type = [Struct] String -# 1847| ValueCategory = lvalue -# 1847| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1847| Conversion = [BoolConversion] conversion to bool -# 1847| Type = [BoolType] bool -# 1847| Value = [CStyleCast] 0 -# 1847| ValueCategory = prvalue -# 1848| getStmt(610): [DoStmt] do (...) ... -# 1850| getCondition(): [Literal] 0 -# 1850| Type = [IntType] int -# 1850| Value = [Literal] 0 -# 1850| ValueCategory = prvalue -# 1848| getStmt(): [BlockStmt] { ... } -# 1849| getStmt(0): [DeclStmt] declaration -# 1849| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x610 -# 1849| Type = [Struct] String -# 1849| getVariable().getInitializer(): [Initializer] initializer for x610 -# 1849| getExpr(): [ConstructorCall] call to String -# 1849| Type = [VoidType] void -# 1849| ValueCategory = prvalue -# 1850| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1850| Type = [VoidType] void -# 1850| ValueCategory = prvalue -# 1850| getQualifier(): [VariableAccess] x610 -# 1850| Type = [Struct] String -# 1850| ValueCategory = lvalue -# 1850| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1850| Conversion = [BoolConversion] conversion to bool -# 1850| Type = [BoolType] bool -# 1850| Value = [CStyleCast] 0 -# 1850| ValueCategory = prvalue -# 1851| getStmt(611): [DoStmt] do (...) ... -# 1853| getCondition(): [Literal] 0 -# 1853| Type = [IntType] int -# 1853| Value = [Literal] 0 -# 1853| ValueCategory = prvalue -# 1851| getStmt(): [BlockStmt] { ... } -# 1852| getStmt(0): [DeclStmt] declaration -# 1852| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x611 -# 1852| Type = [Struct] String -# 1852| getVariable().getInitializer(): [Initializer] initializer for x611 -# 1852| getExpr(): [ConstructorCall] call to String -# 1852| Type = [VoidType] void -# 1852| ValueCategory = prvalue -# 1853| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1853| Type = [VoidType] void -# 1853| ValueCategory = prvalue -# 1853| getQualifier(): [VariableAccess] x611 -# 1853| Type = [Struct] String -# 1853| ValueCategory = lvalue -# 1853| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1853| Conversion = [BoolConversion] conversion to bool -# 1853| Type = [BoolType] bool -# 1853| Value = [CStyleCast] 0 -# 1853| ValueCategory = prvalue -# 1854| getStmt(612): [DoStmt] do (...) ... -# 1856| getCondition(): [Literal] 0 -# 1856| Type = [IntType] int -# 1856| Value = [Literal] 0 -# 1856| ValueCategory = prvalue -# 1854| getStmt(): [BlockStmt] { ... } -# 1855| getStmt(0): [DeclStmt] declaration -# 1855| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x612 -# 1855| Type = [Struct] String -# 1855| getVariable().getInitializer(): [Initializer] initializer for x612 -# 1855| getExpr(): [ConstructorCall] call to String -# 1855| Type = [VoidType] void -# 1855| ValueCategory = prvalue -# 1856| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1856| Type = [VoidType] void -# 1856| ValueCategory = prvalue -# 1856| getQualifier(): [VariableAccess] x612 -# 1856| Type = [Struct] String -# 1856| ValueCategory = lvalue -# 1856| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1856| Conversion = [BoolConversion] conversion to bool -# 1856| Type = [BoolType] bool -# 1856| Value = [CStyleCast] 0 -# 1856| ValueCategory = prvalue -# 1857| getStmt(613): [DoStmt] do (...) ... -# 1859| getCondition(): [Literal] 0 -# 1859| Type = [IntType] int -# 1859| Value = [Literal] 0 -# 1859| ValueCategory = prvalue -# 1857| getStmt(): [BlockStmt] { ... } -# 1858| getStmt(0): [DeclStmt] declaration -# 1858| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x613 -# 1858| Type = [Struct] String -# 1858| getVariable().getInitializer(): [Initializer] initializer for x613 -# 1858| getExpr(): [ConstructorCall] call to String -# 1858| Type = [VoidType] void -# 1858| ValueCategory = prvalue -# 1859| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1859| Type = [VoidType] void -# 1859| ValueCategory = prvalue -# 1859| getQualifier(): [VariableAccess] x613 -# 1859| Type = [Struct] String -# 1859| ValueCategory = lvalue -# 1859| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1859| Conversion = [BoolConversion] conversion to bool -# 1859| Type = [BoolType] bool -# 1859| Value = [CStyleCast] 0 -# 1859| ValueCategory = prvalue -# 1860| getStmt(614): [DoStmt] do (...) ... -# 1862| getCondition(): [Literal] 0 -# 1862| Type = [IntType] int -# 1862| Value = [Literal] 0 -# 1862| ValueCategory = prvalue -# 1860| getStmt(): [BlockStmt] { ... } -# 1861| getStmt(0): [DeclStmt] declaration -# 1861| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x614 -# 1861| Type = [Struct] String -# 1861| getVariable().getInitializer(): [Initializer] initializer for x614 -# 1861| getExpr(): [ConstructorCall] call to String -# 1861| Type = [VoidType] void -# 1861| ValueCategory = prvalue -# 1862| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1862| Type = [VoidType] void -# 1862| ValueCategory = prvalue -# 1862| getQualifier(): [VariableAccess] x614 -# 1862| Type = [Struct] String -# 1862| ValueCategory = lvalue -# 1862| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1862| Conversion = [BoolConversion] conversion to bool -# 1862| Type = [BoolType] bool -# 1862| Value = [CStyleCast] 0 -# 1862| ValueCategory = prvalue -# 1863| getStmt(615): [DoStmt] do (...) ... -# 1865| getCondition(): [Literal] 0 -# 1865| Type = [IntType] int -# 1865| Value = [Literal] 0 -# 1865| ValueCategory = prvalue -# 1863| getStmt(): [BlockStmt] { ... } -# 1864| getStmt(0): [DeclStmt] declaration -# 1864| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x615 -# 1864| Type = [Struct] String -# 1864| getVariable().getInitializer(): [Initializer] initializer for x615 -# 1864| getExpr(): [ConstructorCall] call to String -# 1864| Type = [VoidType] void -# 1864| ValueCategory = prvalue -# 1865| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1865| Type = [VoidType] void -# 1865| ValueCategory = prvalue -# 1865| getQualifier(): [VariableAccess] x615 -# 1865| Type = [Struct] String -# 1865| ValueCategory = lvalue -# 1865| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1865| Conversion = [BoolConversion] conversion to bool -# 1865| Type = [BoolType] bool -# 1865| Value = [CStyleCast] 0 -# 1865| ValueCategory = prvalue -# 1866| getStmt(616): [DoStmt] do (...) ... -# 1868| getCondition(): [Literal] 0 -# 1868| Type = [IntType] int -# 1868| Value = [Literal] 0 -# 1868| ValueCategory = prvalue -# 1866| getStmt(): [BlockStmt] { ... } -# 1867| getStmt(0): [DeclStmt] declaration -# 1867| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x616 -# 1867| Type = [Struct] String -# 1867| getVariable().getInitializer(): [Initializer] initializer for x616 -# 1867| getExpr(): [ConstructorCall] call to String -# 1867| Type = [VoidType] void -# 1867| ValueCategory = prvalue -# 1868| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1868| Type = [VoidType] void -# 1868| ValueCategory = prvalue -# 1868| getQualifier(): [VariableAccess] x616 -# 1868| Type = [Struct] String -# 1868| ValueCategory = lvalue -# 1868| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1868| Conversion = [BoolConversion] conversion to bool -# 1868| Type = [BoolType] bool -# 1868| Value = [CStyleCast] 0 -# 1868| ValueCategory = prvalue -# 1869| getStmt(617): [DoStmt] do (...) ... -# 1871| getCondition(): [Literal] 0 -# 1871| Type = [IntType] int -# 1871| Value = [Literal] 0 -# 1871| ValueCategory = prvalue -# 1869| getStmt(): [BlockStmt] { ... } -# 1870| getStmt(0): [DeclStmt] declaration -# 1870| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x617 -# 1870| Type = [Struct] String -# 1870| getVariable().getInitializer(): [Initializer] initializer for x617 -# 1870| getExpr(): [ConstructorCall] call to String -# 1870| Type = [VoidType] void -# 1870| ValueCategory = prvalue -# 1871| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1871| Type = [VoidType] void -# 1871| ValueCategory = prvalue -# 1871| getQualifier(): [VariableAccess] x617 -# 1871| Type = [Struct] String -# 1871| ValueCategory = lvalue -# 1871| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1871| Conversion = [BoolConversion] conversion to bool -# 1871| Type = [BoolType] bool -# 1871| Value = [CStyleCast] 0 -# 1871| ValueCategory = prvalue -# 1872| getStmt(618): [DoStmt] do (...) ... -# 1874| getCondition(): [Literal] 0 -# 1874| Type = [IntType] int -# 1874| Value = [Literal] 0 -# 1874| ValueCategory = prvalue -# 1872| getStmt(): [BlockStmt] { ... } -# 1873| getStmt(0): [DeclStmt] declaration -# 1873| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x618 -# 1873| Type = [Struct] String -# 1873| getVariable().getInitializer(): [Initializer] initializer for x618 -# 1873| getExpr(): [ConstructorCall] call to String -# 1873| Type = [VoidType] void -# 1873| ValueCategory = prvalue -# 1874| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1874| Type = [VoidType] void -# 1874| ValueCategory = prvalue -# 1874| getQualifier(): [VariableAccess] x618 -# 1874| Type = [Struct] String -# 1874| ValueCategory = lvalue -# 1874| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1874| Conversion = [BoolConversion] conversion to bool -# 1874| Type = [BoolType] bool -# 1874| Value = [CStyleCast] 0 -# 1874| ValueCategory = prvalue -# 1875| getStmt(619): [DoStmt] do (...) ... -# 1877| getCondition(): [Literal] 0 -# 1877| Type = [IntType] int -# 1877| Value = [Literal] 0 -# 1877| ValueCategory = prvalue -# 1875| getStmt(): [BlockStmt] { ... } -# 1876| getStmt(0): [DeclStmt] declaration -# 1876| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x619 -# 1876| Type = [Struct] String -# 1876| getVariable().getInitializer(): [Initializer] initializer for x619 -# 1876| getExpr(): [ConstructorCall] call to String -# 1876| Type = [VoidType] void -# 1876| ValueCategory = prvalue -# 1877| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1877| Type = [VoidType] void -# 1877| ValueCategory = prvalue -# 1877| getQualifier(): [VariableAccess] x619 -# 1877| Type = [Struct] String -# 1877| ValueCategory = lvalue -# 1877| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1877| Conversion = [BoolConversion] conversion to bool -# 1877| Type = [BoolType] bool -# 1877| Value = [CStyleCast] 0 -# 1877| ValueCategory = prvalue -# 1878| getStmt(620): [DoStmt] do (...) ... -# 1880| getCondition(): [Literal] 0 -# 1880| Type = [IntType] int -# 1880| Value = [Literal] 0 -# 1880| ValueCategory = prvalue -# 1878| getStmt(): [BlockStmt] { ... } -# 1879| getStmt(0): [DeclStmt] declaration -# 1879| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x620 -# 1879| Type = [Struct] String -# 1879| getVariable().getInitializer(): [Initializer] initializer for x620 -# 1879| getExpr(): [ConstructorCall] call to String -# 1879| Type = [VoidType] void -# 1879| ValueCategory = prvalue -# 1880| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1880| Type = [VoidType] void -# 1880| ValueCategory = prvalue -# 1880| getQualifier(): [VariableAccess] x620 -# 1880| Type = [Struct] String -# 1880| ValueCategory = lvalue -# 1880| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1880| Conversion = [BoolConversion] conversion to bool -# 1880| Type = [BoolType] bool -# 1880| Value = [CStyleCast] 0 -# 1880| ValueCategory = prvalue -# 1881| getStmt(621): [DoStmt] do (...) ... -# 1883| getCondition(): [Literal] 0 -# 1883| Type = [IntType] int -# 1883| Value = [Literal] 0 -# 1883| ValueCategory = prvalue -# 1881| getStmt(): [BlockStmt] { ... } -# 1882| getStmt(0): [DeclStmt] declaration -# 1882| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x621 -# 1882| Type = [Struct] String -# 1882| getVariable().getInitializer(): [Initializer] initializer for x621 -# 1882| getExpr(): [ConstructorCall] call to String -# 1882| Type = [VoidType] void -# 1882| ValueCategory = prvalue -# 1883| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1883| Type = [VoidType] void -# 1883| ValueCategory = prvalue -# 1883| getQualifier(): [VariableAccess] x621 -# 1883| Type = [Struct] String -# 1883| ValueCategory = lvalue -# 1883| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1883| Conversion = [BoolConversion] conversion to bool -# 1883| Type = [BoolType] bool -# 1883| Value = [CStyleCast] 0 -# 1883| ValueCategory = prvalue -# 1884| getStmt(622): [DoStmt] do (...) ... -# 1886| getCondition(): [Literal] 0 -# 1886| Type = [IntType] int -# 1886| Value = [Literal] 0 -# 1886| ValueCategory = prvalue -# 1884| getStmt(): [BlockStmt] { ... } -# 1885| getStmt(0): [DeclStmt] declaration -# 1885| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x622 -# 1885| Type = [Struct] String -# 1885| getVariable().getInitializer(): [Initializer] initializer for x622 -# 1885| getExpr(): [ConstructorCall] call to String -# 1885| Type = [VoidType] void -# 1885| ValueCategory = prvalue -# 1886| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1886| Type = [VoidType] void -# 1886| ValueCategory = prvalue -# 1886| getQualifier(): [VariableAccess] x622 -# 1886| Type = [Struct] String -# 1886| ValueCategory = lvalue -# 1886| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1886| Conversion = [BoolConversion] conversion to bool -# 1886| Type = [BoolType] bool -# 1886| Value = [CStyleCast] 0 -# 1886| ValueCategory = prvalue -# 1887| getStmt(623): [DoStmt] do (...) ... -# 1889| getCondition(): [Literal] 0 -# 1889| Type = [IntType] int -# 1889| Value = [Literal] 0 -# 1889| ValueCategory = prvalue -# 1887| getStmt(): [BlockStmt] { ... } -# 1888| getStmt(0): [DeclStmt] declaration -# 1888| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x623 -# 1888| Type = [Struct] String -# 1888| getVariable().getInitializer(): [Initializer] initializer for x623 -# 1888| getExpr(): [ConstructorCall] call to String -# 1888| Type = [VoidType] void -# 1888| ValueCategory = prvalue -# 1889| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1889| Type = [VoidType] void -# 1889| ValueCategory = prvalue -# 1889| getQualifier(): [VariableAccess] x623 -# 1889| Type = [Struct] String -# 1889| ValueCategory = lvalue -# 1889| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1889| Conversion = [BoolConversion] conversion to bool -# 1889| Type = [BoolType] bool -# 1889| Value = [CStyleCast] 0 -# 1889| ValueCategory = prvalue -# 1890| getStmt(624): [DoStmt] do (...) ... -# 1892| getCondition(): [Literal] 0 -# 1892| Type = [IntType] int -# 1892| Value = [Literal] 0 -# 1892| ValueCategory = prvalue -# 1890| getStmt(): [BlockStmt] { ... } -# 1891| getStmt(0): [DeclStmt] declaration -# 1891| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x624 -# 1891| Type = [Struct] String -# 1891| getVariable().getInitializer(): [Initializer] initializer for x624 -# 1891| getExpr(): [ConstructorCall] call to String -# 1891| Type = [VoidType] void -# 1891| ValueCategory = prvalue -# 1892| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1892| Type = [VoidType] void -# 1892| ValueCategory = prvalue -# 1892| getQualifier(): [VariableAccess] x624 -# 1892| Type = [Struct] String -# 1892| ValueCategory = lvalue -# 1892| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1892| Conversion = [BoolConversion] conversion to bool -# 1892| Type = [BoolType] bool -# 1892| Value = [CStyleCast] 0 -# 1892| ValueCategory = prvalue -# 1893| getStmt(625): [DoStmt] do (...) ... -# 1895| getCondition(): [Literal] 0 -# 1895| Type = [IntType] int -# 1895| Value = [Literal] 0 -# 1895| ValueCategory = prvalue -# 1893| getStmt(): [BlockStmt] { ... } -# 1894| getStmt(0): [DeclStmt] declaration -# 1894| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x625 -# 1894| Type = [Struct] String -# 1894| getVariable().getInitializer(): [Initializer] initializer for x625 -# 1894| getExpr(): [ConstructorCall] call to String -# 1894| Type = [VoidType] void -# 1894| ValueCategory = prvalue -# 1895| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1895| Type = [VoidType] void -# 1895| ValueCategory = prvalue -# 1895| getQualifier(): [VariableAccess] x625 -# 1895| Type = [Struct] String -# 1895| ValueCategory = lvalue -# 1895| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1895| Conversion = [BoolConversion] conversion to bool -# 1895| Type = [BoolType] bool -# 1895| Value = [CStyleCast] 0 -# 1895| ValueCategory = prvalue -# 1896| getStmt(626): [DoStmt] do (...) ... -# 1898| getCondition(): [Literal] 0 -# 1898| Type = [IntType] int -# 1898| Value = [Literal] 0 -# 1898| ValueCategory = prvalue -# 1896| getStmt(): [BlockStmt] { ... } -# 1897| getStmt(0): [DeclStmt] declaration -# 1897| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x626 -# 1897| Type = [Struct] String -# 1897| getVariable().getInitializer(): [Initializer] initializer for x626 -# 1897| getExpr(): [ConstructorCall] call to String -# 1897| Type = [VoidType] void -# 1897| ValueCategory = prvalue -# 1898| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1898| Type = [VoidType] void -# 1898| ValueCategory = prvalue -# 1898| getQualifier(): [VariableAccess] x626 -# 1898| Type = [Struct] String -# 1898| ValueCategory = lvalue -# 1898| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1898| Conversion = [BoolConversion] conversion to bool -# 1898| Type = [BoolType] bool -# 1898| Value = [CStyleCast] 0 -# 1898| ValueCategory = prvalue -# 1899| getStmt(627): [DoStmt] do (...) ... -# 1901| getCondition(): [Literal] 0 -# 1901| Type = [IntType] int -# 1901| Value = [Literal] 0 -# 1901| ValueCategory = prvalue -# 1899| getStmt(): [BlockStmt] { ... } -# 1900| getStmt(0): [DeclStmt] declaration -# 1900| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x627 -# 1900| Type = [Struct] String -# 1900| getVariable().getInitializer(): [Initializer] initializer for x627 -# 1900| getExpr(): [ConstructorCall] call to String -# 1900| Type = [VoidType] void -# 1900| ValueCategory = prvalue -# 1901| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1901| Type = [VoidType] void -# 1901| ValueCategory = prvalue -# 1901| getQualifier(): [VariableAccess] x627 -# 1901| Type = [Struct] String -# 1901| ValueCategory = lvalue -# 1901| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1901| Conversion = [BoolConversion] conversion to bool -# 1901| Type = [BoolType] bool -# 1901| Value = [CStyleCast] 0 -# 1901| ValueCategory = prvalue -# 1902| getStmt(628): [DoStmt] do (...) ... -# 1904| getCondition(): [Literal] 0 -# 1904| Type = [IntType] int -# 1904| Value = [Literal] 0 -# 1904| ValueCategory = prvalue -# 1902| getStmt(): [BlockStmt] { ... } -# 1903| getStmt(0): [DeclStmt] declaration -# 1903| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x628 -# 1903| Type = [Struct] String -# 1903| getVariable().getInitializer(): [Initializer] initializer for x628 -# 1903| getExpr(): [ConstructorCall] call to String -# 1903| Type = [VoidType] void -# 1903| ValueCategory = prvalue -# 1904| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1904| Type = [VoidType] void -# 1904| ValueCategory = prvalue -# 1904| getQualifier(): [VariableAccess] x628 -# 1904| Type = [Struct] String -# 1904| ValueCategory = lvalue -# 1904| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1904| Conversion = [BoolConversion] conversion to bool -# 1904| Type = [BoolType] bool -# 1904| Value = [CStyleCast] 0 -# 1904| ValueCategory = prvalue -# 1905| getStmt(629): [DoStmt] do (...) ... -# 1907| getCondition(): [Literal] 0 -# 1907| Type = [IntType] int -# 1907| Value = [Literal] 0 -# 1907| ValueCategory = prvalue -# 1905| getStmt(): [BlockStmt] { ... } -# 1906| getStmt(0): [DeclStmt] declaration -# 1906| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x629 -# 1906| Type = [Struct] String -# 1906| getVariable().getInitializer(): [Initializer] initializer for x629 -# 1906| getExpr(): [ConstructorCall] call to String -# 1906| Type = [VoidType] void -# 1906| ValueCategory = prvalue -# 1907| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1907| Type = [VoidType] void -# 1907| ValueCategory = prvalue -# 1907| getQualifier(): [VariableAccess] x629 -# 1907| Type = [Struct] String -# 1907| ValueCategory = lvalue -# 1907| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1907| Conversion = [BoolConversion] conversion to bool -# 1907| Type = [BoolType] bool -# 1907| Value = [CStyleCast] 0 -# 1907| ValueCategory = prvalue -# 1908| getStmt(630): [DoStmt] do (...) ... -# 1910| getCondition(): [Literal] 0 -# 1910| Type = [IntType] int -# 1910| Value = [Literal] 0 -# 1910| ValueCategory = prvalue -# 1908| getStmt(): [BlockStmt] { ... } -# 1909| getStmt(0): [DeclStmt] declaration -# 1909| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x630 -# 1909| Type = [Struct] String -# 1909| getVariable().getInitializer(): [Initializer] initializer for x630 -# 1909| getExpr(): [ConstructorCall] call to String -# 1909| Type = [VoidType] void -# 1909| ValueCategory = prvalue -# 1910| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1910| Type = [VoidType] void -# 1910| ValueCategory = prvalue -# 1910| getQualifier(): [VariableAccess] x630 -# 1910| Type = [Struct] String -# 1910| ValueCategory = lvalue -# 1910| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1910| Conversion = [BoolConversion] conversion to bool -# 1910| Type = [BoolType] bool -# 1910| Value = [CStyleCast] 0 -# 1910| ValueCategory = prvalue -# 1911| getStmt(631): [DoStmt] do (...) ... -# 1913| getCondition(): [Literal] 0 -# 1913| Type = [IntType] int -# 1913| Value = [Literal] 0 -# 1913| ValueCategory = prvalue -# 1911| getStmt(): [BlockStmt] { ... } -# 1912| getStmt(0): [DeclStmt] declaration -# 1912| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x631 -# 1912| Type = [Struct] String -# 1912| getVariable().getInitializer(): [Initializer] initializer for x631 -# 1912| getExpr(): [ConstructorCall] call to String -# 1912| Type = [VoidType] void -# 1912| ValueCategory = prvalue -# 1913| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1913| Type = [VoidType] void -# 1913| ValueCategory = prvalue -# 1913| getQualifier(): [VariableAccess] x631 -# 1913| Type = [Struct] String -# 1913| ValueCategory = lvalue -# 1913| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1913| Conversion = [BoolConversion] conversion to bool -# 1913| Type = [BoolType] bool -# 1913| Value = [CStyleCast] 0 -# 1913| ValueCategory = prvalue -# 1914| getStmt(632): [DoStmt] do (...) ... -# 1916| getCondition(): [Literal] 0 -# 1916| Type = [IntType] int -# 1916| Value = [Literal] 0 -# 1916| ValueCategory = prvalue -# 1914| getStmt(): [BlockStmt] { ... } -# 1915| getStmt(0): [DeclStmt] declaration -# 1915| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x632 -# 1915| Type = [Struct] String -# 1915| getVariable().getInitializer(): [Initializer] initializer for x632 -# 1915| getExpr(): [ConstructorCall] call to String -# 1915| Type = [VoidType] void -# 1915| ValueCategory = prvalue -# 1916| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1916| Type = [VoidType] void -# 1916| ValueCategory = prvalue -# 1916| getQualifier(): [VariableAccess] x632 -# 1916| Type = [Struct] String -# 1916| ValueCategory = lvalue -# 1916| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1916| Conversion = [BoolConversion] conversion to bool -# 1916| Type = [BoolType] bool -# 1916| Value = [CStyleCast] 0 -# 1916| ValueCategory = prvalue -# 1917| getStmt(633): [DoStmt] do (...) ... -# 1919| getCondition(): [Literal] 0 -# 1919| Type = [IntType] int -# 1919| Value = [Literal] 0 -# 1919| ValueCategory = prvalue -# 1917| getStmt(): [BlockStmt] { ... } -# 1918| getStmt(0): [DeclStmt] declaration -# 1918| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x633 -# 1918| Type = [Struct] String -# 1918| getVariable().getInitializer(): [Initializer] initializer for x633 -# 1918| getExpr(): [ConstructorCall] call to String -# 1918| Type = [VoidType] void -# 1918| ValueCategory = prvalue -# 1919| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1919| Type = [VoidType] void -# 1919| ValueCategory = prvalue -# 1919| getQualifier(): [VariableAccess] x633 -# 1919| Type = [Struct] String -# 1919| ValueCategory = lvalue -# 1919| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1919| Conversion = [BoolConversion] conversion to bool -# 1919| Type = [BoolType] bool -# 1919| Value = [CStyleCast] 0 -# 1919| ValueCategory = prvalue -# 1920| getStmt(634): [DoStmt] do (...) ... -# 1922| getCondition(): [Literal] 0 -# 1922| Type = [IntType] int -# 1922| Value = [Literal] 0 -# 1922| ValueCategory = prvalue -# 1920| getStmt(): [BlockStmt] { ... } -# 1921| getStmt(0): [DeclStmt] declaration -# 1921| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x634 -# 1921| Type = [Struct] String -# 1921| getVariable().getInitializer(): [Initializer] initializer for x634 -# 1921| getExpr(): [ConstructorCall] call to String -# 1921| Type = [VoidType] void -# 1921| ValueCategory = prvalue -# 1922| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1922| Type = [VoidType] void -# 1922| ValueCategory = prvalue -# 1922| getQualifier(): [VariableAccess] x634 -# 1922| Type = [Struct] String -# 1922| ValueCategory = lvalue -# 1922| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1922| Conversion = [BoolConversion] conversion to bool -# 1922| Type = [BoolType] bool -# 1922| Value = [CStyleCast] 0 -# 1922| ValueCategory = prvalue -# 1923| getStmt(635): [DoStmt] do (...) ... -# 1925| getCondition(): [Literal] 0 -# 1925| Type = [IntType] int -# 1925| Value = [Literal] 0 -# 1925| ValueCategory = prvalue -# 1923| getStmt(): [BlockStmt] { ... } -# 1924| getStmt(0): [DeclStmt] declaration -# 1924| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x635 -# 1924| Type = [Struct] String -# 1924| getVariable().getInitializer(): [Initializer] initializer for x635 -# 1924| getExpr(): [ConstructorCall] call to String -# 1924| Type = [VoidType] void -# 1924| ValueCategory = prvalue -# 1925| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1925| Type = [VoidType] void -# 1925| ValueCategory = prvalue -# 1925| getQualifier(): [VariableAccess] x635 -# 1925| Type = [Struct] String -# 1925| ValueCategory = lvalue -# 1925| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1925| Conversion = [BoolConversion] conversion to bool -# 1925| Type = [BoolType] bool -# 1925| Value = [CStyleCast] 0 -# 1925| ValueCategory = prvalue -# 1926| getStmt(636): [DoStmt] do (...) ... -# 1928| getCondition(): [Literal] 0 -# 1928| Type = [IntType] int -# 1928| Value = [Literal] 0 -# 1928| ValueCategory = prvalue -# 1926| getStmt(): [BlockStmt] { ... } -# 1927| getStmt(0): [DeclStmt] declaration -# 1927| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x636 -# 1927| Type = [Struct] String -# 1927| getVariable().getInitializer(): [Initializer] initializer for x636 -# 1927| getExpr(): [ConstructorCall] call to String -# 1927| Type = [VoidType] void -# 1927| ValueCategory = prvalue -# 1928| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1928| Type = [VoidType] void -# 1928| ValueCategory = prvalue -# 1928| getQualifier(): [VariableAccess] x636 -# 1928| Type = [Struct] String -# 1928| ValueCategory = lvalue -# 1928| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1928| Conversion = [BoolConversion] conversion to bool -# 1928| Type = [BoolType] bool -# 1928| Value = [CStyleCast] 0 -# 1928| ValueCategory = prvalue -# 1929| getStmt(637): [DoStmt] do (...) ... -# 1931| getCondition(): [Literal] 0 -# 1931| Type = [IntType] int -# 1931| Value = [Literal] 0 -# 1931| ValueCategory = prvalue -# 1929| getStmt(): [BlockStmt] { ... } -# 1930| getStmt(0): [DeclStmt] declaration -# 1930| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x637 -# 1930| Type = [Struct] String -# 1930| getVariable().getInitializer(): [Initializer] initializer for x637 -# 1930| getExpr(): [ConstructorCall] call to String -# 1930| Type = [VoidType] void -# 1930| ValueCategory = prvalue -# 1931| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1931| Type = [VoidType] void -# 1931| ValueCategory = prvalue -# 1931| getQualifier(): [VariableAccess] x637 -# 1931| Type = [Struct] String -# 1931| ValueCategory = lvalue -# 1931| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1931| Conversion = [BoolConversion] conversion to bool -# 1931| Type = [BoolType] bool -# 1931| Value = [CStyleCast] 0 -# 1931| ValueCategory = prvalue -# 1932| getStmt(638): [DoStmt] do (...) ... -# 1934| getCondition(): [Literal] 0 -# 1934| Type = [IntType] int -# 1934| Value = [Literal] 0 -# 1934| ValueCategory = prvalue -# 1932| getStmt(): [BlockStmt] { ... } -# 1933| getStmt(0): [DeclStmt] declaration -# 1933| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x638 -# 1933| Type = [Struct] String -# 1933| getVariable().getInitializer(): [Initializer] initializer for x638 -# 1933| getExpr(): [ConstructorCall] call to String -# 1933| Type = [VoidType] void -# 1933| ValueCategory = prvalue -# 1934| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1934| Type = [VoidType] void -# 1934| ValueCategory = prvalue -# 1934| getQualifier(): [VariableAccess] x638 -# 1934| Type = [Struct] String -# 1934| ValueCategory = lvalue -# 1934| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1934| Conversion = [BoolConversion] conversion to bool -# 1934| Type = [BoolType] bool -# 1934| Value = [CStyleCast] 0 -# 1934| ValueCategory = prvalue -# 1935| getStmt(639): [DoStmt] do (...) ... -# 1937| getCondition(): [Literal] 0 -# 1937| Type = [IntType] int -# 1937| Value = [Literal] 0 -# 1937| ValueCategory = prvalue -# 1935| getStmt(): [BlockStmt] { ... } -# 1936| getStmt(0): [DeclStmt] declaration -# 1936| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x639 -# 1936| Type = [Struct] String -# 1936| getVariable().getInitializer(): [Initializer] initializer for x639 -# 1936| getExpr(): [ConstructorCall] call to String -# 1936| Type = [VoidType] void -# 1936| ValueCategory = prvalue -# 1937| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1937| Type = [VoidType] void -# 1937| ValueCategory = prvalue -# 1937| getQualifier(): [VariableAccess] x639 -# 1937| Type = [Struct] String -# 1937| ValueCategory = lvalue -# 1937| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1937| Conversion = [BoolConversion] conversion to bool -# 1937| Type = [BoolType] bool -# 1937| Value = [CStyleCast] 0 -# 1937| ValueCategory = prvalue -# 1938| getStmt(640): [DoStmt] do (...) ... -# 1940| getCondition(): [Literal] 0 -# 1940| Type = [IntType] int -# 1940| Value = [Literal] 0 -# 1940| ValueCategory = prvalue -# 1938| getStmt(): [BlockStmt] { ... } -# 1939| getStmt(0): [DeclStmt] declaration -# 1939| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x640 -# 1939| Type = [Struct] String -# 1939| getVariable().getInitializer(): [Initializer] initializer for x640 -# 1939| getExpr(): [ConstructorCall] call to String -# 1939| Type = [VoidType] void -# 1939| ValueCategory = prvalue -# 1940| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1940| Type = [VoidType] void -# 1940| ValueCategory = prvalue -# 1940| getQualifier(): [VariableAccess] x640 -# 1940| Type = [Struct] String -# 1940| ValueCategory = lvalue -# 1940| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1940| Conversion = [BoolConversion] conversion to bool -# 1940| Type = [BoolType] bool -# 1940| Value = [CStyleCast] 0 -# 1940| ValueCategory = prvalue -# 1941| getStmt(641): [DoStmt] do (...) ... -# 1943| getCondition(): [Literal] 0 -# 1943| Type = [IntType] int -# 1943| Value = [Literal] 0 -# 1943| ValueCategory = prvalue -# 1941| getStmt(): [BlockStmt] { ... } -# 1942| getStmt(0): [DeclStmt] declaration -# 1942| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x641 -# 1942| Type = [Struct] String -# 1942| getVariable().getInitializer(): [Initializer] initializer for x641 -# 1942| getExpr(): [ConstructorCall] call to String -# 1942| Type = [VoidType] void -# 1942| ValueCategory = prvalue -# 1943| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1943| Type = [VoidType] void -# 1943| ValueCategory = prvalue -# 1943| getQualifier(): [VariableAccess] x641 -# 1943| Type = [Struct] String -# 1943| ValueCategory = lvalue -# 1943| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1943| Conversion = [BoolConversion] conversion to bool -# 1943| Type = [BoolType] bool -# 1943| Value = [CStyleCast] 0 -# 1943| ValueCategory = prvalue -# 1944| getStmt(642): [DoStmt] do (...) ... -# 1946| getCondition(): [Literal] 0 -# 1946| Type = [IntType] int -# 1946| Value = [Literal] 0 -# 1946| ValueCategory = prvalue -# 1944| getStmt(): [BlockStmt] { ... } -# 1945| getStmt(0): [DeclStmt] declaration -# 1945| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x642 -# 1945| Type = [Struct] String -# 1945| getVariable().getInitializer(): [Initializer] initializer for x642 -# 1945| getExpr(): [ConstructorCall] call to String -# 1945| Type = [VoidType] void -# 1945| ValueCategory = prvalue -# 1946| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1946| Type = [VoidType] void -# 1946| ValueCategory = prvalue -# 1946| getQualifier(): [VariableAccess] x642 -# 1946| Type = [Struct] String -# 1946| ValueCategory = lvalue -# 1946| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1946| Conversion = [BoolConversion] conversion to bool -# 1946| Type = [BoolType] bool -# 1946| Value = [CStyleCast] 0 -# 1946| ValueCategory = prvalue -# 1947| getStmt(643): [DoStmt] do (...) ... -# 1949| getCondition(): [Literal] 0 -# 1949| Type = [IntType] int -# 1949| Value = [Literal] 0 -# 1949| ValueCategory = prvalue -# 1947| getStmt(): [BlockStmt] { ... } -# 1948| getStmt(0): [DeclStmt] declaration -# 1948| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x643 -# 1948| Type = [Struct] String -# 1948| getVariable().getInitializer(): [Initializer] initializer for x643 -# 1948| getExpr(): [ConstructorCall] call to String -# 1948| Type = [VoidType] void -# 1948| ValueCategory = prvalue -# 1949| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1949| Type = [VoidType] void -# 1949| ValueCategory = prvalue -# 1949| getQualifier(): [VariableAccess] x643 -# 1949| Type = [Struct] String -# 1949| ValueCategory = lvalue -# 1949| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1949| Conversion = [BoolConversion] conversion to bool -# 1949| Type = [BoolType] bool -# 1949| Value = [CStyleCast] 0 -# 1949| ValueCategory = prvalue -# 1950| getStmt(644): [DoStmt] do (...) ... -# 1952| getCondition(): [Literal] 0 -# 1952| Type = [IntType] int -# 1952| Value = [Literal] 0 -# 1952| ValueCategory = prvalue -# 1950| getStmt(): [BlockStmt] { ... } -# 1951| getStmt(0): [DeclStmt] declaration -# 1951| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x644 -# 1951| Type = [Struct] String -# 1951| getVariable().getInitializer(): [Initializer] initializer for x644 -# 1951| getExpr(): [ConstructorCall] call to String -# 1951| Type = [VoidType] void -# 1951| ValueCategory = prvalue -# 1952| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1952| Type = [VoidType] void -# 1952| ValueCategory = prvalue -# 1952| getQualifier(): [VariableAccess] x644 -# 1952| Type = [Struct] String -# 1952| ValueCategory = lvalue -# 1952| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1952| Conversion = [BoolConversion] conversion to bool -# 1952| Type = [BoolType] bool -# 1952| Value = [CStyleCast] 0 -# 1952| ValueCategory = prvalue -# 1953| getStmt(645): [DoStmt] do (...) ... -# 1955| getCondition(): [Literal] 0 -# 1955| Type = [IntType] int -# 1955| Value = [Literal] 0 -# 1955| ValueCategory = prvalue -# 1953| getStmt(): [BlockStmt] { ... } -# 1954| getStmt(0): [DeclStmt] declaration -# 1954| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x645 -# 1954| Type = [Struct] String -# 1954| getVariable().getInitializer(): [Initializer] initializer for x645 -# 1954| getExpr(): [ConstructorCall] call to String -# 1954| Type = [VoidType] void -# 1954| ValueCategory = prvalue -# 1955| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1955| Type = [VoidType] void -# 1955| ValueCategory = prvalue -# 1955| getQualifier(): [VariableAccess] x645 -# 1955| Type = [Struct] String -# 1955| ValueCategory = lvalue -# 1955| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1955| Conversion = [BoolConversion] conversion to bool -# 1955| Type = [BoolType] bool -# 1955| Value = [CStyleCast] 0 -# 1955| ValueCategory = prvalue -# 1956| getStmt(646): [DoStmt] do (...) ... -# 1958| getCondition(): [Literal] 0 -# 1958| Type = [IntType] int -# 1958| Value = [Literal] 0 -# 1958| ValueCategory = prvalue -# 1956| getStmt(): [BlockStmt] { ... } -# 1957| getStmt(0): [DeclStmt] declaration -# 1957| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x646 -# 1957| Type = [Struct] String -# 1957| getVariable().getInitializer(): [Initializer] initializer for x646 -# 1957| getExpr(): [ConstructorCall] call to String -# 1957| Type = [VoidType] void -# 1957| ValueCategory = prvalue -# 1958| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1958| Type = [VoidType] void -# 1958| ValueCategory = prvalue -# 1958| getQualifier(): [VariableAccess] x646 -# 1958| Type = [Struct] String -# 1958| ValueCategory = lvalue -# 1958| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1958| Conversion = [BoolConversion] conversion to bool -# 1958| Type = [BoolType] bool -# 1958| Value = [CStyleCast] 0 -# 1958| ValueCategory = prvalue -# 1959| getStmt(647): [DoStmt] do (...) ... -# 1961| getCondition(): [Literal] 0 -# 1961| Type = [IntType] int -# 1961| Value = [Literal] 0 -# 1961| ValueCategory = prvalue -# 1959| getStmt(): [BlockStmt] { ... } -# 1960| getStmt(0): [DeclStmt] declaration -# 1960| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x647 -# 1960| Type = [Struct] String -# 1960| getVariable().getInitializer(): [Initializer] initializer for x647 -# 1960| getExpr(): [ConstructorCall] call to String -# 1960| Type = [VoidType] void -# 1960| ValueCategory = prvalue -# 1961| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1961| Type = [VoidType] void -# 1961| ValueCategory = prvalue -# 1961| getQualifier(): [VariableAccess] x647 -# 1961| Type = [Struct] String -# 1961| ValueCategory = lvalue -# 1961| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1961| Conversion = [BoolConversion] conversion to bool -# 1961| Type = [BoolType] bool -# 1961| Value = [CStyleCast] 0 -# 1961| ValueCategory = prvalue -# 1962| getStmt(648): [DoStmt] do (...) ... -# 1964| getCondition(): [Literal] 0 -# 1964| Type = [IntType] int -# 1964| Value = [Literal] 0 -# 1964| ValueCategory = prvalue -# 1962| getStmt(): [BlockStmt] { ... } -# 1963| getStmt(0): [DeclStmt] declaration -# 1963| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x648 -# 1963| Type = [Struct] String -# 1963| getVariable().getInitializer(): [Initializer] initializer for x648 -# 1963| getExpr(): [ConstructorCall] call to String -# 1963| Type = [VoidType] void -# 1963| ValueCategory = prvalue -# 1964| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1964| Type = [VoidType] void -# 1964| ValueCategory = prvalue -# 1964| getQualifier(): [VariableAccess] x648 -# 1964| Type = [Struct] String -# 1964| ValueCategory = lvalue -# 1964| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1964| Conversion = [BoolConversion] conversion to bool -# 1964| Type = [BoolType] bool -# 1964| Value = [CStyleCast] 0 -# 1964| ValueCategory = prvalue -# 1965| getStmt(649): [DoStmt] do (...) ... -# 1967| getCondition(): [Literal] 0 -# 1967| Type = [IntType] int -# 1967| Value = [Literal] 0 -# 1967| ValueCategory = prvalue -# 1965| getStmt(): [BlockStmt] { ... } -# 1966| getStmt(0): [DeclStmt] declaration -# 1966| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x649 -# 1966| Type = [Struct] String -# 1966| getVariable().getInitializer(): [Initializer] initializer for x649 -# 1966| getExpr(): [ConstructorCall] call to String -# 1966| Type = [VoidType] void -# 1966| ValueCategory = prvalue -# 1967| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1967| Type = [VoidType] void -# 1967| ValueCategory = prvalue -# 1967| getQualifier(): [VariableAccess] x649 -# 1967| Type = [Struct] String -# 1967| ValueCategory = lvalue -# 1967| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1967| Conversion = [BoolConversion] conversion to bool -# 1967| Type = [BoolType] bool -# 1967| Value = [CStyleCast] 0 -# 1967| ValueCategory = prvalue -# 1968| getStmt(650): [DoStmt] do (...) ... -# 1970| getCondition(): [Literal] 0 -# 1970| Type = [IntType] int -# 1970| Value = [Literal] 0 -# 1970| ValueCategory = prvalue -# 1968| getStmt(): [BlockStmt] { ... } -# 1969| getStmt(0): [DeclStmt] declaration -# 1969| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x650 -# 1969| Type = [Struct] String -# 1969| getVariable().getInitializer(): [Initializer] initializer for x650 -# 1969| getExpr(): [ConstructorCall] call to String -# 1969| Type = [VoidType] void -# 1969| ValueCategory = prvalue -# 1970| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1970| Type = [VoidType] void -# 1970| ValueCategory = prvalue -# 1970| getQualifier(): [VariableAccess] x650 -# 1970| Type = [Struct] String -# 1970| ValueCategory = lvalue -# 1970| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1970| Conversion = [BoolConversion] conversion to bool -# 1970| Type = [BoolType] bool -# 1970| Value = [CStyleCast] 0 -# 1970| ValueCategory = prvalue -# 1971| getStmt(651): [DoStmt] do (...) ... -# 1973| getCondition(): [Literal] 0 -# 1973| Type = [IntType] int -# 1973| Value = [Literal] 0 -# 1973| ValueCategory = prvalue -# 1971| getStmt(): [BlockStmt] { ... } -# 1972| getStmt(0): [DeclStmt] declaration -# 1972| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x651 -# 1972| Type = [Struct] String -# 1972| getVariable().getInitializer(): [Initializer] initializer for x651 -# 1972| getExpr(): [ConstructorCall] call to String -# 1972| Type = [VoidType] void -# 1972| ValueCategory = prvalue -# 1973| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1973| Type = [VoidType] void -# 1973| ValueCategory = prvalue -# 1973| getQualifier(): [VariableAccess] x651 -# 1973| Type = [Struct] String -# 1973| ValueCategory = lvalue -# 1973| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1973| Conversion = [BoolConversion] conversion to bool -# 1973| Type = [BoolType] bool -# 1973| Value = [CStyleCast] 0 -# 1973| ValueCategory = prvalue -# 1974| getStmt(652): [DoStmt] do (...) ... -# 1976| getCondition(): [Literal] 0 -# 1976| Type = [IntType] int -# 1976| Value = [Literal] 0 -# 1976| ValueCategory = prvalue -# 1974| getStmt(): [BlockStmt] { ... } -# 1975| getStmt(0): [DeclStmt] declaration -# 1975| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x652 -# 1975| Type = [Struct] String -# 1975| getVariable().getInitializer(): [Initializer] initializer for x652 -# 1975| getExpr(): [ConstructorCall] call to String -# 1975| Type = [VoidType] void -# 1975| ValueCategory = prvalue -# 1976| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1976| Type = [VoidType] void -# 1976| ValueCategory = prvalue -# 1976| getQualifier(): [VariableAccess] x652 -# 1976| Type = [Struct] String -# 1976| ValueCategory = lvalue -# 1976| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1976| Conversion = [BoolConversion] conversion to bool -# 1976| Type = [BoolType] bool -# 1976| Value = [CStyleCast] 0 -# 1976| ValueCategory = prvalue -# 1977| getStmt(653): [DoStmt] do (...) ... -# 1979| getCondition(): [Literal] 0 -# 1979| Type = [IntType] int -# 1979| Value = [Literal] 0 -# 1979| ValueCategory = prvalue -# 1977| getStmt(): [BlockStmt] { ... } -# 1978| getStmt(0): [DeclStmt] declaration -# 1978| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x653 -# 1978| Type = [Struct] String -# 1978| getVariable().getInitializer(): [Initializer] initializer for x653 -# 1978| getExpr(): [ConstructorCall] call to String -# 1978| Type = [VoidType] void -# 1978| ValueCategory = prvalue -# 1979| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1979| Type = [VoidType] void -# 1979| ValueCategory = prvalue -# 1979| getQualifier(): [VariableAccess] x653 -# 1979| Type = [Struct] String -# 1979| ValueCategory = lvalue -# 1979| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1979| Conversion = [BoolConversion] conversion to bool -# 1979| Type = [BoolType] bool -# 1979| Value = [CStyleCast] 0 -# 1979| ValueCategory = prvalue -# 1980| getStmt(654): [DoStmt] do (...) ... -# 1982| getCondition(): [Literal] 0 -# 1982| Type = [IntType] int -# 1982| Value = [Literal] 0 -# 1982| ValueCategory = prvalue -# 1980| getStmt(): [BlockStmt] { ... } -# 1981| getStmt(0): [DeclStmt] declaration -# 1981| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x654 -# 1981| Type = [Struct] String -# 1981| getVariable().getInitializer(): [Initializer] initializer for x654 -# 1981| getExpr(): [ConstructorCall] call to String -# 1981| Type = [VoidType] void -# 1981| ValueCategory = prvalue -# 1982| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1982| Type = [VoidType] void -# 1982| ValueCategory = prvalue -# 1982| getQualifier(): [VariableAccess] x654 -# 1982| Type = [Struct] String -# 1982| ValueCategory = lvalue -# 1982| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1982| Conversion = [BoolConversion] conversion to bool -# 1982| Type = [BoolType] bool -# 1982| Value = [CStyleCast] 0 -# 1982| ValueCategory = prvalue -# 1983| getStmt(655): [DoStmt] do (...) ... -# 1985| getCondition(): [Literal] 0 -# 1985| Type = [IntType] int -# 1985| Value = [Literal] 0 -# 1985| ValueCategory = prvalue -# 1983| getStmt(): [BlockStmt] { ... } -# 1984| getStmt(0): [DeclStmt] declaration -# 1984| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x655 -# 1984| Type = [Struct] String -# 1984| getVariable().getInitializer(): [Initializer] initializer for x655 -# 1984| getExpr(): [ConstructorCall] call to String -# 1984| Type = [VoidType] void -# 1984| ValueCategory = prvalue -# 1985| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1985| Type = [VoidType] void -# 1985| ValueCategory = prvalue -# 1985| getQualifier(): [VariableAccess] x655 -# 1985| Type = [Struct] String -# 1985| ValueCategory = lvalue -# 1985| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1985| Conversion = [BoolConversion] conversion to bool -# 1985| Type = [BoolType] bool -# 1985| Value = [CStyleCast] 0 -# 1985| ValueCategory = prvalue -# 1986| getStmt(656): [DoStmt] do (...) ... -# 1988| getCondition(): [Literal] 0 -# 1988| Type = [IntType] int -# 1988| Value = [Literal] 0 -# 1988| ValueCategory = prvalue -# 1986| getStmt(): [BlockStmt] { ... } -# 1987| getStmt(0): [DeclStmt] declaration -# 1987| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x656 -# 1987| Type = [Struct] String -# 1987| getVariable().getInitializer(): [Initializer] initializer for x656 -# 1987| getExpr(): [ConstructorCall] call to String -# 1987| Type = [VoidType] void -# 1987| ValueCategory = prvalue -# 1988| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1988| Type = [VoidType] void -# 1988| ValueCategory = prvalue -# 1988| getQualifier(): [VariableAccess] x656 -# 1988| Type = [Struct] String -# 1988| ValueCategory = lvalue -# 1988| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1988| Conversion = [BoolConversion] conversion to bool -# 1988| Type = [BoolType] bool -# 1988| Value = [CStyleCast] 0 -# 1988| ValueCategory = prvalue -# 1989| getStmt(657): [DoStmt] do (...) ... -# 1991| getCondition(): [Literal] 0 -# 1991| Type = [IntType] int -# 1991| Value = [Literal] 0 -# 1991| ValueCategory = prvalue -# 1989| getStmt(): [BlockStmt] { ... } -# 1990| getStmt(0): [DeclStmt] declaration -# 1990| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x657 -# 1990| Type = [Struct] String -# 1990| getVariable().getInitializer(): [Initializer] initializer for x657 -# 1990| getExpr(): [ConstructorCall] call to String -# 1990| Type = [VoidType] void -# 1990| ValueCategory = prvalue -# 1991| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1991| Type = [VoidType] void -# 1991| ValueCategory = prvalue -# 1991| getQualifier(): [VariableAccess] x657 -# 1991| Type = [Struct] String -# 1991| ValueCategory = lvalue -# 1991| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1991| Conversion = [BoolConversion] conversion to bool -# 1991| Type = [BoolType] bool -# 1991| Value = [CStyleCast] 0 -# 1991| ValueCategory = prvalue -# 1992| getStmt(658): [DoStmt] do (...) ... -# 1994| getCondition(): [Literal] 0 -# 1994| Type = [IntType] int -# 1994| Value = [Literal] 0 -# 1994| ValueCategory = prvalue -# 1992| getStmt(): [BlockStmt] { ... } -# 1993| getStmt(0): [DeclStmt] declaration -# 1993| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x658 -# 1993| Type = [Struct] String -# 1993| getVariable().getInitializer(): [Initializer] initializer for x658 -# 1993| getExpr(): [ConstructorCall] call to String -# 1993| Type = [VoidType] void -# 1993| ValueCategory = prvalue -# 1994| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1994| Type = [VoidType] void -# 1994| ValueCategory = prvalue -# 1994| getQualifier(): [VariableAccess] x658 -# 1994| Type = [Struct] String -# 1994| ValueCategory = lvalue -# 1994| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1994| Conversion = [BoolConversion] conversion to bool -# 1994| Type = [BoolType] bool -# 1994| Value = [CStyleCast] 0 -# 1994| ValueCategory = prvalue -# 1995| getStmt(659): [DoStmt] do (...) ... -# 1997| getCondition(): [Literal] 0 -# 1997| Type = [IntType] int -# 1997| Value = [Literal] 0 -# 1997| ValueCategory = prvalue -# 1995| getStmt(): [BlockStmt] { ... } -# 1996| getStmt(0): [DeclStmt] declaration -# 1996| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x659 -# 1996| Type = [Struct] String -# 1996| getVariable().getInitializer(): [Initializer] initializer for x659 -# 1996| getExpr(): [ConstructorCall] call to String -# 1996| Type = [VoidType] void -# 1996| ValueCategory = prvalue -# 1997| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1997| Type = [VoidType] void -# 1997| ValueCategory = prvalue -# 1997| getQualifier(): [VariableAccess] x659 -# 1997| Type = [Struct] String -# 1997| ValueCategory = lvalue -# 1997| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1997| Conversion = [BoolConversion] conversion to bool -# 1997| Type = [BoolType] bool -# 1997| Value = [CStyleCast] 0 -# 1997| ValueCategory = prvalue -# 1998| getStmt(660): [DoStmt] do (...) ... -# 2000| getCondition(): [Literal] 0 -# 2000| Type = [IntType] int -# 2000| Value = [Literal] 0 -# 2000| ValueCategory = prvalue -# 1998| getStmt(): [BlockStmt] { ... } -# 1999| getStmt(0): [DeclStmt] declaration -# 1999| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x660 -# 1999| Type = [Struct] String -# 1999| getVariable().getInitializer(): [Initializer] initializer for x660 -# 1999| getExpr(): [ConstructorCall] call to String -# 1999| Type = [VoidType] void -# 1999| ValueCategory = prvalue -# 2000| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2000| Type = [VoidType] void -# 2000| ValueCategory = prvalue -# 2000| getQualifier(): [VariableAccess] x660 -# 2000| Type = [Struct] String -# 2000| ValueCategory = lvalue -# 2000| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2000| Conversion = [BoolConversion] conversion to bool -# 2000| Type = [BoolType] bool -# 2000| Value = [CStyleCast] 0 -# 2000| ValueCategory = prvalue -# 2001| getStmt(661): [DoStmt] do (...) ... -# 2003| getCondition(): [Literal] 0 -# 2003| Type = [IntType] int -# 2003| Value = [Literal] 0 -# 2003| ValueCategory = prvalue -# 2001| getStmt(): [BlockStmt] { ... } -# 2002| getStmt(0): [DeclStmt] declaration -# 2002| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x661 -# 2002| Type = [Struct] String -# 2002| getVariable().getInitializer(): [Initializer] initializer for x661 -# 2002| getExpr(): [ConstructorCall] call to String -# 2002| Type = [VoidType] void -# 2002| ValueCategory = prvalue -# 2003| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2003| Type = [VoidType] void -# 2003| ValueCategory = prvalue -# 2003| getQualifier(): [VariableAccess] x661 -# 2003| Type = [Struct] String -# 2003| ValueCategory = lvalue -# 2003| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2003| Conversion = [BoolConversion] conversion to bool -# 2003| Type = [BoolType] bool -# 2003| Value = [CStyleCast] 0 -# 2003| ValueCategory = prvalue -# 2004| getStmt(662): [DoStmt] do (...) ... -# 2006| getCondition(): [Literal] 0 -# 2006| Type = [IntType] int -# 2006| Value = [Literal] 0 -# 2006| ValueCategory = prvalue -# 2004| getStmt(): [BlockStmt] { ... } -# 2005| getStmt(0): [DeclStmt] declaration -# 2005| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x662 -# 2005| Type = [Struct] String -# 2005| getVariable().getInitializer(): [Initializer] initializer for x662 -# 2005| getExpr(): [ConstructorCall] call to String -# 2005| Type = [VoidType] void -# 2005| ValueCategory = prvalue -# 2006| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2006| Type = [VoidType] void -# 2006| ValueCategory = prvalue -# 2006| getQualifier(): [VariableAccess] x662 -# 2006| Type = [Struct] String -# 2006| ValueCategory = lvalue -# 2006| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2006| Conversion = [BoolConversion] conversion to bool -# 2006| Type = [BoolType] bool -# 2006| Value = [CStyleCast] 0 -# 2006| ValueCategory = prvalue -# 2007| getStmt(663): [DoStmt] do (...) ... -# 2009| getCondition(): [Literal] 0 -# 2009| Type = [IntType] int -# 2009| Value = [Literal] 0 -# 2009| ValueCategory = prvalue -# 2007| getStmt(): [BlockStmt] { ... } -# 2008| getStmt(0): [DeclStmt] declaration -# 2008| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x663 -# 2008| Type = [Struct] String -# 2008| getVariable().getInitializer(): [Initializer] initializer for x663 -# 2008| getExpr(): [ConstructorCall] call to String -# 2008| Type = [VoidType] void -# 2008| ValueCategory = prvalue -# 2009| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2009| Type = [VoidType] void -# 2009| ValueCategory = prvalue -# 2009| getQualifier(): [VariableAccess] x663 -# 2009| Type = [Struct] String -# 2009| ValueCategory = lvalue -# 2009| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2009| Conversion = [BoolConversion] conversion to bool -# 2009| Type = [BoolType] bool -# 2009| Value = [CStyleCast] 0 -# 2009| ValueCategory = prvalue -# 2010| getStmt(664): [DoStmt] do (...) ... -# 2012| getCondition(): [Literal] 0 -# 2012| Type = [IntType] int -# 2012| Value = [Literal] 0 -# 2012| ValueCategory = prvalue -# 2010| getStmt(): [BlockStmt] { ... } -# 2011| getStmt(0): [DeclStmt] declaration -# 2011| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x664 -# 2011| Type = [Struct] String -# 2011| getVariable().getInitializer(): [Initializer] initializer for x664 -# 2011| getExpr(): [ConstructorCall] call to String -# 2011| Type = [VoidType] void -# 2011| ValueCategory = prvalue -# 2012| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2012| Type = [VoidType] void -# 2012| ValueCategory = prvalue -# 2012| getQualifier(): [VariableAccess] x664 -# 2012| Type = [Struct] String -# 2012| ValueCategory = lvalue -# 2012| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2012| Conversion = [BoolConversion] conversion to bool -# 2012| Type = [BoolType] bool -# 2012| Value = [CStyleCast] 0 -# 2012| ValueCategory = prvalue -# 2013| getStmt(665): [DoStmt] do (...) ... -# 2015| getCondition(): [Literal] 0 -# 2015| Type = [IntType] int -# 2015| Value = [Literal] 0 -# 2015| ValueCategory = prvalue -# 2013| getStmt(): [BlockStmt] { ... } -# 2014| getStmt(0): [DeclStmt] declaration -# 2014| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x665 -# 2014| Type = [Struct] String -# 2014| getVariable().getInitializer(): [Initializer] initializer for x665 -# 2014| getExpr(): [ConstructorCall] call to String -# 2014| Type = [VoidType] void -# 2014| ValueCategory = prvalue -# 2015| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2015| Type = [VoidType] void -# 2015| ValueCategory = prvalue -# 2015| getQualifier(): [VariableAccess] x665 -# 2015| Type = [Struct] String -# 2015| ValueCategory = lvalue -# 2015| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2015| Conversion = [BoolConversion] conversion to bool -# 2015| Type = [BoolType] bool -# 2015| Value = [CStyleCast] 0 -# 2015| ValueCategory = prvalue -# 2016| getStmt(666): [DoStmt] do (...) ... -# 2018| getCondition(): [Literal] 0 -# 2018| Type = [IntType] int -# 2018| Value = [Literal] 0 -# 2018| ValueCategory = prvalue -# 2016| getStmt(): [BlockStmt] { ... } -# 2017| getStmt(0): [DeclStmt] declaration -# 2017| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x666 -# 2017| Type = [Struct] String -# 2017| getVariable().getInitializer(): [Initializer] initializer for x666 -# 2017| getExpr(): [ConstructorCall] call to String -# 2017| Type = [VoidType] void -# 2017| ValueCategory = prvalue -# 2018| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2018| Type = [VoidType] void -# 2018| ValueCategory = prvalue -# 2018| getQualifier(): [VariableAccess] x666 -# 2018| Type = [Struct] String -# 2018| ValueCategory = lvalue -# 2018| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2018| Conversion = [BoolConversion] conversion to bool -# 2018| Type = [BoolType] bool -# 2018| Value = [CStyleCast] 0 -# 2018| ValueCategory = prvalue -# 2019| getStmt(667): [DoStmt] do (...) ... -# 2021| getCondition(): [Literal] 0 -# 2021| Type = [IntType] int -# 2021| Value = [Literal] 0 -# 2021| ValueCategory = prvalue -# 2019| getStmt(): [BlockStmt] { ... } -# 2020| getStmt(0): [DeclStmt] declaration -# 2020| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x667 -# 2020| Type = [Struct] String -# 2020| getVariable().getInitializer(): [Initializer] initializer for x667 -# 2020| getExpr(): [ConstructorCall] call to String -# 2020| Type = [VoidType] void -# 2020| ValueCategory = prvalue -# 2021| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2021| Type = [VoidType] void -# 2021| ValueCategory = prvalue -# 2021| getQualifier(): [VariableAccess] x667 -# 2021| Type = [Struct] String -# 2021| ValueCategory = lvalue -# 2021| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2021| Conversion = [BoolConversion] conversion to bool -# 2021| Type = [BoolType] bool -# 2021| Value = [CStyleCast] 0 -# 2021| ValueCategory = prvalue -# 2022| getStmt(668): [DoStmt] do (...) ... -# 2024| getCondition(): [Literal] 0 -# 2024| Type = [IntType] int -# 2024| Value = [Literal] 0 -# 2024| ValueCategory = prvalue -# 2022| getStmt(): [BlockStmt] { ... } -# 2023| getStmt(0): [DeclStmt] declaration -# 2023| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x668 -# 2023| Type = [Struct] String -# 2023| getVariable().getInitializer(): [Initializer] initializer for x668 -# 2023| getExpr(): [ConstructorCall] call to String -# 2023| Type = [VoidType] void -# 2023| ValueCategory = prvalue -# 2024| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2024| Type = [VoidType] void -# 2024| ValueCategory = prvalue -# 2024| getQualifier(): [VariableAccess] x668 -# 2024| Type = [Struct] String -# 2024| ValueCategory = lvalue -# 2024| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2024| Conversion = [BoolConversion] conversion to bool -# 2024| Type = [BoolType] bool -# 2024| Value = [CStyleCast] 0 -# 2024| ValueCategory = prvalue -# 2025| getStmt(669): [DoStmt] do (...) ... -# 2027| getCondition(): [Literal] 0 -# 2027| Type = [IntType] int -# 2027| Value = [Literal] 0 -# 2027| ValueCategory = prvalue -# 2025| getStmt(): [BlockStmt] { ... } -# 2026| getStmt(0): [DeclStmt] declaration -# 2026| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x669 -# 2026| Type = [Struct] String -# 2026| getVariable().getInitializer(): [Initializer] initializer for x669 -# 2026| getExpr(): [ConstructorCall] call to String -# 2026| Type = [VoidType] void -# 2026| ValueCategory = prvalue -# 2027| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2027| Type = [VoidType] void -# 2027| ValueCategory = prvalue -# 2027| getQualifier(): [VariableAccess] x669 -# 2027| Type = [Struct] String -# 2027| ValueCategory = lvalue -# 2027| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2027| Conversion = [BoolConversion] conversion to bool -# 2027| Type = [BoolType] bool -# 2027| Value = [CStyleCast] 0 -# 2027| ValueCategory = prvalue -# 2028| getStmt(670): [DoStmt] do (...) ... -# 2030| getCondition(): [Literal] 0 -# 2030| Type = [IntType] int -# 2030| Value = [Literal] 0 -# 2030| ValueCategory = prvalue -# 2028| getStmt(): [BlockStmt] { ... } -# 2029| getStmt(0): [DeclStmt] declaration -# 2029| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x670 -# 2029| Type = [Struct] String -# 2029| getVariable().getInitializer(): [Initializer] initializer for x670 -# 2029| getExpr(): [ConstructorCall] call to String -# 2029| Type = [VoidType] void -# 2029| ValueCategory = prvalue -# 2030| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2030| Type = [VoidType] void -# 2030| ValueCategory = prvalue -# 2030| getQualifier(): [VariableAccess] x670 -# 2030| Type = [Struct] String -# 2030| ValueCategory = lvalue -# 2030| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2030| Conversion = [BoolConversion] conversion to bool -# 2030| Type = [BoolType] bool -# 2030| Value = [CStyleCast] 0 -# 2030| ValueCategory = prvalue -# 2031| getStmt(671): [DoStmt] do (...) ... -# 2033| getCondition(): [Literal] 0 -# 2033| Type = [IntType] int -# 2033| Value = [Literal] 0 -# 2033| ValueCategory = prvalue -# 2031| getStmt(): [BlockStmt] { ... } -# 2032| getStmt(0): [DeclStmt] declaration -# 2032| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x671 -# 2032| Type = [Struct] String -# 2032| getVariable().getInitializer(): [Initializer] initializer for x671 -# 2032| getExpr(): [ConstructorCall] call to String -# 2032| Type = [VoidType] void -# 2032| ValueCategory = prvalue -# 2033| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2033| Type = [VoidType] void -# 2033| ValueCategory = prvalue -# 2033| getQualifier(): [VariableAccess] x671 -# 2033| Type = [Struct] String -# 2033| ValueCategory = lvalue -# 2033| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2033| Conversion = [BoolConversion] conversion to bool -# 2033| Type = [BoolType] bool -# 2033| Value = [CStyleCast] 0 -# 2033| ValueCategory = prvalue -# 2034| getStmt(672): [DoStmt] do (...) ... -# 2036| getCondition(): [Literal] 0 -# 2036| Type = [IntType] int -# 2036| Value = [Literal] 0 -# 2036| ValueCategory = prvalue -# 2034| getStmt(): [BlockStmt] { ... } -# 2035| getStmt(0): [DeclStmt] declaration -# 2035| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x672 -# 2035| Type = [Struct] String -# 2035| getVariable().getInitializer(): [Initializer] initializer for x672 -# 2035| getExpr(): [ConstructorCall] call to String -# 2035| Type = [VoidType] void -# 2035| ValueCategory = prvalue -# 2036| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2036| Type = [VoidType] void -# 2036| ValueCategory = prvalue -# 2036| getQualifier(): [VariableAccess] x672 -# 2036| Type = [Struct] String -# 2036| ValueCategory = lvalue -# 2036| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2036| Conversion = [BoolConversion] conversion to bool -# 2036| Type = [BoolType] bool -# 2036| Value = [CStyleCast] 0 -# 2036| ValueCategory = prvalue -# 2037| getStmt(673): [DoStmt] do (...) ... -# 2039| getCondition(): [Literal] 0 -# 2039| Type = [IntType] int -# 2039| Value = [Literal] 0 -# 2039| ValueCategory = prvalue -# 2037| getStmt(): [BlockStmt] { ... } -# 2038| getStmt(0): [DeclStmt] declaration -# 2038| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x673 -# 2038| Type = [Struct] String -# 2038| getVariable().getInitializer(): [Initializer] initializer for x673 -# 2038| getExpr(): [ConstructorCall] call to String -# 2038| Type = [VoidType] void -# 2038| ValueCategory = prvalue -# 2039| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2039| Type = [VoidType] void -# 2039| ValueCategory = prvalue -# 2039| getQualifier(): [VariableAccess] x673 -# 2039| Type = [Struct] String -# 2039| ValueCategory = lvalue -# 2039| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2039| Conversion = [BoolConversion] conversion to bool -# 2039| Type = [BoolType] bool -# 2039| Value = [CStyleCast] 0 -# 2039| ValueCategory = prvalue -# 2040| getStmt(674): [DoStmt] do (...) ... -# 2042| getCondition(): [Literal] 0 -# 2042| Type = [IntType] int -# 2042| Value = [Literal] 0 -# 2042| ValueCategory = prvalue -# 2040| getStmt(): [BlockStmt] { ... } -# 2041| getStmt(0): [DeclStmt] declaration -# 2041| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x674 -# 2041| Type = [Struct] String -# 2041| getVariable().getInitializer(): [Initializer] initializer for x674 -# 2041| getExpr(): [ConstructorCall] call to String -# 2041| Type = [VoidType] void -# 2041| ValueCategory = prvalue -# 2042| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2042| Type = [VoidType] void -# 2042| ValueCategory = prvalue -# 2042| getQualifier(): [VariableAccess] x674 -# 2042| Type = [Struct] String -# 2042| ValueCategory = lvalue -# 2042| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2042| Conversion = [BoolConversion] conversion to bool -# 2042| Type = [BoolType] bool -# 2042| Value = [CStyleCast] 0 -# 2042| ValueCategory = prvalue -# 2043| getStmt(675): [DoStmt] do (...) ... -# 2045| getCondition(): [Literal] 0 -# 2045| Type = [IntType] int -# 2045| Value = [Literal] 0 -# 2045| ValueCategory = prvalue -# 2043| getStmt(): [BlockStmt] { ... } -# 2044| getStmt(0): [DeclStmt] declaration -# 2044| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x675 -# 2044| Type = [Struct] String -# 2044| getVariable().getInitializer(): [Initializer] initializer for x675 -# 2044| getExpr(): [ConstructorCall] call to String -# 2044| Type = [VoidType] void -# 2044| ValueCategory = prvalue -# 2045| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2045| Type = [VoidType] void -# 2045| ValueCategory = prvalue -# 2045| getQualifier(): [VariableAccess] x675 -# 2045| Type = [Struct] String -# 2045| ValueCategory = lvalue -# 2045| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2045| Conversion = [BoolConversion] conversion to bool -# 2045| Type = [BoolType] bool -# 2045| Value = [CStyleCast] 0 -# 2045| ValueCategory = prvalue -# 2046| getStmt(676): [DoStmt] do (...) ... -# 2048| getCondition(): [Literal] 0 -# 2048| Type = [IntType] int -# 2048| Value = [Literal] 0 -# 2048| ValueCategory = prvalue -# 2046| getStmt(): [BlockStmt] { ... } -# 2047| getStmt(0): [DeclStmt] declaration -# 2047| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x676 -# 2047| Type = [Struct] String -# 2047| getVariable().getInitializer(): [Initializer] initializer for x676 -# 2047| getExpr(): [ConstructorCall] call to String -# 2047| Type = [VoidType] void -# 2047| ValueCategory = prvalue -# 2048| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2048| Type = [VoidType] void -# 2048| ValueCategory = prvalue -# 2048| getQualifier(): [VariableAccess] x676 -# 2048| Type = [Struct] String -# 2048| ValueCategory = lvalue -# 2048| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2048| Conversion = [BoolConversion] conversion to bool -# 2048| Type = [BoolType] bool -# 2048| Value = [CStyleCast] 0 -# 2048| ValueCategory = prvalue -# 2049| getStmt(677): [DoStmt] do (...) ... -# 2051| getCondition(): [Literal] 0 -# 2051| Type = [IntType] int -# 2051| Value = [Literal] 0 -# 2051| ValueCategory = prvalue -# 2049| getStmt(): [BlockStmt] { ... } -# 2050| getStmt(0): [DeclStmt] declaration -# 2050| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x677 -# 2050| Type = [Struct] String -# 2050| getVariable().getInitializer(): [Initializer] initializer for x677 -# 2050| getExpr(): [ConstructorCall] call to String -# 2050| Type = [VoidType] void -# 2050| ValueCategory = prvalue -# 2051| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2051| Type = [VoidType] void -# 2051| ValueCategory = prvalue -# 2051| getQualifier(): [VariableAccess] x677 -# 2051| Type = [Struct] String -# 2051| ValueCategory = lvalue -# 2051| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2051| Conversion = [BoolConversion] conversion to bool -# 2051| Type = [BoolType] bool -# 2051| Value = [CStyleCast] 0 -# 2051| ValueCategory = prvalue -# 2052| getStmt(678): [DoStmt] do (...) ... -# 2054| getCondition(): [Literal] 0 -# 2054| Type = [IntType] int -# 2054| Value = [Literal] 0 -# 2054| ValueCategory = prvalue -# 2052| getStmt(): [BlockStmt] { ... } -# 2053| getStmt(0): [DeclStmt] declaration -# 2053| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x678 -# 2053| Type = [Struct] String -# 2053| getVariable().getInitializer(): [Initializer] initializer for x678 -# 2053| getExpr(): [ConstructorCall] call to String -# 2053| Type = [VoidType] void -# 2053| ValueCategory = prvalue -# 2054| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2054| Type = [VoidType] void -# 2054| ValueCategory = prvalue -# 2054| getQualifier(): [VariableAccess] x678 -# 2054| Type = [Struct] String -# 2054| ValueCategory = lvalue -# 2054| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2054| Conversion = [BoolConversion] conversion to bool -# 2054| Type = [BoolType] bool -# 2054| Value = [CStyleCast] 0 -# 2054| ValueCategory = prvalue -# 2055| getStmt(679): [DoStmt] do (...) ... -# 2057| getCondition(): [Literal] 0 -# 2057| Type = [IntType] int -# 2057| Value = [Literal] 0 -# 2057| ValueCategory = prvalue -# 2055| getStmt(): [BlockStmt] { ... } -# 2056| getStmt(0): [DeclStmt] declaration -# 2056| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x679 -# 2056| Type = [Struct] String -# 2056| getVariable().getInitializer(): [Initializer] initializer for x679 -# 2056| getExpr(): [ConstructorCall] call to String -# 2056| Type = [VoidType] void -# 2056| ValueCategory = prvalue -# 2057| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2057| Type = [VoidType] void -# 2057| ValueCategory = prvalue -# 2057| getQualifier(): [VariableAccess] x679 -# 2057| Type = [Struct] String -# 2057| ValueCategory = lvalue -# 2057| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2057| Conversion = [BoolConversion] conversion to bool -# 2057| Type = [BoolType] bool -# 2057| Value = [CStyleCast] 0 -# 2057| ValueCategory = prvalue -# 2058| getStmt(680): [DoStmt] do (...) ... -# 2060| getCondition(): [Literal] 0 -# 2060| Type = [IntType] int -# 2060| Value = [Literal] 0 -# 2060| ValueCategory = prvalue -# 2058| getStmt(): [BlockStmt] { ... } -# 2059| getStmt(0): [DeclStmt] declaration -# 2059| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x680 -# 2059| Type = [Struct] String -# 2059| getVariable().getInitializer(): [Initializer] initializer for x680 -# 2059| getExpr(): [ConstructorCall] call to String -# 2059| Type = [VoidType] void -# 2059| ValueCategory = prvalue -# 2060| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2060| Type = [VoidType] void -# 2060| ValueCategory = prvalue -# 2060| getQualifier(): [VariableAccess] x680 -# 2060| Type = [Struct] String -# 2060| ValueCategory = lvalue -# 2060| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2060| Conversion = [BoolConversion] conversion to bool -# 2060| Type = [BoolType] bool -# 2060| Value = [CStyleCast] 0 -# 2060| ValueCategory = prvalue -# 2061| getStmt(681): [DoStmt] do (...) ... -# 2063| getCondition(): [Literal] 0 -# 2063| Type = [IntType] int -# 2063| Value = [Literal] 0 -# 2063| ValueCategory = prvalue -# 2061| getStmt(): [BlockStmt] { ... } -# 2062| getStmt(0): [DeclStmt] declaration -# 2062| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x681 -# 2062| Type = [Struct] String -# 2062| getVariable().getInitializer(): [Initializer] initializer for x681 -# 2062| getExpr(): [ConstructorCall] call to String -# 2062| Type = [VoidType] void -# 2062| ValueCategory = prvalue -# 2063| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2063| Type = [VoidType] void -# 2063| ValueCategory = prvalue -# 2063| getQualifier(): [VariableAccess] x681 -# 2063| Type = [Struct] String -# 2063| ValueCategory = lvalue -# 2063| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2063| Conversion = [BoolConversion] conversion to bool -# 2063| Type = [BoolType] bool -# 2063| Value = [CStyleCast] 0 -# 2063| ValueCategory = prvalue -# 2064| getStmt(682): [DoStmt] do (...) ... -# 2066| getCondition(): [Literal] 0 -# 2066| Type = [IntType] int -# 2066| Value = [Literal] 0 -# 2066| ValueCategory = prvalue -# 2064| getStmt(): [BlockStmt] { ... } -# 2065| getStmt(0): [DeclStmt] declaration -# 2065| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x682 -# 2065| Type = [Struct] String -# 2065| getVariable().getInitializer(): [Initializer] initializer for x682 -# 2065| getExpr(): [ConstructorCall] call to String -# 2065| Type = [VoidType] void -# 2065| ValueCategory = prvalue -# 2066| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2066| Type = [VoidType] void -# 2066| ValueCategory = prvalue -# 2066| getQualifier(): [VariableAccess] x682 -# 2066| Type = [Struct] String -# 2066| ValueCategory = lvalue -# 2066| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2066| Conversion = [BoolConversion] conversion to bool -# 2066| Type = [BoolType] bool -# 2066| Value = [CStyleCast] 0 -# 2066| ValueCategory = prvalue -# 2067| getStmt(683): [DoStmt] do (...) ... -# 2069| getCondition(): [Literal] 0 -# 2069| Type = [IntType] int -# 2069| Value = [Literal] 0 -# 2069| ValueCategory = prvalue -# 2067| getStmt(): [BlockStmt] { ... } -# 2068| getStmt(0): [DeclStmt] declaration -# 2068| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x683 -# 2068| Type = [Struct] String -# 2068| getVariable().getInitializer(): [Initializer] initializer for x683 -# 2068| getExpr(): [ConstructorCall] call to String -# 2068| Type = [VoidType] void -# 2068| ValueCategory = prvalue -# 2069| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2069| Type = [VoidType] void -# 2069| ValueCategory = prvalue -# 2069| getQualifier(): [VariableAccess] x683 -# 2069| Type = [Struct] String -# 2069| ValueCategory = lvalue -# 2069| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2069| Conversion = [BoolConversion] conversion to bool -# 2069| Type = [BoolType] bool -# 2069| Value = [CStyleCast] 0 -# 2069| ValueCategory = prvalue -# 2070| getStmt(684): [DoStmt] do (...) ... -# 2072| getCondition(): [Literal] 0 -# 2072| Type = [IntType] int -# 2072| Value = [Literal] 0 -# 2072| ValueCategory = prvalue -# 2070| getStmt(): [BlockStmt] { ... } -# 2071| getStmt(0): [DeclStmt] declaration -# 2071| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x684 -# 2071| Type = [Struct] String -# 2071| getVariable().getInitializer(): [Initializer] initializer for x684 -# 2071| getExpr(): [ConstructorCall] call to String -# 2071| Type = [VoidType] void -# 2071| ValueCategory = prvalue -# 2072| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2072| Type = [VoidType] void -# 2072| ValueCategory = prvalue -# 2072| getQualifier(): [VariableAccess] x684 -# 2072| Type = [Struct] String -# 2072| ValueCategory = lvalue -# 2072| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2072| Conversion = [BoolConversion] conversion to bool -# 2072| Type = [BoolType] bool -# 2072| Value = [CStyleCast] 0 -# 2072| ValueCategory = prvalue -# 2073| getStmt(685): [DoStmt] do (...) ... -# 2075| getCondition(): [Literal] 0 -# 2075| Type = [IntType] int -# 2075| Value = [Literal] 0 -# 2075| ValueCategory = prvalue -# 2073| getStmt(): [BlockStmt] { ... } -# 2074| getStmt(0): [DeclStmt] declaration -# 2074| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x685 -# 2074| Type = [Struct] String -# 2074| getVariable().getInitializer(): [Initializer] initializer for x685 -# 2074| getExpr(): [ConstructorCall] call to String -# 2074| Type = [VoidType] void -# 2074| ValueCategory = prvalue -# 2075| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2075| Type = [VoidType] void -# 2075| ValueCategory = prvalue -# 2075| getQualifier(): [VariableAccess] x685 -# 2075| Type = [Struct] String -# 2075| ValueCategory = lvalue -# 2075| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2075| Conversion = [BoolConversion] conversion to bool -# 2075| Type = [BoolType] bool -# 2075| Value = [CStyleCast] 0 -# 2075| ValueCategory = prvalue -# 2076| getStmt(686): [DoStmt] do (...) ... -# 2078| getCondition(): [Literal] 0 -# 2078| Type = [IntType] int -# 2078| Value = [Literal] 0 -# 2078| ValueCategory = prvalue -# 2076| getStmt(): [BlockStmt] { ... } -# 2077| getStmt(0): [DeclStmt] declaration -# 2077| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x686 -# 2077| Type = [Struct] String -# 2077| getVariable().getInitializer(): [Initializer] initializer for x686 -# 2077| getExpr(): [ConstructorCall] call to String -# 2077| Type = [VoidType] void -# 2077| ValueCategory = prvalue -# 2078| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2078| Type = [VoidType] void -# 2078| ValueCategory = prvalue -# 2078| getQualifier(): [VariableAccess] x686 -# 2078| Type = [Struct] String -# 2078| ValueCategory = lvalue -# 2078| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2078| Conversion = [BoolConversion] conversion to bool -# 2078| Type = [BoolType] bool -# 2078| Value = [CStyleCast] 0 -# 2078| ValueCategory = prvalue -# 2079| getStmt(687): [DoStmt] do (...) ... -# 2081| getCondition(): [Literal] 0 -# 2081| Type = [IntType] int -# 2081| Value = [Literal] 0 -# 2081| ValueCategory = prvalue -# 2079| getStmt(): [BlockStmt] { ... } -# 2080| getStmt(0): [DeclStmt] declaration -# 2080| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x687 -# 2080| Type = [Struct] String -# 2080| getVariable().getInitializer(): [Initializer] initializer for x687 -# 2080| getExpr(): [ConstructorCall] call to String -# 2080| Type = [VoidType] void -# 2080| ValueCategory = prvalue -# 2081| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2081| Type = [VoidType] void -# 2081| ValueCategory = prvalue -# 2081| getQualifier(): [VariableAccess] x687 -# 2081| Type = [Struct] String -# 2081| ValueCategory = lvalue -# 2081| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2081| Conversion = [BoolConversion] conversion to bool -# 2081| Type = [BoolType] bool -# 2081| Value = [CStyleCast] 0 -# 2081| ValueCategory = prvalue -# 2082| getStmt(688): [DoStmt] do (...) ... -# 2084| getCondition(): [Literal] 0 -# 2084| Type = [IntType] int -# 2084| Value = [Literal] 0 -# 2084| ValueCategory = prvalue -# 2082| getStmt(): [BlockStmt] { ... } -# 2083| getStmt(0): [DeclStmt] declaration -# 2083| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x688 -# 2083| Type = [Struct] String -# 2083| getVariable().getInitializer(): [Initializer] initializer for x688 -# 2083| getExpr(): [ConstructorCall] call to String -# 2083| Type = [VoidType] void -# 2083| ValueCategory = prvalue -# 2084| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2084| Type = [VoidType] void -# 2084| ValueCategory = prvalue -# 2084| getQualifier(): [VariableAccess] x688 -# 2084| Type = [Struct] String -# 2084| ValueCategory = lvalue -# 2084| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2084| Conversion = [BoolConversion] conversion to bool -# 2084| Type = [BoolType] bool -# 2084| Value = [CStyleCast] 0 -# 2084| ValueCategory = prvalue -# 2085| getStmt(689): [DoStmt] do (...) ... -# 2087| getCondition(): [Literal] 0 -# 2087| Type = [IntType] int -# 2087| Value = [Literal] 0 -# 2087| ValueCategory = prvalue -# 2085| getStmt(): [BlockStmt] { ... } -# 2086| getStmt(0): [DeclStmt] declaration -# 2086| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x689 -# 2086| Type = [Struct] String -# 2086| getVariable().getInitializer(): [Initializer] initializer for x689 -# 2086| getExpr(): [ConstructorCall] call to String -# 2086| Type = [VoidType] void -# 2086| ValueCategory = prvalue -# 2087| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2087| Type = [VoidType] void -# 2087| ValueCategory = prvalue -# 2087| getQualifier(): [VariableAccess] x689 -# 2087| Type = [Struct] String -# 2087| ValueCategory = lvalue -# 2087| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2087| Conversion = [BoolConversion] conversion to bool -# 2087| Type = [BoolType] bool -# 2087| Value = [CStyleCast] 0 -# 2087| ValueCategory = prvalue -# 2088| getStmt(690): [DoStmt] do (...) ... -# 2090| getCondition(): [Literal] 0 -# 2090| Type = [IntType] int -# 2090| Value = [Literal] 0 -# 2090| ValueCategory = prvalue -# 2088| getStmt(): [BlockStmt] { ... } -# 2089| getStmt(0): [DeclStmt] declaration -# 2089| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x690 -# 2089| Type = [Struct] String -# 2089| getVariable().getInitializer(): [Initializer] initializer for x690 -# 2089| getExpr(): [ConstructorCall] call to String -# 2089| Type = [VoidType] void -# 2089| ValueCategory = prvalue -# 2090| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2090| Type = [VoidType] void -# 2090| ValueCategory = prvalue -# 2090| getQualifier(): [VariableAccess] x690 -# 2090| Type = [Struct] String -# 2090| ValueCategory = lvalue -# 2090| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2090| Conversion = [BoolConversion] conversion to bool -# 2090| Type = [BoolType] bool -# 2090| Value = [CStyleCast] 0 -# 2090| ValueCategory = prvalue -# 2091| getStmt(691): [DoStmt] do (...) ... -# 2093| getCondition(): [Literal] 0 -# 2093| Type = [IntType] int -# 2093| Value = [Literal] 0 -# 2093| ValueCategory = prvalue -# 2091| getStmt(): [BlockStmt] { ... } -# 2092| getStmt(0): [DeclStmt] declaration -# 2092| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x691 -# 2092| Type = [Struct] String -# 2092| getVariable().getInitializer(): [Initializer] initializer for x691 -# 2092| getExpr(): [ConstructorCall] call to String -# 2092| Type = [VoidType] void -# 2092| ValueCategory = prvalue -# 2093| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2093| Type = [VoidType] void -# 2093| ValueCategory = prvalue -# 2093| getQualifier(): [VariableAccess] x691 -# 2093| Type = [Struct] String -# 2093| ValueCategory = lvalue -# 2093| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2093| Conversion = [BoolConversion] conversion to bool -# 2093| Type = [BoolType] bool -# 2093| Value = [CStyleCast] 0 -# 2093| ValueCategory = prvalue -# 2094| getStmt(692): [DoStmt] do (...) ... -# 2096| getCondition(): [Literal] 0 -# 2096| Type = [IntType] int -# 2096| Value = [Literal] 0 -# 2096| ValueCategory = prvalue -# 2094| getStmt(): [BlockStmt] { ... } -# 2095| getStmt(0): [DeclStmt] declaration -# 2095| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x692 -# 2095| Type = [Struct] String -# 2095| getVariable().getInitializer(): [Initializer] initializer for x692 -# 2095| getExpr(): [ConstructorCall] call to String -# 2095| Type = [VoidType] void -# 2095| ValueCategory = prvalue -# 2096| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2096| Type = [VoidType] void -# 2096| ValueCategory = prvalue -# 2096| getQualifier(): [VariableAccess] x692 -# 2096| Type = [Struct] String -# 2096| ValueCategory = lvalue -# 2096| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2096| Conversion = [BoolConversion] conversion to bool -# 2096| Type = [BoolType] bool -# 2096| Value = [CStyleCast] 0 -# 2096| ValueCategory = prvalue -# 2097| getStmt(693): [DoStmt] do (...) ... -# 2099| getCondition(): [Literal] 0 -# 2099| Type = [IntType] int -# 2099| Value = [Literal] 0 -# 2099| ValueCategory = prvalue -# 2097| getStmt(): [BlockStmt] { ... } -# 2098| getStmt(0): [DeclStmt] declaration -# 2098| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x693 -# 2098| Type = [Struct] String -# 2098| getVariable().getInitializer(): [Initializer] initializer for x693 -# 2098| getExpr(): [ConstructorCall] call to String -# 2098| Type = [VoidType] void -# 2098| ValueCategory = prvalue -# 2099| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2099| Type = [VoidType] void -# 2099| ValueCategory = prvalue -# 2099| getQualifier(): [VariableAccess] x693 -# 2099| Type = [Struct] String -# 2099| ValueCategory = lvalue -# 2099| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2099| Conversion = [BoolConversion] conversion to bool -# 2099| Type = [BoolType] bool -# 2099| Value = [CStyleCast] 0 -# 2099| ValueCategory = prvalue -# 2100| getStmt(694): [DoStmt] do (...) ... -# 2102| getCondition(): [Literal] 0 -# 2102| Type = [IntType] int -# 2102| Value = [Literal] 0 -# 2102| ValueCategory = prvalue -# 2100| getStmt(): [BlockStmt] { ... } -# 2101| getStmt(0): [DeclStmt] declaration -# 2101| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x694 -# 2101| Type = [Struct] String -# 2101| getVariable().getInitializer(): [Initializer] initializer for x694 -# 2101| getExpr(): [ConstructorCall] call to String -# 2101| Type = [VoidType] void -# 2101| ValueCategory = prvalue -# 2102| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2102| Type = [VoidType] void -# 2102| ValueCategory = prvalue -# 2102| getQualifier(): [VariableAccess] x694 -# 2102| Type = [Struct] String -# 2102| ValueCategory = lvalue -# 2102| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2102| Conversion = [BoolConversion] conversion to bool -# 2102| Type = [BoolType] bool -# 2102| Value = [CStyleCast] 0 -# 2102| ValueCategory = prvalue -# 2103| getStmt(695): [DoStmt] do (...) ... -# 2105| getCondition(): [Literal] 0 -# 2105| Type = [IntType] int -# 2105| Value = [Literal] 0 -# 2105| ValueCategory = prvalue -# 2103| getStmt(): [BlockStmt] { ... } -# 2104| getStmt(0): [DeclStmt] declaration -# 2104| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x695 -# 2104| Type = [Struct] String -# 2104| getVariable().getInitializer(): [Initializer] initializer for x695 -# 2104| getExpr(): [ConstructorCall] call to String -# 2104| Type = [VoidType] void -# 2104| ValueCategory = prvalue -# 2105| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2105| Type = [VoidType] void -# 2105| ValueCategory = prvalue -# 2105| getQualifier(): [VariableAccess] x695 -# 2105| Type = [Struct] String -# 2105| ValueCategory = lvalue -# 2105| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2105| Conversion = [BoolConversion] conversion to bool -# 2105| Type = [BoolType] bool -# 2105| Value = [CStyleCast] 0 -# 2105| ValueCategory = prvalue -# 2106| getStmt(696): [DoStmt] do (...) ... -# 2108| getCondition(): [Literal] 0 -# 2108| Type = [IntType] int -# 2108| Value = [Literal] 0 -# 2108| ValueCategory = prvalue -# 2106| getStmt(): [BlockStmt] { ... } -# 2107| getStmt(0): [DeclStmt] declaration -# 2107| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x696 -# 2107| Type = [Struct] String -# 2107| getVariable().getInitializer(): [Initializer] initializer for x696 -# 2107| getExpr(): [ConstructorCall] call to String -# 2107| Type = [VoidType] void -# 2107| ValueCategory = prvalue -# 2108| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2108| Type = [VoidType] void -# 2108| ValueCategory = prvalue -# 2108| getQualifier(): [VariableAccess] x696 -# 2108| Type = [Struct] String -# 2108| ValueCategory = lvalue -# 2108| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2108| Conversion = [BoolConversion] conversion to bool -# 2108| Type = [BoolType] bool -# 2108| Value = [CStyleCast] 0 -# 2108| ValueCategory = prvalue -# 2109| getStmt(697): [DoStmt] do (...) ... -# 2111| getCondition(): [Literal] 0 -# 2111| Type = [IntType] int -# 2111| Value = [Literal] 0 -# 2111| ValueCategory = prvalue -# 2109| getStmt(): [BlockStmt] { ... } -# 2110| getStmt(0): [DeclStmt] declaration -# 2110| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x697 -# 2110| Type = [Struct] String -# 2110| getVariable().getInitializer(): [Initializer] initializer for x697 -# 2110| getExpr(): [ConstructorCall] call to String -# 2110| Type = [VoidType] void -# 2110| ValueCategory = prvalue -# 2111| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2111| Type = [VoidType] void -# 2111| ValueCategory = prvalue -# 2111| getQualifier(): [VariableAccess] x697 -# 2111| Type = [Struct] String -# 2111| ValueCategory = lvalue -# 2111| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2111| Conversion = [BoolConversion] conversion to bool -# 2111| Type = [BoolType] bool -# 2111| Value = [CStyleCast] 0 -# 2111| ValueCategory = prvalue -# 2112| getStmt(698): [DoStmt] do (...) ... -# 2114| getCondition(): [Literal] 0 -# 2114| Type = [IntType] int -# 2114| Value = [Literal] 0 -# 2114| ValueCategory = prvalue -# 2112| getStmt(): [BlockStmt] { ... } -# 2113| getStmt(0): [DeclStmt] declaration -# 2113| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x698 -# 2113| Type = [Struct] String -# 2113| getVariable().getInitializer(): [Initializer] initializer for x698 -# 2113| getExpr(): [ConstructorCall] call to String -# 2113| Type = [VoidType] void -# 2113| ValueCategory = prvalue -# 2114| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2114| Type = [VoidType] void -# 2114| ValueCategory = prvalue -# 2114| getQualifier(): [VariableAccess] x698 -# 2114| Type = [Struct] String -# 2114| ValueCategory = lvalue -# 2114| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2114| Conversion = [BoolConversion] conversion to bool -# 2114| Type = [BoolType] bool -# 2114| Value = [CStyleCast] 0 -# 2114| ValueCategory = prvalue -# 2115| getStmt(699): [DoStmt] do (...) ... -# 2117| getCondition(): [Literal] 0 -# 2117| Type = [IntType] int -# 2117| Value = [Literal] 0 -# 2117| ValueCategory = prvalue -# 2115| getStmt(): [BlockStmt] { ... } -# 2116| getStmt(0): [DeclStmt] declaration -# 2116| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x699 -# 2116| Type = [Struct] String -# 2116| getVariable().getInitializer(): [Initializer] initializer for x699 -# 2116| getExpr(): [ConstructorCall] call to String -# 2116| Type = [VoidType] void -# 2116| ValueCategory = prvalue -# 2117| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2117| Type = [VoidType] void -# 2117| ValueCategory = prvalue -# 2117| getQualifier(): [VariableAccess] x699 -# 2117| Type = [Struct] String -# 2117| ValueCategory = lvalue -# 2117| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2117| Conversion = [BoolConversion] conversion to bool -# 2117| Type = [BoolType] bool -# 2117| Value = [CStyleCast] 0 -# 2117| ValueCategory = prvalue -# 2118| getStmt(700): [DoStmt] do (...) ... -# 2120| getCondition(): [Literal] 0 -# 2120| Type = [IntType] int -# 2120| Value = [Literal] 0 -# 2120| ValueCategory = prvalue -# 2118| getStmt(): [BlockStmt] { ... } -# 2119| getStmt(0): [DeclStmt] declaration -# 2119| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x700 -# 2119| Type = [Struct] String -# 2119| getVariable().getInitializer(): [Initializer] initializer for x700 -# 2119| getExpr(): [ConstructorCall] call to String -# 2119| Type = [VoidType] void -# 2119| ValueCategory = prvalue -# 2120| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2120| Type = [VoidType] void -# 2120| ValueCategory = prvalue -# 2120| getQualifier(): [VariableAccess] x700 -# 2120| Type = [Struct] String -# 2120| ValueCategory = lvalue -# 2120| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2120| Conversion = [BoolConversion] conversion to bool -# 2120| Type = [BoolType] bool -# 2120| Value = [CStyleCast] 0 -# 2120| ValueCategory = prvalue -# 2121| getStmt(701): [DoStmt] do (...) ... -# 2123| getCondition(): [Literal] 0 -# 2123| Type = [IntType] int -# 2123| Value = [Literal] 0 -# 2123| ValueCategory = prvalue -# 2121| getStmt(): [BlockStmt] { ... } -# 2122| getStmt(0): [DeclStmt] declaration -# 2122| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x701 -# 2122| Type = [Struct] String -# 2122| getVariable().getInitializer(): [Initializer] initializer for x701 -# 2122| getExpr(): [ConstructorCall] call to String -# 2122| Type = [VoidType] void -# 2122| ValueCategory = prvalue -# 2123| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2123| Type = [VoidType] void -# 2123| ValueCategory = prvalue -# 2123| getQualifier(): [VariableAccess] x701 -# 2123| Type = [Struct] String -# 2123| ValueCategory = lvalue -# 2123| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2123| Conversion = [BoolConversion] conversion to bool -# 2123| Type = [BoolType] bool -# 2123| Value = [CStyleCast] 0 -# 2123| ValueCategory = prvalue -# 2124| getStmt(702): [DoStmt] do (...) ... -# 2126| getCondition(): [Literal] 0 -# 2126| Type = [IntType] int -# 2126| Value = [Literal] 0 -# 2126| ValueCategory = prvalue -# 2124| getStmt(): [BlockStmt] { ... } -# 2125| getStmt(0): [DeclStmt] declaration -# 2125| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x702 -# 2125| Type = [Struct] String -# 2125| getVariable().getInitializer(): [Initializer] initializer for x702 -# 2125| getExpr(): [ConstructorCall] call to String -# 2125| Type = [VoidType] void -# 2125| ValueCategory = prvalue -# 2126| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2126| Type = [VoidType] void -# 2126| ValueCategory = prvalue -# 2126| getQualifier(): [VariableAccess] x702 -# 2126| Type = [Struct] String -# 2126| ValueCategory = lvalue -# 2126| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2126| Conversion = [BoolConversion] conversion to bool -# 2126| Type = [BoolType] bool -# 2126| Value = [CStyleCast] 0 -# 2126| ValueCategory = prvalue -# 2127| getStmt(703): [DoStmt] do (...) ... -# 2129| getCondition(): [Literal] 0 -# 2129| Type = [IntType] int -# 2129| Value = [Literal] 0 -# 2129| ValueCategory = prvalue -# 2127| getStmt(): [BlockStmt] { ... } -# 2128| getStmt(0): [DeclStmt] declaration -# 2128| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x703 -# 2128| Type = [Struct] String -# 2128| getVariable().getInitializer(): [Initializer] initializer for x703 -# 2128| getExpr(): [ConstructorCall] call to String -# 2128| Type = [VoidType] void -# 2128| ValueCategory = prvalue -# 2129| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2129| Type = [VoidType] void -# 2129| ValueCategory = prvalue -# 2129| getQualifier(): [VariableAccess] x703 -# 2129| Type = [Struct] String -# 2129| ValueCategory = lvalue -# 2129| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2129| Conversion = [BoolConversion] conversion to bool -# 2129| Type = [BoolType] bool -# 2129| Value = [CStyleCast] 0 -# 2129| ValueCategory = prvalue -# 2130| getStmt(704): [DoStmt] do (...) ... -# 2132| getCondition(): [Literal] 0 -# 2132| Type = [IntType] int -# 2132| Value = [Literal] 0 -# 2132| ValueCategory = prvalue -# 2130| getStmt(): [BlockStmt] { ... } -# 2131| getStmt(0): [DeclStmt] declaration -# 2131| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x704 -# 2131| Type = [Struct] String -# 2131| getVariable().getInitializer(): [Initializer] initializer for x704 -# 2131| getExpr(): [ConstructorCall] call to String -# 2131| Type = [VoidType] void -# 2131| ValueCategory = prvalue -# 2132| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2132| Type = [VoidType] void -# 2132| ValueCategory = prvalue -# 2132| getQualifier(): [VariableAccess] x704 -# 2132| Type = [Struct] String -# 2132| ValueCategory = lvalue -# 2132| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2132| Conversion = [BoolConversion] conversion to bool -# 2132| Type = [BoolType] bool -# 2132| Value = [CStyleCast] 0 -# 2132| ValueCategory = prvalue -# 2133| getStmt(705): [DoStmt] do (...) ... -# 2135| getCondition(): [Literal] 0 -# 2135| Type = [IntType] int -# 2135| Value = [Literal] 0 -# 2135| ValueCategory = prvalue -# 2133| getStmt(): [BlockStmt] { ... } -# 2134| getStmt(0): [DeclStmt] declaration -# 2134| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x705 -# 2134| Type = [Struct] String -# 2134| getVariable().getInitializer(): [Initializer] initializer for x705 -# 2134| getExpr(): [ConstructorCall] call to String -# 2134| Type = [VoidType] void -# 2134| ValueCategory = prvalue -# 2135| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2135| Type = [VoidType] void -# 2135| ValueCategory = prvalue -# 2135| getQualifier(): [VariableAccess] x705 -# 2135| Type = [Struct] String -# 2135| ValueCategory = lvalue -# 2135| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2135| Conversion = [BoolConversion] conversion to bool -# 2135| Type = [BoolType] bool -# 2135| Value = [CStyleCast] 0 -# 2135| ValueCategory = prvalue -# 2136| getStmt(706): [DoStmt] do (...) ... -# 2138| getCondition(): [Literal] 0 -# 2138| Type = [IntType] int -# 2138| Value = [Literal] 0 -# 2138| ValueCategory = prvalue -# 2136| getStmt(): [BlockStmt] { ... } -# 2137| getStmt(0): [DeclStmt] declaration -# 2137| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x706 -# 2137| Type = [Struct] String -# 2137| getVariable().getInitializer(): [Initializer] initializer for x706 -# 2137| getExpr(): [ConstructorCall] call to String -# 2137| Type = [VoidType] void -# 2137| ValueCategory = prvalue -# 2138| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2138| Type = [VoidType] void -# 2138| ValueCategory = prvalue -# 2138| getQualifier(): [VariableAccess] x706 -# 2138| Type = [Struct] String -# 2138| ValueCategory = lvalue -# 2138| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2138| Conversion = [BoolConversion] conversion to bool -# 2138| Type = [BoolType] bool -# 2138| Value = [CStyleCast] 0 -# 2138| ValueCategory = prvalue -# 2139| getStmt(707): [DoStmt] do (...) ... -# 2141| getCondition(): [Literal] 0 -# 2141| Type = [IntType] int -# 2141| Value = [Literal] 0 -# 2141| ValueCategory = prvalue -# 2139| getStmt(): [BlockStmt] { ... } -# 2140| getStmt(0): [DeclStmt] declaration -# 2140| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x707 -# 2140| Type = [Struct] String -# 2140| getVariable().getInitializer(): [Initializer] initializer for x707 -# 2140| getExpr(): [ConstructorCall] call to String -# 2140| Type = [VoidType] void -# 2140| ValueCategory = prvalue -# 2141| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2141| Type = [VoidType] void -# 2141| ValueCategory = prvalue -# 2141| getQualifier(): [VariableAccess] x707 -# 2141| Type = [Struct] String -# 2141| ValueCategory = lvalue -# 2141| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2141| Conversion = [BoolConversion] conversion to bool -# 2141| Type = [BoolType] bool -# 2141| Value = [CStyleCast] 0 -# 2141| ValueCategory = prvalue -# 2142| getStmt(708): [DoStmt] do (...) ... -# 2144| getCondition(): [Literal] 0 -# 2144| Type = [IntType] int -# 2144| Value = [Literal] 0 -# 2144| ValueCategory = prvalue -# 2142| getStmt(): [BlockStmt] { ... } -# 2143| getStmt(0): [DeclStmt] declaration -# 2143| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x708 -# 2143| Type = [Struct] String -# 2143| getVariable().getInitializer(): [Initializer] initializer for x708 -# 2143| getExpr(): [ConstructorCall] call to String -# 2143| Type = [VoidType] void -# 2143| ValueCategory = prvalue -# 2144| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2144| Type = [VoidType] void -# 2144| ValueCategory = prvalue -# 2144| getQualifier(): [VariableAccess] x708 -# 2144| Type = [Struct] String -# 2144| ValueCategory = lvalue -# 2144| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2144| Conversion = [BoolConversion] conversion to bool -# 2144| Type = [BoolType] bool -# 2144| Value = [CStyleCast] 0 -# 2144| ValueCategory = prvalue -# 2145| getStmt(709): [DoStmt] do (...) ... -# 2147| getCondition(): [Literal] 0 -# 2147| Type = [IntType] int -# 2147| Value = [Literal] 0 -# 2147| ValueCategory = prvalue -# 2145| getStmt(): [BlockStmt] { ... } -# 2146| getStmt(0): [DeclStmt] declaration -# 2146| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x709 -# 2146| Type = [Struct] String -# 2146| getVariable().getInitializer(): [Initializer] initializer for x709 -# 2146| getExpr(): [ConstructorCall] call to String -# 2146| Type = [VoidType] void -# 2146| ValueCategory = prvalue -# 2147| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2147| Type = [VoidType] void -# 2147| ValueCategory = prvalue -# 2147| getQualifier(): [VariableAccess] x709 -# 2147| Type = [Struct] String -# 2147| ValueCategory = lvalue -# 2147| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2147| Conversion = [BoolConversion] conversion to bool -# 2147| Type = [BoolType] bool -# 2147| Value = [CStyleCast] 0 -# 2147| ValueCategory = prvalue -# 2148| getStmt(710): [DoStmt] do (...) ... -# 2150| getCondition(): [Literal] 0 -# 2150| Type = [IntType] int -# 2150| Value = [Literal] 0 -# 2150| ValueCategory = prvalue -# 2148| getStmt(): [BlockStmt] { ... } -# 2149| getStmt(0): [DeclStmt] declaration -# 2149| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x710 -# 2149| Type = [Struct] String -# 2149| getVariable().getInitializer(): [Initializer] initializer for x710 -# 2149| getExpr(): [ConstructorCall] call to String -# 2149| Type = [VoidType] void -# 2149| ValueCategory = prvalue -# 2150| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2150| Type = [VoidType] void -# 2150| ValueCategory = prvalue -# 2150| getQualifier(): [VariableAccess] x710 -# 2150| Type = [Struct] String -# 2150| ValueCategory = lvalue -# 2150| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2150| Conversion = [BoolConversion] conversion to bool -# 2150| Type = [BoolType] bool -# 2150| Value = [CStyleCast] 0 -# 2150| ValueCategory = prvalue -# 2151| getStmt(711): [DoStmt] do (...) ... -# 2153| getCondition(): [Literal] 0 -# 2153| Type = [IntType] int -# 2153| Value = [Literal] 0 -# 2153| ValueCategory = prvalue -# 2151| getStmt(): [BlockStmt] { ... } -# 2152| getStmt(0): [DeclStmt] declaration -# 2152| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x711 -# 2152| Type = [Struct] String -# 2152| getVariable().getInitializer(): [Initializer] initializer for x711 -# 2152| getExpr(): [ConstructorCall] call to String -# 2152| Type = [VoidType] void -# 2152| ValueCategory = prvalue -# 2153| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2153| Type = [VoidType] void -# 2153| ValueCategory = prvalue -# 2153| getQualifier(): [VariableAccess] x711 -# 2153| Type = [Struct] String -# 2153| ValueCategory = lvalue -# 2153| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2153| Conversion = [BoolConversion] conversion to bool -# 2153| Type = [BoolType] bool -# 2153| Value = [CStyleCast] 0 -# 2153| ValueCategory = prvalue -# 2154| getStmt(712): [DoStmt] do (...) ... -# 2156| getCondition(): [Literal] 0 -# 2156| Type = [IntType] int -# 2156| Value = [Literal] 0 -# 2156| ValueCategory = prvalue -# 2154| getStmt(): [BlockStmt] { ... } -# 2155| getStmt(0): [DeclStmt] declaration -# 2155| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x712 -# 2155| Type = [Struct] String -# 2155| getVariable().getInitializer(): [Initializer] initializer for x712 -# 2155| getExpr(): [ConstructorCall] call to String -# 2155| Type = [VoidType] void -# 2155| ValueCategory = prvalue -# 2156| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2156| Type = [VoidType] void -# 2156| ValueCategory = prvalue -# 2156| getQualifier(): [VariableAccess] x712 -# 2156| Type = [Struct] String -# 2156| ValueCategory = lvalue -# 2156| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2156| Conversion = [BoolConversion] conversion to bool -# 2156| Type = [BoolType] bool -# 2156| Value = [CStyleCast] 0 -# 2156| ValueCategory = prvalue -# 2157| getStmt(713): [DoStmt] do (...) ... -# 2159| getCondition(): [Literal] 0 -# 2159| Type = [IntType] int -# 2159| Value = [Literal] 0 -# 2159| ValueCategory = prvalue -# 2157| getStmt(): [BlockStmt] { ... } -# 2158| getStmt(0): [DeclStmt] declaration -# 2158| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x713 -# 2158| Type = [Struct] String -# 2158| getVariable().getInitializer(): [Initializer] initializer for x713 -# 2158| getExpr(): [ConstructorCall] call to String -# 2158| Type = [VoidType] void -# 2158| ValueCategory = prvalue -# 2159| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2159| Type = [VoidType] void -# 2159| ValueCategory = prvalue -# 2159| getQualifier(): [VariableAccess] x713 -# 2159| Type = [Struct] String -# 2159| ValueCategory = lvalue -# 2159| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2159| Conversion = [BoolConversion] conversion to bool -# 2159| Type = [BoolType] bool -# 2159| Value = [CStyleCast] 0 -# 2159| ValueCategory = prvalue -# 2160| getStmt(714): [DoStmt] do (...) ... -# 2162| getCondition(): [Literal] 0 -# 2162| Type = [IntType] int -# 2162| Value = [Literal] 0 -# 2162| ValueCategory = prvalue -# 2160| getStmt(): [BlockStmt] { ... } -# 2161| getStmt(0): [DeclStmt] declaration -# 2161| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x714 -# 2161| Type = [Struct] String -# 2161| getVariable().getInitializer(): [Initializer] initializer for x714 -# 2161| getExpr(): [ConstructorCall] call to String -# 2161| Type = [VoidType] void -# 2161| ValueCategory = prvalue -# 2162| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2162| Type = [VoidType] void -# 2162| ValueCategory = prvalue -# 2162| getQualifier(): [VariableAccess] x714 -# 2162| Type = [Struct] String -# 2162| ValueCategory = lvalue -# 2162| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2162| Conversion = [BoolConversion] conversion to bool -# 2162| Type = [BoolType] bool -# 2162| Value = [CStyleCast] 0 -# 2162| ValueCategory = prvalue -# 2163| getStmt(715): [DoStmt] do (...) ... -# 2165| getCondition(): [Literal] 0 -# 2165| Type = [IntType] int -# 2165| Value = [Literal] 0 -# 2165| ValueCategory = prvalue -# 2163| getStmt(): [BlockStmt] { ... } -# 2164| getStmt(0): [DeclStmt] declaration -# 2164| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x715 -# 2164| Type = [Struct] String -# 2164| getVariable().getInitializer(): [Initializer] initializer for x715 -# 2164| getExpr(): [ConstructorCall] call to String -# 2164| Type = [VoidType] void -# 2164| ValueCategory = prvalue -# 2165| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2165| Type = [VoidType] void -# 2165| ValueCategory = prvalue -# 2165| getQualifier(): [VariableAccess] x715 -# 2165| Type = [Struct] String -# 2165| ValueCategory = lvalue -# 2165| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2165| Conversion = [BoolConversion] conversion to bool -# 2165| Type = [BoolType] bool -# 2165| Value = [CStyleCast] 0 -# 2165| ValueCategory = prvalue -# 2166| getStmt(716): [DoStmt] do (...) ... -# 2168| getCondition(): [Literal] 0 -# 2168| Type = [IntType] int -# 2168| Value = [Literal] 0 -# 2168| ValueCategory = prvalue -# 2166| getStmt(): [BlockStmt] { ... } -# 2167| getStmt(0): [DeclStmt] declaration -# 2167| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x716 -# 2167| Type = [Struct] String -# 2167| getVariable().getInitializer(): [Initializer] initializer for x716 -# 2167| getExpr(): [ConstructorCall] call to String -# 2167| Type = [VoidType] void -# 2167| ValueCategory = prvalue -# 2168| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2168| Type = [VoidType] void -# 2168| ValueCategory = prvalue -# 2168| getQualifier(): [VariableAccess] x716 -# 2168| Type = [Struct] String -# 2168| ValueCategory = lvalue -# 2168| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2168| Conversion = [BoolConversion] conversion to bool -# 2168| Type = [BoolType] bool -# 2168| Value = [CStyleCast] 0 -# 2168| ValueCategory = prvalue -# 2169| getStmt(717): [DoStmt] do (...) ... -# 2171| getCondition(): [Literal] 0 -# 2171| Type = [IntType] int -# 2171| Value = [Literal] 0 -# 2171| ValueCategory = prvalue -# 2169| getStmt(): [BlockStmt] { ... } -# 2170| getStmt(0): [DeclStmt] declaration -# 2170| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x717 -# 2170| Type = [Struct] String -# 2170| getVariable().getInitializer(): [Initializer] initializer for x717 -# 2170| getExpr(): [ConstructorCall] call to String -# 2170| Type = [VoidType] void -# 2170| ValueCategory = prvalue -# 2171| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2171| Type = [VoidType] void -# 2171| ValueCategory = prvalue -# 2171| getQualifier(): [VariableAccess] x717 -# 2171| Type = [Struct] String -# 2171| ValueCategory = lvalue -# 2171| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2171| Conversion = [BoolConversion] conversion to bool -# 2171| Type = [BoolType] bool -# 2171| Value = [CStyleCast] 0 -# 2171| ValueCategory = prvalue -# 2172| getStmt(718): [DoStmt] do (...) ... -# 2174| getCondition(): [Literal] 0 -# 2174| Type = [IntType] int -# 2174| Value = [Literal] 0 -# 2174| ValueCategory = prvalue -# 2172| getStmt(): [BlockStmt] { ... } -# 2173| getStmt(0): [DeclStmt] declaration -# 2173| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x718 -# 2173| Type = [Struct] String -# 2173| getVariable().getInitializer(): [Initializer] initializer for x718 -# 2173| getExpr(): [ConstructorCall] call to String -# 2173| Type = [VoidType] void -# 2173| ValueCategory = prvalue -# 2174| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2174| Type = [VoidType] void -# 2174| ValueCategory = prvalue -# 2174| getQualifier(): [VariableAccess] x718 -# 2174| Type = [Struct] String -# 2174| ValueCategory = lvalue -# 2174| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2174| Conversion = [BoolConversion] conversion to bool -# 2174| Type = [BoolType] bool -# 2174| Value = [CStyleCast] 0 -# 2174| ValueCategory = prvalue -# 2175| getStmt(719): [DoStmt] do (...) ... -# 2177| getCondition(): [Literal] 0 -# 2177| Type = [IntType] int -# 2177| Value = [Literal] 0 -# 2177| ValueCategory = prvalue -# 2175| getStmt(): [BlockStmt] { ... } -# 2176| getStmt(0): [DeclStmt] declaration -# 2176| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x719 -# 2176| Type = [Struct] String -# 2176| getVariable().getInitializer(): [Initializer] initializer for x719 -# 2176| getExpr(): [ConstructorCall] call to String -# 2176| Type = [VoidType] void -# 2176| ValueCategory = prvalue -# 2177| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2177| Type = [VoidType] void -# 2177| ValueCategory = prvalue -# 2177| getQualifier(): [VariableAccess] x719 -# 2177| Type = [Struct] String -# 2177| ValueCategory = lvalue -# 2177| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2177| Conversion = [BoolConversion] conversion to bool -# 2177| Type = [BoolType] bool -# 2177| Value = [CStyleCast] 0 -# 2177| ValueCategory = prvalue -# 2178| getStmt(720): [DoStmt] do (...) ... -# 2180| getCondition(): [Literal] 0 -# 2180| Type = [IntType] int -# 2180| Value = [Literal] 0 -# 2180| ValueCategory = prvalue -# 2178| getStmt(): [BlockStmt] { ... } -# 2179| getStmt(0): [DeclStmt] declaration -# 2179| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x720 -# 2179| Type = [Struct] String -# 2179| getVariable().getInitializer(): [Initializer] initializer for x720 -# 2179| getExpr(): [ConstructorCall] call to String -# 2179| Type = [VoidType] void -# 2179| ValueCategory = prvalue -# 2180| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2180| Type = [VoidType] void -# 2180| ValueCategory = prvalue -# 2180| getQualifier(): [VariableAccess] x720 -# 2180| Type = [Struct] String -# 2180| ValueCategory = lvalue -# 2180| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2180| Conversion = [BoolConversion] conversion to bool -# 2180| Type = [BoolType] bool -# 2180| Value = [CStyleCast] 0 -# 2180| ValueCategory = prvalue -# 2181| getStmt(721): [DoStmt] do (...) ... -# 2183| getCondition(): [Literal] 0 -# 2183| Type = [IntType] int -# 2183| Value = [Literal] 0 -# 2183| ValueCategory = prvalue -# 2181| getStmt(): [BlockStmt] { ... } -# 2182| getStmt(0): [DeclStmt] declaration -# 2182| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x721 -# 2182| Type = [Struct] String -# 2182| getVariable().getInitializer(): [Initializer] initializer for x721 -# 2182| getExpr(): [ConstructorCall] call to String -# 2182| Type = [VoidType] void -# 2182| ValueCategory = prvalue -# 2183| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2183| Type = [VoidType] void -# 2183| ValueCategory = prvalue -# 2183| getQualifier(): [VariableAccess] x721 -# 2183| Type = [Struct] String -# 2183| ValueCategory = lvalue -# 2183| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2183| Conversion = [BoolConversion] conversion to bool -# 2183| Type = [BoolType] bool -# 2183| Value = [CStyleCast] 0 -# 2183| ValueCategory = prvalue -# 2184| getStmt(722): [DoStmt] do (...) ... -# 2186| getCondition(): [Literal] 0 -# 2186| Type = [IntType] int -# 2186| Value = [Literal] 0 -# 2186| ValueCategory = prvalue -# 2184| getStmt(): [BlockStmt] { ... } -# 2185| getStmt(0): [DeclStmt] declaration -# 2185| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x722 -# 2185| Type = [Struct] String -# 2185| getVariable().getInitializer(): [Initializer] initializer for x722 -# 2185| getExpr(): [ConstructorCall] call to String -# 2185| Type = [VoidType] void -# 2185| ValueCategory = prvalue -# 2186| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2186| Type = [VoidType] void -# 2186| ValueCategory = prvalue -# 2186| getQualifier(): [VariableAccess] x722 -# 2186| Type = [Struct] String -# 2186| ValueCategory = lvalue -# 2186| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2186| Conversion = [BoolConversion] conversion to bool -# 2186| Type = [BoolType] bool -# 2186| Value = [CStyleCast] 0 -# 2186| ValueCategory = prvalue -# 2187| getStmt(723): [DoStmt] do (...) ... -# 2189| getCondition(): [Literal] 0 -# 2189| Type = [IntType] int -# 2189| Value = [Literal] 0 -# 2189| ValueCategory = prvalue -# 2187| getStmt(): [BlockStmt] { ... } -# 2188| getStmt(0): [DeclStmt] declaration -# 2188| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x723 -# 2188| Type = [Struct] String -# 2188| getVariable().getInitializer(): [Initializer] initializer for x723 -# 2188| getExpr(): [ConstructorCall] call to String -# 2188| Type = [VoidType] void -# 2188| ValueCategory = prvalue -# 2189| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2189| Type = [VoidType] void -# 2189| ValueCategory = prvalue -# 2189| getQualifier(): [VariableAccess] x723 -# 2189| Type = [Struct] String -# 2189| ValueCategory = lvalue -# 2189| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2189| Conversion = [BoolConversion] conversion to bool -# 2189| Type = [BoolType] bool -# 2189| Value = [CStyleCast] 0 -# 2189| ValueCategory = prvalue -# 2190| getStmt(724): [DoStmt] do (...) ... -# 2192| getCondition(): [Literal] 0 -# 2192| Type = [IntType] int -# 2192| Value = [Literal] 0 -# 2192| ValueCategory = prvalue -# 2190| getStmt(): [BlockStmt] { ... } -# 2191| getStmt(0): [DeclStmt] declaration -# 2191| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x724 -# 2191| Type = [Struct] String -# 2191| getVariable().getInitializer(): [Initializer] initializer for x724 -# 2191| getExpr(): [ConstructorCall] call to String -# 2191| Type = [VoidType] void -# 2191| ValueCategory = prvalue -# 2192| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2192| Type = [VoidType] void -# 2192| ValueCategory = prvalue -# 2192| getQualifier(): [VariableAccess] x724 -# 2192| Type = [Struct] String -# 2192| ValueCategory = lvalue -# 2192| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2192| Conversion = [BoolConversion] conversion to bool -# 2192| Type = [BoolType] bool -# 2192| Value = [CStyleCast] 0 -# 2192| ValueCategory = prvalue -# 2193| getStmt(725): [DoStmt] do (...) ... -# 2195| getCondition(): [Literal] 0 -# 2195| Type = [IntType] int -# 2195| Value = [Literal] 0 -# 2195| ValueCategory = prvalue -# 2193| getStmt(): [BlockStmt] { ... } -# 2194| getStmt(0): [DeclStmt] declaration -# 2194| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x725 -# 2194| Type = [Struct] String -# 2194| getVariable().getInitializer(): [Initializer] initializer for x725 -# 2194| getExpr(): [ConstructorCall] call to String -# 2194| Type = [VoidType] void -# 2194| ValueCategory = prvalue -# 2195| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2195| Type = [VoidType] void -# 2195| ValueCategory = prvalue -# 2195| getQualifier(): [VariableAccess] x725 -# 2195| Type = [Struct] String -# 2195| ValueCategory = lvalue -# 2195| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2195| Conversion = [BoolConversion] conversion to bool -# 2195| Type = [BoolType] bool -# 2195| Value = [CStyleCast] 0 -# 2195| ValueCategory = prvalue -# 2196| getStmt(726): [DoStmt] do (...) ... -# 2198| getCondition(): [Literal] 0 -# 2198| Type = [IntType] int -# 2198| Value = [Literal] 0 -# 2198| ValueCategory = prvalue -# 2196| getStmt(): [BlockStmt] { ... } -# 2197| getStmt(0): [DeclStmt] declaration -# 2197| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x726 -# 2197| Type = [Struct] String -# 2197| getVariable().getInitializer(): [Initializer] initializer for x726 -# 2197| getExpr(): [ConstructorCall] call to String -# 2197| Type = [VoidType] void -# 2197| ValueCategory = prvalue -# 2198| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2198| Type = [VoidType] void -# 2198| ValueCategory = prvalue -# 2198| getQualifier(): [VariableAccess] x726 -# 2198| Type = [Struct] String -# 2198| ValueCategory = lvalue -# 2198| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2198| Conversion = [BoolConversion] conversion to bool -# 2198| Type = [BoolType] bool -# 2198| Value = [CStyleCast] 0 -# 2198| ValueCategory = prvalue -# 2199| getStmt(727): [DoStmt] do (...) ... -# 2201| getCondition(): [Literal] 0 -# 2201| Type = [IntType] int -# 2201| Value = [Literal] 0 -# 2201| ValueCategory = prvalue -# 2199| getStmt(): [BlockStmt] { ... } -# 2200| getStmt(0): [DeclStmt] declaration -# 2200| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x727 -# 2200| Type = [Struct] String -# 2200| getVariable().getInitializer(): [Initializer] initializer for x727 -# 2200| getExpr(): [ConstructorCall] call to String -# 2200| Type = [VoidType] void -# 2200| ValueCategory = prvalue -# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2201| Type = [VoidType] void -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] x727 -# 2201| Type = [Struct] String -# 2201| ValueCategory = lvalue -# 2201| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2201| Conversion = [BoolConversion] conversion to bool -# 2201| Type = [BoolType] bool -# 2201| Value = [CStyleCast] 0 -# 2201| ValueCategory = prvalue -# 2202| getStmt(728): [DoStmt] do (...) ... -# 2204| getCondition(): [Literal] 0 -# 2204| Type = [IntType] int -# 2204| Value = [Literal] 0 -# 2204| ValueCategory = prvalue -# 2202| getStmt(): [BlockStmt] { ... } -# 2203| getStmt(0): [DeclStmt] declaration -# 2203| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x728 -# 2203| Type = [Struct] String -# 2203| getVariable().getInitializer(): [Initializer] initializer for x728 -# 2203| getExpr(): [ConstructorCall] call to String -# 2203| Type = [VoidType] void -# 2203| ValueCategory = prvalue -# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] x728 -# 2204| Type = [Struct] String -# 2204| ValueCategory = lvalue -# 2204| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2204| Conversion = [BoolConversion] conversion to bool -# 2204| Type = [BoolType] bool -# 2204| Value = [CStyleCast] 0 -# 2204| ValueCategory = prvalue -# 2205| getStmt(729): [DoStmt] do (...) ... -# 2207| getCondition(): [Literal] 0 -# 2207| Type = [IntType] int -# 2207| Value = [Literal] 0 -# 2207| ValueCategory = prvalue -# 2205| getStmt(): [BlockStmt] { ... } -# 2206| getStmt(0): [DeclStmt] declaration -# 2206| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x729 -# 2206| Type = [Struct] String -# 2206| getVariable().getInitializer(): [Initializer] initializer for x729 -# 2206| getExpr(): [ConstructorCall] call to String -# 2206| Type = [VoidType] void -# 2206| ValueCategory = prvalue -# 2207| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2207| Type = [VoidType] void -# 2207| ValueCategory = prvalue -# 2207| getQualifier(): [VariableAccess] x729 -# 2207| Type = [Struct] String -# 2207| ValueCategory = lvalue -# 2207| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2207| Conversion = [BoolConversion] conversion to bool -# 2207| Type = [BoolType] bool -# 2207| Value = [CStyleCast] 0 -# 2207| ValueCategory = prvalue -# 2208| getStmt(730): [DoStmt] do (...) ... -# 2210| getCondition(): [Literal] 0 -# 2210| Type = [IntType] int -# 2210| Value = [Literal] 0 -# 2210| ValueCategory = prvalue -# 2208| getStmt(): [BlockStmt] { ... } -# 2209| getStmt(0): [DeclStmt] declaration -# 2209| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x730 -# 2209| Type = [Struct] String -# 2209| getVariable().getInitializer(): [Initializer] initializer for x730 -# 2209| getExpr(): [ConstructorCall] call to String -# 2209| Type = [VoidType] void -# 2209| ValueCategory = prvalue -# 2210| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2210| Type = [VoidType] void -# 2210| ValueCategory = prvalue -# 2210| getQualifier(): [VariableAccess] x730 -# 2210| Type = [Struct] String -# 2210| ValueCategory = lvalue -# 2210| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2210| Conversion = [BoolConversion] conversion to bool -# 2210| Type = [BoolType] bool -# 2210| Value = [CStyleCast] 0 -# 2210| ValueCategory = prvalue -# 2211| getStmt(731): [DoStmt] do (...) ... -# 2213| getCondition(): [Literal] 0 -# 2213| Type = [IntType] int -# 2213| Value = [Literal] 0 -# 2213| ValueCategory = prvalue -# 2211| getStmt(): [BlockStmt] { ... } -# 2212| getStmt(0): [DeclStmt] declaration -# 2212| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x731 -# 2212| Type = [Struct] String -# 2212| getVariable().getInitializer(): [Initializer] initializer for x731 -# 2212| getExpr(): [ConstructorCall] call to String -# 2212| Type = [VoidType] void -# 2212| ValueCategory = prvalue -# 2213| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2213| Type = [VoidType] void -# 2213| ValueCategory = prvalue -# 2213| getQualifier(): [VariableAccess] x731 -# 2213| Type = [Struct] String -# 2213| ValueCategory = lvalue -# 2213| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2213| Conversion = [BoolConversion] conversion to bool -# 2213| Type = [BoolType] bool -# 2213| Value = [CStyleCast] 0 -# 2213| ValueCategory = prvalue -# 2214| getStmt(732): [DoStmt] do (...) ... -# 2216| getCondition(): [Literal] 0 -# 2216| Type = [IntType] int -# 2216| Value = [Literal] 0 -# 2216| ValueCategory = prvalue -# 2214| getStmt(): [BlockStmt] { ... } -# 2215| getStmt(0): [DeclStmt] declaration -# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x732 -# 2215| Type = [Struct] String -# 2215| getVariable().getInitializer(): [Initializer] initializer for x732 -# 2215| getExpr(): [ConstructorCall] call to String -# 2215| Type = [VoidType] void -# 2215| ValueCategory = prvalue -# 2216| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2216| Type = [VoidType] void -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [VariableAccess] x732 -# 2216| Type = [Struct] String -# 2216| ValueCategory = lvalue -# 2216| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2216| Conversion = [BoolConversion] conversion to bool -# 2216| Type = [BoolType] bool -# 2216| Value = [CStyleCast] 0 -# 2216| ValueCategory = prvalue -# 2217| getStmt(733): [DoStmt] do (...) ... -# 2219| getCondition(): [Literal] 0 -# 2219| Type = [IntType] int -# 2219| Value = [Literal] 0 -# 2219| ValueCategory = prvalue -# 2217| getStmt(): [BlockStmt] { ... } -# 2218| getStmt(0): [DeclStmt] declaration -# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x733 -# 2218| Type = [Struct] String -# 2218| getVariable().getInitializer(): [Initializer] initializer for x733 -# 2218| getExpr(): [ConstructorCall] call to String -# 2218| Type = [VoidType] void -# 2218| ValueCategory = prvalue -# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] x733 -# 2219| Type = [Struct] String -# 2219| ValueCategory = lvalue -# 2219| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2219| Conversion = [BoolConversion] conversion to bool -# 2219| Type = [BoolType] bool -# 2219| Value = [CStyleCast] 0 -# 2219| ValueCategory = prvalue -# 2220| getStmt(734): [DoStmt] do (...) ... -# 2222| getCondition(): [Literal] 0 -# 2222| Type = [IntType] int -# 2222| Value = [Literal] 0 -# 2222| ValueCategory = prvalue -# 2220| getStmt(): [BlockStmt] { ... } -# 2221| getStmt(0): [DeclStmt] declaration -# 2221| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x734 -# 2221| Type = [Struct] String -# 2221| getVariable().getInitializer(): [Initializer] initializer for x734 -# 2221| getExpr(): [ConstructorCall] call to String -# 2221| Type = [VoidType] void -# 2221| ValueCategory = prvalue -# 2222| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2222| Type = [VoidType] void -# 2222| ValueCategory = prvalue -# 2222| getQualifier(): [VariableAccess] x734 -# 2222| Type = [Struct] String -# 2222| ValueCategory = lvalue -# 2222| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2222| Conversion = [BoolConversion] conversion to bool -# 2222| Type = [BoolType] bool -# 2222| Value = [CStyleCast] 0 -# 2222| ValueCategory = prvalue -# 2223| getStmt(735): [DoStmt] do (...) ... -# 2225| getCondition(): [Literal] 0 -# 2225| Type = [IntType] int -# 2225| Value = [Literal] 0 -# 2225| ValueCategory = prvalue -# 2223| getStmt(): [BlockStmt] { ... } -# 2224| getStmt(0): [DeclStmt] declaration -# 2224| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x735 -# 2224| Type = [Struct] String -# 2224| getVariable().getInitializer(): [Initializer] initializer for x735 -# 2224| getExpr(): [ConstructorCall] call to String -# 2224| Type = [VoidType] void -# 2224| ValueCategory = prvalue -# 2225| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2225| Type = [VoidType] void -# 2225| ValueCategory = prvalue -# 2225| getQualifier(): [VariableAccess] x735 -# 2225| Type = [Struct] String -# 2225| ValueCategory = lvalue -# 2225| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2225| Conversion = [BoolConversion] conversion to bool -# 2225| Type = [BoolType] bool -# 2225| Value = [CStyleCast] 0 -# 2225| ValueCategory = prvalue -# 2226| getStmt(736): [DoStmt] do (...) ... -# 2228| getCondition(): [Literal] 0 -# 2228| Type = [IntType] int -# 2228| Value = [Literal] 0 -# 2228| ValueCategory = prvalue -# 2226| getStmt(): [BlockStmt] { ... } -# 2227| getStmt(0): [DeclStmt] declaration -# 2227| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x736 -# 2227| Type = [Struct] String -# 2227| getVariable().getInitializer(): [Initializer] initializer for x736 -# 2227| getExpr(): [ConstructorCall] call to String -# 2227| Type = [VoidType] void -# 2227| ValueCategory = prvalue -# 2228| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2228| Type = [VoidType] void -# 2228| ValueCategory = prvalue -# 2228| getQualifier(): [VariableAccess] x736 -# 2228| Type = [Struct] String -# 2228| ValueCategory = lvalue -# 2228| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2228| Conversion = [BoolConversion] conversion to bool -# 2228| Type = [BoolType] bool -# 2228| Value = [CStyleCast] 0 -# 2228| ValueCategory = prvalue -# 2229| getStmt(737): [DoStmt] do (...) ... -# 2231| getCondition(): [Literal] 0 -# 2231| Type = [IntType] int -# 2231| Value = [Literal] 0 -# 2231| ValueCategory = prvalue -# 2229| getStmt(): [BlockStmt] { ... } -# 2230| getStmt(0): [DeclStmt] declaration -# 2230| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x737 -# 2230| Type = [Struct] String -# 2230| getVariable().getInitializer(): [Initializer] initializer for x737 -# 2230| getExpr(): [ConstructorCall] call to String -# 2230| Type = [VoidType] void -# 2230| ValueCategory = prvalue -# 2231| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2231| Type = [VoidType] void -# 2231| ValueCategory = prvalue -# 2231| getQualifier(): [VariableAccess] x737 -# 2231| Type = [Struct] String -# 2231| ValueCategory = lvalue -# 2231| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2231| Conversion = [BoolConversion] conversion to bool -# 2231| Type = [BoolType] bool -# 2231| Value = [CStyleCast] 0 -# 2231| ValueCategory = prvalue -# 2232| getStmt(738): [DoStmt] do (...) ... -# 2234| getCondition(): [Literal] 0 -# 2234| Type = [IntType] int -# 2234| Value = [Literal] 0 -# 2234| ValueCategory = prvalue -# 2232| getStmt(): [BlockStmt] { ... } -# 2233| getStmt(0): [DeclStmt] declaration -# 2233| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x738 -# 2233| Type = [Struct] String -# 2233| getVariable().getInitializer(): [Initializer] initializer for x738 -# 2233| getExpr(): [ConstructorCall] call to String -# 2233| Type = [VoidType] void -# 2233| ValueCategory = prvalue -# 2234| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2234| Type = [VoidType] void -# 2234| ValueCategory = prvalue -# 2234| getQualifier(): [VariableAccess] x738 -# 2234| Type = [Struct] String -# 2234| ValueCategory = lvalue -# 2234| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2234| Conversion = [BoolConversion] conversion to bool -# 2234| Type = [BoolType] bool -# 2234| Value = [CStyleCast] 0 -# 2234| ValueCategory = prvalue -# 2235| getStmt(739): [DoStmt] do (...) ... -# 2237| getCondition(): [Literal] 0 -# 2237| Type = [IntType] int -# 2237| Value = [Literal] 0 -# 2237| ValueCategory = prvalue -# 2235| getStmt(): [BlockStmt] { ... } -# 2236| getStmt(0): [DeclStmt] declaration -# 2236| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x739 -# 2236| Type = [Struct] String -# 2236| getVariable().getInitializer(): [Initializer] initializer for x739 -# 2236| getExpr(): [ConstructorCall] call to String -# 2236| Type = [VoidType] void -# 2236| ValueCategory = prvalue -# 2237| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2237| Type = [VoidType] void -# 2237| ValueCategory = prvalue -# 2237| getQualifier(): [VariableAccess] x739 -# 2237| Type = [Struct] String -# 2237| ValueCategory = lvalue -# 2237| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2237| Conversion = [BoolConversion] conversion to bool -# 2237| Type = [BoolType] bool -# 2237| Value = [CStyleCast] 0 -# 2237| ValueCategory = prvalue -# 2238| getStmt(740): [DoStmt] do (...) ... -# 2240| getCondition(): [Literal] 0 -# 2240| Type = [IntType] int -# 2240| Value = [Literal] 0 -# 2240| ValueCategory = prvalue -# 2238| getStmt(): [BlockStmt] { ... } -# 2239| getStmt(0): [DeclStmt] declaration -# 2239| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x740 -# 2239| Type = [Struct] String -# 2239| getVariable().getInitializer(): [Initializer] initializer for x740 -# 2239| getExpr(): [ConstructorCall] call to String -# 2239| Type = [VoidType] void -# 2239| ValueCategory = prvalue -# 2240| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2240| Type = [VoidType] void -# 2240| ValueCategory = prvalue -# 2240| getQualifier(): [VariableAccess] x740 -# 2240| Type = [Struct] String -# 2240| ValueCategory = lvalue -# 2240| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2240| Conversion = [BoolConversion] conversion to bool -# 2240| Type = [BoolType] bool -# 2240| Value = [CStyleCast] 0 -# 2240| ValueCategory = prvalue -# 2241| getStmt(741): [DoStmt] do (...) ... -# 2243| getCondition(): [Literal] 0 -# 2243| Type = [IntType] int -# 2243| Value = [Literal] 0 -# 2243| ValueCategory = prvalue -# 2241| getStmt(): [BlockStmt] { ... } -# 2242| getStmt(0): [DeclStmt] declaration -# 2242| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x741 -# 2242| Type = [Struct] String -# 2242| getVariable().getInitializer(): [Initializer] initializer for x741 -# 2242| getExpr(): [ConstructorCall] call to String -# 2242| Type = [VoidType] void -# 2242| ValueCategory = prvalue -# 2243| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2243| Type = [VoidType] void -# 2243| ValueCategory = prvalue -# 2243| getQualifier(): [VariableAccess] x741 -# 2243| Type = [Struct] String -# 2243| ValueCategory = lvalue -# 2243| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2243| Conversion = [BoolConversion] conversion to bool -# 2243| Type = [BoolType] bool -# 2243| Value = [CStyleCast] 0 -# 2243| ValueCategory = prvalue -# 2244| getStmt(742): [DoStmt] do (...) ... -# 2246| getCondition(): [Literal] 0 -# 2246| Type = [IntType] int -# 2246| Value = [Literal] 0 -# 2246| ValueCategory = prvalue -# 2244| getStmt(): [BlockStmt] { ... } -# 2245| getStmt(0): [DeclStmt] declaration -# 2245| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x742 -# 2245| Type = [Struct] String -# 2245| getVariable().getInitializer(): [Initializer] initializer for x742 -# 2245| getExpr(): [ConstructorCall] call to String -# 2245| Type = [VoidType] void -# 2245| ValueCategory = prvalue -# 2246| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2246| Type = [VoidType] void -# 2246| ValueCategory = prvalue -# 2246| getQualifier(): [VariableAccess] x742 -# 2246| Type = [Struct] String -# 2246| ValueCategory = lvalue -# 2246| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2246| Conversion = [BoolConversion] conversion to bool -# 2246| Type = [BoolType] bool -# 2246| Value = [CStyleCast] 0 -# 2246| ValueCategory = prvalue -# 2247| getStmt(743): [DoStmt] do (...) ... -# 2249| getCondition(): [Literal] 0 -# 2249| Type = [IntType] int -# 2249| Value = [Literal] 0 -# 2249| ValueCategory = prvalue -# 2247| getStmt(): [BlockStmt] { ... } -# 2248| getStmt(0): [DeclStmt] declaration -# 2248| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x743 -# 2248| Type = [Struct] String -# 2248| getVariable().getInitializer(): [Initializer] initializer for x743 -# 2248| getExpr(): [ConstructorCall] call to String -# 2248| Type = [VoidType] void -# 2248| ValueCategory = prvalue -# 2249| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2249| Type = [VoidType] void -# 2249| ValueCategory = prvalue -# 2249| getQualifier(): [VariableAccess] x743 -# 2249| Type = [Struct] String -# 2249| ValueCategory = lvalue -# 2249| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2249| Conversion = [BoolConversion] conversion to bool -# 2249| Type = [BoolType] bool -# 2249| Value = [CStyleCast] 0 -# 2249| ValueCategory = prvalue -# 2250| getStmt(744): [DoStmt] do (...) ... -# 2252| getCondition(): [Literal] 0 -# 2252| Type = [IntType] int -# 2252| Value = [Literal] 0 -# 2252| ValueCategory = prvalue -# 2250| getStmt(): [BlockStmt] { ... } -# 2251| getStmt(0): [DeclStmt] declaration -# 2251| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x744 -# 2251| Type = [Struct] String -# 2251| getVariable().getInitializer(): [Initializer] initializer for x744 -# 2251| getExpr(): [ConstructorCall] call to String -# 2251| Type = [VoidType] void -# 2251| ValueCategory = prvalue -# 2252| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2252| Type = [VoidType] void -# 2252| ValueCategory = prvalue -# 2252| getQualifier(): [VariableAccess] x744 -# 2252| Type = [Struct] String -# 2252| ValueCategory = lvalue -# 2252| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2252| Conversion = [BoolConversion] conversion to bool -# 2252| Type = [BoolType] bool -# 2252| Value = [CStyleCast] 0 -# 2252| ValueCategory = prvalue -# 2253| getStmt(745): [DoStmt] do (...) ... -# 2255| getCondition(): [Literal] 0 -# 2255| Type = [IntType] int -# 2255| Value = [Literal] 0 -# 2255| ValueCategory = prvalue -# 2253| getStmt(): [BlockStmt] { ... } -# 2254| getStmt(0): [DeclStmt] declaration -# 2254| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x745 -# 2254| Type = [Struct] String -# 2254| getVariable().getInitializer(): [Initializer] initializer for x745 -# 2254| getExpr(): [ConstructorCall] call to String -# 2254| Type = [VoidType] void -# 2254| ValueCategory = prvalue -# 2255| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2255| Type = [VoidType] void -# 2255| ValueCategory = prvalue -# 2255| getQualifier(): [VariableAccess] x745 -# 2255| Type = [Struct] String -# 2255| ValueCategory = lvalue -# 2255| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2255| Conversion = [BoolConversion] conversion to bool -# 2255| Type = [BoolType] bool -# 2255| Value = [CStyleCast] 0 -# 2255| ValueCategory = prvalue -# 2256| getStmt(746): [DoStmt] do (...) ... -# 2258| getCondition(): [Literal] 0 -# 2258| Type = [IntType] int -# 2258| Value = [Literal] 0 -# 2258| ValueCategory = prvalue -# 2256| getStmt(): [BlockStmt] { ... } -# 2257| getStmt(0): [DeclStmt] declaration -# 2257| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x746 -# 2257| Type = [Struct] String -# 2257| getVariable().getInitializer(): [Initializer] initializer for x746 -# 2257| getExpr(): [ConstructorCall] call to String -# 2257| Type = [VoidType] void -# 2257| ValueCategory = prvalue -# 2258| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2258| Type = [VoidType] void -# 2258| ValueCategory = prvalue -# 2258| getQualifier(): [VariableAccess] x746 -# 2258| Type = [Struct] String -# 2258| ValueCategory = lvalue -# 2258| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2258| Conversion = [BoolConversion] conversion to bool -# 2258| Type = [BoolType] bool -# 2258| Value = [CStyleCast] 0 -# 2258| ValueCategory = prvalue -# 2259| getStmt(747): [DoStmt] do (...) ... -# 2261| getCondition(): [Literal] 0 -# 2261| Type = [IntType] int -# 2261| Value = [Literal] 0 -# 2261| ValueCategory = prvalue -# 2259| getStmt(): [BlockStmt] { ... } -# 2260| getStmt(0): [DeclStmt] declaration -# 2260| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x747 -# 2260| Type = [Struct] String -# 2260| getVariable().getInitializer(): [Initializer] initializer for x747 -# 2260| getExpr(): [ConstructorCall] call to String -# 2260| Type = [VoidType] void -# 2260| ValueCategory = prvalue -# 2261| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2261| Type = [VoidType] void -# 2261| ValueCategory = prvalue -# 2261| getQualifier(): [VariableAccess] x747 -# 2261| Type = [Struct] String -# 2261| ValueCategory = lvalue -# 2261| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2261| Conversion = [BoolConversion] conversion to bool -# 2261| Type = [BoolType] bool -# 2261| Value = [CStyleCast] 0 -# 2261| ValueCategory = prvalue -# 2262| getStmt(748): [DoStmt] do (...) ... -# 2264| getCondition(): [Literal] 0 -# 2264| Type = [IntType] int -# 2264| Value = [Literal] 0 -# 2264| ValueCategory = prvalue -# 2262| getStmt(): [BlockStmt] { ... } -# 2263| getStmt(0): [DeclStmt] declaration -# 2263| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x748 -# 2263| Type = [Struct] String -# 2263| getVariable().getInitializer(): [Initializer] initializer for x748 -# 2263| getExpr(): [ConstructorCall] call to String -# 2263| Type = [VoidType] void -# 2263| ValueCategory = prvalue -# 2264| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2264| Type = [VoidType] void -# 2264| ValueCategory = prvalue -# 2264| getQualifier(): [VariableAccess] x748 -# 2264| Type = [Struct] String -# 2264| ValueCategory = lvalue -# 2264| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2264| Conversion = [BoolConversion] conversion to bool -# 2264| Type = [BoolType] bool -# 2264| Value = [CStyleCast] 0 -# 2264| ValueCategory = prvalue -# 2265| getStmt(749): [DoStmt] do (...) ... -# 2267| getCondition(): [Literal] 0 -# 2267| Type = [IntType] int -# 2267| Value = [Literal] 0 -# 2267| ValueCategory = prvalue -# 2265| getStmt(): [BlockStmt] { ... } -# 2266| getStmt(0): [DeclStmt] declaration -# 2266| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x749 -# 2266| Type = [Struct] String -# 2266| getVariable().getInitializer(): [Initializer] initializer for x749 -# 2266| getExpr(): [ConstructorCall] call to String -# 2266| Type = [VoidType] void -# 2266| ValueCategory = prvalue -# 2267| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2267| Type = [VoidType] void -# 2267| ValueCategory = prvalue -# 2267| getQualifier(): [VariableAccess] x749 -# 2267| Type = [Struct] String -# 2267| ValueCategory = lvalue -# 2267| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2267| Conversion = [BoolConversion] conversion to bool -# 2267| Type = [BoolType] bool -# 2267| Value = [CStyleCast] 0 -# 2267| ValueCategory = prvalue -# 2268| getStmt(750): [DoStmt] do (...) ... -# 2270| getCondition(): [Literal] 0 -# 2270| Type = [IntType] int -# 2270| Value = [Literal] 0 -# 2270| ValueCategory = prvalue -# 2268| getStmt(): [BlockStmt] { ... } -# 2269| getStmt(0): [DeclStmt] declaration -# 2269| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x750 -# 2269| Type = [Struct] String -# 2269| getVariable().getInitializer(): [Initializer] initializer for x750 -# 2269| getExpr(): [ConstructorCall] call to String -# 2269| Type = [VoidType] void -# 2269| ValueCategory = prvalue -# 2270| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2270| Type = [VoidType] void -# 2270| ValueCategory = prvalue -# 2270| getQualifier(): [VariableAccess] x750 -# 2270| Type = [Struct] String -# 2270| ValueCategory = lvalue -# 2270| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2270| Conversion = [BoolConversion] conversion to bool -# 2270| Type = [BoolType] bool -# 2270| Value = [CStyleCast] 0 -# 2270| ValueCategory = prvalue -# 2271| getStmt(751): [DoStmt] do (...) ... -# 2273| getCondition(): [Literal] 0 -# 2273| Type = [IntType] int -# 2273| Value = [Literal] 0 -# 2273| ValueCategory = prvalue -# 2271| getStmt(): [BlockStmt] { ... } -# 2272| getStmt(0): [DeclStmt] declaration -# 2272| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x751 -# 2272| Type = [Struct] String -# 2272| getVariable().getInitializer(): [Initializer] initializer for x751 -# 2272| getExpr(): [ConstructorCall] call to String -# 2272| Type = [VoidType] void -# 2272| ValueCategory = prvalue -# 2273| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2273| Type = [VoidType] void -# 2273| ValueCategory = prvalue -# 2273| getQualifier(): [VariableAccess] x751 -# 2273| Type = [Struct] String -# 2273| ValueCategory = lvalue -# 2273| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2273| Conversion = [BoolConversion] conversion to bool -# 2273| Type = [BoolType] bool -# 2273| Value = [CStyleCast] 0 -# 2273| ValueCategory = prvalue -# 2274| getStmt(752): [DoStmt] do (...) ... -# 2276| getCondition(): [Literal] 0 -# 2276| Type = [IntType] int -# 2276| Value = [Literal] 0 -# 2276| ValueCategory = prvalue -# 2274| getStmt(): [BlockStmt] { ... } -# 2275| getStmt(0): [DeclStmt] declaration -# 2275| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x752 -# 2275| Type = [Struct] String -# 2275| getVariable().getInitializer(): [Initializer] initializer for x752 -# 2275| getExpr(): [ConstructorCall] call to String -# 2275| Type = [VoidType] void -# 2275| ValueCategory = prvalue -# 2276| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2276| Type = [VoidType] void -# 2276| ValueCategory = prvalue -# 2276| getQualifier(): [VariableAccess] x752 -# 2276| Type = [Struct] String -# 2276| ValueCategory = lvalue -# 2276| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2276| Conversion = [BoolConversion] conversion to bool -# 2276| Type = [BoolType] bool -# 2276| Value = [CStyleCast] 0 -# 2276| ValueCategory = prvalue -# 2277| getStmt(753): [DoStmt] do (...) ... -# 2279| getCondition(): [Literal] 0 -# 2279| Type = [IntType] int -# 2279| Value = [Literal] 0 -# 2279| ValueCategory = prvalue -# 2277| getStmt(): [BlockStmt] { ... } -# 2278| getStmt(0): [DeclStmt] declaration -# 2278| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x753 -# 2278| Type = [Struct] String -# 2278| getVariable().getInitializer(): [Initializer] initializer for x753 -# 2278| getExpr(): [ConstructorCall] call to String -# 2278| Type = [VoidType] void -# 2278| ValueCategory = prvalue -# 2279| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2279| Type = [VoidType] void -# 2279| ValueCategory = prvalue -# 2279| getQualifier(): [VariableAccess] x753 -# 2279| Type = [Struct] String -# 2279| ValueCategory = lvalue -# 2279| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2279| Conversion = [BoolConversion] conversion to bool -# 2279| Type = [BoolType] bool -# 2279| Value = [CStyleCast] 0 -# 2279| ValueCategory = prvalue -# 2280| getStmt(754): [DoStmt] do (...) ... -# 2282| getCondition(): [Literal] 0 -# 2282| Type = [IntType] int -# 2282| Value = [Literal] 0 -# 2282| ValueCategory = prvalue -# 2280| getStmt(): [BlockStmt] { ... } -# 2281| getStmt(0): [DeclStmt] declaration -# 2281| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x754 -# 2281| Type = [Struct] String -# 2281| getVariable().getInitializer(): [Initializer] initializer for x754 -# 2281| getExpr(): [ConstructorCall] call to String -# 2281| Type = [VoidType] void -# 2281| ValueCategory = prvalue -# 2282| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2282| Type = [VoidType] void -# 2282| ValueCategory = prvalue -# 2282| getQualifier(): [VariableAccess] x754 -# 2282| Type = [Struct] String -# 2282| ValueCategory = lvalue -# 2282| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2282| Conversion = [BoolConversion] conversion to bool -# 2282| Type = [BoolType] bool -# 2282| Value = [CStyleCast] 0 -# 2282| ValueCategory = prvalue -# 2283| getStmt(755): [DoStmt] do (...) ... -# 2285| getCondition(): [Literal] 0 -# 2285| Type = [IntType] int -# 2285| Value = [Literal] 0 -# 2285| ValueCategory = prvalue -# 2283| getStmt(): [BlockStmt] { ... } -# 2284| getStmt(0): [DeclStmt] declaration -# 2284| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x755 -# 2284| Type = [Struct] String -# 2284| getVariable().getInitializer(): [Initializer] initializer for x755 -# 2284| getExpr(): [ConstructorCall] call to String -# 2284| Type = [VoidType] void -# 2284| ValueCategory = prvalue -# 2285| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2285| Type = [VoidType] void -# 2285| ValueCategory = prvalue -# 2285| getQualifier(): [VariableAccess] x755 -# 2285| Type = [Struct] String -# 2285| ValueCategory = lvalue -# 2285| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2285| Conversion = [BoolConversion] conversion to bool -# 2285| Type = [BoolType] bool -# 2285| Value = [CStyleCast] 0 -# 2285| ValueCategory = prvalue -# 2286| getStmt(756): [DoStmt] do (...) ... -# 2288| getCondition(): [Literal] 0 -# 2288| Type = [IntType] int -# 2288| Value = [Literal] 0 -# 2288| ValueCategory = prvalue -# 2286| getStmt(): [BlockStmt] { ... } -# 2287| getStmt(0): [DeclStmt] declaration -# 2287| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x756 -# 2287| Type = [Struct] String -# 2287| getVariable().getInitializer(): [Initializer] initializer for x756 -# 2287| getExpr(): [ConstructorCall] call to String -# 2287| Type = [VoidType] void -# 2287| ValueCategory = prvalue -# 2288| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2288| Type = [VoidType] void -# 2288| ValueCategory = prvalue -# 2288| getQualifier(): [VariableAccess] x756 -# 2288| Type = [Struct] String -# 2288| ValueCategory = lvalue -# 2288| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2288| Conversion = [BoolConversion] conversion to bool -# 2288| Type = [BoolType] bool -# 2288| Value = [CStyleCast] 0 -# 2288| ValueCategory = prvalue -# 2289| getStmt(757): [DoStmt] do (...) ... -# 2291| getCondition(): [Literal] 0 -# 2291| Type = [IntType] int -# 2291| Value = [Literal] 0 -# 2291| ValueCategory = prvalue -# 2289| getStmt(): [BlockStmt] { ... } -# 2290| getStmt(0): [DeclStmt] declaration -# 2290| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x757 -# 2290| Type = [Struct] String -# 2290| getVariable().getInitializer(): [Initializer] initializer for x757 -# 2290| getExpr(): [ConstructorCall] call to String -# 2290| Type = [VoidType] void -# 2290| ValueCategory = prvalue -# 2291| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2291| Type = [VoidType] void -# 2291| ValueCategory = prvalue -# 2291| getQualifier(): [VariableAccess] x757 -# 2291| Type = [Struct] String -# 2291| ValueCategory = lvalue -# 2291| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2291| Conversion = [BoolConversion] conversion to bool -# 2291| Type = [BoolType] bool -# 2291| Value = [CStyleCast] 0 -# 2291| ValueCategory = prvalue -# 2292| getStmt(758): [DoStmt] do (...) ... -# 2294| getCondition(): [Literal] 0 -# 2294| Type = [IntType] int -# 2294| Value = [Literal] 0 -# 2294| ValueCategory = prvalue -# 2292| getStmt(): [BlockStmt] { ... } -# 2293| getStmt(0): [DeclStmt] declaration -# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x758 -# 2293| Type = [Struct] String -# 2293| getVariable().getInitializer(): [Initializer] initializer for x758 -# 2293| getExpr(): [ConstructorCall] call to String -# 2293| Type = [VoidType] void -# 2293| ValueCategory = prvalue -# 2294| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2294| Type = [VoidType] void -# 2294| ValueCategory = prvalue -# 2294| getQualifier(): [VariableAccess] x758 -# 2294| Type = [Struct] String -# 2294| ValueCategory = lvalue -# 2294| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2294| Conversion = [BoolConversion] conversion to bool -# 2294| Type = [BoolType] bool -# 2294| Value = [CStyleCast] 0 -# 2294| ValueCategory = prvalue -# 2295| getStmt(759): [DoStmt] do (...) ... -# 2297| getCondition(): [Literal] 0 -# 2297| Type = [IntType] int -# 2297| Value = [Literal] 0 -# 2297| ValueCategory = prvalue -# 2295| getStmt(): [BlockStmt] { ... } -# 2296| getStmt(0): [DeclStmt] declaration -# 2296| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x759 -# 2296| Type = [Struct] String -# 2296| getVariable().getInitializer(): [Initializer] initializer for x759 -# 2296| getExpr(): [ConstructorCall] call to String -# 2296| Type = [VoidType] void -# 2296| ValueCategory = prvalue -# 2297| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2297| Type = [VoidType] void -# 2297| ValueCategory = prvalue -# 2297| getQualifier(): [VariableAccess] x759 -# 2297| Type = [Struct] String -# 2297| ValueCategory = lvalue -# 2297| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2297| Conversion = [BoolConversion] conversion to bool -# 2297| Type = [BoolType] bool -# 2297| Value = [CStyleCast] 0 -# 2297| ValueCategory = prvalue -# 2298| getStmt(760): [DoStmt] do (...) ... -# 2300| getCondition(): [Literal] 0 -# 2300| Type = [IntType] int -# 2300| Value = [Literal] 0 -# 2300| ValueCategory = prvalue -# 2298| getStmt(): [BlockStmt] { ... } -# 2299| getStmt(0): [DeclStmt] declaration -# 2299| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x760 -# 2299| Type = [Struct] String -# 2299| getVariable().getInitializer(): [Initializer] initializer for x760 -# 2299| getExpr(): [ConstructorCall] call to String -# 2299| Type = [VoidType] void -# 2299| ValueCategory = prvalue -# 2300| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2300| Type = [VoidType] void -# 2300| ValueCategory = prvalue -# 2300| getQualifier(): [VariableAccess] x760 -# 2300| Type = [Struct] String -# 2300| ValueCategory = lvalue -# 2300| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2300| Conversion = [BoolConversion] conversion to bool -# 2300| Type = [BoolType] bool -# 2300| Value = [CStyleCast] 0 -# 2300| ValueCategory = prvalue -# 2301| getStmt(761): [DoStmt] do (...) ... -# 2303| getCondition(): [Literal] 0 -# 2303| Type = [IntType] int -# 2303| Value = [Literal] 0 -# 2303| ValueCategory = prvalue -# 2301| getStmt(): [BlockStmt] { ... } -# 2302| getStmt(0): [DeclStmt] declaration -# 2302| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x761 -# 2302| Type = [Struct] String -# 2302| getVariable().getInitializer(): [Initializer] initializer for x761 -# 2302| getExpr(): [ConstructorCall] call to String -# 2302| Type = [VoidType] void -# 2302| ValueCategory = prvalue -# 2303| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2303| Type = [VoidType] void -# 2303| ValueCategory = prvalue -# 2303| getQualifier(): [VariableAccess] x761 -# 2303| Type = [Struct] String -# 2303| ValueCategory = lvalue -# 2303| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2303| Conversion = [BoolConversion] conversion to bool -# 2303| Type = [BoolType] bool -# 2303| Value = [CStyleCast] 0 -# 2303| ValueCategory = prvalue -# 2304| getStmt(762): [DoStmt] do (...) ... -# 2306| getCondition(): [Literal] 0 -# 2306| Type = [IntType] int -# 2306| Value = [Literal] 0 -# 2306| ValueCategory = prvalue -# 2304| getStmt(): [BlockStmt] { ... } -# 2305| getStmt(0): [DeclStmt] declaration -# 2305| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x762 -# 2305| Type = [Struct] String -# 2305| getVariable().getInitializer(): [Initializer] initializer for x762 -# 2305| getExpr(): [ConstructorCall] call to String -# 2305| Type = [VoidType] void -# 2305| ValueCategory = prvalue -# 2306| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2306| Type = [VoidType] void -# 2306| ValueCategory = prvalue -# 2306| getQualifier(): [VariableAccess] x762 -# 2306| Type = [Struct] String -# 2306| ValueCategory = lvalue -# 2306| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2306| Conversion = [BoolConversion] conversion to bool -# 2306| Type = [BoolType] bool -# 2306| Value = [CStyleCast] 0 -# 2306| ValueCategory = prvalue -# 2307| getStmt(763): [DoStmt] do (...) ... -# 2309| getCondition(): [Literal] 0 -# 2309| Type = [IntType] int -# 2309| Value = [Literal] 0 -# 2309| ValueCategory = prvalue -# 2307| getStmt(): [BlockStmt] { ... } -# 2308| getStmt(0): [DeclStmt] declaration -# 2308| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x763 -# 2308| Type = [Struct] String -# 2308| getVariable().getInitializer(): [Initializer] initializer for x763 -# 2308| getExpr(): [ConstructorCall] call to String -# 2308| Type = [VoidType] void -# 2308| ValueCategory = prvalue -# 2309| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2309| Type = [VoidType] void -# 2309| ValueCategory = prvalue -# 2309| getQualifier(): [VariableAccess] x763 -# 2309| Type = [Struct] String -# 2309| ValueCategory = lvalue -# 2309| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2309| Conversion = [BoolConversion] conversion to bool -# 2309| Type = [BoolType] bool -# 2309| Value = [CStyleCast] 0 -# 2309| ValueCategory = prvalue -# 2310| getStmt(764): [DoStmt] do (...) ... -# 2312| getCondition(): [Literal] 0 -# 2312| Type = [IntType] int -# 2312| Value = [Literal] 0 -# 2312| ValueCategory = prvalue -# 2310| getStmt(): [BlockStmt] { ... } -# 2311| getStmt(0): [DeclStmt] declaration -# 2311| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x764 -# 2311| Type = [Struct] String -# 2311| getVariable().getInitializer(): [Initializer] initializer for x764 -# 2311| getExpr(): [ConstructorCall] call to String -# 2311| Type = [VoidType] void -# 2311| ValueCategory = prvalue -# 2312| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2312| Type = [VoidType] void -# 2312| ValueCategory = prvalue -# 2312| getQualifier(): [VariableAccess] x764 -# 2312| Type = [Struct] String -# 2312| ValueCategory = lvalue -# 2312| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2312| Conversion = [BoolConversion] conversion to bool -# 2312| Type = [BoolType] bool -# 2312| Value = [CStyleCast] 0 -# 2312| ValueCategory = prvalue -# 2313| getStmt(765): [DoStmt] do (...) ... -# 2315| getCondition(): [Literal] 0 -# 2315| Type = [IntType] int -# 2315| Value = [Literal] 0 -# 2315| ValueCategory = prvalue -# 2313| getStmt(): [BlockStmt] { ... } -# 2314| getStmt(0): [DeclStmt] declaration -# 2314| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x765 -# 2314| Type = [Struct] String -# 2314| getVariable().getInitializer(): [Initializer] initializer for x765 -# 2314| getExpr(): [ConstructorCall] call to String -# 2314| Type = [VoidType] void -# 2314| ValueCategory = prvalue -# 2315| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2315| Type = [VoidType] void -# 2315| ValueCategory = prvalue -# 2315| getQualifier(): [VariableAccess] x765 -# 2315| Type = [Struct] String -# 2315| ValueCategory = lvalue -# 2315| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2315| Conversion = [BoolConversion] conversion to bool -# 2315| Type = [BoolType] bool -# 2315| Value = [CStyleCast] 0 -# 2315| ValueCategory = prvalue -# 2316| getStmt(766): [DoStmt] do (...) ... -# 2318| getCondition(): [Literal] 0 -# 2318| Type = [IntType] int -# 2318| Value = [Literal] 0 -# 2318| ValueCategory = prvalue -# 2316| getStmt(): [BlockStmt] { ... } -# 2317| getStmt(0): [DeclStmt] declaration -# 2317| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x766 -# 2317| Type = [Struct] String -# 2317| getVariable().getInitializer(): [Initializer] initializer for x766 -# 2317| getExpr(): [ConstructorCall] call to String -# 2317| Type = [VoidType] void -# 2317| ValueCategory = prvalue -# 2318| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2318| Type = [VoidType] void -# 2318| ValueCategory = prvalue -# 2318| getQualifier(): [VariableAccess] x766 -# 2318| Type = [Struct] String -# 2318| ValueCategory = lvalue -# 2318| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2318| Conversion = [BoolConversion] conversion to bool -# 2318| Type = [BoolType] bool -# 2318| Value = [CStyleCast] 0 -# 2318| ValueCategory = prvalue -# 2319| getStmt(767): [DoStmt] do (...) ... -# 2321| getCondition(): [Literal] 0 -# 2321| Type = [IntType] int -# 2321| Value = [Literal] 0 -# 2321| ValueCategory = prvalue -# 2319| getStmt(): [BlockStmt] { ... } -# 2320| getStmt(0): [DeclStmt] declaration -# 2320| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x767 -# 2320| Type = [Struct] String -# 2320| getVariable().getInitializer(): [Initializer] initializer for x767 -# 2320| getExpr(): [ConstructorCall] call to String -# 2320| Type = [VoidType] void -# 2320| ValueCategory = prvalue -# 2321| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2321| Type = [VoidType] void -# 2321| ValueCategory = prvalue -# 2321| getQualifier(): [VariableAccess] x767 -# 2321| Type = [Struct] String -# 2321| ValueCategory = lvalue -# 2321| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2321| Conversion = [BoolConversion] conversion to bool -# 2321| Type = [BoolType] bool -# 2321| Value = [CStyleCast] 0 -# 2321| ValueCategory = prvalue -# 2322| getStmt(768): [DoStmt] do (...) ... -# 2324| getCondition(): [Literal] 0 -# 2324| Type = [IntType] int -# 2324| Value = [Literal] 0 -# 2324| ValueCategory = prvalue -# 2322| getStmt(): [BlockStmt] { ... } -# 2323| getStmt(0): [DeclStmt] declaration -# 2323| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x768 -# 2323| Type = [Struct] String -# 2323| getVariable().getInitializer(): [Initializer] initializer for x768 -# 2323| getExpr(): [ConstructorCall] call to String -# 2323| Type = [VoidType] void -# 2323| ValueCategory = prvalue -# 2324| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2324| Type = [VoidType] void -# 2324| ValueCategory = prvalue -# 2324| getQualifier(): [VariableAccess] x768 -# 2324| Type = [Struct] String -# 2324| ValueCategory = lvalue -# 2324| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2324| Conversion = [BoolConversion] conversion to bool -# 2324| Type = [BoolType] bool -# 2324| Value = [CStyleCast] 0 -# 2324| ValueCategory = prvalue -# 2325| getStmt(769): [DoStmt] do (...) ... -# 2327| getCondition(): [Literal] 0 -# 2327| Type = [IntType] int -# 2327| Value = [Literal] 0 -# 2327| ValueCategory = prvalue -# 2325| getStmt(): [BlockStmt] { ... } -# 2326| getStmt(0): [DeclStmt] declaration -# 2326| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x769 -# 2326| Type = [Struct] String -# 2326| getVariable().getInitializer(): [Initializer] initializer for x769 -# 2326| getExpr(): [ConstructorCall] call to String -# 2326| Type = [VoidType] void -# 2326| ValueCategory = prvalue -# 2327| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2327| Type = [VoidType] void -# 2327| ValueCategory = prvalue -# 2327| getQualifier(): [VariableAccess] x769 -# 2327| Type = [Struct] String -# 2327| ValueCategory = lvalue -# 2327| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2327| Conversion = [BoolConversion] conversion to bool -# 2327| Type = [BoolType] bool -# 2327| Value = [CStyleCast] 0 -# 2327| ValueCategory = prvalue -# 2328| getStmt(770): [DoStmt] do (...) ... -# 2330| getCondition(): [Literal] 0 -# 2330| Type = [IntType] int -# 2330| Value = [Literal] 0 -# 2330| ValueCategory = prvalue -# 2328| getStmt(): [BlockStmt] { ... } -# 2329| getStmt(0): [DeclStmt] declaration -# 2329| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x770 -# 2329| Type = [Struct] String -# 2329| getVariable().getInitializer(): [Initializer] initializer for x770 -# 2329| getExpr(): [ConstructorCall] call to String -# 2329| Type = [VoidType] void -# 2329| ValueCategory = prvalue -# 2330| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2330| Type = [VoidType] void -# 2330| ValueCategory = prvalue -# 2330| getQualifier(): [VariableAccess] x770 -# 2330| Type = [Struct] String -# 2330| ValueCategory = lvalue -# 2330| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2330| Conversion = [BoolConversion] conversion to bool -# 2330| Type = [BoolType] bool -# 2330| Value = [CStyleCast] 0 -# 2330| ValueCategory = prvalue -# 2331| getStmt(771): [DoStmt] do (...) ... -# 2333| getCondition(): [Literal] 0 -# 2333| Type = [IntType] int -# 2333| Value = [Literal] 0 -# 2333| ValueCategory = prvalue -# 2331| getStmt(): [BlockStmt] { ... } -# 2332| getStmt(0): [DeclStmt] declaration -# 2332| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x771 -# 2332| Type = [Struct] String -# 2332| getVariable().getInitializer(): [Initializer] initializer for x771 -# 2332| getExpr(): [ConstructorCall] call to String -# 2332| Type = [VoidType] void -# 2332| ValueCategory = prvalue -# 2333| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2333| Type = [VoidType] void -# 2333| ValueCategory = prvalue -# 2333| getQualifier(): [VariableAccess] x771 -# 2333| Type = [Struct] String -# 2333| ValueCategory = lvalue -# 2333| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2333| Conversion = [BoolConversion] conversion to bool -# 2333| Type = [BoolType] bool -# 2333| Value = [CStyleCast] 0 -# 2333| ValueCategory = prvalue -# 2334| getStmt(772): [DoStmt] do (...) ... -# 2336| getCondition(): [Literal] 0 -# 2336| Type = [IntType] int -# 2336| Value = [Literal] 0 -# 2336| ValueCategory = prvalue -# 2334| getStmt(): [BlockStmt] { ... } -# 2335| getStmt(0): [DeclStmt] declaration -# 2335| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x772 -# 2335| Type = [Struct] String -# 2335| getVariable().getInitializer(): [Initializer] initializer for x772 -# 2335| getExpr(): [ConstructorCall] call to String -# 2335| Type = [VoidType] void -# 2335| ValueCategory = prvalue -# 2336| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2336| Type = [VoidType] void -# 2336| ValueCategory = prvalue -# 2336| getQualifier(): [VariableAccess] x772 -# 2336| Type = [Struct] String -# 2336| ValueCategory = lvalue -# 2336| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2336| Conversion = [BoolConversion] conversion to bool -# 2336| Type = [BoolType] bool -# 2336| Value = [CStyleCast] 0 -# 2336| ValueCategory = prvalue -# 2337| getStmt(773): [DoStmt] do (...) ... -# 2339| getCondition(): [Literal] 0 -# 2339| Type = [IntType] int -# 2339| Value = [Literal] 0 -# 2339| ValueCategory = prvalue -# 2337| getStmt(): [BlockStmt] { ... } -# 2338| getStmt(0): [DeclStmt] declaration -# 2338| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x773 -# 2338| Type = [Struct] String -# 2338| getVariable().getInitializer(): [Initializer] initializer for x773 -# 2338| getExpr(): [ConstructorCall] call to String -# 2338| Type = [VoidType] void -# 2338| ValueCategory = prvalue -# 2339| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2339| Type = [VoidType] void -# 2339| ValueCategory = prvalue -# 2339| getQualifier(): [VariableAccess] x773 -# 2339| Type = [Struct] String -# 2339| ValueCategory = lvalue -# 2339| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2339| Conversion = [BoolConversion] conversion to bool -# 2339| Type = [BoolType] bool -# 2339| Value = [CStyleCast] 0 -# 2339| ValueCategory = prvalue -# 2340| getStmt(774): [DoStmt] do (...) ... -# 2342| getCondition(): [Literal] 0 -# 2342| Type = [IntType] int -# 2342| Value = [Literal] 0 -# 2342| ValueCategory = prvalue -# 2340| getStmt(): [BlockStmt] { ... } -# 2341| getStmt(0): [DeclStmt] declaration -# 2341| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x774 -# 2341| Type = [Struct] String -# 2341| getVariable().getInitializer(): [Initializer] initializer for x774 -# 2341| getExpr(): [ConstructorCall] call to String -# 2341| Type = [VoidType] void -# 2341| ValueCategory = prvalue -# 2342| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2342| Type = [VoidType] void -# 2342| ValueCategory = prvalue -# 2342| getQualifier(): [VariableAccess] x774 -# 2342| Type = [Struct] String -# 2342| ValueCategory = lvalue -# 2342| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2342| Conversion = [BoolConversion] conversion to bool -# 2342| Type = [BoolType] bool -# 2342| Value = [CStyleCast] 0 -# 2342| ValueCategory = prvalue -# 2343| getStmt(775): [DoStmt] do (...) ... -# 2345| getCondition(): [Literal] 0 -# 2345| Type = [IntType] int -# 2345| Value = [Literal] 0 -# 2345| ValueCategory = prvalue -# 2343| getStmt(): [BlockStmt] { ... } -# 2344| getStmt(0): [DeclStmt] declaration -# 2344| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x775 -# 2344| Type = [Struct] String -# 2344| getVariable().getInitializer(): [Initializer] initializer for x775 -# 2344| getExpr(): [ConstructorCall] call to String -# 2344| Type = [VoidType] void -# 2344| ValueCategory = prvalue -# 2345| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2345| Type = [VoidType] void -# 2345| ValueCategory = prvalue -# 2345| getQualifier(): [VariableAccess] x775 -# 2345| Type = [Struct] String -# 2345| ValueCategory = lvalue -# 2345| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2345| Conversion = [BoolConversion] conversion to bool -# 2345| Type = [BoolType] bool -# 2345| Value = [CStyleCast] 0 -# 2345| ValueCategory = prvalue -# 2346| getStmt(776): [DoStmt] do (...) ... -# 2348| getCondition(): [Literal] 0 -# 2348| Type = [IntType] int -# 2348| Value = [Literal] 0 -# 2348| ValueCategory = prvalue -# 2346| getStmt(): [BlockStmt] { ... } -# 2347| getStmt(0): [DeclStmt] declaration -# 2347| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x776 -# 2347| Type = [Struct] String -# 2347| getVariable().getInitializer(): [Initializer] initializer for x776 -# 2347| getExpr(): [ConstructorCall] call to String -# 2347| Type = [VoidType] void -# 2347| ValueCategory = prvalue -# 2348| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2348| Type = [VoidType] void -# 2348| ValueCategory = prvalue -# 2348| getQualifier(): [VariableAccess] x776 -# 2348| Type = [Struct] String -# 2348| ValueCategory = lvalue -# 2348| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2348| Conversion = [BoolConversion] conversion to bool -# 2348| Type = [BoolType] bool -# 2348| Value = [CStyleCast] 0 -# 2348| ValueCategory = prvalue -# 2349| getStmt(777): [DoStmt] do (...) ... -# 2351| getCondition(): [Literal] 0 -# 2351| Type = [IntType] int -# 2351| Value = [Literal] 0 -# 2351| ValueCategory = prvalue -# 2349| getStmt(): [BlockStmt] { ... } -# 2350| getStmt(0): [DeclStmt] declaration -# 2350| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x777 -# 2350| Type = [Struct] String -# 2350| getVariable().getInitializer(): [Initializer] initializer for x777 -# 2350| getExpr(): [ConstructorCall] call to String -# 2350| Type = [VoidType] void -# 2350| ValueCategory = prvalue -# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2351| Type = [VoidType] void -# 2351| ValueCategory = prvalue -# 2351| getQualifier(): [VariableAccess] x777 -# 2351| Type = [Struct] String -# 2351| ValueCategory = lvalue -# 2351| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2351| Conversion = [BoolConversion] conversion to bool -# 2351| Type = [BoolType] bool -# 2351| Value = [CStyleCast] 0 -# 2351| ValueCategory = prvalue -# 2352| getStmt(778): [DoStmt] do (...) ... -# 2354| getCondition(): [Literal] 0 -# 2354| Type = [IntType] int -# 2354| Value = [Literal] 0 -# 2354| ValueCategory = prvalue -# 2352| getStmt(): [BlockStmt] { ... } -# 2353| getStmt(0): [DeclStmt] declaration -# 2353| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x778 -# 2353| Type = [Struct] String -# 2353| getVariable().getInitializer(): [Initializer] initializer for x778 -# 2353| getExpr(): [ConstructorCall] call to String -# 2353| Type = [VoidType] void -# 2353| ValueCategory = prvalue -# 2354| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2354| Type = [VoidType] void -# 2354| ValueCategory = prvalue -# 2354| getQualifier(): [VariableAccess] x778 -# 2354| Type = [Struct] String -# 2354| ValueCategory = lvalue -# 2354| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2354| Conversion = [BoolConversion] conversion to bool -# 2354| Type = [BoolType] bool -# 2354| Value = [CStyleCast] 0 -# 2354| ValueCategory = prvalue -# 2355| getStmt(779): [DoStmt] do (...) ... -# 2357| getCondition(): [Literal] 0 -# 2357| Type = [IntType] int -# 2357| Value = [Literal] 0 -# 2357| ValueCategory = prvalue -# 2355| getStmt(): [BlockStmt] { ... } -# 2356| getStmt(0): [DeclStmt] declaration -# 2356| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x779 -# 2356| Type = [Struct] String -# 2356| getVariable().getInitializer(): [Initializer] initializer for x779 -# 2356| getExpr(): [ConstructorCall] call to String -# 2356| Type = [VoidType] void -# 2356| ValueCategory = prvalue -# 2357| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2357| Type = [VoidType] void -# 2357| ValueCategory = prvalue -# 2357| getQualifier(): [VariableAccess] x779 -# 2357| Type = [Struct] String -# 2357| ValueCategory = lvalue -# 2357| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2357| Conversion = [BoolConversion] conversion to bool -# 2357| Type = [BoolType] bool -# 2357| Value = [CStyleCast] 0 -# 2357| ValueCategory = prvalue -# 2358| getStmt(780): [DoStmt] do (...) ... -# 2360| getCondition(): [Literal] 0 -# 2360| Type = [IntType] int -# 2360| Value = [Literal] 0 -# 2360| ValueCategory = prvalue -# 2358| getStmt(): [BlockStmt] { ... } -# 2359| getStmt(0): [DeclStmt] declaration -# 2359| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x780 -# 2359| Type = [Struct] String -# 2359| getVariable().getInitializer(): [Initializer] initializer for x780 -# 2359| getExpr(): [ConstructorCall] call to String -# 2359| Type = [VoidType] void -# 2359| ValueCategory = prvalue -# 2360| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2360| Type = [VoidType] void -# 2360| ValueCategory = prvalue -# 2360| getQualifier(): [VariableAccess] x780 -# 2360| Type = [Struct] String -# 2360| ValueCategory = lvalue -# 2360| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2360| Conversion = [BoolConversion] conversion to bool -# 2360| Type = [BoolType] bool -# 2360| Value = [CStyleCast] 0 -# 2360| ValueCategory = prvalue -# 2361| getStmt(781): [DoStmt] do (...) ... -# 2363| getCondition(): [Literal] 0 -# 2363| Type = [IntType] int -# 2363| Value = [Literal] 0 -# 2363| ValueCategory = prvalue -# 2361| getStmt(): [BlockStmt] { ... } -# 2362| getStmt(0): [DeclStmt] declaration -# 2362| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x781 -# 2362| Type = [Struct] String -# 2362| getVariable().getInitializer(): [Initializer] initializer for x781 -# 2362| getExpr(): [ConstructorCall] call to String -# 2362| Type = [VoidType] void -# 2362| ValueCategory = prvalue -# 2363| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2363| Type = [VoidType] void -# 2363| ValueCategory = prvalue -# 2363| getQualifier(): [VariableAccess] x781 -# 2363| Type = [Struct] String -# 2363| ValueCategory = lvalue -# 2363| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2363| Conversion = [BoolConversion] conversion to bool -# 2363| Type = [BoolType] bool -# 2363| Value = [CStyleCast] 0 -# 2363| ValueCategory = prvalue -# 2364| getStmt(782): [DoStmt] do (...) ... -# 2366| getCondition(): [Literal] 0 -# 2366| Type = [IntType] int -# 2366| Value = [Literal] 0 -# 2366| ValueCategory = prvalue -# 2364| getStmt(): [BlockStmt] { ... } -# 2365| getStmt(0): [DeclStmt] declaration -# 2365| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x782 -# 2365| Type = [Struct] String -# 2365| getVariable().getInitializer(): [Initializer] initializer for x782 -# 2365| getExpr(): [ConstructorCall] call to String -# 2365| Type = [VoidType] void -# 2365| ValueCategory = prvalue -# 2366| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2366| Type = [VoidType] void -# 2366| ValueCategory = prvalue -# 2366| getQualifier(): [VariableAccess] x782 -# 2366| Type = [Struct] String -# 2366| ValueCategory = lvalue -# 2366| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2366| Conversion = [BoolConversion] conversion to bool -# 2366| Type = [BoolType] bool -# 2366| Value = [CStyleCast] 0 -# 2366| ValueCategory = prvalue -# 2367| getStmt(783): [DoStmt] do (...) ... -# 2369| getCondition(): [Literal] 0 -# 2369| Type = [IntType] int -# 2369| Value = [Literal] 0 -# 2369| ValueCategory = prvalue -# 2367| getStmt(): [BlockStmt] { ... } -# 2368| getStmt(0): [DeclStmt] declaration -# 2368| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x783 -# 2368| Type = [Struct] String -# 2368| getVariable().getInitializer(): [Initializer] initializer for x783 -# 2368| getExpr(): [ConstructorCall] call to String -# 2368| Type = [VoidType] void -# 2368| ValueCategory = prvalue -# 2369| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2369| Type = [VoidType] void -# 2369| ValueCategory = prvalue -# 2369| getQualifier(): [VariableAccess] x783 -# 2369| Type = [Struct] String -# 2369| ValueCategory = lvalue -# 2369| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2369| Conversion = [BoolConversion] conversion to bool -# 2369| Type = [BoolType] bool -# 2369| Value = [CStyleCast] 0 -# 2369| ValueCategory = prvalue -# 2370| getStmt(784): [DoStmt] do (...) ... -# 2372| getCondition(): [Literal] 0 -# 2372| Type = [IntType] int -# 2372| Value = [Literal] 0 -# 2372| ValueCategory = prvalue -# 2370| getStmt(): [BlockStmt] { ... } -# 2371| getStmt(0): [DeclStmt] declaration -# 2371| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x784 -# 2371| Type = [Struct] String -# 2371| getVariable().getInitializer(): [Initializer] initializer for x784 -# 2371| getExpr(): [ConstructorCall] call to String -# 2371| Type = [VoidType] void -# 2371| ValueCategory = prvalue -# 2372| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2372| Type = [VoidType] void -# 2372| ValueCategory = prvalue -# 2372| getQualifier(): [VariableAccess] x784 -# 2372| Type = [Struct] String -# 2372| ValueCategory = lvalue -# 2372| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2372| Conversion = [BoolConversion] conversion to bool -# 2372| Type = [BoolType] bool -# 2372| Value = [CStyleCast] 0 -# 2372| ValueCategory = prvalue -# 2373| getStmt(785): [DoStmt] do (...) ... -# 2375| getCondition(): [Literal] 0 -# 2375| Type = [IntType] int -# 2375| Value = [Literal] 0 -# 2375| ValueCategory = prvalue -# 2373| getStmt(): [BlockStmt] { ... } -# 2374| getStmt(0): [DeclStmt] declaration -# 2374| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x785 -# 2374| Type = [Struct] String -# 2374| getVariable().getInitializer(): [Initializer] initializer for x785 -# 2374| getExpr(): [ConstructorCall] call to String -# 2374| Type = [VoidType] void -# 2374| ValueCategory = prvalue -# 2375| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2375| Type = [VoidType] void -# 2375| ValueCategory = prvalue -# 2375| getQualifier(): [VariableAccess] x785 -# 2375| Type = [Struct] String -# 2375| ValueCategory = lvalue -# 2375| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2375| Conversion = [BoolConversion] conversion to bool -# 2375| Type = [BoolType] bool -# 2375| Value = [CStyleCast] 0 -# 2375| ValueCategory = prvalue -# 2376| getStmt(786): [DoStmt] do (...) ... -# 2378| getCondition(): [Literal] 0 -# 2378| Type = [IntType] int -# 2378| Value = [Literal] 0 -# 2378| ValueCategory = prvalue -# 2376| getStmt(): [BlockStmt] { ... } -# 2377| getStmt(0): [DeclStmt] declaration -# 2377| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x786 -# 2377| Type = [Struct] String -# 2377| getVariable().getInitializer(): [Initializer] initializer for x786 -# 2377| getExpr(): [ConstructorCall] call to String -# 2377| Type = [VoidType] void -# 2377| ValueCategory = prvalue -# 2378| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2378| Type = [VoidType] void -# 2378| ValueCategory = prvalue -# 2378| getQualifier(): [VariableAccess] x786 -# 2378| Type = [Struct] String -# 2378| ValueCategory = lvalue -# 2378| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2378| Conversion = [BoolConversion] conversion to bool -# 2378| Type = [BoolType] bool -# 2378| Value = [CStyleCast] 0 -# 2378| ValueCategory = prvalue -# 2379| getStmt(787): [DoStmt] do (...) ... -# 2381| getCondition(): [Literal] 0 -# 2381| Type = [IntType] int -# 2381| Value = [Literal] 0 -# 2381| ValueCategory = prvalue -# 2379| getStmt(): [BlockStmt] { ... } -# 2380| getStmt(0): [DeclStmt] declaration -# 2380| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x787 -# 2380| Type = [Struct] String -# 2380| getVariable().getInitializer(): [Initializer] initializer for x787 -# 2380| getExpr(): [ConstructorCall] call to String -# 2380| Type = [VoidType] void -# 2380| ValueCategory = prvalue -# 2381| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2381| Type = [VoidType] void -# 2381| ValueCategory = prvalue -# 2381| getQualifier(): [VariableAccess] x787 -# 2381| Type = [Struct] String -# 2381| ValueCategory = lvalue -# 2381| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2381| Conversion = [BoolConversion] conversion to bool -# 2381| Type = [BoolType] bool -# 2381| Value = [CStyleCast] 0 -# 2381| ValueCategory = prvalue -# 2382| getStmt(788): [DoStmt] do (...) ... -# 2384| getCondition(): [Literal] 0 -# 2384| Type = [IntType] int -# 2384| Value = [Literal] 0 -# 2384| ValueCategory = prvalue -# 2382| getStmt(): [BlockStmt] { ... } -# 2383| getStmt(0): [DeclStmt] declaration -# 2383| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x788 -# 2383| Type = [Struct] String -# 2383| getVariable().getInitializer(): [Initializer] initializer for x788 -# 2383| getExpr(): [ConstructorCall] call to String -# 2383| Type = [VoidType] void -# 2383| ValueCategory = prvalue -# 2384| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2384| Type = [VoidType] void -# 2384| ValueCategory = prvalue -# 2384| getQualifier(): [VariableAccess] x788 -# 2384| Type = [Struct] String -# 2384| ValueCategory = lvalue -# 2384| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2384| Conversion = [BoolConversion] conversion to bool -# 2384| Type = [BoolType] bool -# 2384| Value = [CStyleCast] 0 -# 2384| ValueCategory = prvalue -# 2385| getStmt(789): [DoStmt] do (...) ... -# 2387| getCondition(): [Literal] 0 -# 2387| Type = [IntType] int -# 2387| Value = [Literal] 0 -# 2387| ValueCategory = prvalue -# 2385| getStmt(): [BlockStmt] { ... } -# 2386| getStmt(0): [DeclStmt] declaration -# 2386| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x789 -# 2386| Type = [Struct] String -# 2386| getVariable().getInitializer(): [Initializer] initializer for x789 -# 2386| getExpr(): [ConstructorCall] call to String -# 2386| Type = [VoidType] void -# 2386| ValueCategory = prvalue -# 2387| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2387| Type = [VoidType] void -# 2387| ValueCategory = prvalue -# 2387| getQualifier(): [VariableAccess] x789 -# 2387| Type = [Struct] String -# 2387| ValueCategory = lvalue -# 2387| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2387| Conversion = [BoolConversion] conversion to bool -# 2387| Type = [BoolType] bool -# 2387| Value = [CStyleCast] 0 -# 2387| ValueCategory = prvalue -# 2388| getStmt(790): [DoStmt] do (...) ... -# 2390| getCondition(): [Literal] 0 -# 2390| Type = [IntType] int -# 2390| Value = [Literal] 0 -# 2390| ValueCategory = prvalue -# 2388| getStmt(): [BlockStmt] { ... } -# 2389| getStmt(0): [DeclStmt] declaration -# 2389| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x790 -# 2389| Type = [Struct] String -# 2389| getVariable().getInitializer(): [Initializer] initializer for x790 -# 2389| getExpr(): [ConstructorCall] call to String -# 2389| Type = [VoidType] void -# 2389| ValueCategory = prvalue -# 2390| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2390| Type = [VoidType] void -# 2390| ValueCategory = prvalue -# 2390| getQualifier(): [VariableAccess] x790 -# 2390| Type = [Struct] String -# 2390| ValueCategory = lvalue -# 2390| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2390| Conversion = [BoolConversion] conversion to bool -# 2390| Type = [BoolType] bool -# 2390| Value = [CStyleCast] 0 -# 2390| ValueCategory = prvalue -# 2391| getStmt(791): [DoStmt] do (...) ... -# 2393| getCondition(): [Literal] 0 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 0 -# 2393| ValueCategory = prvalue -# 2391| getStmt(): [BlockStmt] { ... } -# 2392| getStmt(0): [DeclStmt] declaration -# 2392| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x791 -# 2392| Type = [Struct] String -# 2392| getVariable().getInitializer(): [Initializer] initializer for x791 -# 2392| getExpr(): [ConstructorCall] call to String -# 2392| Type = [VoidType] void -# 2392| ValueCategory = prvalue -# 2393| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2393| Type = [VoidType] void -# 2393| ValueCategory = prvalue -# 2393| getQualifier(): [VariableAccess] x791 -# 2393| Type = [Struct] String -# 2393| ValueCategory = lvalue -# 2393| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2393| Conversion = [BoolConversion] conversion to bool -# 2393| Type = [BoolType] bool -# 2393| Value = [CStyleCast] 0 -# 2393| ValueCategory = prvalue -# 2394| getStmt(792): [DoStmt] do (...) ... -# 2396| getCondition(): [Literal] 0 -# 2396| Type = [IntType] int -# 2396| Value = [Literal] 0 -# 2396| ValueCategory = prvalue -# 2394| getStmt(): [BlockStmt] { ... } -# 2395| getStmt(0): [DeclStmt] declaration -# 2395| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x792 -# 2395| Type = [Struct] String -# 2395| getVariable().getInitializer(): [Initializer] initializer for x792 -# 2395| getExpr(): [ConstructorCall] call to String -# 2395| Type = [VoidType] void -# 2395| ValueCategory = prvalue -# 2396| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2396| Type = [VoidType] void -# 2396| ValueCategory = prvalue -# 2396| getQualifier(): [VariableAccess] x792 -# 2396| Type = [Struct] String -# 2396| ValueCategory = lvalue -# 2396| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2396| Conversion = [BoolConversion] conversion to bool -# 2396| Type = [BoolType] bool -# 2396| Value = [CStyleCast] 0 -# 2396| ValueCategory = prvalue -# 2397| getStmt(793): [DoStmt] do (...) ... -# 2399| getCondition(): [Literal] 0 -# 2399| Type = [IntType] int -# 2399| Value = [Literal] 0 -# 2399| ValueCategory = prvalue -# 2397| getStmt(): [BlockStmt] { ... } -# 2398| getStmt(0): [DeclStmt] declaration -# 2398| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x793 -# 2398| Type = [Struct] String -# 2398| getVariable().getInitializer(): [Initializer] initializer for x793 -# 2398| getExpr(): [ConstructorCall] call to String -# 2398| Type = [VoidType] void -# 2398| ValueCategory = prvalue -# 2399| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2399| Type = [VoidType] void -# 2399| ValueCategory = prvalue -# 2399| getQualifier(): [VariableAccess] x793 -# 2399| Type = [Struct] String -# 2399| ValueCategory = lvalue -# 2399| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2399| Conversion = [BoolConversion] conversion to bool -# 2399| Type = [BoolType] bool -# 2399| Value = [CStyleCast] 0 -# 2399| ValueCategory = prvalue -# 2400| getStmt(794): [DoStmt] do (...) ... -# 2402| getCondition(): [Literal] 0 -# 2402| Type = [IntType] int -# 2402| Value = [Literal] 0 -# 2402| ValueCategory = prvalue -# 2400| getStmt(): [BlockStmt] { ... } -# 2401| getStmt(0): [DeclStmt] declaration -# 2401| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x794 -# 2401| Type = [Struct] String -# 2401| getVariable().getInitializer(): [Initializer] initializer for x794 -# 2401| getExpr(): [ConstructorCall] call to String -# 2401| Type = [VoidType] void -# 2401| ValueCategory = prvalue -# 2402| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2402| Type = [VoidType] void -# 2402| ValueCategory = prvalue -# 2402| getQualifier(): [VariableAccess] x794 -# 2402| Type = [Struct] String -# 2402| ValueCategory = lvalue -# 2402| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2402| Conversion = [BoolConversion] conversion to bool -# 2402| Type = [BoolType] bool -# 2402| Value = [CStyleCast] 0 -# 2402| ValueCategory = prvalue -# 2403| getStmt(795): [DoStmt] do (...) ... -# 2405| getCondition(): [Literal] 0 -# 2405| Type = [IntType] int -# 2405| Value = [Literal] 0 -# 2405| ValueCategory = prvalue -# 2403| getStmt(): [BlockStmt] { ... } -# 2404| getStmt(0): [DeclStmt] declaration -# 2404| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x795 -# 2404| Type = [Struct] String -# 2404| getVariable().getInitializer(): [Initializer] initializer for x795 -# 2404| getExpr(): [ConstructorCall] call to String -# 2404| Type = [VoidType] void -# 2404| ValueCategory = prvalue -# 2405| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2405| Type = [VoidType] void -# 2405| ValueCategory = prvalue -# 2405| getQualifier(): [VariableAccess] x795 -# 2405| Type = [Struct] String -# 2405| ValueCategory = lvalue -# 2405| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2405| Conversion = [BoolConversion] conversion to bool -# 2405| Type = [BoolType] bool -# 2405| Value = [CStyleCast] 0 -# 2405| ValueCategory = prvalue -# 2406| getStmt(796): [DoStmt] do (...) ... -# 2408| getCondition(): [Literal] 0 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 0 -# 2408| ValueCategory = prvalue -# 2406| getStmt(): [BlockStmt] { ... } -# 2407| getStmt(0): [DeclStmt] declaration -# 2407| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x796 -# 2407| Type = [Struct] String -# 2407| getVariable().getInitializer(): [Initializer] initializer for x796 -# 2407| getExpr(): [ConstructorCall] call to String -# 2407| Type = [VoidType] void -# 2407| ValueCategory = prvalue -# 2408| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2408| Type = [VoidType] void -# 2408| ValueCategory = prvalue -# 2408| getQualifier(): [VariableAccess] x796 -# 2408| Type = [Struct] String -# 2408| ValueCategory = lvalue -# 2408| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2408| Conversion = [BoolConversion] conversion to bool -# 2408| Type = [BoolType] bool -# 2408| Value = [CStyleCast] 0 -# 2408| ValueCategory = prvalue -# 2409| getStmt(797): [DoStmt] do (...) ... -# 2411| getCondition(): [Literal] 0 -# 2411| Type = [IntType] int -# 2411| Value = [Literal] 0 -# 2411| ValueCategory = prvalue -# 2409| getStmt(): [BlockStmt] { ... } -# 2410| getStmt(0): [DeclStmt] declaration -# 2410| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x797 -# 2410| Type = [Struct] String -# 2410| getVariable().getInitializer(): [Initializer] initializer for x797 -# 2410| getExpr(): [ConstructorCall] call to String -# 2410| Type = [VoidType] void -# 2410| ValueCategory = prvalue -# 2411| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2411| Type = [VoidType] void -# 2411| ValueCategory = prvalue -# 2411| getQualifier(): [VariableAccess] x797 -# 2411| Type = [Struct] String -# 2411| ValueCategory = lvalue -# 2411| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2411| Conversion = [BoolConversion] conversion to bool -# 2411| Type = [BoolType] bool -# 2411| Value = [CStyleCast] 0 -# 2411| ValueCategory = prvalue -# 2412| getStmt(798): [DoStmt] do (...) ... -# 2414| getCondition(): [Literal] 0 -# 2414| Type = [IntType] int -# 2414| Value = [Literal] 0 -# 2414| ValueCategory = prvalue -# 2412| getStmt(): [BlockStmt] { ... } -# 2413| getStmt(0): [DeclStmt] declaration -# 2413| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x798 -# 2413| Type = [Struct] String -# 2413| getVariable().getInitializer(): [Initializer] initializer for x798 -# 2413| getExpr(): [ConstructorCall] call to String -# 2413| Type = [VoidType] void -# 2413| ValueCategory = prvalue -# 2414| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2414| Type = [VoidType] void -# 2414| ValueCategory = prvalue -# 2414| getQualifier(): [VariableAccess] x798 -# 2414| Type = [Struct] String -# 2414| ValueCategory = lvalue -# 2414| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2414| Conversion = [BoolConversion] conversion to bool -# 2414| Type = [BoolType] bool -# 2414| Value = [CStyleCast] 0 -# 2414| ValueCategory = prvalue -# 2415| getStmt(799): [DoStmt] do (...) ... -# 2417| getCondition(): [Literal] 0 -# 2417| Type = [IntType] int -# 2417| Value = [Literal] 0 -# 2417| ValueCategory = prvalue -# 2415| getStmt(): [BlockStmt] { ... } -# 2416| getStmt(0): [DeclStmt] declaration -# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x799 -# 2416| Type = [Struct] String -# 2416| getVariable().getInitializer(): [Initializer] initializer for x799 -# 2416| getExpr(): [ConstructorCall] call to String -# 2416| Type = [VoidType] void -# 2416| ValueCategory = prvalue -# 2417| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2417| Type = [VoidType] void -# 2417| ValueCategory = prvalue -# 2417| getQualifier(): [VariableAccess] x799 -# 2417| Type = [Struct] String -# 2417| ValueCategory = lvalue -# 2417| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2417| Conversion = [BoolConversion] conversion to bool -# 2417| Type = [BoolType] bool -# 2417| Value = [CStyleCast] 0 -# 2417| ValueCategory = prvalue -# 2418| getStmt(800): [DoStmt] do (...) ... -# 2420| getCondition(): [Literal] 0 -# 2420| Type = [IntType] int -# 2420| Value = [Literal] 0 -# 2420| ValueCategory = prvalue -# 2418| getStmt(): [BlockStmt] { ... } -# 2419| getStmt(0): [DeclStmt] declaration -# 2419| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x800 -# 2419| Type = [Struct] String -# 2419| getVariable().getInitializer(): [Initializer] initializer for x800 -# 2419| getExpr(): [ConstructorCall] call to String -# 2419| Type = [VoidType] void -# 2419| ValueCategory = prvalue -# 2420| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2420| Type = [VoidType] void -# 2420| ValueCategory = prvalue -# 2420| getQualifier(): [VariableAccess] x800 -# 2420| Type = [Struct] String -# 2420| ValueCategory = lvalue -# 2420| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2420| Conversion = [BoolConversion] conversion to bool -# 2420| Type = [BoolType] bool -# 2420| Value = [CStyleCast] 0 -# 2420| ValueCategory = prvalue -# 2421| getStmt(801): [DoStmt] do (...) ... -# 2423| getCondition(): [Literal] 0 -# 2423| Type = [IntType] int -# 2423| Value = [Literal] 0 -# 2423| ValueCategory = prvalue -# 2421| getStmt(): [BlockStmt] { ... } -# 2422| getStmt(0): [DeclStmt] declaration -# 2422| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x801 -# 2422| Type = [Struct] String -# 2422| getVariable().getInitializer(): [Initializer] initializer for x801 -# 2422| getExpr(): [ConstructorCall] call to String -# 2422| Type = [VoidType] void -# 2422| ValueCategory = prvalue -# 2423| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2423| Type = [VoidType] void -# 2423| ValueCategory = prvalue -# 2423| getQualifier(): [VariableAccess] x801 -# 2423| Type = [Struct] String -# 2423| ValueCategory = lvalue -# 2423| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2423| Conversion = [BoolConversion] conversion to bool -# 2423| Type = [BoolType] bool -# 2423| Value = [CStyleCast] 0 -# 2423| ValueCategory = prvalue -# 2424| getStmt(802): [DoStmt] do (...) ... -# 2426| getCondition(): [Literal] 0 -# 2426| Type = [IntType] int -# 2426| Value = [Literal] 0 -# 2426| ValueCategory = prvalue -# 2424| getStmt(): [BlockStmt] { ... } -# 2425| getStmt(0): [DeclStmt] declaration -# 2425| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x802 -# 2425| Type = [Struct] String -# 2425| getVariable().getInitializer(): [Initializer] initializer for x802 -# 2425| getExpr(): [ConstructorCall] call to String -# 2425| Type = [VoidType] void -# 2425| ValueCategory = prvalue -# 2426| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2426| Type = [VoidType] void -# 2426| ValueCategory = prvalue -# 2426| getQualifier(): [VariableAccess] x802 -# 2426| Type = [Struct] String -# 2426| ValueCategory = lvalue -# 2426| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2426| Conversion = [BoolConversion] conversion to bool -# 2426| Type = [BoolType] bool -# 2426| Value = [CStyleCast] 0 -# 2426| ValueCategory = prvalue -# 2427| getStmt(803): [DoStmt] do (...) ... -# 2429| getCondition(): [Literal] 0 -# 2429| Type = [IntType] int -# 2429| Value = [Literal] 0 -# 2429| ValueCategory = prvalue -# 2427| getStmt(): [BlockStmt] { ... } -# 2428| getStmt(0): [DeclStmt] declaration -# 2428| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x803 -# 2428| Type = [Struct] String -# 2428| getVariable().getInitializer(): [Initializer] initializer for x803 -# 2428| getExpr(): [ConstructorCall] call to String -# 2428| Type = [VoidType] void -# 2428| ValueCategory = prvalue -# 2429| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2429| Type = [VoidType] void -# 2429| ValueCategory = prvalue -# 2429| getQualifier(): [VariableAccess] x803 -# 2429| Type = [Struct] String -# 2429| ValueCategory = lvalue -# 2429| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2429| Conversion = [BoolConversion] conversion to bool -# 2429| Type = [BoolType] bool -# 2429| Value = [CStyleCast] 0 -# 2429| ValueCategory = prvalue -# 2430| getStmt(804): [DoStmt] do (...) ... -# 2432| getCondition(): [Literal] 0 -# 2432| Type = [IntType] int -# 2432| Value = [Literal] 0 -# 2432| ValueCategory = prvalue -# 2430| getStmt(): [BlockStmt] { ... } -# 2431| getStmt(0): [DeclStmt] declaration -# 2431| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x804 -# 2431| Type = [Struct] String -# 2431| getVariable().getInitializer(): [Initializer] initializer for x804 -# 2431| getExpr(): [ConstructorCall] call to String -# 2431| Type = [VoidType] void -# 2431| ValueCategory = prvalue -# 2432| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2432| Type = [VoidType] void -# 2432| ValueCategory = prvalue -# 2432| getQualifier(): [VariableAccess] x804 -# 2432| Type = [Struct] String -# 2432| ValueCategory = lvalue -# 2432| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2432| Conversion = [BoolConversion] conversion to bool -# 2432| Type = [BoolType] bool -# 2432| Value = [CStyleCast] 0 -# 2432| ValueCategory = prvalue -# 2433| getStmt(805): [DoStmt] do (...) ... -# 2435| getCondition(): [Literal] 0 -# 2435| Type = [IntType] int -# 2435| Value = [Literal] 0 -# 2435| ValueCategory = prvalue -# 2433| getStmt(): [BlockStmt] { ... } -# 2434| getStmt(0): [DeclStmt] declaration -# 2434| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x805 -# 2434| Type = [Struct] String -# 2434| getVariable().getInitializer(): [Initializer] initializer for x805 -# 2434| getExpr(): [ConstructorCall] call to String -# 2434| Type = [VoidType] void -# 2434| ValueCategory = prvalue -# 2435| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2435| Type = [VoidType] void -# 2435| ValueCategory = prvalue -# 2435| getQualifier(): [VariableAccess] x805 -# 2435| Type = [Struct] String -# 2435| ValueCategory = lvalue -# 2435| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2435| Conversion = [BoolConversion] conversion to bool -# 2435| Type = [BoolType] bool -# 2435| Value = [CStyleCast] 0 -# 2435| ValueCategory = prvalue -# 2436| getStmt(806): [DoStmt] do (...) ... -# 2438| getCondition(): [Literal] 0 -# 2438| Type = [IntType] int -# 2438| Value = [Literal] 0 -# 2438| ValueCategory = prvalue -# 2436| getStmt(): [BlockStmt] { ... } -# 2437| getStmt(0): [DeclStmt] declaration -# 2437| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x806 -# 2437| Type = [Struct] String -# 2437| getVariable().getInitializer(): [Initializer] initializer for x806 -# 2437| getExpr(): [ConstructorCall] call to String -# 2437| Type = [VoidType] void -# 2437| ValueCategory = prvalue -# 2438| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2438| Type = [VoidType] void -# 2438| ValueCategory = prvalue -# 2438| getQualifier(): [VariableAccess] x806 -# 2438| Type = [Struct] String -# 2438| ValueCategory = lvalue -# 2438| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2438| Conversion = [BoolConversion] conversion to bool -# 2438| Type = [BoolType] bool -# 2438| Value = [CStyleCast] 0 -# 2438| ValueCategory = prvalue -# 2439| getStmt(807): [DoStmt] do (...) ... -# 2441| getCondition(): [Literal] 0 -# 2441| Type = [IntType] int -# 2441| Value = [Literal] 0 -# 2441| ValueCategory = prvalue -# 2439| getStmt(): [BlockStmt] { ... } -# 2440| getStmt(0): [DeclStmt] declaration -# 2440| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x807 -# 2440| Type = [Struct] String -# 2440| getVariable().getInitializer(): [Initializer] initializer for x807 -# 2440| getExpr(): [ConstructorCall] call to String -# 2440| Type = [VoidType] void -# 2440| ValueCategory = prvalue -# 2441| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2441| Type = [VoidType] void -# 2441| ValueCategory = prvalue -# 2441| getQualifier(): [VariableAccess] x807 -# 2441| Type = [Struct] String -# 2441| ValueCategory = lvalue -# 2441| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2441| Conversion = [BoolConversion] conversion to bool -# 2441| Type = [BoolType] bool -# 2441| Value = [CStyleCast] 0 -# 2441| ValueCategory = prvalue -# 2442| getStmt(808): [DoStmt] do (...) ... -# 2444| getCondition(): [Literal] 0 -# 2444| Type = [IntType] int -# 2444| Value = [Literal] 0 -# 2444| ValueCategory = prvalue -# 2442| getStmt(): [BlockStmt] { ... } -# 2443| getStmt(0): [DeclStmt] declaration -# 2443| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x808 -# 2443| Type = [Struct] String -# 2443| getVariable().getInitializer(): [Initializer] initializer for x808 -# 2443| getExpr(): [ConstructorCall] call to String -# 2443| Type = [VoidType] void -# 2443| ValueCategory = prvalue -# 2444| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2444| Type = [VoidType] void -# 2444| ValueCategory = prvalue -# 2444| getQualifier(): [VariableAccess] x808 -# 2444| Type = [Struct] String -# 2444| ValueCategory = lvalue -# 2444| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2444| Conversion = [BoolConversion] conversion to bool -# 2444| Type = [BoolType] bool -# 2444| Value = [CStyleCast] 0 -# 2444| ValueCategory = prvalue -# 2445| getStmt(809): [DoStmt] do (...) ... -# 2447| getCondition(): [Literal] 0 -# 2447| Type = [IntType] int -# 2447| Value = [Literal] 0 -# 2447| ValueCategory = prvalue -# 2445| getStmt(): [BlockStmt] { ... } -# 2446| getStmt(0): [DeclStmt] declaration -# 2446| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x809 -# 2446| Type = [Struct] String -# 2446| getVariable().getInitializer(): [Initializer] initializer for x809 -# 2446| getExpr(): [ConstructorCall] call to String -# 2446| Type = [VoidType] void -# 2446| ValueCategory = prvalue -# 2447| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2447| Type = [VoidType] void -# 2447| ValueCategory = prvalue -# 2447| getQualifier(): [VariableAccess] x809 -# 2447| Type = [Struct] String -# 2447| ValueCategory = lvalue -# 2447| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2447| Conversion = [BoolConversion] conversion to bool -# 2447| Type = [BoolType] bool -# 2447| Value = [CStyleCast] 0 -# 2447| ValueCategory = prvalue -# 2448| getStmt(810): [DoStmt] do (...) ... -# 2450| getCondition(): [Literal] 0 -# 2450| Type = [IntType] int -# 2450| Value = [Literal] 0 -# 2450| ValueCategory = prvalue -# 2448| getStmt(): [BlockStmt] { ... } -# 2449| getStmt(0): [DeclStmt] declaration -# 2449| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x810 -# 2449| Type = [Struct] String -# 2449| getVariable().getInitializer(): [Initializer] initializer for x810 -# 2449| getExpr(): [ConstructorCall] call to String -# 2449| Type = [VoidType] void -# 2449| ValueCategory = prvalue -# 2450| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2450| Type = [VoidType] void -# 2450| ValueCategory = prvalue -# 2450| getQualifier(): [VariableAccess] x810 -# 2450| Type = [Struct] String -# 2450| ValueCategory = lvalue -# 2450| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2450| Conversion = [BoolConversion] conversion to bool -# 2450| Type = [BoolType] bool -# 2450| Value = [CStyleCast] 0 -# 2450| ValueCategory = prvalue -# 2451| getStmt(811): [DoStmt] do (...) ... -# 2453| getCondition(): [Literal] 0 -# 2453| Type = [IntType] int -# 2453| Value = [Literal] 0 -# 2453| ValueCategory = prvalue -# 2451| getStmt(): [BlockStmt] { ... } -# 2452| getStmt(0): [DeclStmt] declaration -# 2452| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x811 -# 2452| Type = [Struct] String -# 2452| getVariable().getInitializer(): [Initializer] initializer for x811 -# 2452| getExpr(): [ConstructorCall] call to String -# 2452| Type = [VoidType] void -# 2452| ValueCategory = prvalue -# 2453| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2453| Type = [VoidType] void -# 2453| ValueCategory = prvalue -# 2453| getQualifier(): [VariableAccess] x811 -# 2453| Type = [Struct] String -# 2453| ValueCategory = lvalue -# 2453| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2453| Conversion = [BoolConversion] conversion to bool -# 2453| Type = [BoolType] bool -# 2453| Value = [CStyleCast] 0 -# 2453| ValueCategory = prvalue -# 2454| getStmt(812): [DoStmt] do (...) ... -# 2456| getCondition(): [Literal] 0 -# 2456| Type = [IntType] int -# 2456| Value = [Literal] 0 -# 2456| ValueCategory = prvalue -# 2454| getStmt(): [BlockStmt] { ... } -# 2455| getStmt(0): [DeclStmt] declaration -# 2455| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x812 -# 2455| Type = [Struct] String -# 2455| getVariable().getInitializer(): [Initializer] initializer for x812 -# 2455| getExpr(): [ConstructorCall] call to String -# 2455| Type = [VoidType] void -# 2455| ValueCategory = prvalue -# 2456| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2456| Type = [VoidType] void -# 2456| ValueCategory = prvalue -# 2456| getQualifier(): [VariableAccess] x812 -# 2456| Type = [Struct] String -# 2456| ValueCategory = lvalue -# 2456| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2456| Conversion = [BoolConversion] conversion to bool -# 2456| Type = [BoolType] bool -# 2456| Value = [CStyleCast] 0 -# 2456| ValueCategory = prvalue -# 2457| getStmt(813): [DoStmt] do (...) ... -# 2459| getCondition(): [Literal] 0 -# 2459| Type = [IntType] int -# 2459| Value = [Literal] 0 -# 2459| ValueCategory = prvalue -# 2457| getStmt(): [BlockStmt] { ... } -# 2458| getStmt(0): [DeclStmt] declaration -# 2458| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x813 -# 2458| Type = [Struct] String -# 2458| getVariable().getInitializer(): [Initializer] initializer for x813 -# 2458| getExpr(): [ConstructorCall] call to String -# 2458| Type = [VoidType] void -# 2458| ValueCategory = prvalue -# 2459| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2459| Type = [VoidType] void -# 2459| ValueCategory = prvalue -# 2459| getQualifier(): [VariableAccess] x813 -# 2459| Type = [Struct] String -# 2459| ValueCategory = lvalue -# 2459| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2459| Conversion = [BoolConversion] conversion to bool -# 2459| Type = [BoolType] bool -# 2459| Value = [CStyleCast] 0 -# 2459| ValueCategory = prvalue -# 2460| getStmt(814): [DoStmt] do (...) ... -# 2462| getCondition(): [Literal] 0 -# 2462| Type = [IntType] int -# 2462| Value = [Literal] 0 -# 2462| ValueCategory = prvalue -# 2460| getStmt(): [BlockStmt] { ... } -# 2461| getStmt(0): [DeclStmt] declaration -# 2461| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x814 -# 2461| Type = [Struct] String -# 2461| getVariable().getInitializer(): [Initializer] initializer for x814 -# 2461| getExpr(): [ConstructorCall] call to String -# 2461| Type = [VoidType] void -# 2461| ValueCategory = prvalue -# 2462| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2462| Type = [VoidType] void -# 2462| ValueCategory = prvalue -# 2462| getQualifier(): [VariableAccess] x814 -# 2462| Type = [Struct] String -# 2462| ValueCategory = lvalue -# 2462| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2462| Conversion = [BoolConversion] conversion to bool -# 2462| Type = [BoolType] bool -# 2462| Value = [CStyleCast] 0 -# 2462| ValueCategory = prvalue -# 2463| getStmt(815): [DoStmt] do (...) ... -# 2465| getCondition(): [Literal] 0 -# 2465| Type = [IntType] int -# 2465| Value = [Literal] 0 -# 2465| ValueCategory = prvalue -# 2463| getStmt(): [BlockStmt] { ... } -# 2464| getStmt(0): [DeclStmt] declaration -# 2464| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x815 -# 2464| Type = [Struct] String -# 2464| getVariable().getInitializer(): [Initializer] initializer for x815 -# 2464| getExpr(): [ConstructorCall] call to String -# 2464| Type = [VoidType] void -# 2464| ValueCategory = prvalue -# 2465| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2465| Type = [VoidType] void -# 2465| ValueCategory = prvalue -# 2465| getQualifier(): [VariableAccess] x815 -# 2465| Type = [Struct] String -# 2465| ValueCategory = lvalue -# 2465| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2465| Conversion = [BoolConversion] conversion to bool -# 2465| Type = [BoolType] bool -# 2465| Value = [CStyleCast] 0 -# 2465| ValueCategory = prvalue -# 2466| getStmt(816): [DoStmt] do (...) ... -# 2468| getCondition(): [Literal] 0 -# 2468| Type = [IntType] int -# 2468| Value = [Literal] 0 -# 2468| ValueCategory = prvalue -# 2466| getStmt(): [BlockStmt] { ... } -# 2467| getStmt(0): [DeclStmt] declaration -# 2467| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x816 -# 2467| Type = [Struct] String -# 2467| getVariable().getInitializer(): [Initializer] initializer for x816 -# 2467| getExpr(): [ConstructorCall] call to String -# 2467| Type = [VoidType] void -# 2467| ValueCategory = prvalue -# 2468| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2468| Type = [VoidType] void -# 2468| ValueCategory = prvalue -# 2468| getQualifier(): [VariableAccess] x816 -# 2468| Type = [Struct] String -# 2468| ValueCategory = lvalue -# 2468| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2468| Conversion = [BoolConversion] conversion to bool -# 2468| Type = [BoolType] bool -# 2468| Value = [CStyleCast] 0 -# 2468| ValueCategory = prvalue -# 2469| getStmt(817): [DoStmt] do (...) ... -# 2471| getCondition(): [Literal] 0 -# 2471| Type = [IntType] int -# 2471| Value = [Literal] 0 -# 2471| ValueCategory = prvalue -# 2469| getStmt(): [BlockStmt] { ... } -# 2470| getStmt(0): [DeclStmt] declaration -# 2470| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x817 -# 2470| Type = [Struct] String -# 2470| getVariable().getInitializer(): [Initializer] initializer for x817 -# 2470| getExpr(): [ConstructorCall] call to String -# 2470| Type = [VoidType] void -# 2470| ValueCategory = prvalue -# 2471| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2471| Type = [VoidType] void -# 2471| ValueCategory = prvalue -# 2471| getQualifier(): [VariableAccess] x817 -# 2471| Type = [Struct] String -# 2471| ValueCategory = lvalue -# 2471| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2471| Conversion = [BoolConversion] conversion to bool -# 2471| Type = [BoolType] bool -# 2471| Value = [CStyleCast] 0 -# 2471| ValueCategory = prvalue -# 2472| getStmt(818): [DoStmt] do (...) ... -# 2474| getCondition(): [Literal] 0 -# 2474| Type = [IntType] int -# 2474| Value = [Literal] 0 -# 2474| ValueCategory = prvalue -# 2472| getStmt(): [BlockStmt] { ... } -# 2473| getStmt(0): [DeclStmt] declaration -# 2473| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x818 -# 2473| Type = [Struct] String -# 2473| getVariable().getInitializer(): [Initializer] initializer for x818 -# 2473| getExpr(): [ConstructorCall] call to String -# 2473| Type = [VoidType] void -# 2473| ValueCategory = prvalue -# 2474| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2474| Type = [VoidType] void -# 2474| ValueCategory = prvalue -# 2474| getQualifier(): [VariableAccess] x818 -# 2474| Type = [Struct] String -# 2474| ValueCategory = lvalue -# 2474| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2474| Conversion = [BoolConversion] conversion to bool -# 2474| Type = [BoolType] bool -# 2474| Value = [CStyleCast] 0 -# 2474| ValueCategory = prvalue -# 2475| getStmt(819): [DoStmt] do (...) ... -# 2477| getCondition(): [Literal] 0 -# 2477| Type = [IntType] int -# 2477| Value = [Literal] 0 -# 2477| ValueCategory = prvalue -# 2475| getStmt(): [BlockStmt] { ... } -# 2476| getStmt(0): [DeclStmt] declaration -# 2476| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x819 -# 2476| Type = [Struct] String -# 2476| getVariable().getInitializer(): [Initializer] initializer for x819 -# 2476| getExpr(): [ConstructorCall] call to String -# 2476| Type = [VoidType] void -# 2476| ValueCategory = prvalue -# 2477| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2477| Type = [VoidType] void -# 2477| ValueCategory = prvalue -# 2477| getQualifier(): [VariableAccess] x819 -# 2477| Type = [Struct] String -# 2477| ValueCategory = lvalue -# 2477| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2477| Conversion = [BoolConversion] conversion to bool -# 2477| Type = [BoolType] bool -# 2477| Value = [CStyleCast] 0 -# 2477| ValueCategory = prvalue -# 2478| getStmt(820): [DoStmt] do (...) ... -# 2480| getCondition(): [Literal] 0 -# 2480| Type = [IntType] int -# 2480| Value = [Literal] 0 -# 2480| ValueCategory = prvalue -# 2478| getStmt(): [BlockStmt] { ... } -# 2479| getStmt(0): [DeclStmt] declaration -# 2479| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x820 -# 2479| Type = [Struct] String -# 2479| getVariable().getInitializer(): [Initializer] initializer for x820 -# 2479| getExpr(): [ConstructorCall] call to String -# 2479| Type = [VoidType] void -# 2479| ValueCategory = prvalue -# 2480| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2480| Type = [VoidType] void -# 2480| ValueCategory = prvalue -# 2480| getQualifier(): [VariableAccess] x820 -# 2480| Type = [Struct] String -# 2480| ValueCategory = lvalue -# 2480| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2480| Conversion = [BoolConversion] conversion to bool -# 2480| Type = [BoolType] bool -# 2480| Value = [CStyleCast] 0 -# 2480| ValueCategory = prvalue -# 2481| getStmt(821): [DoStmt] do (...) ... -# 2483| getCondition(): [Literal] 0 -# 2483| Type = [IntType] int -# 2483| Value = [Literal] 0 -# 2483| ValueCategory = prvalue -# 2481| getStmt(): [BlockStmt] { ... } -# 2482| getStmt(0): [DeclStmt] declaration -# 2482| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x821 -# 2482| Type = [Struct] String -# 2482| getVariable().getInitializer(): [Initializer] initializer for x821 -# 2482| getExpr(): [ConstructorCall] call to String -# 2482| Type = [VoidType] void -# 2482| ValueCategory = prvalue -# 2483| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2483| Type = [VoidType] void -# 2483| ValueCategory = prvalue -# 2483| getQualifier(): [VariableAccess] x821 -# 2483| Type = [Struct] String -# 2483| ValueCategory = lvalue -# 2483| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2483| Conversion = [BoolConversion] conversion to bool -# 2483| Type = [BoolType] bool -# 2483| Value = [CStyleCast] 0 -# 2483| ValueCategory = prvalue -# 2484| getStmt(822): [DoStmt] do (...) ... -# 2486| getCondition(): [Literal] 0 -# 2486| Type = [IntType] int -# 2486| Value = [Literal] 0 -# 2486| ValueCategory = prvalue -# 2484| getStmt(): [BlockStmt] { ... } -# 2485| getStmt(0): [DeclStmt] declaration -# 2485| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x822 -# 2485| Type = [Struct] String -# 2485| getVariable().getInitializer(): [Initializer] initializer for x822 -# 2485| getExpr(): [ConstructorCall] call to String -# 2485| Type = [VoidType] void -# 2485| ValueCategory = prvalue -# 2486| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2486| Type = [VoidType] void -# 2486| ValueCategory = prvalue -# 2486| getQualifier(): [VariableAccess] x822 -# 2486| Type = [Struct] String -# 2486| ValueCategory = lvalue -# 2486| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2486| Conversion = [BoolConversion] conversion to bool -# 2486| Type = [BoolType] bool -# 2486| Value = [CStyleCast] 0 -# 2486| ValueCategory = prvalue -# 2487| getStmt(823): [DoStmt] do (...) ... -# 2489| getCondition(): [Literal] 0 -# 2489| Type = [IntType] int -# 2489| Value = [Literal] 0 -# 2489| ValueCategory = prvalue -# 2487| getStmt(): [BlockStmt] { ... } -# 2488| getStmt(0): [DeclStmt] declaration -# 2488| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x823 -# 2488| Type = [Struct] String -# 2488| getVariable().getInitializer(): [Initializer] initializer for x823 -# 2488| getExpr(): [ConstructorCall] call to String -# 2488| Type = [VoidType] void -# 2488| ValueCategory = prvalue -# 2489| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2489| Type = [VoidType] void -# 2489| ValueCategory = prvalue -# 2489| getQualifier(): [VariableAccess] x823 -# 2489| Type = [Struct] String -# 2489| ValueCategory = lvalue -# 2489| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2489| Conversion = [BoolConversion] conversion to bool -# 2489| Type = [BoolType] bool -# 2489| Value = [CStyleCast] 0 -# 2489| ValueCategory = prvalue -# 2490| getStmt(824): [DoStmt] do (...) ... -# 2492| getCondition(): [Literal] 0 -# 2492| Type = [IntType] int -# 2492| Value = [Literal] 0 -# 2492| ValueCategory = prvalue -# 2490| getStmt(): [BlockStmt] { ... } -# 2491| getStmt(0): [DeclStmt] declaration -# 2491| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x824 -# 2491| Type = [Struct] String -# 2491| getVariable().getInitializer(): [Initializer] initializer for x824 -# 2491| getExpr(): [ConstructorCall] call to String -# 2491| Type = [VoidType] void -# 2491| ValueCategory = prvalue -# 2492| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2492| Type = [VoidType] void -# 2492| ValueCategory = prvalue -# 2492| getQualifier(): [VariableAccess] x824 -# 2492| Type = [Struct] String -# 2492| ValueCategory = lvalue -# 2492| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2492| Conversion = [BoolConversion] conversion to bool -# 2492| Type = [BoolType] bool -# 2492| Value = [CStyleCast] 0 -# 2492| ValueCategory = prvalue -# 2493| getStmt(825): [DoStmt] do (...) ... -# 2495| getCondition(): [Literal] 0 -# 2495| Type = [IntType] int -# 2495| Value = [Literal] 0 -# 2495| ValueCategory = prvalue -# 2493| getStmt(): [BlockStmt] { ... } -# 2494| getStmt(0): [DeclStmt] declaration -# 2494| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x825 -# 2494| Type = [Struct] String -# 2494| getVariable().getInitializer(): [Initializer] initializer for x825 -# 2494| getExpr(): [ConstructorCall] call to String -# 2494| Type = [VoidType] void -# 2494| ValueCategory = prvalue -# 2495| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2495| Type = [VoidType] void -# 2495| ValueCategory = prvalue -# 2495| getQualifier(): [VariableAccess] x825 -# 2495| Type = [Struct] String -# 2495| ValueCategory = lvalue -# 2495| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2495| Conversion = [BoolConversion] conversion to bool -# 2495| Type = [BoolType] bool -# 2495| Value = [CStyleCast] 0 -# 2495| ValueCategory = prvalue -# 2496| getStmt(826): [DoStmt] do (...) ... -# 2498| getCondition(): [Literal] 0 -# 2498| Type = [IntType] int -# 2498| Value = [Literal] 0 -# 2498| ValueCategory = prvalue -# 2496| getStmt(): [BlockStmt] { ... } -# 2497| getStmt(0): [DeclStmt] declaration -# 2497| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x826 -# 2497| Type = [Struct] String -# 2497| getVariable().getInitializer(): [Initializer] initializer for x826 -# 2497| getExpr(): [ConstructorCall] call to String -# 2497| Type = [VoidType] void -# 2497| ValueCategory = prvalue -# 2498| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2498| Type = [VoidType] void -# 2498| ValueCategory = prvalue -# 2498| getQualifier(): [VariableAccess] x826 -# 2498| Type = [Struct] String -# 2498| ValueCategory = lvalue -# 2498| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2498| Conversion = [BoolConversion] conversion to bool -# 2498| Type = [BoolType] bool -# 2498| Value = [CStyleCast] 0 -# 2498| ValueCategory = prvalue -# 2499| getStmt(827): [DoStmt] do (...) ... -# 2501| getCondition(): [Literal] 0 -# 2501| Type = [IntType] int -# 2501| Value = [Literal] 0 -# 2501| ValueCategory = prvalue -# 2499| getStmt(): [BlockStmt] { ... } -# 2500| getStmt(0): [DeclStmt] declaration -# 2500| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x827 -# 2500| Type = [Struct] String -# 2500| getVariable().getInitializer(): [Initializer] initializer for x827 -# 2500| getExpr(): [ConstructorCall] call to String -# 2500| Type = [VoidType] void -# 2500| ValueCategory = prvalue -# 2501| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2501| Type = [VoidType] void -# 2501| ValueCategory = prvalue -# 2501| getQualifier(): [VariableAccess] x827 -# 2501| Type = [Struct] String -# 2501| ValueCategory = lvalue -# 2501| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2501| Conversion = [BoolConversion] conversion to bool -# 2501| Type = [BoolType] bool -# 2501| Value = [CStyleCast] 0 -# 2501| ValueCategory = prvalue -# 2502| getStmt(828): [DoStmt] do (...) ... -# 2504| getCondition(): [Literal] 0 -# 2504| Type = [IntType] int -# 2504| Value = [Literal] 0 -# 2504| ValueCategory = prvalue -# 2502| getStmt(): [BlockStmt] { ... } -# 2503| getStmt(0): [DeclStmt] declaration -# 2503| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x828 -# 2503| Type = [Struct] String -# 2503| getVariable().getInitializer(): [Initializer] initializer for x828 -# 2503| getExpr(): [ConstructorCall] call to String -# 2503| Type = [VoidType] void -# 2503| ValueCategory = prvalue -# 2504| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2504| Type = [VoidType] void -# 2504| ValueCategory = prvalue -# 2504| getQualifier(): [VariableAccess] x828 -# 2504| Type = [Struct] String -# 2504| ValueCategory = lvalue -# 2504| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2504| Conversion = [BoolConversion] conversion to bool -# 2504| Type = [BoolType] bool -# 2504| Value = [CStyleCast] 0 -# 2504| ValueCategory = prvalue -# 2505| getStmt(829): [DoStmt] do (...) ... -# 2507| getCondition(): [Literal] 0 -# 2507| Type = [IntType] int -# 2507| Value = [Literal] 0 -# 2507| ValueCategory = prvalue -# 2505| getStmt(): [BlockStmt] { ... } -# 2506| getStmt(0): [DeclStmt] declaration -# 2506| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x829 -# 2506| Type = [Struct] String -# 2506| getVariable().getInitializer(): [Initializer] initializer for x829 -# 2506| getExpr(): [ConstructorCall] call to String -# 2506| Type = [VoidType] void -# 2506| ValueCategory = prvalue -# 2507| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2507| Type = [VoidType] void -# 2507| ValueCategory = prvalue -# 2507| getQualifier(): [VariableAccess] x829 -# 2507| Type = [Struct] String -# 2507| ValueCategory = lvalue -# 2507| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2507| Conversion = [BoolConversion] conversion to bool -# 2507| Type = [BoolType] bool -# 2507| Value = [CStyleCast] 0 -# 2507| ValueCategory = prvalue -# 2508| getStmt(830): [DoStmt] do (...) ... -# 2510| getCondition(): [Literal] 0 -# 2510| Type = [IntType] int -# 2510| Value = [Literal] 0 -# 2510| ValueCategory = prvalue -# 2508| getStmt(): [BlockStmt] { ... } -# 2509| getStmt(0): [DeclStmt] declaration -# 2509| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x830 -# 2509| Type = [Struct] String -# 2509| getVariable().getInitializer(): [Initializer] initializer for x830 -# 2509| getExpr(): [ConstructorCall] call to String -# 2509| Type = [VoidType] void -# 2509| ValueCategory = prvalue -# 2510| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2510| Type = [VoidType] void -# 2510| ValueCategory = prvalue -# 2510| getQualifier(): [VariableAccess] x830 -# 2510| Type = [Struct] String -# 2510| ValueCategory = lvalue -# 2510| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2510| Conversion = [BoolConversion] conversion to bool -# 2510| Type = [BoolType] bool -# 2510| Value = [CStyleCast] 0 -# 2510| ValueCategory = prvalue -# 2511| getStmt(831): [DoStmt] do (...) ... -# 2513| getCondition(): [Literal] 0 -# 2513| Type = [IntType] int -# 2513| Value = [Literal] 0 -# 2513| ValueCategory = prvalue -# 2511| getStmt(): [BlockStmt] { ... } -# 2512| getStmt(0): [DeclStmt] declaration -# 2512| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x831 -# 2512| Type = [Struct] String -# 2512| getVariable().getInitializer(): [Initializer] initializer for x831 -# 2512| getExpr(): [ConstructorCall] call to String -# 2512| Type = [VoidType] void -# 2512| ValueCategory = prvalue -# 2513| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2513| Type = [VoidType] void -# 2513| ValueCategory = prvalue -# 2513| getQualifier(): [VariableAccess] x831 -# 2513| Type = [Struct] String -# 2513| ValueCategory = lvalue -# 2513| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2513| Conversion = [BoolConversion] conversion to bool -# 2513| Type = [BoolType] bool -# 2513| Value = [CStyleCast] 0 -# 2513| ValueCategory = prvalue -# 2514| getStmt(832): [DoStmt] do (...) ... -# 2516| getCondition(): [Literal] 0 -# 2516| Type = [IntType] int -# 2516| Value = [Literal] 0 -# 2516| ValueCategory = prvalue -# 2514| getStmt(): [BlockStmt] { ... } -# 2515| getStmt(0): [DeclStmt] declaration -# 2515| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x832 -# 2515| Type = [Struct] String -# 2515| getVariable().getInitializer(): [Initializer] initializer for x832 -# 2515| getExpr(): [ConstructorCall] call to String -# 2515| Type = [VoidType] void -# 2515| ValueCategory = prvalue -# 2516| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2516| Type = [VoidType] void -# 2516| ValueCategory = prvalue -# 2516| getQualifier(): [VariableAccess] x832 -# 2516| Type = [Struct] String -# 2516| ValueCategory = lvalue -# 2516| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2516| Conversion = [BoolConversion] conversion to bool -# 2516| Type = [BoolType] bool -# 2516| Value = [CStyleCast] 0 -# 2516| ValueCategory = prvalue -# 2517| getStmt(833): [DoStmt] do (...) ... -# 2519| getCondition(): [Literal] 0 -# 2519| Type = [IntType] int -# 2519| Value = [Literal] 0 -# 2519| ValueCategory = prvalue -# 2517| getStmt(): [BlockStmt] { ... } -# 2518| getStmt(0): [DeclStmt] declaration -# 2518| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x833 -# 2518| Type = [Struct] String -# 2518| getVariable().getInitializer(): [Initializer] initializer for x833 -# 2518| getExpr(): [ConstructorCall] call to String -# 2518| Type = [VoidType] void -# 2518| ValueCategory = prvalue -# 2519| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2519| Type = [VoidType] void -# 2519| ValueCategory = prvalue -# 2519| getQualifier(): [VariableAccess] x833 -# 2519| Type = [Struct] String -# 2519| ValueCategory = lvalue -# 2519| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2519| Conversion = [BoolConversion] conversion to bool -# 2519| Type = [BoolType] bool -# 2519| Value = [CStyleCast] 0 -# 2519| ValueCategory = prvalue -# 2520| getStmt(834): [DoStmt] do (...) ... -# 2522| getCondition(): [Literal] 0 -# 2522| Type = [IntType] int -# 2522| Value = [Literal] 0 -# 2522| ValueCategory = prvalue -# 2520| getStmt(): [BlockStmt] { ... } -# 2521| getStmt(0): [DeclStmt] declaration -# 2521| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x834 -# 2521| Type = [Struct] String -# 2521| getVariable().getInitializer(): [Initializer] initializer for x834 -# 2521| getExpr(): [ConstructorCall] call to String -# 2521| Type = [VoidType] void -# 2521| ValueCategory = prvalue -# 2522| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2522| Type = [VoidType] void -# 2522| ValueCategory = prvalue -# 2522| getQualifier(): [VariableAccess] x834 -# 2522| Type = [Struct] String -# 2522| ValueCategory = lvalue -# 2522| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2522| Conversion = [BoolConversion] conversion to bool -# 2522| Type = [BoolType] bool -# 2522| Value = [CStyleCast] 0 -# 2522| ValueCategory = prvalue -# 2523| getStmt(835): [DoStmt] do (...) ... -# 2525| getCondition(): [Literal] 0 -# 2525| Type = [IntType] int -# 2525| Value = [Literal] 0 -# 2525| ValueCategory = prvalue -# 2523| getStmt(): [BlockStmt] { ... } -# 2524| getStmt(0): [DeclStmt] declaration -# 2524| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x835 -# 2524| Type = [Struct] String -# 2524| getVariable().getInitializer(): [Initializer] initializer for x835 -# 2524| getExpr(): [ConstructorCall] call to String -# 2524| Type = [VoidType] void -# 2524| ValueCategory = prvalue -# 2525| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2525| Type = [VoidType] void -# 2525| ValueCategory = prvalue -# 2525| getQualifier(): [VariableAccess] x835 -# 2525| Type = [Struct] String -# 2525| ValueCategory = lvalue -# 2525| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2525| Conversion = [BoolConversion] conversion to bool -# 2525| Type = [BoolType] bool -# 2525| Value = [CStyleCast] 0 -# 2525| ValueCategory = prvalue -# 2526| getStmt(836): [DoStmt] do (...) ... -# 2528| getCondition(): [Literal] 0 -# 2528| Type = [IntType] int -# 2528| Value = [Literal] 0 -# 2528| ValueCategory = prvalue -# 2526| getStmt(): [BlockStmt] { ... } -# 2527| getStmt(0): [DeclStmt] declaration -# 2527| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x836 -# 2527| Type = [Struct] String -# 2527| getVariable().getInitializer(): [Initializer] initializer for x836 -# 2527| getExpr(): [ConstructorCall] call to String -# 2527| Type = [VoidType] void -# 2527| ValueCategory = prvalue -# 2528| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2528| Type = [VoidType] void -# 2528| ValueCategory = prvalue -# 2528| getQualifier(): [VariableAccess] x836 -# 2528| Type = [Struct] String -# 2528| ValueCategory = lvalue -# 2528| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2528| Conversion = [BoolConversion] conversion to bool -# 2528| Type = [BoolType] bool -# 2528| Value = [CStyleCast] 0 -# 2528| ValueCategory = prvalue -# 2529| getStmt(837): [DoStmt] do (...) ... -# 2531| getCondition(): [Literal] 0 -# 2531| Type = [IntType] int -# 2531| Value = [Literal] 0 -# 2531| ValueCategory = prvalue -# 2529| getStmt(): [BlockStmt] { ... } -# 2530| getStmt(0): [DeclStmt] declaration -# 2530| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x837 -# 2530| Type = [Struct] String -# 2530| getVariable().getInitializer(): [Initializer] initializer for x837 -# 2530| getExpr(): [ConstructorCall] call to String -# 2530| Type = [VoidType] void -# 2530| ValueCategory = prvalue -# 2531| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2531| Type = [VoidType] void -# 2531| ValueCategory = prvalue -# 2531| getQualifier(): [VariableAccess] x837 -# 2531| Type = [Struct] String -# 2531| ValueCategory = lvalue -# 2531| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2531| Conversion = [BoolConversion] conversion to bool -# 2531| Type = [BoolType] bool -# 2531| Value = [CStyleCast] 0 -# 2531| ValueCategory = prvalue -# 2532| getStmt(838): [DoStmt] do (...) ... -# 2534| getCondition(): [Literal] 0 -# 2534| Type = [IntType] int -# 2534| Value = [Literal] 0 -# 2534| ValueCategory = prvalue -# 2532| getStmt(): [BlockStmt] { ... } -# 2533| getStmt(0): [DeclStmt] declaration -# 2533| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x838 -# 2533| Type = [Struct] String -# 2533| getVariable().getInitializer(): [Initializer] initializer for x838 -# 2533| getExpr(): [ConstructorCall] call to String -# 2533| Type = [VoidType] void -# 2533| ValueCategory = prvalue -# 2534| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2534| Type = [VoidType] void -# 2534| ValueCategory = prvalue -# 2534| getQualifier(): [VariableAccess] x838 -# 2534| Type = [Struct] String -# 2534| ValueCategory = lvalue -# 2534| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2534| Conversion = [BoolConversion] conversion to bool -# 2534| Type = [BoolType] bool -# 2534| Value = [CStyleCast] 0 -# 2534| ValueCategory = prvalue -# 2535| getStmt(839): [DoStmt] do (...) ... -# 2537| getCondition(): [Literal] 0 -# 2537| Type = [IntType] int -# 2537| Value = [Literal] 0 -# 2537| ValueCategory = prvalue -# 2535| getStmt(): [BlockStmt] { ... } -# 2536| getStmt(0): [DeclStmt] declaration -# 2536| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x839 -# 2536| Type = [Struct] String -# 2536| getVariable().getInitializer(): [Initializer] initializer for x839 -# 2536| getExpr(): [ConstructorCall] call to String -# 2536| Type = [VoidType] void -# 2536| ValueCategory = prvalue -# 2537| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2537| Type = [VoidType] void -# 2537| ValueCategory = prvalue -# 2537| getQualifier(): [VariableAccess] x839 -# 2537| Type = [Struct] String -# 2537| ValueCategory = lvalue -# 2537| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2537| Conversion = [BoolConversion] conversion to bool -# 2537| Type = [BoolType] bool -# 2537| Value = [CStyleCast] 0 -# 2537| ValueCategory = prvalue -# 2538| getStmt(840): [DoStmt] do (...) ... -# 2540| getCondition(): [Literal] 0 -# 2540| Type = [IntType] int -# 2540| Value = [Literal] 0 -# 2540| ValueCategory = prvalue -# 2538| getStmt(): [BlockStmt] { ... } -# 2539| getStmt(0): [DeclStmt] declaration -# 2539| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x840 -# 2539| Type = [Struct] String -# 2539| getVariable().getInitializer(): [Initializer] initializer for x840 -# 2539| getExpr(): [ConstructorCall] call to String -# 2539| Type = [VoidType] void -# 2539| ValueCategory = prvalue -# 2540| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2540| Type = [VoidType] void -# 2540| ValueCategory = prvalue -# 2540| getQualifier(): [VariableAccess] x840 -# 2540| Type = [Struct] String -# 2540| ValueCategory = lvalue -# 2540| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2540| Conversion = [BoolConversion] conversion to bool -# 2540| Type = [BoolType] bool -# 2540| Value = [CStyleCast] 0 -# 2540| ValueCategory = prvalue -# 2541| getStmt(841): [DoStmt] do (...) ... -# 2543| getCondition(): [Literal] 0 -# 2543| Type = [IntType] int -# 2543| Value = [Literal] 0 -# 2543| ValueCategory = prvalue -# 2541| getStmt(): [BlockStmt] { ... } -# 2542| getStmt(0): [DeclStmt] declaration -# 2542| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x841 -# 2542| Type = [Struct] String -# 2542| getVariable().getInitializer(): [Initializer] initializer for x841 -# 2542| getExpr(): [ConstructorCall] call to String -# 2542| Type = [VoidType] void -# 2542| ValueCategory = prvalue -# 2543| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2543| Type = [VoidType] void -# 2543| ValueCategory = prvalue -# 2543| getQualifier(): [VariableAccess] x841 -# 2543| Type = [Struct] String -# 2543| ValueCategory = lvalue -# 2543| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2543| Conversion = [BoolConversion] conversion to bool -# 2543| Type = [BoolType] bool -# 2543| Value = [CStyleCast] 0 -# 2543| ValueCategory = prvalue -# 2544| getStmt(842): [DoStmt] do (...) ... -# 2546| getCondition(): [Literal] 0 -# 2546| Type = [IntType] int -# 2546| Value = [Literal] 0 -# 2546| ValueCategory = prvalue -# 2544| getStmt(): [BlockStmt] { ... } -# 2545| getStmt(0): [DeclStmt] declaration -# 2545| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x842 -# 2545| Type = [Struct] String -# 2545| getVariable().getInitializer(): [Initializer] initializer for x842 -# 2545| getExpr(): [ConstructorCall] call to String -# 2545| Type = [VoidType] void -# 2545| ValueCategory = prvalue -# 2546| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2546| Type = [VoidType] void -# 2546| ValueCategory = prvalue -# 2546| getQualifier(): [VariableAccess] x842 -# 2546| Type = [Struct] String -# 2546| ValueCategory = lvalue -# 2546| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2546| Conversion = [BoolConversion] conversion to bool -# 2546| Type = [BoolType] bool -# 2546| Value = [CStyleCast] 0 -# 2546| ValueCategory = prvalue -# 2547| getStmt(843): [DoStmt] do (...) ... -# 2549| getCondition(): [Literal] 0 -# 2549| Type = [IntType] int -# 2549| Value = [Literal] 0 -# 2549| ValueCategory = prvalue -# 2547| getStmt(): [BlockStmt] { ... } -# 2548| getStmt(0): [DeclStmt] declaration -# 2548| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x843 -# 2548| Type = [Struct] String -# 2548| getVariable().getInitializer(): [Initializer] initializer for x843 -# 2548| getExpr(): [ConstructorCall] call to String -# 2548| Type = [VoidType] void -# 2548| ValueCategory = prvalue -# 2549| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2549| Type = [VoidType] void -# 2549| ValueCategory = prvalue -# 2549| getQualifier(): [VariableAccess] x843 -# 2549| Type = [Struct] String -# 2549| ValueCategory = lvalue -# 2549| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2549| Conversion = [BoolConversion] conversion to bool -# 2549| Type = [BoolType] bool -# 2549| Value = [CStyleCast] 0 -# 2549| ValueCategory = prvalue -# 2550| getStmt(844): [DoStmt] do (...) ... -# 2552| getCondition(): [Literal] 0 -# 2552| Type = [IntType] int -# 2552| Value = [Literal] 0 -# 2552| ValueCategory = prvalue -# 2550| getStmt(): [BlockStmt] { ... } -# 2551| getStmt(0): [DeclStmt] declaration -# 2551| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x844 -# 2551| Type = [Struct] String -# 2551| getVariable().getInitializer(): [Initializer] initializer for x844 -# 2551| getExpr(): [ConstructorCall] call to String -# 2551| Type = [VoidType] void -# 2551| ValueCategory = prvalue -# 2552| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2552| Type = [VoidType] void -# 2552| ValueCategory = prvalue -# 2552| getQualifier(): [VariableAccess] x844 -# 2552| Type = [Struct] String -# 2552| ValueCategory = lvalue -# 2552| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2552| Conversion = [BoolConversion] conversion to bool -# 2552| Type = [BoolType] bool -# 2552| Value = [CStyleCast] 0 -# 2552| ValueCategory = prvalue -# 2553| getStmt(845): [DoStmt] do (...) ... -# 2555| getCondition(): [Literal] 0 -# 2555| Type = [IntType] int -# 2555| Value = [Literal] 0 -# 2555| ValueCategory = prvalue -# 2553| getStmt(): [BlockStmt] { ... } -# 2554| getStmt(0): [DeclStmt] declaration -# 2554| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x845 -# 2554| Type = [Struct] String -# 2554| getVariable().getInitializer(): [Initializer] initializer for x845 -# 2554| getExpr(): [ConstructorCall] call to String -# 2554| Type = [VoidType] void -# 2554| ValueCategory = prvalue -# 2555| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2555| Type = [VoidType] void -# 2555| ValueCategory = prvalue -# 2555| getQualifier(): [VariableAccess] x845 -# 2555| Type = [Struct] String -# 2555| ValueCategory = lvalue -# 2555| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2555| Conversion = [BoolConversion] conversion to bool -# 2555| Type = [BoolType] bool -# 2555| Value = [CStyleCast] 0 -# 2555| ValueCategory = prvalue -# 2556| getStmt(846): [DoStmt] do (...) ... -# 2558| getCondition(): [Literal] 0 -# 2558| Type = [IntType] int -# 2558| Value = [Literal] 0 -# 2558| ValueCategory = prvalue -# 2556| getStmt(): [BlockStmt] { ... } -# 2557| getStmt(0): [DeclStmt] declaration -# 2557| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x846 -# 2557| Type = [Struct] String -# 2557| getVariable().getInitializer(): [Initializer] initializer for x846 -# 2557| getExpr(): [ConstructorCall] call to String -# 2557| Type = [VoidType] void -# 2557| ValueCategory = prvalue -# 2558| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2558| Type = [VoidType] void -# 2558| ValueCategory = prvalue -# 2558| getQualifier(): [VariableAccess] x846 -# 2558| Type = [Struct] String -# 2558| ValueCategory = lvalue -# 2558| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2558| Conversion = [BoolConversion] conversion to bool -# 2558| Type = [BoolType] bool -# 2558| Value = [CStyleCast] 0 -# 2558| ValueCategory = prvalue -# 2559| getStmt(847): [DoStmt] do (...) ... -# 2561| getCondition(): [Literal] 0 -# 2561| Type = [IntType] int -# 2561| Value = [Literal] 0 -# 2561| ValueCategory = prvalue -# 2559| getStmt(): [BlockStmt] { ... } -# 2560| getStmt(0): [DeclStmt] declaration -# 2560| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x847 -# 2560| Type = [Struct] String -# 2560| getVariable().getInitializer(): [Initializer] initializer for x847 -# 2560| getExpr(): [ConstructorCall] call to String -# 2560| Type = [VoidType] void -# 2560| ValueCategory = prvalue -# 2561| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2561| Type = [VoidType] void -# 2561| ValueCategory = prvalue -# 2561| getQualifier(): [VariableAccess] x847 -# 2561| Type = [Struct] String -# 2561| ValueCategory = lvalue -# 2561| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2561| Conversion = [BoolConversion] conversion to bool -# 2561| Type = [BoolType] bool -# 2561| Value = [CStyleCast] 0 -# 2561| ValueCategory = prvalue -# 2562| getStmt(848): [DoStmt] do (...) ... -# 2564| getCondition(): [Literal] 0 -# 2564| Type = [IntType] int -# 2564| Value = [Literal] 0 -# 2564| ValueCategory = prvalue -# 2562| getStmt(): [BlockStmt] { ... } -# 2563| getStmt(0): [DeclStmt] declaration -# 2563| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x848 -# 2563| Type = [Struct] String -# 2563| getVariable().getInitializer(): [Initializer] initializer for x848 -# 2563| getExpr(): [ConstructorCall] call to String -# 2563| Type = [VoidType] void -# 2563| ValueCategory = prvalue -# 2564| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2564| Type = [VoidType] void -# 2564| ValueCategory = prvalue -# 2564| getQualifier(): [VariableAccess] x848 -# 2564| Type = [Struct] String -# 2564| ValueCategory = lvalue -# 2564| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2564| Conversion = [BoolConversion] conversion to bool -# 2564| Type = [BoolType] bool -# 2564| Value = [CStyleCast] 0 -# 2564| ValueCategory = prvalue -# 2565| getStmt(849): [DoStmt] do (...) ... -# 2567| getCondition(): [Literal] 0 -# 2567| Type = [IntType] int -# 2567| Value = [Literal] 0 -# 2567| ValueCategory = prvalue -# 2565| getStmt(): [BlockStmt] { ... } -# 2566| getStmt(0): [DeclStmt] declaration -# 2566| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x849 -# 2566| Type = [Struct] String -# 2566| getVariable().getInitializer(): [Initializer] initializer for x849 -# 2566| getExpr(): [ConstructorCall] call to String -# 2566| Type = [VoidType] void -# 2566| ValueCategory = prvalue -# 2567| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2567| Type = [VoidType] void -# 2567| ValueCategory = prvalue -# 2567| getQualifier(): [VariableAccess] x849 -# 2567| Type = [Struct] String -# 2567| ValueCategory = lvalue -# 2567| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2567| Conversion = [BoolConversion] conversion to bool -# 2567| Type = [BoolType] bool -# 2567| Value = [CStyleCast] 0 -# 2567| ValueCategory = prvalue -# 2568| getStmt(850): [DoStmt] do (...) ... -# 2570| getCondition(): [Literal] 0 -# 2570| Type = [IntType] int -# 2570| Value = [Literal] 0 -# 2570| ValueCategory = prvalue -# 2568| getStmt(): [BlockStmt] { ... } -# 2569| getStmt(0): [DeclStmt] declaration -# 2569| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x850 -# 2569| Type = [Struct] String -# 2569| getVariable().getInitializer(): [Initializer] initializer for x850 -# 2569| getExpr(): [ConstructorCall] call to String -# 2569| Type = [VoidType] void -# 2569| ValueCategory = prvalue -# 2570| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2570| Type = [VoidType] void -# 2570| ValueCategory = prvalue -# 2570| getQualifier(): [VariableAccess] x850 -# 2570| Type = [Struct] String -# 2570| ValueCategory = lvalue -# 2570| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2570| Conversion = [BoolConversion] conversion to bool -# 2570| Type = [BoolType] bool -# 2570| Value = [CStyleCast] 0 -# 2570| ValueCategory = prvalue -# 2571| getStmt(851): [DoStmt] do (...) ... -# 2573| getCondition(): [Literal] 0 -# 2573| Type = [IntType] int -# 2573| Value = [Literal] 0 -# 2573| ValueCategory = prvalue -# 2571| getStmt(): [BlockStmt] { ... } -# 2572| getStmt(0): [DeclStmt] declaration -# 2572| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x851 -# 2572| Type = [Struct] String -# 2572| getVariable().getInitializer(): [Initializer] initializer for x851 -# 2572| getExpr(): [ConstructorCall] call to String -# 2572| Type = [VoidType] void -# 2572| ValueCategory = prvalue -# 2573| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2573| Type = [VoidType] void -# 2573| ValueCategory = prvalue -# 2573| getQualifier(): [VariableAccess] x851 -# 2573| Type = [Struct] String -# 2573| ValueCategory = lvalue -# 2573| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2573| Conversion = [BoolConversion] conversion to bool -# 2573| Type = [BoolType] bool -# 2573| Value = [CStyleCast] 0 -# 2573| ValueCategory = prvalue -# 2574| getStmt(852): [DoStmt] do (...) ... -# 2576| getCondition(): [Literal] 0 -# 2576| Type = [IntType] int -# 2576| Value = [Literal] 0 -# 2576| ValueCategory = prvalue -# 2574| getStmt(): [BlockStmt] { ... } -# 2575| getStmt(0): [DeclStmt] declaration -# 2575| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x852 -# 2575| Type = [Struct] String -# 2575| getVariable().getInitializer(): [Initializer] initializer for x852 -# 2575| getExpr(): [ConstructorCall] call to String -# 2575| Type = [VoidType] void -# 2575| ValueCategory = prvalue -# 2576| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2576| Type = [VoidType] void -# 2576| ValueCategory = prvalue -# 2576| getQualifier(): [VariableAccess] x852 -# 2576| Type = [Struct] String -# 2576| ValueCategory = lvalue -# 2576| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2576| Conversion = [BoolConversion] conversion to bool -# 2576| Type = [BoolType] bool -# 2576| Value = [CStyleCast] 0 -# 2576| ValueCategory = prvalue -# 2577| getStmt(853): [DoStmt] do (...) ... -# 2579| getCondition(): [Literal] 0 -# 2579| Type = [IntType] int -# 2579| Value = [Literal] 0 -# 2579| ValueCategory = prvalue -# 2577| getStmt(): [BlockStmt] { ... } -# 2578| getStmt(0): [DeclStmt] declaration -# 2578| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x853 -# 2578| Type = [Struct] String -# 2578| getVariable().getInitializer(): [Initializer] initializer for x853 -# 2578| getExpr(): [ConstructorCall] call to String -# 2578| Type = [VoidType] void -# 2578| ValueCategory = prvalue -# 2579| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2579| Type = [VoidType] void -# 2579| ValueCategory = prvalue -# 2579| getQualifier(): [VariableAccess] x853 -# 2579| Type = [Struct] String -# 2579| ValueCategory = lvalue -# 2579| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2579| Conversion = [BoolConversion] conversion to bool -# 2579| Type = [BoolType] bool -# 2579| Value = [CStyleCast] 0 -# 2579| ValueCategory = prvalue -# 2580| getStmt(854): [DoStmt] do (...) ... -# 2582| getCondition(): [Literal] 0 -# 2582| Type = [IntType] int -# 2582| Value = [Literal] 0 -# 2582| ValueCategory = prvalue -# 2580| getStmt(): [BlockStmt] { ... } -# 2581| getStmt(0): [DeclStmt] declaration -# 2581| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x854 -# 2581| Type = [Struct] String -# 2581| getVariable().getInitializer(): [Initializer] initializer for x854 -# 2581| getExpr(): [ConstructorCall] call to String -# 2581| Type = [VoidType] void -# 2581| ValueCategory = prvalue -# 2582| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2582| Type = [VoidType] void -# 2582| ValueCategory = prvalue -# 2582| getQualifier(): [VariableAccess] x854 -# 2582| Type = [Struct] String -# 2582| ValueCategory = lvalue -# 2582| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2582| Conversion = [BoolConversion] conversion to bool -# 2582| Type = [BoolType] bool -# 2582| Value = [CStyleCast] 0 -# 2582| ValueCategory = prvalue -# 2583| getStmt(855): [DoStmt] do (...) ... -# 2585| getCondition(): [Literal] 0 -# 2585| Type = [IntType] int -# 2585| Value = [Literal] 0 -# 2585| ValueCategory = prvalue -# 2583| getStmt(): [BlockStmt] { ... } -# 2584| getStmt(0): [DeclStmt] declaration -# 2584| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x855 -# 2584| Type = [Struct] String -# 2584| getVariable().getInitializer(): [Initializer] initializer for x855 -# 2584| getExpr(): [ConstructorCall] call to String -# 2584| Type = [VoidType] void -# 2584| ValueCategory = prvalue -# 2585| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2585| Type = [VoidType] void -# 2585| ValueCategory = prvalue -# 2585| getQualifier(): [VariableAccess] x855 -# 2585| Type = [Struct] String -# 2585| ValueCategory = lvalue -# 2585| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2585| Conversion = [BoolConversion] conversion to bool -# 2585| Type = [BoolType] bool -# 2585| Value = [CStyleCast] 0 -# 2585| ValueCategory = prvalue -# 2586| getStmt(856): [DoStmt] do (...) ... -# 2588| getCondition(): [Literal] 0 -# 2588| Type = [IntType] int -# 2588| Value = [Literal] 0 -# 2588| ValueCategory = prvalue -# 2586| getStmt(): [BlockStmt] { ... } -# 2587| getStmt(0): [DeclStmt] declaration -# 2587| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x856 -# 2587| Type = [Struct] String -# 2587| getVariable().getInitializer(): [Initializer] initializer for x856 -# 2587| getExpr(): [ConstructorCall] call to String -# 2587| Type = [VoidType] void -# 2587| ValueCategory = prvalue -# 2588| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2588| Type = [VoidType] void -# 2588| ValueCategory = prvalue -# 2588| getQualifier(): [VariableAccess] x856 -# 2588| Type = [Struct] String -# 2588| ValueCategory = lvalue -# 2588| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2588| Conversion = [BoolConversion] conversion to bool -# 2588| Type = [BoolType] bool -# 2588| Value = [CStyleCast] 0 -# 2588| ValueCategory = prvalue -# 2589| getStmt(857): [DoStmt] do (...) ... -# 2591| getCondition(): [Literal] 0 -# 2591| Type = [IntType] int -# 2591| Value = [Literal] 0 -# 2591| ValueCategory = prvalue -# 2589| getStmt(): [BlockStmt] { ... } -# 2590| getStmt(0): [DeclStmt] declaration -# 2590| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x857 -# 2590| Type = [Struct] String -# 2590| getVariable().getInitializer(): [Initializer] initializer for x857 -# 2590| getExpr(): [ConstructorCall] call to String -# 2590| Type = [VoidType] void -# 2590| ValueCategory = prvalue -# 2591| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2591| Type = [VoidType] void -# 2591| ValueCategory = prvalue -# 2591| getQualifier(): [VariableAccess] x857 -# 2591| Type = [Struct] String -# 2591| ValueCategory = lvalue -# 2591| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2591| Conversion = [BoolConversion] conversion to bool -# 2591| Type = [BoolType] bool -# 2591| Value = [CStyleCast] 0 -# 2591| ValueCategory = prvalue -# 2592| getStmt(858): [DoStmt] do (...) ... -# 2594| getCondition(): [Literal] 0 -# 2594| Type = [IntType] int -# 2594| Value = [Literal] 0 -# 2594| ValueCategory = prvalue -# 2592| getStmt(): [BlockStmt] { ... } -# 2593| getStmt(0): [DeclStmt] declaration -# 2593| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x858 -# 2593| Type = [Struct] String -# 2593| getVariable().getInitializer(): [Initializer] initializer for x858 -# 2593| getExpr(): [ConstructorCall] call to String -# 2593| Type = [VoidType] void -# 2593| ValueCategory = prvalue -# 2594| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2594| Type = [VoidType] void -# 2594| ValueCategory = prvalue -# 2594| getQualifier(): [VariableAccess] x858 -# 2594| Type = [Struct] String -# 2594| ValueCategory = lvalue -# 2594| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2594| Conversion = [BoolConversion] conversion to bool -# 2594| Type = [BoolType] bool -# 2594| Value = [CStyleCast] 0 -# 2594| ValueCategory = prvalue -# 2595| getStmt(859): [DoStmt] do (...) ... -# 2597| getCondition(): [Literal] 0 -# 2597| Type = [IntType] int -# 2597| Value = [Literal] 0 -# 2597| ValueCategory = prvalue -# 2595| getStmt(): [BlockStmt] { ... } -# 2596| getStmt(0): [DeclStmt] declaration -# 2596| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x859 -# 2596| Type = [Struct] String -# 2596| getVariable().getInitializer(): [Initializer] initializer for x859 -# 2596| getExpr(): [ConstructorCall] call to String -# 2596| Type = [VoidType] void -# 2596| ValueCategory = prvalue -# 2597| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2597| Type = [VoidType] void -# 2597| ValueCategory = prvalue -# 2597| getQualifier(): [VariableAccess] x859 -# 2597| Type = [Struct] String -# 2597| ValueCategory = lvalue -# 2597| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2597| Conversion = [BoolConversion] conversion to bool -# 2597| Type = [BoolType] bool -# 2597| Value = [CStyleCast] 0 -# 2597| ValueCategory = prvalue -# 2598| getStmt(860): [DoStmt] do (...) ... -# 2600| getCondition(): [Literal] 0 -# 2600| Type = [IntType] int -# 2600| Value = [Literal] 0 -# 2600| ValueCategory = prvalue -# 2598| getStmt(): [BlockStmt] { ... } -# 2599| getStmt(0): [DeclStmt] declaration -# 2599| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x860 -# 2599| Type = [Struct] String -# 2599| getVariable().getInitializer(): [Initializer] initializer for x860 -# 2599| getExpr(): [ConstructorCall] call to String -# 2599| Type = [VoidType] void -# 2599| ValueCategory = prvalue -# 2600| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2600| Type = [VoidType] void -# 2600| ValueCategory = prvalue -# 2600| getQualifier(): [VariableAccess] x860 -# 2600| Type = [Struct] String -# 2600| ValueCategory = lvalue -# 2600| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2600| Conversion = [BoolConversion] conversion to bool -# 2600| Type = [BoolType] bool -# 2600| Value = [CStyleCast] 0 -# 2600| ValueCategory = prvalue -# 2601| getStmt(861): [DoStmt] do (...) ... -# 2603| getCondition(): [Literal] 0 -# 2603| Type = [IntType] int -# 2603| Value = [Literal] 0 -# 2603| ValueCategory = prvalue -# 2601| getStmt(): [BlockStmt] { ... } -# 2602| getStmt(0): [DeclStmt] declaration -# 2602| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x861 -# 2602| Type = [Struct] String -# 2602| getVariable().getInitializer(): [Initializer] initializer for x861 -# 2602| getExpr(): [ConstructorCall] call to String -# 2602| Type = [VoidType] void -# 2602| ValueCategory = prvalue -# 2603| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2603| Type = [VoidType] void -# 2603| ValueCategory = prvalue -# 2603| getQualifier(): [VariableAccess] x861 -# 2603| Type = [Struct] String -# 2603| ValueCategory = lvalue -# 2603| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2603| Conversion = [BoolConversion] conversion to bool -# 2603| Type = [BoolType] bool -# 2603| Value = [CStyleCast] 0 -# 2603| ValueCategory = prvalue -# 2604| getStmt(862): [DoStmt] do (...) ... -# 2606| getCondition(): [Literal] 0 -# 2606| Type = [IntType] int -# 2606| Value = [Literal] 0 -# 2606| ValueCategory = prvalue -# 2604| getStmt(): [BlockStmt] { ... } -# 2605| getStmt(0): [DeclStmt] declaration -# 2605| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x862 -# 2605| Type = [Struct] String -# 2605| getVariable().getInitializer(): [Initializer] initializer for x862 -# 2605| getExpr(): [ConstructorCall] call to String -# 2605| Type = [VoidType] void -# 2605| ValueCategory = prvalue -# 2606| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2606| Type = [VoidType] void -# 2606| ValueCategory = prvalue -# 2606| getQualifier(): [VariableAccess] x862 -# 2606| Type = [Struct] String -# 2606| ValueCategory = lvalue -# 2606| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2606| Conversion = [BoolConversion] conversion to bool -# 2606| Type = [BoolType] bool -# 2606| Value = [CStyleCast] 0 -# 2606| ValueCategory = prvalue -# 2607| getStmt(863): [DoStmt] do (...) ... -# 2609| getCondition(): [Literal] 0 -# 2609| Type = [IntType] int -# 2609| Value = [Literal] 0 -# 2609| ValueCategory = prvalue -# 2607| getStmt(): [BlockStmt] { ... } -# 2608| getStmt(0): [DeclStmt] declaration -# 2608| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x863 -# 2608| Type = [Struct] String -# 2608| getVariable().getInitializer(): [Initializer] initializer for x863 -# 2608| getExpr(): [ConstructorCall] call to String -# 2608| Type = [VoidType] void -# 2608| ValueCategory = prvalue -# 2609| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2609| Type = [VoidType] void -# 2609| ValueCategory = prvalue -# 2609| getQualifier(): [VariableAccess] x863 -# 2609| Type = [Struct] String -# 2609| ValueCategory = lvalue -# 2609| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2609| Conversion = [BoolConversion] conversion to bool -# 2609| Type = [BoolType] bool -# 2609| Value = [CStyleCast] 0 -# 2609| ValueCategory = prvalue -# 2610| getStmt(864): [DoStmt] do (...) ... -# 2612| getCondition(): [Literal] 0 -# 2612| Type = [IntType] int -# 2612| Value = [Literal] 0 -# 2612| ValueCategory = prvalue -# 2610| getStmt(): [BlockStmt] { ... } -# 2611| getStmt(0): [DeclStmt] declaration -# 2611| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x864 -# 2611| Type = [Struct] String -# 2611| getVariable().getInitializer(): [Initializer] initializer for x864 -# 2611| getExpr(): [ConstructorCall] call to String -# 2611| Type = [VoidType] void -# 2611| ValueCategory = prvalue -# 2612| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2612| Type = [VoidType] void -# 2612| ValueCategory = prvalue -# 2612| getQualifier(): [VariableAccess] x864 -# 2612| Type = [Struct] String -# 2612| ValueCategory = lvalue -# 2612| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2612| Conversion = [BoolConversion] conversion to bool -# 2612| Type = [BoolType] bool -# 2612| Value = [CStyleCast] 0 -# 2612| ValueCategory = prvalue -# 2613| getStmt(865): [DoStmt] do (...) ... -# 2615| getCondition(): [Literal] 0 -# 2615| Type = [IntType] int -# 2615| Value = [Literal] 0 -# 2615| ValueCategory = prvalue -# 2613| getStmt(): [BlockStmt] { ... } -# 2614| getStmt(0): [DeclStmt] declaration -# 2614| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x865 -# 2614| Type = [Struct] String -# 2614| getVariable().getInitializer(): [Initializer] initializer for x865 -# 2614| getExpr(): [ConstructorCall] call to String -# 2614| Type = [VoidType] void -# 2614| ValueCategory = prvalue -# 2615| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2615| Type = [VoidType] void -# 2615| ValueCategory = prvalue -# 2615| getQualifier(): [VariableAccess] x865 -# 2615| Type = [Struct] String -# 2615| ValueCategory = lvalue -# 2615| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2615| Conversion = [BoolConversion] conversion to bool -# 2615| Type = [BoolType] bool -# 2615| Value = [CStyleCast] 0 -# 2615| ValueCategory = prvalue -# 2616| getStmt(866): [DoStmt] do (...) ... -# 2618| getCondition(): [Literal] 0 -# 2618| Type = [IntType] int -# 2618| Value = [Literal] 0 -# 2618| ValueCategory = prvalue -# 2616| getStmt(): [BlockStmt] { ... } -# 2617| getStmt(0): [DeclStmt] declaration -# 2617| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x866 -# 2617| Type = [Struct] String -# 2617| getVariable().getInitializer(): [Initializer] initializer for x866 -# 2617| getExpr(): [ConstructorCall] call to String -# 2617| Type = [VoidType] void -# 2617| ValueCategory = prvalue -# 2618| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2618| Type = [VoidType] void -# 2618| ValueCategory = prvalue -# 2618| getQualifier(): [VariableAccess] x866 -# 2618| Type = [Struct] String -# 2618| ValueCategory = lvalue -# 2618| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2618| Conversion = [BoolConversion] conversion to bool -# 2618| Type = [BoolType] bool -# 2618| Value = [CStyleCast] 0 -# 2618| ValueCategory = prvalue -# 2619| getStmt(867): [DoStmt] do (...) ... -# 2621| getCondition(): [Literal] 0 -# 2621| Type = [IntType] int -# 2621| Value = [Literal] 0 -# 2621| ValueCategory = prvalue -# 2619| getStmt(): [BlockStmt] { ... } -# 2620| getStmt(0): [DeclStmt] declaration -# 2620| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x867 -# 2620| Type = [Struct] String -# 2620| getVariable().getInitializer(): [Initializer] initializer for x867 -# 2620| getExpr(): [ConstructorCall] call to String -# 2620| Type = [VoidType] void -# 2620| ValueCategory = prvalue -# 2621| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2621| Type = [VoidType] void -# 2621| ValueCategory = prvalue -# 2621| getQualifier(): [VariableAccess] x867 -# 2621| Type = [Struct] String -# 2621| ValueCategory = lvalue -# 2621| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2621| Conversion = [BoolConversion] conversion to bool -# 2621| Type = [BoolType] bool -# 2621| Value = [CStyleCast] 0 -# 2621| ValueCategory = prvalue -# 2622| getStmt(868): [DoStmt] do (...) ... -# 2624| getCondition(): [Literal] 0 -# 2624| Type = [IntType] int -# 2624| Value = [Literal] 0 -# 2624| ValueCategory = prvalue -# 2622| getStmt(): [BlockStmt] { ... } -# 2623| getStmt(0): [DeclStmt] declaration -# 2623| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x868 -# 2623| Type = [Struct] String -# 2623| getVariable().getInitializer(): [Initializer] initializer for x868 -# 2623| getExpr(): [ConstructorCall] call to String -# 2623| Type = [VoidType] void -# 2623| ValueCategory = prvalue -# 2624| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2624| Type = [VoidType] void -# 2624| ValueCategory = prvalue -# 2624| getQualifier(): [VariableAccess] x868 -# 2624| Type = [Struct] String -# 2624| ValueCategory = lvalue -# 2624| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2624| Conversion = [BoolConversion] conversion to bool -# 2624| Type = [BoolType] bool -# 2624| Value = [CStyleCast] 0 -# 2624| ValueCategory = prvalue -# 2625| getStmt(869): [DoStmt] do (...) ... -# 2627| getCondition(): [Literal] 0 -# 2627| Type = [IntType] int -# 2627| Value = [Literal] 0 -# 2627| ValueCategory = prvalue -# 2625| getStmt(): [BlockStmt] { ... } -# 2626| getStmt(0): [DeclStmt] declaration -# 2626| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x869 -# 2626| Type = [Struct] String -# 2626| getVariable().getInitializer(): [Initializer] initializer for x869 -# 2626| getExpr(): [ConstructorCall] call to String -# 2626| Type = [VoidType] void -# 2626| ValueCategory = prvalue -# 2627| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2627| Type = [VoidType] void -# 2627| ValueCategory = prvalue -# 2627| getQualifier(): [VariableAccess] x869 -# 2627| Type = [Struct] String -# 2627| ValueCategory = lvalue -# 2627| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2627| Conversion = [BoolConversion] conversion to bool -# 2627| Type = [BoolType] bool -# 2627| Value = [CStyleCast] 0 -# 2627| ValueCategory = prvalue -# 2628| getStmt(870): [DoStmt] do (...) ... -# 2630| getCondition(): [Literal] 0 -# 2630| Type = [IntType] int -# 2630| Value = [Literal] 0 -# 2630| ValueCategory = prvalue -# 2628| getStmt(): [BlockStmt] { ... } -# 2629| getStmt(0): [DeclStmt] declaration -# 2629| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x870 -# 2629| Type = [Struct] String -# 2629| getVariable().getInitializer(): [Initializer] initializer for x870 -# 2629| getExpr(): [ConstructorCall] call to String -# 2629| Type = [VoidType] void -# 2629| ValueCategory = prvalue -# 2630| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2630| Type = [VoidType] void -# 2630| ValueCategory = prvalue -# 2630| getQualifier(): [VariableAccess] x870 -# 2630| Type = [Struct] String -# 2630| ValueCategory = lvalue -# 2630| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2630| Conversion = [BoolConversion] conversion to bool -# 2630| Type = [BoolType] bool -# 2630| Value = [CStyleCast] 0 -# 2630| ValueCategory = prvalue -# 2631| getStmt(871): [DoStmt] do (...) ... -# 2633| getCondition(): [Literal] 0 -# 2633| Type = [IntType] int -# 2633| Value = [Literal] 0 -# 2633| ValueCategory = prvalue -# 2631| getStmt(): [BlockStmt] { ... } -# 2632| getStmt(0): [DeclStmt] declaration -# 2632| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x871 -# 2632| Type = [Struct] String -# 2632| getVariable().getInitializer(): [Initializer] initializer for x871 -# 2632| getExpr(): [ConstructorCall] call to String -# 2632| Type = [VoidType] void -# 2632| ValueCategory = prvalue -# 2633| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2633| Type = [VoidType] void -# 2633| ValueCategory = prvalue -# 2633| getQualifier(): [VariableAccess] x871 -# 2633| Type = [Struct] String -# 2633| ValueCategory = lvalue -# 2633| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2633| Conversion = [BoolConversion] conversion to bool -# 2633| Type = [BoolType] bool -# 2633| Value = [CStyleCast] 0 -# 2633| ValueCategory = prvalue -# 2634| getStmt(872): [DoStmt] do (...) ... -# 2636| getCondition(): [Literal] 0 -# 2636| Type = [IntType] int -# 2636| Value = [Literal] 0 -# 2636| ValueCategory = prvalue -# 2634| getStmt(): [BlockStmt] { ... } -# 2635| getStmt(0): [DeclStmt] declaration -# 2635| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x872 -# 2635| Type = [Struct] String -# 2635| getVariable().getInitializer(): [Initializer] initializer for x872 -# 2635| getExpr(): [ConstructorCall] call to String -# 2635| Type = [VoidType] void -# 2635| ValueCategory = prvalue -# 2636| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2636| Type = [VoidType] void -# 2636| ValueCategory = prvalue -# 2636| getQualifier(): [VariableAccess] x872 -# 2636| Type = [Struct] String -# 2636| ValueCategory = lvalue -# 2636| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2636| Conversion = [BoolConversion] conversion to bool -# 2636| Type = [BoolType] bool -# 2636| Value = [CStyleCast] 0 -# 2636| ValueCategory = prvalue -# 2637| getStmt(873): [DoStmt] do (...) ... -# 2639| getCondition(): [Literal] 0 -# 2639| Type = [IntType] int -# 2639| Value = [Literal] 0 -# 2639| ValueCategory = prvalue -# 2637| getStmt(): [BlockStmt] { ... } -# 2638| getStmt(0): [DeclStmt] declaration -# 2638| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x873 -# 2638| Type = [Struct] String -# 2638| getVariable().getInitializer(): [Initializer] initializer for x873 -# 2638| getExpr(): [ConstructorCall] call to String -# 2638| Type = [VoidType] void -# 2638| ValueCategory = prvalue -# 2639| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2639| Type = [VoidType] void -# 2639| ValueCategory = prvalue -# 2639| getQualifier(): [VariableAccess] x873 -# 2639| Type = [Struct] String -# 2639| ValueCategory = lvalue -# 2639| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2639| Conversion = [BoolConversion] conversion to bool -# 2639| Type = [BoolType] bool -# 2639| Value = [CStyleCast] 0 -# 2639| ValueCategory = prvalue -# 2640| getStmt(874): [DoStmt] do (...) ... -# 2642| getCondition(): [Literal] 0 -# 2642| Type = [IntType] int -# 2642| Value = [Literal] 0 -# 2642| ValueCategory = prvalue -# 2640| getStmt(): [BlockStmt] { ... } -# 2641| getStmt(0): [DeclStmt] declaration -# 2641| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x874 -# 2641| Type = [Struct] String -# 2641| getVariable().getInitializer(): [Initializer] initializer for x874 -# 2641| getExpr(): [ConstructorCall] call to String -# 2641| Type = [VoidType] void -# 2641| ValueCategory = prvalue -# 2642| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2642| Type = [VoidType] void -# 2642| ValueCategory = prvalue -# 2642| getQualifier(): [VariableAccess] x874 -# 2642| Type = [Struct] String -# 2642| ValueCategory = lvalue -# 2642| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2642| Conversion = [BoolConversion] conversion to bool -# 2642| Type = [BoolType] bool -# 2642| Value = [CStyleCast] 0 -# 2642| ValueCategory = prvalue -# 2643| getStmt(875): [DoStmt] do (...) ... -# 2645| getCondition(): [Literal] 0 -# 2645| Type = [IntType] int -# 2645| Value = [Literal] 0 -# 2645| ValueCategory = prvalue -# 2643| getStmt(): [BlockStmt] { ... } -# 2644| getStmt(0): [DeclStmt] declaration -# 2644| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x875 -# 2644| Type = [Struct] String -# 2644| getVariable().getInitializer(): [Initializer] initializer for x875 -# 2644| getExpr(): [ConstructorCall] call to String -# 2644| Type = [VoidType] void -# 2644| ValueCategory = prvalue -# 2645| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2645| Type = [VoidType] void -# 2645| ValueCategory = prvalue -# 2645| getQualifier(): [VariableAccess] x875 -# 2645| Type = [Struct] String -# 2645| ValueCategory = lvalue -# 2645| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2645| Conversion = [BoolConversion] conversion to bool -# 2645| Type = [BoolType] bool -# 2645| Value = [CStyleCast] 0 -# 2645| ValueCategory = prvalue -# 2646| getStmt(876): [DoStmt] do (...) ... -# 2648| getCondition(): [Literal] 0 -# 2648| Type = [IntType] int -# 2648| Value = [Literal] 0 -# 2648| ValueCategory = prvalue -# 2646| getStmt(): [BlockStmt] { ... } -# 2647| getStmt(0): [DeclStmt] declaration -# 2647| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x876 -# 2647| Type = [Struct] String -# 2647| getVariable().getInitializer(): [Initializer] initializer for x876 -# 2647| getExpr(): [ConstructorCall] call to String -# 2647| Type = [VoidType] void -# 2647| ValueCategory = prvalue -# 2648| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2648| Type = [VoidType] void -# 2648| ValueCategory = prvalue -# 2648| getQualifier(): [VariableAccess] x876 -# 2648| Type = [Struct] String -# 2648| ValueCategory = lvalue -# 2648| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2648| Conversion = [BoolConversion] conversion to bool -# 2648| Type = [BoolType] bool -# 2648| Value = [CStyleCast] 0 -# 2648| ValueCategory = prvalue -# 2649| getStmt(877): [DoStmt] do (...) ... -# 2651| getCondition(): [Literal] 0 -# 2651| Type = [IntType] int -# 2651| Value = [Literal] 0 -# 2651| ValueCategory = prvalue -# 2649| getStmt(): [BlockStmt] { ... } -# 2650| getStmt(0): [DeclStmt] declaration -# 2650| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x877 -# 2650| Type = [Struct] String -# 2650| getVariable().getInitializer(): [Initializer] initializer for x877 -# 2650| getExpr(): [ConstructorCall] call to String -# 2650| Type = [VoidType] void -# 2650| ValueCategory = prvalue -# 2651| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2651| Type = [VoidType] void -# 2651| ValueCategory = prvalue -# 2651| getQualifier(): [VariableAccess] x877 -# 2651| Type = [Struct] String -# 2651| ValueCategory = lvalue -# 2651| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2651| Conversion = [BoolConversion] conversion to bool -# 2651| Type = [BoolType] bool -# 2651| Value = [CStyleCast] 0 -# 2651| ValueCategory = prvalue -# 2652| getStmt(878): [DoStmt] do (...) ... -# 2654| getCondition(): [Literal] 0 -# 2654| Type = [IntType] int -# 2654| Value = [Literal] 0 -# 2654| ValueCategory = prvalue -# 2652| getStmt(): [BlockStmt] { ... } -# 2653| getStmt(0): [DeclStmt] declaration -# 2653| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x878 -# 2653| Type = [Struct] String -# 2653| getVariable().getInitializer(): [Initializer] initializer for x878 -# 2653| getExpr(): [ConstructorCall] call to String -# 2653| Type = [VoidType] void -# 2653| ValueCategory = prvalue -# 2654| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2654| Type = [VoidType] void -# 2654| ValueCategory = prvalue -# 2654| getQualifier(): [VariableAccess] x878 -# 2654| Type = [Struct] String -# 2654| ValueCategory = lvalue -# 2654| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2654| Conversion = [BoolConversion] conversion to bool -# 2654| Type = [BoolType] bool -# 2654| Value = [CStyleCast] 0 -# 2654| ValueCategory = prvalue -# 2655| getStmt(879): [DoStmt] do (...) ... -# 2657| getCondition(): [Literal] 0 -# 2657| Type = [IntType] int -# 2657| Value = [Literal] 0 -# 2657| ValueCategory = prvalue -# 2655| getStmt(): [BlockStmt] { ... } -# 2656| getStmt(0): [DeclStmt] declaration -# 2656| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x879 -# 2656| Type = [Struct] String -# 2656| getVariable().getInitializer(): [Initializer] initializer for x879 -# 2656| getExpr(): [ConstructorCall] call to String -# 2656| Type = [VoidType] void -# 2656| ValueCategory = prvalue -# 2657| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2657| Type = [VoidType] void -# 2657| ValueCategory = prvalue -# 2657| getQualifier(): [VariableAccess] x879 -# 2657| Type = [Struct] String -# 2657| ValueCategory = lvalue -# 2657| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2657| Conversion = [BoolConversion] conversion to bool -# 2657| Type = [BoolType] bool -# 2657| Value = [CStyleCast] 0 -# 2657| ValueCategory = prvalue -# 2658| getStmt(880): [DoStmt] do (...) ... -# 2660| getCondition(): [Literal] 0 -# 2660| Type = [IntType] int -# 2660| Value = [Literal] 0 -# 2660| ValueCategory = prvalue -# 2658| getStmt(): [BlockStmt] { ... } -# 2659| getStmt(0): [DeclStmt] declaration -# 2659| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x880 -# 2659| Type = [Struct] String -# 2659| getVariable().getInitializer(): [Initializer] initializer for x880 -# 2659| getExpr(): [ConstructorCall] call to String -# 2659| Type = [VoidType] void -# 2659| ValueCategory = prvalue -# 2660| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2660| Type = [VoidType] void -# 2660| ValueCategory = prvalue -# 2660| getQualifier(): [VariableAccess] x880 -# 2660| Type = [Struct] String -# 2660| ValueCategory = lvalue -# 2660| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2660| Conversion = [BoolConversion] conversion to bool -# 2660| Type = [BoolType] bool -# 2660| Value = [CStyleCast] 0 -# 2660| ValueCategory = prvalue -# 2661| getStmt(881): [DoStmt] do (...) ... -# 2663| getCondition(): [Literal] 0 -# 2663| Type = [IntType] int -# 2663| Value = [Literal] 0 -# 2663| ValueCategory = prvalue -# 2661| getStmt(): [BlockStmt] { ... } -# 2662| getStmt(0): [DeclStmt] declaration -# 2662| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x881 -# 2662| Type = [Struct] String -# 2662| getVariable().getInitializer(): [Initializer] initializer for x881 -# 2662| getExpr(): [ConstructorCall] call to String -# 2662| Type = [VoidType] void -# 2662| ValueCategory = prvalue -# 2663| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2663| Type = [VoidType] void -# 2663| ValueCategory = prvalue -# 2663| getQualifier(): [VariableAccess] x881 -# 2663| Type = [Struct] String -# 2663| ValueCategory = lvalue -# 2663| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2663| Conversion = [BoolConversion] conversion to bool -# 2663| Type = [BoolType] bool -# 2663| Value = [CStyleCast] 0 -# 2663| ValueCategory = prvalue -# 2664| getStmt(882): [DoStmt] do (...) ... -# 2666| getCondition(): [Literal] 0 -# 2666| Type = [IntType] int -# 2666| Value = [Literal] 0 -# 2666| ValueCategory = prvalue -# 2664| getStmt(): [BlockStmt] { ... } -# 2665| getStmt(0): [DeclStmt] declaration -# 2665| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x882 -# 2665| Type = [Struct] String -# 2665| getVariable().getInitializer(): [Initializer] initializer for x882 -# 2665| getExpr(): [ConstructorCall] call to String -# 2665| Type = [VoidType] void -# 2665| ValueCategory = prvalue -# 2666| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2666| Type = [VoidType] void -# 2666| ValueCategory = prvalue -# 2666| getQualifier(): [VariableAccess] x882 -# 2666| Type = [Struct] String -# 2666| ValueCategory = lvalue -# 2666| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2666| Conversion = [BoolConversion] conversion to bool -# 2666| Type = [BoolType] bool -# 2666| Value = [CStyleCast] 0 -# 2666| ValueCategory = prvalue -# 2667| getStmt(883): [DoStmt] do (...) ... -# 2669| getCondition(): [Literal] 0 -# 2669| Type = [IntType] int -# 2669| Value = [Literal] 0 -# 2669| ValueCategory = prvalue -# 2667| getStmt(): [BlockStmt] { ... } -# 2668| getStmt(0): [DeclStmt] declaration -# 2668| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x883 -# 2668| Type = [Struct] String -# 2668| getVariable().getInitializer(): [Initializer] initializer for x883 -# 2668| getExpr(): [ConstructorCall] call to String -# 2668| Type = [VoidType] void -# 2668| ValueCategory = prvalue -# 2669| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2669| Type = [VoidType] void -# 2669| ValueCategory = prvalue -# 2669| getQualifier(): [VariableAccess] x883 -# 2669| Type = [Struct] String -# 2669| ValueCategory = lvalue -# 2669| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2669| Conversion = [BoolConversion] conversion to bool -# 2669| Type = [BoolType] bool -# 2669| Value = [CStyleCast] 0 -# 2669| ValueCategory = prvalue -# 2670| getStmt(884): [DoStmt] do (...) ... -# 2672| getCondition(): [Literal] 0 -# 2672| Type = [IntType] int -# 2672| Value = [Literal] 0 -# 2672| ValueCategory = prvalue -# 2670| getStmt(): [BlockStmt] { ... } -# 2671| getStmt(0): [DeclStmt] declaration -# 2671| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x884 -# 2671| Type = [Struct] String -# 2671| getVariable().getInitializer(): [Initializer] initializer for x884 -# 2671| getExpr(): [ConstructorCall] call to String -# 2671| Type = [VoidType] void -# 2671| ValueCategory = prvalue -# 2672| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2672| Type = [VoidType] void -# 2672| ValueCategory = prvalue -# 2672| getQualifier(): [VariableAccess] x884 -# 2672| Type = [Struct] String -# 2672| ValueCategory = lvalue -# 2672| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2672| Conversion = [BoolConversion] conversion to bool -# 2672| Type = [BoolType] bool -# 2672| Value = [CStyleCast] 0 -# 2672| ValueCategory = prvalue -# 2673| getStmt(885): [DoStmt] do (...) ... -# 2675| getCondition(): [Literal] 0 -# 2675| Type = [IntType] int -# 2675| Value = [Literal] 0 -# 2675| ValueCategory = prvalue -# 2673| getStmt(): [BlockStmt] { ... } -# 2674| getStmt(0): [DeclStmt] declaration -# 2674| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x885 -# 2674| Type = [Struct] String -# 2674| getVariable().getInitializer(): [Initializer] initializer for x885 -# 2674| getExpr(): [ConstructorCall] call to String -# 2674| Type = [VoidType] void -# 2674| ValueCategory = prvalue -# 2675| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2675| Type = [VoidType] void -# 2675| ValueCategory = prvalue -# 2675| getQualifier(): [VariableAccess] x885 -# 2675| Type = [Struct] String -# 2675| ValueCategory = lvalue -# 2675| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2675| Conversion = [BoolConversion] conversion to bool -# 2675| Type = [BoolType] bool -# 2675| Value = [CStyleCast] 0 -# 2675| ValueCategory = prvalue -# 2676| getStmt(886): [DoStmt] do (...) ... -# 2678| getCondition(): [Literal] 0 -# 2678| Type = [IntType] int -# 2678| Value = [Literal] 0 -# 2678| ValueCategory = prvalue -# 2676| getStmt(): [BlockStmt] { ... } -# 2677| getStmt(0): [DeclStmt] declaration -# 2677| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x886 -# 2677| Type = [Struct] String -# 2677| getVariable().getInitializer(): [Initializer] initializer for x886 -# 2677| getExpr(): [ConstructorCall] call to String -# 2677| Type = [VoidType] void -# 2677| ValueCategory = prvalue -# 2678| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2678| Type = [VoidType] void -# 2678| ValueCategory = prvalue -# 2678| getQualifier(): [VariableAccess] x886 -# 2678| Type = [Struct] String -# 2678| ValueCategory = lvalue -# 2678| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2678| Conversion = [BoolConversion] conversion to bool -# 2678| Type = [BoolType] bool -# 2678| Value = [CStyleCast] 0 -# 2678| ValueCategory = prvalue -# 2679| getStmt(887): [DoStmt] do (...) ... -# 2681| getCondition(): [Literal] 0 -# 2681| Type = [IntType] int -# 2681| Value = [Literal] 0 -# 2681| ValueCategory = prvalue -# 2679| getStmt(): [BlockStmt] { ... } -# 2680| getStmt(0): [DeclStmt] declaration -# 2680| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x887 -# 2680| Type = [Struct] String -# 2680| getVariable().getInitializer(): [Initializer] initializer for x887 -# 2680| getExpr(): [ConstructorCall] call to String -# 2680| Type = [VoidType] void -# 2680| ValueCategory = prvalue -# 2681| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2681| Type = [VoidType] void -# 2681| ValueCategory = prvalue -# 2681| getQualifier(): [VariableAccess] x887 -# 2681| Type = [Struct] String -# 2681| ValueCategory = lvalue -# 2681| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2681| Conversion = [BoolConversion] conversion to bool -# 2681| Type = [BoolType] bool -# 2681| Value = [CStyleCast] 0 -# 2681| ValueCategory = prvalue -# 2682| getStmt(888): [DoStmt] do (...) ... -# 2684| getCondition(): [Literal] 0 -# 2684| Type = [IntType] int -# 2684| Value = [Literal] 0 -# 2684| ValueCategory = prvalue -# 2682| getStmt(): [BlockStmt] { ... } -# 2683| getStmt(0): [DeclStmt] declaration -# 2683| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x888 -# 2683| Type = [Struct] String -# 2683| getVariable().getInitializer(): [Initializer] initializer for x888 -# 2683| getExpr(): [ConstructorCall] call to String -# 2683| Type = [VoidType] void -# 2683| ValueCategory = prvalue -# 2684| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2684| Type = [VoidType] void -# 2684| ValueCategory = prvalue -# 2684| getQualifier(): [VariableAccess] x888 -# 2684| Type = [Struct] String -# 2684| ValueCategory = lvalue -# 2684| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2684| Conversion = [BoolConversion] conversion to bool -# 2684| Type = [BoolType] bool -# 2684| Value = [CStyleCast] 0 -# 2684| ValueCategory = prvalue -# 2685| getStmt(889): [DoStmt] do (...) ... -# 2687| getCondition(): [Literal] 0 -# 2687| Type = [IntType] int -# 2687| Value = [Literal] 0 -# 2687| ValueCategory = prvalue -# 2685| getStmt(): [BlockStmt] { ... } -# 2686| getStmt(0): [DeclStmt] declaration -# 2686| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x889 -# 2686| Type = [Struct] String -# 2686| getVariable().getInitializer(): [Initializer] initializer for x889 -# 2686| getExpr(): [ConstructorCall] call to String -# 2686| Type = [VoidType] void -# 2686| ValueCategory = prvalue -# 2687| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2687| Type = [VoidType] void -# 2687| ValueCategory = prvalue -# 2687| getQualifier(): [VariableAccess] x889 -# 2687| Type = [Struct] String -# 2687| ValueCategory = lvalue -# 2687| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2687| Conversion = [BoolConversion] conversion to bool -# 2687| Type = [BoolType] bool -# 2687| Value = [CStyleCast] 0 -# 2687| ValueCategory = prvalue -# 2688| getStmt(890): [DoStmt] do (...) ... -# 2690| getCondition(): [Literal] 0 -# 2690| Type = [IntType] int -# 2690| Value = [Literal] 0 -# 2690| ValueCategory = prvalue -# 2688| getStmt(): [BlockStmt] { ... } -# 2689| getStmt(0): [DeclStmt] declaration -# 2689| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x890 -# 2689| Type = [Struct] String -# 2689| getVariable().getInitializer(): [Initializer] initializer for x890 -# 2689| getExpr(): [ConstructorCall] call to String -# 2689| Type = [VoidType] void -# 2689| ValueCategory = prvalue -# 2690| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2690| Type = [VoidType] void -# 2690| ValueCategory = prvalue -# 2690| getQualifier(): [VariableAccess] x890 -# 2690| Type = [Struct] String -# 2690| ValueCategory = lvalue -# 2690| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2690| Conversion = [BoolConversion] conversion to bool -# 2690| Type = [BoolType] bool -# 2690| Value = [CStyleCast] 0 -# 2690| ValueCategory = prvalue -# 2691| getStmt(891): [DoStmt] do (...) ... -# 2693| getCondition(): [Literal] 0 -# 2693| Type = [IntType] int -# 2693| Value = [Literal] 0 -# 2693| ValueCategory = prvalue -# 2691| getStmt(): [BlockStmt] { ... } -# 2692| getStmt(0): [DeclStmt] declaration -# 2692| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x891 -# 2692| Type = [Struct] String -# 2692| getVariable().getInitializer(): [Initializer] initializer for x891 -# 2692| getExpr(): [ConstructorCall] call to String -# 2692| Type = [VoidType] void -# 2692| ValueCategory = prvalue -# 2693| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2693| Type = [VoidType] void -# 2693| ValueCategory = prvalue -# 2693| getQualifier(): [VariableAccess] x891 -# 2693| Type = [Struct] String -# 2693| ValueCategory = lvalue -# 2693| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2693| Conversion = [BoolConversion] conversion to bool -# 2693| Type = [BoolType] bool -# 2693| Value = [CStyleCast] 0 -# 2693| ValueCategory = prvalue -# 2694| getStmt(892): [DoStmt] do (...) ... -# 2696| getCondition(): [Literal] 0 -# 2696| Type = [IntType] int -# 2696| Value = [Literal] 0 -# 2696| ValueCategory = prvalue -# 2694| getStmt(): [BlockStmt] { ... } -# 2695| getStmt(0): [DeclStmt] declaration -# 2695| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x892 -# 2695| Type = [Struct] String -# 2695| getVariable().getInitializer(): [Initializer] initializer for x892 -# 2695| getExpr(): [ConstructorCall] call to String -# 2695| Type = [VoidType] void -# 2695| ValueCategory = prvalue -# 2696| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2696| Type = [VoidType] void -# 2696| ValueCategory = prvalue -# 2696| getQualifier(): [VariableAccess] x892 -# 2696| Type = [Struct] String -# 2696| ValueCategory = lvalue -# 2696| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2696| Conversion = [BoolConversion] conversion to bool -# 2696| Type = [BoolType] bool -# 2696| Value = [CStyleCast] 0 -# 2696| ValueCategory = prvalue -# 2697| getStmt(893): [DoStmt] do (...) ... -# 2699| getCondition(): [Literal] 0 -# 2699| Type = [IntType] int -# 2699| Value = [Literal] 0 -# 2699| ValueCategory = prvalue -# 2697| getStmt(): [BlockStmt] { ... } -# 2698| getStmt(0): [DeclStmt] declaration -# 2698| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x893 -# 2698| Type = [Struct] String -# 2698| getVariable().getInitializer(): [Initializer] initializer for x893 -# 2698| getExpr(): [ConstructorCall] call to String -# 2698| Type = [VoidType] void -# 2698| ValueCategory = prvalue -# 2699| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2699| Type = [VoidType] void -# 2699| ValueCategory = prvalue -# 2699| getQualifier(): [VariableAccess] x893 -# 2699| Type = [Struct] String -# 2699| ValueCategory = lvalue -# 2699| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2699| Conversion = [BoolConversion] conversion to bool -# 2699| Type = [BoolType] bool -# 2699| Value = [CStyleCast] 0 -# 2699| ValueCategory = prvalue -# 2700| getStmt(894): [DoStmt] do (...) ... -# 2702| getCondition(): [Literal] 0 -# 2702| Type = [IntType] int -# 2702| Value = [Literal] 0 -# 2702| ValueCategory = prvalue -# 2700| getStmt(): [BlockStmt] { ... } -# 2701| getStmt(0): [DeclStmt] declaration -# 2701| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x894 -# 2701| Type = [Struct] String -# 2701| getVariable().getInitializer(): [Initializer] initializer for x894 -# 2701| getExpr(): [ConstructorCall] call to String -# 2701| Type = [VoidType] void -# 2701| ValueCategory = prvalue -# 2702| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2702| Type = [VoidType] void -# 2702| ValueCategory = prvalue -# 2702| getQualifier(): [VariableAccess] x894 -# 2702| Type = [Struct] String -# 2702| ValueCategory = lvalue -# 2702| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2702| Conversion = [BoolConversion] conversion to bool -# 2702| Type = [BoolType] bool -# 2702| Value = [CStyleCast] 0 -# 2702| ValueCategory = prvalue -# 2703| getStmt(895): [DoStmt] do (...) ... -# 2705| getCondition(): [Literal] 0 -# 2705| Type = [IntType] int -# 2705| Value = [Literal] 0 -# 2705| ValueCategory = prvalue -# 2703| getStmt(): [BlockStmt] { ... } -# 2704| getStmt(0): [DeclStmt] declaration -# 2704| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x895 -# 2704| Type = [Struct] String -# 2704| getVariable().getInitializer(): [Initializer] initializer for x895 -# 2704| getExpr(): [ConstructorCall] call to String -# 2704| Type = [VoidType] void -# 2704| ValueCategory = prvalue -# 2705| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2705| Type = [VoidType] void -# 2705| ValueCategory = prvalue -# 2705| getQualifier(): [VariableAccess] x895 -# 2705| Type = [Struct] String -# 2705| ValueCategory = lvalue -# 2705| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2705| Conversion = [BoolConversion] conversion to bool -# 2705| Type = [BoolType] bool -# 2705| Value = [CStyleCast] 0 -# 2705| ValueCategory = prvalue -# 2706| getStmt(896): [DoStmt] do (...) ... -# 2708| getCondition(): [Literal] 0 -# 2708| Type = [IntType] int -# 2708| Value = [Literal] 0 -# 2708| ValueCategory = prvalue -# 2706| getStmt(): [BlockStmt] { ... } -# 2707| getStmt(0): [DeclStmt] declaration -# 2707| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x896 -# 2707| Type = [Struct] String -# 2707| getVariable().getInitializer(): [Initializer] initializer for x896 -# 2707| getExpr(): [ConstructorCall] call to String -# 2707| Type = [VoidType] void -# 2707| ValueCategory = prvalue -# 2708| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2708| Type = [VoidType] void -# 2708| ValueCategory = prvalue -# 2708| getQualifier(): [VariableAccess] x896 -# 2708| Type = [Struct] String -# 2708| ValueCategory = lvalue -# 2708| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2708| Conversion = [BoolConversion] conversion to bool -# 2708| Type = [BoolType] bool -# 2708| Value = [CStyleCast] 0 -# 2708| ValueCategory = prvalue -# 2709| getStmt(897): [DoStmt] do (...) ... -# 2711| getCondition(): [Literal] 0 -# 2711| Type = [IntType] int -# 2711| Value = [Literal] 0 -# 2711| ValueCategory = prvalue -# 2709| getStmt(): [BlockStmt] { ... } -# 2710| getStmt(0): [DeclStmt] declaration -# 2710| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x897 -# 2710| Type = [Struct] String -# 2710| getVariable().getInitializer(): [Initializer] initializer for x897 -# 2710| getExpr(): [ConstructorCall] call to String -# 2710| Type = [VoidType] void -# 2710| ValueCategory = prvalue -# 2711| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2711| Type = [VoidType] void -# 2711| ValueCategory = prvalue -# 2711| getQualifier(): [VariableAccess] x897 -# 2711| Type = [Struct] String -# 2711| ValueCategory = lvalue -# 2711| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2711| Conversion = [BoolConversion] conversion to bool -# 2711| Type = [BoolType] bool -# 2711| Value = [CStyleCast] 0 -# 2711| ValueCategory = prvalue -# 2712| getStmt(898): [DoStmt] do (...) ... -# 2714| getCondition(): [Literal] 0 -# 2714| Type = [IntType] int -# 2714| Value = [Literal] 0 -# 2714| ValueCategory = prvalue -# 2712| getStmt(): [BlockStmt] { ... } -# 2713| getStmt(0): [DeclStmt] declaration -# 2713| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x898 -# 2713| Type = [Struct] String -# 2713| getVariable().getInitializer(): [Initializer] initializer for x898 -# 2713| getExpr(): [ConstructorCall] call to String -# 2713| Type = [VoidType] void -# 2713| ValueCategory = prvalue -# 2714| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2714| Type = [VoidType] void -# 2714| ValueCategory = prvalue -# 2714| getQualifier(): [VariableAccess] x898 -# 2714| Type = [Struct] String -# 2714| ValueCategory = lvalue -# 2714| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2714| Conversion = [BoolConversion] conversion to bool -# 2714| Type = [BoolType] bool -# 2714| Value = [CStyleCast] 0 -# 2714| ValueCategory = prvalue -# 2715| getStmt(899): [DoStmt] do (...) ... -# 2717| getCondition(): [Literal] 0 -# 2717| Type = [IntType] int -# 2717| Value = [Literal] 0 -# 2717| ValueCategory = prvalue -# 2715| getStmt(): [BlockStmt] { ... } -# 2716| getStmt(0): [DeclStmt] declaration -# 2716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x899 -# 2716| Type = [Struct] String -# 2716| getVariable().getInitializer(): [Initializer] initializer for x899 -# 2716| getExpr(): [ConstructorCall] call to String -# 2716| Type = [VoidType] void -# 2716| ValueCategory = prvalue -# 2717| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2717| Type = [VoidType] void -# 2717| ValueCategory = prvalue -# 2717| getQualifier(): [VariableAccess] x899 -# 2717| Type = [Struct] String -# 2717| ValueCategory = lvalue -# 2717| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2717| Conversion = [BoolConversion] conversion to bool -# 2717| Type = [BoolType] bool -# 2717| Value = [CStyleCast] 0 -# 2717| ValueCategory = prvalue -# 2718| getStmt(900): [DoStmt] do (...) ... -# 2720| getCondition(): [Literal] 0 -# 2720| Type = [IntType] int -# 2720| Value = [Literal] 0 -# 2720| ValueCategory = prvalue -# 2718| getStmt(): [BlockStmt] { ... } -# 2719| getStmt(0): [DeclStmt] declaration -# 2719| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x900 -# 2719| Type = [Struct] String -# 2719| getVariable().getInitializer(): [Initializer] initializer for x900 -# 2719| getExpr(): [ConstructorCall] call to String -# 2719| Type = [VoidType] void -# 2719| ValueCategory = prvalue -# 2720| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2720| Type = [VoidType] void -# 2720| ValueCategory = prvalue -# 2720| getQualifier(): [VariableAccess] x900 -# 2720| Type = [Struct] String -# 2720| ValueCategory = lvalue -# 2720| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2720| Conversion = [BoolConversion] conversion to bool -# 2720| Type = [BoolType] bool -# 2720| Value = [CStyleCast] 0 -# 2720| ValueCategory = prvalue -# 2721| getStmt(901): [DoStmt] do (...) ... -# 2723| getCondition(): [Literal] 0 -# 2723| Type = [IntType] int -# 2723| Value = [Literal] 0 -# 2723| ValueCategory = prvalue -# 2721| getStmt(): [BlockStmt] { ... } -# 2722| getStmt(0): [DeclStmt] declaration -# 2722| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x901 -# 2722| Type = [Struct] String -# 2722| getVariable().getInitializer(): [Initializer] initializer for x901 -# 2722| getExpr(): [ConstructorCall] call to String -# 2722| Type = [VoidType] void -# 2722| ValueCategory = prvalue -# 2723| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2723| Type = [VoidType] void -# 2723| ValueCategory = prvalue -# 2723| getQualifier(): [VariableAccess] x901 -# 2723| Type = [Struct] String -# 2723| ValueCategory = lvalue -# 2723| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2723| Conversion = [BoolConversion] conversion to bool -# 2723| Type = [BoolType] bool -# 2723| Value = [CStyleCast] 0 -# 2723| ValueCategory = prvalue -# 2724| getStmt(902): [DoStmt] do (...) ... -# 2726| getCondition(): [Literal] 0 -# 2726| Type = [IntType] int -# 2726| Value = [Literal] 0 -# 2726| ValueCategory = prvalue -# 2724| getStmt(): [BlockStmt] { ... } -# 2725| getStmt(0): [DeclStmt] declaration -# 2725| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x902 -# 2725| Type = [Struct] String -# 2725| getVariable().getInitializer(): [Initializer] initializer for x902 -# 2725| getExpr(): [ConstructorCall] call to String -# 2725| Type = [VoidType] void -# 2725| ValueCategory = prvalue -# 2726| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2726| Type = [VoidType] void -# 2726| ValueCategory = prvalue -# 2726| getQualifier(): [VariableAccess] x902 -# 2726| Type = [Struct] String -# 2726| ValueCategory = lvalue -# 2726| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2726| Conversion = [BoolConversion] conversion to bool -# 2726| Type = [BoolType] bool -# 2726| Value = [CStyleCast] 0 -# 2726| ValueCategory = prvalue -# 2727| getStmt(903): [DoStmt] do (...) ... -# 2729| getCondition(): [Literal] 0 -# 2729| Type = [IntType] int -# 2729| Value = [Literal] 0 -# 2729| ValueCategory = prvalue -# 2727| getStmt(): [BlockStmt] { ... } -# 2728| getStmt(0): [DeclStmt] declaration -# 2728| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x903 -# 2728| Type = [Struct] String -# 2728| getVariable().getInitializer(): [Initializer] initializer for x903 -# 2728| getExpr(): [ConstructorCall] call to String -# 2728| Type = [VoidType] void -# 2728| ValueCategory = prvalue -# 2729| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2729| Type = [VoidType] void -# 2729| ValueCategory = prvalue -# 2729| getQualifier(): [VariableAccess] x903 -# 2729| Type = [Struct] String -# 2729| ValueCategory = lvalue -# 2729| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2729| Conversion = [BoolConversion] conversion to bool -# 2729| Type = [BoolType] bool -# 2729| Value = [CStyleCast] 0 -# 2729| ValueCategory = prvalue -# 2730| getStmt(904): [DoStmt] do (...) ... -# 2732| getCondition(): [Literal] 0 -# 2732| Type = [IntType] int -# 2732| Value = [Literal] 0 -# 2732| ValueCategory = prvalue -# 2730| getStmt(): [BlockStmt] { ... } -# 2731| getStmt(0): [DeclStmt] declaration -# 2731| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x904 -# 2731| Type = [Struct] String -# 2731| getVariable().getInitializer(): [Initializer] initializer for x904 -# 2731| getExpr(): [ConstructorCall] call to String -# 2731| Type = [VoidType] void -# 2731| ValueCategory = prvalue -# 2732| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2732| Type = [VoidType] void -# 2732| ValueCategory = prvalue -# 2732| getQualifier(): [VariableAccess] x904 -# 2732| Type = [Struct] String -# 2732| ValueCategory = lvalue -# 2732| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2732| Conversion = [BoolConversion] conversion to bool -# 2732| Type = [BoolType] bool -# 2732| Value = [CStyleCast] 0 -# 2732| ValueCategory = prvalue -# 2733| getStmt(905): [DoStmt] do (...) ... -# 2735| getCondition(): [Literal] 0 -# 2735| Type = [IntType] int -# 2735| Value = [Literal] 0 -# 2735| ValueCategory = prvalue -# 2733| getStmt(): [BlockStmt] { ... } -# 2734| getStmt(0): [DeclStmt] declaration -# 2734| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x905 -# 2734| Type = [Struct] String -# 2734| getVariable().getInitializer(): [Initializer] initializer for x905 -# 2734| getExpr(): [ConstructorCall] call to String -# 2734| Type = [VoidType] void -# 2734| ValueCategory = prvalue -# 2735| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2735| Type = [VoidType] void -# 2735| ValueCategory = prvalue -# 2735| getQualifier(): [VariableAccess] x905 -# 2735| Type = [Struct] String -# 2735| ValueCategory = lvalue -# 2735| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2735| Conversion = [BoolConversion] conversion to bool -# 2735| Type = [BoolType] bool -# 2735| Value = [CStyleCast] 0 -# 2735| ValueCategory = prvalue -# 2736| getStmt(906): [DoStmt] do (...) ... -# 2738| getCondition(): [Literal] 0 -# 2738| Type = [IntType] int -# 2738| Value = [Literal] 0 -# 2738| ValueCategory = prvalue -# 2736| getStmt(): [BlockStmt] { ... } -# 2737| getStmt(0): [DeclStmt] declaration -# 2737| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x906 -# 2737| Type = [Struct] String -# 2737| getVariable().getInitializer(): [Initializer] initializer for x906 -# 2737| getExpr(): [ConstructorCall] call to String -# 2737| Type = [VoidType] void -# 2737| ValueCategory = prvalue -# 2738| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2738| Type = [VoidType] void -# 2738| ValueCategory = prvalue -# 2738| getQualifier(): [VariableAccess] x906 -# 2738| Type = [Struct] String -# 2738| ValueCategory = lvalue -# 2738| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2738| Conversion = [BoolConversion] conversion to bool -# 2738| Type = [BoolType] bool -# 2738| Value = [CStyleCast] 0 -# 2738| ValueCategory = prvalue -# 2739| getStmt(907): [DoStmt] do (...) ... -# 2741| getCondition(): [Literal] 0 -# 2741| Type = [IntType] int -# 2741| Value = [Literal] 0 -# 2741| ValueCategory = prvalue -# 2739| getStmt(): [BlockStmt] { ... } -# 2740| getStmt(0): [DeclStmt] declaration -# 2740| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x907 -# 2740| Type = [Struct] String -# 2740| getVariable().getInitializer(): [Initializer] initializer for x907 -# 2740| getExpr(): [ConstructorCall] call to String -# 2740| Type = [VoidType] void -# 2740| ValueCategory = prvalue -# 2741| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2741| Type = [VoidType] void -# 2741| ValueCategory = prvalue -# 2741| getQualifier(): [VariableAccess] x907 -# 2741| Type = [Struct] String -# 2741| ValueCategory = lvalue -# 2741| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2741| Conversion = [BoolConversion] conversion to bool -# 2741| Type = [BoolType] bool -# 2741| Value = [CStyleCast] 0 -# 2741| ValueCategory = prvalue -# 2742| getStmt(908): [DoStmt] do (...) ... -# 2744| getCondition(): [Literal] 0 -# 2744| Type = [IntType] int -# 2744| Value = [Literal] 0 -# 2744| ValueCategory = prvalue -# 2742| getStmt(): [BlockStmt] { ... } -# 2743| getStmt(0): [DeclStmt] declaration -# 2743| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x908 -# 2743| Type = [Struct] String -# 2743| getVariable().getInitializer(): [Initializer] initializer for x908 -# 2743| getExpr(): [ConstructorCall] call to String -# 2743| Type = [VoidType] void -# 2743| ValueCategory = prvalue -# 2744| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2744| Type = [VoidType] void -# 2744| ValueCategory = prvalue -# 2744| getQualifier(): [VariableAccess] x908 -# 2744| Type = [Struct] String -# 2744| ValueCategory = lvalue -# 2744| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2744| Conversion = [BoolConversion] conversion to bool -# 2744| Type = [BoolType] bool -# 2744| Value = [CStyleCast] 0 -# 2744| ValueCategory = prvalue -# 2745| getStmt(909): [DoStmt] do (...) ... -# 2747| getCondition(): [Literal] 0 -# 2747| Type = [IntType] int -# 2747| Value = [Literal] 0 -# 2747| ValueCategory = prvalue -# 2745| getStmt(): [BlockStmt] { ... } -# 2746| getStmt(0): [DeclStmt] declaration -# 2746| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x909 -# 2746| Type = [Struct] String -# 2746| getVariable().getInitializer(): [Initializer] initializer for x909 -# 2746| getExpr(): [ConstructorCall] call to String -# 2746| Type = [VoidType] void -# 2746| ValueCategory = prvalue -# 2747| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2747| Type = [VoidType] void -# 2747| ValueCategory = prvalue -# 2747| getQualifier(): [VariableAccess] x909 -# 2747| Type = [Struct] String -# 2747| ValueCategory = lvalue -# 2747| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2747| Conversion = [BoolConversion] conversion to bool -# 2747| Type = [BoolType] bool -# 2747| Value = [CStyleCast] 0 -# 2747| ValueCategory = prvalue -# 2748| getStmt(910): [DoStmt] do (...) ... -# 2750| getCondition(): [Literal] 0 -# 2750| Type = [IntType] int -# 2750| Value = [Literal] 0 -# 2750| ValueCategory = prvalue -# 2748| getStmt(): [BlockStmt] { ... } -# 2749| getStmt(0): [DeclStmt] declaration -# 2749| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x910 -# 2749| Type = [Struct] String -# 2749| getVariable().getInitializer(): [Initializer] initializer for x910 -# 2749| getExpr(): [ConstructorCall] call to String -# 2749| Type = [VoidType] void -# 2749| ValueCategory = prvalue -# 2750| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2750| Type = [VoidType] void -# 2750| ValueCategory = prvalue -# 2750| getQualifier(): [VariableAccess] x910 -# 2750| Type = [Struct] String -# 2750| ValueCategory = lvalue -# 2750| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2750| Conversion = [BoolConversion] conversion to bool -# 2750| Type = [BoolType] bool -# 2750| Value = [CStyleCast] 0 -# 2750| ValueCategory = prvalue -# 2751| getStmt(911): [DoStmt] do (...) ... -# 2753| getCondition(): [Literal] 0 -# 2753| Type = [IntType] int -# 2753| Value = [Literal] 0 -# 2753| ValueCategory = prvalue -# 2751| getStmt(): [BlockStmt] { ... } -# 2752| getStmt(0): [DeclStmt] declaration -# 2752| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x911 -# 2752| Type = [Struct] String -# 2752| getVariable().getInitializer(): [Initializer] initializer for x911 -# 2752| getExpr(): [ConstructorCall] call to String -# 2752| Type = [VoidType] void -# 2752| ValueCategory = prvalue -# 2753| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2753| Type = [VoidType] void -# 2753| ValueCategory = prvalue -# 2753| getQualifier(): [VariableAccess] x911 -# 2753| Type = [Struct] String -# 2753| ValueCategory = lvalue -# 2753| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2753| Conversion = [BoolConversion] conversion to bool -# 2753| Type = [BoolType] bool -# 2753| Value = [CStyleCast] 0 -# 2753| ValueCategory = prvalue -# 2754| getStmt(912): [DoStmt] do (...) ... -# 2756| getCondition(): [Literal] 0 -# 2756| Type = [IntType] int -# 2756| Value = [Literal] 0 -# 2756| ValueCategory = prvalue -# 2754| getStmt(): [BlockStmt] { ... } -# 2755| getStmt(0): [DeclStmt] declaration -# 2755| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x912 -# 2755| Type = [Struct] String -# 2755| getVariable().getInitializer(): [Initializer] initializer for x912 -# 2755| getExpr(): [ConstructorCall] call to String -# 2755| Type = [VoidType] void -# 2755| ValueCategory = prvalue -# 2756| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2756| Type = [VoidType] void -# 2756| ValueCategory = prvalue -# 2756| getQualifier(): [VariableAccess] x912 -# 2756| Type = [Struct] String -# 2756| ValueCategory = lvalue -# 2756| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2756| Conversion = [BoolConversion] conversion to bool -# 2756| Type = [BoolType] bool -# 2756| Value = [CStyleCast] 0 -# 2756| ValueCategory = prvalue -# 2757| getStmt(913): [DoStmt] do (...) ... -# 2759| getCondition(): [Literal] 0 -# 2759| Type = [IntType] int -# 2759| Value = [Literal] 0 -# 2759| ValueCategory = prvalue -# 2757| getStmt(): [BlockStmt] { ... } -# 2758| getStmt(0): [DeclStmt] declaration -# 2758| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x913 -# 2758| Type = [Struct] String -# 2758| getVariable().getInitializer(): [Initializer] initializer for x913 -# 2758| getExpr(): [ConstructorCall] call to String -# 2758| Type = [VoidType] void -# 2758| ValueCategory = prvalue -# 2759| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2759| Type = [VoidType] void -# 2759| ValueCategory = prvalue -# 2759| getQualifier(): [VariableAccess] x913 -# 2759| Type = [Struct] String -# 2759| ValueCategory = lvalue -# 2759| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2759| Conversion = [BoolConversion] conversion to bool -# 2759| Type = [BoolType] bool -# 2759| Value = [CStyleCast] 0 -# 2759| ValueCategory = prvalue -# 2760| getStmt(914): [DoStmt] do (...) ... -# 2762| getCondition(): [Literal] 0 -# 2762| Type = [IntType] int -# 2762| Value = [Literal] 0 -# 2762| ValueCategory = prvalue -# 2760| getStmt(): [BlockStmt] { ... } -# 2761| getStmt(0): [DeclStmt] declaration -# 2761| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x914 -# 2761| Type = [Struct] String -# 2761| getVariable().getInitializer(): [Initializer] initializer for x914 -# 2761| getExpr(): [ConstructorCall] call to String -# 2761| Type = [VoidType] void -# 2761| ValueCategory = prvalue -# 2762| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2762| Type = [VoidType] void -# 2762| ValueCategory = prvalue -# 2762| getQualifier(): [VariableAccess] x914 -# 2762| Type = [Struct] String -# 2762| ValueCategory = lvalue -# 2762| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2762| Conversion = [BoolConversion] conversion to bool -# 2762| Type = [BoolType] bool -# 2762| Value = [CStyleCast] 0 -# 2762| ValueCategory = prvalue -# 2763| getStmt(915): [DoStmt] do (...) ... -# 2765| getCondition(): [Literal] 0 -# 2765| Type = [IntType] int -# 2765| Value = [Literal] 0 -# 2765| ValueCategory = prvalue -# 2763| getStmt(): [BlockStmt] { ... } -# 2764| getStmt(0): [DeclStmt] declaration -# 2764| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x915 -# 2764| Type = [Struct] String -# 2764| getVariable().getInitializer(): [Initializer] initializer for x915 -# 2764| getExpr(): [ConstructorCall] call to String -# 2764| Type = [VoidType] void -# 2764| ValueCategory = prvalue -# 2765| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2765| Type = [VoidType] void -# 2765| ValueCategory = prvalue -# 2765| getQualifier(): [VariableAccess] x915 -# 2765| Type = [Struct] String -# 2765| ValueCategory = lvalue -# 2765| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2765| Conversion = [BoolConversion] conversion to bool -# 2765| Type = [BoolType] bool -# 2765| Value = [CStyleCast] 0 -# 2765| ValueCategory = prvalue -# 2766| getStmt(916): [DoStmt] do (...) ... -# 2768| getCondition(): [Literal] 0 -# 2768| Type = [IntType] int -# 2768| Value = [Literal] 0 -# 2768| ValueCategory = prvalue -# 2766| getStmt(): [BlockStmt] { ... } -# 2767| getStmt(0): [DeclStmt] declaration -# 2767| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x916 -# 2767| Type = [Struct] String -# 2767| getVariable().getInitializer(): [Initializer] initializer for x916 -# 2767| getExpr(): [ConstructorCall] call to String -# 2767| Type = [VoidType] void -# 2767| ValueCategory = prvalue -# 2768| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2768| Type = [VoidType] void -# 2768| ValueCategory = prvalue -# 2768| getQualifier(): [VariableAccess] x916 -# 2768| Type = [Struct] String -# 2768| ValueCategory = lvalue -# 2768| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2768| Conversion = [BoolConversion] conversion to bool -# 2768| Type = [BoolType] bool -# 2768| Value = [CStyleCast] 0 -# 2768| ValueCategory = prvalue -# 2769| getStmt(917): [DoStmt] do (...) ... -# 2771| getCondition(): [Literal] 0 -# 2771| Type = [IntType] int -# 2771| Value = [Literal] 0 -# 2771| ValueCategory = prvalue -# 2769| getStmt(): [BlockStmt] { ... } -# 2770| getStmt(0): [DeclStmt] declaration -# 2770| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x917 -# 2770| Type = [Struct] String -# 2770| getVariable().getInitializer(): [Initializer] initializer for x917 -# 2770| getExpr(): [ConstructorCall] call to String -# 2770| Type = [VoidType] void -# 2770| ValueCategory = prvalue -# 2771| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2771| Type = [VoidType] void -# 2771| ValueCategory = prvalue -# 2771| getQualifier(): [VariableAccess] x917 -# 2771| Type = [Struct] String -# 2771| ValueCategory = lvalue -# 2771| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2771| Conversion = [BoolConversion] conversion to bool -# 2771| Type = [BoolType] bool -# 2771| Value = [CStyleCast] 0 -# 2771| ValueCategory = prvalue -# 2772| getStmt(918): [DoStmt] do (...) ... -# 2774| getCondition(): [Literal] 0 -# 2774| Type = [IntType] int -# 2774| Value = [Literal] 0 -# 2774| ValueCategory = prvalue -# 2772| getStmt(): [BlockStmt] { ... } -# 2773| getStmt(0): [DeclStmt] declaration -# 2773| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x918 -# 2773| Type = [Struct] String -# 2773| getVariable().getInitializer(): [Initializer] initializer for x918 -# 2773| getExpr(): [ConstructorCall] call to String -# 2773| Type = [VoidType] void -# 2773| ValueCategory = prvalue -# 2774| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2774| Type = [VoidType] void -# 2774| ValueCategory = prvalue -# 2774| getQualifier(): [VariableAccess] x918 -# 2774| Type = [Struct] String -# 2774| ValueCategory = lvalue -# 2774| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2774| Conversion = [BoolConversion] conversion to bool -# 2774| Type = [BoolType] bool -# 2774| Value = [CStyleCast] 0 -# 2774| ValueCategory = prvalue -# 2775| getStmt(919): [DoStmt] do (...) ... -# 2777| getCondition(): [Literal] 0 -# 2777| Type = [IntType] int -# 2777| Value = [Literal] 0 -# 2777| ValueCategory = prvalue -# 2775| getStmt(): [BlockStmt] { ... } -# 2776| getStmt(0): [DeclStmt] declaration -# 2776| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x919 -# 2776| Type = [Struct] String -# 2776| getVariable().getInitializer(): [Initializer] initializer for x919 -# 2776| getExpr(): [ConstructorCall] call to String -# 2776| Type = [VoidType] void -# 2776| ValueCategory = prvalue -# 2777| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2777| Type = [VoidType] void -# 2777| ValueCategory = prvalue -# 2777| getQualifier(): [VariableAccess] x919 -# 2777| Type = [Struct] String -# 2777| ValueCategory = lvalue -# 2777| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2777| Conversion = [BoolConversion] conversion to bool -# 2777| Type = [BoolType] bool -# 2777| Value = [CStyleCast] 0 -# 2777| ValueCategory = prvalue -# 2778| getStmt(920): [DoStmt] do (...) ... -# 2780| getCondition(): [Literal] 0 -# 2780| Type = [IntType] int -# 2780| Value = [Literal] 0 -# 2780| ValueCategory = prvalue -# 2778| getStmt(): [BlockStmt] { ... } -# 2779| getStmt(0): [DeclStmt] declaration -# 2779| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x920 -# 2779| Type = [Struct] String -# 2779| getVariable().getInitializer(): [Initializer] initializer for x920 -# 2779| getExpr(): [ConstructorCall] call to String -# 2779| Type = [VoidType] void -# 2779| ValueCategory = prvalue -# 2780| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2780| Type = [VoidType] void -# 2780| ValueCategory = prvalue -# 2780| getQualifier(): [VariableAccess] x920 -# 2780| Type = [Struct] String -# 2780| ValueCategory = lvalue -# 2780| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2780| Conversion = [BoolConversion] conversion to bool -# 2780| Type = [BoolType] bool -# 2780| Value = [CStyleCast] 0 -# 2780| ValueCategory = prvalue -# 2781| getStmt(921): [DoStmt] do (...) ... -# 2783| getCondition(): [Literal] 0 -# 2783| Type = [IntType] int -# 2783| Value = [Literal] 0 -# 2783| ValueCategory = prvalue -# 2781| getStmt(): [BlockStmt] { ... } -# 2782| getStmt(0): [DeclStmt] declaration -# 2782| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x921 -# 2782| Type = [Struct] String -# 2782| getVariable().getInitializer(): [Initializer] initializer for x921 -# 2782| getExpr(): [ConstructorCall] call to String -# 2782| Type = [VoidType] void -# 2782| ValueCategory = prvalue -# 2783| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2783| Type = [VoidType] void -# 2783| ValueCategory = prvalue -# 2783| getQualifier(): [VariableAccess] x921 -# 2783| Type = [Struct] String -# 2783| ValueCategory = lvalue -# 2783| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2783| Conversion = [BoolConversion] conversion to bool -# 2783| Type = [BoolType] bool -# 2783| Value = [CStyleCast] 0 -# 2783| ValueCategory = prvalue -# 2784| getStmt(922): [DoStmt] do (...) ... -# 2786| getCondition(): [Literal] 0 -# 2786| Type = [IntType] int -# 2786| Value = [Literal] 0 -# 2786| ValueCategory = prvalue -# 2784| getStmt(): [BlockStmt] { ... } -# 2785| getStmt(0): [DeclStmt] declaration -# 2785| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x922 -# 2785| Type = [Struct] String -# 2785| getVariable().getInitializer(): [Initializer] initializer for x922 -# 2785| getExpr(): [ConstructorCall] call to String -# 2785| Type = [VoidType] void -# 2785| ValueCategory = prvalue -# 2786| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2786| Type = [VoidType] void -# 2786| ValueCategory = prvalue -# 2786| getQualifier(): [VariableAccess] x922 -# 2786| Type = [Struct] String -# 2786| ValueCategory = lvalue -# 2786| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2786| Conversion = [BoolConversion] conversion to bool -# 2786| Type = [BoolType] bool -# 2786| Value = [CStyleCast] 0 -# 2786| ValueCategory = prvalue -# 2787| getStmt(923): [DoStmt] do (...) ... -# 2789| getCondition(): [Literal] 0 -# 2789| Type = [IntType] int -# 2789| Value = [Literal] 0 -# 2789| ValueCategory = prvalue -# 2787| getStmt(): [BlockStmt] { ... } -# 2788| getStmt(0): [DeclStmt] declaration -# 2788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x923 -# 2788| Type = [Struct] String -# 2788| getVariable().getInitializer(): [Initializer] initializer for x923 -# 2788| getExpr(): [ConstructorCall] call to String -# 2788| Type = [VoidType] void -# 2788| ValueCategory = prvalue -# 2789| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2789| Type = [VoidType] void -# 2789| ValueCategory = prvalue -# 2789| getQualifier(): [VariableAccess] x923 -# 2789| Type = [Struct] String -# 2789| ValueCategory = lvalue -# 2789| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2789| Conversion = [BoolConversion] conversion to bool -# 2789| Type = [BoolType] bool -# 2789| Value = [CStyleCast] 0 -# 2789| ValueCategory = prvalue -# 2790| getStmt(924): [DoStmt] do (...) ... -# 2792| getCondition(): [Literal] 0 -# 2792| Type = [IntType] int -# 2792| Value = [Literal] 0 -# 2792| ValueCategory = prvalue -# 2790| getStmt(): [BlockStmt] { ... } -# 2791| getStmt(0): [DeclStmt] declaration -# 2791| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x924 -# 2791| Type = [Struct] String -# 2791| getVariable().getInitializer(): [Initializer] initializer for x924 -# 2791| getExpr(): [ConstructorCall] call to String -# 2791| Type = [VoidType] void -# 2791| ValueCategory = prvalue -# 2792| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2792| Type = [VoidType] void -# 2792| ValueCategory = prvalue -# 2792| getQualifier(): [VariableAccess] x924 -# 2792| Type = [Struct] String -# 2792| ValueCategory = lvalue -# 2792| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2792| Conversion = [BoolConversion] conversion to bool -# 2792| Type = [BoolType] bool -# 2792| Value = [CStyleCast] 0 -# 2792| ValueCategory = prvalue -# 2793| getStmt(925): [DoStmt] do (...) ... -# 2795| getCondition(): [Literal] 0 -# 2795| Type = [IntType] int -# 2795| Value = [Literal] 0 -# 2795| ValueCategory = prvalue -# 2793| getStmt(): [BlockStmt] { ... } -# 2794| getStmt(0): [DeclStmt] declaration -# 2794| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x925 -# 2794| Type = [Struct] String -# 2794| getVariable().getInitializer(): [Initializer] initializer for x925 -# 2794| getExpr(): [ConstructorCall] call to String -# 2794| Type = [VoidType] void -# 2794| ValueCategory = prvalue -# 2795| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2795| Type = [VoidType] void -# 2795| ValueCategory = prvalue -# 2795| getQualifier(): [VariableAccess] x925 -# 2795| Type = [Struct] String -# 2795| ValueCategory = lvalue -# 2795| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2795| Conversion = [BoolConversion] conversion to bool -# 2795| Type = [BoolType] bool -# 2795| Value = [CStyleCast] 0 -# 2795| ValueCategory = prvalue -# 2796| getStmt(926): [DoStmt] do (...) ... -# 2798| getCondition(): [Literal] 0 -# 2798| Type = [IntType] int -# 2798| Value = [Literal] 0 -# 2798| ValueCategory = prvalue -# 2796| getStmt(): [BlockStmt] { ... } -# 2797| getStmt(0): [DeclStmt] declaration -# 2797| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x926 -# 2797| Type = [Struct] String -# 2797| getVariable().getInitializer(): [Initializer] initializer for x926 -# 2797| getExpr(): [ConstructorCall] call to String -# 2797| Type = [VoidType] void -# 2797| ValueCategory = prvalue -# 2798| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2798| Type = [VoidType] void -# 2798| ValueCategory = prvalue -# 2798| getQualifier(): [VariableAccess] x926 -# 2798| Type = [Struct] String -# 2798| ValueCategory = lvalue -# 2798| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2798| Conversion = [BoolConversion] conversion to bool -# 2798| Type = [BoolType] bool -# 2798| Value = [CStyleCast] 0 -# 2798| ValueCategory = prvalue -# 2799| getStmt(927): [DoStmt] do (...) ... -# 2801| getCondition(): [Literal] 0 -# 2801| Type = [IntType] int -# 2801| Value = [Literal] 0 -# 2801| ValueCategory = prvalue -# 2799| getStmt(): [BlockStmt] { ... } -# 2800| getStmt(0): [DeclStmt] declaration -# 2800| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x927 -# 2800| Type = [Struct] String -# 2800| getVariable().getInitializer(): [Initializer] initializer for x927 -# 2800| getExpr(): [ConstructorCall] call to String -# 2800| Type = [VoidType] void -# 2800| ValueCategory = prvalue -# 2801| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2801| Type = [VoidType] void -# 2801| ValueCategory = prvalue -# 2801| getQualifier(): [VariableAccess] x927 -# 2801| Type = [Struct] String -# 2801| ValueCategory = lvalue -# 2801| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2801| Conversion = [BoolConversion] conversion to bool -# 2801| Type = [BoolType] bool -# 2801| Value = [CStyleCast] 0 -# 2801| ValueCategory = prvalue -# 2802| getStmt(928): [DoStmt] do (...) ... -# 2804| getCondition(): [Literal] 0 -# 2804| Type = [IntType] int -# 2804| Value = [Literal] 0 -# 2804| ValueCategory = prvalue -# 2802| getStmt(): [BlockStmt] { ... } -# 2803| getStmt(0): [DeclStmt] declaration -# 2803| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x928 -# 2803| Type = [Struct] String -# 2803| getVariable().getInitializer(): [Initializer] initializer for x928 -# 2803| getExpr(): [ConstructorCall] call to String -# 2803| Type = [VoidType] void -# 2803| ValueCategory = prvalue -# 2804| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2804| Type = [VoidType] void -# 2804| ValueCategory = prvalue -# 2804| getQualifier(): [VariableAccess] x928 -# 2804| Type = [Struct] String -# 2804| ValueCategory = lvalue -# 2804| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2804| Conversion = [BoolConversion] conversion to bool -# 2804| Type = [BoolType] bool -# 2804| Value = [CStyleCast] 0 -# 2804| ValueCategory = prvalue -# 2805| getStmt(929): [DoStmt] do (...) ... -# 2807| getCondition(): [Literal] 0 -# 2807| Type = [IntType] int -# 2807| Value = [Literal] 0 -# 2807| ValueCategory = prvalue -# 2805| getStmt(): [BlockStmt] { ... } -# 2806| getStmt(0): [DeclStmt] declaration -# 2806| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x929 -# 2806| Type = [Struct] String -# 2806| getVariable().getInitializer(): [Initializer] initializer for x929 -# 2806| getExpr(): [ConstructorCall] call to String -# 2806| Type = [VoidType] void -# 2806| ValueCategory = prvalue -# 2807| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2807| Type = [VoidType] void -# 2807| ValueCategory = prvalue -# 2807| getQualifier(): [VariableAccess] x929 -# 2807| Type = [Struct] String -# 2807| ValueCategory = lvalue -# 2807| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2807| Conversion = [BoolConversion] conversion to bool -# 2807| Type = [BoolType] bool -# 2807| Value = [CStyleCast] 0 -# 2807| ValueCategory = prvalue -# 2808| getStmt(930): [DoStmt] do (...) ... -# 2810| getCondition(): [Literal] 0 -# 2810| Type = [IntType] int -# 2810| Value = [Literal] 0 -# 2810| ValueCategory = prvalue -# 2808| getStmt(): [BlockStmt] { ... } -# 2809| getStmt(0): [DeclStmt] declaration -# 2809| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x930 -# 2809| Type = [Struct] String -# 2809| getVariable().getInitializer(): [Initializer] initializer for x930 -# 2809| getExpr(): [ConstructorCall] call to String -# 2809| Type = [VoidType] void -# 2809| ValueCategory = prvalue -# 2810| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2810| Type = [VoidType] void -# 2810| ValueCategory = prvalue -# 2810| getQualifier(): [VariableAccess] x930 -# 2810| Type = [Struct] String -# 2810| ValueCategory = lvalue -# 2810| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2810| Conversion = [BoolConversion] conversion to bool -# 2810| Type = [BoolType] bool -# 2810| Value = [CStyleCast] 0 -# 2810| ValueCategory = prvalue -# 2811| getStmt(931): [DoStmt] do (...) ... -# 2813| getCondition(): [Literal] 0 -# 2813| Type = [IntType] int -# 2813| Value = [Literal] 0 -# 2813| ValueCategory = prvalue -# 2811| getStmt(): [BlockStmt] { ... } -# 2812| getStmt(0): [DeclStmt] declaration -# 2812| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x931 -# 2812| Type = [Struct] String -# 2812| getVariable().getInitializer(): [Initializer] initializer for x931 -# 2812| getExpr(): [ConstructorCall] call to String -# 2812| Type = [VoidType] void -# 2812| ValueCategory = prvalue -# 2813| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2813| Type = [VoidType] void -# 2813| ValueCategory = prvalue -# 2813| getQualifier(): [VariableAccess] x931 -# 2813| Type = [Struct] String -# 2813| ValueCategory = lvalue -# 2813| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2813| Conversion = [BoolConversion] conversion to bool -# 2813| Type = [BoolType] bool -# 2813| Value = [CStyleCast] 0 -# 2813| ValueCategory = prvalue -# 2814| getStmt(932): [DoStmt] do (...) ... -# 2816| getCondition(): [Literal] 0 -# 2816| Type = [IntType] int -# 2816| Value = [Literal] 0 -# 2816| ValueCategory = prvalue -# 2814| getStmt(): [BlockStmt] { ... } -# 2815| getStmt(0): [DeclStmt] declaration -# 2815| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x932 -# 2815| Type = [Struct] String -# 2815| getVariable().getInitializer(): [Initializer] initializer for x932 -# 2815| getExpr(): [ConstructorCall] call to String -# 2815| Type = [VoidType] void -# 2815| ValueCategory = prvalue -# 2816| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2816| Type = [VoidType] void -# 2816| ValueCategory = prvalue -# 2816| getQualifier(): [VariableAccess] x932 -# 2816| Type = [Struct] String -# 2816| ValueCategory = lvalue -# 2816| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2816| Conversion = [BoolConversion] conversion to bool -# 2816| Type = [BoolType] bool -# 2816| Value = [CStyleCast] 0 -# 2816| ValueCategory = prvalue -# 2817| getStmt(933): [DoStmt] do (...) ... -# 2819| getCondition(): [Literal] 0 -# 2819| Type = [IntType] int -# 2819| Value = [Literal] 0 -# 2819| ValueCategory = prvalue -# 2817| getStmt(): [BlockStmt] { ... } -# 2818| getStmt(0): [DeclStmt] declaration -# 2818| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x933 -# 2818| Type = [Struct] String -# 2818| getVariable().getInitializer(): [Initializer] initializer for x933 -# 2818| getExpr(): [ConstructorCall] call to String -# 2818| Type = [VoidType] void -# 2818| ValueCategory = prvalue -# 2819| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2819| Type = [VoidType] void -# 2819| ValueCategory = prvalue -# 2819| getQualifier(): [VariableAccess] x933 -# 2819| Type = [Struct] String -# 2819| ValueCategory = lvalue -# 2819| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2819| Conversion = [BoolConversion] conversion to bool -# 2819| Type = [BoolType] bool -# 2819| Value = [CStyleCast] 0 -# 2819| ValueCategory = prvalue -# 2820| getStmt(934): [DoStmt] do (...) ... -# 2822| getCondition(): [Literal] 0 -# 2822| Type = [IntType] int -# 2822| Value = [Literal] 0 -# 2822| ValueCategory = prvalue -# 2820| getStmt(): [BlockStmt] { ... } -# 2821| getStmt(0): [DeclStmt] declaration -# 2821| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x934 -# 2821| Type = [Struct] String -# 2821| getVariable().getInitializer(): [Initializer] initializer for x934 -# 2821| getExpr(): [ConstructorCall] call to String -# 2821| Type = [VoidType] void -# 2821| ValueCategory = prvalue -# 2822| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2822| Type = [VoidType] void -# 2822| ValueCategory = prvalue -# 2822| getQualifier(): [VariableAccess] x934 -# 2822| Type = [Struct] String -# 2822| ValueCategory = lvalue -# 2822| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2822| Conversion = [BoolConversion] conversion to bool -# 2822| Type = [BoolType] bool -# 2822| Value = [CStyleCast] 0 -# 2822| ValueCategory = prvalue -# 2823| getStmt(935): [DoStmt] do (...) ... -# 2825| getCondition(): [Literal] 0 -# 2825| Type = [IntType] int -# 2825| Value = [Literal] 0 -# 2825| ValueCategory = prvalue -# 2823| getStmt(): [BlockStmt] { ... } -# 2824| getStmt(0): [DeclStmt] declaration -# 2824| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x935 -# 2824| Type = [Struct] String -# 2824| getVariable().getInitializer(): [Initializer] initializer for x935 -# 2824| getExpr(): [ConstructorCall] call to String -# 2824| Type = [VoidType] void -# 2824| ValueCategory = prvalue -# 2825| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2825| Type = [VoidType] void -# 2825| ValueCategory = prvalue -# 2825| getQualifier(): [VariableAccess] x935 -# 2825| Type = [Struct] String -# 2825| ValueCategory = lvalue -# 2825| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2825| Conversion = [BoolConversion] conversion to bool -# 2825| Type = [BoolType] bool -# 2825| Value = [CStyleCast] 0 -# 2825| ValueCategory = prvalue -# 2826| getStmt(936): [DoStmt] do (...) ... -# 2828| getCondition(): [Literal] 0 -# 2828| Type = [IntType] int -# 2828| Value = [Literal] 0 -# 2828| ValueCategory = prvalue -# 2826| getStmt(): [BlockStmt] { ... } -# 2827| getStmt(0): [DeclStmt] declaration -# 2827| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x936 -# 2827| Type = [Struct] String -# 2827| getVariable().getInitializer(): [Initializer] initializer for x936 -# 2827| getExpr(): [ConstructorCall] call to String -# 2827| Type = [VoidType] void -# 2827| ValueCategory = prvalue -# 2828| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2828| Type = [VoidType] void -# 2828| ValueCategory = prvalue -# 2828| getQualifier(): [VariableAccess] x936 -# 2828| Type = [Struct] String -# 2828| ValueCategory = lvalue -# 2828| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2828| Conversion = [BoolConversion] conversion to bool -# 2828| Type = [BoolType] bool -# 2828| Value = [CStyleCast] 0 -# 2828| ValueCategory = prvalue -# 2829| getStmt(937): [DoStmt] do (...) ... -# 2831| getCondition(): [Literal] 0 -# 2831| Type = [IntType] int -# 2831| Value = [Literal] 0 -# 2831| ValueCategory = prvalue -# 2829| getStmt(): [BlockStmt] { ... } -# 2830| getStmt(0): [DeclStmt] declaration -# 2830| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x937 -# 2830| Type = [Struct] String -# 2830| getVariable().getInitializer(): [Initializer] initializer for x937 -# 2830| getExpr(): [ConstructorCall] call to String -# 2830| Type = [VoidType] void -# 2830| ValueCategory = prvalue -# 2831| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2831| Type = [VoidType] void -# 2831| ValueCategory = prvalue -# 2831| getQualifier(): [VariableAccess] x937 -# 2831| Type = [Struct] String -# 2831| ValueCategory = lvalue -# 2831| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2831| Conversion = [BoolConversion] conversion to bool -# 2831| Type = [BoolType] bool -# 2831| Value = [CStyleCast] 0 -# 2831| ValueCategory = prvalue -# 2832| getStmt(938): [DoStmt] do (...) ... -# 2834| getCondition(): [Literal] 0 -# 2834| Type = [IntType] int -# 2834| Value = [Literal] 0 -# 2834| ValueCategory = prvalue -# 2832| getStmt(): [BlockStmt] { ... } -# 2833| getStmt(0): [DeclStmt] declaration -# 2833| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x938 -# 2833| Type = [Struct] String -# 2833| getVariable().getInitializer(): [Initializer] initializer for x938 -# 2833| getExpr(): [ConstructorCall] call to String -# 2833| Type = [VoidType] void -# 2833| ValueCategory = prvalue -# 2834| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2834| Type = [VoidType] void -# 2834| ValueCategory = prvalue -# 2834| getQualifier(): [VariableAccess] x938 -# 2834| Type = [Struct] String -# 2834| ValueCategory = lvalue -# 2834| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2834| Conversion = [BoolConversion] conversion to bool -# 2834| Type = [BoolType] bool -# 2834| Value = [CStyleCast] 0 -# 2834| ValueCategory = prvalue -# 2835| getStmt(939): [DoStmt] do (...) ... -# 2837| getCondition(): [Literal] 0 -# 2837| Type = [IntType] int -# 2837| Value = [Literal] 0 -# 2837| ValueCategory = prvalue -# 2835| getStmt(): [BlockStmt] { ... } -# 2836| getStmt(0): [DeclStmt] declaration -# 2836| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x939 -# 2836| Type = [Struct] String -# 2836| getVariable().getInitializer(): [Initializer] initializer for x939 -# 2836| getExpr(): [ConstructorCall] call to String -# 2836| Type = [VoidType] void -# 2836| ValueCategory = prvalue -# 2837| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2837| Type = [VoidType] void -# 2837| ValueCategory = prvalue -# 2837| getQualifier(): [VariableAccess] x939 -# 2837| Type = [Struct] String -# 2837| ValueCategory = lvalue -# 2837| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2837| Conversion = [BoolConversion] conversion to bool -# 2837| Type = [BoolType] bool -# 2837| Value = [CStyleCast] 0 -# 2837| ValueCategory = prvalue -# 2838| getStmt(940): [DoStmt] do (...) ... -# 2840| getCondition(): [Literal] 0 -# 2840| Type = [IntType] int -# 2840| Value = [Literal] 0 -# 2840| ValueCategory = prvalue -# 2838| getStmt(): [BlockStmt] { ... } -# 2839| getStmt(0): [DeclStmt] declaration -# 2839| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x940 -# 2839| Type = [Struct] String -# 2839| getVariable().getInitializer(): [Initializer] initializer for x940 -# 2839| getExpr(): [ConstructorCall] call to String -# 2839| Type = [VoidType] void -# 2839| ValueCategory = prvalue -# 2840| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2840| Type = [VoidType] void -# 2840| ValueCategory = prvalue -# 2840| getQualifier(): [VariableAccess] x940 -# 2840| Type = [Struct] String -# 2840| ValueCategory = lvalue -# 2840| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2840| Conversion = [BoolConversion] conversion to bool -# 2840| Type = [BoolType] bool -# 2840| Value = [CStyleCast] 0 -# 2840| ValueCategory = prvalue -# 2841| getStmt(941): [DoStmt] do (...) ... -# 2843| getCondition(): [Literal] 0 -# 2843| Type = [IntType] int -# 2843| Value = [Literal] 0 -# 2843| ValueCategory = prvalue -# 2841| getStmt(): [BlockStmt] { ... } -# 2842| getStmt(0): [DeclStmt] declaration -# 2842| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x941 -# 2842| Type = [Struct] String -# 2842| getVariable().getInitializer(): [Initializer] initializer for x941 -# 2842| getExpr(): [ConstructorCall] call to String -# 2842| Type = [VoidType] void -# 2842| ValueCategory = prvalue -# 2843| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2843| Type = [VoidType] void -# 2843| ValueCategory = prvalue -# 2843| getQualifier(): [VariableAccess] x941 -# 2843| Type = [Struct] String -# 2843| ValueCategory = lvalue -# 2843| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2843| Conversion = [BoolConversion] conversion to bool -# 2843| Type = [BoolType] bool -# 2843| Value = [CStyleCast] 0 -# 2843| ValueCategory = prvalue -# 2844| getStmt(942): [DoStmt] do (...) ... -# 2846| getCondition(): [Literal] 0 -# 2846| Type = [IntType] int -# 2846| Value = [Literal] 0 -# 2846| ValueCategory = prvalue -# 2844| getStmt(): [BlockStmt] { ... } -# 2845| getStmt(0): [DeclStmt] declaration -# 2845| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x942 -# 2845| Type = [Struct] String -# 2845| getVariable().getInitializer(): [Initializer] initializer for x942 -# 2845| getExpr(): [ConstructorCall] call to String -# 2845| Type = [VoidType] void -# 2845| ValueCategory = prvalue -# 2846| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2846| Type = [VoidType] void -# 2846| ValueCategory = prvalue -# 2846| getQualifier(): [VariableAccess] x942 -# 2846| Type = [Struct] String -# 2846| ValueCategory = lvalue -# 2846| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2846| Conversion = [BoolConversion] conversion to bool -# 2846| Type = [BoolType] bool -# 2846| Value = [CStyleCast] 0 -# 2846| ValueCategory = prvalue -# 2847| getStmt(943): [DoStmt] do (...) ... -# 2849| getCondition(): [Literal] 0 -# 2849| Type = [IntType] int -# 2849| Value = [Literal] 0 -# 2849| ValueCategory = prvalue -# 2847| getStmt(): [BlockStmt] { ... } -# 2848| getStmt(0): [DeclStmt] declaration -# 2848| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x943 -# 2848| Type = [Struct] String -# 2848| getVariable().getInitializer(): [Initializer] initializer for x943 -# 2848| getExpr(): [ConstructorCall] call to String -# 2848| Type = [VoidType] void -# 2848| ValueCategory = prvalue -# 2849| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2849| Type = [VoidType] void -# 2849| ValueCategory = prvalue -# 2849| getQualifier(): [VariableAccess] x943 -# 2849| Type = [Struct] String -# 2849| ValueCategory = lvalue -# 2849| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2849| Conversion = [BoolConversion] conversion to bool -# 2849| Type = [BoolType] bool -# 2849| Value = [CStyleCast] 0 -# 2849| ValueCategory = prvalue -# 2850| getStmt(944): [DoStmt] do (...) ... -# 2852| getCondition(): [Literal] 0 -# 2852| Type = [IntType] int -# 2852| Value = [Literal] 0 -# 2852| ValueCategory = prvalue -# 2850| getStmt(): [BlockStmt] { ... } -# 2851| getStmt(0): [DeclStmt] declaration -# 2851| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x944 -# 2851| Type = [Struct] String -# 2851| getVariable().getInitializer(): [Initializer] initializer for x944 -# 2851| getExpr(): [ConstructorCall] call to String -# 2851| Type = [VoidType] void -# 2851| ValueCategory = prvalue -# 2852| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2852| Type = [VoidType] void -# 2852| ValueCategory = prvalue -# 2852| getQualifier(): [VariableAccess] x944 -# 2852| Type = [Struct] String -# 2852| ValueCategory = lvalue -# 2852| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2852| Conversion = [BoolConversion] conversion to bool -# 2852| Type = [BoolType] bool -# 2852| Value = [CStyleCast] 0 -# 2852| ValueCategory = prvalue -# 2853| getStmt(945): [DoStmt] do (...) ... -# 2855| getCondition(): [Literal] 0 -# 2855| Type = [IntType] int -# 2855| Value = [Literal] 0 -# 2855| ValueCategory = prvalue -# 2853| getStmt(): [BlockStmt] { ... } -# 2854| getStmt(0): [DeclStmt] declaration -# 2854| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x945 -# 2854| Type = [Struct] String -# 2854| getVariable().getInitializer(): [Initializer] initializer for x945 -# 2854| getExpr(): [ConstructorCall] call to String -# 2854| Type = [VoidType] void -# 2854| ValueCategory = prvalue -# 2855| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2855| Type = [VoidType] void -# 2855| ValueCategory = prvalue -# 2855| getQualifier(): [VariableAccess] x945 -# 2855| Type = [Struct] String -# 2855| ValueCategory = lvalue -# 2855| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2855| Conversion = [BoolConversion] conversion to bool -# 2855| Type = [BoolType] bool -# 2855| Value = [CStyleCast] 0 -# 2855| ValueCategory = prvalue -# 2856| getStmt(946): [DoStmt] do (...) ... -# 2858| getCondition(): [Literal] 0 -# 2858| Type = [IntType] int -# 2858| Value = [Literal] 0 -# 2858| ValueCategory = prvalue -# 2856| getStmt(): [BlockStmt] { ... } -# 2857| getStmt(0): [DeclStmt] declaration -# 2857| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x946 -# 2857| Type = [Struct] String -# 2857| getVariable().getInitializer(): [Initializer] initializer for x946 -# 2857| getExpr(): [ConstructorCall] call to String -# 2857| Type = [VoidType] void -# 2857| ValueCategory = prvalue -# 2858| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2858| Type = [VoidType] void -# 2858| ValueCategory = prvalue -# 2858| getQualifier(): [VariableAccess] x946 -# 2858| Type = [Struct] String -# 2858| ValueCategory = lvalue -# 2858| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2858| Conversion = [BoolConversion] conversion to bool -# 2858| Type = [BoolType] bool -# 2858| Value = [CStyleCast] 0 -# 2858| ValueCategory = prvalue -# 2859| getStmt(947): [DoStmt] do (...) ... -# 2861| getCondition(): [Literal] 0 -# 2861| Type = [IntType] int -# 2861| Value = [Literal] 0 -# 2861| ValueCategory = prvalue -# 2859| getStmt(): [BlockStmt] { ... } -# 2860| getStmt(0): [DeclStmt] declaration -# 2860| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x947 -# 2860| Type = [Struct] String -# 2860| getVariable().getInitializer(): [Initializer] initializer for x947 -# 2860| getExpr(): [ConstructorCall] call to String -# 2860| Type = [VoidType] void -# 2860| ValueCategory = prvalue -# 2861| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2861| Type = [VoidType] void -# 2861| ValueCategory = prvalue -# 2861| getQualifier(): [VariableAccess] x947 -# 2861| Type = [Struct] String -# 2861| ValueCategory = lvalue -# 2861| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2861| Conversion = [BoolConversion] conversion to bool -# 2861| Type = [BoolType] bool -# 2861| Value = [CStyleCast] 0 -# 2861| ValueCategory = prvalue -# 2862| getStmt(948): [DoStmt] do (...) ... -# 2864| getCondition(): [Literal] 0 -# 2864| Type = [IntType] int -# 2864| Value = [Literal] 0 -# 2864| ValueCategory = prvalue -# 2862| getStmt(): [BlockStmt] { ... } -# 2863| getStmt(0): [DeclStmt] declaration -# 2863| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x948 -# 2863| Type = [Struct] String -# 2863| getVariable().getInitializer(): [Initializer] initializer for x948 -# 2863| getExpr(): [ConstructorCall] call to String -# 2863| Type = [VoidType] void -# 2863| ValueCategory = prvalue -# 2864| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2864| Type = [VoidType] void -# 2864| ValueCategory = prvalue -# 2864| getQualifier(): [VariableAccess] x948 -# 2864| Type = [Struct] String -# 2864| ValueCategory = lvalue -# 2864| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2864| Conversion = [BoolConversion] conversion to bool -# 2864| Type = [BoolType] bool -# 2864| Value = [CStyleCast] 0 -# 2864| ValueCategory = prvalue -# 2865| getStmt(949): [DoStmt] do (...) ... -# 2867| getCondition(): [Literal] 0 -# 2867| Type = [IntType] int -# 2867| Value = [Literal] 0 -# 2867| ValueCategory = prvalue -# 2865| getStmt(): [BlockStmt] { ... } -# 2866| getStmt(0): [DeclStmt] declaration -# 2866| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x949 -# 2866| Type = [Struct] String -# 2866| getVariable().getInitializer(): [Initializer] initializer for x949 -# 2866| getExpr(): [ConstructorCall] call to String -# 2866| Type = [VoidType] void -# 2866| ValueCategory = prvalue -# 2867| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2867| Type = [VoidType] void -# 2867| ValueCategory = prvalue -# 2867| getQualifier(): [VariableAccess] x949 -# 2867| Type = [Struct] String -# 2867| ValueCategory = lvalue -# 2867| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2867| Conversion = [BoolConversion] conversion to bool -# 2867| Type = [BoolType] bool -# 2867| Value = [CStyleCast] 0 -# 2867| ValueCategory = prvalue -# 2868| getStmt(950): [DoStmt] do (...) ... -# 2870| getCondition(): [Literal] 0 -# 2870| Type = [IntType] int -# 2870| Value = [Literal] 0 -# 2870| ValueCategory = prvalue -# 2868| getStmt(): [BlockStmt] { ... } -# 2869| getStmt(0): [DeclStmt] declaration -# 2869| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x950 -# 2869| Type = [Struct] String -# 2869| getVariable().getInitializer(): [Initializer] initializer for x950 -# 2869| getExpr(): [ConstructorCall] call to String -# 2869| Type = [VoidType] void -# 2869| ValueCategory = prvalue -# 2870| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2870| Type = [VoidType] void -# 2870| ValueCategory = prvalue -# 2870| getQualifier(): [VariableAccess] x950 -# 2870| Type = [Struct] String -# 2870| ValueCategory = lvalue -# 2870| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2870| Conversion = [BoolConversion] conversion to bool -# 2870| Type = [BoolType] bool -# 2870| Value = [CStyleCast] 0 -# 2870| ValueCategory = prvalue -# 2871| getStmt(951): [DoStmt] do (...) ... -# 2873| getCondition(): [Literal] 0 -# 2873| Type = [IntType] int -# 2873| Value = [Literal] 0 -# 2873| ValueCategory = prvalue -# 2871| getStmt(): [BlockStmt] { ... } -# 2872| getStmt(0): [DeclStmt] declaration -# 2872| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x951 -# 2872| Type = [Struct] String -# 2872| getVariable().getInitializer(): [Initializer] initializer for x951 -# 2872| getExpr(): [ConstructorCall] call to String -# 2872| Type = [VoidType] void -# 2872| ValueCategory = prvalue -# 2873| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2873| Type = [VoidType] void -# 2873| ValueCategory = prvalue -# 2873| getQualifier(): [VariableAccess] x951 -# 2873| Type = [Struct] String -# 2873| ValueCategory = lvalue -# 2873| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2873| Conversion = [BoolConversion] conversion to bool -# 2873| Type = [BoolType] bool -# 2873| Value = [CStyleCast] 0 -# 2873| ValueCategory = prvalue -# 2874| getStmt(952): [DoStmt] do (...) ... -# 2876| getCondition(): [Literal] 0 -# 2876| Type = [IntType] int -# 2876| Value = [Literal] 0 -# 2876| ValueCategory = prvalue -# 2874| getStmt(): [BlockStmt] { ... } -# 2875| getStmt(0): [DeclStmt] declaration -# 2875| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x952 -# 2875| Type = [Struct] String -# 2875| getVariable().getInitializer(): [Initializer] initializer for x952 -# 2875| getExpr(): [ConstructorCall] call to String -# 2875| Type = [VoidType] void -# 2875| ValueCategory = prvalue -# 2876| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2876| Type = [VoidType] void -# 2876| ValueCategory = prvalue -# 2876| getQualifier(): [VariableAccess] x952 -# 2876| Type = [Struct] String -# 2876| ValueCategory = lvalue -# 2876| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2876| Conversion = [BoolConversion] conversion to bool -# 2876| Type = [BoolType] bool -# 2876| Value = [CStyleCast] 0 -# 2876| ValueCategory = prvalue -# 2877| getStmt(953): [DoStmt] do (...) ... -# 2879| getCondition(): [Literal] 0 -# 2879| Type = [IntType] int -# 2879| Value = [Literal] 0 -# 2879| ValueCategory = prvalue -# 2877| getStmt(): [BlockStmt] { ... } -# 2878| getStmt(0): [DeclStmt] declaration -# 2878| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x953 -# 2878| Type = [Struct] String -# 2878| getVariable().getInitializer(): [Initializer] initializer for x953 -# 2878| getExpr(): [ConstructorCall] call to String -# 2878| Type = [VoidType] void -# 2878| ValueCategory = prvalue -# 2879| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2879| Type = [VoidType] void -# 2879| ValueCategory = prvalue -# 2879| getQualifier(): [VariableAccess] x953 -# 2879| Type = [Struct] String -# 2879| ValueCategory = lvalue -# 2879| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2879| Conversion = [BoolConversion] conversion to bool -# 2879| Type = [BoolType] bool -# 2879| Value = [CStyleCast] 0 -# 2879| ValueCategory = prvalue -# 2880| getStmt(954): [DoStmt] do (...) ... -# 2882| getCondition(): [Literal] 0 -# 2882| Type = [IntType] int -# 2882| Value = [Literal] 0 -# 2882| ValueCategory = prvalue -# 2880| getStmt(): [BlockStmt] { ... } -# 2881| getStmt(0): [DeclStmt] declaration -# 2881| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x954 -# 2881| Type = [Struct] String -# 2881| getVariable().getInitializer(): [Initializer] initializer for x954 -# 2881| getExpr(): [ConstructorCall] call to String -# 2881| Type = [VoidType] void -# 2881| ValueCategory = prvalue -# 2882| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2882| Type = [VoidType] void -# 2882| ValueCategory = prvalue -# 2882| getQualifier(): [VariableAccess] x954 -# 2882| Type = [Struct] String -# 2882| ValueCategory = lvalue -# 2882| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2882| Conversion = [BoolConversion] conversion to bool -# 2882| Type = [BoolType] bool -# 2882| Value = [CStyleCast] 0 -# 2882| ValueCategory = prvalue -# 2883| getStmt(955): [DoStmt] do (...) ... -# 2885| getCondition(): [Literal] 0 -# 2885| Type = [IntType] int -# 2885| Value = [Literal] 0 -# 2885| ValueCategory = prvalue -# 2883| getStmt(): [BlockStmt] { ... } -# 2884| getStmt(0): [DeclStmt] declaration -# 2884| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x955 -# 2884| Type = [Struct] String -# 2884| getVariable().getInitializer(): [Initializer] initializer for x955 -# 2884| getExpr(): [ConstructorCall] call to String -# 2884| Type = [VoidType] void -# 2884| ValueCategory = prvalue -# 2885| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2885| Type = [VoidType] void -# 2885| ValueCategory = prvalue -# 2885| getQualifier(): [VariableAccess] x955 -# 2885| Type = [Struct] String -# 2885| ValueCategory = lvalue -# 2885| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2885| Conversion = [BoolConversion] conversion to bool -# 2885| Type = [BoolType] bool -# 2885| Value = [CStyleCast] 0 -# 2885| ValueCategory = prvalue -# 2886| getStmt(956): [DoStmt] do (...) ... -# 2888| getCondition(): [Literal] 0 -# 2888| Type = [IntType] int -# 2888| Value = [Literal] 0 -# 2888| ValueCategory = prvalue -# 2886| getStmt(): [BlockStmt] { ... } -# 2887| getStmt(0): [DeclStmt] declaration -# 2887| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x956 -# 2887| Type = [Struct] String -# 2887| getVariable().getInitializer(): [Initializer] initializer for x956 -# 2887| getExpr(): [ConstructorCall] call to String -# 2887| Type = [VoidType] void -# 2887| ValueCategory = prvalue -# 2888| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2888| Type = [VoidType] void -# 2888| ValueCategory = prvalue -# 2888| getQualifier(): [VariableAccess] x956 -# 2888| Type = [Struct] String -# 2888| ValueCategory = lvalue -# 2888| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2888| Conversion = [BoolConversion] conversion to bool -# 2888| Type = [BoolType] bool -# 2888| Value = [CStyleCast] 0 -# 2888| ValueCategory = prvalue -# 2889| getStmt(957): [DoStmt] do (...) ... -# 2891| getCondition(): [Literal] 0 -# 2891| Type = [IntType] int -# 2891| Value = [Literal] 0 -# 2891| ValueCategory = prvalue -# 2889| getStmt(): [BlockStmt] { ... } -# 2890| getStmt(0): [DeclStmt] declaration -# 2890| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x957 -# 2890| Type = [Struct] String -# 2890| getVariable().getInitializer(): [Initializer] initializer for x957 -# 2890| getExpr(): [ConstructorCall] call to String -# 2890| Type = [VoidType] void -# 2890| ValueCategory = prvalue -# 2891| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2891| Type = [VoidType] void -# 2891| ValueCategory = prvalue -# 2891| getQualifier(): [VariableAccess] x957 -# 2891| Type = [Struct] String -# 2891| ValueCategory = lvalue -# 2891| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2891| Conversion = [BoolConversion] conversion to bool -# 2891| Type = [BoolType] bool -# 2891| Value = [CStyleCast] 0 -# 2891| ValueCategory = prvalue -# 2892| getStmt(958): [DoStmt] do (...) ... -# 2894| getCondition(): [Literal] 0 -# 2894| Type = [IntType] int -# 2894| Value = [Literal] 0 -# 2894| ValueCategory = prvalue -# 2892| getStmt(): [BlockStmt] { ... } -# 2893| getStmt(0): [DeclStmt] declaration -# 2893| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x958 -# 2893| Type = [Struct] String -# 2893| getVariable().getInitializer(): [Initializer] initializer for x958 -# 2893| getExpr(): [ConstructorCall] call to String -# 2893| Type = [VoidType] void -# 2893| ValueCategory = prvalue -# 2894| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2894| Type = [VoidType] void -# 2894| ValueCategory = prvalue -# 2894| getQualifier(): [VariableAccess] x958 -# 2894| Type = [Struct] String -# 2894| ValueCategory = lvalue -# 2894| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2894| Conversion = [BoolConversion] conversion to bool -# 2894| Type = [BoolType] bool -# 2894| Value = [CStyleCast] 0 -# 2894| ValueCategory = prvalue -# 2895| getStmt(959): [DoStmt] do (...) ... -# 2897| getCondition(): [Literal] 0 -# 2897| Type = [IntType] int -# 2897| Value = [Literal] 0 -# 2897| ValueCategory = prvalue -# 2895| getStmt(): [BlockStmt] { ... } -# 2896| getStmt(0): [DeclStmt] declaration -# 2896| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x959 -# 2896| Type = [Struct] String -# 2896| getVariable().getInitializer(): [Initializer] initializer for x959 -# 2896| getExpr(): [ConstructorCall] call to String -# 2896| Type = [VoidType] void -# 2896| ValueCategory = prvalue -# 2897| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2897| Type = [VoidType] void -# 2897| ValueCategory = prvalue -# 2897| getQualifier(): [VariableAccess] x959 -# 2897| Type = [Struct] String -# 2897| ValueCategory = lvalue -# 2897| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2897| Conversion = [BoolConversion] conversion to bool -# 2897| Type = [BoolType] bool -# 2897| Value = [CStyleCast] 0 -# 2897| ValueCategory = prvalue -# 2898| getStmt(960): [DoStmt] do (...) ... -# 2900| getCondition(): [Literal] 0 -# 2900| Type = [IntType] int -# 2900| Value = [Literal] 0 -# 2900| ValueCategory = prvalue -# 2898| getStmt(): [BlockStmt] { ... } -# 2899| getStmt(0): [DeclStmt] declaration -# 2899| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x960 -# 2899| Type = [Struct] String -# 2899| getVariable().getInitializer(): [Initializer] initializer for x960 -# 2899| getExpr(): [ConstructorCall] call to String -# 2899| Type = [VoidType] void -# 2899| ValueCategory = prvalue -# 2900| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2900| Type = [VoidType] void -# 2900| ValueCategory = prvalue -# 2900| getQualifier(): [VariableAccess] x960 -# 2900| Type = [Struct] String -# 2900| ValueCategory = lvalue -# 2900| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2900| Conversion = [BoolConversion] conversion to bool -# 2900| Type = [BoolType] bool -# 2900| Value = [CStyleCast] 0 -# 2900| ValueCategory = prvalue -# 2901| getStmt(961): [DoStmt] do (...) ... -# 2903| getCondition(): [Literal] 0 -# 2903| Type = [IntType] int -# 2903| Value = [Literal] 0 -# 2903| ValueCategory = prvalue -# 2901| getStmt(): [BlockStmt] { ... } -# 2902| getStmt(0): [DeclStmt] declaration -# 2902| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x961 -# 2902| Type = [Struct] String -# 2902| getVariable().getInitializer(): [Initializer] initializer for x961 -# 2902| getExpr(): [ConstructorCall] call to String -# 2902| Type = [VoidType] void -# 2902| ValueCategory = prvalue -# 2903| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2903| Type = [VoidType] void -# 2903| ValueCategory = prvalue -# 2903| getQualifier(): [VariableAccess] x961 -# 2903| Type = [Struct] String -# 2903| ValueCategory = lvalue -# 2903| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2903| Conversion = [BoolConversion] conversion to bool -# 2903| Type = [BoolType] bool -# 2903| Value = [CStyleCast] 0 -# 2903| ValueCategory = prvalue -# 2904| getStmt(962): [DoStmt] do (...) ... -# 2906| getCondition(): [Literal] 0 -# 2906| Type = [IntType] int -# 2906| Value = [Literal] 0 -# 2906| ValueCategory = prvalue -# 2904| getStmt(): [BlockStmt] { ... } -# 2905| getStmt(0): [DeclStmt] declaration -# 2905| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x962 -# 2905| Type = [Struct] String -# 2905| getVariable().getInitializer(): [Initializer] initializer for x962 -# 2905| getExpr(): [ConstructorCall] call to String -# 2905| Type = [VoidType] void -# 2905| ValueCategory = prvalue -# 2906| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2906| Type = [VoidType] void -# 2906| ValueCategory = prvalue -# 2906| getQualifier(): [VariableAccess] x962 -# 2906| Type = [Struct] String -# 2906| ValueCategory = lvalue -# 2906| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2906| Conversion = [BoolConversion] conversion to bool -# 2906| Type = [BoolType] bool -# 2906| Value = [CStyleCast] 0 -# 2906| ValueCategory = prvalue -# 2907| getStmt(963): [DoStmt] do (...) ... -# 2909| getCondition(): [Literal] 0 -# 2909| Type = [IntType] int -# 2909| Value = [Literal] 0 -# 2909| ValueCategory = prvalue -# 2907| getStmt(): [BlockStmt] { ... } -# 2908| getStmt(0): [DeclStmt] declaration -# 2908| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x963 -# 2908| Type = [Struct] String -# 2908| getVariable().getInitializer(): [Initializer] initializer for x963 -# 2908| getExpr(): [ConstructorCall] call to String -# 2908| Type = [VoidType] void -# 2908| ValueCategory = prvalue -# 2909| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2909| Type = [VoidType] void -# 2909| ValueCategory = prvalue -# 2909| getQualifier(): [VariableAccess] x963 -# 2909| Type = [Struct] String -# 2909| ValueCategory = lvalue -# 2909| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2909| Conversion = [BoolConversion] conversion to bool -# 2909| Type = [BoolType] bool -# 2909| Value = [CStyleCast] 0 -# 2909| ValueCategory = prvalue -# 2910| getStmt(964): [DoStmt] do (...) ... -# 2912| getCondition(): [Literal] 0 -# 2912| Type = [IntType] int -# 2912| Value = [Literal] 0 -# 2912| ValueCategory = prvalue -# 2910| getStmt(): [BlockStmt] { ... } -# 2911| getStmt(0): [DeclStmt] declaration -# 2911| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x964 -# 2911| Type = [Struct] String -# 2911| getVariable().getInitializer(): [Initializer] initializer for x964 -# 2911| getExpr(): [ConstructorCall] call to String -# 2911| Type = [VoidType] void -# 2911| ValueCategory = prvalue -# 2912| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2912| Type = [VoidType] void -# 2912| ValueCategory = prvalue -# 2912| getQualifier(): [VariableAccess] x964 -# 2912| Type = [Struct] String -# 2912| ValueCategory = lvalue -# 2912| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2912| Conversion = [BoolConversion] conversion to bool -# 2912| Type = [BoolType] bool -# 2912| Value = [CStyleCast] 0 -# 2912| ValueCategory = prvalue -# 2913| getStmt(965): [DoStmt] do (...) ... -# 2915| getCondition(): [Literal] 0 -# 2915| Type = [IntType] int -# 2915| Value = [Literal] 0 -# 2915| ValueCategory = prvalue -# 2913| getStmt(): [BlockStmt] { ... } -# 2914| getStmt(0): [DeclStmt] declaration -# 2914| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x965 -# 2914| Type = [Struct] String -# 2914| getVariable().getInitializer(): [Initializer] initializer for x965 -# 2914| getExpr(): [ConstructorCall] call to String -# 2914| Type = [VoidType] void -# 2914| ValueCategory = prvalue -# 2915| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2915| Type = [VoidType] void -# 2915| ValueCategory = prvalue -# 2915| getQualifier(): [VariableAccess] x965 -# 2915| Type = [Struct] String -# 2915| ValueCategory = lvalue -# 2915| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2915| Conversion = [BoolConversion] conversion to bool -# 2915| Type = [BoolType] bool -# 2915| Value = [CStyleCast] 0 -# 2915| ValueCategory = prvalue -# 2916| getStmt(966): [DoStmt] do (...) ... -# 2918| getCondition(): [Literal] 0 -# 2918| Type = [IntType] int -# 2918| Value = [Literal] 0 -# 2918| ValueCategory = prvalue -# 2916| getStmt(): [BlockStmt] { ... } -# 2917| getStmt(0): [DeclStmt] declaration -# 2917| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x966 -# 2917| Type = [Struct] String -# 2917| getVariable().getInitializer(): [Initializer] initializer for x966 -# 2917| getExpr(): [ConstructorCall] call to String -# 2917| Type = [VoidType] void -# 2917| ValueCategory = prvalue -# 2918| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2918| Type = [VoidType] void -# 2918| ValueCategory = prvalue -# 2918| getQualifier(): [VariableAccess] x966 -# 2918| Type = [Struct] String -# 2918| ValueCategory = lvalue -# 2918| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2918| Conversion = [BoolConversion] conversion to bool -# 2918| Type = [BoolType] bool -# 2918| Value = [CStyleCast] 0 -# 2918| ValueCategory = prvalue -# 2919| getStmt(967): [DoStmt] do (...) ... -# 2921| getCondition(): [Literal] 0 -# 2921| Type = [IntType] int -# 2921| Value = [Literal] 0 -# 2921| ValueCategory = prvalue -# 2919| getStmt(): [BlockStmt] { ... } -# 2920| getStmt(0): [DeclStmt] declaration -# 2920| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x967 -# 2920| Type = [Struct] String -# 2920| getVariable().getInitializer(): [Initializer] initializer for x967 -# 2920| getExpr(): [ConstructorCall] call to String -# 2920| Type = [VoidType] void -# 2920| ValueCategory = prvalue -# 2921| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2921| Type = [VoidType] void -# 2921| ValueCategory = prvalue -# 2921| getQualifier(): [VariableAccess] x967 -# 2921| Type = [Struct] String -# 2921| ValueCategory = lvalue -# 2921| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2921| Conversion = [BoolConversion] conversion to bool -# 2921| Type = [BoolType] bool -# 2921| Value = [CStyleCast] 0 -# 2921| ValueCategory = prvalue -# 2922| getStmt(968): [DoStmt] do (...) ... -# 2924| getCondition(): [Literal] 0 -# 2924| Type = [IntType] int -# 2924| Value = [Literal] 0 -# 2924| ValueCategory = prvalue -# 2922| getStmt(): [BlockStmt] { ... } -# 2923| getStmt(0): [DeclStmt] declaration -# 2923| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x968 -# 2923| Type = [Struct] String -# 2923| getVariable().getInitializer(): [Initializer] initializer for x968 -# 2923| getExpr(): [ConstructorCall] call to String -# 2923| Type = [VoidType] void -# 2923| ValueCategory = prvalue -# 2924| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2924| Type = [VoidType] void -# 2924| ValueCategory = prvalue -# 2924| getQualifier(): [VariableAccess] x968 -# 2924| Type = [Struct] String -# 2924| ValueCategory = lvalue -# 2924| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2924| Conversion = [BoolConversion] conversion to bool -# 2924| Type = [BoolType] bool -# 2924| Value = [CStyleCast] 0 -# 2924| ValueCategory = prvalue -# 2925| getStmt(969): [DoStmt] do (...) ... -# 2927| getCondition(): [Literal] 0 -# 2927| Type = [IntType] int -# 2927| Value = [Literal] 0 -# 2927| ValueCategory = prvalue -# 2925| getStmt(): [BlockStmt] { ... } -# 2926| getStmt(0): [DeclStmt] declaration -# 2926| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x969 -# 2926| Type = [Struct] String -# 2926| getVariable().getInitializer(): [Initializer] initializer for x969 -# 2926| getExpr(): [ConstructorCall] call to String -# 2926| Type = [VoidType] void -# 2926| ValueCategory = prvalue -# 2927| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2927| Type = [VoidType] void -# 2927| ValueCategory = prvalue -# 2927| getQualifier(): [VariableAccess] x969 -# 2927| Type = [Struct] String -# 2927| ValueCategory = lvalue -# 2927| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2927| Conversion = [BoolConversion] conversion to bool -# 2927| Type = [BoolType] bool -# 2927| Value = [CStyleCast] 0 -# 2927| ValueCategory = prvalue -# 2928| getStmt(970): [DoStmt] do (...) ... -# 2930| getCondition(): [Literal] 0 -# 2930| Type = [IntType] int -# 2930| Value = [Literal] 0 -# 2930| ValueCategory = prvalue -# 2928| getStmt(): [BlockStmt] { ... } -# 2929| getStmt(0): [DeclStmt] declaration -# 2929| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x970 -# 2929| Type = [Struct] String -# 2929| getVariable().getInitializer(): [Initializer] initializer for x970 -# 2929| getExpr(): [ConstructorCall] call to String -# 2929| Type = [VoidType] void -# 2929| ValueCategory = prvalue -# 2930| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2930| Type = [VoidType] void -# 2930| ValueCategory = prvalue -# 2930| getQualifier(): [VariableAccess] x970 -# 2930| Type = [Struct] String -# 2930| ValueCategory = lvalue -# 2930| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2930| Conversion = [BoolConversion] conversion to bool -# 2930| Type = [BoolType] bool -# 2930| Value = [CStyleCast] 0 -# 2930| ValueCategory = prvalue -# 2931| getStmt(971): [DoStmt] do (...) ... -# 2933| getCondition(): [Literal] 0 -# 2933| Type = [IntType] int -# 2933| Value = [Literal] 0 -# 2933| ValueCategory = prvalue -# 2931| getStmt(): [BlockStmt] { ... } -# 2932| getStmt(0): [DeclStmt] declaration -# 2932| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x971 -# 2932| Type = [Struct] String -# 2932| getVariable().getInitializer(): [Initializer] initializer for x971 -# 2932| getExpr(): [ConstructorCall] call to String -# 2932| Type = [VoidType] void -# 2932| ValueCategory = prvalue -# 2933| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2933| Type = [VoidType] void -# 2933| ValueCategory = prvalue -# 2933| getQualifier(): [VariableAccess] x971 -# 2933| Type = [Struct] String -# 2933| ValueCategory = lvalue -# 2933| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2933| Conversion = [BoolConversion] conversion to bool -# 2933| Type = [BoolType] bool -# 2933| Value = [CStyleCast] 0 -# 2933| ValueCategory = prvalue -# 2934| getStmt(972): [DoStmt] do (...) ... -# 2936| getCondition(): [Literal] 0 -# 2936| Type = [IntType] int -# 2936| Value = [Literal] 0 -# 2936| ValueCategory = prvalue -# 2934| getStmt(): [BlockStmt] { ... } -# 2935| getStmt(0): [DeclStmt] declaration -# 2935| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x972 -# 2935| Type = [Struct] String -# 2935| getVariable().getInitializer(): [Initializer] initializer for x972 -# 2935| getExpr(): [ConstructorCall] call to String -# 2935| Type = [VoidType] void -# 2935| ValueCategory = prvalue -# 2936| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2936| Type = [VoidType] void -# 2936| ValueCategory = prvalue -# 2936| getQualifier(): [VariableAccess] x972 -# 2936| Type = [Struct] String -# 2936| ValueCategory = lvalue -# 2936| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2936| Conversion = [BoolConversion] conversion to bool -# 2936| Type = [BoolType] bool -# 2936| Value = [CStyleCast] 0 -# 2936| ValueCategory = prvalue -# 2937| getStmt(973): [DoStmt] do (...) ... -# 2939| getCondition(): [Literal] 0 -# 2939| Type = [IntType] int -# 2939| Value = [Literal] 0 -# 2939| ValueCategory = prvalue -# 2937| getStmt(): [BlockStmt] { ... } -# 2938| getStmt(0): [DeclStmt] declaration -# 2938| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x973 -# 2938| Type = [Struct] String -# 2938| getVariable().getInitializer(): [Initializer] initializer for x973 -# 2938| getExpr(): [ConstructorCall] call to String -# 2938| Type = [VoidType] void -# 2938| ValueCategory = prvalue -# 2939| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2939| Type = [VoidType] void -# 2939| ValueCategory = prvalue -# 2939| getQualifier(): [VariableAccess] x973 -# 2939| Type = [Struct] String -# 2939| ValueCategory = lvalue -# 2939| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2939| Conversion = [BoolConversion] conversion to bool -# 2939| Type = [BoolType] bool -# 2939| Value = [CStyleCast] 0 -# 2939| ValueCategory = prvalue -# 2940| getStmt(974): [DoStmt] do (...) ... -# 2942| getCondition(): [Literal] 0 -# 2942| Type = [IntType] int -# 2942| Value = [Literal] 0 -# 2942| ValueCategory = prvalue -# 2940| getStmt(): [BlockStmt] { ... } -# 2941| getStmt(0): [DeclStmt] declaration -# 2941| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x974 -# 2941| Type = [Struct] String -# 2941| getVariable().getInitializer(): [Initializer] initializer for x974 -# 2941| getExpr(): [ConstructorCall] call to String -# 2941| Type = [VoidType] void -# 2941| ValueCategory = prvalue -# 2942| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2942| Type = [VoidType] void -# 2942| ValueCategory = prvalue -# 2942| getQualifier(): [VariableAccess] x974 -# 2942| Type = [Struct] String -# 2942| ValueCategory = lvalue -# 2942| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2942| Conversion = [BoolConversion] conversion to bool -# 2942| Type = [BoolType] bool -# 2942| Value = [CStyleCast] 0 -# 2942| ValueCategory = prvalue -# 2943| getStmt(975): [DoStmt] do (...) ... -# 2945| getCondition(): [Literal] 0 -# 2945| Type = [IntType] int -# 2945| Value = [Literal] 0 -# 2945| ValueCategory = prvalue -# 2943| getStmt(): [BlockStmt] { ... } -# 2944| getStmt(0): [DeclStmt] declaration -# 2944| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x975 -# 2944| Type = [Struct] String -# 2944| getVariable().getInitializer(): [Initializer] initializer for x975 -# 2944| getExpr(): [ConstructorCall] call to String -# 2944| Type = [VoidType] void -# 2944| ValueCategory = prvalue -# 2945| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2945| Type = [VoidType] void -# 2945| ValueCategory = prvalue -# 2945| getQualifier(): [VariableAccess] x975 -# 2945| Type = [Struct] String -# 2945| ValueCategory = lvalue -# 2945| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2945| Conversion = [BoolConversion] conversion to bool -# 2945| Type = [BoolType] bool -# 2945| Value = [CStyleCast] 0 -# 2945| ValueCategory = prvalue -# 2946| getStmt(976): [DoStmt] do (...) ... -# 2948| getCondition(): [Literal] 0 -# 2948| Type = [IntType] int -# 2948| Value = [Literal] 0 -# 2948| ValueCategory = prvalue -# 2946| getStmt(): [BlockStmt] { ... } -# 2947| getStmt(0): [DeclStmt] declaration -# 2947| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x976 -# 2947| Type = [Struct] String -# 2947| getVariable().getInitializer(): [Initializer] initializer for x976 -# 2947| getExpr(): [ConstructorCall] call to String -# 2947| Type = [VoidType] void -# 2947| ValueCategory = prvalue -# 2948| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2948| Type = [VoidType] void -# 2948| ValueCategory = prvalue -# 2948| getQualifier(): [VariableAccess] x976 -# 2948| Type = [Struct] String -# 2948| ValueCategory = lvalue -# 2948| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2948| Conversion = [BoolConversion] conversion to bool -# 2948| Type = [BoolType] bool -# 2948| Value = [CStyleCast] 0 -# 2948| ValueCategory = prvalue -# 2949| getStmt(977): [DoStmt] do (...) ... -# 2951| getCondition(): [Literal] 0 -# 2951| Type = [IntType] int -# 2951| Value = [Literal] 0 -# 2951| ValueCategory = prvalue -# 2949| getStmt(): [BlockStmt] { ... } -# 2950| getStmt(0): [DeclStmt] declaration -# 2950| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x977 -# 2950| Type = [Struct] String -# 2950| getVariable().getInitializer(): [Initializer] initializer for x977 -# 2950| getExpr(): [ConstructorCall] call to String -# 2950| Type = [VoidType] void -# 2950| ValueCategory = prvalue -# 2951| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2951| Type = [VoidType] void -# 2951| ValueCategory = prvalue -# 2951| getQualifier(): [VariableAccess] x977 -# 2951| Type = [Struct] String -# 2951| ValueCategory = lvalue -# 2951| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2951| Conversion = [BoolConversion] conversion to bool -# 2951| Type = [BoolType] bool -# 2951| Value = [CStyleCast] 0 -# 2951| ValueCategory = prvalue -# 2952| getStmt(978): [DoStmt] do (...) ... -# 2954| getCondition(): [Literal] 0 -# 2954| Type = [IntType] int -# 2954| Value = [Literal] 0 -# 2954| ValueCategory = prvalue -# 2952| getStmt(): [BlockStmt] { ... } -# 2953| getStmt(0): [DeclStmt] declaration -# 2953| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x978 -# 2953| Type = [Struct] String -# 2953| getVariable().getInitializer(): [Initializer] initializer for x978 -# 2953| getExpr(): [ConstructorCall] call to String -# 2953| Type = [VoidType] void -# 2953| ValueCategory = prvalue -# 2954| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2954| Type = [VoidType] void -# 2954| ValueCategory = prvalue -# 2954| getQualifier(): [VariableAccess] x978 -# 2954| Type = [Struct] String -# 2954| ValueCategory = lvalue -# 2954| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2954| Conversion = [BoolConversion] conversion to bool -# 2954| Type = [BoolType] bool -# 2954| Value = [CStyleCast] 0 -# 2954| ValueCategory = prvalue -# 2955| getStmt(979): [DoStmt] do (...) ... -# 2957| getCondition(): [Literal] 0 -# 2957| Type = [IntType] int -# 2957| Value = [Literal] 0 -# 2957| ValueCategory = prvalue -# 2955| getStmt(): [BlockStmt] { ... } -# 2956| getStmt(0): [DeclStmt] declaration -# 2956| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x979 -# 2956| Type = [Struct] String -# 2956| getVariable().getInitializer(): [Initializer] initializer for x979 -# 2956| getExpr(): [ConstructorCall] call to String -# 2956| Type = [VoidType] void -# 2956| ValueCategory = prvalue -# 2957| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2957| Type = [VoidType] void -# 2957| ValueCategory = prvalue -# 2957| getQualifier(): [VariableAccess] x979 -# 2957| Type = [Struct] String -# 2957| ValueCategory = lvalue -# 2957| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2957| Conversion = [BoolConversion] conversion to bool -# 2957| Type = [BoolType] bool -# 2957| Value = [CStyleCast] 0 -# 2957| ValueCategory = prvalue -# 2958| getStmt(980): [DoStmt] do (...) ... -# 2960| getCondition(): [Literal] 0 -# 2960| Type = [IntType] int -# 2960| Value = [Literal] 0 -# 2960| ValueCategory = prvalue -# 2958| getStmt(): [BlockStmt] { ... } -# 2959| getStmt(0): [DeclStmt] declaration -# 2959| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x980 -# 2959| Type = [Struct] String -# 2959| getVariable().getInitializer(): [Initializer] initializer for x980 -# 2959| getExpr(): [ConstructorCall] call to String -# 2959| Type = [VoidType] void -# 2959| ValueCategory = prvalue -# 2960| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2960| Type = [VoidType] void -# 2960| ValueCategory = prvalue -# 2960| getQualifier(): [VariableAccess] x980 -# 2960| Type = [Struct] String -# 2960| ValueCategory = lvalue -# 2960| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2960| Conversion = [BoolConversion] conversion to bool -# 2960| Type = [BoolType] bool -# 2960| Value = [CStyleCast] 0 -# 2960| ValueCategory = prvalue -# 2961| getStmt(981): [DoStmt] do (...) ... -# 2963| getCondition(): [Literal] 0 -# 2963| Type = [IntType] int -# 2963| Value = [Literal] 0 -# 2963| ValueCategory = prvalue -# 2961| getStmt(): [BlockStmt] { ... } -# 2962| getStmt(0): [DeclStmt] declaration -# 2962| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x981 -# 2962| Type = [Struct] String -# 2962| getVariable().getInitializer(): [Initializer] initializer for x981 -# 2962| getExpr(): [ConstructorCall] call to String -# 2962| Type = [VoidType] void -# 2962| ValueCategory = prvalue -# 2963| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2963| Type = [VoidType] void -# 2963| ValueCategory = prvalue -# 2963| getQualifier(): [VariableAccess] x981 -# 2963| Type = [Struct] String -# 2963| ValueCategory = lvalue -# 2963| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2963| Conversion = [BoolConversion] conversion to bool -# 2963| Type = [BoolType] bool -# 2963| Value = [CStyleCast] 0 -# 2963| ValueCategory = prvalue -# 2964| getStmt(982): [DoStmt] do (...) ... -# 2966| getCondition(): [Literal] 0 -# 2966| Type = [IntType] int -# 2966| Value = [Literal] 0 -# 2966| ValueCategory = prvalue -# 2964| getStmt(): [BlockStmt] { ... } -# 2965| getStmt(0): [DeclStmt] declaration -# 2965| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x982 -# 2965| Type = [Struct] String -# 2965| getVariable().getInitializer(): [Initializer] initializer for x982 -# 2965| getExpr(): [ConstructorCall] call to String -# 2965| Type = [VoidType] void -# 2965| ValueCategory = prvalue -# 2966| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2966| Type = [VoidType] void -# 2966| ValueCategory = prvalue -# 2966| getQualifier(): [VariableAccess] x982 -# 2966| Type = [Struct] String -# 2966| ValueCategory = lvalue -# 2966| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2966| Conversion = [BoolConversion] conversion to bool -# 2966| Type = [BoolType] bool -# 2966| Value = [CStyleCast] 0 -# 2966| ValueCategory = prvalue -# 2967| getStmt(983): [DoStmt] do (...) ... -# 2969| getCondition(): [Literal] 0 -# 2969| Type = [IntType] int -# 2969| Value = [Literal] 0 -# 2969| ValueCategory = prvalue -# 2967| getStmt(): [BlockStmt] { ... } -# 2968| getStmt(0): [DeclStmt] declaration -# 2968| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x983 -# 2968| Type = [Struct] String -# 2968| getVariable().getInitializer(): [Initializer] initializer for x983 -# 2968| getExpr(): [ConstructorCall] call to String -# 2968| Type = [VoidType] void -# 2968| ValueCategory = prvalue -# 2969| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2969| Type = [VoidType] void -# 2969| ValueCategory = prvalue -# 2969| getQualifier(): [VariableAccess] x983 -# 2969| Type = [Struct] String -# 2969| ValueCategory = lvalue -# 2969| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2969| Conversion = [BoolConversion] conversion to bool -# 2969| Type = [BoolType] bool -# 2969| Value = [CStyleCast] 0 -# 2969| ValueCategory = prvalue -# 2970| getStmt(984): [DoStmt] do (...) ... -# 2972| getCondition(): [Literal] 0 -# 2972| Type = [IntType] int -# 2972| Value = [Literal] 0 -# 2972| ValueCategory = prvalue -# 2970| getStmt(): [BlockStmt] { ... } -# 2971| getStmt(0): [DeclStmt] declaration -# 2971| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x984 -# 2971| Type = [Struct] String -# 2971| getVariable().getInitializer(): [Initializer] initializer for x984 -# 2971| getExpr(): [ConstructorCall] call to String -# 2971| Type = [VoidType] void -# 2971| ValueCategory = prvalue -# 2972| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2972| Type = [VoidType] void -# 2972| ValueCategory = prvalue -# 2972| getQualifier(): [VariableAccess] x984 -# 2972| Type = [Struct] String -# 2972| ValueCategory = lvalue -# 2972| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2972| Conversion = [BoolConversion] conversion to bool -# 2972| Type = [BoolType] bool -# 2972| Value = [CStyleCast] 0 -# 2972| ValueCategory = prvalue -# 2973| getStmt(985): [DoStmt] do (...) ... -# 2975| getCondition(): [Literal] 0 -# 2975| Type = [IntType] int -# 2975| Value = [Literal] 0 -# 2975| ValueCategory = prvalue -# 2973| getStmt(): [BlockStmt] { ... } -# 2974| getStmt(0): [DeclStmt] declaration -# 2974| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x985 -# 2974| Type = [Struct] String -# 2974| getVariable().getInitializer(): [Initializer] initializer for x985 -# 2974| getExpr(): [ConstructorCall] call to String -# 2974| Type = [VoidType] void -# 2974| ValueCategory = prvalue -# 2975| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2975| Type = [VoidType] void -# 2975| ValueCategory = prvalue -# 2975| getQualifier(): [VariableAccess] x985 -# 2975| Type = [Struct] String -# 2975| ValueCategory = lvalue -# 2975| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2975| Conversion = [BoolConversion] conversion to bool -# 2975| Type = [BoolType] bool -# 2975| Value = [CStyleCast] 0 -# 2975| ValueCategory = prvalue -# 2976| getStmt(986): [DoStmt] do (...) ... -# 2978| getCondition(): [Literal] 0 -# 2978| Type = [IntType] int -# 2978| Value = [Literal] 0 -# 2978| ValueCategory = prvalue -# 2976| getStmt(): [BlockStmt] { ... } -# 2977| getStmt(0): [DeclStmt] declaration -# 2977| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x986 -# 2977| Type = [Struct] String -# 2977| getVariable().getInitializer(): [Initializer] initializer for x986 -# 2977| getExpr(): [ConstructorCall] call to String -# 2977| Type = [VoidType] void -# 2977| ValueCategory = prvalue -# 2978| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2978| Type = [VoidType] void -# 2978| ValueCategory = prvalue -# 2978| getQualifier(): [VariableAccess] x986 -# 2978| Type = [Struct] String -# 2978| ValueCategory = lvalue -# 2978| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2978| Conversion = [BoolConversion] conversion to bool -# 2978| Type = [BoolType] bool -# 2978| Value = [CStyleCast] 0 -# 2978| ValueCategory = prvalue -# 2979| getStmt(987): [DoStmt] do (...) ... -# 2981| getCondition(): [Literal] 0 -# 2981| Type = [IntType] int -# 2981| Value = [Literal] 0 -# 2981| ValueCategory = prvalue -# 2979| getStmt(): [BlockStmt] { ... } -# 2980| getStmt(0): [DeclStmt] declaration -# 2980| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x987 -# 2980| Type = [Struct] String -# 2980| getVariable().getInitializer(): [Initializer] initializer for x987 -# 2980| getExpr(): [ConstructorCall] call to String -# 2980| Type = [VoidType] void -# 2980| ValueCategory = prvalue -# 2981| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2981| Type = [VoidType] void -# 2981| ValueCategory = prvalue -# 2981| getQualifier(): [VariableAccess] x987 -# 2981| Type = [Struct] String -# 2981| ValueCategory = lvalue -# 2981| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2981| Conversion = [BoolConversion] conversion to bool -# 2981| Type = [BoolType] bool -# 2981| Value = [CStyleCast] 0 -# 2981| ValueCategory = prvalue -# 2982| getStmt(988): [DoStmt] do (...) ... -# 2984| getCondition(): [Literal] 0 -# 2984| Type = [IntType] int -# 2984| Value = [Literal] 0 -# 2984| ValueCategory = prvalue -# 2982| getStmt(): [BlockStmt] { ... } -# 2983| getStmt(0): [DeclStmt] declaration -# 2983| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x988 -# 2983| Type = [Struct] String -# 2983| getVariable().getInitializer(): [Initializer] initializer for x988 -# 2983| getExpr(): [ConstructorCall] call to String -# 2983| Type = [VoidType] void -# 2983| ValueCategory = prvalue -# 2984| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2984| Type = [VoidType] void -# 2984| ValueCategory = prvalue -# 2984| getQualifier(): [VariableAccess] x988 -# 2984| Type = [Struct] String -# 2984| ValueCategory = lvalue -# 2984| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2984| Conversion = [BoolConversion] conversion to bool -# 2984| Type = [BoolType] bool -# 2984| Value = [CStyleCast] 0 -# 2984| ValueCategory = prvalue -# 2985| getStmt(989): [DoStmt] do (...) ... -# 2987| getCondition(): [Literal] 0 -# 2987| Type = [IntType] int -# 2987| Value = [Literal] 0 -# 2987| ValueCategory = prvalue -# 2985| getStmt(): [BlockStmt] { ... } -# 2986| getStmt(0): [DeclStmt] declaration -# 2986| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x989 -# 2986| Type = [Struct] String -# 2986| getVariable().getInitializer(): [Initializer] initializer for x989 -# 2986| getExpr(): [ConstructorCall] call to String -# 2986| Type = [VoidType] void -# 2986| ValueCategory = prvalue -# 2987| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2987| Type = [VoidType] void -# 2987| ValueCategory = prvalue -# 2987| getQualifier(): [VariableAccess] x989 -# 2987| Type = [Struct] String -# 2987| ValueCategory = lvalue -# 2987| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2987| Conversion = [BoolConversion] conversion to bool -# 2987| Type = [BoolType] bool -# 2987| Value = [CStyleCast] 0 -# 2987| ValueCategory = prvalue -# 2988| getStmt(990): [DoStmt] do (...) ... -# 2990| getCondition(): [Literal] 0 -# 2990| Type = [IntType] int -# 2990| Value = [Literal] 0 -# 2990| ValueCategory = prvalue -# 2988| getStmt(): [BlockStmt] { ... } -# 2989| getStmt(0): [DeclStmt] declaration -# 2989| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x990 -# 2989| Type = [Struct] String -# 2989| getVariable().getInitializer(): [Initializer] initializer for x990 -# 2989| getExpr(): [ConstructorCall] call to String -# 2989| Type = [VoidType] void -# 2989| ValueCategory = prvalue -# 2990| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2990| Type = [VoidType] void -# 2990| ValueCategory = prvalue -# 2990| getQualifier(): [VariableAccess] x990 -# 2990| Type = [Struct] String -# 2990| ValueCategory = lvalue -# 2990| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2990| Conversion = [BoolConversion] conversion to bool -# 2990| Type = [BoolType] bool -# 2990| Value = [CStyleCast] 0 -# 2990| ValueCategory = prvalue -# 2991| getStmt(991): [DoStmt] do (...) ... -# 2993| getCondition(): [Literal] 0 -# 2993| Type = [IntType] int -# 2993| Value = [Literal] 0 -# 2993| ValueCategory = prvalue -# 2991| getStmt(): [BlockStmt] { ... } -# 2992| getStmt(0): [DeclStmt] declaration -# 2992| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x991 -# 2992| Type = [Struct] String -# 2992| getVariable().getInitializer(): [Initializer] initializer for x991 -# 2992| getExpr(): [ConstructorCall] call to String -# 2992| Type = [VoidType] void -# 2992| ValueCategory = prvalue -# 2993| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2993| Type = [VoidType] void -# 2993| ValueCategory = prvalue -# 2993| getQualifier(): [VariableAccess] x991 -# 2993| Type = [Struct] String -# 2993| ValueCategory = lvalue -# 2993| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2993| Conversion = [BoolConversion] conversion to bool -# 2993| Type = [BoolType] bool -# 2993| Value = [CStyleCast] 0 -# 2993| ValueCategory = prvalue -# 2994| getStmt(992): [DoStmt] do (...) ... -# 2996| getCondition(): [Literal] 0 -# 2996| Type = [IntType] int -# 2996| Value = [Literal] 0 -# 2996| ValueCategory = prvalue -# 2994| getStmt(): [BlockStmt] { ... } -# 2995| getStmt(0): [DeclStmt] declaration -# 2995| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x992 -# 2995| Type = [Struct] String -# 2995| getVariable().getInitializer(): [Initializer] initializer for x992 -# 2995| getExpr(): [ConstructorCall] call to String -# 2995| Type = [VoidType] void -# 2995| ValueCategory = prvalue -# 2996| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2996| Type = [VoidType] void -# 2996| ValueCategory = prvalue -# 2996| getQualifier(): [VariableAccess] x992 -# 2996| Type = [Struct] String -# 2996| ValueCategory = lvalue -# 2996| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2996| Conversion = [BoolConversion] conversion to bool -# 2996| Type = [BoolType] bool -# 2996| Value = [CStyleCast] 0 -# 2996| ValueCategory = prvalue -# 2997| getStmt(993): [DoStmt] do (...) ... -# 2999| getCondition(): [Literal] 0 -# 2999| Type = [IntType] int -# 2999| Value = [Literal] 0 -# 2999| ValueCategory = prvalue -# 2997| getStmt(): [BlockStmt] { ... } -# 2998| getStmt(0): [DeclStmt] declaration -# 2998| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x993 -# 2998| Type = [Struct] String -# 2998| getVariable().getInitializer(): [Initializer] initializer for x993 -# 2998| getExpr(): [ConstructorCall] call to String -# 2998| Type = [VoidType] void -# 2998| ValueCategory = prvalue -# 2999| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2999| Type = [VoidType] void -# 2999| ValueCategory = prvalue -# 2999| getQualifier(): [VariableAccess] x993 -# 2999| Type = [Struct] String -# 2999| ValueCategory = lvalue -# 2999| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2999| Conversion = [BoolConversion] conversion to bool -# 2999| Type = [BoolType] bool -# 2999| Value = [CStyleCast] 0 -# 2999| ValueCategory = prvalue -# 3000| getStmt(994): [DoStmt] do (...) ... -# 3002| getCondition(): [Literal] 0 -# 3002| Type = [IntType] int -# 3002| Value = [Literal] 0 -# 3002| ValueCategory = prvalue -# 3000| getStmt(): [BlockStmt] { ... } -# 3001| getStmt(0): [DeclStmt] declaration -# 3001| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x994 -# 3001| Type = [Struct] String -# 3001| getVariable().getInitializer(): [Initializer] initializer for x994 -# 3001| getExpr(): [ConstructorCall] call to String -# 3001| Type = [VoidType] void -# 3001| ValueCategory = prvalue -# 3002| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3002| Type = [VoidType] void -# 3002| ValueCategory = prvalue -# 3002| getQualifier(): [VariableAccess] x994 -# 3002| Type = [Struct] String -# 3002| ValueCategory = lvalue -# 3002| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3002| Conversion = [BoolConversion] conversion to bool -# 3002| Type = [BoolType] bool -# 3002| Value = [CStyleCast] 0 -# 3002| ValueCategory = prvalue -# 3003| getStmt(995): [DoStmt] do (...) ... -# 3005| getCondition(): [Literal] 0 -# 3005| Type = [IntType] int -# 3005| Value = [Literal] 0 -# 3005| ValueCategory = prvalue -# 3003| getStmt(): [BlockStmt] { ... } -# 3004| getStmt(0): [DeclStmt] declaration -# 3004| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x995 -# 3004| Type = [Struct] String -# 3004| getVariable().getInitializer(): [Initializer] initializer for x995 -# 3004| getExpr(): [ConstructorCall] call to String -# 3004| Type = [VoidType] void -# 3004| ValueCategory = prvalue -# 3005| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3005| Type = [VoidType] void -# 3005| ValueCategory = prvalue -# 3005| getQualifier(): [VariableAccess] x995 -# 3005| Type = [Struct] String -# 3005| ValueCategory = lvalue -# 3005| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3005| Conversion = [BoolConversion] conversion to bool -# 3005| Type = [BoolType] bool -# 3005| Value = [CStyleCast] 0 -# 3005| ValueCategory = prvalue -# 3006| getStmt(996): [DoStmt] do (...) ... -# 3008| getCondition(): [Literal] 0 -# 3008| Type = [IntType] int -# 3008| Value = [Literal] 0 -# 3008| ValueCategory = prvalue -# 3006| getStmt(): [BlockStmt] { ... } -# 3007| getStmt(0): [DeclStmt] declaration -# 3007| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x996 -# 3007| Type = [Struct] String -# 3007| getVariable().getInitializer(): [Initializer] initializer for x996 -# 3007| getExpr(): [ConstructorCall] call to String -# 3007| Type = [VoidType] void -# 3007| ValueCategory = prvalue -# 3008| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3008| Type = [VoidType] void -# 3008| ValueCategory = prvalue -# 3008| getQualifier(): [VariableAccess] x996 -# 3008| Type = [Struct] String -# 3008| ValueCategory = lvalue -# 3008| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3008| Conversion = [BoolConversion] conversion to bool -# 3008| Type = [BoolType] bool -# 3008| Value = [CStyleCast] 0 -# 3008| ValueCategory = prvalue -# 3009| getStmt(997): [DoStmt] do (...) ... -# 3011| getCondition(): [Literal] 0 -# 3011| Type = [IntType] int -# 3011| Value = [Literal] 0 -# 3011| ValueCategory = prvalue -# 3009| getStmt(): [BlockStmt] { ... } -# 3010| getStmt(0): [DeclStmt] declaration -# 3010| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x997 -# 3010| Type = [Struct] String -# 3010| getVariable().getInitializer(): [Initializer] initializer for x997 -# 3010| getExpr(): [ConstructorCall] call to String -# 3010| Type = [VoidType] void -# 3010| ValueCategory = prvalue -# 3011| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3011| Type = [VoidType] void -# 3011| ValueCategory = prvalue -# 3011| getQualifier(): [VariableAccess] x997 -# 3011| Type = [Struct] String -# 3011| ValueCategory = lvalue -# 3011| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3011| Conversion = [BoolConversion] conversion to bool -# 3011| Type = [BoolType] bool -# 3011| Value = [CStyleCast] 0 -# 3011| ValueCategory = prvalue -# 3012| getStmt(998): [DoStmt] do (...) ... -# 3014| getCondition(): [Literal] 0 -# 3014| Type = [IntType] int -# 3014| Value = [Literal] 0 -# 3014| ValueCategory = prvalue -# 3012| getStmt(): [BlockStmt] { ... } -# 3013| getStmt(0): [DeclStmt] declaration -# 3013| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x998 -# 3013| Type = [Struct] String -# 3013| getVariable().getInitializer(): [Initializer] initializer for x998 -# 3013| getExpr(): [ConstructorCall] call to String -# 3013| Type = [VoidType] void -# 3013| ValueCategory = prvalue -# 3014| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3014| Type = [VoidType] void -# 3014| ValueCategory = prvalue -# 3014| getQualifier(): [VariableAccess] x998 -# 3014| Type = [Struct] String -# 3014| ValueCategory = lvalue -# 3014| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3014| Conversion = [BoolConversion] conversion to bool -# 3014| Type = [BoolType] bool -# 3014| Value = [CStyleCast] 0 -# 3014| ValueCategory = prvalue -# 3015| getStmt(999): [DoStmt] do (...) ... -# 3017| getCondition(): [Literal] 0 -# 3017| Type = [IntType] int -# 3017| Value = [Literal] 0 -# 3017| ValueCategory = prvalue -# 3015| getStmt(): [BlockStmt] { ... } -# 3016| getStmt(0): [DeclStmt] declaration -# 3016| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x999 -# 3016| Type = [Struct] String -# 3016| getVariable().getInitializer(): [Initializer] initializer for x999 -# 3016| getExpr(): [ConstructorCall] call to String -# 3016| Type = [VoidType] void -# 3016| ValueCategory = prvalue -# 3017| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3017| Type = [VoidType] void -# 3017| ValueCategory = prvalue -# 3017| getQualifier(): [VariableAccess] x999 -# 3017| Type = [Struct] String -# 3017| ValueCategory = lvalue -# 3017| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3017| Conversion = [BoolConversion] conversion to bool -# 3017| Type = [BoolType] bool -# 3017| Value = [CStyleCast] 0 -# 3017| ValueCategory = prvalue -# 3018| getStmt(1000): [DoStmt] do (...) ... -# 3020| getCondition(): [Literal] 0 -# 3020| Type = [IntType] int -# 3020| Value = [Literal] 0 -# 3020| ValueCategory = prvalue -# 3018| getStmt(): [BlockStmt] { ... } -# 3019| getStmt(0): [DeclStmt] declaration -# 3019| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1000 -# 3019| Type = [Struct] String -# 3019| getVariable().getInitializer(): [Initializer] initializer for x1000 -# 3019| getExpr(): [ConstructorCall] call to String -# 3019| Type = [VoidType] void -# 3019| ValueCategory = prvalue -# 3020| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3020| Type = [VoidType] void -# 3020| ValueCategory = prvalue -# 3020| getQualifier(): [VariableAccess] x1000 -# 3020| Type = [Struct] String -# 3020| ValueCategory = lvalue -# 3020| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3020| Conversion = [BoolConversion] conversion to bool -# 3020| Type = [BoolType] bool -# 3020| Value = [CStyleCast] 0 -# 3020| ValueCategory = prvalue -# 3021| getStmt(1001): [DoStmt] do (...) ... -# 3023| getCondition(): [Literal] 0 -# 3023| Type = [IntType] int -# 3023| Value = [Literal] 0 -# 3023| ValueCategory = prvalue -# 3021| getStmt(): [BlockStmt] { ... } -# 3022| getStmt(0): [DeclStmt] declaration -# 3022| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1001 -# 3022| Type = [Struct] String -# 3022| getVariable().getInitializer(): [Initializer] initializer for x1001 -# 3022| getExpr(): [ConstructorCall] call to String -# 3022| Type = [VoidType] void -# 3022| ValueCategory = prvalue -# 3023| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3023| Type = [VoidType] void -# 3023| ValueCategory = prvalue -# 3023| getQualifier(): [VariableAccess] x1001 -# 3023| Type = [Struct] String -# 3023| ValueCategory = lvalue -# 3023| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3023| Conversion = [BoolConversion] conversion to bool -# 3023| Type = [BoolType] bool -# 3023| Value = [CStyleCast] 0 -# 3023| ValueCategory = prvalue -# 3024| getStmt(1002): [DoStmt] do (...) ... -# 3026| getCondition(): [Literal] 0 -# 3026| Type = [IntType] int -# 3026| Value = [Literal] 0 -# 3026| ValueCategory = prvalue -# 3024| getStmt(): [BlockStmt] { ... } -# 3025| getStmt(0): [DeclStmt] declaration -# 3025| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1002 -# 3025| Type = [Struct] String -# 3025| getVariable().getInitializer(): [Initializer] initializer for x1002 -# 3025| getExpr(): [ConstructorCall] call to String -# 3025| Type = [VoidType] void -# 3025| ValueCategory = prvalue -# 3026| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3026| Type = [VoidType] void -# 3026| ValueCategory = prvalue -# 3026| getQualifier(): [VariableAccess] x1002 -# 3026| Type = [Struct] String -# 3026| ValueCategory = lvalue -# 3026| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3026| Conversion = [BoolConversion] conversion to bool -# 3026| Type = [BoolType] bool -# 3026| Value = [CStyleCast] 0 -# 3026| ValueCategory = prvalue -# 3027| getStmt(1003): [DoStmt] do (...) ... -# 3029| getCondition(): [Literal] 0 -# 3029| Type = [IntType] int -# 3029| Value = [Literal] 0 -# 3029| ValueCategory = prvalue -# 3027| getStmt(): [BlockStmt] { ... } -# 3028| getStmt(0): [DeclStmt] declaration -# 3028| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1003 -# 3028| Type = [Struct] String -# 3028| getVariable().getInitializer(): [Initializer] initializer for x1003 -# 3028| getExpr(): [ConstructorCall] call to String -# 3028| Type = [VoidType] void -# 3028| ValueCategory = prvalue -# 3029| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3029| Type = [VoidType] void -# 3029| ValueCategory = prvalue -# 3029| getQualifier(): [VariableAccess] x1003 -# 3029| Type = [Struct] String -# 3029| ValueCategory = lvalue -# 3029| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3029| Conversion = [BoolConversion] conversion to bool -# 3029| Type = [BoolType] bool -# 3029| Value = [CStyleCast] 0 -# 3029| ValueCategory = prvalue -# 3030| getStmt(1004): [DoStmt] do (...) ... -# 3032| getCondition(): [Literal] 0 -# 3032| Type = [IntType] int -# 3032| Value = [Literal] 0 -# 3032| ValueCategory = prvalue -# 3030| getStmt(): [BlockStmt] { ... } -# 3031| getStmt(0): [DeclStmt] declaration -# 3031| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1004 -# 3031| Type = [Struct] String -# 3031| getVariable().getInitializer(): [Initializer] initializer for x1004 -# 3031| getExpr(): [ConstructorCall] call to String -# 3031| Type = [VoidType] void -# 3031| ValueCategory = prvalue -# 3032| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3032| Type = [VoidType] void -# 3032| ValueCategory = prvalue -# 3032| getQualifier(): [VariableAccess] x1004 -# 3032| Type = [Struct] String -# 3032| ValueCategory = lvalue -# 3032| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3032| Conversion = [BoolConversion] conversion to bool -# 3032| Type = [BoolType] bool -# 3032| Value = [CStyleCast] 0 -# 3032| ValueCategory = prvalue -# 3033| getStmt(1005): [DoStmt] do (...) ... -# 3035| getCondition(): [Literal] 0 -# 3035| Type = [IntType] int -# 3035| Value = [Literal] 0 -# 3035| ValueCategory = prvalue -# 3033| getStmt(): [BlockStmt] { ... } -# 3034| getStmt(0): [DeclStmt] declaration -# 3034| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1005 -# 3034| Type = [Struct] String -# 3034| getVariable().getInitializer(): [Initializer] initializer for x1005 -# 3034| getExpr(): [ConstructorCall] call to String -# 3034| Type = [VoidType] void -# 3034| ValueCategory = prvalue -# 3035| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3035| Type = [VoidType] void -# 3035| ValueCategory = prvalue -# 3035| getQualifier(): [VariableAccess] x1005 -# 3035| Type = [Struct] String -# 3035| ValueCategory = lvalue -# 3035| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3035| Conversion = [BoolConversion] conversion to bool -# 3035| Type = [BoolType] bool -# 3035| Value = [CStyleCast] 0 -# 3035| ValueCategory = prvalue -# 3036| getStmt(1006): [DoStmt] do (...) ... -# 3038| getCondition(): [Literal] 0 -# 3038| Type = [IntType] int -# 3038| Value = [Literal] 0 -# 3038| ValueCategory = prvalue -# 3036| getStmt(): [BlockStmt] { ... } -# 3037| getStmt(0): [DeclStmt] declaration -# 3037| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1006 -# 3037| Type = [Struct] String -# 3037| getVariable().getInitializer(): [Initializer] initializer for x1006 -# 3037| getExpr(): [ConstructorCall] call to String -# 3037| Type = [VoidType] void -# 3037| ValueCategory = prvalue -# 3038| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3038| Type = [VoidType] void -# 3038| ValueCategory = prvalue -# 3038| getQualifier(): [VariableAccess] x1006 -# 3038| Type = [Struct] String -# 3038| ValueCategory = lvalue -# 3038| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3038| Conversion = [BoolConversion] conversion to bool -# 3038| Type = [BoolType] bool -# 3038| Value = [CStyleCast] 0 -# 3038| ValueCategory = prvalue -# 3039| getStmt(1007): [DoStmt] do (...) ... -# 3041| getCondition(): [Literal] 0 -# 3041| Type = [IntType] int -# 3041| Value = [Literal] 0 -# 3041| ValueCategory = prvalue -# 3039| getStmt(): [BlockStmt] { ... } -# 3040| getStmt(0): [DeclStmt] declaration -# 3040| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1007 -# 3040| Type = [Struct] String -# 3040| getVariable().getInitializer(): [Initializer] initializer for x1007 -# 3040| getExpr(): [ConstructorCall] call to String -# 3040| Type = [VoidType] void -# 3040| ValueCategory = prvalue -# 3041| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3041| Type = [VoidType] void -# 3041| ValueCategory = prvalue -# 3041| getQualifier(): [VariableAccess] x1007 -# 3041| Type = [Struct] String -# 3041| ValueCategory = lvalue -# 3041| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3041| Conversion = [BoolConversion] conversion to bool -# 3041| Type = [BoolType] bool -# 3041| Value = [CStyleCast] 0 -# 3041| ValueCategory = prvalue -# 3042| getStmt(1008): [DoStmt] do (...) ... -# 3044| getCondition(): [Literal] 0 -# 3044| Type = [IntType] int -# 3044| Value = [Literal] 0 -# 3044| ValueCategory = prvalue -# 3042| getStmt(): [BlockStmt] { ... } -# 3043| getStmt(0): [DeclStmt] declaration -# 3043| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1008 -# 3043| Type = [Struct] String -# 3043| getVariable().getInitializer(): [Initializer] initializer for x1008 -# 3043| getExpr(): [ConstructorCall] call to String -# 3043| Type = [VoidType] void -# 3043| ValueCategory = prvalue -# 3044| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3044| Type = [VoidType] void -# 3044| ValueCategory = prvalue -# 3044| getQualifier(): [VariableAccess] x1008 -# 3044| Type = [Struct] String -# 3044| ValueCategory = lvalue -# 3044| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3044| Conversion = [BoolConversion] conversion to bool -# 3044| Type = [BoolType] bool -# 3044| Value = [CStyleCast] 0 -# 3044| ValueCategory = prvalue -# 3045| getStmt(1009): [DoStmt] do (...) ... -# 3047| getCondition(): [Literal] 0 -# 3047| Type = [IntType] int -# 3047| Value = [Literal] 0 -# 3047| ValueCategory = prvalue -# 3045| getStmt(): [BlockStmt] { ... } -# 3046| getStmt(0): [DeclStmt] declaration -# 3046| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1009 -# 3046| Type = [Struct] String -# 3046| getVariable().getInitializer(): [Initializer] initializer for x1009 -# 3046| getExpr(): [ConstructorCall] call to String -# 3046| Type = [VoidType] void -# 3046| ValueCategory = prvalue -# 3047| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3047| Type = [VoidType] void -# 3047| ValueCategory = prvalue -# 3047| getQualifier(): [VariableAccess] x1009 -# 3047| Type = [Struct] String -# 3047| ValueCategory = lvalue -# 3047| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3047| Conversion = [BoolConversion] conversion to bool -# 3047| Type = [BoolType] bool -# 3047| Value = [CStyleCast] 0 -# 3047| ValueCategory = prvalue -# 3048| getStmt(1010): [DoStmt] do (...) ... -# 3050| getCondition(): [Literal] 0 -# 3050| Type = [IntType] int -# 3050| Value = [Literal] 0 -# 3050| ValueCategory = prvalue -# 3048| getStmt(): [BlockStmt] { ... } -# 3049| getStmt(0): [DeclStmt] declaration -# 3049| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1010 -# 3049| Type = [Struct] String -# 3049| getVariable().getInitializer(): [Initializer] initializer for x1010 -# 3049| getExpr(): [ConstructorCall] call to String -# 3049| Type = [VoidType] void -# 3049| ValueCategory = prvalue -# 3050| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3050| Type = [VoidType] void -# 3050| ValueCategory = prvalue -# 3050| getQualifier(): [VariableAccess] x1010 -# 3050| Type = [Struct] String -# 3050| ValueCategory = lvalue -# 3050| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3050| Conversion = [BoolConversion] conversion to bool -# 3050| Type = [BoolType] bool -# 3050| Value = [CStyleCast] 0 -# 3050| ValueCategory = prvalue -# 3051| getStmt(1011): [DoStmt] do (...) ... -# 3053| getCondition(): [Literal] 0 -# 3053| Type = [IntType] int -# 3053| Value = [Literal] 0 -# 3053| ValueCategory = prvalue -# 3051| getStmt(): [BlockStmt] { ... } -# 3052| getStmt(0): [DeclStmt] declaration -# 3052| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1011 -# 3052| Type = [Struct] String -# 3052| getVariable().getInitializer(): [Initializer] initializer for x1011 -# 3052| getExpr(): [ConstructorCall] call to String -# 3052| Type = [VoidType] void -# 3052| ValueCategory = prvalue -# 3053| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3053| Type = [VoidType] void -# 3053| ValueCategory = prvalue -# 3053| getQualifier(): [VariableAccess] x1011 -# 3053| Type = [Struct] String -# 3053| ValueCategory = lvalue -# 3053| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3053| Conversion = [BoolConversion] conversion to bool -# 3053| Type = [BoolType] bool -# 3053| Value = [CStyleCast] 0 -# 3053| ValueCategory = prvalue -# 3054| getStmt(1012): [DoStmt] do (...) ... -# 3056| getCondition(): [Literal] 0 -# 3056| Type = [IntType] int -# 3056| Value = [Literal] 0 -# 3056| ValueCategory = prvalue -# 3054| getStmt(): [BlockStmt] { ... } -# 3055| getStmt(0): [DeclStmt] declaration -# 3055| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1012 -# 3055| Type = [Struct] String -# 3055| getVariable().getInitializer(): [Initializer] initializer for x1012 -# 3055| getExpr(): [ConstructorCall] call to String -# 3055| Type = [VoidType] void -# 3055| ValueCategory = prvalue -# 3056| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3056| Type = [VoidType] void -# 3056| ValueCategory = prvalue -# 3056| getQualifier(): [VariableAccess] x1012 -# 3056| Type = [Struct] String -# 3056| ValueCategory = lvalue -# 3056| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3056| Conversion = [BoolConversion] conversion to bool -# 3056| Type = [BoolType] bool -# 3056| Value = [CStyleCast] 0 -# 3056| ValueCategory = prvalue -# 3057| getStmt(1013): [DoStmt] do (...) ... -# 3059| getCondition(): [Literal] 0 -# 3059| Type = [IntType] int -# 3059| Value = [Literal] 0 -# 3059| ValueCategory = prvalue -# 3057| getStmt(): [BlockStmt] { ... } -# 3058| getStmt(0): [DeclStmt] declaration -# 3058| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1013 -# 3058| Type = [Struct] String -# 3058| getVariable().getInitializer(): [Initializer] initializer for x1013 -# 3058| getExpr(): [ConstructorCall] call to String -# 3058| Type = [VoidType] void -# 3058| ValueCategory = prvalue -# 3059| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3059| Type = [VoidType] void -# 3059| ValueCategory = prvalue -# 3059| getQualifier(): [VariableAccess] x1013 -# 3059| Type = [Struct] String -# 3059| ValueCategory = lvalue -# 3059| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3059| Conversion = [BoolConversion] conversion to bool -# 3059| Type = [BoolType] bool -# 3059| Value = [CStyleCast] 0 -# 3059| ValueCategory = prvalue -# 3060| getStmt(1014): [DoStmt] do (...) ... -# 3062| getCondition(): [Literal] 0 -# 3062| Type = [IntType] int -# 3062| Value = [Literal] 0 -# 3062| ValueCategory = prvalue -# 3060| getStmt(): [BlockStmt] { ... } -# 3061| getStmt(0): [DeclStmt] declaration -# 3061| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1014 -# 3061| Type = [Struct] String -# 3061| getVariable().getInitializer(): [Initializer] initializer for x1014 -# 3061| getExpr(): [ConstructorCall] call to String -# 3061| Type = [VoidType] void -# 3061| ValueCategory = prvalue -# 3062| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3062| Type = [VoidType] void -# 3062| ValueCategory = prvalue -# 3062| getQualifier(): [VariableAccess] x1014 -# 3062| Type = [Struct] String -# 3062| ValueCategory = lvalue -# 3062| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3062| Conversion = [BoolConversion] conversion to bool -# 3062| Type = [BoolType] bool -# 3062| Value = [CStyleCast] 0 -# 3062| ValueCategory = prvalue -# 3063| getStmt(1015): [DoStmt] do (...) ... -# 3065| getCondition(): [Literal] 0 -# 3065| Type = [IntType] int -# 3065| Value = [Literal] 0 -# 3065| ValueCategory = prvalue -# 3063| getStmt(): [BlockStmt] { ... } -# 3064| getStmt(0): [DeclStmt] declaration -# 3064| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1015 -# 3064| Type = [Struct] String -# 3064| getVariable().getInitializer(): [Initializer] initializer for x1015 -# 3064| getExpr(): [ConstructorCall] call to String -# 3064| Type = [VoidType] void -# 3064| ValueCategory = prvalue -# 3065| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3065| Type = [VoidType] void -# 3065| ValueCategory = prvalue -# 3065| getQualifier(): [VariableAccess] x1015 -# 3065| Type = [Struct] String -# 3065| ValueCategory = lvalue -# 3065| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3065| Conversion = [BoolConversion] conversion to bool -# 3065| Type = [BoolType] bool -# 3065| Value = [CStyleCast] 0 -# 3065| ValueCategory = prvalue -# 3066| getStmt(1016): [DoStmt] do (...) ... -# 3068| getCondition(): [Literal] 0 -# 3068| Type = [IntType] int -# 3068| Value = [Literal] 0 -# 3068| ValueCategory = prvalue -# 3066| getStmt(): [BlockStmt] { ... } -# 3067| getStmt(0): [DeclStmt] declaration -# 3067| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1016 -# 3067| Type = [Struct] String -# 3067| getVariable().getInitializer(): [Initializer] initializer for x1016 -# 3067| getExpr(): [ConstructorCall] call to String -# 3067| Type = [VoidType] void -# 3067| ValueCategory = prvalue -# 3068| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3068| Type = [VoidType] void -# 3068| ValueCategory = prvalue -# 3068| getQualifier(): [VariableAccess] x1016 -# 3068| Type = [Struct] String -# 3068| ValueCategory = lvalue -# 3068| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3068| Conversion = [BoolConversion] conversion to bool -# 3068| Type = [BoolType] bool -# 3068| Value = [CStyleCast] 0 -# 3068| ValueCategory = prvalue -# 3069| getStmt(1017): [DoStmt] do (...) ... -# 3071| getCondition(): [Literal] 0 -# 3071| Type = [IntType] int -# 3071| Value = [Literal] 0 -# 3071| ValueCategory = prvalue -# 3069| getStmt(): [BlockStmt] { ... } -# 3070| getStmt(0): [DeclStmt] declaration -# 3070| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1017 -# 3070| Type = [Struct] String -# 3070| getVariable().getInitializer(): [Initializer] initializer for x1017 -# 3070| getExpr(): [ConstructorCall] call to String -# 3070| Type = [VoidType] void -# 3070| ValueCategory = prvalue -# 3071| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3071| Type = [VoidType] void -# 3071| ValueCategory = prvalue -# 3071| getQualifier(): [VariableAccess] x1017 -# 3071| Type = [Struct] String -# 3071| ValueCategory = lvalue -# 3071| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3071| Conversion = [BoolConversion] conversion to bool -# 3071| Type = [BoolType] bool -# 3071| Value = [CStyleCast] 0 -# 3071| ValueCategory = prvalue -# 3072| getStmt(1018): [DoStmt] do (...) ... -# 3074| getCondition(): [Literal] 0 -# 3074| Type = [IntType] int -# 3074| Value = [Literal] 0 -# 3074| ValueCategory = prvalue -# 3072| getStmt(): [BlockStmt] { ... } -# 3073| getStmt(0): [DeclStmt] declaration -# 3073| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1018 -# 3073| Type = [Struct] String -# 3073| getVariable().getInitializer(): [Initializer] initializer for x1018 -# 3073| getExpr(): [ConstructorCall] call to String -# 3073| Type = [VoidType] void -# 3073| ValueCategory = prvalue -# 3074| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3074| Type = [VoidType] void -# 3074| ValueCategory = prvalue -# 3074| getQualifier(): [VariableAccess] x1018 -# 3074| Type = [Struct] String -# 3074| ValueCategory = lvalue -# 3074| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3074| Conversion = [BoolConversion] conversion to bool -# 3074| Type = [BoolType] bool -# 3074| Value = [CStyleCast] 0 -# 3074| ValueCategory = prvalue -# 3075| getStmt(1019): [DoStmt] do (...) ... -# 3077| getCondition(): [Literal] 0 -# 3077| Type = [IntType] int -# 3077| Value = [Literal] 0 -# 3077| ValueCategory = prvalue -# 3075| getStmt(): [BlockStmt] { ... } -# 3076| getStmt(0): [DeclStmt] declaration -# 3076| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1019 -# 3076| Type = [Struct] String -# 3076| getVariable().getInitializer(): [Initializer] initializer for x1019 -# 3076| getExpr(): [ConstructorCall] call to String -# 3076| Type = [VoidType] void -# 3076| ValueCategory = prvalue -# 3077| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3077| Type = [VoidType] void -# 3077| ValueCategory = prvalue -# 3077| getQualifier(): [VariableAccess] x1019 -# 3077| Type = [Struct] String -# 3077| ValueCategory = lvalue -# 3077| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3077| Conversion = [BoolConversion] conversion to bool -# 3077| Type = [BoolType] bool -# 3077| Value = [CStyleCast] 0 -# 3077| ValueCategory = prvalue -# 3078| getStmt(1020): [DoStmt] do (...) ... -# 3080| getCondition(): [Literal] 0 -# 3080| Type = [IntType] int -# 3080| Value = [Literal] 0 -# 3080| ValueCategory = prvalue -# 3078| getStmt(): [BlockStmt] { ... } -# 3079| getStmt(0): [DeclStmt] declaration -# 3079| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1020 -# 3079| Type = [Struct] String -# 3079| getVariable().getInitializer(): [Initializer] initializer for x1020 -# 3079| getExpr(): [ConstructorCall] call to String -# 3079| Type = [VoidType] void -# 3079| ValueCategory = prvalue -# 3080| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3080| Type = [VoidType] void -# 3080| ValueCategory = prvalue -# 3080| getQualifier(): [VariableAccess] x1020 -# 3080| Type = [Struct] String -# 3080| ValueCategory = lvalue -# 3080| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3080| Conversion = [BoolConversion] conversion to bool -# 3080| Type = [BoolType] bool -# 3080| Value = [CStyleCast] 0 -# 3080| ValueCategory = prvalue -# 3081| getStmt(1021): [DoStmt] do (...) ... -# 3083| getCondition(): [Literal] 0 -# 3083| Type = [IntType] int -# 3083| Value = [Literal] 0 -# 3083| ValueCategory = prvalue -# 3081| getStmt(): [BlockStmt] { ... } -# 3082| getStmt(0): [DeclStmt] declaration -# 3082| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1021 -# 3082| Type = [Struct] String -# 3082| getVariable().getInitializer(): [Initializer] initializer for x1021 -# 3082| getExpr(): [ConstructorCall] call to String -# 3082| Type = [VoidType] void -# 3082| ValueCategory = prvalue -# 3083| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3083| Type = [VoidType] void -# 3083| ValueCategory = prvalue -# 3083| getQualifier(): [VariableAccess] x1021 -# 3083| Type = [Struct] String -# 3083| ValueCategory = lvalue -# 3083| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3083| Conversion = [BoolConversion] conversion to bool -# 3083| Type = [BoolType] bool -# 3083| Value = [CStyleCast] 0 -# 3083| ValueCategory = prvalue -# 3084| getStmt(1022): [DoStmt] do (...) ... -# 3086| getCondition(): [Literal] 0 -# 3086| Type = [IntType] int -# 3086| Value = [Literal] 0 -# 3086| ValueCategory = prvalue -# 3084| getStmt(): [BlockStmt] { ... } -# 3085| getStmt(0): [DeclStmt] declaration -# 3085| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1022 -# 3085| Type = [Struct] String -# 3085| getVariable().getInitializer(): [Initializer] initializer for x1022 -# 3085| getExpr(): [ConstructorCall] call to String -# 3085| Type = [VoidType] void -# 3085| ValueCategory = prvalue -# 3086| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3086| Type = [VoidType] void -# 3086| ValueCategory = prvalue -# 3086| getQualifier(): [VariableAccess] x1022 -# 3086| Type = [Struct] String -# 3086| ValueCategory = lvalue -# 3086| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3086| Conversion = [BoolConversion] conversion to bool -# 3086| Type = [BoolType] bool -# 3086| Value = [CStyleCast] 0 -# 3086| ValueCategory = prvalue -# 3087| getStmt(1023): [DoStmt] do (...) ... -# 3089| getCondition(): [Literal] 0 -# 3089| Type = [IntType] int -# 3089| Value = [Literal] 0 -# 3089| ValueCategory = prvalue -# 3087| getStmt(): [BlockStmt] { ... } -# 3088| getStmt(0): [DeclStmt] declaration -# 3088| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1023 -# 3088| Type = [Struct] String -# 3088| getVariable().getInitializer(): [Initializer] initializer for x1023 -# 3088| getExpr(): [ConstructorCall] call to String -# 3088| Type = [VoidType] void -# 3088| ValueCategory = prvalue -# 3089| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3089| Type = [VoidType] void -# 3089| ValueCategory = prvalue -# 3089| getQualifier(): [VariableAccess] x1023 -# 3089| Type = [Struct] String -# 3089| ValueCategory = lvalue -# 3089| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3089| Conversion = [BoolConversion] conversion to bool -# 3089| Type = [BoolType] bool -# 3089| Value = [CStyleCast] 0 -# 3089| ValueCategory = prvalue -# 3090| getStmt(1024): [DoStmt] do (...) ... -# 3092| getCondition(): [Literal] 0 -# 3092| Type = [IntType] int -# 3092| Value = [Literal] 0 -# 3092| ValueCategory = prvalue -# 3090| getStmt(): [BlockStmt] { ... } -# 3091| getStmt(0): [DeclStmt] declaration -# 3091| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1024 -# 3091| Type = [Struct] String -# 3091| getVariable().getInitializer(): [Initializer] initializer for x1024 -# 3091| getExpr(): [ConstructorCall] call to String -# 3091| Type = [VoidType] void -# 3091| ValueCategory = prvalue -# 3092| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 3092| Type = [VoidType] void -# 3092| ValueCategory = prvalue -# 3092| getQualifier(): [VariableAccess] x1024 -# 3092| Type = [Struct] String -# 3092| ValueCategory = lvalue -# 3092| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 3092| Conversion = [BoolConversion] conversion to bool -# 3092| Type = [BoolType] bool -# 3092| Value = [CStyleCast] 0 -# 3092| ValueCategory = prvalue -# 3093| getStmt(1025): [ReturnStmt] return ... +# 35| getStmt(6): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x6 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x6 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x6 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(7): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x7 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x7 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x7 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(8): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x8 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x8 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x8 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(9): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x9 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x9 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x9 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(10): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x10 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x10 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x10 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(11): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x11 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x11 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x11 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(12): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x12 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x12 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x12 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(13): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x13 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x13 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x13 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(14): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x14 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x14 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x14 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(15): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x15 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x15 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x15 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(16): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x16 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x16 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x16 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(17): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x17 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x17 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x17 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(18): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x18 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x18 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x18 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(19): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x19 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x19 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x19 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(20): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x20 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x20 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x20 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(21): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x21 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x21 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x21 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(22): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x22 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x22 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x22 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(23): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x23 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x23 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x23 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(24): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x24 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x24 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x24 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(25): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x25 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x25 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x25 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(26): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x26 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x26 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x26 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(27): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x27 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x27 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x27 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(28): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x28 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x28 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x28 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(29): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x29 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x29 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x29 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(30): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x30 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x30 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x30 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(31): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x31 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x31 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x31 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(32): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x32 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x32 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x32 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(33): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x33 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x33 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x33 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(34): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x34 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x34 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x34 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(35): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x35 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x35 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x35 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(36): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x36 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x36 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x36 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(37): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x37 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x37 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x37 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(38): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x38 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x38 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x38 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(39): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x39 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x39 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x39 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(40): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x40 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x40 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x40 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(41): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x41 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x41 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x41 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(42): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x42 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x42 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x42 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(43): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x43 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x43 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x43 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(44): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x44 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x44 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x44 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(45): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x45 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x45 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x45 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(46): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x46 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x46 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x46 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(47): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x47 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x47 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x47 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(48): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x48 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x48 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x48 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(49): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x49 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x49 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x49 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(50): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x50 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x50 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x50 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(51): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x51 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x51 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x51 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(52): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x52 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x52 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x52 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(53): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x53 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x53 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x53 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(54): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x54 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x54 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x54 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(55): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x55 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x55 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x55 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(56): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x56 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x56 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x56 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(57): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x57 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x57 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x57 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(58): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x58 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x58 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x58 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(59): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x59 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x59 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x59 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(60): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x60 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x60 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x60 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(61): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x61 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x61 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x61 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(62): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x62 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x62 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x62 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(63): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x63 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x63 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x63 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(64): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x64 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x64 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x64 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(65): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x65 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x65 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x65 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(66): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x66 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x66 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x66 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(67): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x67 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x67 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x67 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(68): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x68 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x68 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x68 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(69): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x69 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x69 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x69 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(70): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x70 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x70 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x70 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(71): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x71 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x71 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x71 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(72): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x72 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x72 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x72 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(73): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x73 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x73 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x73 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(74): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x74 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x74 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x74 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(75): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x75 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x75 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x75 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(76): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x76 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x76 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x76 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(77): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x77 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x77 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x77 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(78): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x78 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x78 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x78 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(79): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x79 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x79 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x79 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(80): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x80 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x80 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x80 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(81): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x81 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x81 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x81 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(82): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x82 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x82 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x82 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(83): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x83 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x83 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x83 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(84): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x84 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x84 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x84 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(85): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x85 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x85 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x85 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(86): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x86 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x86 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x86 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(87): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x87 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x87 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x87 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(88): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x88 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x88 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x88 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(89): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x89 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x89 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x89 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(90): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x90 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x90 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x90 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(91): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x91 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x91 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x91 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(92): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x92 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x92 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x92 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(93): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x93 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x93 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x93 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(94): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x94 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x94 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x94 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(95): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x95 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x95 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x95 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(96): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x96 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x96 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x96 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(97): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x97 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x97 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x97 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(98): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x98 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x98 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x98 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(99): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x99 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x99 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x99 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(100): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x100 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x100 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x100 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(101): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x101 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x101 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x101 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(102): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x102 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x102 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x102 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(103): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x103 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x103 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x103 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(104): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x104 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x104 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x104 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(105): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x105 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x105 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x105 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(106): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x106 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x106 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x106 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(107): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x107 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x107 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x107 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(108): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x108 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x108 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x108 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(109): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x109 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x109 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x109 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(110): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x110 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x110 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x110 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(111): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x111 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x111 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x111 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(112): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x112 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x112 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x112 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(113): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x113 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x113 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x113 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(114): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x114 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x114 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x114 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(115): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x115 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x115 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x115 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(116): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x116 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x116 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x116 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(117): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x117 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x117 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x117 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(118): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x118 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x118 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x118 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(119): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x119 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x119 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x119 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(120): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x120 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x120 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x120 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(121): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x121 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x121 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x121 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(122): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x122 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x122 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x122 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(123): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x123 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x123 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x123 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(124): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x124 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x124 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x124 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(125): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x125 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x125 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x125 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(126): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x126 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x126 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x126 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(127): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x127 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x127 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x127 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(128): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x128 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x128 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x128 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(129): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x129 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x129 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x129 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(130): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x130 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x130 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x130 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(131): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x131 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x131 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x131 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(132): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x132 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x132 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x132 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(133): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x133 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x133 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x133 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(134): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x134 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x134 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x134 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(135): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x135 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x135 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x135 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(136): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x136 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x136 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x136 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(137): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x137 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x137 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x137 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(138): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x138 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x138 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x138 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(139): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x139 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x139 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x139 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(140): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x140 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x140 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x140 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(141): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x141 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x141 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x141 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(142): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x142 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x142 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x142 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(143): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x143 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x143 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x143 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(144): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x144 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x144 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x144 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(145): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x145 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x145 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x145 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(146): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x146 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x146 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x146 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(147): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x147 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x147 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x147 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(148): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x148 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x148 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x148 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(149): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x149 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x149 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x149 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(150): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x150 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x150 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x150 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(151): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x151 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x151 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x151 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(152): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x152 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x152 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x152 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(153): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x153 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x153 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x153 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(154): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x154 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x154 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x154 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(155): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x155 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x155 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x155 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(156): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x156 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x156 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x156 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(157): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x157 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x157 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x157 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(158): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x158 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x158 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x158 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(159): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x159 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x159 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x159 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(160): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x160 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x160 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x160 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(161): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x161 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x161 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x161 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(162): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x162 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x162 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x162 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(163): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x163 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x163 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x163 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(164): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x164 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x164 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x164 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(165): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x165 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x165 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x165 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(166): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x166 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x166 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x166 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(167): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x167 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x167 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x167 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(168): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x168 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x168 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x168 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(169): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x169 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x169 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x169 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(170): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x170 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x170 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x170 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(171): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x171 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x171 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x171 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(172): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x172 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x172 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x172 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(173): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x173 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x173 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x173 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(174): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x174 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x174 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x174 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(175): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x175 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x175 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x175 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(176): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x176 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x176 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x176 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(177): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x177 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x177 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x177 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(178): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x178 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x178 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x178 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(179): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x179 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x179 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x179 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(180): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x180 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x180 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x180 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(181): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x181 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x181 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x181 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(182): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x182 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x182 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x182 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(183): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x183 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x183 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x183 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(184): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x184 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x184 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x184 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(185): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x185 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x185 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x185 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(186): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x186 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x186 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x186 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(187): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x187 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x187 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x187 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(188): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x188 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x188 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x188 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(189): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x189 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x189 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x189 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(190): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x190 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x190 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x190 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(191): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x191 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x191 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x191 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(192): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x192 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x192 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x192 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(193): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x193 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x193 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x193 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(194): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x194 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x194 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x194 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(195): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x195 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x195 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x195 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(196): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x196 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x196 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x196 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(197): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x197 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x197 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x197 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(198): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x198 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x198 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x198 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(199): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x199 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x199 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x199 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(200): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x200 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x200 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x200 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(201): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x201 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x201 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x201 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(202): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x202 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x202 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x202 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(203): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x203 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x203 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x203 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(204): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x204 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x204 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x204 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(205): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x205 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x205 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x205 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(206): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x206 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x206 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x206 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(207): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x207 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x207 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x207 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(208): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x208 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x208 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x208 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(209): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x209 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x209 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x209 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(210): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x210 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x210 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x210 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(211): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x211 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x211 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x211 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(212): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x212 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x212 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x212 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(213): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x213 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x213 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x213 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(214): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x214 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x214 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x214 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(215): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x215 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x215 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x215 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(216): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x216 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x216 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x216 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(217): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x217 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x217 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x217 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(218): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x218 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x218 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x218 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(219): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x219 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x219 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x219 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(220): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x220 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x220 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x220 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(221): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x221 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x221 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x221 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(222): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x222 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x222 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x222 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(223): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x223 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x223 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x223 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(224): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x224 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x224 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x224 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(225): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x225 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x225 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x225 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(226): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x226 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x226 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x226 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(227): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x227 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x227 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x227 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(228): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x228 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x228 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x228 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(229): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x229 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x229 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x229 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(230): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x230 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x230 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x230 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(231): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x231 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x231 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x231 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(232): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x232 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x232 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x232 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(233): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x233 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x233 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x233 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(234): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x234 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x234 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x234 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(235): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x235 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x235 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x235 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(236): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x236 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x236 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x236 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(237): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x237 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x237 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x237 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(238): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x238 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x238 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x238 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(239): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x239 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x239 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x239 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(240): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x240 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x240 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x240 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(241): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x241 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x241 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x241 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(242): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x242 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x242 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x242 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(243): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x243 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x243 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x243 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(244): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x244 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x244 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x244 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(245): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x245 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x245 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x245 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(246): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x246 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x246 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x246 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(247): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x247 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x247 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x247 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(248): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x248 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x248 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x248 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(249): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x249 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x249 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x249 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(250): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x250 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x250 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x250 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(251): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x251 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x251 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x251 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(252): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x252 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x252 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x252 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(253): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x253 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x253 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x253 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(254): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x254 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x254 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x254 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(255): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x255 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x255 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x255 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(256): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x256 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x256 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x256 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(257): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x257 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x257 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x257 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(258): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x258 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x258 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x258 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(259): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x259 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x259 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x259 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(260): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x260 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x260 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x260 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(261): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x261 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x261 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x261 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(262): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x262 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x262 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x262 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(263): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x263 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x263 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x263 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(264): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x264 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x264 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x264 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(265): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x265 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x265 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x265 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(266): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x266 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x266 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x266 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(267): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x267 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x267 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x267 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(268): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x268 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x268 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x268 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(269): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x269 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x269 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x269 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(270): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x270 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x270 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x270 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(271): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x271 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x271 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x271 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(272): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x272 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x272 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x272 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(273): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x273 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x273 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x273 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(274): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x274 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x274 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x274 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(275): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x275 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x275 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x275 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(276): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x276 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x276 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x276 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(277): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x277 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x277 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x277 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(278): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x278 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x278 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x278 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(279): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x279 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x279 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x279 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(280): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x280 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x280 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x280 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(281): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x281 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x281 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x281 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(282): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x282 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x282 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x282 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(283): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x283 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x283 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x283 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(284): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x284 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x284 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x284 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(285): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x285 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x285 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x285 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(286): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x286 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x286 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x286 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(287): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x287 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x287 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x287 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(288): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x288 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x288 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x288 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(289): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x289 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x289 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x289 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(290): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x290 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x290 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x290 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(291): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x291 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x291 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x291 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(292): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x292 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x292 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x292 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(293): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x293 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x293 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x293 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(294): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x294 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x294 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x294 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(295): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x295 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x295 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x295 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(296): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x296 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x296 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x296 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(297): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x297 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x297 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x297 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(298): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x298 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x298 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x298 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(299): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x299 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x299 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x299 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(300): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x300 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x300 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x300 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(301): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x301 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x301 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x301 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(302): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x302 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x302 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x302 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(303): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x303 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x303 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x303 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(304): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x304 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x304 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x304 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(305): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x305 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x305 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x305 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(306): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x306 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x306 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x306 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(307): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x307 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x307 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x307 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(308): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x308 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x308 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x308 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(309): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x309 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x309 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x309 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(310): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x310 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x310 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x310 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(311): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x311 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x311 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x311 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(312): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x312 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x312 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x312 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(313): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x313 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x313 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x313 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(314): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x314 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x314 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x314 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(315): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x315 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x315 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x315 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(316): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x316 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x316 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x316 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(317): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x317 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x317 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x317 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(318): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x318 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x318 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x318 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(319): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x319 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x319 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x319 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(320): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x320 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x320 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x320 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(321): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x321 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x321 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x321 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(322): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x322 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x322 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x322 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(323): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x323 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x323 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x323 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(324): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x324 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x324 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x324 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(325): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x325 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x325 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x325 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(326): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x326 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x326 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x326 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(327): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x327 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x327 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x327 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(328): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x328 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x328 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x328 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(329): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x329 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x329 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x329 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(330): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x330 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x330 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x330 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(331): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x331 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x331 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x331 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(332): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x332 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x332 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x332 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(333): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x333 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x333 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x333 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(334): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x334 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x334 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x334 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(335): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x335 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x335 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x335 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(336): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x336 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x336 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x336 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(337): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x337 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x337 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x337 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(338): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x338 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x338 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x338 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(339): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x339 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x339 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x339 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(340): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x340 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x340 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x340 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(341): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x341 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x341 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x341 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(342): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x342 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x342 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x342 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(343): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x343 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x343 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x343 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(344): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x344 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x344 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x344 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(345): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x345 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x345 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x345 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(346): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x346 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x346 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x346 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(347): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x347 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x347 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x347 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(348): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x348 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x348 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x348 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(349): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x349 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x349 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x349 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(350): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x350 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x350 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x350 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(351): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x351 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x351 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x351 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(352): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x352 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x352 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x352 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(353): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x353 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x353 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x353 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(354): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x354 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x354 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x354 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(355): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x355 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x355 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x355 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(356): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x356 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x356 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x356 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(357): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x357 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x357 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x357 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(358): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x358 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x358 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x358 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(359): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x359 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x359 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x359 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(360): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x360 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x360 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x360 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(361): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x361 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x361 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x361 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(362): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x362 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x362 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x362 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(363): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x363 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x363 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x363 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(364): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x364 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x364 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x364 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(365): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x365 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x365 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x365 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(366): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x366 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x366 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x366 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(367): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x367 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x367 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x367 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(368): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x368 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x368 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x368 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(369): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x369 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x369 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x369 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(370): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x370 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x370 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x370 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(371): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x371 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x371 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x371 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(372): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x372 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x372 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x372 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(373): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x373 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x373 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x373 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(374): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x374 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x374 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x374 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(375): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x375 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x375 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x375 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(376): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x376 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x376 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x376 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(377): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x377 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x377 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x377 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(378): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x378 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x378 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x378 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(379): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x379 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x379 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x379 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(380): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x380 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x380 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x380 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(381): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x381 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x381 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x381 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(382): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x382 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x382 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x382 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(383): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x383 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x383 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x383 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(384): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x384 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x384 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x384 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(385): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x385 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x385 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x385 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(386): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x386 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x386 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x386 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(387): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x387 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x387 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x387 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(388): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x388 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x388 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x388 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(389): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x389 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x389 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x389 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(390): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x390 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x390 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x390 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(391): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x391 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x391 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x391 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(392): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x392 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x392 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x392 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(393): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x393 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x393 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x393 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(394): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x394 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x394 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x394 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(395): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x395 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x395 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x395 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(396): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x396 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x396 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x396 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(397): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x397 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x397 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x397 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(398): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x398 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x398 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x398 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(399): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x399 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x399 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x399 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(400): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x400 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x400 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x400 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(401): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x401 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x401 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x401 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(402): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x402 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x402 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x402 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(403): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x403 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x403 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x403 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(404): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x404 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x404 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x404 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(405): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x405 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x405 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x405 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(406): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x406 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x406 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x406 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(407): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x407 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x407 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x407 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(408): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x408 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x408 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x408 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(409): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x409 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x409 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x409 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(410): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x410 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x410 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x410 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(411): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x411 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x411 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x411 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(412): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x412 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x412 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x412 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(413): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x413 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x413 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x413 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(414): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x414 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x414 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x414 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(415): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x415 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x415 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x415 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(416): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x416 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x416 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x416 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(417): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x417 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x417 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x417 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(418): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x418 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x418 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x418 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(419): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x419 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x419 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x419 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(420): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x420 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x420 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x420 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(421): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x421 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x421 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x421 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(422): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x422 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x422 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x422 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(423): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x423 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x423 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x423 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(424): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x424 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x424 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x424 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(425): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x425 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x425 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x425 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(426): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x426 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x426 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x426 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(427): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x427 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x427 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x427 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(428): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x428 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x428 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x428 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(429): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x429 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x429 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x429 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(430): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x430 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x430 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x430 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(431): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x431 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x431 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x431 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(432): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x432 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x432 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x432 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(433): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x433 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x433 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x433 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(434): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x434 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x434 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x434 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(435): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x435 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x435 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x435 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(436): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x436 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x436 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x436 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(437): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x437 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x437 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x437 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(438): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x438 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x438 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x438 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(439): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x439 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x439 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x439 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(440): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x440 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x440 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x440 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(441): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x441 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x441 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x441 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(442): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x442 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x442 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x442 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(443): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x443 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x443 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x443 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(444): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x444 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x444 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x444 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(445): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x445 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x445 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x445 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(446): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x446 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x446 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x446 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(447): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x447 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x447 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x447 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(448): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x448 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x448 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x448 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(449): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x449 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x449 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x449 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(450): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x450 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x450 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x450 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(451): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x451 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x451 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x451 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(452): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x452 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x452 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x452 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(453): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x453 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x453 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x453 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(454): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x454 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x454 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x454 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(455): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x455 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x455 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x455 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(456): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x456 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x456 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x456 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(457): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x457 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x457 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x457 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(458): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x458 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x458 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x458 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(459): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x459 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x459 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x459 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(460): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x460 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x460 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x460 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(461): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x461 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x461 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x461 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(462): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x462 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x462 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x462 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(463): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x463 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x463 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x463 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(464): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x464 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x464 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x464 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(465): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x465 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x465 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x465 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(466): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x466 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x466 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x466 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(467): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x467 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x467 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x467 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(468): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x468 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x468 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x468 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(469): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x469 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x469 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x469 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(470): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x470 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x470 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x470 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(471): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x471 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x471 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x471 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(472): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x472 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x472 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x472 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(473): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x473 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x473 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x473 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(474): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x474 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x474 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x474 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(475): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x475 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x475 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x475 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(476): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x476 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x476 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x476 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(477): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x477 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x477 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x477 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(478): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x478 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x478 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x478 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(479): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x479 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x479 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x479 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(480): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x480 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x480 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x480 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(481): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x481 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x481 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x481 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(482): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x482 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x482 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x482 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(483): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x483 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x483 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x483 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(484): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x484 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x484 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x484 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(485): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x485 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x485 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x485 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(486): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x486 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x486 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x486 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(487): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x487 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x487 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x487 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(488): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x488 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x488 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x488 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(489): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x489 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x489 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x489 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(490): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x490 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x490 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x490 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(491): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x491 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x491 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x491 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(492): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x492 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x492 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x492 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(493): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x493 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x493 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x493 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(494): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x494 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x494 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x494 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(495): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x495 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x495 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x495 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(496): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x496 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x496 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x496 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(497): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x497 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x497 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x497 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(498): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x498 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x498 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x498 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(499): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x499 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x499 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x499 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(500): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x500 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x500 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x500 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(501): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x501 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x501 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x501 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(502): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x502 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x502 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x502 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(503): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x503 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x503 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x503 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(504): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x504 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x504 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x504 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(505): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x505 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x505 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x505 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(506): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x506 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x506 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x506 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(507): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x507 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x507 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x507 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(508): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x508 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x508 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x508 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(509): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x509 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x509 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x509 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(510): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x510 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x510 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x510 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(511): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x511 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x511 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x511 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(512): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x512 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x512 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x512 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(513): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x513 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x513 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x513 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(514): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x514 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x514 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x514 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(515): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x515 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x515 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x515 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(516): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x516 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x516 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x516 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(517): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x517 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x517 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x517 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(518): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x518 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x518 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x518 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(519): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x519 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x519 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x519 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(520): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x520 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x520 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x520 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(521): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x521 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x521 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x521 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(522): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x522 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x522 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x522 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(523): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x523 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x523 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x523 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(524): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x524 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x524 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x524 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(525): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x525 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x525 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x525 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(526): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x526 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x526 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x526 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(527): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x527 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x527 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x527 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(528): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x528 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x528 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x528 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(529): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x529 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x529 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x529 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(530): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x530 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x530 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x530 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(531): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x531 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x531 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x531 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(532): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x532 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x532 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x532 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(533): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x533 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x533 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x533 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(534): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x534 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x534 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x534 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(535): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x535 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x535 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x535 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(536): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x536 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x536 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x536 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(537): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x537 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x537 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x537 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(538): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x538 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x538 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x538 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(539): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x539 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x539 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x539 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(540): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x540 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x540 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x540 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(541): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x541 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x541 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x541 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(542): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x542 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x542 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x542 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(543): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x543 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x543 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x543 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(544): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x544 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x544 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x544 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(545): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x545 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x545 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x545 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(546): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x546 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x546 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x546 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(547): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x547 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x547 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x547 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(548): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x548 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x548 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x548 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(549): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x549 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x549 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x549 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(550): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x550 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x550 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x550 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(551): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x551 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x551 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x551 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(552): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x552 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x552 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x552 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(553): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x553 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x553 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x553 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(554): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x554 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x554 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x554 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(555): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x555 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x555 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x555 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(556): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x556 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x556 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x556 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(557): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x557 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x557 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x557 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(558): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x558 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x558 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x558 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(559): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x559 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x559 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x559 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(560): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x560 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x560 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x560 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(561): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x561 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x561 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x561 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(562): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x562 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x562 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x562 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(563): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x563 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x563 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x563 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(564): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x564 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x564 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x564 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(565): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x565 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x565 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x565 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(566): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x566 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x566 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x566 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(567): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x567 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x567 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x567 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(568): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x568 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x568 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x568 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(569): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x569 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x569 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x569 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(570): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x570 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x570 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x570 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(571): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x571 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x571 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x571 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(572): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x572 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x572 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x572 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(573): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x573 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x573 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x573 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(574): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x574 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x574 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x574 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(575): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x575 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x575 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x575 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(576): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x576 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x576 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x576 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(577): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x577 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x577 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x577 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(578): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x578 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x578 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x578 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(579): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x579 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x579 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x579 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(580): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x580 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x580 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x580 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(581): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x581 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x581 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x581 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(582): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x582 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x582 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x582 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(583): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x583 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x583 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x583 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(584): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x584 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x584 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x584 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(585): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x585 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x585 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x585 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(586): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x586 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x586 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x586 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(587): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x587 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x587 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x587 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(588): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x588 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x588 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x588 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(589): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x589 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x589 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x589 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(590): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x590 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x590 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x590 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(591): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x591 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x591 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x591 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(592): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x592 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x592 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x592 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(593): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x593 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x593 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x593 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(594): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x594 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x594 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x594 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(595): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x595 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x595 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x595 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(596): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x596 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x596 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x596 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(597): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x597 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x597 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x597 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(598): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x598 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x598 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x598 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(599): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x599 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x599 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x599 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(600): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x600 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x600 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x600 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(601): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x601 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x601 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x601 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(602): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x602 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x602 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x602 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(603): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x603 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x603 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x603 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(604): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x604 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x604 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x604 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(605): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x605 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x605 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x605 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(606): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x606 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x606 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x606 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(607): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x607 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x607 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x607 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(608): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x608 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x608 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x608 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(609): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x609 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x609 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x609 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(610): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x610 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x610 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x610 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(611): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x611 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x611 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x611 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(612): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x612 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x612 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x612 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(613): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x613 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x613 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x613 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(614): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x614 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x614 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x614 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(615): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x615 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x615 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x615 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(616): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x616 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x616 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x616 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(617): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x617 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x617 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x617 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(618): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x618 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x618 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x618 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(619): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x619 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x619 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x619 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(620): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x620 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x620 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x620 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(621): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x621 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x621 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x621 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(622): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x622 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x622 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x622 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(623): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x623 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x623 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x623 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(624): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x624 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x624 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x624 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(625): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x625 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x625 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x625 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(626): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x626 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x626 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x626 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(627): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x627 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x627 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x627 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(628): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x628 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x628 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x628 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(629): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x629 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x629 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x629 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(630): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x630 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x630 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x630 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(631): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x631 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x631 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x631 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(632): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x632 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x632 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x632 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(633): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x633 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x633 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x633 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(634): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x634 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x634 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x634 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(635): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x635 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x635 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x635 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(636): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x636 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x636 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x636 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(637): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x637 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x637 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x637 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(638): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x638 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x638 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x638 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(639): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x639 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x639 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x639 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(640): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x640 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x640 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x640 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(641): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x641 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x641 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x641 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(642): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x642 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x642 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x642 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(643): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x643 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x643 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x643 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(644): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x644 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x644 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x644 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(645): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x645 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x645 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x645 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(646): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x646 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x646 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x646 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(647): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x647 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x647 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x647 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(648): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x648 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x648 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x648 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(649): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x649 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x649 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x649 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(650): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x650 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x650 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x650 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(651): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x651 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x651 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x651 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(652): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x652 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x652 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x652 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(653): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x653 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x653 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x653 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(654): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x654 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x654 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x654 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(655): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x655 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x655 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x655 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(656): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x656 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x656 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x656 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(657): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x657 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x657 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x657 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(658): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x658 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x658 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x658 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(659): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x659 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x659 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x659 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(660): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x660 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x660 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x660 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(661): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x661 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x661 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x661 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(662): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x662 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x662 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x662 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(663): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x663 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x663 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x663 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(664): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x664 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x664 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x664 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(665): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x665 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x665 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x665 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(666): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x666 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x666 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x666 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(667): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x667 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x667 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x667 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(668): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x668 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x668 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x668 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(669): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x669 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x669 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x669 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(670): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x670 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x670 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x670 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(671): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x671 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x671 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x671 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(672): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x672 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x672 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x672 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(673): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x673 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x673 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x673 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(674): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x674 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x674 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x674 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(675): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x675 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x675 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x675 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(676): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x676 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x676 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x676 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(677): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x677 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x677 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x677 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(678): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x678 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x678 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x678 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(679): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x679 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x679 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x679 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(680): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x680 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x680 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x680 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(681): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x681 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x681 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x681 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(682): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x682 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x682 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x682 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(683): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x683 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x683 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x683 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(684): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x684 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x684 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x684 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(685): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x685 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x685 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x685 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(686): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x686 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x686 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x686 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(687): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x687 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x687 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x687 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(688): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x688 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x688 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x688 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(689): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x689 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x689 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x689 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(690): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x690 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x690 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x690 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(691): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x691 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x691 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x691 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(692): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x692 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x692 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x692 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(693): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x693 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x693 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x693 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(694): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x694 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x694 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x694 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(695): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x695 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x695 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x695 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(696): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x696 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x696 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x696 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(697): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x697 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x697 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x697 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(698): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x698 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x698 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x698 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(699): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x699 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x699 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x699 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(700): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x700 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x700 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x700 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(701): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x701 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x701 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x701 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(702): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x702 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x702 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x702 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(703): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x703 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x703 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x703 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(704): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x704 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x704 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x704 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(705): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x705 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x705 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x705 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(706): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x706 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x706 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x706 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(707): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x707 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x707 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x707 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(708): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x708 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x708 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x708 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(709): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x709 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x709 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x709 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(710): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x710 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x710 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x710 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(711): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x711 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x711 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x711 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(712): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x712 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x712 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x712 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(713): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x713 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x713 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x713 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(714): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x714 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x714 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x714 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(715): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x715 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x715 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x715 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(716): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x716 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x716 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x716 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(717): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x717 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x717 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x717 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(718): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x718 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x718 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x718 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(719): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x719 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x719 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x719 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(720): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x720 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x720 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x720 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(721): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x721 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x721 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x721 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(722): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x722 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x722 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x722 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(723): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x723 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x723 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x723 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(724): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x724 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x724 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x724 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(725): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x725 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x725 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x725 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(726): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x726 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x726 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x726 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(727): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x727 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x727 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x727 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(728): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x728 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x728 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x728 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(729): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x729 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x729 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x729 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(730): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x730 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x730 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x730 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(731): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x731 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x731 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x731 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(732): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x732 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x732 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x732 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(733): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x733 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x733 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x733 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(734): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x734 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x734 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x734 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(735): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x735 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x735 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x735 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(736): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x736 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x736 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x736 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(737): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x737 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x737 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x737 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(738): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x738 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x738 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x738 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(739): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x739 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x739 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x739 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(740): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x740 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x740 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x740 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(741): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x741 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x741 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x741 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(742): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x742 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x742 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x742 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(743): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x743 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x743 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x743 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(744): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x744 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x744 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x744 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(745): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x745 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x745 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x745 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(746): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x746 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x746 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x746 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(747): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x747 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x747 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x747 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(748): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x748 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x748 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x748 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(749): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x749 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x749 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x749 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(750): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x750 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x750 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x750 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(751): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x751 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x751 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x751 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(752): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x752 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x752 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x752 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(753): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x753 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x753 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x753 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(754): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x754 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x754 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x754 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(755): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x755 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x755 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x755 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(756): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x756 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x756 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x756 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(757): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x757 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x757 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x757 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(758): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x758 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x758 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x758 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(759): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x759 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x759 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x759 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(760): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x760 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x760 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x760 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(761): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x761 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x761 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x761 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(762): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x762 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x762 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x762 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(763): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x763 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x763 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x763 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(764): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x764 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x764 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x764 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(765): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x765 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x765 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x765 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(766): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x766 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x766 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x766 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(767): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x767 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x767 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x767 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(768): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x768 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x768 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x768 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(769): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x769 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x769 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x769 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(770): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x770 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x770 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x770 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(771): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x771 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x771 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x771 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(772): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x772 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x772 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x772 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(773): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x773 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x773 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x773 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(774): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x774 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x774 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x774 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(775): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x775 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x775 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x775 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(776): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x776 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x776 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x776 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(777): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x777 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x777 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x777 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(778): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x778 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x778 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x778 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(779): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x779 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x779 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x779 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(780): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x780 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x780 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x780 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(781): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x781 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x781 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x781 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(782): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x782 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x782 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x782 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(783): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x783 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x783 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x783 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(784): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x784 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x784 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x784 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(785): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x785 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x785 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x785 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(786): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x786 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x786 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x786 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(787): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x787 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x787 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x787 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(788): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x788 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x788 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x788 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(789): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x789 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x789 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x789 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(790): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x790 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x790 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x790 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(791): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x791 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x791 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x791 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(792): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x792 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x792 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x792 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(793): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x793 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x793 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x793 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(794): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x794 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x794 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x794 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(795): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x795 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x795 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x795 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(796): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x796 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x796 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x796 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(797): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x797 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x797 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x797 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(798): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x798 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x798 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x798 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(799): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x799 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x799 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x799 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(800): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x800 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x800 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x800 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(801): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x801 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x801 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x801 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(802): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x802 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x802 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x802 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(803): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x803 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x803 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x803 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(804): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x804 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x804 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x804 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(805): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x805 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x805 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x805 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(806): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x806 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x806 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x806 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(807): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x807 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x807 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x807 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(808): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x808 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x808 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x808 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(809): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x809 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x809 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x809 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(810): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x810 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x810 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x810 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(811): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x811 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x811 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x811 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(812): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x812 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x812 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x812 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(813): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x813 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x813 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x813 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(814): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x814 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x814 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x814 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(815): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x815 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x815 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x815 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(816): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x816 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x816 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x816 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(817): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x817 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x817 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x817 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(818): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x818 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x818 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x818 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(819): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x819 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x819 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x819 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(820): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x820 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x820 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x820 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(821): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x821 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x821 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x821 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(822): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x822 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x822 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x822 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(823): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x823 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x823 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x823 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(824): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x824 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x824 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x824 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(825): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x825 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x825 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x825 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(826): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x826 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x826 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x826 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(827): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x827 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x827 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x827 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(828): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x828 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x828 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x828 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(829): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x829 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x829 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x829 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(830): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x830 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x830 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x830 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(831): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x831 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x831 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x831 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(832): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x832 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x832 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x832 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(833): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x833 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x833 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x833 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(834): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x834 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x834 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x834 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(835): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x835 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x835 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x835 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(836): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x836 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x836 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x836 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(837): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x837 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x837 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x837 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(838): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x838 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x838 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x838 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(839): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x839 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x839 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x839 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(840): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x840 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x840 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x840 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(841): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x841 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x841 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x841 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(842): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x842 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x842 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x842 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(843): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x843 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x843 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x843 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(844): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x844 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x844 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x844 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(845): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x845 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x845 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x845 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(846): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x846 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x846 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x846 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(847): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x847 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x847 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x847 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(848): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x848 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x848 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x848 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(849): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x849 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x849 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x849 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(850): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x850 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x850 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x850 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(851): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x851 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x851 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x851 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(852): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x852 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x852 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x852 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(853): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x853 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x853 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x853 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(854): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x854 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x854 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x854 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(855): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x855 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x855 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x855 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(856): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x856 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x856 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x856 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(857): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x857 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x857 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x857 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(858): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x858 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x858 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x858 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(859): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x859 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x859 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x859 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(860): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x860 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x860 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x860 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(861): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x861 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x861 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x861 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(862): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x862 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x862 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x862 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(863): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x863 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x863 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x863 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(864): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x864 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x864 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x864 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(865): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x865 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x865 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x865 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(866): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x866 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x866 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x866 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(867): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x867 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x867 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x867 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(868): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x868 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x868 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x868 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(869): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x869 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x869 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x869 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(870): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x870 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x870 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x870 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(871): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x871 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x871 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x871 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(872): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x872 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x872 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x872 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(873): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x873 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x873 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x873 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(874): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x874 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x874 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x874 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(875): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x875 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x875 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x875 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(876): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x876 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x876 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x876 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(877): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x877 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x877 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x877 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(878): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x878 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x878 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x878 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(879): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x879 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x879 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x879 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(880): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x880 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x880 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x880 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(881): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x881 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x881 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x881 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(882): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x882 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x882 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x882 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(883): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x883 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x883 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x883 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(884): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x884 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x884 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x884 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(885): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x885 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x885 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x885 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(886): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x886 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x886 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x886 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(887): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x887 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x887 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x887 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(888): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x888 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x888 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x888 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(889): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x889 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x889 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x889 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(890): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x890 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x890 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x890 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(891): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x891 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x891 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x891 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(892): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x892 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x892 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x892 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(893): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x893 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x893 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x893 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(894): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x894 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x894 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x894 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(895): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x895 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x895 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x895 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(896): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x896 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x896 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x896 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(897): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x897 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x897 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x897 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(898): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x898 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x898 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x898 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(899): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x899 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x899 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x899 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(900): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x900 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x900 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x900 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(901): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x901 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x901 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x901 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(902): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x902 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x902 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x902 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(903): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x903 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x903 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x903 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(904): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x904 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x904 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x904 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(905): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x905 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x905 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x905 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(906): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x906 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x906 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x906 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(907): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x907 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x907 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x907 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(908): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x908 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x908 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x908 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(909): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x909 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x909 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x909 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(910): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x910 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x910 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x910 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(911): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x911 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x911 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x911 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(912): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x912 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x912 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x912 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(913): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x913 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x913 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x913 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(914): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x914 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x914 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x914 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(915): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x915 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x915 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x915 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(916): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x916 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x916 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x916 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(917): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x917 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x917 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x917 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(918): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x918 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x918 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x918 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(919): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x919 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x919 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x919 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(920): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x920 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x920 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x920 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(921): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x921 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x921 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x921 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(922): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x922 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x922 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x922 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(923): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x923 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x923 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x923 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(924): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x924 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x924 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x924 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(925): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x925 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x925 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x925 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(926): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x926 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x926 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x926 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(927): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x927 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x927 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x927 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(928): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x928 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x928 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x928 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(929): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x929 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x929 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x929 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(930): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x930 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x930 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x930 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(931): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x931 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x931 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x931 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(932): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x932 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x932 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x932 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(933): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x933 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x933 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x933 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(934): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x934 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x934 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x934 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(935): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x935 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x935 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x935 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(936): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x936 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x936 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x936 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(937): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x937 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x937 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x937 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(938): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x938 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x938 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x938 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(939): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x939 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x939 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x939 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(940): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x940 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x940 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x940 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(941): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x941 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x941 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x941 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(942): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x942 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x942 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x942 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(943): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x943 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x943 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x943 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(944): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x944 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x944 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x944 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(945): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x945 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x945 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x945 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(946): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x946 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x946 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x946 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(947): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x947 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x947 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x947 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(948): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x948 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x948 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x948 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(949): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x949 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x949 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x949 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(950): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x950 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x950 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x950 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(951): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x951 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x951 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x951 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(952): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x952 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x952 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x952 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(953): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x953 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x953 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x953 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(954): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x954 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x954 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x954 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(955): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x955 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x955 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x955 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(956): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x956 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x956 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x956 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(957): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x957 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x957 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x957 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(958): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x958 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x958 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x958 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(959): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x959 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x959 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x959 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(960): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x960 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x960 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x960 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(961): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x961 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x961 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x961 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(962): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x962 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x962 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x962 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(963): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x963 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x963 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x963 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(964): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x964 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x964 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x964 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(965): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x965 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x965 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x965 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(966): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x966 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x966 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x966 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(967): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x967 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x967 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x967 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(968): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x968 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x968 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x968 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(969): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x969 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x969 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x969 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(970): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x970 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x970 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x970 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(971): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x971 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x971 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x971 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(972): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x972 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x972 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x972 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(973): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x973 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x973 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x973 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(974): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x974 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x974 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x974 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(975): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x975 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x975 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x975 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(976): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x976 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x976 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x976 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(977): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x977 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x977 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x977 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(978): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x978 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x978 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x978 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(979): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x979 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x979 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x979 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(980): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x980 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x980 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x980 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(981): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x981 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x981 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x981 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(982): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x982 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x982 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x982 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(983): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x983 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x983 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x983 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(984): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x984 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x984 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x984 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(985): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x985 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x985 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x985 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(986): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x986 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x986 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x986 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(987): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x987 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x987 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x987 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(988): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x988 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x988 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x988 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(989): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x989 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x989 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x989 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(990): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x990 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x990 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x990 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(991): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x991 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x991 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x991 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(992): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x992 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x992 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x992 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(993): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x993 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x993 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x993 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(994): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x994 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x994 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x994 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(995): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x995 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x995 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x995 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(996): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x996 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x996 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x996 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(997): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x997 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x997 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x997 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(998): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x998 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x998 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x998 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(999): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x999 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x999 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x999 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1000): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1000 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1000 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1000 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1001): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1001 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1001 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1001 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1002): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1002 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1002 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1002 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1003): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1003 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1003 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1003 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1004): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1004 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1004 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1004 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1005): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1005 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1005 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1005 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1006): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1006 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1006 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1006 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1007): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1007 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1007 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1007 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1008): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1008 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1008 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1008 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1009): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1009 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1009 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1009 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1010): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1010 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1010 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1010 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1011): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1011 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1011 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1011 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1012): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1012 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1012 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1012 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1013): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1013 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1013 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1013 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1014): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1014 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1014 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1014 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1015): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1015 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1015 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1015 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1016): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1016 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1016 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1016 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1017): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1017 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1017 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1017 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1018): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1018 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1018 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1018 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1019): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1019 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1019 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1019 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1020): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1020 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1020 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1020 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1021): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1021 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1021 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1021 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1022): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1022 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1022 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1022 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1023): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1023 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1023 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1023 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(1024): [DoStmt] do (...) ... +# 35| getCondition(): [Literal] 0 +# 35| Type = [IntType] int +# 35| Value = [Literal] 0 +# 35| ValueCategory = prvalue +# 35| getStmt(): [BlockStmt] { ... } +# 35| getStmt(0): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1024 +# 35| Type = [Struct] String +# 35| getVariable().getInitializer(): [Initializer] initializer for x1024 +# 35| getExpr(): [ConstructorCall] call to String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [VariableAccess] x1024 +# 35| Type = [Struct] String +# 35| ValueCategory = lvalue +# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 35| Conversion = [BoolConversion] conversion to bool +# 35| Type = [BoolType] bool +# 35| Value = [CStyleCast] 0 +# 35| ValueCategory = prvalue +# 36| getStmt(1025): [ReturnStmt] return ... perf-regression.cpp: # 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&) # 4| : diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 54ecfba3ffc..57c80627867 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -785,66 +785,65 @@ coroutines.cpp: #-----| Block 1 #-----| m0_4(unknown) = Phi : from 0:~m87_34, from 2:~m87_61 #-----| r0_5(bool) = Constant[1] : -#-----| r0_6(glval) = VariableAddress : -#-----| m0_7(bool) = Store[?] : &:r0_6, r0_5 -#-----| m0_8(unknown) = Chi : total:m0_4, partial:m0_7 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_7(bool) = Store[(unnamed local variable)] : &:r0_6, r0_5 # 87| r87_36(suspend_always *) = CopyValue : r87_27 # 87| r87_37(glval) = CopyValue : r87_36 -#-----| r0_9(glval) = Convert : r87_37 +#-----| r0_8(glval) = Convert : r87_37 # 87| r87_38(glval) = FunctionAddress[await_resume] : -# 87| v87_39(void) = Call[await_resume] : func:r87_38, this:r0_9 -# 87| m87_40(unknown) = ^CallSideEffect : ~m0_8 -# 87| m87_41(unknown) = Chi : total:m0_8, partial:m87_40 -#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m87_41 -#-----| v0_11(void) = CopyValue : v87_39 -#-----| r0_12(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_13(glval) = FunctionAddress[return_void] : -#-----| v0_14(void) = Call[return_void] : func:r0_13, this:r0_12 -#-----| m0_15(unknown) = ^CallSideEffect : ~m87_41 -#-----| m0_16(unknown) = Chi : total:m87_41, partial:m0_15 -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m0_16 -#-----| m0_18(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_12 -#-----| m0_19(unknown) = Chi : total:m0_16, partial:m0_18 +# 87| v87_39(void) = Call[await_resume] : func:r87_38, this:r0_8 +# 87| m87_40(unknown) = ^CallSideEffect : ~m0_4 +# 87| m87_41(unknown) = Chi : total:m0_4, partial:m87_40 +#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_8, ~m87_41 +#-----| v0_10(void) = CopyValue : v87_39 +#-----| r0_11(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_12(glval) = FunctionAddress[return_void] : +#-----| v0_13(void) = Call[return_void] : func:r0_12, this:r0_11 +#-----| m0_14(unknown) = ^CallSideEffect : ~m87_41 +#-----| m0_15(unknown) = Chi : total:m87_41, partial:m0_14 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m0_15 +#-----| m0_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_11 +#-----| m0_18(unknown) = Chi : total:m0_15, partial:m0_17 # 88| v88_1(void) = NoOp : -#-----| v0_20(void) = NoOp : +#-----| v0_19(void) = NoOp : #-----| Goto (back edge) -> Block 3 # 87| Block 2 -# 87| r87_42(suspend_always *) = CopyValue : r87_27 -# 87| r87_43(glval) = CopyValue : r87_42 -#-----| r0_21(glval) = Convert : r87_43 -# 87| r87_44(glval) = FunctionAddress[await_suspend] : -# 87| r87_45(glval>) = VariableAddress[#temp87:20] : -# 87| m87_46(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_45 -# 87| m87_47(unknown) = Chi : total:m87_34, partial:m87_46 -# 87| r87_48(glval) = FunctionAddress[coroutine_handle] : -# 87| r87_49(glval>) = VariableAddress : -# 87| r87_50(glval>) = Convert : r87_49 -# 87| r87_51(coroutine_handle &) = CopyValue : r87_50 -# 87| v87_52(void) = Call[coroutine_handle] : func:r87_48, this:r87_45, 0:r87_51 -# 87| m87_53(unknown) = ^CallSideEffect : ~m87_47 -# 87| m87_54(unknown) = Chi : total:m87_47, partial:m87_53 -# 87| v87_55(void) = ^BufferReadSideEffect[0] : &:r87_51, ~m87_54 -# 87| m87_56(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_45 -# 87| m87_57(unknown) = Chi : total:m87_54, partial:m87_56 -# 87| r87_58(coroutine_handle) = Load[#temp87:20] : &:r87_45, ~m87_57 -# 87| v87_59(void) = Call[await_suspend] : func:r87_44, this:r0_21, 0:r87_58 -# 87| m87_60(unknown) = ^CallSideEffect : ~m87_57 -# 87| m87_61(unknown) = Chi : total:m87_57, partial:m87_60 -#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m87_61 +# 87| r87_42(suspend_always *) = CopyValue : r87_27 +# 87| r87_43(glval) = CopyValue : r87_42 +#-----| r0_20(glval) = Convert : r87_43 +# 87| r87_44(glval) = FunctionAddress[await_suspend] : +# 87| r87_45(glval>) = VariableAddress[#temp87:20] : +# 87| m87_46(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_45 +# 87| m87_47(unknown) = Chi : total:m87_34, partial:m87_46 +# 87| r87_48(glval) = FunctionAddress[coroutine_handle] : +# 87| r87_49(glval>) = VariableAddress[(unnamed local variable)] : +# 87| r87_50(glval>) = Convert : r87_49 +# 87| r87_51(coroutine_handle &) = CopyValue : r87_50 +# 87| v87_52(void) = Call[coroutine_handle] : func:r87_48, this:r87_45, 0:r87_51 +# 87| m87_53(unknown) = ^CallSideEffect : ~m87_47 +# 87| m87_54(unknown) = Chi : total:m87_47, partial:m87_53 +# 87| v87_55(void) = ^BufferReadSideEffect[0] : &:r87_51, ~m87_54 +# 87| m87_56(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_45 +# 87| m87_57(unknown) = Chi : total:m87_54, partial:m87_56 +# 87| r87_58(coroutine_handle) = Load[#temp87:20] : &:r87_45, ~m87_57 +# 87| v87_59(void) = Call[await_suspend] : func:r87_44, this:r0_20, 0:r87_58 +# 87| m87_60(unknown) = ^CallSideEffect : ~m87_57 +# 87| m87_61(unknown) = Chi : total:m87_57, partial:m87_60 +#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m87_61 #-----| Goto -> Block 1 #-----| Block 3 -#-----| v0_23(void) = NoOp : +#-----| v0_22(void) = NoOp : # 87| r87_62(glval) = VariableAddress[(unnamed local variable)] : # 87| r87_63(glval) = FunctionAddress[final_suspend] : # 87| r87_64(suspend_always) = Call[final_suspend] : func:r87_63, this:r87_62 -# 87| m87_65(unknown) = ^CallSideEffect : ~m0_19 -# 87| m87_66(unknown) = Chi : total:m0_19, partial:m87_65 +# 87| m87_65(unknown) = ^CallSideEffect : ~m0_18 +# 87| m87_66(unknown) = Chi : total:m0_18, partial:m87_65 # 87| v87_67(void) = ^IndirectReadSideEffect[-1] : &:r87_62, ~m87_66 # 87| m87_68(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_62 # 87| m87_69(unknown) = Chi : total:m87_66, partial:m87_68 -#-----| r0_24(glval) = VariableAddress[#temp0:0] : +#-----| r0_23(glval) = VariableAddress[#temp0:0] : # 87| r87_70(glval) = VariableAddress[#temp87:20] : # 87| r87_71(glval) = VariableAddress[(unnamed local variable)] : # 87| r87_72(glval) = FunctionAddress[final_suspend] : @@ -857,16 +856,16 @@ coroutines.cpp: # 87| m87_79(suspend_always) = Store[#temp87:20] : &:r87_70, r87_73 # 87| m87_80(unknown) = Chi : total:m87_78, partial:m87_79 # 87| r87_81(suspend_always *) = CopyValue : r87_70 -# 87| m87_82(suspend_always *) = Store[#temp0:0] : &:r0_24, r87_81 -#-----| r0_25(suspend_always *) = Load[#temp0:0] : &:r0_24, m87_82 -# 87| r87_83(glval) = CopyValue : r0_25 +# 87| m87_82(suspend_always *) = Store[#temp0:0] : &:r0_23, r87_81 +#-----| r0_24(suspend_always *) = Load[#temp0:0] : &:r0_23, m87_82 +# 87| r87_83(glval) = CopyValue : r0_24 # 87| r87_84(glval) = Convert : r87_83 # 87| r87_85(glval) = FunctionAddress[await_ready] : # 87| r87_86(bool) = Call[await_ready] : func:r87_85, this:r87_84 # 87| m87_87(unknown) = ^CallSideEffect : ~m87_80 # 87| m87_88(unknown) = Chi : total:m87_80, partial:m87_87 # 87| v87_89(void) = ^IndirectReadSideEffect[-1] : &:r87_84, ~m87_88 -#-----| v0_26(void) = ConditionalBranch : r87_86 +#-----| v0_25(void) = ConditionalBranch : r87_86 #-----| False -> Block 5 #-----| True -> Block 4 @@ -874,40 +873,40 @@ coroutines.cpp: # 87| m87_90(unknown) = Phi : from 3:~m87_88, from 5:~m87_120 # 87| r87_91(suspend_always *) = CopyValue : r87_81 # 87| r87_92(glval) = CopyValue : r87_91 -#-----| r0_27(glval) = Convert : r87_92 +#-----| r0_26(glval) = Convert : r87_92 # 87| r87_93(glval) = FunctionAddress[await_resume] : -# 87| v87_94(void) = Call[await_resume] : func:r87_93, this:r0_27 +# 87| v87_94(void) = Call[await_resume] : func:r87_93, this:r0_26 # 87| m87_95(unknown) = ^CallSideEffect : ~m87_90 # 87| m87_96(unknown) = Chi : total:m87_90, partial:m87_95 -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m87_96 +#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m87_96 # 87| r87_97(glval) = VariableAddress[#return] : # 87| v87_98(void) = ReturnValue : &:r87_97, ~m87_96 # 87| v87_99(void) = AliasedUse : ~m87_96 # 87| v87_100(void) = ExitFunction : # 87| Block 5 -# 87| r87_101(suspend_always *) = CopyValue : r87_81 -# 87| r87_102(glval) = CopyValue : r87_101 -#-----| r0_29(glval) = Convert : r87_102 -# 87| r87_103(glval) = FunctionAddress[await_suspend] : -# 87| r87_104(glval>) = VariableAddress[#temp87:20] : -# 87| m87_105(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_104 -# 87| m87_106(unknown) = Chi : total:m87_88, partial:m87_105 -# 87| r87_107(glval) = FunctionAddress[coroutine_handle] : -# 87| r87_108(glval>) = VariableAddress : -# 87| r87_109(glval>) = Convert : r87_108 -# 87| r87_110(coroutine_handle &) = CopyValue : r87_109 -# 87| v87_111(void) = Call[coroutine_handle] : func:r87_107, this:r87_104, 0:r87_110 -# 87| m87_112(unknown) = ^CallSideEffect : ~m87_106 -# 87| m87_113(unknown) = Chi : total:m87_106, partial:m87_112 -# 87| v87_114(void) = ^BufferReadSideEffect[0] : &:r87_110, ~m87_113 -# 87| m87_115(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_104 -# 87| m87_116(unknown) = Chi : total:m87_113, partial:m87_115 -# 87| r87_117(coroutine_handle) = Load[#temp87:20] : &:r87_104, ~m87_116 -# 87| v87_118(void) = Call[await_suspend] : func:r87_103, this:r0_29, 0:r87_117 -# 87| m87_119(unknown) = ^CallSideEffect : ~m87_116 -# 87| m87_120(unknown) = Chi : total:m87_116, partial:m87_119 -#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m87_120 +# 87| r87_101(suspend_always *) = CopyValue : r87_81 +# 87| r87_102(glval) = CopyValue : r87_101 +#-----| r0_28(glval) = Convert : r87_102 +# 87| r87_103(glval) = FunctionAddress[await_suspend] : +# 87| r87_104(glval>) = VariableAddress[#temp87:20] : +# 87| m87_105(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_104 +# 87| m87_106(unknown) = Chi : total:m87_88, partial:m87_105 +# 87| r87_107(glval) = FunctionAddress[coroutine_handle] : +# 87| r87_108(glval>) = VariableAddress[(unnamed local variable)] : +# 87| r87_109(glval>) = Convert : r87_108 +# 87| r87_110(coroutine_handle &) = CopyValue : r87_109 +# 87| v87_111(void) = Call[coroutine_handle] : func:r87_107, this:r87_104, 0:r87_110 +# 87| m87_112(unknown) = ^CallSideEffect : ~m87_106 +# 87| m87_113(unknown) = Chi : total:m87_106, partial:m87_112 +# 87| v87_114(void) = ^BufferReadSideEffect[0] : &:r87_110, ~m87_113 +# 87| m87_115(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_104 +# 87| m87_116(unknown) = Chi : total:m87_113, partial:m87_115 +# 87| r87_117(coroutine_handle) = Load[#temp87:20] : &:r87_104, ~m87_116 +# 87| v87_118(void) = Call[await_suspend] : func:r87_103, this:r0_28, 0:r87_117 +# 87| m87_119(unknown) = ^CallSideEffect : ~m87_116 +# 87| m87_120(unknown) = Chi : total:m87_116, partial:m87_119 +#-----| v0_29(void) = ^IndirectReadSideEffect[-1] : &:r0_28, ~m87_120 #-----| Goto -> Block 4 # 91| co_returnable_value co_return_int(int) @@ -962,68 +961,67 @@ coroutines.cpp: #-----| Block 1 #-----| m0_8(unknown) = Phi : from 0:~m91_36, from 2:~m91_63 #-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress : -#-----| m0_11(bool) = Store[?] : &:r0_10, r0_9 -#-----| m0_12(unknown) = Chi : total:m0_8, partial:m0_11 +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 # 91| r91_38(suspend_always *) = CopyValue : r91_29 # 91| r91_39(glval) = CopyValue : r91_38 -#-----| r0_13(glval) = Convert : r91_39 +#-----| r0_12(glval) = Convert : r91_39 # 91| r91_40(glval) = FunctionAddress[await_resume] : -# 91| v91_41(void) = Call[await_resume] : func:r91_40, this:r0_13 -# 91| m91_42(unknown) = ^CallSideEffect : ~m0_12 -# 91| m91_43(unknown) = Chi : total:m0_12, partial:m91_42 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m91_43 -#-----| v0_15(void) = CopyValue : v91_41 -#-----| r0_16(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_17(glval) = FunctionAddress[return_value] : +# 91| v91_41(void) = Call[await_resume] : func:r91_40, this:r0_12 +# 91| m91_42(unknown) = ^CallSideEffect : ~m0_8 +# 91| m91_43(unknown) = Chi : total:m0_8, partial:m91_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m91_43 +#-----| v0_14(void) = CopyValue : v91_41 +#-----| r0_15(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_16(glval) = FunctionAddress[return_value] : # 92| r92_1(glval) = VariableAddress[i] : # 92| r92_2(int) = Load[i] : &:r92_1, m0_4 -#-----| v0_18(void) = Call[return_value] : func:r0_17, this:r0_16, 0:r92_2 -#-----| m0_19(unknown) = ^CallSideEffect : ~m91_43 -#-----| m0_20(unknown) = Chi : total:m91_43, partial:m0_19 -#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m0_20 -#-----| m0_22(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_16 -#-----| m0_23(unknown) = Chi : total:m0_20, partial:m0_22 +#-----| v0_17(void) = Call[return_value] : func:r0_16, this:r0_15, 0:r92_2 +#-----| m0_18(unknown) = ^CallSideEffect : ~m91_43 +#-----| m0_19(unknown) = Chi : total:m91_43, partial:m0_18 +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m0_19 +#-----| m0_21(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_15 +#-----| m0_22(unknown) = Chi : total:m0_19, partial:m0_21 # 92| v92_3(void) = NoOp : -#-----| v0_24(void) = NoOp : +#-----| v0_23(void) = NoOp : #-----| Goto (back edge) -> Block 3 # 91| Block 2 -# 91| r91_44(suspend_always *) = CopyValue : r91_29 -# 91| r91_45(glval) = CopyValue : r91_44 -#-----| r0_25(glval) = Convert : r91_45 -# 91| r91_46(glval) = FunctionAddress[await_suspend] : -# 91| r91_47(glval>) = VariableAddress[#temp91:21] : -# 91| m91_48(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_47 -# 91| m91_49(unknown) = Chi : total:m91_36, partial:m91_48 -# 91| r91_50(glval) = FunctionAddress[coroutine_handle] : -# 91| r91_51(glval>) = VariableAddress : -# 91| r91_52(glval>) = Convert : r91_51 -# 91| r91_53(coroutine_handle &) = CopyValue : r91_52 -# 91| v91_54(void) = Call[coroutine_handle] : func:r91_50, this:r91_47, 0:r91_53 -# 91| m91_55(unknown) = ^CallSideEffect : ~m91_49 -# 91| m91_56(unknown) = Chi : total:m91_49, partial:m91_55 -# 91| v91_57(void) = ^BufferReadSideEffect[0] : &:r91_53, ~m91_56 -# 91| m91_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_47 -# 91| m91_59(unknown) = Chi : total:m91_56, partial:m91_58 -# 91| r91_60(coroutine_handle) = Load[#temp91:21] : &:r91_47, ~m91_59 -# 91| v91_61(void) = Call[await_suspend] : func:r91_46, this:r0_25, 0:r91_60 -# 91| m91_62(unknown) = ^CallSideEffect : ~m91_59 -# 91| m91_63(unknown) = Chi : total:m91_59, partial:m91_62 -#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_25, ~m91_63 +# 91| r91_44(suspend_always *) = CopyValue : r91_29 +# 91| r91_45(glval) = CopyValue : r91_44 +#-----| r0_24(glval) = Convert : r91_45 +# 91| r91_46(glval) = FunctionAddress[await_suspend] : +# 91| r91_47(glval>) = VariableAddress[#temp91:21] : +# 91| m91_48(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_47 +# 91| m91_49(unknown) = Chi : total:m91_36, partial:m91_48 +# 91| r91_50(glval) = FunctionAddress[coroutine_handle] : +# 91| r91_51(glval>) = VariableAddress[(unnamed local variable)] : +# 91| r91_52(glval>) = Convert : r91_51 +# 91| r91_53(coroutine_handle &) = CopyValue : r91_52 +# 91| v91_54(void) = Call[coroutine_handle] : func:r91_50, this:r91_47, 0:r91_53 +# 91| m91_55(unknown) = ^CallSideEffect : ~m91_49 +# 91| m91_56(unknown) = Chi : total:m91_49, partial:m91_55 +# 91| v91_57(void) = ^BufferReadSideEffect[0] : &:r91_53, ~m91_56 +# 91| m91_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_47 +# 91| m91_59(unknown) = Chi : total:m91_56, partial:m91_58 +# 91| r91_60(coroutine_handle) = Load[#temp91:21] : &:r91_47, ~m91_59 +# 91| v91_61(void) = Call[await_suspend] : func:r91_46, this:r0_24, 0:r91_60 +# 91| m91_62(unknown) = ^CallSideEffect : ~m91_59 +# 91| m91_63(unknown) = Chi : total:m91_59, partial:m91_62 +#-----| v0_25(void) = ^IndirectReadSideEffect[-1] : &:r0_24, ~m91_63 #-----| Goto -> Block 1 #-----| Block 3 -#-----| v0_27(void) = NoOp : +#-----| v0_26(void) = NoOp : # 91| r91_64(glval) = VariableAddress[(unnamed local variable)] : # 91| r91_65(glval) = FunctionAddress[final_suspend] : # 91| r91_66(suspend_always) = Call[final_suspend] : func:r91_65, this:r91_64 -# 91| m91_67(unknown) = ^CallSideEffect : ~m0_23 -# 91| m91_68(unknown) = Chi : total:m0_23, partial:m91_67 +# 91| m91_67(unknown) = ^CallSideEffect : ~m0_22 +# 91| m91_68(unknown) = Chi : total:m0_22, partial:m91_67 # 91| v91_69(void) = ^IndirectReadSideEffect[-1] : &:r91_64, ~m91_68 # 91| m91_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_64 # 91| m91_71(unknown) = Chi : total:m91_68, partial:m91_70 -#-----| r0_28(glval) = VariableAddress[#temp0:0] : +#-----| r0_27(glval) = VariableAddress[#temp0:0] : # 91| r91_72(glval) = VariableAddress[#temp91:21] : # 91| r91_73(glval) = VariableAddress[(unnamed local variable)] : # 91| r91_74(glval) = FunctionAddress[final_suspend] : @@ -1036,16 +1034,16 @@ coroutines.cpp: # 91| m91_81(suspend_always) = Store[#temp91:21] : &:r91_72, r91_75 # 91| m91_82(unknown) = Chi : total:m91_80, partial:m91_81 # 91| r91_83(suspend_always *) = CopyValue : r91_72 -# 91| m91_84(suspend_always *) = Store[#temp0:0] : &:r0_28, r91_83 -#-----| r0_29(suspend_always *) = Load[#temp0:0] : &:r0_28, m91_84 -# 91| r91_85(glval) = CopyValue : r0_29 +# 91| m91_84(suspend_always *) = Store[#temp0:0] : &:r0_27, r91_83 +#-----| r0_28(suspend_always *) = Load[#temp0:0] : &:r0_27, m91_84 +# 91| r91_85(glval) = CopyValue : r0_28 # 91| r91_86(glval) = Convert : r91_85 # 91| r91_87(glval) = FunctionAddress[await_ready] : # 91| r91_88(bool) = Call[await_ready] : func:r91_87, this:r91_86 # 91| m91_89(unknown) = ^CallSideEffect : ~m91_82 # 91| m91_90(unknown) = Chi : total:m91_82, partial:m91_89 # 91| v91_91(void) = ^IndirectReadSideEffect[-1] : &:r91_86, ~m91_90 -#-----| v0_30(void) = ConditionalBranch : r91_88 +#-----| v0_29(void) = ConditionalBranch : r91_88 #-----| False -> Block 5 #-----| True -> Block 4 @@ -1053,40 +1051,40 @@ coroutines.cpp: # 91| m91_92(unknown) = Phi : from 3:~m91_90, from 5:~m91_122 # 91| r91_93(suspend_always *) = CopyValue : r91_83 # 91| r91_94(glval) = CopyValue : r91_93 -#-----| r0_31(glval) = Convert : r91_94 +#-----| r0_30(glval) = Convert : r91_94 # 91| r91_95(glval) = FunctionAddress[await_resume] : -# 91| v91_96(void) = Call[await_resume] : func:r91_95, this:r0_31 +# 91| v91_96(void) = Call[await_resume] : func:r91_95, this:r0_30 # 91| m91_97(unknown) = ^CallSideEffect : ~m91_92 # 91| m91_98(unknown) = Chi : total:m91_92, partial:m91_97 -#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m91_98 +#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m91_98 # 91| r91_99(glval) = VariableAddress[#return] : # 91| v91_100(void) = ReturnValue : &:r91_99, ~m91_98 # 91| v91_101(void) = AliasedUse : ~m91_98 # 91| v91_102(void) = ExitFunction : # 91| Block 5 -# 91| r91_103(suspend_always *) = CopyValue : r91_83 -# 91| r91_104(glval) = CopyValue : r91_103 -#-----| r0_33(glval) = Convert : r91_104 -# 91| r91_105(glval) = FunctionAddress[await_suspend] : -# 91| r91_106(glval>) = VariableAddress[#temp91:21] : -# 91| m91_107(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_106 -# 91| m91_108(unknown) = Chi : total:m91_90, partial:m91_107 -# 91| r91_109(glval) = FunctionAddress[coroutine_handle] : -# 91| r91_110(glval>) = VariableAddress : -# 91| r91_111(glval>) = Convert : r91_110 -# 91| r91_112(coroutine_handle &) = CopyValue : r91_111 -# 91| v91_113(void) = Call[coroutine_handle] : func:r91_109, this:r91_106, 0:r91_112 -# 91| m91_114(unknown) = ^CallSideEffect : ~m91_108 -# 91| m91_115(unknown) = Chi : total:m91_108, partial:m91_114 -# 91| v91_116(void) = ^BufferReadSideEffect[0] : &:r91_112, ~m91_115 -# 91| m91_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_106 -# 91| m91_118(unknown) = Chi : total:m91_115, partial:m91_117 -# 91| r91_119(coroutine_handle) = Load[#temp91:21] : &:r91_106, ~m91_118 -# 91| v91_120(void) = Call[await_suspend] : func:r91_105, this:r0_33, 0:r91_119 -# 91| m91_121(unknown) = ^CallSideEffect : ~m91_118 -# 91| m91_122(unknown) = Chi : total:m91_118, partial:m91_121 -#-----| v0_34(void) = ^IndirectReadSideEffect[-1] : &:r0_33, ~m91_122 +# 91| r91_103(suspend_always *) = CopyValue : r91_83 +# 91| r91_104(glval) = CopyValue : r91_103 +#-----| r0_32(glval) = Convert : r91_104 +# 91| r91_105(glval) = FunctionAddress[await_suspend] : +# 91| r91_106(glval>) = VariableAddress[#temp91:21] : +# 91| m91_107(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_106 +# 91| m91_108(unknown) = Chi : total:m91_90, partial:m91_107 +# 91| r91_109(glval) = FunctionAddress[coroutine_handle] : +# 91| r91_110(glval>) = VariableAddress[(unnamed local variable)] : +# 91| r91_111(glval>) = Convert : r91_110 +# 91| r91_112(coroutine_handle &) = CopyValue : r91_111 +# 91| v91_113(void) = Call[coroutine_handle] : func:r91_109, this:r91_106, 0:r91_112 +# 91| m91_114(unknown) = ^CallSideEffect : ~m91_108 +# 91| m91_115(unknown) = Chi : total:m91_108, partial:m91_114 +# 91| v91_116(void) = ^BufferReadSideEffect[0] : &:r91_112, ~m91_115 +# 91| m91_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_106 +# 91| m91_118(unknown) = Chi : total:m91_115, partial:m91_117 +# 91| r91_119(coroutine_handle) = Load[#temp91:21] : &:r91_106, ~m91_118 +# 91| v91_120(void) = Call[await_suspend] : func:r91_105, this:r0_32, 0:r91_119 +# 91| m91_121(unknown) = ^CallSideEffect : ~m91_118 +# 91| m91_122(unknown) = Chi : total:m91_118, partial:m91_121 +#-----| v0_33(void) = ^IndirectReadSideEffect[-1] : &:r0_32, ~m91_122 #-----| Goto -> Block 4 # 95| co_returnable_void co_yield_value_void(int) @@ -1141,18 +1139,17 @@ coroutines.cpp: #-----| Block 1 #-----| m0_8(unknown) = Phi : from 0:~m95_36, from 2:~m95_63 #-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress : -#-----| m0_11(bool) = Store[?] : &:r0_10, r0_9 -#-----| m0_12(unknown) = Chi : total:m0_8, partial:m0_11 +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 # 95| r95_38(suspend_always *) = CopyValue : r95_29 # 95| r95_39(glval) = CopyValue : r95_38 -#-----| r0_13(glval) = Convert : r95_39 +#-----| r0_12(glval) = Convert : r95_39 # 95| r95_40(glval) = FunctionAddress[await_resume] : -# 95| v95_41(void) = Call[await_resume] : func:r95_40, this:r0_13 -# 95| m95_42(unknown) = ^CallSideEffect : ~m0_12 -# 95| m95_43(unknown) = Chi : total:m0_12, partial:m95_42 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m95_43 -#-----| v0_15(void) = CopyValue : v95_41 +# 95| v95_41(void) = Call[await_resume] : func:r95_40, this:r0_12 +# 95| m95_42(unknown) = ^CallSideEffect : ~m0_8 +# 95| m95_43(unknown) = Chi : total:m0_8, partial:m95_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m95_43 +#-----| v0_14(void) = CopyValue : v95_41 # 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : # 96| r96_2(glval) = FunctionAddress[yield_value] : # 96| r96_3(glval) = VariableAddress[i] : @@ -1163,7 +1160,7 @@ coroutines.cpp: # 96| v96_8(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m96_7 # 96| m96_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 # 96| m96_10(unknown) = Chi : total:m96_7, partial:m96_9 -#-----| r0_16(glval) = VariableAddress[#temp0:0] : +#-----| r0_15(glval) = VariableAddress[#temp0:0] : # 96| r96_11(glval) = VariableAddress[#temp96:13] : # 96| r96_12(glval) = VariableAddress[(unnamed local variable)] : # 96| r96_13(glval) = FunctionAddress[yield_value] : @@ -1178,9 +1175,9 @@ coroutines.cpp: # 96| m96_22(suspend_always) = Store[#temp96:13] : &:r96_11, r96_16 # 96| m96_23(unknown) = Chi : total:m96_21, partial:m96_22 # 96| r96_24(suspend_always *) = CopyValue : r96_11 -# 96| m96_25(suspend_always *) = Store[#temp0:0] : &:r0_16, r96_24 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, m96_25 -# 96| r96_26(glval) = CopyValue : r0_17 +# 96| m96_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r96_24 +#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m96_25 +# 96| r96_26(glval) = CopyValue : r0_16 # 96| r96_27(glval) = Convert : r96_26 # 96| r96_28(glval) = FunctionAddress[await_ready] : # 96| r96_29(bool) = Call[await_ready] : func:r96_28, this:r96_27 @@ -1192,88 +1189,88 @@ coroutines.cpp: #-----| True -> Block 3 # 95| Block 2 -# 95| r95_44(suspend_always *) = CopyValue : r95_29 -# 95| r95_45(glval) = CopyValue : r95_44 -#-----| r0_18(glval) = Convert : r95_45 -# 95| r95_46(glval) = FunctionAddress[await_suspend] : -# 95| r95_47(glval>) = VariableAddress[#temp95:20] : -# 95| m95_48(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_47 -# 95| m95_49(unknown) = Chi : total:m95_36, partial:m95_48 -# 95| r95_50(glval) = FunctionAddress[coroutine_handle] : -# 95| r95_51(glval>) = VariableAddress : -# 95| r95_52(glval>) = Convert : r95_51 -# 95| r95_53(coroutine_handle &) = CopyValue : r95_52 -# 95| v95_54(void) = Call[coroutine_handle] : func:r95_50, this:r95_47, 0:r95_53 -# 95| m95_55(unknown) = ^CallSideEffect : ~m95_49 -# 95| m95_56(unknown) = Chi : total:m95_49, partial:m95_55 -# 95| v95_57(void) = ^BufferReadSideEffect[0] : &:r95_53, ~m95_56 -# 95| m95_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_47 -# 95| m95_59(unknown) = Chi : total:m95_56, partial:m95_58 -# 95| r95_60(coroutine_handle) = Load[#temp95:20] : &:r95_47, ~m95_59 -# 95| v95_61(void) = Call[await_suspend] : func:r95_46, this:r0_18, 0:r95_60 -# 95| m95_62(unknown) = ^CallSideEffect : ~m95_59 -# 95| m95_63(unknown) = Chi : total:m95_59, partial:m95_62 -#-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m95_63 +# 95| r95_44(suspend_always *) = CopyValue : r95_29 +# 95| r95_45(glval) = CopyValue : r95_44 +#-----| r0_17(glval) = Convert : r95_45 +# 95| r95_46(glval) = FunctionAddress[await_suspend] : +# 95| r95_47(glval>) = VariableAddress[#temp95:20] : +# 95| m95_48(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_47 +# 95| m95_49(unknown) = Chi : total:m95_36, partial:m95_48 +# 95| r95_50(glval) = FunctionAddress[coroutine_handle] : +# 95| r95_51(glval>) = VariableAddress[(unnamed local variable)] : +# 95| r95_52(glval>) = Convert : r95_51 +# 95| r95_53(coroutine_handle &) = CopyValue : r95_52 +# 95| v95_54(void) = Call[coroutine_handle] : func:r95_50, this:r95_47, 0:r95_53 +# 95| m95_55(unknown) = ^CallSideEffect : ~m95_49 +# 95| m95_56(unknown) = Chi : total:m95_49, partial:m95_55 +# 95| v95_57(void) = ^BufferReadSideEffect[0] : &:r95_53, ~m95_56 +# 95| m95_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_47 +# 95| m95_59(unknown) = Chi : total:m95_56, partial:m95_58 +# 95| r95_60(coroutine_handle) = Load[#temp95:20] : &:r95_47, ~m95_59 +# 95| v95_61(void) = Call[await_suspend] : func:r95_46, this:r0_17, 0:r95_60 +# 95| m95_62(unknown) = ^CallSideEffect : ~m95_59 +# 95| m95_63(unknown) = Chi : total:m95_59, partial:m95_62 +#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m95_63 #-----| Goto -> Block 1 # 96| Block 3 # 96| m96_34(unknown) = Phi : from 1:~m96_31, from 4:~m96_60 # 96| r96_35(suspend_always *) = CopyValue : r96_24 # 96| r96_36(glval) = CopyValue : r96_35 -#-----| r0_20(glval) = Convert : r96_36 +#-----| r0_19(glval) = Convert : r96_36 # 96| r96_37(glval) = FunctionAddress[await_resume] : -# 96| v96_38(void) = Call[await_resume] : func:r96_37, this:r0_20 +# 96| v96_38(void) = Call[await_resume] : func:r96_37, this:r0_19 # 96| m96_39(unknown) = ^CallSideEffect : ~m96_34 # 96| m96_40(unknown) = Chi : total:m96_34, partial:m96_39 -#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m96_40 -#-----| r0_22(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_23(glval) = FunctionAddress[return_void] : -#-----| v0_24(void) = Call[return_void] : func:r0_23, this:r0_22 -#-----| m0_25(unknown) = ^CallSideEffect : ~m96_40 -#-----| m0_26(unknown) = Chi : total:m96_40, partial:m0_25 -#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_22, ~m0_26 -#-----| m0_28(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_22 -#-----| m0_29(unknown) = Chi : total:m0_26, partial:m0_28 +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m96_40 +#-----| r0_21(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_22(glval) = FunctionAddress[return_void] : +#-----| v0_23(void) = Call[return_void] : func:r0_22, this:r0_21 +#-----| m0_24(unknown) = ^CallSideEffect : ~m96_40 +#-----| m0_25(unknown) = Chi : total:m96_40, partial:m0_24 +#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 +#-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 +#-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 # 97| v97_1(void) = NoOp : -#-----| v0_30(void) = NoOp : +#-----| v0_29(void) = NoOp : #-----| Goto (back edge) -> Block 5 # 96| Block 4 -# 96| r96_41(suspend_always *) = CopyValue : r96_24 -# 96| r96_42(glval) = CopyValue : r96_41 -#-----| r0_31(glval) = Convert : r96_42 -# 96| r96_43(glval) = FunctionAddress[await_suspend] : -# 96| r96_44(glval>) = VariableAddress[#temp96:3] : -# 96| m96_45(coroutine_handle) = Uninitialized[#temp96:3] : &:r96_44 -# 96| m96_46(unknown) = Chi : total:m96_31, partial:m96_45 -# 96| r96_47(glval) = FunctionAddress[coroutine_handle] : -# 96| r96_48(glval>) = VariableAddress : -# 96| r96_49(glval>) = Convert : r96_48 -# 96| r96_50(coroutine_handle &) = CopyValue : r96_49 -# 96| v96_51(void) = Call[coroutine_handle] : func:r96_47, this:r96_44, 0:r96_50 -# 96| m96_52(unknown) = ^CallSideEffect : ~m96_46 -# 96| m96_53(unknown) = Chi : total:m96_46, partial:m96_52 -# 96| v96_54(void) = ^BufferReadSideEffect[0] : &:r96_50, ~m96_53 -# 96| m96_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r96_44 -# 96| m96_56(unknown) = Chi : total:m96_53, partial:m96_55 -# 96| r96_57(coroutine_handle) = Load[#temp96:3] : &:r96_44, ~m96_56 -# 96| v96_58(void) = Call[await_suspend] : func:r96_43, this:r0_31, 0:r96_57 -# 96| m96_59(unknown) = ^CallSideEffect : ~m96_56 -# 96| m96_60(unknown) = Chi : total:m96_56, partial:m96_59 -#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m96_60 +# 96| r96_41(suspend_always *) = CopyValue : r96_24 +# 96| r96_42(glval) = CopyValue : r96_41 +#-----| r0_30(glval) = Convert : r96_42 +# 96| r96_43(glval) = FunctionAddress[await_suspend] : +# 96| r96_44(glval>) = VariableAddress[#temp96:3] : +# 96| m96_45(coroutine_handle) = Uninitialized[#temp96:3] : &:r96_44 +# 96| m96_46(unknown) = Chi : total:m96_31, partial:m96_45 +# 96| r96_47(glval) = FunctionAddress[coroutine_handle] : +# 96| r96_48(glval>) = VariableAddress[(unnamed local variable)] : +# 96| r96_49(glval>) = Convert : r96_48 +# 96| r96_50(coroutine_handle &) = CopyValue : r96_49 +# 96| v96_51(void) = Call[coroutine_handle] : func:r96_47, this:r96_44, 0:r96_50 +# 96| m96_52(unknown) = ^CallSideEffect : ~m96_46 +# 96| m96_53(unknown) = Chi : total:m96_46, partial:m96_52 +# 96| v96_54(void) = ^BufferReadSideEffect[0] : &:r96_50, ~m96_53 +# 96| m96_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r96_44 +# 96| m96_56(unknown) = Chi : total:m96_53, partial:m96_55 +# 96| r96_57(coroutine_handle) = Load[#temp96:3] : &:r96_44, ~m96_56 +# 96| v96_58(void) = Call[await_suspend] : func:r96_43, this:r0_30, 0:r96_57 +# 96| m96_59(unknown) = ^CallSideEffect : ~m96_56 +# 96| m96_60(unknown) = Chi : total:m96_56, partial:m96_59 +#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m96_60 #-----| Goto -> Block 3 #-----| Block 5 -#-----| v0_33(void) = NoOp : +#-----| v0_32(void) = NoOp : # 95| r95_64(glval) = VariableAddress[(unnamed local variable)] : # 95| r95_65(glval) = FunctionAddress[final_suspend] : # 95| r95_66(suspend_always) = Call[final_suspend] : func:r95_65, this:r95_64 -# 95| m95_67(unknown) = ^CallSideEffect : ~m0_29 -# 95| m95_68(unknown) = Chi : total:m0_29, partial:m95_67 +# 95| m95_67(unknown) = ^CallSideEffect : ~m0_28 +# 95| m95_68(unknown) = Chi : total:m0_28, partial:m95_67 # 95| v95_69(void) = ^IndirectReadSideEffect[-1] : &:r95_64, ~m95_68 # 95| m95_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_64 # 95| m95_71(unknown) = Chi : total:m95_68, partial:m95_70 -#-----| r0_34(glval) = VariableAddress[#temp0:0] : +#-----| r0_33(glval) = VariableAddress[#temp0:0] : # 95| r95_72(glval) = VariableAddress[#temp95:20] : # 95| r95_73(glval) = VariableAddress[(unnamed local variable)] : # 95| r95_74(glval) = FunctionAddress[final_suspend] : @@ -1286,16 +1283,16 @@ coroutines.cpp: # 95| m95_81(suspend_always) = Store[#temp95:20] : &:r95_72, r95_75 # 95| m95_82(unknown) = Chi : total:m95_80, partial:m95_81 # 95| r95_83(suspend_always *) = CopyValue : r95_72 -# 95| m95_84(suspend_always *) = Store[#temp0:0] : &:r0_34, r95_83 -#-----| r0_35(suspend_always *) = Load[#temp0:0] : &:r0_34, m95_84 -# 95| r95_85(glval) = CopyValue : r0_35 +# 95| m95_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r95_83 +#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m95_84 +# 95| r95_85(glval) = CopyValue : r0_34 # 95| r95_86(glval) = Convert : r95_85 # 95| r95_87(glval) = FunctionAddress[await_ready] : # 95| r95_88(bool) = Call[await_ready] : func:r95_87, this:r95_86 # 95| m95_89(unknown) = ^CallSideEffect : ~m95_82 # 95| m95_90(unknown) = Chi : total:m95_82, partial:m95_89 # 95| v95_91(void) = ^IndirectReadSideEffect[-1] : &:r95_86, ~m95_90 -#-----| v0_36(void) = ConditionalBranch : r95_88 +#-----| v0_35(void) = ConditionalBranch : r95_88 #-----| False -> Block 7 #-----| True -> Block 6 @@ -1303,40 +1300,40 @@ coroutines.cpp: # 95| m95_92(unknown) = Phi : from 5:~m95_90, from 7:~m95_122 # 95| r95_93(suspend_always *) = CopyValue : r95_83 # 95| r95_94(glval) = CopyValue : r95_93 -#-----| r0_37(glval) = Convert : r95_94 +#-----| r0_36(glval) = Convert : r95_94 # 95| r95_95(glval) = FunctionAddress[await_resume] : -# 95| v95_96(void) = Call[await_resume] : func:r95_95, this:r0_37 +# 95| v95_96(void) = Call[await_resume] : func:r95_95, this:r0_36 # 95| m95_97(unknown) = ^CallSideEffect : ~m95_92 # 95| m95_98(unknown) = Chi : total:m95_92, partial:m95_97 -#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, ~m95_98 +#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m95_98 # 95| r95_99(glval) = VariableAddress[#return] : # 95| v95_100(void) = ReturnValue : &:r95_99, ~m95_98 # 95| v95_101(void) = AliasedUse : ~m95_98 # 95| v95_102(void) = ExitFunction : # 95| Block 7 -# 95| r95_103(suspend_always *) = CopyValue : r95_83 -# 95| r95_104(glval) = CopyValue : r95_103 -#-----| r0_39(glval) = Convert : r95_104 -# 95| r95_105(glval) = FunctionAddress[await_suspend] : -# 95| r95_106(glval>) = VariableAddress[#temp95:20] : -# 95| m95_107(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_106 -# 95| m95_108(unknown) = Chi : total:m95_90, partial:m95_107 -# 95| r95_109(glval) = FunctionAddress[coroutine_handle] : -# 95| r95_110(glval>) = VariableAddress : -# 95| r95_111(glval>) = Convert : r95_110 -# 95| r95_112(coroutine_handle &) = CopyValue : r95_111 -# 95| v95_113(void) = Call[coroutine_handle] : func:r95_109, this:r95_106, 0:r95_112 -# 95| m95_114(unknown) = ^CallSideEffect : ~m95_108 -# 95| m95_115(unknown) = Chi : total:m95_108, partial:m95_114 -# 95| v95_116(void) = ^BufferReadSideEffect[0] : &:r95_112, ~m95_115 -# 95| m95_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_106 -# 95| m95_118(unknown) = Chi : total:m95_115, partial:m95_117 -# 95| r95_119(coroutine_handle) = Load[#temp95:20] : &:r95_106, ~m95_118 -# 95| v95_120(void) = Call[await_suspend] : func:r95_105, this:r0_39, 0:r95_119 -# 95| m95_121(unknown) = ^CallSideEffect : ~m95_118 -# 95| m95_122(unknown) = Chi : total:m95_118, partial:m95_121 -#-----| v0_40(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m95_122 +# 95| r95_103(suspend_always *) = CopyValue : r95_83 +# 95| r95_104(glval) = CopyValue : r95_103 +#-----| r0_38(glval) = Convert : r95_104 +# 95| r95_105(glval) = FunctionAddress[await_suspend] : +# 95| r95_106(glval>) = VariableAddress[#temp95:20] : +# 95| m95_107(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_106 +# 95| m95_108(unknown) = Chi : total:m95_90, partial:m95_107 +# 95| r95_109(glval) = FunctionAddress[coroutine_handle] : +# 95| r95_110(glval>) = VariableAddress[(unnamed local variable)] : +# 95| r95_111(glval>) = Convert : r95_110 +# 95| r95_112(coroutine_handle &) = CopyValue : r95_111 +# 95| v95_113(void) = Call[coroutine_handle] : func:r95_109, this:r95_106, 0:r95_112 +# 95| m95_114(unknown) = ^CallSideEffect : ~m95_108 +# 95| m95_115(unknown) = Chi : total:m95_108, partial:m95_114 +# 95| v95_116(void) = ^BufferReadSideEffect[0] : &:r95_112, ~m95_115 +# 95| m95_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_106 +# 95| m95_118(unknown) = Chi : total:m95_115, partial:m95_117 +# 95| r95_119(coroutine_handle) = Load[#temp95:20] : &:r95_106, ~m95_118 +# 95| v95_120(void) = Call[await_suspend] : func:r95_105, this:r0_38, 0:r95_119 +# 95| m95_121(unknown) = ^CallSideEffect : ~m95_118 +# 95| m95_122(unknown) = Chi : total:m95_118, partial:m95_121 +#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m95_122 #-----| Goto -> Block 6 # 99| co_returnable_value co_yield_value_value(int) @@ -1391,18 +1388,17 @@ coroutines.cpp: #-----| Block 1 #-----| m0_8(unknown) = Phi : from 0:~m99_36, from 2:~m99_63 #-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress : -#-----| m0_11(bool) = Store[?] : &:r0_10, r0_9 -#-----| m0_12(unknown) = Chi : total:m0_8, partial:m0_11 +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 # 99| r99_38(suspend_always *) = CopyValue : r99_29 # 99| r99_39(glval) = CopyValue : r99_38 -#-----| r0_13(glval) = Convert : r99_39 +#-----| r0_12(glval) = Convert : r99_39 # 99| r99_40(glval) = FunctionAddress[await_resume] : -# 99| v99_41(void) = Call[await_resume] : func:r99_40, this:r0_13 -# 99| m99_42(unknown) = ^CallSideEffect : ~m0_12 -# 99| m99_43(unknown) = Chi : total:m0_12, partial:m99_42 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m99_43 -#-----| v0_15(void) = CopyValue : v99_41 +# 99| v99_41(void) = Call[await_resume] : func:r99_40, this:r0_12 +# 99| m99_42(unknown) = ^CallSideEffect : ~m0_8 +# 99| m99_43(unknown) = Chi : total:m0_8, partial:m99_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m99_43 +#-----| v0_14(void) = CopyValue : v99_41 # 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : # 100| r100_2(glval) = FunctionAddress[yield_value] : # 100| r100_3(glval) = VariableAddress[i] : @@ -1413,7 +1409,7 @@ coroutines.cpp: # 100| v100_8(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m100_7 # 100| m100_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 # 100| m100_10(unknown) = Chi : total:m100_7, partial:m100_9 -#-----| r0_16(glval) = VariableAddress[#temp0:0] : +#-----| r0_15(glval) = VariableAddress[#temp0:0] : # 100| r100_11(glval) = VariableAddress[#temp100:13] : # 100| r100_12(glval) = VariableAddress[(unnamed local variable)] : # 100| r100_13(glval) = FunctionAddress[yield_value] : @@ -1428,9 +1424,9 @@ coroutines.cpp: # 100| m100_22(suspend_always) = Store[#temp100:13] : &:r100_11, r100_16 # 100| m100_23(unknown) = Chi : total:m100_21, partial:m100_22 # 100| r100_24(suspend_always *) = CopyValue : r100_11 -# 100| m100_25(suspend_always *) = Store[#temp0:0] : &:r0_16, r100_24 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, m100_25 -# 100| r100_26(glval) = CopyValue : r0_17 +# 100| m100_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r100_24 +#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m100_25 +# 100| r100_26(glval) = CopyValue : r0_16 # 100| r100_27(glval) = Convert : r100_26 # 100| r100_28(glval) = FunctionAddress[await_ready] : # 100| r100_29(bool) = Call[await_ready] : func:r100_28, this:r100_27 @@ -1442,41 +1438,41 @@ coroutines.cpp: #-----| True -> Block 3 # 99| Block 2 -# 99| r99_44(suspend_always *) = CopyValue : r99_29 -# 99| r99_45(glval) = CopyValue : r99_44 -#-----| r0_18(glval) = Convert : r99_45 -# 99| r99_46(glval) = FunctionAddress[await_suspend] : -# 99| r99_47(glval>) = VariableAddress[#temp99:21] : -# 99| m99_48(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_47 -# 99| m99_49(unknown) = Chi : total:m99_36, partial:m99_48 -# 99| r99_50(glval) = FunctionAddress[coroutine_handle] : -# 99| r99_51(glval>) = VariableAddress : -# 99| r99_52(glval>) = Convert : r99_51 -# 99| r99_53(coroutine_handle &) = CopyValue : r99_52 -# 99| v99_54(void) = Call[coroutine_handle] : func:r99_50, this:r99_47, 0:r99_53 -# 99| m99_55(unknown) = ^CallSideEffect : ~m99_49 -# 99| m99_56(unknown) = Chi : total:m99_49, partial:m99_55 -# 99| v99_57(void) = ^BufferReadSideEffect[0] : &:r99_53, ~m99_56 -# 99| m99_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_47 -# 99| m99_59(unknown) = Chi : total:m99_56, partial:m99_58 -# 99| r99_60(coroutine_handle) = Load[#temp99:21] : &:r99_47, ~m99_59 -# 99| v99_61(void) = Call[await_suspend] : func:r99_46, this:r0_18, 0:r99_60 -# 99| m99_62(unknown) = ^CallSideEffect : ~m99_59 -# 99| m99_63(unknown) = Chi : total:m99_59, partial:m99_62 -#-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m99_63 +# 99| r99_44(suspend_always *) = CopyValue : r99_29 +# 99| r99_45(glval) = CopyValue : r99_44 +#-----| r0_17(glval) = Convert : r99_45 +# 99| r99_46(glval) = FunctionAddress[await_suspend] : +# 99| r99_47(glval>) = VariableAddress[#temp99:21] : +# 99| m99_48(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_47 +# 99| m99_49(unknown) = Chi : total:m99_36, partial:m99_48 +# 99| r99_50(glval) = FunctionAddress[coroutine_handle] : +# 99| r99_51(glval>) = VariableAddress[(unnamed local variable)] : +# 99| r99_52(glval>) = Convert : r99_51 +# 99| r99_53(coroutine_handle &) = CopyValue : r99_52 +# 99| v99_54(void) = Call[coroutine_handle] : func:r99_50, this:r99_47, 0:r99_53 +# 99| m99_55(unknown) = ^CallSideEffect : ~m99_49 +# 99| m99_56(unknown) = Chi : total:m99_49, partial:m99_55 +# 99| v99_57(void) = ^BufferReadSideEffect[0] : &:r99_53, ~m99_56 +# 99| m99_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_47 +# 99| m99_59(unknown) = Chi : total:m99_56, partial:m99_58 +# 99| r99_60(coroutine_handle) = Load[#temp99:21] : &:r99_47, ~m99_59 +# 99| v99_61(void) = Call[await_suspend] : func:r99_46, this:r0_17, 0:r99_60 +# 99| m99_62(unknown) = ^CallSideEffect : ~m99_59 +# 99| m99_63(unknown) = Chi : total:m99_59, partial:m99_62 +#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m99_63 #-----| Goto -> Block 1 # 100| Block 3 # 100| m100_34(unknown) = Phi : from 1:~m100_31, from 4:~m100_60 # 100| r100_35(suspend_always *) = CopyValue : r100_24 # 100| r100_36(glval) = CopyValue : r100_35 -#-----| r0_20(glval) = Convert : r100_36 +#-----| r0_19(glval) = Convert : r100_36 # 100| r100_37(glval) = FunctionAddress[await_resume] : -# 100| v100_38(void) = Call[await_resume] : func:r100_37, this:r0_20 +# 100| v100_38(void) = Call[await_resume] : func:r100_37, this:r0_19 # 100| m100_39(unknown) = ^CallSideEffect : ~m100_34 # 100| m100_40(unknown) = Chi : total:m100_34, partial:m100_39 -#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m100_40 -#-----| v0_22(void) = NoOp : +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m100_40 +#-----| v0_21(void) = NoOp : # 99| r99_64(glval) = VariableAddress[(unnamed local variable)] : # 99| r99_65(glval) = FunctionAddress[final_suspend] : # 99| r99_66(suspend_always) = Call[final_suspend] : func:r99_65, this:r99_64 @@ -1485,7 +1481,7 @@ coroutines.cpp: # 99| v99_69(void) = ^IndirectReadSideEffect[-1] : &:r99_64, ~m99_68 # 99| m99_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_64 # 99| m99_71(unknown) = Chi : total:m99_68, partial:m99_70 -#-----| r0_23(glval) = VariableAddress[#temp0:0] : +#-----| r0_22(glval) = VariableAddress[#temp0:0] : # 99| r99_72(glval) = VariableAddress[#temp99:21] : # 99| r99_73(glval) = VariableAddress[(unnamed local variable)] : # 99| r99_74(glval) = FunctionAddress[final_suspend] : @@ -1498,82 +1494,82 @@ coroutines.cpp: # 99| m99_81(suspend_always) = Store[#temp99:21] : &:r99_72, r99_75 # 99| m99_82(unknown) = Chi : total:m99_80, partial:m99_81 # 99| r99_83(suspend_always *) = CopyValue : r99_72 -# 99| m99_84(suspend_always *) = Store[#temp0:0] : &:r0_23, r99_83 -#-----| r0_24(suspend_always *) = Load[#temp0:0] : &:r0_23, m99_84 -# 99| r99_85(glval) = CopyValue : r0_24 +# 99| m99_84(suspend_always *) = Store[#temp0:0] : &:r0_22, r99_83 +#-----| r0_23(suspend_always *) = Load[#temp0:0] : &:r0_22, m99_84 +# 99| r99_85(glval) = CopyValue : r0_23 # 99| r99_86(glval) = Convert : r99_85 # 99| r99_87(glval) = FunctionAddress[await_ready] : # 99| r99_88(bool) = Call[await_ready] : func:r99_87, this:r99_86 # 99| m99_89(unknown) = ^CallSideEffect : ~m99_82 # 99| m99_90(unknown) = Chi : total:m99_82, partial:m99_89 # 99| v99_91(void) = ^IndirectReadSideEffect[-1] : &:r99_86, ~m99_90 -#-----| v0_25(void) = ConditionalBranch : r99_88 +#-----| v0_24(void) = ConditionalBranch : r99_88 #-----| False -> Block 6 #-----| True -> Block 5 # 100| Block 4 -# 100| r100_41(suspend_always *) = CopyValue : r100_24 -# 100| r100_42(glval) = CopyValue : r100_41 -#-----| r0_26(glval) = Convert : r100_42 -# 100| r100_43(glval) = FunctionAddress[await_suspend] : -# 100| r100_44(glval>) = VariableAddress[#temp100:3] : -# 100| m100_45(coroutine_handle) = Uninitialized[#temp100:3] : &:r100_44 -# 100| m100_46(unknown) = Chi : total:m100_31, partial:m100_45 -# 100| r100_47(glval) = FunctionAddress[coroutine_handle] : -# 100| r100_48(glval>) = VariableAddress : -# 100| r100_49(glval>) = Convert : r100_48 -# 100| r100_50(coroutine_handle &) = CopyValue : r100_49 -# 100| v100_51(void) = Call[coroutine_handle] : func:r100_47, this:r100_44, 0:r100_50 -# 100| m100_52(unknown) = ^CallSideEffect : ~m100_46 -# 100| m100_53(unknown) = Chi : total:m100_46, partial:m100_52 -# 100| v100_54(void) = ^BufferReadSideEffect[0] : &:r100_50, ~m100_53 -# 100| m100_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r100_44 -# 100| m100_56(unknown) = Chi : total:m100_53, partial:m100_55 -# 100| r100_57(coroutine_handle) = Load[#temp100:3] : &:r100_44, ~m100_56 -# 100| v100_58(void) = Call[await_suspend] : func:r100_43, this:r0_26, 0:r100_57 -# 100| m100_59(unknown) = ^CallSideEffect : ~m100_56 -# 100| m100_60(unknown) = Chi : total:m100_56, partial:m100_59 -#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m100_60 +# 100| r100_41(suspend_always *) = CopyValue : r100_24 +# 100| r100_42(glval) = CopyValue : r100_41 +#-----| r0_25(glval) = Convert : r100_42 +# 100| r100_43(glval) = FunctionAddress[await_suspend] : +# 100| r100_44(glval>) = VariableAddress[#temp100:3] : +# 100| m100_45(coroutine_handle) = Uninitialized[#temp100:3] : &:r100_44 +# 100| m100_46(unknown) = Chi : total:m100_31, partial:m100_45 +# 100| r100_47(glval) = FunctionAddress[coroutine_handle] : +# 100| r100_48(glval>) = VariableAddress[(unnamed local variable)] : +# 100| r100_49(glval>) = Convert : r100_48 +# 100| r100_50(coroutine_handle &) = CopyValue : r100_49 +# 100| v100_51(void) = Call[coroutine_handle] : func:r100_47, this:r100_44, 0:r100_50 +# 100| m100_52(unknown) = ^CallSideEffect : ~m100_46 +# 100| m100_53(unknown) = Chi : total:m100_46, partial:m100_52 +# 100| v100_54(void) = ^BufferReadSideEffect[0] : &:r100_50, ~m100_53 +# 100| m100_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r100_44 +# 100| m100_56(unknown) = Chi : total:m100_53, partial:m100_55 +# 100| r100_57(coroutine_handle) = Load[#temp100:3] : &:r100_44, ~m100_56 +# 100| v100_58(void) = Call[await_suspend] : func:r100_43, this:r0_25, 0:r100_57 +# 100| m100_59(unknown) = ^CallSideEffect : ~m100_56 +# 100| m100_60(unknown) = Chi : total:m100_56, partial:m100_59 +#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_25, ~m100_60 #-----| Goto -> Block 3 # 99| Block 5 # 99| m99_92(unknown) = Phi : from 3:~m99_90, from 6:~m99_122 # 99| r99_93(suspend_always *) = CopyValue : r99_83 # 99| r99_94(glval) = CopyValue : r99_93 -#-----| r0_28(glval) = Convert : r99_94 +#-----| r0_27(glval) = Convert : r99_94 # 99| r99_95(glval) = FunctionAddress[await_resume] : -# 99| v99_96(void) = Call[await_resume] : func:r99_95, this:r0_28 +# 99| v99_96(void) = Call[await_resume] : func:r99_95, this:r0_27 # 99| m99_97(unknown) = ^CallSideEffect : ~m99_92 # 99| m99_98(unknown) = Chi : total:m99_92, partial:m99_97 -#-----| v0_29(void) = ^IndirectReadSideEffect[-1] : &:r0_28, ~m99_98 +#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m99_98 # 99| r99_99(glval) = VariableAddress[#return] : # 99| v99_100(void) = ReturnValue : &:r99_99, ~m99_98 # 99| v99_101(void) = AliasedUse : ~m99_98 # 99| v99_102(void) = ExitFunction : # 99| Block 6 -# 99| r99_103(suspend_always *) = CopyValue : r99_83 -# 99| r99_104(glval) = CopyValue : r99_103 -#-----| r0_30(glval) = Convert : r99_104 -# 99| r99_105(glval) = FunctionAddress[await_suspend] : -# 99| r99_106(glval>) = VariableAddress[#temp99:21] : -# 99| m99_107(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_106 -# 99| m99_108(unknown) = Chi : total:m99_90, partial:m99_107 -# 99| r99_109(glval) = FunctionAddress[coroutine_handle] : -# 99| r99_110(glval>) = VariableAddress : -# 99| r99_111(glval>) = Convert : r99_110 -# 99| r99_112(coroutine_handle &) = CopyValue : r99_111 -# 99| v99_113(void) = Call[coroutine_handle] : func:r99_109, this:r99_106, 0:r99_112 -# 99| m99_114(unknown) = ^CallSideEffect : ~m99_108 -# 99| m99_115(unknown) = Chi : total:m99_108, partial:m99_114 -# 99| v99_116(void) = ^BufferReadSideEffect[0] : &:r99_112, ~m99_115 -# 99| m99_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_106 -# 99| m99_118(unknown) = Chi : total:m99_115, partial:m99_117 -# 99| r99_119(coroutine_handle) = Load[#temp99:21] : &:r99_106, ~m99_118 -# 99| v99_120(void) = Call[await_suspend] : func:r99_105, this:r0_30, 0:r99_119 -# 99| m99_121(unknown) = ^CallSideEffect : ~m99_118 -# 99| m99_122(unknown) = Chi : total:m99_118, partial:m99_121 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m99_122 +# 99| r99_103(suspend_always *) = CopyValue : r99_83 +# 99| r99_104(glval) = CopyValue : r99_103 +#-----| r0_29(glval) = Convert : r99_104 +# 99| r99_105(glval) = FunctionAddress[await_suspend] : +# 99| r99_106(glval>) = VariableAddress[#temp99:21] : +# 99| m99_107(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_106 +# 99| m99_108(unknown) = Chi : total:m99_90, partial:m99_107 +# 99| r99_109(glval) = FunctionAddress[coroutine_handle] : +# 99| r99_110(glval>) = VariableAddress[(unnamed local variable)] : +# 99| r99_111(glval>) = Convert : r99_110 +# 99| r99_112(coroutine_handle &) = CopyValue : r99_111 +# 99| v99_113(void) = Call[coroutine_handle] : func:r99_109, this:r99_106, 0:r99_112 +# 99| m99_114(unknown) = ^CallSideEffect : ~m99_108 +# 99| m99_115(unknown) = Chi : total:m99_108, partial:m99_114 +# 99| v99_116(void) = ^BufferReadSideEffect[0] : &:r99_112, ~m99_115 +# 99| m99_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_106 +# 99| m99_118(unknown) = Chi : total:m99_115, partial:m99_117 +# 99| r99_119(coroutine_handle) = Load[#temp99:21] : &:r99_106, ~m99_118 +# 99| v99_120(void) = Call[await_suspend] : func:r99_105, this:r0_29, 0:r99_119 +# 99| m99_121(unknown) = ^CallSideEffect : ~m99_118 +# 99| m99_122(unknown) = Chi : total:m99_118, partial:m99_121 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m99_122 #-----| Goto -> Block 5 # 103| co_returnable_void co_yield_and_return_void(int) @@ -1628,18 +1624,17 @@ coroutines.cpp: #-----| Block 1 #-----| m0_8(unknown) = Phi : from 0:~m103_36, from 2:~m103_63 #-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress : -#-----| m0_11(bool) = Store[?] : &:r0_10, r0_9 -#-----| m0_12(unknown) = Chi : total:m0_8, partial:m0_11 +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 # 103| r103_38(suspend_always *) = CopyValue : r103_29 # 103| r103_39(glval) = CopyValue : r103_38 -#-----| r0_13(glval) = Convert : r103_39 +#-----| r0_12(glval) = Convert : r103_39 # 103| r103_40(glval) = FunctionAddress[await_resume] : -# 103| v103_41(void) = Call[await_resume] : func:r103_40, this:r0_13 -# 103| m103_42(unknown) = ^CallSideEffect : ~m0_12 -# 103| m103_43(unknown) = Chi : total:m0_12, partial:m103_42 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m103_43 -#-----| v0_15(void) = CopyValue : v103_41 +# 103| v103_41(void) = Call[await_resume] : func:r103_40, this:r0_12 +# 103| m103_42(unknown) = ^CallSideEffect : ~m0_8 +# 103| m103_43(unknown) = Chi : total:m0_8, partial:m103_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m103_43 +#-----| v0_14(void) = CopyValue : v103_41 # 104| r104_1(glval) = VariableAddress[(unnamed local variable)] : # 104| r104_2(glval) = FunctionAddress[yield_value] : # 104| r104_3(glval) = VariableAddress[i] : @@ -1650,7 +1645,7 @@ coroutines.cpp: # 104| v104_8(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m104_7 # 104| m104_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 # 104| m104_10(unknown) = Chi : total:m104_7, partial:m104_9 -#-----| r0_16(glval) = VariableAddress[#temp0:0] : +#-----| r0_15(glval) = VariableAddress[#temp0:0] : # 104| r104_11(glval) = VariableAddress[#temp104:13] : # 104| r104_12(glval) = VariableAddress[(unnamed local variable)] : # 104| r104_13(glval) = FunctionAddress[yield_value] : @@ -1665,9 +1660,9 @@ coroutines.cpp: # 104| m104_22(suspend_always) = Store[#temp104:13] : &:r104_11, r104_16 # 104| m104_23(unknown) = Chi : total:m104_21, partial:m104_22 # 104| r104_24(suspend_always *) = CopyValue : r104_11 -# 104| m104_25(suspend_always *) = Store[#temp0:0] : &:r0_16, r104_24 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, m104_25 -# 104| r104_26(glval) = CopyValue : r0_17 +# 104| m104_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r104_24 +#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m104_25 +# 104| r104_26(glval) = CopyValue : r0_16 # 104| r104_27(glval) = Convert : r104_26 # 104| r104_28(glval) = FunctionAddress[await_ready] : # 104| r104_29(bool) = Call[await_ready] : func:r104_28, this:r104_27 @@ -1679,88 +1674,88 @@ coroutines.cpp: #-----| True -> Block 3 # 103| Block 2 -# 103| r103_44(suspend_always *) = CopyValue : r103_29 -# 103| r103_45(glval) = CopyValue : r103_44 -#-----| r0_18(glval) = Convert : r103_45 -# 103| r103_46(glval) = FunctionAddress[await_suspend] : -# 103| r103_47(glval>) = VariableAddress[#temp103:20] : -# 103| m103_48(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_47 -# 103| m103_49(unknown) = Chi : total:m103_36, partial:m103_48 -# 103| r103_50(glval) = FunctionAddress[coroutine_handle] : -# 103| r103_51(glval>) = VariableAddress : -# 103| r103_52(glval>) = Convert : r103_51 -# 103| r103_53(coroutine_handle &) = CopyValue : r103_52 -# 103| v103_54(void) = Call[coroutine_handle] : func:r103_50, this:r103_47, 0:r103_53 -# 103| m103_55(unknown) = ^CallSideEffect : ~m103_49 -# 103| m103_56(unknown) = Chi : total:m103_49, partial:m103_55 -# 103| v103_57(void) = ^BufferReadSideEffect[0] : &:r103_53, ~m103_56 -# 103| m103_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_47 -# 103| m103_59(unknown) = Chi : total:m103_56, partial:m103_58 -# 103| r103_60(coroutine_handle) = Load[#temp103:20] : &:r103_47, ~m103_59 -# 103| v103_61(void) = Call[await_suspend] : func:r103_46, this:r0_18, 0:r103_60 -# 103| m103_62(unknown) = ^CallSideEffect : ~m103_59 -# 103| m103_63(unknown) = Chi : total:m103_59, partial:m103_62 -#-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m103_63 +# 103| r103_44(suspend_always *) = CopyValue : r103_29 +# 103| r103_45(glval) = CopyValue : r103_44 +#-----| r0_17(glval) = Convert : r103_45 +# 103| r103_46(glval) = FunctionAddress[await_suspend] : +# 103| r103_47(glval>) = VariableAddress[#temp103:20] : +# 103| m103_48(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_47 +# 103| m103_49(unknown) = Chi : total:m103_36, partial:m103_48 +# 103| r103_50(glval) = FunctionAddress[coroutine_handle] : +# 103| r103_51(glval>) = VariableAddress[(unnamed local variable)] : +# 103| r103_52(glval>) = Convert : r103_51 +# 103| r103_53(coroutine_handle &) = CopyValue : r103_52 +# 103| v103_54(void) = Call[coroutine_handle] : func:r103_50, this:r103_47, 0:r103_53 +# 103| m103_55(unknown) = ^CallSideEffect : ~m103_49 +# 103| m103_56(unknown) = Chi : total:m103_49, partial:m103_55 +# 103| v103_57(void) = ^BufferReadSideEffect[0] : &:r103_53, ~m103_56 +# 103| m103_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_47 +# 103| m103_59(unknown) = Chi : total:m103_56, partial:m103_58 +# 103| r103_60(coroutine_handle) = Load[#temp103:20] : &:r103_47, ~m103_59 +# 103| v103_61(void) = Call[await_suspend] : func:r103_46, this:r0_17, 0:r103_60 +# 103| m103_62(unknown) = ^CallSideEffect : ~m103_59 +# 103| m103_63(unknown) = Chi : total:m103_59, partial:m103_62 +#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m103_63 #-----| Goto -> Block 1 # 104| Block 3 # 104| m104_34(unknown) = Phi : from 1:~m104_31, from 4:~m104_60 # 104| r104_35(suspend_always *) = CopyValue : r104_24 # 104| r104_36(glval) = CopyValue : r104_35 -#-----| r0_20(glval) = Convert : r104_36 +#-----| r0_19(glval) = Convert : r104_36 # 104| r104_37(glval) = FunctionAddress[await_resume] : -# 104| v104_38(void) = Call[await_resume] : func:r104_37, this:r0_20 +# 104| v104_38(void) = Call[await_resume] : func:r104_37, this:r0_19 # 104| m104_39(unknown) = ^CallSideEffect : ~m104_34 # 104| m104_40(unknown) = Chi : total:m104_34, partial:m104_39 -#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m104_40 -#-----| r0_22(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_23(glval) = FunctionAddress[return_void] : -#-----| v0_24(void) = Call[return_void] : func:r0_23, this:r0_22 -#-----| m0_25(unknown) = ^CallSideEffect : ~m104_40 -#-----| m0_26(unknown) = Chi : total:m104_40, partial:m0_25 -#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_22, ~m0_26 -#-----| m0_28(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_22 -#-----| m0_29(unknown) = Chi : total:m0_26, partial:m0_28 +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m104_40 +#-----| r0_21(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_22(glval) = FunctionAddress[return_void] : +#-----| v0_23(void) = Call[return_void] : func:r0_22, this:r0_21 +#-----| m0_24(unknown) = ^CallSideEffect : ~m104_40 +#-----| m0_25(unknown) = Chi : total:m104_40, partial:m0_24 +#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 +#-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 +#-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 # 105| v105_1(void) = NoOp : -#-----| v0_30(void) = NoOp : +#-----| v0_29(void) = NoOp : #-----| Goto (back edge) -> Block 5 # 104| Block 4 -# 104| r104_41(suspend_always *) = CopyValue : r104_24 -# 104| r104_42(glval) = CopyValue : r104_41 -#-----| r0_31(glval) = Convert : r104_42 -# 104| r104_43(glval) = FunctionAddress[await_suspend] : -# 104| r104_44(glval>) = VariableAddress[#temp104:3] : -# 104| m104_45(coroutine_handle) = Uninitialized[#temp104:3] : &:r104_44 -# 104| m104_46(unknown) = Chi : total:m104_31, partial:m104_45 -# 104| r104_47(glval) = FunctionAddress[coroutine_handle] : -# 104| r104_48(glval>) = VariableAddress : -# 104| r104_49(glval>) = Convert : r104_48 -# 104| r104_50(coroutine_handle &) = CopyValue : r104_49 -# 104| v104_51(void) = Call[coroutine_handle] : func:r104_47, this:r104_44, 0:r104_50 -# 104| m104_52(unknown) = ^CallSideEffect : ~m104_46 -# 104| m104_53(unknown) = Chi : total:m104_46, partial:m104_52 -# 104| v104_54(void) = ^BufferReadSideEffect[0] : &:r104_50, ~m104_53 -# 104| m104_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r104_44 -# 104| m104_56(unknown) = Chi : total:m104_53, partial:m104_55 -# 104| r104_57(coroutine_handle) = Load[#temp104:3] : &:r104_44, ~m104_56 -# 104| v104_58(void) = Call[await_suspend] : func:r104_43, this:r0_31, 0:r104_57 -# 104| m104_59(unknown) = ^CallSideEffect : ~m104_56 -# 104| m104_60(unknown) = Chi : total:m104_56, partial:m104_59 -#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m104_60 +# 104| r104_41(suspend_always *) = CopyValue : r104_24 +# 104| r104_42(glval) = CopyValue : r104_41 +#-----| r0_30(glval) = Convert : r104_42 +# 104| r104_43(glval) = FunctionAddress[await_suspend] : +# 104| r104_44(glval>) = VariableAddress[#temp104:3] : +# 104| m104_45(coroutine_handle) = Uninitialized[#temp104:3] : &:r104_44 +# 104| m104_46(unknown) = Chi : total:m104_31, partial:m104_45 +# 104| r104_47(glval) = FunctionAddress[coroutine_handle] : +# 104| r104_48(glval>) = VariableAddress[(unnamed local variable)] : +# 104| r104_49(glval>) = Convert : r104_48 +# 104| r104_50(coroutine_handle &) = CopyValue : r104_49 +# 104| v104_51(void) = Call[coroutine_handle] : func:r104_47, this:r104_44, 0:r104_50 +# 104| m104_52(unknown) = ^CallSideEffect : ~m104_46 +# 104| m104_53(unknown) = Chi : total:m104_46, partial:m104_52 +# 104| v104_54(void) = ^BufferReadSideEffect[0] : &:r104_50, ~m104_53 +# 104| m104_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r104_44 +# 104| m104_56(unknown) = Chi : total:m104_53, partial:m104_55 +# 104| r104_57(coroutine_handle) = Load[#temp104:3] : &:r104_44, ~m104_56 +# 104| v104_58(void) = Call[await_suspend] : func:r104_43, this:r0_30, 0:r104_57 +# 104| m104_59(unknown) = ^CallSideEffect : ~m104_56 +# 104| m104_60(unknown) = Chi : total:m104_56, partial:m104_59 +#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m104_60 #-----| Goto -> Block 3 #-----| Block 5 -#-----| v0_33(void) = NoOp : +#-----| v0_32(void) = NoOp : # 103| r103_64(glval) = VariableAddress[(unnamed local variable)] : # 103| r103_65(glval) = FunctionAddress[final_suspend] : # 103| r103_66(suspend_always) = Call[final_suspend] : func:r103_65, this:r103_64 -# 103| m103_67(unknown) = ^CallSideEffect : ~m0_29 -# 103| m103_68(unknown) = Chi : total:m0_29, partial:m103_67 +# 103| m103_67(unknown) = ^CallSideEffect : ~m0_28 +# 103| m103_68(unknown) = Chi : total:m0_28, partial:m103_67 # 103| v103_69(void) = ^IndirectReadSideEffect[-1] : &:r103_64, ~m103_68 # 103| m103_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_64 # 103| m103_71(unknown) = Chi : total:m103_68, partial:m103_70 -#-----| r0_34(glval) = VariableAddress[#temp0:0] : +#-----| r0_33(glval) = VariableAddress[#temp0:0] : # 103| r103_72(glval) = VariableAddress[#temp103:20] : # 103| r103_73(glval) = VariableAddress[(unnamed local variable)] : # 103| r103_74(glval) = FunctionAddress[final_suspend] : @@ -1773,16 +1768,16 @@ coroutines.cpp: # 103| m103_81(suspend_always) = Store[#temp103:20] : &:r103_72, r103_75 # 103| m103_82(unknown) = Chi : total:m103_80, partial:m103_81 # 103| r103_83(suspend_always *) = CopyValue : r103_72 -# 103| m103_84(suspend_always *) = Store[#temp0:0] : &:r0_34, r103_83 -#-----| r0_35(suspend_always *) = Load[#temp0:0] : &:r0_34, m103_84 -# 103| r103_85(glval) = CopyValue : r0_35 +# 103| m103_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r103_83 +#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m103_84 +# 103| r103_85(glval) = CopyValue : r0_34 # 103| r103_86(glval) = Convert : r103_85 # 103| r103_87(glval) = FunctionAddress[await_ready] : # 103| r103_88(bool) = Call[await_ready] : func:r103_87, this:r103_86 # 103| m103_89(unknown) = ^CallSideEffect : ~m103_82 # 103| m103_90(unknown) = Chi : total:m103_82, partial:m103_89 # 103| v103_91(void) = ^IndirectReadSideEffect[-1] : &:r103_86, ~m103_90 -#-----| v0_36(void) = ConditionalBranch : r103_88 +#-----| v0_35(void) = ConditionalBranch : r103_88 #-----| False -> Block 7 #-----| True -> Block 6 @@ -1790,40 +1785,40 @@ coroutines.cpp: # 103| m103_92(unknown) = Phi : from 5:~m103_90, from 7:~m103_122 # 103| r103_93(suspend_always *) = CopyValue : r103_83 # 103| r103_94(glval) = CopyValue : r103_93 -#-----| r0_37(glval) = Convert : r103_94 +#-----| r0_36(glval) = Convert : r103_94 # 103| r103_95(glval) = FunctionAddress[await_resume] : -# 103| v103_96(void) = Call[await_resume] : func:r103_95, this:r0_37 +# 103| v103_96(void) = Call[await_resume] : func:r103_95, this:r0_36 # 103| m103_97(unknown) = ^CallSideEffect : ~m103_92 # 103| m103_98(unknown) = Chi : total:m103_92, partial:m103_97 -#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, ~m103_98 +#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m103_98 # 103| r103_99(glval) = VariableAddress[#return] : # 103| v103_100(void) = ReturnValue : &:r103_99, ~m103_98 # 103| v103_101(void) = AliasedUse : ~m103_98 # 103| v103_102(void) = ExitFunction : # 103| Block 7 -# 103| r103_103(suspend_always *) = CopyValue : r103_83 -# 103| r103_104(glval) = CopyValue : r103_103 -#-----| r0_39(glval) = Convert : r103_104 -# 103| r103_105(glval) = FunctionAddress[await_suspend] : -# 103| r103_106(glval>) = VariableAddress[#temp103:20] : -# 103| m103_107(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_106 -# 103| m103_108(unknown) = Chi : total:m103_90, partial:m103_107 -# 103| r103_109(glval) = FunctionAddress[coroutine_handle] : -# 103| r103_110(glval>) = VariableAddress : -# 103| r103_111(glval>) = Convert : r103_110 -# 103| r103_112(coroutine_handle &) = CopyValue : r103_111 -# 103| v103_113(void) = Call[coroutine_handle] : func:r103_109, this:r103_106, 0:r103_112 -# 103| m103_114(unknown) = ^CallSideEffect : ~m103_108 -# 103| m103_115(unknown) = Chi : total:m103_108, partial:m103_114 -# 103| v103_116(void) = ^BufferReadSideEffect[0] : &:r103_112, ~m103_115 -# 103| m103_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_106 -# 103| m103_118(unknown) = Chi : total:m103_115, partial:m103_117 -# 103| r103_119(coroutine_handle) = Load[#temp103:20] : &:r103_106, ~m103_118 -# 103| v103_120(void) = Call[await_suspend] : func:r103_105, this:r0_39, 0:r103_119 -# 103| m103_121(unknown) = ^CallSideEffect : ~m103_118 -# 103| m103_122(unknown) = Chi : total:m103_118, partial:m103_121 -#-----| v0_40(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m103_122 +# 103| r103_103(suspend_always *) = CopyValue : r103_83 +# 103| r103_104(glval) = CopyValue : r103_103 +#-----| r0_38(glval) = Convert : r103_104 +# 103| r103_105(glval) = FunctionAddress[await_suspend] : +# 103| r103_106(glval>) = VariableAddress[#temp103:20] : +# 103| m103_107(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_106 +# 103| m103_108(unknown) = Chi : total:m103_90, partial:m103_107 +# 103| r103_109(glval) = FunctionAddress[coroutine_handle] : +# 103| r103_110(glval>) = VariableAddress[(unnamed local variable)] : +# 103| r103_111(glval>) = Convert : r103_110 +# 103| r103_112(coroutine_handle &) = CopyValue : r103_111 +# 103| v103_113(void) = Call[coroutine_handle] : func:r103_109, this:r103_106, 0:r103_112 +# 103| m103_114(unknown) = ^CallSideEffect : ~m103_108 +# 103| m103_115(unknown) = Chi : total:m103_108, partial:m103_114 +# 103| v103_116(void) = ^BufferReadSideEffect[0] : &:r103_112, ~m103_115 +# 103| m103_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_106 +# 103| m103_118(unknown) = Chi : total:m103_115, partial:m103_117 +# 103| r103_119(coroutine_handle) = Load[#temp103:20] : &:r103_106, ~m103_118 +# 103| v103_120(void) = Call[await_suspend] : func:r103_105, this:r0_38, 0:r103_119 +# 103| m103_121(unknown) = ^CallSideEffect : ~m103_118 +# 103| m103_122(unknown) = Chi : total:m103_118, partial:m103_121 +#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m103_122 #-----| Goto -> Block 6 # 108| co_returnable_value co_yield_and_return_value(int) @@ -1878,18 +1873,17 @@ coroutines.cpp: #-----| Block 1 #-----| m0_8(unknown) = Phi : from 0:~m108_36, from 2:~m108_63 #-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress : -#-----| m0_11(bool) = Store[?] : &:r0_10, r0_9 -#-----| m0_12(unknown) = Chi : total:m0_8, partial:m0_11 +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 # 108| r108_38(suspend_always *) = CopyValue : r108_29 # 108| r108_39(glval) = CopyValue : r108_38 -#-----| r0_13(glval) = Convert : r108_39 +#-----| r0_12(glval) = Convert : r108_39 # 108| r108_40(glval) = FunctionAddress[await_resume] : -# 108| v108_41(void) = Call[await_resume] : func:r108_40, this:r0_13 -# 108| m108_42(unknown) = ^CallSideEffect : ~m0_12 -# 108| m108_43(unknown) = Chi : total:m0_12, partial:m108_42 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m108_43 -#-----| v0_15(void) = CopyValue : v108_41 +# 108| v108_41(void) = Call[await_resume] : func:r108_40, this:r0_12 +# 108| m108_42(unknown) = ^CallSideEffect : ~m0_8 +# 108| m108_43(unknown) = Chi : total:m0_8, partial:m108_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m108_43 +#-----| v0_14(void) = CopyValue : v108_41 # 109| r109_1(glval) = VariableAddress[(unnamed local variable)] : # 109| r109_2(glval) = FunctionAddress[yield_value] : # 109| r109_3(glval) = VariableAddress[i] : @@ -1900,7 +1894,7 @@ coroutines.cpp: # 109| v109_8(void) = ^IndirectReadSideEffect[-1] : &:r109_1, ~m109_7 # 109| m109_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 # 109| m109_10(unknown) = Chi : total:m109_7, partial:m109_9 -#-----| r0_16(glval) = VariableAddress[#temp0:0] : +#-----| r0_15(glval) = VariableAddress[#temp0:0] : # 109| r109_11(glval) = VariableAddress[#temp109:13] : # 109| r109_12(glval) = VariableAddress[(unnamed local variable)] : # 109| r109_13(glval) = FunctionAddress[yield_value] : @@ -1915,9 +1909,9 @@ coroutines.cpp: # 109| m109_22(suspend_always) = Store[#temp109:13] : &:r109_11, r109_16 # 109| m109_23(unknown) = Chi : total:m109_21, partial:m109_22 # 109| r109_24(suspend_always *) = CopyValue : r109_11 -# 109| m109_25(suspend_always *) = Store[#temp0:0] : &:r0_16, r109_24 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, m109_25 -# 109| r109_26(glval) = CopyValue : r0_17 +# 109| m109_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r109_24 +#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m109_25 +# 109| r109_26(glval) = CopyValue : r0_16 # 109| r109_27(glval) = Convert : r109_26 # 109| r109_28(glval) = FunctionAddress[await_ready] : # 109| r109_29(bool) = Call[await_ready] : func:r109_28, this:r109_27 @@ -1929,92 +1923,92 @@ coroutines.cpp: #-----| True -> Block 3 # 108| Block 2 -# 108| r108_44(suspend_always *) = CopyValue : r108_29 -# 108| r108_45(glval) = CopyValue : r108_44 -#-----| r0_18(glval) = Convert : r108_45 -# 108| r108_46(glval) = FunctionAddress[await_suspend] : -# 108| r108_47(glval>) = VariableAddress[#temp108:21] : -# 108| m108_48(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_47 -# 108| m108_49(unknown) = Chi : total:m108_36, partial:m108_48 -# 108| r108_50(glval) = FunctionAddress[coroutine_handle] : -# 108| r108_51(glval>) = VariableAddress : -# 108| r108_52(glval>) = Convert : r108_51 -# 108| r108_53(coroutine_handle &) = CopyValue : r108_52 -# 108| v108_54(void) = Call[coroutine_handle] : func:r108_50, this:r108_47, 0:r108_53 -# 108| m108_55(unknown) = ^CallSideEffect : ~m108_49 -# 108| m108_56(unknown) = Chi : total:m108_49, partial:m108_55 -# 108| v108_57(void) = ^BufferReadSideEffect[0] : &:r108_53, ~m108_56 -# 108| m108_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_47 -# 108| m108_59(unknown) = Chi : total:m108_56, partial:m108_58 -# 108| r108_60(coroutine_handle) = Load[#temp108:21] : &:r108_47, ~m108_59 -# 108| v108_61(void) = Call[await_suspend] : func:r108_46, this:r0_18, 0:r108_60 -# 108| m108_62(unknown) = ^CallSideEffect : ~m108_59 -# 108| m108_63(unknown) = Chi : total:m108_59, partial:m108_62 -#-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m108_63 +# 108| r108_44(suspend_always *) = CopyValue : r108_29 +# 108| r108_45(glval) = CopyValue : r108_44 +#-----| r0_17(glval) = Convert : r108_45 +# 108| r108_46(glval) = FunctionAddress[await_suspend] : +# 108| r108_47(glval>) = VariableAddress[#temp108:21] : +# 108| m108_48(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_47 +# 108| m108_49(unknown) = Chi : total:m108_36, partial:m108_48 +# 108| r108_50(glval) = FunctionAddress[coroutine_handle] : +# 108| r108_51(glval>) = VariableAddress[(unnamed local variable)] : +# 108| r108_52(glval>) = Convert : r108_51 +# 108| r108_53(coroutine_handle &) = CopyValue : r108_52 +# 108| v108_54(void) = Call[coroutine_handle] : func:r108_50, this:r108_47, 0:r108_53 +# 108| m108_55(unknown) = ^CallSideEffect : ~m108_49 +# 108| m108_56(unknown) = Chi : total:m108_49, partial:m108_55 +# 108| v108_57(void) = ^BufferReadSideEffect[0] : &:r108_53, ~m108_56 +# 108| m108_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_47 +# 108| m108_59(unknown) = Chi : total:m108_56, partial:m108_58 +# 108| r108_60(coroutine_handle) = Load[#temp108:21] : &:r108_47, ~m108_59 +# 108| v108_61(void) = Call[await_suspend] : func:r108_46, this:r0_17, 0:r108_60 +# 108| m108_62(unknown) = ^CallSideEffect : ~m108_59 +# 108| m108_63(unknown) = Chi : total:m108_59, partial:m108_62 +#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m108_63 #-----| Goto -> Block 1 # 109| Block 3 # 109| m109_34(unknown) = Phi : from 1:~m109_31, from 4:~m109_60 # 109| r109_35(suspend_always *) = CopyValue : r109_24 # 109| r109_36(glval) = CopyValue : r109_35 -#-----| r0_20(glval) = Convert : r109_36 +#-----| r0_19(glval) = Convert : r109_36 # 109| r109_37(glval) = FunctionAddress[await_resume] : -# 109| v109_38(void) = Call[await_resume] : func:r109_37, this:r0_20 +# 109| v109_38(void) = Call[await_resume] : func:r109_37, this:r0_19 # 109| m109_39(unknown) = ^CallSideEffect : ~m109_34 # 109| m109_40(unknown) = Chi : total:m109_34, partial:m109_39 -#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m109_40 -#-----| r0_22(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_23(glval) = FunctionAddress[return_value] : +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m109_40 +#-----| r0_21(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_22(glval) = FunctionAddress[return_value] : # 110| r110_1(glval) = VariableAddress[i] : # 110| r110_2(int) = Load[i] : &:r110_1, m0_4 # 110| r110_3(int) = Constant[1] : # 110| r110_4(int) = Add : r110_2, r110_3 -#-----| v0_24(void) = Call[return_value] : func:r0_23, this:r0_22, 0:r110_4 -#-----| m0_25(unknown) = ^CallSideEffect : ~m109_40 -#-----| m0_26(unknown) = Chi : total:m109_40, partial:m0_25 -#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_22, ~m0_26 -#-----| m0_28(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_22 -#-----| m0_29(unknown) = Chi : total:m0_26, partial:m0_28 +#-----| v0_23(void) = Call[return_value] : func:r0_22, this:r0_21, 0:r110_4 +#-----| m0_24(unknown) = ^CallSideEffect : ~m109_40 +#-----| m0_25(unknown) = Chi : total:m109_40, partial:m0_24 +#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 +#-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 +#-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 # 110| v110_5(void) = NoOp : -#-----| v0_30(void) = NoOp : +#-----| v0_29(void) = NoOp : #-----| Goto (back edge) -> Block 5 # 109| Block 4 -# 109| r109_41(suspend_always *) = CopyValue : r109_24 -# 109| r109_42(glval) = CopyValue : r109_41 -#-----| r0_31(glval) = Convert : r109_42 -# 109| r109_43(glval) = FunctionAddress[await_suspend] : -# 109| r109_44(glval>) = VariableAddress[#temp109:3] : -# 109| m109_45(coroutine_handle) = Uninitialized[#temp109:3] : &:r109_44 -# 109| m109_46(unknown) = Chi : total:m109_31, partial:m109_45 -# 109| r109_47(glval) = FunctionAddress[coroutine_handle] : -# 109| r109_48(glval>) = VariableAddress : -# 109| r109_49(glval>) = Convert : r109_48 -# 109| r109_50(coroutine_handle &) = CopyValue : r109_49 -# 109| v109_51(void) = Call[coroutine_handle] : func:r109_47, this:r109_44, 0:r109_50 -# 109| m109_52(unknown) = ^CallSideEffect : ~m109_46 -# 109| m109_53(unknown) = Chi : total:m109_46, partial:m109_52 -# 109| v109_54(void) = ^BufferReadSideEffect[0] : &:r109_50, ~m109_53 -# 109| m109_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r109_44 -# 109| m109_56(unknown) = Chi : total:m109_53, partial:m109_55 -# 109| r109_57(coroutine_handle) = Load[#temp109:3] : &:r109_44, ~m109_56 -# 109| v109_58(void) = Call[await_suspend] : func:r109_43, this:r0_31, 0:r109_57 -# 109| m109_59(unknown) = ^CallSideEffect : ~m109_56 -# 109| m109_60(unknown) = Chi : total:m109_56, partial:m109_59 -#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m109_60 +# 109| r109_41(suspend_always *) = CopyValue : r109_24 +# 109| r109_42(glval) = CopyValue : r109_41 +#-----| r0_30(glval) = Convert : r109_42 +# 109| r109_43(glval) = FunctionAddress[await_suspend] : +# 109| r109_44(glval>) = VariableAddress[#temp109:3] : +# 109| m109_45(coroutine_handle) = Uninitialized[#temp109:3] : &:r109_44 +# 109| m109_46(unknown) = Chi : total:m109_31, partial:m109_45 +# 109| r109_47(glval) = FunctionAddress[coroutine_handle] : +# 109| r109_48(glval>) = VariableAddress[(unnamed local variable)] : +# 109| r109_49(glval>) = Convert : r109_48 +# 109| r109_50(coroutine_handle &) = CopyValue : r109_49 +# 109| v109_51(void) = Call[coroutine_handle] : func:r109_47, this:r109_44, 0:r109_50 +# 109| m109_52(unknown) = ^CallSideEffect : ~m109_46 +# 109| m109_53(unknown) = Chi : total:m109_46, partial:m109_52 +# 109| v109_54(void) = ^BufferReadSideEffect[0] : &:r109_50, ~m109_53 +# 109| m109_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r109_44 +# 109| m109_56(unknown) = Chi : total:m109_53, partial:m109_55 +# 109| r109_57(coroutine_handle) = Load[#temp109:3] : &:r109_44, ~m109_56 +# 109| v109_58(void) = Call[await_suspend] : func:r109_43, this:r0_30, 0:r109_57 +# 109| m109_59(unknown) = ^CallSideEffect : ~m109_56 +# 109| m109_60(unknown) = Chi : total:m109_56, partial:m109_59 +#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m109_60 #-----| Goto -> Block 3 #-----| Block 5 -#-----| v0_33(void) = NoOp : +#-----| v0_32(void) = NoOp : # 108| r108_64(glval) = VariableAddress[(unnamed local variable)] : # 108| r108_65(glval) = FunctionAddress[final_suspend] : # 108| r108_66(suspend_always) = Call[final_suspend] : func:r108_65, this:r108_64 -# 108| m108_67(unknown) = ^CallSideEffect : ~m0_29 -# 108| m108_68(unknown) = Chi : total:m0_29, partial:m108_67 +# 108| m108_67(unknown) = ^CallSideEffect : ~m0_28 +# 108| m108_68(unknown) = Chi : total:m0_28, partial:m108_67 # 108| v108_69(void) = ^IndirectReadSideEffect[-1] : &:r108_64, ~m108_68 # 108| m108_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_64 # 108| m108_71(unknown) = Chi : total:m108_68, partial:m108_70 -#-----| r0_34(glval) = VariableAddress[#temp0:0] : +#-----| r0_33(glval) = VariableAddress[#temp0:0] : # 108| r108_72(glval) = VariableAddress[#temp108:21] : # 108| r108_73(glval) = VariableAddress[(unnamed local variable)] : # 108| r108_74(glval) = FunctionAddress[final_suspend] : @@ -2027,16 +2021,16 @@ coroutines.cpp: # 108| m108_81(suspend_always) = Store[#temp108:21] : &:r108_72, r108_75 # 108| m108_82(unknown) = Chi : total:m108_80, partial:m108_81 # 108| r108_83(suspend_always *) = CopyValue : r108_72 -# 108| m108_84(suspend_always *) = Store[#temp0:0] : &:r0_34, r108_83 -#-----| r0_35(suspend_always *) = Load[#temp0:0] : &:r0_34, m108_84 -# 108| r108_85(glval) = CopyValue : r0_35 +# 108| m108_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r108_83 +#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m108_84 +# 108| r108_85(glval) = CopyValue : r0_34 # 108| r108_86(glval) = Convert : r108_85 # 108| r108_87(glval) = FunctionAddress[await_ready] : # 108| r108_88(bool) = Call[await_ready] : func:r108_87, this:r108_86 # 108| m108_89(unknown) = ^CallSideEffect : ~m108_82 # 108| m108_90(unknown) = Chi : total:m108_82, partial:m108_89 # 108| v108_91(void) = ^IndirectReadSideEffect[-1] : &:r108_86, ~m108_90 -#-----| v0_36(void) = ConditionalBranch : r108_88 +#-----| v0_35(void) = ConditionalBranch : r108_88 #-----| False -> Block 7 #-----| True -> Block 6 @@ -2044,40 +2038,40 @@ coroutines.cpp: # 108| m108_92(unknown) = Phi : from 5:~m108_90, from 7:~m108_122 # 108| r108_93(suspend_always *) = CopyValue : r108_83 # 108| r108_94(glval) = CopyValue : r108_93 -#-----| r0_37(glval) = Convert : r108_94 +#-----| r0_36(glval) = Convert : r108_94 # 108| r108_95(glval) = FunctionAddress[await_resume] : -# 108| v108_96(void) = Call[await_resume] : func:r108_95, this:r0_37 +# 108| v108_96(void) = Call[await_resume] : func:r108_95, this:r0_36 # 108| m108_97(unknown) = ^CallSideEffect : ~m108_92 # 108| m108_98(unknown) = Chi : total:m108_92, partial:m108_97 -#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, ~m108_98 +#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m108_98 # 108| r108_99(glval) = VariableAddress[#return] : # 108| v108_100(void) = ReturnValue : &:r108_99, ~m108_98 # 108| v108_101(void) = AliasedUse : ~m108_98 # 108| v108_102(void) = ExitFunction : # 108| Block 7 -# 108| r108_103(suspend_always *) = CopyValue : r108_83 -# 108| r108_104(glval) = CopyValue : r108_103 -#-----| r0_39(glval) = Convert : r108_104 -# 108| r108_105(glval) = FunctionAddress[await_suspend] : -# 108| r108_106(glval>) = VariableAddress[#temp108:21] : -# 108| m108_107(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_106 -# 108| m108_108(unknown) = Chi : total:m108_90, partial:m108_107 -# 108| r108_109(glval) = FunctionAddress[coroutine_handle] : -# 108| r108_110(glval>) = VariableAddress : -# 108| r108_111(glval>) = Convert : r108_110 -# 108| r108_112(coroutine_handle &) = CopyValue : r108_111 -# 108| v108_113(void) = Call[coroutine_handle] : func:r108_109, this:r108_106, 0:r108_112 -# 108| m108_114(unknown) = ^CallSideEffect : ~m108_108 -# 108| m108_115(unknown) = Chi : total:m108_108, partial:m108_114 -# 108| v108_116(void) = ^BufferReadSideEffect[0] : &:r108_112, ~m108_115 -# 108| m108_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_106 -# 108| m108_118(unknown) = Chi : total:m108_115, partial:m108_117 -# 108| r108_119(coroutine_handle) = Load[#temp108:21] : &:r108_106, ~m108_118 -# 108| v108_120(void) = Call[await_suspend] : func:r108_105, this:r0_39, 0:r108_119 -# 108| m108_121(unknown) = ^CallSideEffect : ~m108_118 -# 108| m108_122(unknown) = Chi : total:m108_118, partial:m108_121 -#-----| v0_40(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m108_122 +# 108| r108_103(suspend_always *) = CopyValue : r108_83 +# 108| r108_104(glval) = CopyValue : r108_103 +#-----| r0_38(glval) = Convert : r108_104 +# 108| r108_105(glval) = FunctionAddress[await_suspend] : +# 108| r108_106(glval>) = VariableAddress[#temp108:21] : +# 108| m108_107(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_106 +# 108| m108_108(unknown) = Chi : total:m108_90, partial:m108_107 +# 108| r108_109(glval) = FunctionAddress[coroutine_handle] : +# 108| r108_110(glval>) = VariableAddress[(unnamed local variable)] : +# 108| r108_111(glval>) = Convert : r108_110 +# 108| r108_112(coroutine_handle &) = CopyValue : r108_111 +# 108| v108_113(void) = Call[coroutine_handle] : func:r108_109, this:r108_106, 0:r108_112 +# 108| m108_114(unknown) = ^CallSideEffect : ~m108_108 +# 108| m108_115(unknown) = Chi : total:m108_108, partial:m108_114 +# 108| v108_116(void) = ^BufferReadSideEffect[0] : &:r108_112, ~m108_115 +# 108| m108_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_106 +# 108| m108_118(unknown) = Chi : total:m108_115, partial:m108_117 +# 108| r108_119(coroutine_handle) = Load[#temp108:21] : &:r108_106, ~m108_118 +# 108| v108_120(void) = Call[await_suspend] : func:r108_105, this:r0_38, 0:r108_119 +# 108| m108_121(unknown) = ^CallSideEffect : ~m108_118 +# 108| m108_122(unknown) = Chi : total:m108_118, partial:m108_121 +#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m108_122 #-----| Goto -> Block 6 destructors_for_temps.cpp: @@ -2959,7 +2953,7 @@ destructors_for_temps.cpp: # 102| v102_10(void) = ExitFunction : generic.c: -# 1| void c11_generic_test(unsigned int, int) +# 1| void c11_generic_test_with_load(unsigned int, int) # 1| Block 0 # 1| v1_1(void) = EnterFunction : # 1| m1_2(unknown) = AliasedDefinition : @@ -2982,6 +2976,62 @@ generic.c: # 1| v1_10(void) = AliasedUse : m1_3 # 1| v1_11(void) = ExitFunction : +# 12| char const* c11_generic_test_with_constant_and_macro() +# 12| Block 0 +# 12| v12_1(void) = EnterFunction : +# 12| m12_2(unknown) = AliasedDefinition : +# 12| m12_3(unknown) = InitializeNonLocal : +# 12| m12_4(unknown) = Chi : total:m12_2, partial:m12_3 +# 14| r14_1(glval) = VariableAddress[i] : +# 14| m14_2(int) = Uninitialized[i] : &:r14_1 +# 16| r16_1(glval) = VariableAddress[#return] : +# 16| r16_2(glval) = Constant[int] : +# 16| r16_3(char *) = Convert : r16_2 +# 16| r16_4(char *) = Convert : r16_3 +# 16| m16_5(char *) = Store[#return] : &:r16_1, r16_4 +# 12| r12_5(glval) = VariableAddress[#return] : +# 12| v12_6(void) = ReturnValue : &:r12_5, m16_5 +# 12| v12_7(void) = AliasedUse : m12_3 +# 12| v12_8(void) = ExitFunction : + +# 19| char const* c11_generic_test_with_constant_and_no_macro() +# 19| Block 0 +# 19| v19_1(void) = EnterFunction : +# 19| m19_2(unknown) = AliasedDefinition : +# 19| m19_3(unknown) = InitializeNonLocal : +# 19| m19_4(unknown) = Chi : total:m19_2, partial:m19_3 +# 21| r21_1(glval) = VariableAddress[i] : +# 21| m21_2(int) = Uninitialized[i] : &:r21_1 +# 23| r23_1(glval) = VariableAddress[#return] : +# 23| r23_2(glval) = Constant[int] : +# 23| r23_3(char *) = Convert : r23_2 +# 23| r23_4(char *) = Convert : r23_3 +# 23| m23_5(char *) = Store[#return] : &:r23_1, r23_4 +# 19| r19_5(glval) = VariableAddress[#return] : +# 19| v19_6(void) = ReturnValue : &:r19_5, m23_5 +# 19| v19_7(void) = AliasedUse : m19_3 +# 19| v19_8(void) = ExitFunction : + +# 26| void c11_generic_test_test_with_cast(int) +# 26| Block 0 +# 26| v26_1(void) = EnterFunction : +# 26| m26_2(unknown) = AliasedDefinition : +# 26| m26_3(unknown) = InitializeNonLocal : +# 26| m26_4(unknown) = Chi : total:m26_2, partial:m26_3 +# 26| r26_5(glval) = VariableAddress[y] : +# 26| m26_6(int) = InitializeParameter[y] : &:r26_5 +# 27| r27_1(glval) = VariableAddress[r] : +# 27| m27_2(unsigned int) = Uninitialized[r] : &:r27_1 +# 28| r28_1(glval) = VariableAddress[y] : +# 28| r28_2(int) = Load[y] : &:r28_1, m26_6 +# 28| r28_3(unsigned int) = Convert : r28_2 +# 28| r28_4(glval) = VariableAddress[r] : +# 28| m28_5(unsigned int) = Store[r] : &:r28_4, r28_3 +# 29| v29_1(void) = NoOp : +# 26| v26_7(void) = ReturnVoid : +# 26| v26_8(void) = AliasedUse : m26_3 +# 26| v26_9(void) = ExitFunction : + ir.c: # 7| void MyCoordsTest(int) # 7| Block 0 @@ -3106,6 +3156,146 @@ ir.c: # 21| Block 5 # 21| v21_11(void) = Unreached : +# 32| void unexplained_loop_regression() +# 32| Block 0 +# 32| v32_1(void) = EnterFunction : +# 32| m32_2(unknown) = AliasedDefinition : +# 32| m32_3(unknown) = InitializeNonLocal : +# 32| m32_4(unknown) = Chi : total:m32_2, partial:m32_3 +# 36| r36_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 36| r36_2(int) = Constant[0] : +# 36| v36_3(void) = Call[ExRaiseAccessViolation] : func:r36_1, 0:r36_2 +# 36| m36_4(unknown) = ^CallSideEffect : ~m32_4 +# 36| m36_5(unknown) = Chi : total:m32_4, partial:m36_4 +#-----| Exception -> Block 4 + +# 32| Block 1 +# 32| v32_5(void) = Unwind : +# 32| v32_6(void) = AliasedUse : ~m40_5 +# 32| v32_7(void) = ExitFunction : + +# 39| Block 2 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r38_1, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False -> Block 3 +#-----| True -> Block 6 + +# 39| Block 3 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r38_1, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 38| Block 4 +# 38| r38_1(int) = Constant[1] : +# 39| r39_7(int) = Constant[-1] : +# 39| r39_8(bool) = CompareEQ : r38_1, r39_7 +# 39| v39_9(void) = ConditionalBranch : r39_8 +#-----| False -> Block 2 +#-----| True -> Block 6 + +# 40| Block 5 +# 40| r40_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 40| r40_2(int) = Constant[1] : +# 40| v40_3(void) = Call[ExRaiseAccessViolation] : func:r40_1, 0:r40_2 +# 40| m40_4(unknown) = ^CallSideEffect : ~m36_5 +# 40| m40_5(unknown) = Chi : total:m36_5, partial:m40_4 +#-----| Exception -> Block 1 + +# 32| Block 6 +# 32| v32_8(void) = Unreached : + +# 44| void try_with_finally() +# 44| Block 0 +# 44| v44_1(void) = EnterFunction : +# 44| m44_2(unknown) = AliasedDefinition : +# 44| m44_3(unknown) = InitializeNonLocal : +# 44| m44_4(unknown) = Chi : total:m44_2, partial:m44_3 +# 46| r46_1(glval) = VariableAddress[x] : +# 46| r46_2(int) = Constant[0] : +# 46| m46_3(int) = Store[x] : &:r46_1, r46_2 +# 49| r49_1(int) = Constant[1] : +# 49| r49_2(glval) = VariableAddress[x] : +# 49| m49_3(int) = Store[x] : &:r49_2, r49_1 +# 53| r53_1(int) = Constant[2] : +# 53| r53_2(glval) = VariableAddress[x] : +# 53| m53_3(int) = Store[x] : &:r53_2, r53_1 +# 55| v55_1(void) = NoOp : +# 44| v44_5(void) = ReturnVoid : +# 44| v44_6(void) = AliasedUse : m44_3 +# 44| v44_7(void) = ExitFunction : + +# 57| void throw_in_try_with_finally() +# 57| Block 0 +# 57| v57_1(void) = EnterFunction : +# 57| m57_2(unknown) = AliasedDefinition : +# 57| m57_3(unknown) = InitializeNonLocal : +# 57| m57_4(unknown) = Chi : total:m57_2, partial:m57_3 +# 59| r59_1(glval) = VariableAddress[x] : +# 59| r59_2(int) = Constant[0] : +# 59| m59_3(int) = Store[x] : &:r59_1, r59_2 +# 62| r62_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 62| r62_2(int) = Constant[0] : +# 62| v62_3(void) = Call[ExRaiseAccessViolation] : func:r62_1, 0:r62_2 +# 62| m62_4(unknown) = ^CallSideEffect : ~m57_4 +# 62| m62_5(unknown) = Chi : total:m57_4, partial:m62_4 +#-----| Exception -> Block 1 + +# 66| Block 1 +# 66| r66_1(int) = Constant[1] : +# 66| r66_2(glval) = VariableAddress[x] : +# 66| m66_3(int) = Store[x] : &:r66_2, r66_1 +# 68| v68_1(void) = NoOp : +# 57| v57_5(void) = ReturnVoid : +# 57| v57_6(void) = AliasedUse : ~m62_5 +# 57| v57_7(void) = ExitFunction : + +# 70| void throw_in_try_with_throw_in_finally() +# 70| Block 0 +# 70| v70_1(void) = EnterFunction : +# 70| m70_2(unknown) = AliasedDefinition : +# 70| m70_3(unknown) = InitializeNonLocal : +# 70| m70_4(unknown) = Chi : total:m70_2, partial:m70_3 +# 73| r73_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 73| r73_2(int) = Constant[0] : +# 73| v73_3(void) = Call[ExRaiseAccessViolation] : func:r73_1, 0:r73_2 +# 73| m73_4(unknown) = ^CallSideEffect : ~m70_4 +# 73| m73_5(unknown) = Chi : total:m70_4, partial:m73_4 +#-----| Exception -> Block 2 + +# 70| Block 1 +# 70| v70_5(void) = Unwind : +# 70| v70_6(void) = AliasedUse : ~m76_5 +# 70| v70_7(void) = ExitFunction : + +# 76| Block 2 +# 76| r76_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 76| r76_2(int) = Constant[0] : +# 76| v76_3(void) = Call[ExRaiseAccessViolation] : func:r76_1, 0:r76_2 +# 76| m76_4(unknown) = ^CallSideEffect : ~m73_5 +# 76| m76_5(unknown) = Chi : total:m73_5, partial:m76_4 +#-----| Exception -> Block 1 + +# 80| void raise_access_violation() +# 80| Block 0 +# 80| v80_1(void) = EnterFunction : +# 80| m80_2(unknown) = AliasedDefinition : +# 80| m80_3(unknown) = InitializeNonLocal : +# 80| m80_4(unknown) = Chi : total:m80_2, partial:m80_3 +# 81| r81_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 81| r81_2(int) = Constant[1] : +# 81| v81_3(void) = Call[ExRaiseAccessViolation] : func:r81_1, 0:r81_2 +# 81| m81_4(unknown) = ^CallSideEffect : ~m80_4 +# 81| m81_5(unknown) = Chi : total:m80_4, partial:m81_4 +#-----| Exception -> Block 1 + +# 80| Block 1 +# 80| v80_5(void) = Unwind : +# 80| v80_6(void) = AliasedUse : ~m81_5 +# 80| v80_7(void) = ExitFunction : + ir.cpp: # 1| void Constants() # 1| Block 0 @@ -18910,18468 +19100,18468 @@ ir.cpp: # 2684| v2684_14(void) = Unreached : many-defs-per-use.cpp: -# 17| void many_defs_per_use() -# 17| Block 0 -# 17| v17_1(void) = EnterFunction : -# 17| mu17_2(unknown) = AliasedDefinition : -# 17| mu17_3(unknown) = InitializeNonLocal : -# 19| r19_1(glval) = VariableAddress[x0] : -# 19| mu19_2(String) = Uninitialized[x0] : &:r19_1 -# 19| r19_3(glval) = FunctionAddress[String] : -# 19| v19_4(void) = Call[String] : func:r19_3, this:r19_1 -# 19| mu19_5(unknown) = ^CallSideEffect : ~m? -# 19| mu19_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r19_1 -# 20| r20_1(glval) = VariableAddress[x0] : -# 20| r20_2(glval) = FunctionAddress[~String] : -# 20| v20_3(void) = Call[~String] : func:r20_2, this:r20_1 -# 20| mu20_4(unknown) = ^CallSideEffect : ~m? -# 20| v20_5(void) = ^IndirectReadSideEffect[-1] : &:r20_1, ~m? -# 20| mu20_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r20_1 -# 20| r20_7(bool) = Constant[0] : -# 20| v20_8(void) = ConditionalBranch : r20_7 +# 34| void many_defs_per_use() +# 34| Block 0 +# 34| v34_1(void) = EnterFunction : +# 34| mu34_2(unknown) = AliasedDefinition : +# 34| mu34_3(unknown) = InitializeNonLocal : +# 35| r35_1(glval) = VariableAddress[x0] : +# 35| mu35_2(String) = Uninitialized[x0] : &:r35_1 +# 35| r35_3(glval) = FunctionAddress[String] : +# 35| v35_4(void) = Call[String] : func:r35_3, this:r35_1 +# 35| mu35_5(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1 +# 35| r35_7(glval) = VariableAddress[x0] : +# 35| r35_8(glval) = FunctionAddress[~String] : +# 35| v35_9(void) = Call[~String] : func:r35_8, this:r35_7 +# 35| mu35_10(unknown) = ^CallSideEffect : ~m? +# 35| v35_11(void) = ^IndirectReadSideEffect[-1] : &:r35_7, ~m? +# 35| mu35_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7 +# 35| r35_13(bool) = Constant[0] : +# 35| v35_14(void) = ConditionalBranch : r35_13 #-----| False -> Block 1 #-----| True -> Block 1026 -# 22| Block 1 -# 22| r22_1(glval) = VariableAddress[x1] : -# 22| mu22_2(String) = Uninitialized[x1] : &:r22_1 -# 22| r22_3(glval) = FunctionAddress[String] : -# 22| v22_4(void) = Call[String] : func:r22_3, this:r22_1 -# 22| mu22_5(unknown) = ^CallSideEffect : ~m? -# 22| mu22_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r22_1 -# 23| r23_1(glval) = VariableAddress[x1] : -# 23| r23_2(glval) = FunctionAddress[~String] : -# 23| v23_3(void) = Call[~String] : func:r23_2, this:r23_1 -# 23| mu23_4(unknown) = ^CallSideEffect : ~m? -# 23| v23_5(void) = ^IndirectReadSideEffect[-1] : &:r23_1, ~m? -# 23| mu23_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r23_1 -# 23| r23_7(bool) = Constant[0] : -# 23| v23_8(void) = ConditionalBranch : r23_7 +# 35| Block 1 +# 35| r35_15(glval) = VariableAddress[x1] : +# 35| mu35_16(String) = Uninitialized[x1] : &:r35_15 +# 35| r35_17(glval) = FunctionAddress[String] : +# 35| v35_18(void) = Call[String] : func:r35_17, this:r35_15 +# 35| mu35_19(unknown) = ^CallSideEffect : ~m? +# 35| mu35_20(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_15 +# 35| r35_21(glval) = VariableAddress[x1] : +# 35| r35_22(glval) = FunctionAddress[~String] : +# 35| v35_23(void) = Call[~String] : func:r35_22, this:r35_21 +# 35| mu35_24(unknown) = ^CallSideEffect : ~m? +# 35| v35_25(void) = ^IndirectReadSideEffect[-1] : &:r35_21, ~m? +# 35| mu35_26(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_21 +# 35| r35_27(bool) = Constant[0] : +# 35| v35_28(void) = ConditionalBranch : r35_27 #-----| False -> Block 2 #-----| True -> Block 1026 -# 25| Block 2 -# 25| r25_1(glval) = VariableAddress[x2] : -# 25| mu25_2(String) = Uninitialized[x2] : &:r25_1 -# 25| r25_3(glval) = FunctionAddress[String] : -# 25| v25_4(void) = Call[String] : func:r25_3, this:r25_1 -# 25| mu25_5(unknown) = ^CallSideEffect : ~m? -# 25| mu25_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r25_1 -# 26| r26_1(glval) = VariableAddress[x2] : -# 26| r26_2(glval) = FunctionAddress[~String] : -# 26| v26_3(void) = Call[~String] : func:r26_2, this:r26_1 -# 26| mu26_4(unknown) = ^CallSideEffect : ~m? -# 26| v26_5(void) = ^IndirectReadSideEffect[-1] : &:r26_1, ~m? -# 26| mu26_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r26_1 -# 26| r26_7(bool) = Constant[0] : -# 26| v26_8(void) = ConditionalBranch : r26_7 +# 35| Block 2 +# 35| r35_29(glval) = VariableAddress[x2] : +# 35| mu35_30(String) = Uninitialized[x2] : &:r35_29 +# 35| r35_31(glval) = FunctionAddress[String] : +# 35| v35_32(void) = Call[String] : func:r35_31, this:r35_29 +# 35| mu35_33(unknown) = ^CallSideEffect : ~m? +# 35| mu35_34(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_29 +# 35| r35_35(glval) = VariableAddress[x2] : +# 35| r35_36(glval) = FunctionAddress[~String] : +# 35| v35_37(void) = Call[~String] : func:r35_36, this:r35_35 +# 35| mu35_38(unknown) = ^CallSideEffect : ~m? +# 35| v35_39(void) = ^IndirectReadSideEffect[-1] : &:r35_35, ~m? +# 35| mu35_40(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_35 +# 35| r35_41(bool) = Constant[0] : +# 35| v35_42(void) = ConditionalBranch : r35_41 #-----| False -> Block 3 #-----| True -> Block 1026 -# 28| Block 3 -# 28| r28_1(glval) = VariableAddress[x3] : -# 28| mu28_2(String) = Uninitialized[x3] : &:r28_1 -# 28| r28_3(glval) = FunctionAddress[String] : -# 28| v28_4(void) = Call[String] : func:r28_3, this:r28_1 -# 28| mu28_5(unknown) = ^CallSideEffect : ~m? -# 28| mu28_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r28_1 -# 29| r29_1(glval) = VariableAddress[x3] : -# 29| r29_2(glval) = FunctionAddress[~String] : -# 29| v29_3(void) = Call[~String] : func:r29_2, this:r29_1 -# 29| mu29_4(unknown) = ^CallSideEffect : ~m? -# 29| v29_5(void) = ^IndirectReadSideEffect[-1] : &:r29_1, ~m? -# 29| mu29_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r29_1 -# 29| r29_7(bool) = Constant[0] : -# 29| v29_8(void) = ConditionalBranch : r29_7 +# 35| Block 3 +# 35| r35_43(glval) = VariableAddress[x3] : +# 35| mu35_44(String) = Uninitialized[x3] : &:r35_43 +# 35| r35_45(glval) = FunctionAddress[String] : +# 35| v35_46(void) = Call[String] : func:r35_45, this:r35_43 +# 35| mu35_47(unknown) = ^CallSideEffect : ~m? +# 35| mu35_48(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_43 +# 35| r35_49(glval) = VariableAddress[x3] : +# 35| r35_50(glval) = FunctionAddress[~String] : +# 35| v35_51(void) = Call[~String] : func:r35_50, this:r35_49 +# 35| mu35_52(unknown) = ^CallSideEffect : ~m? +# 35| v35_53(void) = ^IndirectReadSideEffect[-1] : &:r35_49, ~m? +# 35| mu35_54(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_49 +# 35| r35_55(bool) = Constant[0] : +# 35| v35_56(void) = ConditionalBranch : r35_55 #-----| False -> Block 4 #-----| True -> Block 1026 -# 31| Block 4 -# 31| r31_1(glval) = VariableAddress[x4] : -# 31| mu31_2(String) = Uninitialized[x4] : &:r31_1 -# 31| r31_3(glval) = FunctionAddress[String] : -# 31| v31_4(void) = Call[String] : func:r31_3, this:r31_1 -# 31| mu31_5(unknown) = ^CallSideEffect : ~m? -# 31| mu31_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r31_1 -# 32| r32_1(glval) = VariableAddress[x4] : -# 32| r32_2(glval) = FunctionAddress[~String] : -# 32| v32_3(void) = Call[~String] : func:r32_2, this:r32_1 -# 32| mu32_4(unknown) = ^CallSideEffect : ~m? -# 32| v32_5(void) = ^IndirectReadSideEffect[-1] : &:r32_1, ~m? -# 32| mu32_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r32_1 -# 32| r32_7(bool) = Constant[0] : -# 32| v32_8(void) = ConditionalBranch : r32_7 +# 35| Block 4 +# 35| r35_57(glval) = VariableAddress[x4] : +# 35| mu35_58(String) = Uninitialized[x4] : &:r35_57 +# 35| r35_59(glval) = FunctionAddress[String] : +# 35| v35_60(void) = Call[String] : func:r35_59, this:r35_57 +# 35| mu35_61(unknown) = ^CallSideEffect : ~m? +# 35| mu35_62(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_57 +# 35| r35_63(glval) = VariableAddress[x4] : +# 35| r35_64(glval) = FunctionAddress[~String] : +# 35| v35_65(void) = Call[~String] : func:r35_64, this:r35_63 +# 35| mu35_66(unknown) = ^CallSideEffect : ~m? +# 35| v35_67(void) = ^IndirectReadSideEffect[-1] : &:r35_63, ~m? +# 35| mu35_68(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_63 +# 35| r35_69(bool) = Constant[0] : +# 35| v35_70(void) = ConditionalBranch : r35_69 #-----| False -> Block 5 #-----| True -> Block 1026 -# 34| Block 5 -# 34| r34_1(glval) = VariableAddress[x5] : -# 34| mu34_2(String) = Uninitialized[x5] : &:r34_1 -# 34| r34_3(glval) = FunctionAddress[String] : -# 34| v34_4(void) = Call[String] : func:r34_3, this:r34_1 -# 34| mu34_5(unknown) = ^CallSideEffect : ~m? -# 34| mu34_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r34_1 -# 35| r35_1(glval) = VariableAddress[x5] : -# 35| r35_2(glval) = FunctionAddress[~String] : -# 35| v35_3(void) = Call[~String] : func:r35_2, this:r35_1 -# 35| mu35_4(unknown) = ^CallSideEffect : ~m? -# 35| v35_5(void) = ^IndirectReadSideEffect[-1] : &:r35_1, ~m? -# 35| mu35_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1 -# 35| r35_7(bool) = Constant[0] : -# 35| v35_8(void) = ConditionalBranch : r35_7 +# 35| Block 5 +# 35| r35_71(glval) = VariableAddress[x5] : +# 35| mu35_72(String) = Uninitialized[x5] : &:r35_71 +# 35| r35_73(glval) = FunctionAddress[String] : +# 35| v35_74(void) = Call[String] : func:r35_73, this:r35_71 +# 35| mu35_75(unknown) = ^CallSideEffect : ~m? +# 35| mu35_76(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_71 +# 35| r35_77(glval) = VariableAddress[x5] : +# 35| r35_78(glval) = FunctionAddress[~String] : +# 35| v35_79(void) = Call[~String] : func:r35_78, this:r35_77 +# 35| mu35_80(unknown) = ^CallSideEffect : ~m? +# 35| v35_81(void) = ^IndirectReadSideEffect[-1] : &:r35_77, ~m? +# 35| mu35_82(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_77 +# 35| r35_83(bool) = Constant[0] : +# 35| v35_84(void) = ConditionalBranch : r35_83 #-----| False -> Block 6 #-----| True -> Block 1026 -# 37| Block 6 -# 37| r37_1(glval) = VariableAddress[x6] : -# 37| mu37_2(String) = Uninitialized[x6] : &:r37_1 -# 37| r37_3(glval) = FunctionAddress[String] : -# 37| v37_4(void) = Call[String] : func:r37_3, this:r37_1 -# 37| mu37_5(unknown) = ^CallSideEffect : ~m? -# 37| mu37_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r37_1 -# 38| r38_1(glval) = VariableAddress[x6] : -# 38| r38_2(glval) = FunctionAddress[~String] : -# 38| v38_3(void) = Call[~String] : func:r38_2, this:r38_1 -# 38| mu38_4(unknown) = ^CallSideEffect : ~m? -# 38| v38_5(void) = ^IndirectReadSideEffect[-1] : &:r38_1, ~m? -# 38| mu38_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r38_1 -# 38| r38_7(bool) = Constant[0] : -# 38| v38_8(void) = ConditionalBranch : r38_7 +# 35| Block 6 +# 35| r35_85(glval) = VariableAddress[x6] : +# 35| mu35_86(String) = Uninitialized[x6] : &:r35_85 +# 35| r35_87(glval) = FunctionAddress[String] : +# 35| v35_88(void) = Call[String] : func:r35_87, this:r35_85 +# 35| mu35_89(unknown) = ^CallSideEffect : ~m? +# 35| mu35_90(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_85 +# 35| r35_91(glval) = VariableAddress[x6] : +# 35| r35_92(glval) = FunctionAddress[~String] : +# 35| v35_93(void) = Call[~String] : func:r35_92, this:r35_91 +# 35| mu35_94(unknown) = ^CallSideEffect : ~m? +# 35| v35_95(void) = ^IndirectReadSideEffect[-1] : &:r35_91, ~m? +# 35| mu35_96(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_91 +# 35| r35_97(bool) = Constant[0] : +# 35| v35_98(void) = ConditionalBranch : r35_97 #-----| False -> Block 7 #-----| True -> Block 1026 -# 40| Block 7 -# 40| r40_1(glval) = VariableAddress[x7] : -# 40| mu40_2(String) = Uninitialized[x7] : &:r40_1 -# 40| r40_3(glval) = FunctionAddress[String] : -# 40| v40_4(void) = Call[String] : func:r40_3, this:r40_1 -# 40| mu40_5(unknown) = ^CallSideEffect : ~m? -# 40| mu40_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r40_1 -# 41| r41_1(glval) = VariableAddress[x7] : -# 41| r41_2(glval) = FunctionAddress[~String] : -# 41| v41_3(void) = Call[~String] : func:r41_2, this:r41_1 -# 41| mu41_4(unknown) = ^CallSideEffect : ~m? -# 41| v41_5(void) = ^IndirectReadSideEffect[-1] : &:r41_1, ~m? -# 41| mu41_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r41_1 -# 41| r41_7(bool) = Constant[0] : -# 41| v41_8(void) = ConditionalBranch : r41_7 +# 35| Block 7 +# 35| r35_99(glval) = VariableAddress[x7] : +# 35| mu35_100(String) = Uninitialized[x7] : &:r35_99 +# 35| r35_101(glval) = FunctionAddress[String] : +# 35| v35_102(void) = Call[String] : func:r35_101, this:r35_99 +# 35| mu35_103(unknown) = ^CallSideEffect : ~m? +# 35| mu35_104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_99 +# 35| r35_105(glval) = VariableAddress[x7] : +# 35| r35_106(glval) = FunctionAddress[~String] : +# 35| v35_107(void) = Call[~String] : func:r35_106, this:r35_105 +# 35| mu35_108(unknown) = ^CallSideEffect : ~m? +# 35| v35_109(void) = ^IndirectReadSideEffect[-1] : &:r35_105, ~m? +# 35| mu35_110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_105 +# 35| r35_111(bool) = Constant[0] : +# 35| v35_112(void) = ConditionalBranch : r35_111 #-----| False -> Block 8 #-----| True -> Block 1026 -# 43| Block 8 -# 43| r43_1(glval) = VariableAddress[x8] : -# 43| mu43_2(String) = Uninitialized[x8] : &:r43_1 -# 43| r43_3(glval) = FunctionAddress[String] : -# 43| v43_4(void) = Call[String] : func:r43_3, this:r43_1 -# 43| mu43_5(unknown) = ^CallSideEffect : ~m? -# 43| mu43_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r43_1 -# 44| r44_1(glval) = VariableAddress[x8] : -# 44| r44_2(glval) = FunctionAddress[~String] : -# 44| v44_3(void) = Call[~String] : func:r44_2, this:r44_1 -# 44| mu44_4(unknown) = ^CallSideEffect : ~m? -# 44| v44_5(void) = ^IndirectReadSideEffect[-1] : &:r44_1, ~m? -# 44| mu44_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r44_1 -# 44| r44_7(bool) = Constant[0] : -# 44| v44_8(void) = ConditionalBranch : r44_7 +# 35| Block 8 +# 35| r35_113(glval) = VariableAddress[x8] : +# 35| mu35_114(String) = Uninitialized[x8] : &:r35_113 +# 35| r35_115(glval) = FunctionAddress[String] : +# 35| v35_116(void) = Call[String] : func:r35_115, this:r35_113 +# 35| mu35_117(unknown) = ^CallSideEffect : ~m? +# 35| mu35_118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_113 +# 35| r35_119(glval) = VariableAddress[x8] : +# 35| r35_120(glval) = FunctionAddress[~String] : +# 35| v35_121(void) = Call[~String] : func:r35_120, this:r35_119 +# 35| mu35_122(unknown) = ^CallSideEffect : ~m? +# 35| v35_123(void) = ^IndirectReadSideEffect[-1] : &:r35_119, ~m? +# 35| mu35_124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_119 +# 35| r35_125(bool) = Constant[0] : +# 35| v35_126(void) = ConditionalBranch : r35_125 #-----| False -> Block 9 #-----| True -> Block 1026 -# 46| Block 9 -# 46| r46_1(glval) = VariableAddress[x9] : -# 46| mu46_2(String) = Uninitialized[x9] : &:r46_1 -# 46| r46_3(glval) = FunctionAddress[String] : -# 46| v46_4(void) = Call[String] : func:r46_3, this:r46_1 -# 46| mu46_5(unknown) = ^CallSideEffect : ~m? -# 46| mu46_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r46_1 -# 47| r47_1(glval) = VariableAddress[x9] : -# 47| r47_2(glval) = FunctionAddress[~String] : -# 47| v47_3(void) = Call[~String] : func:r47_2, this:r47_1 -# 47| mu47_4(unknown) = ^CallSideEffect : ~m? -# 47| v47_5(void) = ^IndirectReadSideEffect[-1] : &:r47_1, ~m? -# 47| mu47_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r47_1 -# 47| r47_7(bool) = Constant[0] : -# 47| v47_8(void) = ConditionalBranch : r47_7 +# 35| Block 9 +# 35| r35_127(glval) = VariableAddress[x9] : +# 35| mu35_128(String) = Uninitialized[x9] : &:r35_127 +# 35| r35_129(glval) = FunctionAddress[String] : +# 35| v35_130(void) = Call[String] : func:r35_129, this:r35_127 +# 35| mu35_131(unknown) = ^CallSideEffect : ~m? +# 35| mu35_132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_127 +# 35| r35_133(glval) = VariableAddress[x9] : +# 35| r35_134(glval) = FunctionAddress[~String] : +# 35| v35_135(void) = Call[~String] : func:r35_134, this:r35_133 +# 35| mu35_136(unknown) = ^CallSideEffect : ~m? +# 35| v35_137(void) = ^IndirectReadSideEffect[-1] : &:r35_133, ~m? +# 35| mu35_138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_133 +# 35| r35_139(bool) = Constant[0] : +# 35| v35_140(void) = ConditionalBranch : r35_139 #-----| False -> Block 10 #-----| True -> Block 1026 -# 49| Block 10 -# 49| r49_1(glval) = VariableAddress[x10] : -# 49| mu49_2(String) = Uninitialized[x10] : &:r49_1 -# 49| r49_3(glval) = FunctionAddress[String] : -# 49| v49_4(void) = Call[String] : func:r49_3, this:r49_1 -# 49| mu49_5(unknown) = ^CallSideEffect : ~m? -# 49| mu49_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r49_1 -# 50| r50_1(glval) = VariableAddress[x10] : -# 50| r50_2(glval) = FunctionAddress[~String] : -# 50| v50_3(void) = Call[~String] : func:r50_2, this:r50_1 -# 50| mu50_4(unknown) = ^CallSideEffect : ~m? -# 50| v50_5(void) = ^IndirectReadSideEffect[-1] : &:r50_1, ~m? -# 50| mu50_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r50_1 -# 50| r50_7(bool) = Constant[0] : -# 50| v50_8(void) = ConditionalBranch : r50_7 +# 35| Block 10 +# 35| r35_141(glval) = VariableAddress[x10] : +# 35| mu35_142(String) = Uninitialized[x10] : &:r35_141 +# 35| r35_143(glval) = FunctionAddress[String] : +# 35| v35_144(void) = Call[String] : func:r35_143, this:r35_141 +# 35| mu35_145(unknown) = ^CallSideEffect : ~m? +# 35| mu35_146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_141 +# 35| r35_147(glval) = VariableAddress[x10] : +# 35| r35_148(glval) = FunctionAddress[~String] : +# 35| v35_149(void) = Call[~String] : func:r35_148, this:r35_147 +# 35| mu35_150(unknown) = ^CallSideEffect : ~m? +# 35| v35_151(void) = ^IndirectReadSideEffect[-1] : &:r35_147, ~m? +# 35| mu35_152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_147 +# 35| r35_153(bool) = Constant[0] : +# 35| v35_154(void) = ConditionalBranch : r35_153 #-----| False -> Block 11 #-----| True -> Block 1026 -# 52| Block 11 -# 52| r52_1(glval) = VariableAddress[x11] : -# 52| mu52_2(String) = Uninitialized[x11] : &:r52_1 -# 52| r52_3(glval) = FunctionAddress[String] : -# 52| v52_4(void) = Call[String] : func:r52_3, this:r52_1 -# 52| mu52_5(unknown) = ^CallSideEffect : ~m? -# 52| mu52_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r52_1 -# 53| r53_1(glval) = VariableAddress[x11] : -# 53| r53_2(glval) = FunctionAddress[~String] : -# 53| v53_3(void) = Call[~String] : func:r53_2, this:r53_1 -# 53| mu53_4(unknown) = ^CallSideEffect : ~m? -# 53| v53_5(void) = ^IndirectReadSideEffect[-1] : &:r53_1, ~m? -# 53| mu53_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r53_1 -# 53| r53_7(bool) = Constant[0] : -# 53| v53_8(void) = ConditionalBranch : r53_7 +# 35| Block 11 +# 35| r35_155(glval) = VariableAddress[x11] : +# 35| mu35_156(String) = Uninitialized[x11] : &:r35_155 +# 35| r35_157(glval) = FunctionAddress[String] : +# 35| v35_158(void) = Call[String] : func:r35_157, this:r35_155 +# 35| mu35_159(unknown) = ^CallSideEffect : ~m? +# 35| mu35_160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_155 +# 35| r35_161(glval) = VariableAddress[x11] : +# 35| r35_162(glval) = FunctionAddress[~String] : +# 35| v35_163(void) = Call[~String] : func:r35_162, this:r35_161 +# 35| mu35_164(unknown) = ^CallSideEffect : ~m? +# 35| v35_165(void) = ^IndirectReadSideEffect[-1] : &:r35_161, ~m? +# 35| mu35_166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_161 +# 35| r35_167(bool) = Constant[0] : +# 35| v35_168(void) = ConditionalBranch : r35_167 #-----| False -> Block 12 #-----| True -> Block 1026 -# 55| Block 12 -# 55| r55_1(glval) = VariableAddress[x12] : -# 55| mu55_2(String) = Uninitialized[x12] : &:r55_1 -# 55| r55_3(glval) = FunctionAddress[String] : -# 55| v55_4(void) = Call[String] : func:r55_3, this:r55_1 -# 55| mu55_5(unknown) = ^CallSideEffect : ~m? -# 55| mu55_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r55_1 -# 56| r56_1(glval) = VariableAddress[x12] : -# 56| r56_2(glval) = FunctionAddress[~String] : -# 56| v56_3(void) = Call[~String] : func:r56_2, this:r56_1 -# 56| mu56_4(unknown) = ^CallSideEffect : ~m? -# 56| v56_5(void) = ^IndirectReadSideEffect[-1] : &:r56_1, ~m? -# 56| mu56_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r56_1 -# 56| r56_7(bool) = Constant[0] : -# 56| v56_8(void) = ConditionalBranch : r56_7 +# 35| Block 12 +# 35| r35_169(glval) = VariableAddress[x12] : +# 35| mu35_170(String) = Uninitialized[x12] : &:r35_169 +# 35| r35_171(glval) = FunctionAddress[String] : +# 35| v35_172(void) = Call[String] : func:r35_171, this:r35_169 +# 35| mu35_173(unknown) = ^CallSideEffect : ~m? +# 35| mu35_174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_169 +# 35| r35_175(glval) = VariableAddress[x12] : +# 35| r35_176(glval) = FunctionAddress[~String] : +# 35| v35_177(void) = Call[~String] : func:r35_176, this:r35_175 +# 35| mu35_178(unknown) = ^CallSideEffect : ~m? +# 35| v35_179(void) = ^IndirectReadSideEffect[-1] : &:r35_175, ~m? +# 35| mu35_180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_175 +# 35| r35_181(bool) = Constant[0] : +# 35| v35_182(void) = ConditionalBranch : r35_181 #-----| False -> Block 13 #-----| True -> Block 1026 -# 58| Block 13 -# 58| r58_1(glval) = VariableAddress[x13] : -# 58| mu58_2(String) = Uninitialized[x13] : &:r58_1 -# 58| r58_3(glval) = FunctionAddress[String] : -# 58| v58_4(void) = Call[String] : func:r58_3, this:r58_1 -# 58| mu58_5(unknown) = ^CallSideEffect : ~m? -# 58| mu58_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r58_1 -# 59| r59_1(glval) = VariableAddress[x13] : -# 59| r59_2(glval) = FunctionAddress[~String] : -# 59| v59_3(void) = Call[~String] : func:r59_2, this:r59_1 -# 59| mu59_4(unknown) = ^CallSideEffect : ~m? -# 59| v59_5(void) = ^IndirectReadSideEffect[-1] : &:r59_1, ~m? -# 59| mu59_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r59_1 -# 59| r59_7(bool) = Constant[0] : -# 59| v59_8(void) = ConditionalBranch : r59_7 +# 35| Block 13 +# 35| r35_183(glval) = VariableAddress[x13] : +# 35| mu35_184(String) = Uninitialized[x13] : &:r35_183 +# 35| r35_185(glval) = FunctionAddress[String] : +# 35| v35_186(void) = Call[String] : func:r35_185, this:r35_183 +# 35| mu35_187(unknown) = ^CallSideEffect : ~m? +# 35| mu35_188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_183 +# 35| r35_189(glval) = VariableAddress[x13] : +# 35| r35_190(glval) = FunctionAddress[~String] : +# 35| v35_191(void) = Call[~String] : func:r35_190, this:r35_189 +# 35| mu35_192(unknown) = ^CallSideEffect : ~m? +# 35| v35_193(void) = ^IndirectReadSideEffect[-1] : &:r35_189, ~m? +# 35| mu35_194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_189 +# 35| r35_195(bool) = Constant[0] : +# 35| v35_196(void) = ConditionalBranch : r35_195 #-----| False -> Block 14 #-----| True -> Block 1026 -# 61| Block 14 -# 61| r61_1(glval) = VariableAddress[x14] : -# 61| mu61_2(String) = Uninitialized[x14] : &:r61_1 -# 61| r61_3(glval) = FunctionAddress[String] : -# 61| v61_4(void) = Call[String] : func:r61_3, this:r61_1 -# 61| mu61_5(unknown) = ^CallSideEffect : ~m? -# 61| mu61_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r61_1 -# 62| r62_1(glval) = VariableAddress[x14] : -# 62| r62_2(glval) = FunctionAddress[~String] : -# 62| v62_3(void) = Call[~String] : func:r62_2, this:r62_1 -# 62| mu62_4(unknown) = ^CallSideEffect : ~m? -# 62| v62_5(void) = ^IndirectReadSideEffect[-1] : &:r62_1, ~m? -# 62| mu62_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r62_1 -# 62| r62_7(bool) = Constant[0] : -# 62| v62_8(void) = ConditionalBranch : r62_7 +# 35| Block 14 +# 35| r35_197(glval) = VariableAddress[x14] : +# 35| mu35_198(String) = Uninitialized[x14] : &:r35_197 +# 35| r35_199(glval) = FunctionAddress[String] : +# 35| v35_200(void) = Call[String] : func:r35_199, this:r35_197 +# 35| mu35_201(unknown) = ^CallSideEffect : ~m? +# 35| mu35_202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_197 +# 35| r35_203(glval) = VariableAddress[x14] : +# 35| r35_204(glval) = FunctionAddress[~String] : +# 35| v35_205(void) = Call[~String] : func:r35_204, this:r35_203 +# 35| mu35_206(unknown) = ^CallSideEffect : ~m? +# 35| v35_207(void) = ^IndirectReadSideEffect[-1] : &:r35_203, ~m? +# 35| mu35_208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_203 +# 35| r35_209(bool) = Constant[0] : +# 35| v35_210(void) = ConditionalBranch : r35_209 #-----| False -> Block 15 #-----| True -> Block 1026 -# 64| Block 15 -# 64| r64_1(glval) = VariableAddress[x15] : -# 64| mu64_2(String) = Uninitialized[x15] : &:r64_1 -# 64| r64_3(glval) = FunctionAddress[String] : -# 64| v64_4(void) = Call[String] : func:r64_3, this:r64_1 -# 64| mu64_5(unknown) = ^CallSideEffect : ~m? -# 64| mu64_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r64_1 -# 65| r65_1(glval) = VariableAddress[x15] : -# 65| r65_2(glval) = FunctionAddress[~String] : -# 65| v65_3(void) = Call[~String] : func:r65_2, this:r65_1 -# 65| mu65_4(unknown) = ^CallSideEffect : ~m? -# 65| v65_5(void) = ^IndirectReadSideEffect[-1] : &:r65_1, ~m? -# 65| mu65_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r65_1 -# 65| r65_7(bool) = Constant[0] : -# 65| v65_8(void) = ConditionalBranch : r65_7 +# 35| Block 15 +# 35| r35_211(glval) = VariableAddress[x15] : +# 35| mu35_212(String) = Uninitialized[x15] : &:r35_211 +# 35| r35_213(glval) = FunctionAddress[String] : +# 35| v35_214(void) = Call[String] : func:r35_213, this:r35_211 +# 35| mu35_215(unknown) = ^CallSideEffect : ~m? +# 35| mu35_216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_211 +# 35| r35_217(glval) = VariableAddress[x15] : +# 35| r35_218(glval) = FunctionAddress[~String] : +# 35| v35_219(void) = Call[~String] : func:r35_218, this:r35_217 +# 35| mu35_220(unknown) = ^CallSideEffect : ~m? +# 35| v35_221(void) = ^IndirectReadSideEffect[-1] : &:r35_217, ~m? +# 35| mu35_222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_217 +# 35| r35_223(bool) = Constant[0] : +# 35| v35_224(void) = ConditionalBranch : r35_223 #-----| False -> Block 16 #-----| True -> Block 1026 -# 67| Block 16 -# 67| r67_1(glval) = VariableAddress[x16] : -# 67| mu67_2(String) = Uninitialized[x16] : &:r67_1 -# 67| r67_3(glval) = FunctionAddress[String] : -# 67| v67_4(void) = Call[String] : func:r67_3, this:r67_1 -# 67| mu67_5(unknown) = ^CallSideEffect : ~m? -# 67| mu67_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r67_1 -# 68| r68_1(glval) = VariableAddress[x16] : -# 68| r68_2(glval) = FunctionAddress[~String] : -# 68| v68_3(void) = Call[~String] : func:r68_2, this:r68_1 -# 68| mu68_4(unknown) = ^CallSideEffect : ~m? -# 68| v68_5(void) = ^IndirectReadSideEffect[-1] : &:r68_1, ~m? -# 68| mu68_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r68_1 -# 68| r68_7(bool) = Constant[0] : -# 68| v68_8(void) = ConditionalBranch : r68_7 +# 35| Block 16 +# 35| r35_225(glval) = VariableAddress[x16] : +# 35| mu35_226(String) = Uninitialized[x16] : &:r35_225 +# 35| r35_227(glval) = FunctionAddress[String] : +# 35| v35_228(void) = Call[String] : func:r35_227, this:r35_225 +# 35| mu35_229(unknown) = ^CallSideEffect : ~m? +# 35| mu35_230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_225 +# 35| r35_231(glval) = VariableAddress[x16] : +# 35| r35_232(glval) = FunctionAddress[~String] : +# 35| v35_233(void) = Call[~String] : func:r35_232, this:r35_231 +# 35| mu35_234(unknown) = ^CallSideEffect : ~m? +# 35| v35_235(void) = ^IndirectReadSideEffect[-1] : &:r35_231, ~m? +# 35| mu35_236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_231 +# 35| r35_237(bool) = Constant[0] : +# 35| v35_238(void) = ConditionalBranch : r35_237 #-----| False -> Block 17 #-----| True -> Block 1026 -# 70| Block 17 -# 70| r70_1(glval) = VariableAddress[x17] : -# 70| mu70_2(String) = Uninitialized[x17] : &:r70_1 -# 70| r70_3(glval) = FunctionAddress[String] : -# 70| v70_4(void) = Call[String] : func:r70_3, this:r70_1 -# 70| mu70_5(unknown) = ^CallSideEffect : ~m? -# 70| mu70_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r70_1 -# 71| r71_1(glval) = VariableAddress[x17] : -# 71| r71_2(glval) = FunctionAddress[~String] : -# 71| v71_3(void) = Call[~String] : func:r71_2, this:r71_1 -# 71| mu71_4(unknown) = ^CallSideEffect : ~m? -# 71| v71_5(void) = ^IndirectReadSideEffect[-1] : &:r71_1, ~m? -# 71| mu71_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r71_1 -# 71| r71_7(bool) = Constant[0] : -# 71| v71_8(void) = ConditionalBranch : r71_7 +# 35| Block 17 +# 35| r35_239(glval) = VariableAddress[x17] : +# 35| mu35_240(String) = Uninitialized[x17] : &:r35_239 +# 35| r35_241(glval) = FunctionAddress[String] : +# 35| v35_242(void) = Call[String] : func:r35_241, this:r35_239 +# 35| mu35_243(unknown) = ^CallSideEffect : ~m? +# 35| mu35_244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_239 +# 35| r35_245(glval) = VariableAddress[x17] : +# 35| r35_246(glval) = FunctionAddress[~String] : +# 35| v35_247(void) = Call[~String] : func:r35_246, this:r35_245 +# 35| mu35_248(unknown) = ^CallSideEffect : ~m? +# 35| v35_249(void) = ^IndirectReadSideEffect[-1] : &:r35_245, ~m? +# 35| mu35_250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_245 +# 35| r35_251(bool) = Constant[0] : +# 35| v35_252(void) = ConditionalBranch : r35_251 #-----| False -> Block 18 #-----| True -> Block 1026 -# 73| Block 18 -# 73| r73_1(glval) = VariableAddress[x18] : -# 73| mu73_2(String) = Uninitialized[x18] : &:r73_1 -# 73| r73_3(glval) = FunctionAddress[String] : -# 73| v73_4(void) = Call[String] : func:r73_3, this:r73_1 -# 73| mu73_5(unknown) = ^CallSideEffect : ~m? -# 73| mu73_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r73_1 -# 74| r74_1(glval) = VariableAddress[x18] : -# 74| r74_2(glval) = FunctionAddress[~String] : -# 74| v74_3(void) = Call[~String] : func:r74_2, this:r74_1 -# 74| mu74_4(unknown) = ^CallSideEffect : ~m? -# 74| v74_5(void) = ^IndirectReadSideEffect[-1] : &:r74_1, ~m? -# 74| mu74_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r74_1 -# 74| r74_7(bool) = Constant[0] : -# 74| v74_8(void) = ConditionalBranch : r74_7 +# 35| Block 18 +# 35| r35_253(glval) = VariableAddress[x18] : +# 35| mu35_254(String) = Uninitialized[x18] : &:r35_253 +# 35| r35_255(glval) = FunctionAddress[String] : +# 35| v35_256(void) = Call[String] : func:r35_255, this:r35_253 +# 35| mu35_257(unknown) = ^CallSideEffect : ~m? +# 35| mu35_258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_253 +# 35| r35_259(glval) = VariableAddress[x18] : +# 35| r35_260(glval) = FunctionAddress[~String] : +# 35| v35_261(void) = Call[~String] : func:r35_260, this:r35_259 +# 35| mu35_262(unknown) = ^CallSideEffect : ~m? +# 35| v35_263(void) = ^IndirectReadSideEffect[-1] : &:r35_259, ~m? +# 35| mu35_264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_259 +# 35| r35_265(bool) = Constant[0] : +# 35| v35_266(void) = ConditionalBranch : r35_265 #-----| False -> Block 19 #-----| True -> Block 1026 -# 76| Block 19 -# 76| r76_1(glval) = VariableAddress[x19] : -# 76| mu76_2(String) = Uninitialized[x19] : &:r76_1 -# 76| r76_3(glval) = FunctionAddress[String] : -# 76| v76_4(void) = Call[String] : func:r76_3, this:r76_1 -# 76| mu76_5(unknown) = ^CallSideEffect : ~m? -# 76| mu76_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r76_1 -# 77| r77_1(glval) = VariableAddress[x19] : -# 77| r77_2(glval) = FunctionAddress[~String] : -# 77| v77_3(void) = Call[~String] : func:r77_2, this:r77_1 -# 77| mu77_4(unknown) = ^CallSideEffect : ~m? -# 77| v77_5(void) = ^IndirectReadSideEffect[-1] : &:r77_1, ~m? -# 77| mu77_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r77_1 -# 77| r77_7(bool) = Constant[0] : -# 77| v77_8(void) = ConditionalBranch : r77_7 +# 35| Block 19 +# 35| r35_267(glval) = VariableAddress[x19] : +# 35| mu35_268(String) = Uninitialized[x19] : &:r35_267 +# 35| r35_269(glval) = FunctionAddress[String] : +# 35| v35_270(void) = Call[String] : func:r35_269, this:r35_267 +# 35| mu35_271(unknown) = ^CallSideEffect : ~m? +# 35| mu35_272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_267 +# 35| r35_273(glval) = VariableAddress[x19] : +# 35| r35_274(glval) = FunctionAddress[~String] : +# 35| v35_275(void) = Call[~String] : func:r35_274, this:r35_273 +# 35| mu35_276(unknown) = ^CallSideEffect : ~m? +# 35| v35_277(void) = ^IndirectReadSideEffect[-1] : &:r35_273, ~m? +# 35| mu35_278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_273 +# 35| r35_279(bool) = Constant[0] : +# 35| v35_280(void) = ConditionalBranch : r35_279 #-----| False -> Block 20 #-----| True -> Block 1026 -# 79| Block 20 -# 79| r79_1(glval) = VariableAddress[x20] : -# 79| mu79_2(String) = Uninitialized[x20] : &:r79_1 -# 79| r79_3(glval) = FunctionAddress[String] : -# 79| v79_4(void) = Call[String] : func:r79_3, this:r79_1 -# 79| mu79_5(unknown) = ^CallSideEffect : ~m? -# 79| mu79_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r79_1 -# 80| r80_1(glval) = VariableAddress[x20] : -# 80| r80_2(glval) = FunctionAddress[~String] : -# 80| v80_3(void) = Call[~String] : func:r80_2, this:r80_1 -# 80| mu80_4(unknown) = ^CallSideEffect : ~m? -# 80| v80_5(void) = ^IndirectReadSideEffect[-1] : &:r80_1, ~m? -# 80| mu80_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r80_1 -# 80| r80_7(bool) = Constant[0] : -# 80| v80_8(void) = ConditionalBranch : r80_7 +# 35| Block 20 +# 35| r35_281(glval) = VariableAddress[x20] : +# 35| mu35_282(String) = Uninitialized[x20] : &:r35_281 +# 35| r35_283(glval) = FunctionAddress[String] : +# 35| v35_284(void) = Call[String] : func:r35_283, this:r35_281 +# 35| mu35_285(unknown) = ^CallSideEffect : ~m? +# 35| mu35_286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_281 +# 35| r35_287(glval) = VariableAddress[x20] : +# 35| r35_288(glval) = FunctionAddress[~String] : +# 35| v35_289(void) = Call[~String] : func:r35_288, this:r35_287 +# 35| mu35_290(unknown) = ^CallSideEffect : ~m? +# 35| v35_291(void) = ^IndirectReadSideEffect[-1] : &:r35_287, ~m? +# 35| mu35_292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_287 +# 35| r35_293(bool) = Constant[0] : +# 35| v35_294(void) = ConditionalBranch : r35_293 #-----| False -> Block 21 #-----| True -> Block 1026 -# 82| Block 21 -# 82| r82_1(glval) = VariableAddress[x21] : -# 82| mu82_2(String) = Uninitialized[x21] : &:r82_1 -# 82| r82_3(glval) = FunctionAddress[String] : -# 82| v82_4(void) = Call[String] : func:r82_3, this:r82_1 -# 82| mu82_5(unknown) = ^CallSideEffect : ~m? -# 82| mu82_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r82_1 -# 83| r83_1(glval) = VariableAddress[x21] : -# 83| r83_2(glval) = FunctionAddress[~String] : -# 83| v83_3(void) = Call[~String] : func:r83_2, this:r83_1 -# 83| mu83_4(unknown) = ^CallSideEffect : ~m? -# 83| v83_5(void) = ^IndirectReadSideEffect[-1] : &:r83_1, ~m? -# 83| mu83_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r83_1 -# 83| r83_7(bool) = Constant[0] : -# 83| v83_8(void) = ConditionalBranch : r83_7 +# 35| Block 21 +# 35| r35_295(glval) = VariableAddress[x21] : +# 35| mu35_296(String) = Uninitialized[x21] : &:r35_295 +# 35| r35_297(glval) = FunctionAddress[String] : +# 35| v35_298(void) = Call[String] : func:r35_297, this:r35_295 +# 35| mu35_299(unknown) = ^CallSideEffect : ~m? +# 35| mu35_300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_295 +# 35| r35_301(glval) = VariableAddress[x21] : +# 35| r35_302(glval) = FunctionAddress[~String] : +# 35| v35_303(void) = Call[~String] : func:r35_302, this:r35_301 +# 35| mu35_304(unknown) = ^CallSideEffect : ~m? +# 35| v35_305(void) = ^IndirectReadSideEffect[-1] : &:r35_301, ~m? +# 35| mu35_306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_301 +# 35| r35_307(bool) = Constant[0] : +# 35| v35_308(void) = ConditionalBranch : r35_307 #-----| False -> Block 22 #-----| True -> Block 1026 -# 85| Block 22 -# 85| r85_1(glval) = VariableAddress[x22] : -# 85| mu85_2(String) = Uninitialized[x22] : &:r85_1 -# 85| r85_3(glval) = FunctionAddress[String] : -# 85| v85_4(void) = Call[String] : func:r85_3, this:r85_1 -# 85| mu85_5(unknown) = ^CallSideEffect : ~m? -# 85| mu85_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r85_1 -# 86| r86_1(glval) = VariableAddress[x22] : -# 86| r86_2(glval) = FunctionAddress[~String] : -# 86| v86_3(void) = Call[~String] : func:r86_2, this:r86_1 -# 86| mu86_4(unknown) = ^CallSideEffect : ~m? -# 86| v86_5(void) = ^IndirectReadSideEffect[-1] : &:r86_1, ~m? -# 86| mu86_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r86_1 -# 86| r86_7(bool) = Constant[0] : -# 86| v86_8(void) = ConditionalBranch : r86_7 +# 35| Block 22 +# 35| r35_309(glval) = VariableAddress[x22] : +# 35| mu35_310(String) = Uninitialized[x22] : &:r35_309 +# 35| r35_311(glval) = FunctionAddress[String] : +# 35| v35_312(void) = Call[String] : func:r35_311, this:r35_309 +# 35| mu35_313(unknown) = ^CallSideEffect : ~m? +# 35| mu35_314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_309 +# 35| r35_315(glval) = VariableAddress[x22] : +# 35| r35_316(glval) = FunctionAddress[~String] : +# 35| v35_317(void) = Call[~String] : func:r35_316, this:r35_315 +# 35| mu35_318(unknown) = ^CallSideEffect : ~m? +# 35| v35_319(void) = ^IndirectReadSideEffect[-1] : &:r35_315, ~m? +# 35| mu35_320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_315 +# 35| r35_321(bool) = Constant[0] : +# 35| v35_322(void) = ConditionalBranch : r35_321 #-----| False -> Block 23 #-----| True -> Block 1026 -# 88| Block 23 -# 88| r88_1(glval) = VariableAddress[x23] : -# 88| mu88_2(String) = Uninitialized[x23] : &:r88_1 -# 88| r88_3(glval) = FunctionAddress[String] : -# 88| v88_4(void) = Call[String] : func:r88_3, this:r88_1 -# 88| mu88_5(unknown) = ^CallSideEffect : ~m? -# 88| mu88_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r88_1 -# 89| r89_1(glval) = VariableAddress[x23] : -# 89| r89_2(glval) = FunctionAddress[~String] : -# 89| v89_3(void) = Call[~String] : func:r89_2, this:r89_1 -# 89| mu89_4(unknown) = ^CallSideEffect : ~m? -# 89| v89_5(void) = ^IndirectReadSideEffect[-1] : &:r89_1, ~m? -# 89| mu89_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r89_1 -# 89| r89_7(bool) = Constant[0] : -# 89| v89_8(void) = ConditionalBranch : r89_7 +# 35| Block 23 +# 35| r35_323(glval) = VariableAddress[x23] : +# 35| mu35_324(String) = Uninitialized[x23] : &:r35_323 +# 35| r35_325(glval) = FunctionAddress[String] : +# 35| v35_326(void) = Call[String] : func:r35_325, this:r35_323 +# 35| mu35_327(unknown) = ^CallSideEffect : ~m? +# 35| mu35_328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_323 +# 35| r35_329(glval) = VariableAddress[x23] : +# 35| r35_330(glval) = FunctionAddress[~String] : +# 35| v35_331(void) = Call[~String] : func:r35_330, this:r35_329 +# 35| mu35_332(unknown) = ^CallSideEffect : ~m? +# 35| v35_333(void) = ^IndirectReadSideEffect[-1] : &:r35_329, ~m? +# 35| mu35_334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_329 +# 35| r35_335(bool) = Constant[0] : +# 35| v35_336(void) = ConditionalBranch : r35_335 #-----| False -> Block 24 #-----| True -> Block 1026 -# 91| Block 24 -# 91| r91_1(glval) = VariableAddress[x24] : -# 91| mu91_2(String) = Uninitialized[x24] : &:r91_1 -# 91| r91_3(glval) = FunctionAddress[String] : -# 91| v91_4(void) = Call[String] : func:r91_3, this:r91_1 -# 91| mu91_5(unknown) = ^CallSideEffect : ~m? -# 91| mu91_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r91_1 -# 92| r92_1(glval) = VariableAddress[x24] : -# 92| r92_2(glval) = FunctionAddress[~String] : -# 92| v92_3(void) = Call[~String] : func:r92_2, this:r92_1 -# 92| mu92_4(unknown) = ^CallSideEffect : ~m? -# 92| v92_5(void) = ^IndirectReadSideEffect[-1] : &:r92_1, ~m? -# 92| mu92_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r92_1 -# 92| r92_7(bool) = Constant[0] : -# 92| v92_8(void) = ConditionalBranch : r92_7 +# 35| Block 24 +# 35| r35_337(glval) = VariableAddress[x24] : +# 35| mu35_338(String) = Uninitialized[x24] : &:r35_337 +# 35| r35_339(glval) = FunctionAddress[String] : +# 35| v35_340(void) = Call[String] : func:r35_339, this:r35_337 +# 35| mu35_341(unknown) = ^CallSideEffect : ~m? +# 35| mu35_342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_337 +# 35| r35_343(glval) = VariableAddress[x24] : +# 35| r35_344(glval) = FunctionAddress[~String] : +# 35| v35_345(void) = Call[~String] : func:r35_344, this:r35_343 +# 35| mu35_346(unknown) = ^CallSideEffect : ~m? +# 35| v35_347(void) = ^IndirectReadSideEffect[-1] : &:r35_343, ~m? +# 35| mu35_348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_343 +# 35| r35_349(bool) = Constant[0] : +# 35| v35_350(void) = ConditionalBranch : r35_349 #-----| False -> Block 25 #-----| True -> Block 1026 -# 94| Block 25 -# 94| r94_1(glval) = VariableAddress[x25] : -# 94| mu94_2(String) = Uninitialized[x25] : &:r94_1 -# 94| r94_3(glval) = FunctionAddress[String] : -# 94| v94_4(void) = Call[String] : func:r94_3, this:r94_1 -# 94| mu94_5(unknown) = ^CallSideEffect : ~m? -# 94| mu94_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r94_1 -# 95| r95_1(glval) = VariableAddress[x25] : -# 95| r95_2(glval) = FunctionAddress[~String] : -# 95| v95_3(void) = Call[~String] : func:r95_2, this:r95_1 -# 95| mu95_4(unknown) = ^CallSideEffect : ~m? -# 95| v95_5(void) = ^IndirectReadSideEffect[-1] : &:r95_1, ~m? -# 95| mu95_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r95_1 -# 95| r95_7(bool) = Constant[0] : -# 95| v95_8(void) = ConditionalBranch : r95_7 +# 35| Block 25 +# 35| r35_351(glval) = VariableAddress[x25] : +# 35| mu35_352(String) = Uninitialized[x25] : &:r35_351 +# 35| r35_353(glval) = FunctionAddress[String] : +# 35| v35_354(void) = Call[String] : func:r35_353, this:r35_351 +# 35| mu35_355(unknown) = ^CallSideEffect : ~m? +# 35| mu35_356(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_351 +# 35| r35_357(glval) = VariableAddress[x25] : +# 35| r35_358(glval) = FunctionAddress[~String] : +# 35| v35_359(void) = Call[~String] : func:r35_358, this:r35_357 +# 35| mu35_360(unknown) = ^CallSideEffect : ~m? +# 35| v35_361(void) = ^IndirectReadSideEffect[-1] : &:r35_357, ~m? +# 35| mu35_362(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_357 +# 35| r35_363(bool) = Constant[0] : +# 35| v35_364(void) = ConditionalBranch : r35_363 #-----| False -> Block 26 #-----| True -> Block 1026 -# 97| Block 26 -# 97| r97_1(glval) = VariableAddress[x26] : -# 97| mu97_2(String) = Uninitialized[x26] : &:r97_1 -# 97| r97_3(glval) = FunctionAddress[String] : -# 97| v97_4(void) = Call[String] : func:r97_3, this:r97_1 -# 97| mu97_5(unknown) = ^CallSideEffect : ~m? -# 97| mu97_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r97_1 -# 98| r98_1(glval) = VariableAddress[x26] : -# 98| r98_2(glval) = FunctionAddress[~String] : -# 98| v98_3(void) = Call[~String] : func:r98_2, this:r98_1 -# 98| mu98_4(unknown) = ^CallSideEffect : ~m? -# 98| v98_5(void) = ^IndirectReadSideEffect[-1] : &:r98_1, ~m? -# 98| mu98_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r98_1 -# 98| r98_7(bool) = Constant[0] : -# 98| v98_8(void) = ConditionalBranch : r98_7 +# 35| Block 26 +# 35| r35_365(glval) = VariableAddress[x26] : +# 35| mu35_366(String) = Uninitialized[x26] : &:r35_365 +# 35| r35_367(glval) = FunctionAddress[String] : +# 35| v35_368(void) = Call[String] : func:r35_367, this:r35_365 +# 35| mu35_369(unknown) = ^CallSideEffect : ~m? +# 35| mu35_370(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_365 +# 35| r35_371(glval) = VariableAddress[x26] : +# 35| r35_372(glval) = FunctionAddress[~String] : +# 35| v35_373(void) = Call[~String] : func:r35_372, this:r35_371 +# 35| mu35_374(unknown) = ^CallSideEffect : ~m? +# 35| v35_375(void) = ^IndirectReadSideEffect[-1] : &:r35_371, ~m? +# 35| mu35_376(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_371 +# 35| r35_377(bool) = Constant[0] : +# 35| v35_378(void) = ConditionalBranch : r35_377 #-----| False -> Block 27 #-----| True -> Block 1026 -# 100| Block 27 -# 100| r100_1(glval) = VariableAddress[x27] : -# 100| mu100_2(String) = Uninitialized[x27] : &:r100_1 -# 100| r100_3(glval) = FunctionAddress[String] : -# 100| v100_4(void) = Call[String] : func:r100_3, this:r100_1 -# 100| mu100_5(unknown) = ^CallSideEffect : ~m? -# 100| mu100_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 -# 101| r101_1(glval) = VariableAddress[x27] : -# 101| r101_2(glval) = FunctionAddress[~String] : -# 101| v101_3(void) = Call[~String] : func:r101_2, this:r101_1 -# 101| mu101_4(unknown) = ^CallSideEffect : ~m? -# 101| v101_5(void) = ^IndirectReadSideEffect[-1] : &:r101_1, ~m? -# 101| mu101_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r101_1 -# 101| r101_7(bool) = Constant[0] : -# 101| v101_8(void) = ConditionalBranch : r101_7 +# 35| Block 27 +# 35| r35_379(glval) = VariableAddress[x27] : +# 35| mu35_380(String) = Uninitialized[x27] : &:r35_379 +# 35| r35_381(glval) = FunctionAddress[String] : +# 35| v35_382(void) = Call[String] : func:r35_381, this:r35_379 +# 35| mu35_383(unknown) = ^CallSideEffect : ~m? +# 35| mu35_384(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_379 +# 35| r35_385(glval) = VariableAddress[x27] : +# 35| r35_386(glval) = FunctionAddress[~String] : +# 35| v35_387(void) = Call[~String] : func:r35_386, this:r35_385 +# 35| mu35_388(unknown) = ^CallSideEffect : ~m? +# 35| v35_389(void) = ^IndirectReadSideEffect[-1] : &:r35_385, ~m? +# 35| mu35_390(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_385 +# 35| r35_391(bool) = Constant[0] : +# 35| v35_392(void) = ConditionalBranch : r35_391 #-----| False -> Block 28 #-----| True -> Block 1026 -# 103| Block 28 -# 103| r103_1(glval) = VariableAddress[x28] : -# 103| mu103_2(String) = Uninitialized[x28] : &:r103_1 -# 103| r103_3(glval) = FunctionAddress[String] : -# 103| v103_4(void) = Call[String] : func:r103_3, this:r103_1 -# 103| mu103_5(unknown) = ^CallSideEffect : ~m? -# 103| mu103_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r103_1 -# 104| r104_1(glval) = VariableAddress[x28] : -# 104| r104_2(glval) = FunctionAddress[~String] : -# 104| v104_3(void) = Call[~String] : func:r104_2, this:r104_1 -# 104| mu104_4(unknown) = ^CallSideEffect : ~m? -# 104| v104_5(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m? -# 104| mu104_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 -# 104| r104_7(bool) = Constant[0] : -# 104| v104_8(void) = ConditionalBranch : r104_7 +# 35| Block 28 +# 35| r35_393(glval) = VariableAddress[x28] : +# 35| mu35_394(String) = Uninitialized[x28] : &:r35_393 +# 35| r35_395(glval) = FunctionAddress[String] : +# 35| v35_396(void) = Call[String] : func:r35_395, this:r35_393 +# 35| mu35_397(unknown) = ^CallSideEffect : ~m? +# 35| mu35_398(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_393 +# 35| r35_399(glval) = VariableAddress[x28] : +# 35| r35_400(glval) = FunctionAddress[~String] : +# 35| v35_401(void) = Call[~String] : func:r35_400, this:r35_399 +# 35| mu35_402(unknown) = ^CallSideEffect : ~m? +# 35| v35_403(void) = ^IndirectReadSideEffect[-1] : &:r35_399, ~m? +# 35| mu35_404(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_399 +# 35| r35_405(bool) = Constant[0] : +# 35| v35_406(void) = ConditionalBranch : r35_405 #-----| False -> Block 29 #-----| True -> Block 1026 -# 106| Block 29 -# 106| r106_1(glval) = VariableAddress[x29] : -# 106| mu106_2(String) = Uninitialized[x29] : &:r106_1 -# 106| r106_3(glval) = FunctionAddress[String] : -# 106| v106_4(void) = Call[String] : func:r106_3, this:r106_1 -# 106| mu106_5(unknown) = ^CallSideEffect : ~m? -# 106| mu106_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r106_1 -# 107| r107_1(glval) = VariableAddress[x29] : -# 107| r107_2(glval) = FunctionAddress[~String] : -# 107| v107_3(void) = Call[~String] : func:r107_2, this:r107_1 -# 107| mu107_4(unknown) = ^CallSideEffect : ~m? -# 107| v107_5(void) = ^IndirectReadSideEffect[-1] : &:r107_1, ~m? -# 107| mu107_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r107_1 -# 107| r107_7(bool) = Constant[0] : -# 107| v107_8(void) = ConditionalBranch : r107_7 +# 35| Block 29 +# 35| r35_407(glval) = VariableAddress[x29] : +# 35| mu35_408(String) = Uninitialized[x29] : &:r35_407 +# 35| r35_409(glval) = FunctionAddress[String] : +# 35| v35_410(void) = Call[String] : func:r35_409, this:r35_407 +# 35| mu35_411(unknown) = ^CallSideEffect : ~m? +# 35| mu35_412(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_407 +# 35| r35_413(glval) = VariableAddress[x29] : +# 35| r35_414(glval) = FunctionAddress[~String] : +# 35| v35_415(void) = Call[~String] : func:r35_414, this:r35_413 +# 35| mu35_416(unknown) = ^CallSideEffect : ~m? +# 35| v35_417(void) = ^IndirectReadSideEffect[-1] : &:r35_413, ~m? +# 35| mu35_418(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_413 +# 35| r35_419(bool) = Constant[0] : +# 35| v35_420(void) = ConditionalBranch : r35_419 #-----| False -> Block 30 #-----| True -> Block 1026 -# 109| Block 30 -# 109| r109_1(glval) = VariableAddress[x30] : -# 109| mu109_2(String) = Uninitialized[x30] : &:r109_1 -# 109| r109_3(glval) = FunctionAddress[String] : -# 109| v109_4(void) = Call[String] : func:r109_3, this:r109_1 -# 109| mu109_5(unknown) = ^CallSideEffect : ~m? -# 109| mu109_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 -# 110| r110_1(glval) = VariableAddress[x30] : -# 110| r110_2(glval) = FunctionAddress[~String] : -# 110| v110_3(void) = Call[~String] : func:r110_2, this:r110_1 -# 110| mu110_4(unknown) = ^CallSideEffect : ~m? -# 110| v110_5(void) = ^IndirectReadSideEffect[-1] : &:r110_1, ~m? -# 110| mu110_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r110_1 -# 110| r110_7(bool) = Constant[0] : -# 110| v110_8(void) = ConditionalBranch : r110_7 +# 35| Block 30 +# 35| r35_421(glval) = VariableAddress[x30] : +# 35| mu35_422(String) = Uninitialized[x30] : &:r35_421 +# 35| r35_423(glval) = FunctionAddress[String] : +# 35| v35_424(void) = Call[String] : func:r35_423, this:r35_421 +# 35| mu35_425(unknown) = ^CallSideEffect : ~m? +# 35| mu35_426(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_421 +# 35| r35_427(glval) = VariableAddress[x30] : +# 35| r35_428(glval) = FunctionAddress[~String] : +# 35| v35_429(void) = Call[~String] : func:r35_428, this:r35_427 +# 35| mu35_430(unknown) = ^CallSideEffect : ~m? +# 35| v35_431(void) = ^IndirectReadSideEffect[-1] : &:r35_427, ~m? +# 35| mu35_432(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_427 +# 35| r35_433(bool) = Constant[0] : +# 35| v35_434(void) = ConditionalBranch : r35_433 #-----| False -> Block 31 #-----| True -> Block 1026 -# 112| Block 31 -# 112| r112_1(glval) = VariableAddress[x31] : -# 112| mu112_2(String) = Uninitialized[x31] : &:r112_1 -# 112| r112_3(glval) = FunctionAddress[String] : -# 112| v112_4(void) = Call[String] : func:r112_3, this:r112_1 -# 112| mu112_5(unknown) = ^CallSideEffect : ~m? -# 112| mu112_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r112_1 -# 113| r113_1(glval) = VariableAddress[x31] : -# 113| r113_2(glval) = FunctionAddress[~String] : -# 113| v113_3(void) = Call[~String] : func:r113_2, this:r113_1 -# 113| mu113_4(unknown) = ^CallSideEffect : ~m? -# 113| v113_5(void) = ^IndirectReadSideEffect[-1] : &:r113_1, ~m? -# 113| mu113_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r113_1 -# 113| r113_7(bool) = Constant[0] : -# 113| v113_8(void) = ConditionalBranch : r113_7 +# 35| Block 31 +# 35| r35_435(glval) = VariableAddress[x31] : +# 35| mu35_436(String) = Uninitialized[x31] : &:r35_435 +# 35| r35_437(glval) = FunctionAddress[String] : +# 35| v35_438(void) = Call[String] : func:r35_437, this:r35_435 +# 35| mu35_439(unknown) = ^CallSideEffect : ~m? +# 35| mu35_440(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_435 +# 35| r35_441(glval) = VariableAddress[x31] : +# 35| r35_442(glval) = FunctionAddress[~String] : +# 35| v35_443(void) = Call[~String] : func:r35_442, this:r35_441 +# 35| mu35_444(unknown) = ^CallSideEffect : ~m? +# 35| v35_445(void) = ^IndirectReadSideEffect[-1] : &:r35_441, ~m? +# 35| mu35_446(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_441 +# 35| r35_447(bool) = Constant[0] : +# 35| v35_448(void) = ConditionalBranch : r35_447 #-----| False -> Block 32 #-----| True -> Block 1026 -# 115| Block 32 -# 115| r115_1(glval) = VariableAddress[x32] : -# 115| mu115_2(String) = Uninitialized[x32] : &:r115_1 -# 115| r115_3(glval) = FunctionAddress[String] : -# 115| v115_4(void) = Call[String] : func:r115_3, this:r115_1 -# 115| mu115_5(unknown) = ^CallSideEffect : ~m? -# 115| mu115_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r115_1 -# 116| r116_1(glval) = VariableAddress[x32] : -# 116| r116_2(glval) = FunctionAddress[~String] : -# 116| v116_3(void) = Call[~String] : func:r116_2, this:r116_1 -# 116| mu116_4(unknown) = ^CallSideEffect : ~m? -# 116| v116_5(void) = ^IndirectReadSideEffect[-1] : &:r116_1, ~m? -# 116| mu116_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r116_1 -# 116| r116_7(bool) = Constant[0] : -# 116| v116_8(void) = ConditionalBranch : r116_7 +# 35| Block 32 +# 35| r35_449(glval) = VariableAddress[x32] : +# 35| mu35_450(String) = Uninitialized[x32] : &:r35_449 +# 35| r35_451(glval) = FunctionAddress[String] : +# 35| v35_452(void) = Call[String] : func:r35_451, this:r35_449 +# 35| mu35_453(unknown) = ^CallSideEffect : ~m? +# 35| mu35_454(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_449 +# 35| r35_455(glval) = VariableAddress[x32] : +# 35| r35_456(glval) = FunctionAddress[~String] : +# 35| v35_457(void) = Call[~String] : func:r35_456, this:r35_455 +# 35| mu35_458(unknown) = ^CallSideEffect : ~m? +# 35| v35_459(void) = ^IndirectReadSideEffect[-1] : &:r35_455, ~m? +# 35| mu35_460(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_455 +# 35| r35_461(bool) = Constant[0] : +# 35| v35_462(void) = ConditionalBranch : r35_461 #-----| False -> Block 33 #-----| True -> Block 1026 -# 118| Block 33 -# 118| r118_1(glval) = VariableAddress[x33] : -# 118| mu118_2(String) = Uninitialized[x33] : &:r118_1 -# 118| r118_3(glval) = FunctionAddress[String] : -# 118| v118_4(void) = Call[String] : func:r118_3, this:r118_1 -# 118| mu118_5(unknown) = ^CallSideEffect : ~m? -# 118| mu118_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r118_1 -# 119| r119_1(glval) = VariableAddress[x33] : -# 119| r119_2(glval) = FunctionAddress[~String] : -# 119| v119_3(void) = Call[~String] : func:r119_2, this:r119_1 -# 119| mu119_4(unknown) = ^CallSideEffect : ~m? -# 119| v119_5(void) = ^IndirectReadSideEffect[-1] : &:r119_1, ~m? -# 119| mu119_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r119_1 -# 119| r119_7(bool) = Constant[0] : -# 119| v119_8(void) = ConditionalBranch : r119_7 +# 35| Block 33 +# 35| r35_463(glval) = VariableAddress[x33] : +# 35| mu35_464(String) = Uninitialized[x33] : &:r35_463 +# 35| r35_465(glval) = FunctionAddress[String] : +# 35| v35_466(void) = Call[String] : func:r35_465, this:r35_463 +# 35| mu35_467(unknown) = ^CallSideEffect : ~m? +# 35| mu35_468(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_463 +# 35| r35_469(glval) = VariableAddress[x33] : +# 35| r35_470(glval) = FunctionAddress[~String] : +# 35| v35_471(void) = Call[~String] : func:r35_470, this:r35_469 +# 35| mu35_472(unknown) = ^CallSideEffect : ~m? +# 35| v35_473(void) = ^IndirectReadSideEffect[-1] : &:r35_469, ~m? +# 35| mu35_474(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_469 +# 35| r35_475(bool) = Constant[0] : +# 35| v35_476(void) = ConditionalBranch : r35_475 #-----| False -> Block 34 #-----| True -> Block 1026 -# 121| Block 34 -# 121| r121_1(glval) = VariableAddress[x34] : -# 121| mu121_2(String) = Uninitialized[x34] : &:r121_1 -# 121| r121_3(glval) = FunctionAddress[String] : -# 121| v121_4(void) = Call[String] : func:r121_3, this:r121_1 -# 121| mu121_5(unknown) = ^CallSideEffect : ~m? -# 121| mu121_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r121_1 -# 122| r122_1(glval) = VariableAddress[x34] : -# 122| r122_2(glval) = FunctionAddress[~String] : -# 122| v122_3(void) = Call[~String] : func:r122_2, this:r122_1 -# 122| mu122_4(unknown) = ^CallSideEffect : ~m? -# 122| v122_5(void) = ^IndirectReadSideEffect[-1] : &:r122_1, ~m? -# 122| mu122_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r122_1 -# 122| r122_7(bool) = Constant[0] : -# 122| v122_8(void) = ConditionalBranch : r122_7 +# 35| Block 34 +# 35| r35_477(glval) = VariableAddress[x34] : +# 35| mu35_478(String) = Uninitialized[x34] : &:r35_477 +# 35| r35_479(glval) = FunctionAddress[String] : +# 35| v35_480(void) = Call[String] : func:r35_479, this:r35_477 +# 35| mu35_481(unknown) = ^CallSideEffect : ~m? +# 35| mu35_482(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_477 +# 35| r35_483(glval) = VariableAddress[x34] : +# 35| r35_484(glval) = FunctionAddress[~String] : +# 35| v35_485(void) = Call[~String] : func:r35_484, this:r35_483 +# 35| mu35_486(unknown) = ^CallSideEffect : ~m? +# 35| v35_487(void) = ^IndirectReadSideEffect[-1] : &:r35_483, ~m? +# 35| mu35_488(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_483 +# 35| r35_489(bool) = Constant[0] : +# 35| v35_490(void) = ConditionalBranch : r35_489 #-----| False -> Block 35 #-----| True -> Block 1026 -# 124| Block 35 -# 124| r124_1(glval) = VariableAddress[x35] : -# 124| mu124_2(String) = Uninitialized[x35] : &:r124_1 -# 124| r124_3(glval) = FunctionAddress[String] : -# 124| v124_4(void) = Call[String] : func:r124_3, this:r124_1 -# 124| mu124_5(unknown) = ^CallSideEffect : ~m? -# 124| mu124_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r124_1 -# 125| r125_1(glval) = VariableAddress[x35] : -# 125| r125_2(glval) = FunctionAddress[~String] : -# 125| v125_3(void) = Call[~String] : func:r125_2, this:r125_1 -# 125| mu125_4(unknown) = ^CallSideEffect : ~m? -# 125| v125_5(void) = ^IndirectReadSideEffect[-1] : &:r125_1, ~m? -# 125| mu125_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r125_1 -# 125| r125_7(bool) = Constant[0] : -# 125| v125_8(void) = ConditionalBranch : r125_7 +# 35| Block 35 +# 35| r35_491(glval) = VariableAddress[x35] : +# 35| mu35_492(String) = Uninitialized[x35] : &:r35_491 +# 35| r35_493(glval) = FunctionAddress[String] : +# 35| v35_494(void) = Call[String] : func:r35_493, this:r35_491 +# 35| mu35_495(unknown) = ^CallSideEffect : ~m? +# 35| mu35_496(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_491 +# 35| r35_497(glval) = VariableAddress[x35] : +# 35| r35_498(glval) = FunctionAddress[~String] : +# 35| v35_499(void) = Call[~String] : func:r35_498, this:r35_497 +# 35| mu35_500(unknown) = ^CallSideEffect : ~m? +# 35| v35_501(void) = ^IndirectReadSideEffect[-1] : &:r35_497, ~m? +# 35| mu35_502(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_497 +# 35| r35_503(bool) = Constant[0] : +# 35| v35_504(void) = ConditionalBranch : r35_503 #-----| False -> Block 36 #-----| True -> Block 1026 -# 127| Block 36 -# 127| r127_1(glval) = VariableAddress[x36] : -# 127| mu127_2(String) = Uninitialized[x36] : &:r127_1 -# 127| r127_3(glval) = FunctionAddress[String] : -# 127| v127_4(void) = Call[String] : func:r127_3, this:r127_1 -# 127| mu127_5(unknown) = ^CallSideEffect : ~m? -# 127| mu127_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r127_1 -# 128| r128_1(glval) = VariableAddress[x36] : -# 128| r128_2(glval) = FunctionAddress[~String] : -# 128| v128_3(void) = Call[~String] : func:r128_2, this:r128_1 -# 128| mu128_4(unknown) = ^CallSideEffect : ~m? -# 128| v128_5(void) = ^IndirectReadSideEffect[-1] : &:r128_1, ~m? -# 128| mu128_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r128_1 -# 128| r128_7(bool) = Constant[0] : -# 128| v128_8(void) = ConditionalBranch : r128_7 +# 35| Block 36 +# 35| r35_505(glval) = VariableAddress[x36] : +# 35| mu35_506(String) = Uninitialized[x36] : &:r35_505 +# 35| r35_507(glval) = FunctionAddress[String] : +# 35| v35_508(void) = Call[String] : func:r35_507, this:r35_505 +# 35| mu35_509(unknown) = ^CallSideEffect : ~m? +# 35| mu35_510(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_505 +# 35| r35_511(glval) = VariableAddress[x36] : +# 35| r35_512(glval) = FunctionAddress[~String] : +# 35| v35_513(void) = Call[~String] : func:r35_512, this:r35_511 +# 35| mu35_514(unknown) = ^CallSideEffect : ~m? +# 35| v35_515(void) = ^IndirectReadSideEffect[-1] : &:r35_511, ~m? +# 35| mu35_516(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_511 +# 35| r35_517(bool) = Constant[0] : +# 35| v35_518(void) = ConditionalBranch : r35_517 #-----| False -> Block 37 #-----| True -> Block 1026 -# 130| Block 37 -# 130| r130_1(glval) = VariableAddress[x37] : -# 130| mu130_2(String) = Uninitialized[x37] : &:r130_1 -# 130| r130_3(glval) = FunctionAddress[String] : -# 130| v130_4(void) = Call[String] : func:r130_3, this:r130_1 -# 130| mu130_5(unknown) = ^CallSideEffect : ~m? -# 130| mu130_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r130_1 -# 131| r131_1(glval) = VariableAddress[x37] : -# 131| r131_2(glval) = FunctionAddress[~String] : -# 131| v131_3(void) = Call[~String] : func:r131_2, this:r131_1 -# 131| mu131_4(unknown) = ^CallSideEffect : ~m? -# 131| v131_5(void) = ^IndirectReadSideEffect[-1] : &:r131_1, ~m? -# 131| mu131_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r131_1 -# 131| r131_7(bool) = Constant[0] : -# 131| v131_8(void) = ConditionalBranch : r131_7 +# 35| Block 37 +# 35| r35_519(glval) = VariableAddress[x37] : +# 35| mu35_520(String) = Uninitialized[x37] : &:r35_519 +# 35| r35_521(glval) = FunctionAddress[String] : +# 35| v35_522(void) = Call[String] : func:r35_521, this:r35_519 +# 35| mu35_523(unknown) = ^CallSideEffect : ~m? +# 35| mu35_524(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_519 +# 35| r35_525(glval) = VariableAddress[x37] : +# 35| r35_526(glval) = FunctionAddress[~String] : +# 35| v35_527(void) = Call[~String] : func:r35_526, this:r35_525 +# 35| mu35_528(unknown) = ^CallSideEffect : ~m? +# 35| v35_529(void) = ^IndirectReadSideEffect[-1] : &:r35_525, ~m? +# 35| mu35_530(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_525 +# 35| r35_531(bool) = Constant[0] : +# 35| v35_532(void) = ConditionalBranch : r35_531 #-----| False -> Block 38 #-----| True -> Block 1026 -# 133| Block 38 -# 133| r133_1(glval) = VariableAddress[x38] : -# 133| mu133_2(String) = Uninitialized[x38] : &:r133_1 -# 133| r133_3(glval) = FunctionAddress[String] : -# 133| v133_4(void) = Call[String] : func:r133_3, this:r133_1 -# 133| mu133_5(unknown) = ^CallSideEffect : ~m? -# 133| mu133_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r133_1 -# 134| r134_1(glval) = VariableAddress[x38] : -# 134| r134_2(glval) = FunctionAddress[~String] : -# 134| v134_3(void) = Call[~String] : func:r134_2, this:r134_1 -# 134| mu134_4(unknown) = ^CallSideEffect : ~m? -# 134| v134_5(void) = ^IndirectReadSideEffect[-1] : &:r134_1, ~m? -# 134| mu134_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r134_1 -# 134| r134_7(bool) = Constant[0] : -# 134| v134_8(void) = ConditionalBranch : r134_7 +# 35| Block 38 +# 35| r35_533(glval) = VariableAddress[x38] : +# 35| mu35_534(String) = Uninitialized[x38] : &:r35_533 +# 35| r35_535(glval) = FunctionAddress[String] : +# 35| v35_536(void) = Call[String] : func:r35_535, this:r35_533 +# 35| mu35_537(unknown) = ^CallSideEffect : ~m? +# 35| mu35_538(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_533 +# 35| r35_539(glval) = VariableAddress[x38] : +# 35| r35_540(glval) = FunctionAddress[~String] : +# 35| v35_541(void) = Call[~String] : func:r35_540, this:r35_539 +# 35| mu35_542(unknown) = ^CallSideEffect : ~m? +# 35| v35_543(void) = ^IndirectReadSideEffect[-1] : &:r35_539, ~m? +# 35| mu35_544(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_539 +# 35| r35_545(bool) = Constant[0] : +# 35| v35_546(void) = ConditionalBranch : r35_545 #-----| False -> Block 39 #-----| True -> Block 1026 -# 136| Block 39 -# 136| r136_1(glval) = VariableAddress[x39] : -# 136| mu136_2(String) = Uninitialized[x39] : &:r136_1 -# 136| r136_3(glval) = FunctionAddress[String] : -# 136| v136_4(void) = Call[String] : func:r136_3, this:r136_1 -# 136| mu136_5(unknown) = ^CallSideEffect : ~m? -# 136| mu136_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r136_1 -# 137| r137_1(glval) = VariableAddress[x39] : -# 137| r137_2(glval) = FunctionAddress[~String] : -# 137| v137_3(void) = Call[~String] : func:r137_2, this:r137_1 -# 137| mu137_4(unknown) = ^CallSideEffect : ~m? -# 137| v137_5(void) = ^IndirectReadSideEffect[-1] : &:r137_1, ~m? -# 137| mu137_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r137_1 -# 137| r137_7(bool) = Constant[0] : -# 137| v137_8(void) = ConditionalBranch : r137_7 +# 35| Block 39 +# 35| r35_547(glval) = VariableAddress[x39] : +# 35| mu35_548(String) = Uninitialized[x39] : &:r35_547 +# 35| r35_549(glval) = FunctionAddress[String] : +# 35| v35_550(void) = Call[String] : func:r35_549, this:r35_547 +# 35| mu35_551(unknown) = ^CallSideEffect : ~m? +# 35| mu35_552(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_547 +# 35| r35_553(glval) = VariableAddress[x39] : +# 35| r35_554(glval) = FunctionAddress[~String] : +# 35| v35_555(void) = Call[~String] : func:r35_554, this:r35_553 +# 35| mu35_556(unknown) = ^CallSideEffect : ~m? +# 35| v35_557(void) = ^IndirectReadSideEffect[-1] : &:r35_553, ~m? +# 35| mu35_558(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_553 +# 35| r35_559(bool) = Constant[0] : +# 35| v35_560(void) = ConditionalBranch : r35_559 #-----| False -> Block 40 #-----| True -> Block 1026 -# 139| Block 40 -# 139| r139_1(glval) = VariableAddress[x40] : -# 139| mu139_2(String) = Uninitialized[x40] : &:r139_1 -# 139| r139_3(glval) = FunctionAddress[String] : -# 139| v139_4(void) = Call[String] : func:r139_3, this:r139_1 -# 139| mu139_5(unknown) = ^CallSideEffect : ~m? -# 139| mu139_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r139_1 -# 140| r140_1(glval) = VariableAddress[x40] : -# 140| r140_2(glval) = FunctionAddress[~String] : -# 140| v140_3(void) = Call[~String] : func:r140_2, this:r140_1 -# 140| mu140_4(unknown) = ^CallSideEffect : ~m? -# 140| v140_5(void) = ^IndirectReadSideEffect[-1] : &:r140_1, ~m? -# 140| mu140_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r140_1 -# 140| r140_7(bool) = Constant[0] : -# 140| v140_8(void) = ConditionalBranch : r140_7 +# 35| Block 40 +# 35| r35_561(glval) = VariableAddress[x40] : +# 35| mu35_562(String) = Uninitialized[x40] : &:r35_561 +# 35| r35_563(glval) = FunctionAddress[String] : +# 35| v35_564(void) = Call[String] : func:r35_563, this:r35_561 +# 35| mu35_565(unknown) = ^CallSideEffect : ~m? +# 35| mu35_566(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_561 +# 35| r35_567(glval) = VariableAddress[x40] : +# 35| r35_568(glval) = FunctionAddress[~String] : +# 35| v35_569(void) = Call[~String] : func:r35_568, this:r35_567 +# 35| mu35_570(unknown) = ^CallSideEffect : ~m? +# 35| v35_571(void) = ^IndirectReadSideEffect[-1] : &:r35_567, ~m? +# 35| mu35_572(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_567 +# 35| r35_573(bool) = Constant[0] : +# 35| v35_574(void) = ConditionalBranch : r35_573 #-----| False -> Block 41 #-----| True -> Block 1026 -# 142| Block 41 -# 142| r142_1(glval) = VariableAddress[x41] : -# 142| mu142_2(String) = Uninitialized[x41] : &:r142_1 -# 142| r142_3(glval) = FunctionAddress[String] : -# 142| v142_4(void) = Call[String] : func:r142_3, this:r142_1 -# 142| mu142_5(unknown) = ^CallSideEffect : ~m? -# 142| mu142_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r142_1 -# 143| r143_1(glval) = VariableAddress[x41] : -# 143| r143_2(glval) = FunctionAddress[~String] : -# 143| v143_3(void) = Call[~String] : func:r143_2, this:r143_1 -# 143| mu143_4(unknown) = ^CallSideEffect : ~m? -# 143| v143_5(void) = ^IndirectReadSideEffect[-1] : &:r143_1, ~m? -# 143| mu143_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r143_1 -# 143| r143_7(bool) = Constant[0] : -# 143| v143_8(void) = ConditionalBranch : r143_7 +# 35| Block 41 +# 35| r35_575(glval) = VariableAddress[x41] : +# 35| mu35_576(String) = Uninitialized[x41] : &:r35_575 +# 35| r35_577(glval) = FunctionAddress[String] : +# 35| v35_578(void) = Call[String] : func:r35_577, this:r35_575 +# 35| mu35_579(unknown) = ^CallSideEffect : ~m? +# 35| mu35_580(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_575 +# 35| r35_581(glval) = VariableAddress[x41] : +# 35| r35_582(glval) = FunctionAddress[~String] : +# 35| v35_583(void) = Call[~String] : func:r35_582, this:r35_581 +# 35| mu35_584(unknown) = ^CallSideEffect : ~m? +# 35| v35_585(void) = ^IndirectReadSideEffect[-1] : &:r35_581, ~m? +# 35| mu35_586(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_581 +# 35| r35_587(bool) = Constant[0] : +# 35| v35_588(void) = ConditionalBranch : r35_587 #-----| False -> Block 42 #-----| True -> Block 1026 -# 145| Block 42 -# 145| r145_1(glval) = VariableAddress[x42] : -# 145| mu145_2(String) = Uninitialized[x42] : &:r145_1 -# 145| r145_3(glval) = FunctionAddress[String] : -# 145| v145_4(void) = Call[String] : func:r145_3, this:r145_1 -# 145| mu145_5(unknown) = ^CallSideEffect : ~m? -# 145| mu145_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r145_1 -# 146| r146_1(glval) = VariableAddress[x42] : -# 146| r146_2(glval) = FunctionAddress[~String] : -# 146| v146_3(void) = Call[~String] : func:r146_2, this:r146_1 -# 146| mu146_4(unknown) = ^CallSideEffect : ~m? -# 146| v146_5(void) = ^IndirectReadSideEffect[-1] : &:r146_1, ~m? -# 146| mu146_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r146_1 -# 146| r146_7(bool) = Constant[0] : -# 146| v146_8(void) = ConditionalBranch : r146_7 +# 35| Block 42 +# 35| r35_589(glval) = VariableAddress[x42] : +# 35| mu35_590(String) = Uninitialized[x42] : &:r35_589 +# 35| r35_591(glval) = FunctionAddress[String] : +# 35| v35_592(void) = Call[String] : func:r35_591, this:r35_589 +# 35| mu35_593(unknown) = ^CallSideEffect : ~m? +# 35| mu35_594(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_589 +# 35| r35_595(glval) = VariableAddress[x42] : +# 35| r35_596(glval) = FunctionAddress[~String] : +# 35| v35_597(void) = Call[~String] : func:r35_596, this:r35_595 +# 35| mu35_598(unknown) = ^CallSideEffect : ~m? +# 35| v35_599(void) = ^IndirectReadSideEffect[-1] : &:r35_595, ~m? +# 35| mu35_600(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_595 +# 35| r35_601(bool) = Constant[0] : +# 35| v35_602(void) = ConditionalBranch : r35_601 #-----| False -> Block 43 #-----| True -> Block 1026 -# 148| Block 43 -# 148| r148_1(glval) = VariableAddress[x43] : -# 148| mu148_2(String) = Uninitialized[x43] : &:r148_1 -# 148| r148_3(glval) = FunctionAddress[String] : -# 148| v148_4(void) = Call[String] : func:r148_3, this:r148_1 -# 148| mu148_5(unknown) = ^CallSideEffect : ~m? -# 148| mu148_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r148_1 -# 149| r149_1(glval) = VariableAddress[x43] : -# 149| r149_2(glval) = FunctionAddress[~String] : -# 149| v149_3(void) = Call[~String] : func:r149_2, this:r149_1 -# 149| mu149_4(unknown) = ^CallSideEffect : ~m? -# 149| v149_5(void) = ^IndirectReadSideEffect[-1] : &:r149_1, ~m? -# 149| mu149_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r149_1 -# 149| r149_7(bool) = Constant[0] : -# 149| v149_8(void) = ConditionalBranch : r149_7 +# 35| Block 43 +# 35| r35_603(glval) = VariableAddress[x43] : +# 35| mu35_604(String) = Uninitialized[x43] : &:r35_603 +# 35| r35_605(glval) = FunctionAddress[String] : +# 35| v35_606(void) = Call[String] : func:r35_605, this:r35_603 +# 35| mu35_607(unknown) = ^CallSideEffect : ~m? +# 35| mu35_608(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_603 +# 35| r35_609(glval) = VariableAddress[x43] : +# 35| r35_610(glval) = FunctionAddress[~String] : +# 35| v35_611(void) = Call[~String] : func:r35_610, this:r35_609 +# 35| mu35_612(unknown) = ^CallSideEffect : ~m? +# 35| v35_613(void) = ^IndirectReadSideEffect[-1] : &:r35_609, ~m? +# 35| mu35_614(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_609 +# 35| r35_615(bool) = Constant[0] : +# 35| v35_616(void) = ConditionalBranch : r35_615 #-----| False -> Block 44 #-----| True -> Block 1026 -# 151| Block 44 -# 151| r151_1(glval) = VariableAddress[x44] : -# 151| mu151_2(String) = Uninitialized[x44] : &:r151_1 -# 151| r151_3(glval) = FunctionAddress[String] : -# 151| v151_4(void) = Call[String] : func:r151_3, this:r151_1 -# 151| mu151_5(unknown) = ^CallSideEffect : ~m? -# 151| mu151_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r151_1 -# 152| r152_1(glval) = VariableAddress[x44] : -# 152| r152_2(glval) = FunctionAddress[~String] : -# 152| v152_3(void) = Call[~String] : func:r152_2, this:r152_1 -# 152| mu152_4(unknown) = ^CallSideEffect : ~m? -# 152| v152_5(void) = ^IndirectReadSideEffect[-1] : &:r152_1, ~m? -# 152| mu152_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r152_1 -# 152| r152_7(bool) = Constant[0] : -# 152| v152_8(void) = ConditionalBranch : r152_7 +# 35| Block 44 +# 35| r35_617(glval) = VariableAddress[x44] : +# 35| mu35_618(String) = Uninitialized[x44] : &:r35_617 +# 35| r35_619(glval) = FunctionAddress[String] : +# 35| v35_620(void) = Call[String] : func:r35_619, this:r35_617 +# 35| mu35_621(unknown) = ^CallSideEffect : ~m? +# 35| mu35_622(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_617 +# 35| r35_623(glval) = VariableAddress[x44] : +# 35| r35_624(glval) = FunctionAddress[~String] : +# 35| v35_625(void) = Call[~String] : func:r35_624, this:r35_623 +# 35| mu35_626(unknown) = ^CallSideEffect : ~m? +# 35| v35_627(void) = ^IndirectReadSideEffect[-1] : &:r35_623, ~m? +# 35| mu35_628(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_623 +# 35| r35_629(bool) = Constant[0] : +# 35| v35_630(void) = ConditionalBranch : r35_629 #-----| False -> Block 45 #-----| True -> Block 1026 -# 154| Block 45 -# 154| r154_1(glval) = VariableAddress[x45] : -# 154| mu154_2(String) = Uninitialized[x45] : &:r154_1 -# 154| r154_3(glval) = FunctionAddress[String] : -# 154| v154_4(void) = Call[String] : func:r154_3, this:r154_1 -# 154| mu154_5(unknown) = ^CallSideEffect : ~m? -# 154| mu154_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r154_1 -# 155| r155_1(glval) = VariableAddress[x45] : -# 155| r155_2(glval) = FunctionAddress[~String] : -# 155| v155_3(void) = Call[~String] : func:r155_2, this:r155_1 -# 155| mu155_4(unknown) = ^CallSideEffect : ~m? -# 155| v155_5(void) = ^IndirectReadSideEffect[-1] : &:r155_1, ~m? -# 155| mu155_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r155_1 -# 155| r155_7(bool) = Constant[0] : -# 155| v155_8(void) = ConditionalBranch : r155_7 +# 35| Block 45 +# 35| r35_631(glval) = VariableAddress[x45] : +# 35| mu35_632(String) = Uninitialized[x45] : &:r35_631 +# 35| r35_633(glval) = FunctionAddress[String] : +# 35| v35_634(void) = Call[String] : func:r35_633, this:r35_631 +# 35| mu35_635(unknown) = ^CallSideEffect : ~m? +# 35| mu35_636(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_631 +# 35| r35_637(glval) = VariableAddress[x45] : +# 35| r35_638(glval) = FunctionAddress[~String] : +# 35| v35_639(void) = Call[~String] : func:r35_638, this:r35_637 +# 35| mu35_640(unknown) = ^CallSideEffect : ~m? +# 35| v35_641(void) = ^IndirectReadSideEffect[-1] : &:r35_637, ~m? +# 35| mu35_642(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_637 +# 35| r35_643(bool) = Constant[0] : +# 35| v35_644(void) = ConditionalBranch : r35_643 #-----| False -> Block 46 #-----| True -> Block 1026 -# 157| Block 46 -# 157| r157_1(glval) = VariableAddress[x46] : -# 157| mu157_2(String) = Uninitialized[x46] : &:r157_1 -# 157| r157_3(glval) = FunctionAddress[String] : -# 157| v157_4(void) = Call[String] : func:r157_3, this:r157_1 -# 157| mu157_5(unknown) = ^CallSideEffect : ~m? -# 157| mu157_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r157_1 -# 158| r158_1(glval) = VariableAddress[x46] : -# 158| r158_2(glval) = FunctionAddress[~String] : -# 158| v158_3(void) = Call[~String] : func:r158_2, this:r158_1 -# 158| mu158_4(unknown) = ^CallSideEffect : ~m? -# 158| v158_5(void) = ^IndirectReadSideEffect[-1] : &:r158_1, ~m? -# 158| mu158_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r158_1 -# 158| r158_7(bool) = Constant[0] : -# 158| v158_8(void) = ConditionalBranch : r158_7 +# 35| Block 46 +# 35| r35_645(glval) = VariableAddress[x46] : +# 35| mu35_646(String) = Uninitialized[x46] : &:r35_645 +# 35| r35_647(glval) = FunctionAddress[String] : +# 35| v35_648(void) = Call[String] : func:r35_647, this:r35_645 +# 35| mu35_649(unknown) = ^CallSideEffect : ~m? +# 35| mu35_650(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_645 +# 35| r35_651(glval) = VariableAddress[x46] : +# 35| r35_652(glval) = FunctionAddress[~String] : +# 35| v35_653(void) = Call[~String] : func:r35_652, this:r35_651 +# 35| mu35_654(unknown) = ^CallSideEffect : ~m? +# 35| v35_655(void) = ^IndirectReadSideEffect[-1] : &:r35_651, ~m? +# 35| mu35_656(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_651 +# 35| r35_657(bool) = Constant[0] : +# 35| v35_658(void) = ConditionalBranch : r35_657 #-----| False -> Block 47 #-----| True -> Block 1026 -# 160| Block 47 -# 160| r160_1(glval) = VariableAddress[x47] : -# 160| mu160_2(String) = Uninitialized[x47] : &:r160_1 -# 160| r160_3(glval) = FunctionAddress[String] : -# 160| v160_4(void) = Call[String] : func:r160_3, this:r160_1 -# 160| mu160_5(unknown) = ^CallSideEffect : ~m? -# 160| mu160_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r160_1 -# 161| r161_1(glval) = VariableAddress[x47] : -# 161| r161_2(glval) = FunctionAddress[~String] : -# 161| v161_3(void) = Call[~String] : func:r161_2, this:r161_1 -# 161| mu161_4(unknown) = ^CallSideEffect : ~m? -# 161| v161_5(void) = ^IndirectReadSideEffect[-1] : &:r161_1, ~m? -# 161| mu161_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r161_1 -# 161| r161_7(bool) = Constant[0] : -# 161| v161_8(void) = ConditionalBranch : r161_7 +# 35| Block 47 +# 35| r35_659(glval) = VariableAddress[x47] : +# 35| mu35_660(String) = Uninitialized[x47] : &:r35_659 +# 35| r35_661(glval) = FunctionAddress[String] : +# 35| v35_662(void) = Call[String] : func:r35_661, this:r35_659 +# 35| mu35_663(unknown) = ^CallSideEffect : ~m? +# 35| mu35_664(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_659 +# 35| r35_665(glval) = VariableAddress[x47] : +# 35| r35_666(glval) = FunctionAddress[~String] : +# 35| v35_667(void) = Call[~String] : func:r35_666, this:r35_665 +# 35| mu35_668(unknown) = ^CallSideEffect : ~m? +# 35| v35_669(void) = ^IndirectReadSideEffect[-1] : &:r35_665, ~m? +# 35| mu35_670(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_665 +# 35| r35_671(bool) = Constant[0] : +# 35| v35_672(void) = ConditionalBranch : r35_671 #-----| False -> Block 48 #-----| True -> Block 1026 -# 163| Block 48 -# 163| r163_1(glval) = VariableAddress[x48] : -# 163| mu163_2(String) = Uninitialized[x48] : &:r163_1 -# 163| r163_3(glval) = FunctionAddress[String] : -# 163| v163_4(void) = Call[String] : func:r163_3, this:r163_1 -# 163| mu163_5(unknown) = ^CallSideEffect : ~m? -# 163| mu163_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r163_1 -# 164| r164_1(glval) = VariableAddress[x48] : -# 164| r164_2(glval) = FunctionAddress[~String] : -# 164| v164_3(void) = Call[~String] : func:r164_2, this:r164_1 -# 164| mu164_4(unknown) = ^CallSideEffect : ~m? -# 164| v164_5(void) = ^IndirectReadSideEffect[-1] : &:r164_1, ~m? -# 164| mu164_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r164_1 -# 164| r164_7(bool) = Constant[0] : -# 164| v164_8(void) = ConditionalBranch : r164_7 +# 35| Block 48 +# 35| r35_673(glval) = VariableAddress[x48] : +# 35| mu35_674(String) = Uninitialized[x48] : &:r35_673 +# 35| r35_675(glval) = FunctionAddress[String] : +# 35| v35_676(void) = Call[String] : func:r35_675, this:r35_673 +# 35| mu35_677(unknown) = ^CallSideEffect : ~m? +# 35| mu35_678(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_673 +# 35| r35_679(glval) = VariableAddress[x48] : +# 35| r35_680(glval) = FunctionAddress[~String] : +# 35| v35_681(void) = Call[~String] : func:r35_680, this:r35_679 +# 35| mu35_682(unknown) = ^CallSideEffect : ~m? +# 35| v35_683(void) = ^IndirectReadSideEffect[-1] : &:r35_679, ~m? +# 35| mu35_684(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_679 +# 35| r35_685(bool) = Constant[0] : +# 35| v35_686(void) = ConditionalBranch : r35_685 #-----| False -> Block 49 #-----| True -> Block 1026 -# 166| Block 49 -# 166| r166_1(glval) = VariableAddress[x49] : -# 166| mu166_2(String) = Uninitialized[x49] : &:r166_1 -# 166| r166_3(glval) = FunctionAddress[String] : -# 166| v166_4(void) = Call[String] : func:r166_3, this:r166_1 -# 166| mu166_5(unknown) = ^CallSideEffect : ~m? -# 166| mu166_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r166_1 -# 167| r167_1(glval) = VariableAddress[x49] : -# 167| r167_2(glval) = FunctionAddress[~String] : -# 167| v167_3(void) = Call[~String] : func:r167_2, this:r167_1 -# 167| mu167_4(unknown) = ^CallSideEffect : ~m? -# 167| v167_5(void) = ^IndirectReadSideEffect[-1] : &:r167_1, ~m? -# 167| mu167_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r167_1 -# 167| r167_7(bool) = Constant[0] : -# 167| v167_8(void) = ConditionalBranch : r167_7 +# 35| Block 49 +# 35| r35_687(glval) = VariableAddress[x49] : +# 35| mu35_688(String) = Uninitialized[x49] : &:r35_687 +# 35| r35_689(glval) = FunctionAddress[String] : +# 35| v35_690(void) = Call[String] : func:r35_689, this:r35_687 +# 35| mu35_691(unknown) = ^CallSideEffect : ~m? +# 35| mu35_692(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_687 +# 35| r35_693(glval) = VariableAddress[x49] : +# 35| r35_694(glval) = FunctionAddress[~String] : +# 35| v35_695(void) = Call[~String] : func:r35_694, this:r35_693 +# 35| mu35_696(unknown) = ^CallSideEffect : ~m? +# 35| v35_697(void) = ^IndirectReadSideEffect[-1] : &:r35_693, ~m? +# 35| mu35_698(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_693 +# 35| r35_699(bool) = Constant[0] : +# 35| v35_700(void) = ConditionalBranch : r35_699 #-----| False -> Block 50 #-----| True -> Block 1026 -# 169| Block 50 -# 169| r169_1(glval) = VariableAddress[x50] : -# 169| mu169_2(String) = Uninitialized[x50] : &:r169_1 -# 169| r169_3(glval) = FunctionAddress[String] : -# 169| v169_4(void) = Call[String] : func:r169_3, this:r169_1 -# 169| mu169_5(unknown) = ^CallSideEffect : ~m? -# 169| mu169_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r169_1 -# 170| r170_1(glval) = VariableAddress[x50] : -# 170| r170_2(glval) = FunctionAddress[~String] : -# 170| v170_3(void) = Call[~String] : func:r170_2, this:r170_1 -# 170| mu170_4(unknown) = ^CallSideEffect : ~m? -# 170| v170_5(void) = ^IndirectReadSideEffect[-1] : &:r170_1, ~m? -# 170| mu170_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r170_1 -# 170| r170_7(bool) = Constant[0] : -# 170| v170_8(void) = ConditionalBranch : r170_7 +# 35| Block 50 +# 35| r35_701(glval) = VariableAddress[x50] : +# 35| mu35_702(String) = Uninitialized[x50] : &:r35_701 +# 35| r35_703(glval) = FunctionAddress[String] : +# 35| v35_704(void) = Call[String] : func:r35_703, this:r35_701 +# 35| mu35_705(unknown) = ^CallSideEffect : ~m? +# 35| mu35_706(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_701 +# 35| r35_707(glval) = VariableAddress[x50] : +# 35| r35_708(glval) = FunctionAddress[~String] : +# 35| v35_709(void) = Call[~String] : func:r35_708, this:r35_707 +# 35| mu35_710(unknown) = ^CallSideEffect : ~m? +# 35| v35_711(void) = ^IndirectReadSideEffect[-1] : &:r35_707, ~m? +# 35| mu35_712(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_707 +# 35| r35_713(bool) = Constant[0] : +# 35| v35_714(void) = ConditionalBranch : r35_713 #-----| False -> Block 51 #-----| True -> Block 1026 -# 172| Block 51 -# 172| r172_1(glval) = VariableAddress[x51] : -# 172| mu172_2(String) = Uninitialized[x51] : &:r172_1 -# 172| r172_3(glval) = FunctionAddress[String] : -# 172| v172_4(void) = Call[String] : func:r172_3, this:r172_1 -# 172| mu172_5(unknown) = ^CallSideEffect : ~m? -# 172| mu172_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r172_1 -# 173| r173_1(glval) = VariableAddress[x51] : -# 173| r173_2(glval) = FunctionAddress[~String] : -# 173| v173_3(void) = Call[~String] : func:r173_2, this:r173_1 -# 173| mu173_4(unknown) = ^CallSideEffect : ~m? -# 173| v173_5(void) = ^IndirectReadSideEffect[-1] : &:r173_1, ~m? -# 173| mu173_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r173_1 -# 173| r173_7(bool) = Constant[0] : -# 173| v173_8(void) = ConditionalBranch : r173_7 +# 35| Block 51 +# 35| r35_715(glval) = VariableAddress[x51] : +# 35| mu35_716(String) = Uninitialized[x51] : &:r35_715 +# 35| r35_717(glval) = FunctionAddress[String] : +# 35| v35_718(void) = Call[String] : func:r35_717, this:r35_715 +# 35| mu35_719(unknown) = ^CallSideEffect : ~m? +# 35| mu35_720(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_715 +# 35| r35_721(glval) = VariableAddress[x51] : +# 35| r35_722(glval) = FunctionAddress[~String] : +# 35| v35_723(void) = Call[~String] : func:r35_722, this:r35_721 +# 35| mu35_724(unknown) = ^CallSideEffect : ~m? +# 35| v35_725(void) = ^IndirectReadSideEffect[-1] : &:r35_721, ~m? +# 35| mu35_726(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_721 +# 35| r35_727(bool) = Constant[0] : +# 35| v35_728(void) = ConditionalBranch : r35_727 #-----| False -> Block 52 #-----| True -> Block 1026 -# 175| Block 52 -# 175| r175_1(glval) = VariableAddress[x52] : -# 175| mu175_2(String) = Uninitialized[x52] : &:r175_1 -# 175| r175_3(glval) = FunctionAddress[String] : -# 175| v175_4(void) = Call[String] : func:r175_3, this:r175_1 -# 175| mu175_5(unknown) = ^CallSideEffect : ~m? -# 175| mu175_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r175_1 -# 176| r176_1(glval) = VariableAddress[x52] : -# 176| r176_2(glval) = FunctionAddress[~String] : -# 176| v176_3(void) = Call[~String] : func:r176_2, this:r176_1 -# 176| mu176_4(unknown) = ^CallSideEffect : ~m? -# 176| v176_5(void) = ^IndirectReadSideEffect[-1] : &:r176_1, ~m? -# 176| mu176_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r176_1 -# 176| r176_7(bool) = Constant[0] : -# 176| v176_8(void) = ConditionalBranch : r176_7 +# 35| Block 52 +# 35| r35_729(glval) = VariableAddress[x52] : +# 35| mu35_730(String) = Uninitialized[x52] : &:r35_729 +# 35| r35_731(glval) = FunctionAddress[String] : +# 35| v35_732(void) = Call[String] : func:r35_731, this:r35_729 +# 35| mu35_733(unknown) = ^CallSideEffect : ~m? +# 35| mu35_734(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_729 +# 35| r35_735(glval) = VariableAddress[x52] : +# 35| r35_736(glval) = FunctionAddress[~String] : +# 35| v35_737(void) = Call[~String] : func:r35_736, this:r35_735 +# 35| mu35_738(unknown) = ^CallSideEffect : ~m? +# 35| v35_739(void) = ^IndirectReadSideEffect[-1] : &:r35_735, ~m? +# 35| mu35_740(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_735 +# 35| r35_741(bool) = Constant[0] : +# 35| v35_742(void) = ConditionalBranch : r35_741 #-----| False -> Block 53 #-----| True -> Block 1026 -# 178| Block 53 -# 178| r178_1(glval) = VariableAddress[x53] : -# 178| mu178_2(String) = Uninitialized[x53] : &:r178_1 -# 178| r178_3(glval) = FunctionAddress[String] : -# 178| v178_4(void) = Call[String] : func:r178_3, this:r178_1 -# 178| mu178_5(unknown) = ^CallSideEffect : ~m? -# 178| mu178_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r178_1 -# 179| r179_1(glval) = VariableAddress[x53] : -# 179| r179_2(glval) = FunctionAddress[~String] : -# 179| v179_3(void) = Call[~String] : func:r179_2, this:r179_1 -# 179| mu179_4(unknown) = ^CallSideEffect : ~m? -# 179| v179_5(void) = ^IndirectReadSideEffect[-1] : &:r179_1, ~m? -# 179| mu179_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r179_1 -# 179| r179_7(bool) = Constant[0] : -# 179| v179_8(void) = ConditionalBranch : r179_7 +# 35| Block 53 +# 35| r35_743(glval) = VariableAddress[x53] : +# 35| mu35_744(String) = Uninitialized[x53] : &:r35_743 +# 35| r35_745(glval) = FunctionAddress[String] : +# 35| v35_746(void) = Call[String] : func:r35_745, this:r35_743 +# 35| mu35_747(unknown) = ^CallSideEffect : ~m? +# 35| mu35_748(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_743 +# 35| r35_749(glval) = VariableAddress[x53] : +# 35| r35_750(glval) = FunctionAddress[~String] : +# 35| v35_751(void) = Call[~String] : func:r35_750, this:r35_749 +# 35| mu35_752(unknown) = ^CallSideEffect : ~m? +# 35| v35_753(void) = ^IndirectReadSideEffect[-1] : &:r35_749, ~m? +# 35| mu35_754(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_749 +# 35| r35_755(bool) = Constant[0] : +# 35| v35_756(void) = ConditionalBranch : r35_755 #-----| False -> Block 54 #-----| True -> Block 1026 -# 181| Block 54 -# 181| r181_1(glval) = VariableAddress[x54] : -# 181| mu181_2(String) = Uninitialized[x54] : &:r181_1 -# 181| r181_3(glval) = FunctionAddress[String] : -# 181| v181_4(void) = Call[String] : func:r181_3, this:r181_1 -# 181| mu181_5(unknown) = ^CallSideEffect : ~m? -# 181| mu181_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r181_1 -# 182| r182_1(glval) = VariableAddress[x54] : -# 182| r182_2(glval) = FunctionAddress[~String] : -# 182| v182_3(void) = Call[~String] : func:r182_2, this:r182_1 -# 182| mu182_4(unknown) = ^CallSideEffect : ~m? -# 182| v182_5(void) = ^IndirectReadSideEffect[-1] : &:r182_1, ~m? -# 182| mu182_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r182_1 -# 182| r182_7(bool) = Constant[0] : -# 182| v182_8(void) = ConditionalBranch : r182_7 +# 35| Block 54 +# 35| r35_757(glval) = VariableAddress[x54] : +# 35| mu35_758(String) = Uninitialized[x54] : &:r35_757 +# 35| r35_759(glval) = FunctionAddress[String] : +# 35| v35_760(void) = Call[String] : func:r35_759, this:r35_757 +# 35| mu35_761(unknown) = ^CallSideEffect : ~m? +# 35| mu35_762(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_757 +# 35| r35_763(glval) = VariableAddress[x54] : +# 35| r35_764(glval) = FunctionAddress[~String] : +# 35| v35_765(void) = Call[~String] : func:r35_764, this:r35_763 +# 35| mu35_766(unknown) = ^CallSideEffect : ~m? +# 35| v35_767(void) = ^IndirectReadSideEffect[-1] : &:r35_763, ~m? +# 35| mu35_768(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_763 +# 35| r35_769(bool) = Constant[0] : +# 35| v35_770(void) = ConditionalBranch : r35_769 #-----| False -> Block 55 #-----| True -> Block 1026 -# 184| Block 55 -# 184| r184_1(glval) = VariableAddress[x55] : -# 184| mu184_2(String) = Uninitialized[x55] : &:r184_1 -# 184| r184_3(glval) = FunctionAddress[String] : -# 184| v184_4(void) = Call[String] : func:r184_3, this:r184_1 -# 184| mu184_5(unknown) = ^CallSideEffect : ~m? -# 184| mu184_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r184_1 -# 185| r185_1(glval) = VariableAddress[x55] : -# 185| r185_2(glval) = FunctionAddress[~String] : -# 185| v185_3(void) = Call[~String] : func:r185_2, this:r185_1 -# 185| mu185_4(unknown) = ^CallSideEffect : ~m? -# 185| v185_5(void) = ^IndirectReadSideEffect[-1] : &:r185_1, ~m? -# 185| mu185_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r185_1 -# 185| r185_7(bool) = Constant[0] : -# 185| v185_8(void) = ConditionalBranch : r185_7 +# 35| Block 55 +# 35| r35_771(glval) = VariableAddress[x55] : +# 35| mu35_772(String) = Uninitialized[x55] : &:r35_771 +# 35| r35_773(glval) = FunctionAddress[String] : +# 35| v35_774(void) = Call[String] : func:r35_773, this:r35_771 +# 35| mu35_775(unknown) = ^CallSideEffect : ~m? +# 35| mu35_776(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_771 +# 35| r35_777(glval) = VariableAddress[x55] : +# 35| r35_778(glval) = FunctionAddress[~String] : +# 35| v35_779(void) = Call[~String] : func:r35_778, this:r35_777 +# 35| mu35_780(unknown) = ^CallSideEffect : ~m? +# 35| v35_781(void) = ^IndirectReadSideEffect[-1] : &:r35_777, ~m? +# 35| mu35_782(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_777 +# 35| r35_783(bool) = Constant[0] : +# 35| v35_784(void) = ConditionalBranch : r35_783 #-----| False -> Block 56 #-----| True -> Block 1026 -# 187| Block 56 -# 187| r187_1(glval) = VariableAddress[x56] : -# 187| mu187_2(String) = Uninitialized[x56] : &:r187_1 -# 187| r187_3(glval) = FunctionAddress[String] : -# 187| v187_4(void) = Call[String] : func:r187_3, this:r187_1 -# 187| mu187_5(unknown) = ^CallSideEffect : ~m? -# 187| mu187_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r187_1 -# 188| r188_1(glval) = VariableAddress[x56] : -# 188| r188_2(glval) = FunctionAddress[~String] : -# 188| v188_3(void) = Call[~String] : func:r188_2, this:r188_1 -# 188| mu188_4(unknown) = ^CallSideEffect : ~m? -# 188| v188_5(void) = ^IndirectReadSideEffect[-1] : &:r188_1, ~m? -# 188| mu188_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r188_1 -# 188| r188_7(bool) = Constant[0] : -# 188| v188_8(void) = ConditionalBranch : r188_7 +# 35| Block 56 +# 35| r35_785(glval) = VariableAddress[x56] : +# 35| mu35_786(String) = Uninitialized[x56] : &:r35_785 +# 35| r35_787(glval) = FunctionAddress[String] : +# 35| v35_788(void) = Call[String] : func:r35_787, this:r35_785 +# 35| mu35_789(unknown) = ^CallSideEffect : ~m? +# 35| mu35_790(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_785 +# 35| r35_791(glval) = VariableAddress[x56] : +# 35| r35_792(glval) = FunctionAddress[~String] : +# 35| v35_793(void) = Call[~String] : func:r35_792, this:r35_791 +# 35| mu35_794(unknown) = ^CallSideEffect : ~m? +# 35| v35_795(void) = ^IndirectReadSideEffect[-1] : &:r35_791, ~m? +# 35| mu35_796(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_791 +# 35| r35_797(bool) = Constant[0] : +# 35| v35_798(void) = ConditionalBranch : r35_797 #-----| False -> Block 57 #-----| True -> Block 1026 -# 190| Block 57 -# 190| r190_1(glval) = VariableAddress[x57] : -# 190| mu190_2(String) = Uninitialized[x57] : &:r190_1 -# 190| r190_3(glval) = FunctionAddress[String] : -# 190| v190_4(void) = Call[String] : func:r190_3, this:r190_1 -# 190| mu190_5(unknown) = ^CallSideEffect : ~m? -# 190| mu190_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r190_1 -# 191| r191_1(glval) = VariableAddress[x57] : -# 191| r191_2(glval) = FunctionAddress[~String] : -# 191| v191_3(void) = Call[~String] : func:r191_2, this:r191_1 -# 191| mu191_4(unknown) = ^CallSideEffect : ~m? -# 191| v191_5(void) = ^IndirectReadSideEffect[-1] : &:r191_1, ~m? -# 191| mu191_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r191_1 -# 191| r191_7(bool) = Constant[0] : -# 191| v191_8(void) = ConditionalBranch : r191_7 +# 35| Block 57 +# 35| r35_799(glval) = VariableAddress[x57] : +# 35| mu35_800(String) = Uninitialized[x57] : &:r35_799 +# 35| r35_801(glval) = FunctionAddress[String] : +# 35| v35_802(void) = Call[String] : func:r35_801, this:r35_799 +# 35| mu35_803(unknown) = ^CallSideEffect : ~m? +# 35| mu35_804(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_799 +# 35| r35_805(glval) = VariableAddress[x57] : +# 35| r35_806(glval) = FunctionAddress[~String] : +# 35| v35_807(void) = Call[~String] : func:r35_806, this:r35_805 +# 35| mu35_808(unknown) = ^CallSideEffect : ~m? +# 35| v35_809(void) = ^IndirectReadSideEffect[-1] : &:r35_805, ~m? +# 35| mu35_810(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_805 +# 35| r35_811(bool) = Constant[0] : +# 35| v35_812(void) = ConditionalBranch : r35_811 #-----| False -> Block 58 #-----| True -> Block 1026 -# 193| Block 58 -# 193| r193_1(glval) = VariableAddress[x58] : -# 193| mu193_2(String) = Uninitialized[x58] : &:r193_1 -# 193| r193_3(glval) = FunctionAddress[String] : -# 193| v193_4(void) = Call[String] : func:r193_3, this:r193_1 -# 193| mu193_5(unknown) = ^CallSideEffect : ~m? -# 193| mu193_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r193_1 -# 194| r194_1(glval) = VariableAddress[x58] : -# 194| r194_2(glval) = FunctionAddress[~String] : -# 194| v194_3(void) = Call[~String] : func:r194_2, this:r194_1 -# 194| mu194_4(unknown) = ^CallSideEffect : ~m? -# 194| v194_5(void) = ^IndirectReadSideEffect[-1] : &:r194_1, ~m? -# 194| mu194_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r194_1 -# 194| r194_7(bool) = Constant[0] : -# 194| v194_8(void) = ConditionalBranch : r194_7 +# 35| Block 58 +# 35| r35_813(glval) = VariableAddress[x58] : +# 35| mu35_814(String) = Uninitialized[x58] : &:r35_813 +# 35| r35_815(glval) = FunctionAddress[String] : +# 35| v35_816(void) = Call[String] : func:r35_815, this:r35_813 +# 35| mu35_817(unknown) = ^CallSideEffect : ~m? +# 35| mu35_818(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_813 +# 35| r35_819(glval) = VariableAddress[x58] : +# 35| r35_820(glval) = FunctionAddress[~String] : +# 35| v35_821(void) = Call[~String] : func:r35_820, this:r35_819 +# 35| mu35_822(unknown) = ^CallSideEffect : ~m? +# 35| v35_823(void) = ^IndirectReadSideEffect[-1] : &:r35_819, ~m? +# 35| mu35_824(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_819 +# 35| r35_825(bool) = Constant[0] : +# 35| v35_826(void) = ConditionalBranch : r35_825 #-----| False -> Block 59 #-----| True -> Block 1026 -# 196| Block 59 -# 196| r196_1(glval) = VariableAddress[x59] : -# 196| mu196_2(String) = Uninitialized[x59] : &:r196_1 -# 196| r196_3(glval) = FunctionAddress[String] : -# 196| v196_4(void) = Call[String] : func:r196_3, this:r196_1 -# 196| mu196_5(unknown) = ^CallSideEffect : ~m? -# 196| mu196_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r196_1 -# 197| r197_1(glval) = VariableAddress[x59] : -# 197| r197_2(glval) = FunctionAddress[~String] : -# 197| v197_3(void) = Call[~String] : func:r197_2, this:r197_1 -# 197| mu197_4(unknown) = ^CallSideEffect : ~m? -# 197| v197_5(void) = ^IndirectReadSideEffect[-1] : &:r197_1, ~m? -# 197| mu197_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r197_1 -# 197| r197_7(bool) = Constant[0] : -# 197| v197_8(void) = ConditionalBranch : r197_7 +# 35| Block 59 +# 35| r35_827(glval) = VariableAddress[x59] : +# 35| mu35_828(String) = Uninitialized[x59] : &:r35_827 +# 35| r35_829(glval) = FunctionAddress[String] : +# 35| v35_830(void) = Call[String] : func:r35_829, this:r35_827 +# 35| mu35_831(unknown) = ^CallSideEffect : ~m? +# 35| mu35_832(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_827 +# 35| r35_833(glval) = VariableAddress[x59] : +# 35| r35_834(glval) = FunctionAddress[~String] : +# 35| v35_835(void) = Call[~String] : func:r35_834, this:r35_833 +# 35| mu35_836(unknown) = ^CallSideEffect : ~m? +# 35| v35_837(void) = ^IndirectReadSideEffect[-1] : &:r35_833, ~m? +# 35| mu35_838(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_833 +# 35| r35_839(bool) = Constant[0] : +# 35| v35_840(void) = ConditionalBranch : r35_839 #-----| False -> Block 60 #-----| True -> Block 1026 -# 199| Block 60 -# 199| r199_1(glval) = VariableAddress[x60] : -# 199| mu199_2(String) = Uninitialized[x60] : &:r199_1 -# 199| r199_3(glval) = FunctionAddress[String] : -# 199| v199_4(void) = Call[String] : func:r199_3, this:r199_1 -# 199| mu199_5(unknown) = ^CallSideEffect : ~m? -# 199| mu199_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r199_1 -# 200| r200_1(glval) = VariableAddress[x60] : -# 200| r200_2(glval) = FunctionAddress[~String] : -# 200| v200_3(void) = Call[~String] : func:r200_2, this:r200_1 -# 200| mu200_4(unknown) = ^CallSideEffect : ~m? -# 200| v200_5(void) = ^IndirectReadSideEffect[-1] : &:r200_1, ~m? -# 200| mu200_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r200_1 -# 200| r200_7(bool) = Constant[0] : -# 200| v200_8(void) = ConditionalBranch : r200_7 +# 35| Block 60 +# 35| r35_841(glval) = VariableAddress[x60] : +# 35| mu35_842(String) = Uninitialized[x60] : &:r35_841 +# 35| r35_843(glval) = FunctionAddress[String] : +# 35| v35_844(void) = Call[String] : func:r35_843, this:r35_841 +# 35| mu35_845(unknown) = ^CallSideEffect : ~m? +# 35| mu35_846(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_841 +# 35| r35_847(glval) = VariableAddress[x60] : +# 35| r35_848(glval) = FunctionAddress[~String] : +# 35| v35_849(void) = Call[~String] : func:r35_848, this:r35_847 +# 35| mu35_850(unknown) = ^CallSideEffect : ~m? +# 35| v35_851(void) = ^IndirectReadSideEffect[-1] : &:r35_847, ~m? +# 35| mu35_852(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_847 +# 35| r35_853(bool) = Constant[0] : +# 35| v35_854(void) = ConditionalBranch : r35_853 #-----| False -> Block 61 #-----| True -> Block 1026 -# 202| Block 61 -# 202| r202_1(glval) = VariableAddress[x61] : -# 202| mu202_2(String) = Uninitialized[x61] : &:r202_1 -# 202| r202_3(glval) = FunctionAddress[String] : -# 202| v202_4(void) = Call[String] : func:r202_3, this:r202_1 -# 202| mu202_5(unknown) = ^CallSideEffect : ~m? -# 202| mu202_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r202_1 -# 203| r203_1(glval) = VariableAddress[x61] : -# 203| r203_2(glval) = FunctionAddress[~String] : -# 203| v203_3(void) = Call[~String] : func:r203_2, this:r203_1 -# 203| mu203_4(unknown) = ^CallSideEffect : ~m? -# 203| v203_5(void) = ^IndirectReadSideEffect[-1] : &:r203_1, ~m? -# 203| mu203_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r203_1 -# 203| r203_7(bool) = Constant[0] : -# 203| v203_8(void) = ConditionalBranch : r203_7 +# 35| Block 61 +# 35| r35_855(glval) = VariableAddress[x61] : +# 35| mu35_856(String) = Uninitialized[x61] : &:r35_855 +# 35| r35_857(glval) = FunctionAddress[String] : +# 35| v35_858(void) = Call[String] : func:r35_857, this:r35_855 +# 35| mu35_859(unknown) = ^CallSideEffect : ~m? +# 35| mu35_860(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_855 +# 35| r35_861(glval) = VariableAddress[x61] : +# 35| r35_862(glval) = FunctionAddress[~String] : +# 35| v35_863(void) = Call[~String] : func:r35_862, this:r35_861 +# 35| mu35_864(unknown) = ^CallSideEffect : ~m? +# 35| v35_865(void) = ^IndirectReadSideEffect[-1] : &:r35_861, ~m? +# 35| mu35_866(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_861 +# 35| r35_867(bool) = Constant[0] : +# 35| v35_868(void) = ConditionalBranch : r35_867 #-----| False -> Block 62 #-----| True -> Block 1026 -# 205| Block 62 -# 205| r205_1(glval) = VariableAddress[x62] : -# 205| mu205_2(String) = Uninitialized[x62] : &:r205_1 -# 205| r205_3(glval) = FunctionAddress[String] : -# 205| v205_4(void) = Call[String] : func:r205_3, this:r205_1 -# 205| mu205_5(unknown) = ^CallSideEffect : ~m? -# 205| mu205_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r205_1 -# 206| r206_1(glval) = VariableAddress[x62] : -# 206| r206_2(glval) = FunctionAddress[~String] : -# 206| v206_3(void) = Call[~String] : func:r206_2, this:r206_1 -# 206| mu206_4(unknown) = ^CallSideEffect : ~m? -# 206| v206_5(void) = ^IndirectReadSideEffect[-1] : &:r206_1, ~m? -# 206| mu206_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r206_1 -# 206| r206_7(bool) = Constant[0] : -# 206| v206_8(void) = ConditionalBranch : r206_7 +# 35| Block 62 +# 35| r35_869(glval) = VariableAddress[x62] : +# 35| mu35_870(String) = Uninitialized[x62] : &:r35_869 +# 35| r35_871(glval) = FunctionAddress[String] : +# 35| v35_872(void) = Call[String] : func:r35_871, this:r35_869 +# 35| mu35_873(unknown) = ^CallSideEffect : ~m? +# 35| mu35_874(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_869 +# 35| r35_875(glval) = VariableAddress[x62] : +# 35| r35_876(glval) = FunctionAddress[~String] : +# 35| v35_877(void) = Call[~String] : func:r35_876, this:r35_875 +# 35| mu35_878(unknown) = ^CallSideEffect : ~m? +# 35| v35_879(void) = ^IndirectReadSideEffect[-1] : &:r35_875, ~m? +# 35| mu35_880(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_875 +# 35| r35_881(bool) = Constant[0] : +# 35| v35_882(void) = ConditionalBranch : r35_881 #-----| False -> Block 63 #-----| True -> Block 1026 -# 208| Block 63 -# 208| r208_1(glval) = VariableAddress[x63] : -# 208| mu208_2(String) = Uninitialized[x63] : &:r208_1 -# 208| r208_3(glval) = FunctionAddress[String] : -# 208| v208_4(void) = Call[String] : func:r208_3, this:r208_1 -# 208| mu208_5(unknown) = ^CallSideEffect : ~m? -# 208| mu208_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r208_1 -# 209| r209_1(glval) = VariableAddress[x63] : -# 209| r209_2(glval) = FunctionAddress[~String] : -# 209| v209_3(void) = Call[~String] : func:r209_2, this:r209_1 -# 209| mu209_4(unknown) = ^CallSideEffect : ~m? -# 209| v209_5(void) = ^IndirectReadSideEffect[-1] : &:r209_1, ~m? -# 209| mu209_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r209_1 -# 209| r209_7(bool) = Constant[0] : -# 209| v209_8(void) = ConditionalBranch : r209_7 +# 35| Block 63 +# 35| r35_883(glval) = VariableAddress[x63] : +# 35| mu35_884(String) = Uninitialized[x63] : &:r35_883 +# 35| r35_885(glval) = FunctionAddress[String] : +# 35| v35_886(void) = Call[String] : func:r35_885, this:r35_883 +# 35| mu35_887(unknown) = ^CallSideEffect : ~m? +# 35| mu35_888(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_883 +# 35| r35_889(glval) = VariableAddress[x63] : +# 35| r35_890(glval) = FunctionAddress[~String] : +# 35| v35_891(void) = Call[~String] : func:r35_890, this:r35_889 +# 35| mu35_892(unknown) = ^CallSideEffect : ~m? +# 35| v35_893(void) = ^IndirectReadSideEffect[-1] : &:r35_889, ~m? +# 35| mu35_894(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_889 +# 35| r35_895(bool) = Constant[0] : +# 35| v35_896(void) = ConditionalBranch : r35_895 #-----| False -> Block 64 #-----| True -> Block 1026 -# 211| Block 64 -# 211| r211_1(glval) = VariableAddress[x64] : -# 211| mu211_2(String) = Uninitialized[x64] : &:r211_1 -# 211| r211_3(glval) = FunctionAddress[String] : -# 211| v211_4(void) = Call[String] : func:r211_3, this:r211_1 -# 211| mu211_5(unknown) = ^CallSideEffect : ~m? -# 211| mu211_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r211_1 -# 212| r212_1(glval) = VariableAddress[x64] : -# 212| r212_2(glval) = FunctionAddress[~String] : -# 212| v212_3(void) = Call[~String] : func:r212_2, this:r212_1 -# 212| mu212_4(unknown) = ^CallSideEffect : ~m? -# 212| v212_5(void) = ^IndirectReadSideEffect[-1] : &:r212_1, ~m? -# 212| mu212_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r212_1 -# 212| r212_7(bool) = Constant[0] : -# 212| v212_8(void) = ConditionalBranch : r212_7 +# 35| Block 64 +# 35| r35_897(glval) = VariableAddress[x64] : +# 35| mu35_898(String) = Uninitialized[x64] : &:r35_897 +# 35| r35_899(glval) = FunctionAddress[String] : +# 35| v35_900(void) = Call[String] : func:r35_899, this:r35_897 +# 35| mu35_901(unknown) = ^CallSideEffect : ~m? +# 35| mu35_902(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_897 +# 35| r35_903(glval) = VariableAddress[x64] : +# 35| r35_904(glval) = FunctionAddress[~String] : +# 35| v35_905(void) = Call[~String] : func:r35_904, this:r35_903 +# 35| mu35_906(unknown) = ^CallSideEffect : ~m? +# 35| v35_907(void) = ^IndirectReadSideEffect[-1] : &:r35_903, ~m? +# 35| mu35_908(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_903 +# 35| r35_909(bool) = Constant[0] : +# 35| v35_910(void) = ConditionalBranch : r35_909 #-----| False -> Block 65 #-----| True -> Block 1026 -# 214| Block 65 -# 214| r214_1(glval) = VariableAddress[x65] : -# 214| mu214_2(String) = Uninitialized[x65] : &:r214_1 -# 214| r214_3(glval) = FunctionAddress[String] : -# 214| v214_4(void) = Call[String] : func:r214_3, this:r214_1 -# 214| mu214_5(unknown) = ^CallSideEffect : ~m? -# 214| mu214_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r214_1 -# 215| r215_1(glval) = VariableAddress[x65] : -# 215| r215_2(glval) = FunctionAddress[~String] : -# 215| v215_3(void) = Call[~String] : func:r215_2, this:r215_1 -# 215| mu215_4(unknown) = ^CallSideEffect : ~m? -# 215| v215_5(void) = ^IndirectReadSideEffect[-1] : &:r215_1, ~m? -# 215| mu215_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r215_1 -# 215| r215_7(bool) = Constant[0] : -# 215| v215_8(void) = ConditionalBranch : r215_7 +# 35| Block 65 +# 35| r35_911(glval) = VariableAddress[x65] : +# 35| mu35_912(String) = Uninitialized[x65] : &:r35_911 +# 35| r35_913(glval) = FunctionAddress[String] : +# 35| v35_914(void) = Call[String] : func:r35_913, this:r35_911 +# 35| mu35_915(unknown) = ^CallSideEffect : ~m? +# 35| mu35_916(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_911 +# 35| r35_917(glval) = VariableAddress[x65] : +# 35| r35_918(glval) = FunctionAddress[~String] : +# 35| v35_919(void) = Call[~String] : func:r35_918, this:r35_917 +# 35| mu35_920(unknown) = ^CallSideEffect : ~m? +# 35| v35_921(void) = ^IndirectReadSideEffect[-1] : &:r35_917, ~m? +# 35| mu35_922(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_917 +# 35| r35_923(bool) = Constant[0] : +# 35| v35_924(void) = ConditionalBranch : r35_923 #-----| False -> Block 66 #-----| True -> Block 1026 -# 217| Block 66 -# 217| r217_1(glval) = VariableAddress[x66] : -# 217| mu217_2(String) = Uninitialized[x66] : &:r217_1 -# 217| r217_3(glval) = FunctionAddress[String] : -# 217| v217_4(void) = Call[String] : func:r217_3, this:r217_1 -# 217| mu217_5(unknown) = ^CallSideEffect : ~m? -# 217| mu217_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r217_1 -# 218| r218_1(glval) = VariableAddress[x66] : -# 218| r218_2(glval) = FunctionAddress[~String] : -# 218| v218_3(void) = Call[~String] : func:r218_2, this:r218_1 -# 218| mu218_4(unknown) = ^CallSideEffect : ~m? -# 218| v218_5(void) = ^IndirectReadSideEffect[-1] : &:r218_1, ~m? -# 218| mu218_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r218_1 -# 218| r218_7(bool) = Constant[0] : -# 218| v218_8(void) = ConditionalBranch : r218_7 +# 35| Block 66 +# 35| r35_925(glval) = VariableAddress[x66] : +# 35| mu35_926(String) = Uninitialized[x66] : &:r35_925 +# 35| r35_927(glval) = FunctionAddress[String] : +# 35| v35_928(void) = Call[String] : func:r35_927, this:r35_925 +# 35| mu35_929(unknown) = ^CallSideEffect : ~m? +# 35| mu35_930(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_925 +# 35| r35_931(glval) = VariableAddress[x66] : +# 35| r35_932(glval) = FunctionAddress[~String] : +# 35| v35_933(void) = Call[~String] : func:r35_932, this:r35_931 +# 35| mu35_934(unknown) = ^CallSideEffect : ~m? +# 35| v35_935(void) = ^IndirectReadSideEffect[-1] : &:r35_931, ~m? +# 35| mu35_936(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_931 +# 35| r35_937(bool) = Constant[0] : +# 35| v35_938(void) = ConditionalBranch : r35_937 #-----| False -> Block 67 #-----| True -> Block 1026 -# 220| Block 67 -# 220| r220_1(glval) = VariableAddress[x67] : -# 220| mu220_2(String) = Uninitialized[x67] : &:r220_1 -# 220| r220_3(glval) = FunctionAddress[String] : -# 220| v220_4(void) = Call[String] : func:r220_3, this:r220_1 -# 220| mu220_5(unknown) = ^CallSideEffect : ~m? -# 220| mu220_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r220_1 -# 221| r221_1(glval) = VariableAddress[x67] : -# 221| r221_2(glval) = FunctionAddress[~String] : -# 221| v221_3(void) = Call[~String] : func:r221_2, this:r221_1 -# 221| mu221_4(unknown) = ^CallSideEffect : ~m? -# 221| v221_5(void) = ^IndirectReadSideEffect[-1] : &:r221_1, ~m? -# 221| mu221_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r221_1 -# 221| r221_7(bool) = Constant[0] : -# 221| v221_8(void) = ConditionalBranch : r221_7 +# 35| Block 67 +# 35| r35_939(glval) = VariableAddress[x67] : +# 35| mu35_940(String) = Uninitialized[x67] : &:r35_939 +# 35| r35_941(glval) = FunctionAddress[String] : +# 35| v35_942(void) = Call[String] : func:r35_941, this:r35_939 +# 35| mu35_943(unknown) = ^CallSideEffect : ~m? +# 35| mu35_944(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_939 +# 35| r35_945(glval) = VariableAddress[x67] : +# 35| r35_946(glval) = FunctionAddress[~String] : +# 35| v35_947(void) = Call[~String] : func:r35_946, this:r35_945 +# 35| mu35_948(unknown) = ^CallSideEffect : ~m? +# 35| v35_949(void) = ^IndirectReadSideEffect[-1] : &:r35_945, ~m? +# 35| mu35_950(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_945 +# 35| r35_951(bool) = Constant[0] : +# 35| v35_952(void) = ConditionalBranch : r35_951 #-----| False -> Block 68 #-----| True -> Block 1026 -# 223| Block 68 -# 223| r223_1(glval) = VariableAddress[x68] : -# 223| mu223_2(String) = Uninitialized[x68] : &:r223_1 -# 223| r223_3(glval) = FunctionAddress[String] : -# 223| v223_4(void) = Call[String] : func:r223_3, this:r223_1 -# 223| mu223_5(unknown) = ^CallSideEffect : ~m? -# 223| mu223_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r223_1 -# 224| r224_1(glval) = VariableAddress[x68] : -# 224| r224_2(glval) = FunctionAddress[~String] : -# 224| v224_3(void) = Call[~String] : func:r224_2, this:r224_1 -# 224| mu224_4(unknown) = ^CallSideEffect : ~m? -# 224| v224_5(void) = ^IndirectReadSideEffect[-1] : &:r224_1, ~m? -# 224| mu224_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r224_1 -# 224| r224_7(bool) = Constant[0] : -# 224| v224_8(void) = ConditionalBranch : r224_7 +# 35| Block 68 +# 35| r35_953(glval) = VariableAddress[x68] : +# 35| mu35_954(String) = Uninitialized[x68] : &:r35_953 +# 35| r35_955(glval) = FunctionAddress[String] : +# 35| v35_956(void) = Call[String] : func:r35_955, this:r35_953 +# 35| mu35_957(unknown) = ^CallSideEffect : ~m? +# 35| mu35_958(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_953 +# 35| r35_959(glval) = VariableAddress[x68] : +# 35| r35_960(glval) = FunctionAddress[~String] : +# 35| v35_961(void) = Call[~String] : func:r35_960, this:r35_959 +# 35| mu35_962(unknown) = ^CallSideEffect : ~m? +# 35| v35_963(void) = ^IndirectReadSideEffect[-1] : &:r35_959, ~m? +# 35| mu35_964(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_959 +# 35| r35_965(bool) = Constant[0] : +# 35| v35_966(void) = ConditionalBranch : r35_965 #-----| False -> Block 69 #-----| True -> Block 1026 -# 226| Block 69 -# 226| r226_1(glval) = VariableAddress[x69] : -# 226| mu226_2(String) = Uninitialized[x69] : &:r226_1 -# 226| r226_3(glval) = FunctionAddress[String] : -# 226| v226_4(void) = Call[String] : func:r226_3, this:r226_1 -# 226| mu226_5(unknown) = ^CallSideEffect : ~m? -# 226| mu226_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r226_1 -# 227| r227_1(glval) = VariableAddress[x69] : -# 227| r227_2(glval) = FunctionAddress[~String] : -# 227| v227_3(void) = Call[~String] : func:r227_2, this:r227_1 -# 227| mu227_4(unknown) = ^CallSideEffect : ~m? -# 227| v227_5(void) = ^IndirectReadSideEffect[-1] : &:r227_1, ~m? -# 227| mu227_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r227_1 -# 227| r227_7(bool) = Constant[0] : -# 227| v227_8(void) = ConditionalBranch : r227_7 +# 35| Block 69 +# 35| r35_967(glval) = VariableAddress[x69] : +# 35| mu35_968(String) = Uninitialized[x69] : &:r35_967 +# 35| r35_969(glval) = FunctionAddress[String] : +# 35| v35_970(void) = Call[String] : func:r35_969, this:r35_967 +# 35| mu35_971(unknown) = ^CallSideEffect : ~m? +# 35| mu35_972(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_967 +# 35| r35_973(glval) = VariableAddress[x69] : +# 35| r35_974(glval) = FunctionAddress[~String] : +# 35| v35_975(void) = Call[~String] : func:r35_974, this:r35_973 +# 35| mu35_976(unknown) = ^CallSideEffect : ~m? +# 35| v35_977(void) = ^IndirectReadSideEffect[-1] : &:r35_973, ~m? +# 35| mu35_978(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_973 +# 35| r35_979(bool) = Constant[0] : +# 35| v35_980(void) = ConditionalBranch : r35_979 #-----| False -> Block 70 #-----| True -> Block 1026 -# 229| Block 70 -# 229| r229_1(glval) = VariableAddress[x70] : -# 229| mu229_2(String) = Uninitialized[x70] : &:r229_1 -# 229| r229_3(glval) = FunctionAddress[String] : -# 229| v229_4(void) = Call[String] : func:r229_3, this:r229_1 -# 229| mu229_5(unknown) = ^CallSideEffect : ~m? -# 229| mu229_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r229_1 -# 230| r230_1(glval) = VariableAddress[x70] : -# 230| r230_2(glval) = FunctionAddress[~String] : -# 230| v230_3(void) = Call[~String] : func:r230_2, this:r230_1 -# 230| mu230_4(unknown) = ^CallSideEffect : ~m? -# 230| v230_5(void) = ^IndirectReadSideEffect[-1] : &:r230_1, ~m? -# 230| mu230_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r230_1 -# 230| r230_7(bool) = Constant[0] : -# 230| v230_8(void) = ConditionalBranch : r230_7 +# 35| Block 70 +# 35| r35_981(glval) = VariableAddress[x70] : +# 35| mu35_982(String) = Uninitialized[x70] : &:r35_981 +# 35| r35_983(glval) = FunctionAddress[String] : +# 35| v35_984(void) = Call[String] : func:r35_983, this:r35_981 +# 35| mu35_985(unknown) = ^CallSideEffect : ~m? +# 35| mu35_986(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_981 +# 35| r35_987(glval) = VariableAddress[x70] : +# 35| r35_988(glval) = FunctionAddress[~String] : +# 35| v35_989(void) = Call[~String] : func:r35_988, this:r35_987 +# 35| mu35_990(unknown) = ^CallSideEffect : ~m? +# 35| v35_991(void) = ^IndirectReadSideEffect[-1] : &:r35_987, ~m? +# 35| mu35_992(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_987 +# 35| r35_993(bool) = Constant[0] : +# 35| v35_994(void) = ConditionalBranch : r35_993 #-----| False -> Block 71 #-----| True -> Block 1026 -# 232| Block 71 -# 232| r232_1(glval) = VariableAddress[x71] : -# 232| mu232_2(String) = Uninitialized[x71] : &:r232_1 -# 232| r232_3(glval) = FunctionAddress[String] : -# 232| v232_4(void) = Call[String] : func:r232_3, this:r232_1 -# 232| mu232_5(unknown) = ^CallSideEffect : ~m? -# 232| mu232_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r232_1 -# 233| r233_1(glval) = VariableAddress[x71] : -# 233| r233_2(glval) = FunctionAddress[~String] : -# 233| v233_3(void) = Call[~String] : func:r233_2, this:r233_1 -# 233| mu233_4(unknown) = ^CallSideEffect : ~m? -# 233| v233_5(void) = ^IndirectReadSideEffect[-1] : &:r233_1, ~m? -# 233| mu233_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r233_1 -# 233| r233_7(bool) = Constant[0] : -# 233| v233_8(void) = ConditionalBranch : r233_7 +# 35| Block 71 +# 35| r35_995(glval) = VariableAddress[x71] : +# 35| mu35_996(String) = Uninitialized[x71] : &:r35_995 +# 35| r35_997(glval) = FunctionAddress[String] : +# 35| v35_998(void) = Call[String] : func:r35_997, this:r35_995 +# 35| mu35_999(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1000(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_995 +# 35| r35_1001(glval) = VariableAddress[x71] : +# 35| r35_1002(glval) = FunctionAddress[~String] : +# 35| v35_1003(void) = Call[~String] : func:r35_1002, this:r35_1001 +# 35| mu35_1004(unknown) = ^CallSideEffect : ~m? +# 35| v35_1005(void) = ^IndirectReadSideEffect[-1] : &:r35_1001, ~m? +# 35| mu35_1006(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1001 +# 35| r35_1007(bool) = Constant[0] : +# 35| v35_1008(void) = ConditionalBranch : r35_1007 #-----| False -> Block 72 #-----| True -> Block 1026 -# 235| Block 72 -# 235| r235_1(glval) = VariableAddress[x72] : -# 235| mu235_2(String) = Uninitialized[x72] : &:r235_1 -# 235| r235_3(glval) = FunctionAddress[String] : -# 235| v235_4(void) = Call[String] : func:r235_3, this:r235_1 -# 235| mu235_5(unknown) = ^CallSideEffect : ~m? -# 235| mu235_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r235_1 -# 236| r236_1(glval) = VariableAddress[x72] : -# 236| r236_2(glval) = FunctionAddress[~String] : -# 236| v236_3(void) = Call[~String] : func:r236_2, this:r236_1 -# 236| mu236_4(unknown) = ^CallSideEffect : ~m? -# 236| v236_5(void) = ^IndirectReadSideEffect[-1] : &:r236_1, ~m? -# 236| mu236_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r236_1 -# 236| r236_7(bool) = Constant[0] : -# 236| v236_8(void) = ConditionalBranch : r236_7 +# 35| Block 72 +# 35| r35_1009(glval) = VariableAddress[x72] : +# 35| mu35_1010(String) = Uninitialized[x72] : &:r35_1009 +# 35| r35_1011(glval) = FunctionAddress[String] : +# 35| v35_1012(void) = Call[String] : func:r35_1011, this:r35_1009 +# 35| mu35_1013(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1014(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1009 +# 35| r35_1015(glval) = VariableAddress[x72] : +# 35| r35_1016(glval) = FunctionAddress[~String] : +# 35| v35_1017(void) = Call[~String] : func:r35_1016, this:r35_1015 +# 35| mu35_1018(unknown) = ^CallSideEffect : ~m? +# 35| v35_1019(void) = ^IndirectReadSideEffect[-1] : &:r35_1015, ~m? +# 35| mu35_1020(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1015 +# 35| r35_1021(bool) = Constant[0] : +# 35| v35_1022(void) = ConditionalBranch : r35_1021 #-----| False -> Block 73 #-----| True -> Block 1026 -# 238| Block 73 -# 238| r238_1(glval) = VariableAddress[x73] : -# 238| mu238_2(String) = Uninitialized[x73] : &:r238_1 -# 238| r238_3(glval) = FunctionAddress[String] : -# 238| v238_4(void) = Call[String] : func:r238_3, this:r238_1 -# 238| mu238_5(unknown) = ^CallSideEffect : ~m? -# 238| mu238_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r238_1 -# 239| r239_1(glval) = VariableAddress[x73] : -# 239| r239_2(glval) = FunctionAddress[~String] : -# 239| v239_3(void) = Call[~String] : func:r239_2, this:r239_1 -# 239| mu239_4(unknown) = ^CallSideEffect : ~m? -# 239| v239_5(void) = ^IndirectReadSideEffect[-1] : &:r239_1, ~m? -# 239| mu239_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r239_1 -# 239| r239_7(bool) = Constant[0] : -# 239| v239_8(void) = ConditionalBranch : r239_7 +# 35| Block 73 +# 35| r35_1023(glval) = VariableAddress[x73] : +# 35| mu35_1024(String) = Uninitialized[x73] : &:r35_1023 +# 35| r35_1025(glval) = FunctionAddress[String] : +# 35| v35_1026(void) = Call[String] : func:r35_1025, this:r35_1023 +# 35| mu35_1027(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1028(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1023 +# 35| r35_1029(glval) = VariableAddress[x73] : +# 35| r35_1030(glval) = FunctionAddress[~String] : +# 35| v35_1031(void) = Call[~String] : func:r35_1030, this:r35_1029 +# 35| mu35_1032(unknown) = ^CallSideEffect : ~m? +# 35| v35_1033(void) = ^IndirectReadSideEffect[-1] : &:r35_1029, ~m? +# 35| mu35_1034(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1029 +# 35| r35_1035(bool) = Constant[0] : +# 35| v35_1036(void) = ConditionalBranch : r35_1035 #-----| False -> Block 74 #-----| True -> Block 1026 -# 241| Block 74 -# 241| r241_1(glval) = VariableAddress[x74] : -# 241| mu241_2(String) = Uninitialized[x74] : &:r241_1 -# 241| r241_3(glval) = FunctionAddress[String] : -# 241| v241_4(void) = Call[String] : func:r241_3, this:r241_1 -# 241| mu241_5(unknown) = ^CallSideEffect : ~m? -# 241| mu241_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r241_1 -# 242| r242_1(glval) = VariableAddress[x74] : -# 242| r242_2(glval) = FunctionAddress[~String] : -# 242| v242_3(void) = Call[~String] : func:r242_2, this:r242_1 -# 242| mu242_4(unknown) = ^CallSideEffect : ~m? -# 242| v242_5(void) = ^IndirectReadSideEffect[-1] : &:r242_1, ~m? -# 242| mu242_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r242_1 -# 242| r242_7(bool) = Constant[0] : -# 242| v242_8(void) = ConditionalBranch : r242_7 +# 35| Block 74 +# 35| r35_1037(glval) = VariableAddress[x74] : +# 35| mu35_1038(String) = Uninitialized[x74] : &:r35_1037 +# 35| r35_1039(glval) = FunctionAddress[String] : +# 35| v35_1040(void) = Call[String] : func:r35_1039, this:r35_1037 +# 35| mu35_1041(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1042(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1037 +# 35| r35_1043(glval) = VariableAddress[x74] : +# 35| r35_1044(glval) = FunctionAddress[~String] : +# 35| v35_1045(void) = Call[~String] : func:r35_1044, this:r35_1043 +# 35| mu35_1046(unknown) = ^CallSideEffect : ~m? +# 35| v35_1047(void) = ^IndirectReadSideEffect[-1] : &:r35_1043, ~m? +# 35| mu35_1048(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1043 +# 35| r35_1049(bool) = Constant[0] : +# 35| v35_1050(void) = ConditionalBranch : r35_1049 #-----| False -> Block 75 #-----| True -> Block 1026 -# 244| Block 75 -# 244| r244_1(glval) = VariableAddress[x75] : -# 244| mu244_2(String) = Uninitialized[x75] : &:r244_1 -# 244| r244_3(glval) = FunctionAddress[String] : -# 244| v244_4(void) = Call[String] : func:r244_3, this:r244_1 -# 244| mu244_5(unknown) = ^CallSideEffect : ~m? -# 244| mu244_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r244_1 -# 245| r245_1(glval) = VariableAddress[x75] : -# 245| r245_2(glval) = FunctionAddress[~String] : -# 245| v245_3(void) = Call[~String] : func:r245_2, this:r245_1 -# 245| mu245_4(unknown) = ^CallSideEffect : ~m? -# 245| v245_5(void) = ^IndirectReadSideEffect[-1] : &:r245_1, ~m? -# 245| mu245_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r245_1 -# 245| r245_7(bool) = Constant[0] : -# 245| v245_8(void) = ConditionalBranch : r245_7 +# 35| Block 75 +# 35| r35_1051(glval) = VariableAddress[x75] : +# 35| mu35_1052(String) = Uninitialized[x75] : &:r35_1051 +# 35| r35_1053(glval) = FunctionAddress[String] : +# 35| v35_1054(void) = Call[String] : func:r35_1053, this:r35_1051 +# 35| mu35_1055(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1056(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1051 +# 35| r35_1057(glval) = VariableAddress[x75] : +# 35| r35_1058(glval) = FunctionAddress[~String] : +# 35| v35_1059(void) = Call[~String] : func:r35_1058, this:r35_1057 +# 35| mu35_1060(unknown) = ^CallSideEffect : ~m? +# 35| v35_1061(void) = ^IndirectReadSideEffect[-1] : &:r35_1057, ~m? +# 35| mu35_1062(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1057 +# 35| r35_1063(bool) = Constant[0] : +# 35| v35_1064(void) = ConditionalBranch : r35_1063 #-----| False -> Block 76 #-----| True -> Block 1026 -# 247| Block 76 -# 247| r247_1(glval) = VariableAddress[x76] : -# 247| mu247_2(String) = Uninitialized[x76] : &:r247_1 -# 247| r247_3(glval) = FunctionAddress[String] : -# 247| v247_4(void) = Call[String] : func:r247_3, this:r247_1 -# 247| mu247_5(unknown) = ^CallSideEffect : ~m? -# 247| mu247_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r247_1 -# 248| r248_1(glval) = VariableAddress[x76] : -# 248| r248_2(glval) = FunctionAddress[~String] : -# 248| v248_3(void) = Call[~String] : func:r248_2, this:r248_1 -# 248| mu248_4(unknown) = ^CallSideEffect : ~m? -# 248| v248_5(void) = ^IndirectReadSideEffect[-1] : &:r248_1, ~m? -# 248| mu248_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r248_1 -# 248| r248_7(bool) = Constant[0] : -# 248| v248_8(void) = ConditionalBranch : r248_7 +# 35| Block 76 +# 35| r35_1065(glval) = VariableAddress[x76] : +# 35| mu35_1066(String) = Uninitialized[x76] : &:r35_1065 +# 35| r35_1067(glval) = FunctionAddress[String] : +# 35| v35_1068(void) = Call[String] : func:r35_1067, this:r35_1065 +# 35| mu35_1069(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1070(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1065 +# 35| r35_1071(glval) = VariableAddress[x76] : +# 35| r35_1072(glval) = FunctionAddress[~String] : +# 35| v35_1073(void) = Call[~String] : func:r35_1072, this:r35_1071 +# 35| mu35_1074(unknown) = ^CallSideEffect : ~m? +# 35| v35_1075(void) = ^IndirectReadSideEffect[-1] : &:r35_1071, ~m? +# 35| mu35_1076(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1071 +# 35| r35_1077(bool) = Constant[0] : +# 35| v35_1078(void) = ConditionalBranch : r35_1077 #-----| False -> Block 77 #-----| True -> Block 1026 -# 250| Block 77 -# 250| r250_1(glval) = VariableAddress[x77] : -# 250| mu250_2(String) = Uninitialized[x77] : &:r250_1 -# 250| r250_3(glval) = FunctionAddress[String] : -# 250| v250_4(void) = Call[String] : func:r250_3, this:r250_1 -# 250| mu250_5(unknown) = ^CallSideEffect : ~m? -# 250| mu250_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r250_1 -# 251| r251_1(glval) = VariableAddress[x77] : -# 251| r251_2(glval) = FunctionAddress[~String] : -# 251| v251_3(void) = Call[~String] : func:r251_2, this:r251_1 -# 251| mu251_4(unknown) = ^CallSideEffect : ~m? -# 251| v251_5(void) = ^IndirectReadSideEffect[-1] : &:r251_1, ~m? -# 251| mu251_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r251_1 -# 251| r251_7(bool) = Constant[0] : -# 251| v251_8(void) = ConditionalBranch : r251_7 +# 35| Block 77 +# 35| r35_1079(glval) = VariableAddress[x77] : +# 35| mu35_1080(String) = Uninitialized[x77] : &:r35_1079 +# 35| r35_1081(glval) = FunctionAddress[String] : +# 35| v35_1082(void) = Call[String] : func:r35_1081, this:r35_1079 +# 35| mu35_1083(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1084(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1079 +# 35| r35_1085(glval) = VariableAddress[x77] : +# 35| r35_1086(glval) = FunctionAddress[~String] : +# 35| v35_1087(void) = Call[~String] : func:r35_1086, this:r35_1085 +# 35| mu35_1088(unknown) = ^CallSideEffect : ~m? +# 35| v35_1089(void) = ^IndirectReadSideEffect[-1] : &:r35_1085, ~m? +# 35| mu35_1090(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1085 +# 35| r35_1091(bool) = Constant[0] : +# 35| v35_1092(void) = ConditionalBranch : r35_1091 #-----| False -> Block 78 #-----| True -> Block 1026 -# 253| Block 78 -# 253| r253_1(glval) = VariableAddress[x78] : -# 253| mu253_2(String) = Uninitialized[x78] : &:r253_1 -# 253| r253_3(glval) = FunctionAddress[String] : -# 253| v253_4(void) = Call[String] : func:r253_3, this:r253_1 -# 253| mu253_5(unknown) = ^CallSideEffect : ~m? -# 253| mu253_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r253_1 -# 254| r254_1(glval) = VariableAddress[x78] : -# 254| r254_2(glval) = FunctionAddress[~String] : -# 254| v254_3(void) = Call[~String] : func:r254_2, this:r254_1 -# 254| mu254_4(unknown) = ^CallSideEffect : ~m? -# 254| v254_5(void) = ^IndirectReadSideEffect[-1] : &:r254_1, ~m? -# 254| mu254_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r254_1 -# 254| r254_7(bool) = Constant[0] : -# 254| v254_8(void) = ConditionalBranch : r254_7 +# 35| Block 78 +# 35| r35_1093(glval) = VariableAddress[x78] : +# 35| mu35_1094(String) = Uninitialized[x78] : &:r35_1093 +# 35| r35_1095(glval) = FunctionAddress[String] : +# 35| v35_1096(void) = Call[String] : func:r35_1095, this:r35_1093 +# 35| mu35_1097(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1098(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1093 +# 35| r35_1099(glval) = VariableAddress[x78] : +# 35| r35_1100(glval) = FunctionAddress[~String] : +# 35| v35_1101(void) = Call[~String] : func:r35_1100, this:r35_1099 +# 35| mu35_1102(unknown) = ^CallSideEffect : ~m? +# 35| v35_1103(void) = ^IndirectReadSideEffect[-1] : &:r35_1099, ~m? +# 35| mu35_1104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1099 +# 35| r35_1105(bool) = Constant[0] : +# 35| v35_1106(void) = ConditionalBranch : r35_1105 #-----| False -> Block 79 #-----| True -> Block 1026 -# 256| Block 79 -# 256| r256_1(glval) = VariableAddress[x79] : -# 256| mu256_2(String) = Uninitialized[x79] : &:r256_1 -# 256| r256_3(glval) = FunctionAddress[String] : -# 256| v256_4(void) = Call[String] : func:r256_3, this:r256_1 -# 256| mu256_5(unknown) = ^CallSideEffect : ~m? -# 256| mu256_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r256_1 -# 257| r257_1(glval) = VariableAddress[x79] : -# 257| r257_2(glval) = FunctionAddress[~String] : -# 257| v257_3(void) = Call[~String] : func:r257_2, this:r257_1 -# 257| mu257_4(unknown) = ^CallSideEffect : ~m? -# 257| v257_5(void) = ^IndirectReadSideEffect[-1] : &:r257_1, ~m? -# 257| mu257_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r257_1 -# 257| r257_7(bool) = Constant[0] : -# 257| v257_8(void) = ConditionalBranch : r257_7 +# 35| Block 79 +# 35| r35_1107(glval) = VariableAddress[x79] : +# 35| mu35_1108(String) = Uninitialized[x79] : &:r35_1107 +# 35| r35_1109(glval) = FunctionAddress[String] : +# 35| v35_1110(void) = Call[String] : func:r35_1109, this:r35_1107 +# 35| mu35_1111(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1112(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1107 +# 35| r35_1113(glval) = VariableAddress[x79] : +# 35| r35_1114(glval) = FunctionAddress[~String] : +# 35| v35_1115(void) = Call[~String] : func:r35_1114, this:r35_1113 +# 35| mu35_1116(unknown) = ^CallSideEffect : ~m? +# 35| v35_1117(void) = ^IndirectReadSideEffect[-1] : &:r35_1113, ~m? +# 35| mu35_1118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1113 +# 35| r35_1119(bool) = Constant[0] : +# 35| v35_1120(void) = ConditionalBranch : r35_1119 #-----| False -> Block 80 #-----| True -> Block 1026 -# 259| Block 80 -# 259| r259_1(glval) = VariableAddress[x80] : -# 259| mu259_2(String) = Uninitialized[x80] : &:r259_1 -# 259| r259_3(glval) = FunctionAddress[String] : -# 259| v259_4(void) = Call[String] : func:r259_3, this:r259_1 -# 259| mu259_5(unknown) = ^CallSideEffect : ~m? -# 259| mu259_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r259_1 -# 260| r260_1(glval) = VariableAddress[x80] : -# 260| r260_2(glval) = FunctionAddress[~String] : -# 260| v260_3(void) = Call[~String] : func:r260_2, this:r260_1 -# 260| mu260_4(unknown) = ^CallSideEffect : ~m? -# 260| v260_5(void) = ^IndirectReadSideEffect[-1] : &:r260_1, ~m? -# 260| mu260_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r260_1 -# 260| r260_7(bool) = Constant[0] : -# 260| v260_8(void) = ConditionalBranch : r260_7 +# 35| Block 80 +# 35| r35_1121(glval) = VariableAddress[x80] : +# 35| mu35_1122(String) = Uninitialized[x80] : &:r35_1121 +# 35| r35_1123(glval) = FunctionAddress[String] : +# 35| v35_1124(void) = Call[String] : func:r35_1123, this:r35_1121 +# 35| mu35_1125(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1126(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1121 +# 35| r35_1127(glval) = VariableAddress[x80] : +# 35| r35_1128(glval) = FunctionAddress[~String] : +# 35| v35_1129(void) = Call[~String] : func:r35_1128, this:r35_1127 +# 35| mu35_1130(unknown) = ^CallSideEffect : ~m? +# 35| v35_1131(void) = ^IndirectReadSideEffect[-1] : &:r35_1127, ~m? +# 35| mu35_1132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1127 +# 35| r35_1133(bool) = Constant[0] : +# 35| v35_1134(void) = ConditionalBranch : r35_1133 #-----| False -> Block 81 #-----| True -> Block 1026 -# 262| Block 81 -# 262| r262_1(glval) = VariableAddress[x81] : -# 262| mu262_2(String) = Uninitialized[x81] : &:r262_1 -# 262| r262_3(glval) = FunctionAddress[String] : -# 262| v262_4(void) = Call[String] : func:r262_3, this:r262_1 -# 262| mu262_5(unknown) = ^CallSideEffect : ~m? -# 262| mu262_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r262_1 -# 263| r263_1(glval) = VariableAddress[x81] : -# 263| r263_2(glval) = FunctionAddress[~String] : -# 263| v263_3(void) = Call[~String] : func:r263_2, this:r263_1 -# 263| mu263_4(unknown) = ^CallSideEffect : ~m? -# 263| v263_5(void) = ^IndirectReadSideEffect[-1] : &:r263_1, ~m? -# 263| mu263_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r263_1 -# 263| r263_7(bool) = Constant[0] : -# 263| v263_8(void) = ConditionalBranch : r263_7 +# 35| Block 81 +# 35| r35_1135(glval) = VariableAddress[x81] : +# 35| mu35_1136(String) = Uninitialized[x81] : &:r35_1135 +# 35| r35_1137(glval) = FunctionAddress[String] : +# 35| v35_1138(void) = Call[String] : func:r35_1137, this:r35_1135 +# 35| mu35_1139(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1140(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1135 +# 35| r35_1141(glval) = VariableAddress[x81] : +# 35| r35_1142(glval) = FunctionAddress[~String] : +# 35| v35_1143(void) = Call[~String] : func:r35_1142, this:r35_1141 +# 35| mu35_1144(unknown) = ^CallSideEffect : ~m? +# 35| v35_1145(void) = ^IndirectReadSideEffect[-1] : &:r35_1141, ~m? +# 35| mu35_1146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1141 +# 35| r35_1147(bool) = Constant[0] : +# 35| v35_1148(void) = ConditionalBranch : r35_1147 #-----| False -> Block 82 #-----| True -> Block 1026 -# 265| Block 82 -# 265| r265_1(glval) = VariableAddress[x82] : -# 265| mu265_2(String) = Uninitialized[x82] : &:r265_1 -# 265| r265_3(glval) = FunctionAddress[String] : -# 265| v265_4(void) = Call[String] : func:r265_3, this:r265_1 -# 265| mu265_5(unknown) = ^CallSideEffect : ~m? -# 265| mu265_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r265_1 -# 266| r266_1(glval) = VariableAddress[x82] : -# 266| r266_2(glval) = FunctionAddress[~String] : -# 266| v266_3(void) = Call[~String] : func:r266_2, this:r266_1 -# 266| mu266_4(unknown) = ^CallSideEffect : ~m? -# 266| v266_5(void) = ^IndirectReadSideEffect[-1] : &:r266_1, ~m? -# 266| mu266_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r266_1 -# 266| r266_7(bool) = Constant[0] : -# 266| v266_8(void) = ConditionalBranch : r266_7 +# 35| Block 82 +# 35| r35_1149(glval) = VariableAddress[x82] : +# 35| mu35_1150(String) = Uninitialized[x82] : &:r35_1149 +# 35| r35_1151(glval) = FunctionAddress[String] : +# 35| v35_1152(void) = Call[String] : func:r35_1151, this:r35_1149 +# 35| mu35_1153(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1154(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1149 +# 35| r35_1155(glval) = VariableAddress[x82] : +# 35| r35_1156(glval) = FunctionAddress[~String] : +# 35| v35_1157(void) = Call[~String] : func:r35_1156, this:r35_1155 +# 35| mu35_1158(unknown) = ^CallSideEffect : ~m? +# 35| v35_1159(void) = ^IndirectReadSideEffect[-1] : &:r35_1155, ~m? +# 35| mu35_1160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1155 +# 35| r35_1161(bool) = Constant[0] : +# 35| v35_1162(void) = ConditionalBranch : r35_1161 #-----| False -> Block 83 #-----| True -> Block 1026 -# 268| Block 83 -# 268| r268_1(glval) = VariableAddress[x83] : -# 268| mu268_2(String) = Uninitialized[x83] : &:r268_1 -# 268| r268_3(glval) = FunctionAddress[String] : -# 268| v268_4(void) = Call[String] : func:r268_3, this:r268_1 -# 268| mu268_5(unknown) = ^CallSideEffect : ~m? -# 268| mu268_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r268_1 -# 269| r269_1(glval) = VariableAddress[x83] : -# 269| r269_2(glval) = FunctionAddress[~String] : -# 269| v269_3(void) = Call[~String] : func:r269_2, this:r269_1 -# 269| mu269_4(unknown) = ^CallSideEffect : ~m? -# 269| v269_5(void) = ^IndirectReadSideEffect[-1] : &:r269_1, ~m? -# 269| mu269_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r269_1 -# 269| r269_7(bool) = Constant[0] : -# 269| v269_8(void) = ConditionalBranch : r269_7 +# 35| Block 83 +# 35| r35_1163(glval) = VariableAddress[x83] : +# 35| mu35_1164(String) = Uninitialized[x83] : &:r35_1163 +# 35| r35_1165(glval) = FunctionAddress[String] : +# 35| v35_1166(void) = Call[String] : func:r35_1165, this:r35_1163 +# 35| mu35_1167(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1168(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1163 +# 35| r35_1169(glval) = VariableAddress[x83] : +# 35| r35_1170(glval) = FunctionAddress[~String] : +# 35| v35_1171(void) = Call[~String] : func:r35_1170, this:r35_1169 +# 35| mu35_1172(unknown) = ^CallSideEffect : ~m? +# 35| v35_1173(void) = ^IndirectReadSideEffect[-1] : &:r35_1169, ~m? +# 35| mu35_1174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1169 +# 35| r35_1175(bool) = Constant[0] : +# 35| v35_1176(void) = ConditionalBranch : r35_1175 #-----| False -> Block 84 #-----| True -> Block 1026 -# 271| Block 84 -# 271| r271_1(glval) = VariableAddress[x84] : -# 271| mu271_2(String) = Uninitialized[x84] : &:r271_1 -# 271| r271_3(glval) = FunctionAddress[String] : -# 271| v271_4(void) = Call[String] : func:r271_3, this:r271_1 -# 271| mu271_5(unknown) = ^CallSideEffect : ~m? -# 271| mu271_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r271_1 -# 272| r272_1(glval) = VariableAddress[x84] : -# 272| r272_2(glval) = FunctionAddress[~String] : -# 272| v272_3(void) = Call[~String] : func:r272_2, this:r272_1 -# 272| mu272_4(unknown) = ^CallSideEffect : ~m? -# 272| v272_5(void) = ^IndirectReadSideEffect[-1] : &:r272_1, ~m? -# 272| mu272_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r272_1 -# 272| r272_7(bool) = Constant[0] : -# 272| v272_8(void) = ConditionalBranch : r272_7 +# 35| Block 84 +# 35| r35_1177(glval) = VariableAddress[x84] : +# 35| mu35_1178(String) = Uninitialized[x84] : &:r35_1177 +# 35| r35_1179(glval) = FunctionAddress[String] : +# 35| v35_1180(void) = Call[String] : func:r35_1179, this:r35_1177 +# 35| mu35_1181(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1182(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1177 +# 35| r35_1183(glval) = VariableAddress[x84] : +# 35| r35_1184(glval) = FunctionAddress[~String] : +# 35| v35_1185(void) = Call[~String] : func:r35_1184, this:r35_1183 +# 35| mu35_1186(unknown) = ^CallSideEffect : ~m? +# 35| v35_1187(void) = ^IndirectReadSideEffect[-1] : &:r35_1183, ~m? +# 35| mu35_1188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1183 +# 35| r35_1189(bool) = Constant[0] : +# 35| v35_1190(void) = ConditionalBranch : r35_1189 #-----| False -> Block 85 #-----| True -> Block 1026 -# 274| Block 85 -# 274| r274_1(glval) = VariableAddress[x85] : -# 274| mu274_2(String) = Uninitialized[x85] : &:r274_1 -# 274| r274_3(glval) = FunctionAddress[String] : -# 274| v274_4(void) = Call[String] : func:r274_3, this:r274_1 -# 274| mu274_5(unknown) = ^CallSideEffect : ~m? -# 274| mu274_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r274_1 -# 275| r275_1(glval) = VariableAddress[x85] : -# 275| r275_2(glval) = FunctionAddress[~String] : -# 275| v275_3(void) = Call[~String] : func:r275_2, this:r275_1 -# 275| mu275_4(unknown) = ^CallSideEffect : ~m? -# 275| v275_5(void) = ^IndirectReadSideEffect[-1] : &:r275_1, ~m? -# 275| mu275_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r275_1 -# 275| r275_7(bool) = Constant[0] : -# 275| v275_8(void) = ConditionalBranch : r275_7 +# 35| Block 85 +# 35| r35_1191(glval) = VariableAddress[x85] : +# 35| mu35_1192(String) = Uninitialized[x85] : &:r35_1191 +# 35| r35_1193(glval) = FunctionAddress[String] : +# 35| v35_1194(void) = Call[String] : func:r35_1193, this:r35_1191 +# 35| mu35_1195(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1196(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1191 +# 35| r35_1197(glval) = VariableAddress[x85] : +# 35| r35_1198(glval) = FunctionAddress[~String] : +# 35| v35_1199(void) = Call[~String] : func:r35_1198, this:r35_1197 +# 35| mu35_1200(unknown) = ^CallSideEffect : ~m? +# 35| v35_1201(void) = ^IndirectReadSideEffect[-1] : &:r35_1197, ~m? +# 35| mu35_1202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1197 +# 35| r35_1203(bool) = Constant[0] : +# 35| v35_1204(void) = ConditionalBranch : r35_1203 #-----| False -> Block 86 #-----| True -> Block 1026 -# 277| Block 86 -# 277| r277_1(glval) = VariableAddress[x86] : -# 277| mu277_2(String) = Uninitialized[x86] : &:r277_1 -# 277| r277_3(glval) = FunctionAddress[String] : -# 277| v277_4(void) = Call[String] : func:r277_3, this:r277_1 -# 277| mu277_5(unknown) = ^CallSideEffect : ~m? -# 277| mu277_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r277_1 -# 278| r278_1(glval) = VariableAddress[x86] : -# 278| r278_2(glval) = FunctionAddress[~String] : -# 278| v278_3(void) = Call[~String] : func:r278_2, this:r278_1 -# 278| mu278_4(unknown) = ^CallSideEffect : ~m? -# 278| v278_5(void) = ^IndirectReadSideEffect[-1] : &:r278_1, ~m? -# 278| mu278_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r278_1 -# 278| r278_7(bool) = Constant[0] : -# 278| v278_8(void) = ConditionalBranch : r278_7 +# 35| Block 86 +# 35| r35_1205(glval) = VariableAddress[x86] : +# 35| mu35_1206(String) = Uninitialized[x86] : &:r35_1205 +# 35| r35_1207(glval) = FunctionAddress[String] : +# 35| v35_1208(void) = Call[String] : func:r35_1207, this:r35_1205 +# 35| mu35_1209(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1210(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1205 +# 35| r35_1211(glval) = VariableAddress[x86] : +# 35| r35_1212(glval) = FunctionAddress[~String] : +# 35| v35_1213(void) = Call[~String] : func:r35_1212, this:r35_1211 +# 35| mu35_1214(unknown) = ^CallSideEffect : ~m? +# 35| v35_1215(void) = ^IndirectReadSideEffect[-1] : &:r35_1211, ~m? +# 35| mu35_1216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1211 +# 35| r35_1217(bool) = Constant[0] : +# 35| v35_1218(void) = ConditionalBranch : r35_1217 #-----| False -> Block 87 #-----| True -> Block 1026 -# 280| Block 87 -# 280| r280_1(glval) = VariableAddress[x87] : -# 280| mu280_2(String) = Uninitialized[x87] : &:r280_1 -# 280| r280_3(glval) = FunctionAddress[String] : -# 280| v280_4(void) = Call[String] : func:r280_3, this:r280_1 -# 280| mu280_5(unknown) = ^CallSideEffect : ~m? -# 280| mu280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r280_1 -# 281| r281_1(glval) = VariableAddress[x87] : -# 281| r281_2(glval) = FunctionAddress[~String] : -# 281| v281_3(void) = Call[~String] : func:r281_2, this:r281_1 -# 281| mu281_4(unknown) = ^CallSideEffect : ~m? -# 281| v281_5(void) = ^IndirectReadSideEffect[-1] : &:r281_1, ~m? -# 281| mu281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r281_1 -# 281| r281_7(bool) = Constant[0] : -# 281| v281_8(void) = ConditionalBranch : r281_7 +# 35| Block 87 +# 35| r35_1219(glval) = VariableAddress[x87] : +# 35| mu35_1220(String) = Uninitialized[x87] : &:r35_1219 +# 35| r35_1221(glval) = FunctionAddress[String] : +# 35| v35_1222(void) = Call[String] : func:r35_1221, this:r35_1219 +# 35| mu35_1223(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1224(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1219 +# 35| r35_1225(glval) = VariableAddress[x87] : +# 35| r35_1226(glval) = FunctionAddress[~String] : +# 35| v35_1227(void) = Call[~String] : func:r35_1226, this:r35_1225 +# 35| mu35_1228(unknown) = ^CallSideEffect : ~m? +# 35| v35_1229(void) = ^IndirectReadSideEffect[-1] : &:r35_1225, ~m? +# 35| mu35_1230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1225 +# 35| r35_1231(bool) = Constant[0] : +# 35| v35_1232(void) = ConditionalBranch : r35_1231 #-----| False -> Block 88 #-----| True -> Block 1026 -# 283| Block 88 -# 283| r283_1(glval) = VariableAddress[x88] : -# 283| mu283_2(String) = Uninitialized[x88] : &:r283_1 -# 283| r283_3(glval) = FunctionAddress[String] : -# 283| v283_4(void) = Call[String] : func:r283_3, this:r283_1 -# 283| mu283_5(unknown) = ^CallSideEffect : ~m? -# 283| mu283_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r283_1 -# 284| r284_1(glval) = VariableAddress[x88] : -# 284| r284_2(glval) = FunctionAddress[~String] : -# 284| v284_3(void) = Call[~String] : func:r284_2, this:r284_1 -# 284| mu284_4(unknown) = ^CallSideEffect : ~m? -# 284| v284_5(void) = ^IndirectReadSideEffect[-1] : &:r284_1, ~m? -# 284| mu284_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r284_1 -# 284| r284_7(bool) = Constant[0] : -# 284| v284_8(void) = ConditionalBranch : r284_7 +# 35| Block 88 +# 35| r35_1233(glval) = VariableAddress[x88] : +# 35| mu35_1234(String) = Uninitialized[x88] : &:r35_1233 +# 35| r35_1235(glval) = FunctionAddress[String] : +# 35| v35_1236(void) = Call[String] : func:r35_1235, this:r35_1233 +# 35| mu35_1237(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1238(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1233 +# 35| r35_1239(glval) = VariableAddress[x88] : +# 35| r35_1240(glval) = FunctionAddress[~String] : +# 35| v35_1241(void) = Call[~String] : func:r35_1240, this:r35_1239 +# 35| mu35_1242(unknown) = ^CallSideEffect : ~m? +# 35| v35_1243(void) = ^IndirectReadSideEffect[-1] : &:r35_1239, ~m? +# 35| mu35_1244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1239 +# 35| r35_1245(bool) = Constant[0] : +# 35| v35_1246(void) = ConditionalBranch : r35_1245 #-----| False -> Block 89 #-----| True -> Block 1026 -# 286| Block 89 -# 286| r286_1(glval) = VariableAddress[x89] : -# 286| mu286_2(String) = Uninitialized[x89] : &:r286_1 -# 286| r286_3(glval) = FunctionAddress[String] : -# 286| v286_4(void) = Call[String] : func:r286_3, this:r286_1 -# 286| mu286_5(unknown) = ^CallSideEffect : ~m? -# 286| mu286_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r286_1 -# 287| r287_1(glval) = VariableAddress[x89] : -# 287| r287_2(glval) = FunctionAddress[~String] : -# 287| v287_3(void) = Call[~String] : func:r287_2, this:r287_1 -# 287| mu287_4(unknown) = ^CallSideEffect : ~m? -# 287| v287_5(void) = ^IndirectReadSideEffect[-1] : &:r287_1, ~m? -# 287| mu287_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r287_1 -# 287| r287_7(bool) = Constant[0] : -# 287| v287_8(void) = ConditionalBranch : r287_7 +# 35| Block 89 +# 35| r35_1247(glval) = VariableAddress[x89] : +# 35| mu35_1248(String) = Uninitialized[x89] : &:r35_1247 +# 35| r35_1249(glval) = FunctionAddress[String] : +# 35| v35_1250(void) = Call[String] : func:r35_1249, this:r35_1247 +# 35| mu35_1251(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1252(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1247 +# 35| r35_1253(glval) = VariableAddress[x89] : +# 35| r35_1254(glval) = FunctionAddress[~String] : +# 35| v35_1255(void) = Call[~String] : func:r35_1254, this:r35_1253 +# 35| mu35_1256(unknown) = ^CallSideEffect : ~m? +# 35| v35_1257(void) = ^IndirectReadSideEffect[-1] : &:r35_1253, ~m? +# 35| mu35_1258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1253 +# 35| r35_1259(bool) = Constant[0] : +# 35| v35_1260(void) = ConditionalBranch : r35_1259 #-----| False -> Block 90 #-----| True -> Block 1026 -# 289| Block 90 -# 289| r289_1(glval) = VariableAddress[x90] : -# 289| mu289_2(String) = Uninitialized[x90] : &:r289_1 -# 289| r289_3(glval) = FunctionAddress[String] : -# 289| v289_4(void) = Call[String] : func:r289_3, this:r289_1 -# 289| mu289_5(unknown) = ^CallSideEffect : ~m? -# 289| mu289_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r289_1 -# 290| r290_1(glval) = VariableAddress[x90] : -# 290| r290_2(glval) = FunctionAddress[~String] : -# 290| v290_3(void) = Call[~String] : func:r290_2, this:r290_1 -# 290| mu290_4(unknown) = ^CallSideEffect : ~m? -# 290| v290_5(void) = ^IndirectReadSideEffect[-1] : &:r290_1, ~m? -# 290| mu290_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r290_1 -# 290| r290_7(bool) = Constant[0] : -# 290| v290_8(void) = ConditionalBranch : r290_7 +# 35| Block 90 +# 35| r35_1261(glval) = VariableAddress[x90] : +# 35| mu35_1262(String) = Uninitialized[x90] : &:r35_1261 +# 35| r35_1263(glval) = FunctionAddress[String] : +# 35| v35_1264(void) = Call[String] : func:r35_1263, this:r35_1261 +# 35| mu35_1265(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1266(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1261 +# 35| r35_1267(glval) = VariableAddress[x90] : +# 35| r35_1268(glval) = FunctionAddress[~String] : +# 35| v35_1269(void) = Call[~String] : func:r35_1268, this:r35_1267 +# 35| mu35_1270(unknown) = ^CallSideEffect : ~m? +# 35| v35_1271(void) = ^IndirectReadSideEffect[-1] : &:r35_1267, ~m? +# 35| mu35_1272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1267 +# 35| r35_1273(bool) = Constant[0] : +# 35| v35_1274(void) = ConditionalBranch : r35_1273 #-----| False -> Block 91 #-----| True -> Block 1026 -# 292| Block 91 -# 292| r292_1(glval) = VariableAddress[x91] : -# 292| mu292_2(String) = Uninitialized[x91] : &:r292_1 -# 292| r292_3(glval) = FunctionAddress[String] : -# 292| v292_4(void) = Call[String] : func:r292_3, this:r292_1 -# 292| mu292_5(unknown) = ^CallSideEffect : ~m? -# 292| mu292_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r292_1 -# 293| r293_1(glval) = VariableAddress[x91] : -# 293| r293_2(glval) = FunctionAddress[~String] : -# 293| v293_3(void) = Call[~String] : func:r293_2, this:r293_1 -# 293| mu293_4(unknown) = ^CallSideEffect : ~m? -# 293| v293_5(void) = ^IndirectReadSideEffect[-1] : &:r293_1, ~m? -# 293| mu293_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r293_1 -# 293| r293_7(bool) = Constant[0] : -# 293| v293_8(void) = ConditionalBranch : r293_7 +# 35| Block 91 +# 35| r35_1275(glval) = VariableAddress[x91] : +# 35| mu35_1276(String) = Uninitialized[x91] : &:r35_1275 +# 35| r35_1277(glval) = FunctionAddress[String] : +# 35| v35_1278(void) = Call[String] : func:r35_1277, this:r35_1275 +# 35| mu35_1279(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1280(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1275 +# 35| r35_1281(glval) = VariableAddress[x91] : +# 35| r35_1282(glval) = FunctionAddress[~String] : +# 35| v35_1283(void) = Call[~String] : func:r35_1282, this:r35_1281 +# 35| mu35_1284(unknown) = ^CallSideEffect : ~m? +# 35| v35_1285(void) = ^IndirectReadSideEffect[-1] : &:r35_1281, ~m? +# 35| mu35_1286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1281 +# 35| r35_1287(bool) = Constant[0] : +# 35| v35_1288(void) = ConditionalBranch : r35_1287 #-----| False -> Block 92 #-----| True -> Block 1026 -# 295| Block 92 -# 295| r295_1(glval) = VariableAddress[x92] : -# 295| mu295_2(String) = Uninitialized[x92] : &:r295_1 -# 295| r295_3(glval) = FunctionAddress[String] : -# 295| v295_4(void) = Call[String] : func:r295_3, this:r295_1 -# 295| mu295_5(unknown) = ^CallSideEffect : ~m? -# 295| mu295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r295_1 -# 296| r296_1(glval) = VariableAddress[x92] : -# 296| r296_2(glval) = FunctionAddress[~String] : -# 296| v296_3(void) = Call[~String] : func:r296_2, this:r296_1 -# 296| mu296_4(unknown) = ^CallSideEffect : ~m? -# 296| v296_5(void) = ^IndirectReadSideEffect[-1] : &:r296_1, ~m? -# 296| mu296_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r296_1 -# 296| r296_7(bool) = Constant[0] : -# 296| v296_8(void) = ConditionalBranch : r296_7 +# 35| Block 92 +# 35| r35_1289(glval) = VariableAddress[x92] : +# 35| mu35_1290(String) = Uninitialized[x92] : &:r35_1289 +# 35| r35_1291(glval) = FunctionAddress[String] : +# 35| v35_1292(void) = Call[String] : func:r35_1291, this:r35_1289 +# 35| mu35_1293(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1294(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1289 +# 35| r35_1295(glval) = VariableAddress[x92] : +# 35| r35_1296(glval) = FunctionAddress[~String] : +# 35| v35_1297(void) = Call[~String] : func:r35_1296, this:r35_1295 +# 35| mu35_1298(unknown) = ^CallSideEffect : ~m? +# 35| v35_1299(void) = ^IndirectReadSideEffect[-1] : &:r35_1295, ~m? +# 35| mu35_1300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1295 +# 35| r35_1301(bool) = Constant[0] : +# 35| v35_1302(void) = ConditionalBranch : r35_1301 #-----| False -> Block 93 #-----| True -> Block 1026 -# 298| Block 93 -# 298| r298_1(glval) = VariableAddress[x93] : -# 298| mu298_2(String) = Uninitialized[x93] : &:r298_1 -# 298| r298_3(glval) = FunctionAddress[String] : -# 298| v298_4(void) = Call[String] : func:r298_3, this:r298_1 -# 298| mu298_5(unknown) = ^CallSideEffect : ~m? -# 298| mu298_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r298_1 -# 299| r299_1(glval) = VariableAddress[x93] : -# 299| r299_2(glval) = FunctionAddress[~String] : -# 299| v299_3(void) = Call[~String] : func:r299_2, this:r299_1 -# 299| mu299_4(unknown) = ^CallSideEffect : ~m? -# 299| v299_5(void) = ^IndirectReadSideEffect[-1] : &:r299_1, ~m? -# 299| mu299_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r299_1 -# 299| r299_7(bool) = Constant[0] : -# 299| v299_8(void) = ConditionalBranch : r299_7 +# 35| Block 93 +# 35| r35_1303(glval) = VariableAddress[x93] : +# 35| mu35_1304(String) = Uninitialized[x93] : &:r35_1303 +# 35| r35_1305(glval) = FunctionAddress[String] : +# 35| v35_1306(void) = Call[String] : func:r35_1305, this:r35_1303 +# 35| mu35_1307(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1308(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1303 +# 35| r35_1309(glval) = VariableAddress[x93] : +# 35| r35_1310(glval) = FunctionAddress[~String] : +# 35| v35_1311(void) = Call[~String] : func:r35_1310, this:r35_1309 +# 35| mu35_1312(unknown) = ^CallSideEffect : ~m? +# 35| v35_1313(void) = ^IndirectReadSideEffect[-1] : &:r35_1309, ~m? +# 35| mu35_1314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1309 +# 35| r35_1315(bool) = Constant[0] : +# 35| v35_1316(void) = ConditionalBranch : r35_1315 #-----| False -> Block 94 #-----| True -> Block 1026 -# 301| Block 94 -# 301| r301_1(glval) = VariableAddress[x94] : -# 301| mu301_2(String) = Uninitialized[x94] : &:r301_1 -# 301| r301_3(glval) = FunctionAddress[String] : -# 301| v301_4(void) = Call[String] : func:r301_3, this:r301_1 -# 301| mu301_5(unknown) = ^CallSideEffect : ~m? -# 301| mu301_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r301_1 -# 302| r302_1(glval) = VariableAddress[x94] : -# 302| r302_2(glval) = FunctionAddress[~String] : -# 302| v302_3(void) = Call[~String] : func:r302_2, this:r302_1 -# 302| mu302_4(unknown) = ^CallSideEffect : ~m? -# 302| v302_5(void) = ^IndirectReadSideEffect[-1] : &:r302_1, ~m? -# 302| mu302_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r302_1 -# 302| r302_7(bool) = Constant[0] : -# 302| v302_8(void) = ConditionalBranch : r302_7 +# 35| Block 94 +# 35| r35_1317(glval) = VariableAddress[x94] : +# 35| mu35_1318(String) = Uninitialized[x94] : &:r35_1317 +# 35| r35_1319(glval) = FunctionAddress[String] : +# 35| v35_1320(void) = Call[String] : func:r35_1319, this:r35_1317 +# 35| mu35_1321(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1322(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1317 +# 35| r35_1323(glval) = VariableAddress[x94] : +# 35| r35_1324(glval) = FunctionAddress[~String] : +# 35| v35_1325(void) = Call[~String] : func:r35_1324, this:r35_1323 +# 35| mu35_1326(unknown) = ^CallSideEffect : ~m? +# 35| v35_1327(void) = ^IndirectReadSideEffect[-1] : &:r35_1323, ~m? +# 35| mu35_1328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1323 +# 35| r35_1329(bool) = Constant[0] : +# 35| v35_1330(void) = ConditionalBranch : r35_1329 #-----| False -> Block 95 #-----| True -> Block 1026 -# 304| Block 95 -# 304| r304_1(glval) = VariableAddress[x95] : -# 304| mu304_2(String) = Uninitialized[x95] : &:r304_1 -# 304| r304_3(glval) = FunctionAddress[String] : -# 304| v304_4(void) = Call[String] : func:r304_3, this:r304_1 -# 304| mu304_5(unknown) = ^CallSideEffect : ~m? -# 304| mu304_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r304_1 -# 305| r305_1(glval) = VariableAddress[x95] : -# 305| r305_2(glval) = FunctionAddress[~String] : -# 305| v305_3(void) = Call[~String] : func:r305_2, this:r305_1 -# 305| mu305_4(unknown) = ^CallSideEffect : ~m? -# 305| v305_5(void) = ^IndirectReadSideEffect[-1] : &:r305_1, ~m? -# 305| mu305_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r305_1 -# 305| r305_7(bool) = Constant[0] : -# 305| v305_8(void) = ConditionalBranch : r305_7 +# 35| Block 95 +# 35| r35_1331(glval) = VariableAddress[x95] : +# 35| mu35_1332(String) = Uninitialized[x95] : &:r35_1331 +# 35| r35_1333(glval) = FunctionAddress[String] : +# 35| v35_1334(void) = Call[String] : func:r35_1333, this:r35_1331 +# 35| mu35_1335(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1336(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1331 +# 35| r35_1337(glval) = VariableAddress[x95] : +# 35| r35_1338(glval) = FunctionAddress[~String] : +# 35| v35_1339(void) = Call[~String] : func:r35_1338, this:r35_1337 +# 35| mu35_1340(unknown) = ^CallSideEffect : ~m? +# 35| v35_1341(void) = ^IndirectReadSideEffect[-1] : &:r35_1337, ~m? +# 35| mu35_1342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1337 +# 35| r35_1343(bool) = Constant[0] : +# 35| v35_1344(void) = ConditionalBranch : r35_1343 #-----| False -> Block 96 #-----| True -> Block 1026 -# 307| Block 96 -# 307| r307_1(glval) = VariableAddress[x96] : -# 307| mu307_2(String) = Uninitialized[x96] : &:r307_1 -# 307| r307_3(glval) = FunctionAddress[String] : -# 307| v307_4(void) = Call[String] : func:r307_3, this:r307_1 -# 307| mu307_5(unknown) = ^CallSideEffect : ~m? -# 307| mu307_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r307_1 -# 308| r308_1(glval) = VariableAddress[x96] : -# 308| r308_2(glval) = FunctionAddress[~String] : -# 308| v308_3(void) = Call[~String] : func:r308_2, this:r308_1 -# 308| mu308_4(unknown) = ^CallSideEffect : ~m? -# 308| v308_5(void) = ^IndirectReadSideEffect[-1] : &:r308_1, ~m? -# 308| mu308_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r308_1 -# 308| r308_7(bool) = Constant[0] : -# 308| v308_8(void) = ConditionalBranch : r308_7 +# 35| Block 96 +# 35| r35_1345(glval) = VariableAddress[x96] : +# 35| mu35_1346(String) = Uninitialized[x96] : &:r35_1345 +# 35| r35_1347(glval) = FunctionAddress[String] : +# 35| v35_1348(void) = Call[String] : func:r35_1347, this:r35_1345 +# 35| mu35_1349(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1350(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1345 +# 35| r35_1351(glval) = VariableAddress[x96] : +# 35| r35_1352(glval) = FunctionAddress[~String] : +# 35| v35_1353(void) = Call[~String] : func:r35_1352, this:r35_1351 +# 35| mu35_1354(unknown) = ^CallSideEffect : ~m? +# 35| v35_1355(void) = ^IndirectReadSideEffect[-1] : &:r35_1351, ~m? +# 35| mu35_1356(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1351 +# 35| r35_1357(bool) = Constant[0] : +# 35| v35_1358(void) = ConditionalBranch : r35_1357 #-----| False -> Block 97 #-----| True -> Block 1026 -# 310| Block 97 -# 310| r310_1(glval) = VariableAddress[x97] : -# 310| mu310_2(String) = Uninitialized[x97] : &:r310_1 -# 310| r310_3(glval) = FunctionAddress[String] : -# 310| v310_4(void) = Call[String] : func:r310_3, this:r310_1 -# 310| mu310_5(unknown) = ^CallSideEffect : ~m? -# 310| mu310_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r310_1 -# 311| r311_1(glval) = VariableAddress[x97] : -# 311| r311_2(glval) = FunctionAddress[~String] : -# 311| v311_3(void) = Call[~String] : func:r311_2, this:r311_1 -# 311| mu311_4(unknown) = ^CallSideEffect : ~m? -# 311| v311_5(void) = ^IndirectReadSideEffect[-1] : &:r311_1, ~m? -# 311| mu311_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r311_1 -# 311| r311_7(bool) = Constant[0] : -# 311| v311_8(void) = ConditionalBranch : r311_7 +# 35| Block 97 +# 35| r35_1359(glval) = VariableAddress[x97] : +# 35| mu35_1360(String) = Uninitialized[x97] : &:r35_1359 +# 35| r35_1361(glval) = FunctionAddress[String] : +# 35| v35_1362(void) = Call[String] : func:r35_1361, this:r35_1359 +# 35| mu35_1363(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1364(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1359 +# 35| r35_1365(glval) = VariableAddress[x97] : +# 35| r35_1366(glval) = FunctionAddress[~String] : +# 35| v35_1367(void) = Call[~String] : func:r35_1366, this:r35_1365 +# 35| mu35_1368(unknown) = ^CallSideEffect : ~m? +# 35| v35_1369(void) = ^IndirectReadSideEffect[-1] : &:r35_1365, ~m? +# 35| mu35_1370(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1365 +# 35| r35_1371(bool) = Constant[0] : +# 35| v35_1372(void) = ConditionalBranch : r35_1371 #-----| False -> Block 98 #-----| True -> Block 1026 -# 313| Block 98 -# 313| r313_1(glval) = VariableAddress[x98] : -# 313| mu313_2(String) = Uninitialized[x98] : &:r313_1 -# 313| r313_3(glval) = FunctionAddress[String] : -# 313| v313_4(void) = Call[String] : func:r313_3, this:r313_1 -# 313| mu313_5(unknown) = ^CallSideEffect : ~m? -# 313| mu313_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r313_1 -# 314| r314_1(glval) = VariableAddress[x98] : -# 314| r314_2(glval) = FunctionAddress[~String] : -# 314| v314_3(void) = Call[~String] : func:r314_2, this:r314_1 -# 314| mu314_4(unknown) = ^CallSideEffect : ~m? -# 314| v314_5(void) = ^IndirectReadSideEffect[-1] : &:r314_1, ~m? -# 314| mu314_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r314_1 -# 314| r314_7(bool) = Constant[0] : -# 314| v314_8(void) = ConditionalBranch : r314_7 +# 35| Block 98 +# 35| r35_1373(glval) = VariableAddress[x98] : +# 35| mu35_1374(String) = Uninitialized[x98] : &:r35_1373 +# 35| r35_1375(glval) = FunctionAddress[String] : +# 35| v35_1376(void) = Call[String] : func:r35_1375, this:r35_1373 +# 35| mu35_1377(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1378(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1373 +# 35| r35_1379(glval) = VariableAddress[x98] : +# 35| r35_1380(glval) = FunctionAddress[~String] : +# 35| v35_1381(void) = Call[~String] : func:r35_1380, this:r35_1379 +# 35| mu35_1382(unknown) = ^CallSideEffect : ~m? +# 35| v35_1383(void) = ^IndirectReadSideEffect[-1] : &:r35_1379, ~m? +# 35| mu35_1384(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1379 +# 35| r35_1385(bool) = Constant[0] : +# 35| v35_1386(void) = ConditionalBranch : r35_1385 #-----| False -> Block 99 #-----| True -> Block 1026 -# 316| Block 99 -# 316| r316_1(glval) = VariableAddress[x99] : -# 316| mu316_2(String) = Uninitialized[x99] : &:r316_1 -# 316| r316_3(glval) = FunctionAddress[String] : -# 316| v316_4(void) = Call[String] : func:r316_3, this:r316_1 -# 316| mu316_5(unknown) = ^CallSideEffect : ~m? -# 316| mu316_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r316_1 -# 317| r317_1(glval) = VariableAddress[x99] : -# 317| r317_2(glval) = FunctionAddress[~String] : -# 317| v317_3(void) = Call[~String] : func:r317_2, this:r317_1 -# 317| mu317_4(unknown) = ^CallSideEffect : ~m? -# 317| v317_5(void) = ^IndirectReadSideEffect[-1] : &:r317_1, ~m? -# 317| mu317_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r317_1 -# 317| r317_7(bool) = Constant[0] : -# 317| v317_8(void) = ConditionalBranch : r317_7 +# 35| Block 99 +# 35| r35_1387(glval) = VariableAddress[x99] : +# 35| mu35_1388(String) = Uninitialized[x99] : &:r35_1387 +# 35| r35_1389(glval) = FunctionAddress[String] : +# 35| v35_1390(void) = Call[String] : func:r35_1389, this:r35_1387 +# 35| mu35_1391(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1392(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1387 +# 35| r35_1393(glval) = VariableAddress[x99] : +# 35| r35_1394(glval) = FunctionAddress[~String] : +# 35| v35_1395(void) = Call[~String] : func:r35_1394, this:r35_1393 +# 35| mu35_1396(unknown) = ^CallSideEffect : ~m? +# 35| v35_1397(void) = ^IndirectReadSideEffect[-1] : &:r35_1393, ~m? +# 35| mu35_1398(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1393 +# 35| r35_1399(bool) = Constant[0] : +# 35| v35_1400(void) = ConditionalBranch : r35_1399 #-----| False -> Block 100 #-----| True -> Block 1026 -# 319| Block 100 -# 319| r319_1(glval) = VariableAddress[x100] : -# 319| mu319_2(String) = Uninitialized[x100] : &:r319_1 -# 319| r319_3(glval) = FunctionAddress[String] : -# 319| v319_4(void) = Call[String] : func:r319_3, this:r319_1 -# 319| mu319_5(unknown) = ^CallSideEffect : ~m? -# 319| mu319_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r319_1 -# 320| r320_1(glval) = VariableAddress[x100] : -# 320| r320_2(glval) = FunctionAddress[~String] : -# 320| v320_3(void) = Call[~String] : func:r320_2, this:r320_1 -# 320| mu320_4(unknown) = ^CallSideEffect : ~m? -# 320| v320_5(void) = ^IndirectReadSideEffect[-1] : &:r320_1, ~m? -# 320| mu320_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r320_1 -# 320| r320_7(bool) = Constant[0] : -# 320| v320_8(void) = ConditionalBranch : r320_7 +# 35| Block 100 +# 35| r35_1401(glval) = VariableAddress[x100] : +# 35| mu35_1402(String) = Uninitialized[x100] : &:r35_1401 +# 35| r35_1403(glval) = FunctionAddress[String] : +# 35| v35_1404(void) = Call[String] : func:r35_1403, this:r35_1401 +# 35| mu35_1405(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1406(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1401 +# 35| r35_1407(glval) = VariableAddress[x100] : +# 35| r35_1408(glval) = FunctionAddress[~String] : +# 35| v35_1409(void) = Call[~String] : func:r35_1408, this:r35_1407 +# 35| mu35_1410(unknown) = ^CallSideEffect : ~m? +# 35| v35_1411(void) = ^IndirectReadSideEffect[-1] : &:r35_1407, ~m? +# 35| mu35_1412(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1407 +# 35| r35_1413(bool) = Constant[0] : +# 35| v35_1414(void) = ConditionalBranch : r35_1413 #-----| False -> Block 101 #-----| True -> Block 1026 -# 322| Block 101 -# 322| r322_1(glval) = VariableAddress[x101] : -# 322| mu322_2(String) = Uninitialized[x101] : &:r322_1 -# 322| r322_3(glval) = FunctionAddress[String] : -# 322| v322_4(void) = Call[String] : func:r322_3, this:r322_1 -# 322| mu322_5(unknown) = ^CallSideEffect : ~m? -# 322| mu322_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r322_1 -# 323| r323_1(glval) = VariableAddress[x101] : -# 323| r323_2(glval) = FunctionAddress[~String] : -# 323| v323_3(void) = Call[~String] : func:r323_2, this:r323_1 -# 323| mu323_4(unknown) = ^CallSideEffect : ~m? -# 323| v323_5(void) = ^IndirectReadSideEffect[-1] : &:r323_1, ~m? -# 323| mu323_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r323_1 -# 323| r323_7(bool) = Constant[0] : -# 323| v323_8(void) = ConditionalBranch : r323_7 +# 35| Block 101 +# 35| r35_1415(glval) = VariableAddress[x101] : +# 35| mu35_1416(String) = Uninitialized[x101] : &:r35_1415 +# 35| r35_1417(glval) = FunctionAddress[String] : +# 35| v35_1418(void) = Call[String] : func:r35_1417, this:r35_1415 +# 35| mu35_1419(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1420(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1415 +# 35| r35_1421(glval) = VariableAddress[x101] : +# 35| r35_1422(glval) = FunctionAddress[~String] : +# 35| v35_1423(void) = Call[~String] : func:r35_1422, this:r35_1421 +# 35| mu35_1424(unknown) = ^CallSideEffect : ~m? +# 35| v35_1425(void) = ^IndirectReadSideEffect[-1] : &:r35_1421, ~m? +# 35| mu35_1426(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1421 +# 35| r35_1427(bool) = Constant[0] : +# 35| v35_1428(void) = ConditionalBranch : r35_1427 #-----| False -> Block 102 #-----| True -> Block 1026 -# 325| Block 102 -# 325| r325_1(glval) = VariableAddress[x102] : -# 325| mu325_2(String) = Uninitialized[x102] : &:r325_1 -# 325| r325_3(glval) = FunctionAddress[String] : -# 325| v325_4(void) = Call[String] : func:r325_3, this:r325_1 -# 325| mu325_5(unknown) = ^CallSideEffect : ~m? -# 325| mu325_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r325_1 -# 326| r326_1(glval) = VariableAddress[x102] : -# 326| r326_2(glval) = FunctionAddress[~String] : -# 326| v326_3(void) = Call[~String] : func:r326_2, this:r326_1 -# 326| mu326_4(unknown) = ^CallSideEffect : ~m? -# 326| v326_5(void) = ^IndirectReadSideEffect[-1] : &:r326_1, ~m? -# 326| mu326_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r326_1 -# 326| r326_7(bool) = Constant[0] : -# 326| v326_8(void) = ConditionalBranch : r326_7 +# 35| Block 102 +# 35| r35_1429(glval) = VariableAddress[x102] : +# 35| mu35_1430(String) = Uninitialized[x102] : &:r35_1429 +# 35| r35_1431(glval) = FunctionAddress[String] : +# 35| v35_1432(void) = Call[String] : func:r35_1431, this:r35_1429 +# 35| mu35_1433(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1434(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1429 +# 35| r35_1435(glval) = VariableAddress[x102] : +# 35| r35_1436(glval) = FunctionAddress[~String] : +# 35| v35_1437(void) = Call[~String] : func:r35_1436, this:r35_1435 +# 35| mu35_1438(unknown) = ^CallSideEffect : ~m? +# 35| v35_1439(void) = ^IndirectReadSideEffect[-1] : &:r35_1435, ~m? +# 35| mu35_1440(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1435 +# 35| r35_1441(bool) = Constant[0] : +# 35| v35_1442(void) = ConditionalBranch : r35_1441 #-----| False -> Block 103 #-----| True -> Block 1026 -# 328| Block 103 -# 328| r328_1(glval) = VariableAddress[x103] : -# 328| mu328_2(String) = Uninitialized[x103] : &:r328_1 -# 328| r328_3(glval) = FunctionAddress[String] : -# 328| v328_4(void) = Call[String] : func:r328_3, this:r328_1 -# 328| mu328_5(unknown) = ^CallSideEffect : ~m? -# 328| mu328_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r328_1 -# 329| r329_1(glval) = VariableAddress[x103] : -# 329| r329_2(glval) = FunctionAddress[~String] : -# 329| v329_3(void) = Call[~String] : func:r329_2, this:r329_1 -# 329| mu329_4(unknown) = ^CallSideEffect : ~m? -# 329| v329_5(void) = ^IndirectReadSideEffect[-1] : &:r329_1, ~m? -# 329| mu329_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r329_1 -# 329| r329_7(bool) = Constant[0] : -# 329| v329_8(void) = ConditionalBranch : r329_7 +# 35| Block 103 +# 35| r35_1443(glval) = VariableAddress[x103] : +# 35| mu35_1444(String) = Uninitialized[x103] : &:r35_1443 +# 35| r35_1445(glval) = FunctionAddress[String] : +# 35| v35_1446(void) = Call[String] : func:r35_1445, this:r35_1443 +# 35| mu35_1447(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1448(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1443 +# 35| r35_1449(glval) = VariableAddress[x103] : +# 35| r35_1450(glval) = FunctionAddress[~String] : +# 35| v35_1451(void) = Call[~String] : func:r35_1450, this:r35_1449 +# 35| mu35_1452(unknown) = ^CallSideEffect : ~m? +# 35| v35_1453(void) = ^IndirectReadSideEffect[-1] : &:r35_1449, ~m? +# 35| mu35_1454(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1449 +# 35| r35_1455(bool) = Constant[0] : +# 35| v35_1456(void) = ConditionalBranch : r35_1455 #-----| False -> Block 104 #-----| True -> Block 1026 -# 331| Block 104 -# 331| r331_1(glval) = VariableAddress[x104] : -# 331| mu331_2(String) = Uninitialized[x104] : &:r331_1 -# 331| r331_3(glval) = FunctionAddress[String] : -# 331| v331_4(void) = Call[String] : func:r331_3, this:r331_1 -# 331| mu331_5(unknown) = ^CallSideEffect : ~m? -# 331| mu331_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r331_1 -# 332| r332_1(glval) = VariableAddress[x104] : -# 332| r332_2(glval) = FunctionAddress[~String] : -# 332| v332_3(void) = Call[~String] : func:r332_2, this:r332_1 -# 332| mu332_4(unknown) = ^CallSideEffect : ~m? -# 332| v332_5(void) = ^IndirectReadSideEffect[-1] : &:r332_1, ~m? -# 332| mu332_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r332_1 -# 332| r332_7(bool) = Constant[0] : -# 332| v332_8(void) = ConditionalBranch : r332_7 +# 35| Block 104 +# 35| r35_1457(glval) = VariableAddress[x104] : +# 35| mu35_1458(String) = Uninitialized[x104] : &:r35_1457 +# 35| r35_1459(glval) = FunctionAddress[String] : +# 35| v35_1460(void) = Call[String] : func:r35_1459, this:r35_1457 +# 35| mu35_1461(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1462(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1457 +# 35| r35_1463(glval) = VariableAddress[x104] : +# 35| r35_1464(glval) = FunctionAddress[~String] : +# 35| v35_1465(void) = Call[~String] : func:r35_1464, this:r35_1463 +# 35| mu35_1466(unknown) = ^CallSideEffect : ~m? +# 35| v35_1467(void) = ^IndirectReadSideEffect[-1] : &:r35_1463, ~m? +# 35| mu35_1468(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1463 +# 35| r35_1469(bool) = Constant[0] : +# 35| v35_1470(void) = ConditionalBranch : r35_1469 #-----| False -> Block 105 #-----| True -> Block 1026 -# 334| Block 105 -# 334| r334_1(glval) = VariableAddress[x105] : -# 334| mu334_2(String) = Uninitialized[x105] : &:r334_1 -# 334| r334_3(glval) = FunctionAddress[String] : -# 334| v334_4(void) = Call[String] : func:r334_3, this:r334_1 -# 334| mu334_5(unknown) = ^CallSideEffect : ~m? -# 334| mu334_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r334_1 -# 335| r335_1(glval) = VariableAddress[x105] : -# 335| r335_2(glval) = FunctionAddress[~String] : -# 335| v335_3(void) = Call[~String] : func:r335_2, this:r335_1 -# 335| mu335_4(unknown) = ^CallSideEffect : ~m? -# 335| v335_5(void) = ^IndirectReadSideEffect[-1] : &:r335_1, ~m? -# 335| mu335_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r335_1 -# 335| r335_7(bool) = Constant[0] : -# 335| v335_8(void) = ConditionalBranch : r335_7 +# 35| Block 105 +# 35| r35_1471(glval) = VariableAddress[x105] : +# 35| mu35_1472(String) = Uninitialized[x105] : &:r35_1471 +# 35| r35_1473(glval) = FunctionAddress[String] : +# 35| v35_1474(void) = Call[String] : func:r35_1473, this:r35_1471 +# 35| mu35_1475(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1476(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1471 +# 35| r35_1477(glval) = VariableAddress[x105] : +# 35| r35_1478(glval) = FunctionAddress[~String] : +# 35| v35_1479(void) = Call[~String] : func:r35_1478, this:r35_1477 +# 35| mu35_1480(unknown) = ^CallSideEffect : ~m? +# 35| v35_1481(void) = ^IndirectReadSideEffect[-1] : &:r35_1477, ~m? +# 35| mu35_1482(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1477 +# 35| r35_1483(bool) = Constant[0] : +# 35| v35_1484(void) = ConditionalBranch : r35_1483 #-----| False -> Block 106 #-----| True -> Block 1026 -# 337| Block 106 -# 337| r337_1(glval) = VariableAddress[x106] : -# 337| mu337_2(String) = Uninitialized[x106] : &:r337_1 -# 337| r337_3(glval) = FunctionAddress[String] : -# 337| v337_4(void) = Call[String] : func:r337_3, this:r337_1 -# 337| mu337_5(unknown) = ^CallSideEffect : ~m? -# 337| mu337_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r337_1 -# 338| r338_1(glval) = VariableAddress[x106] : -# 338| r338_2(glval) = FunctionAddress[~String] : -# 338| v338_3(void) = Call[~String] : func:r338_2, this:r338_1 -# 338| mu338_4(unknown) = ^CallSideEffect : ~m? -# 338| v338_5(void) = ^IndirectReadSideEffect[-1] : &:r338_1, ~m? -# 338| mu338_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r338_1 -# 338| r338_7(bool) = Constant[0] : -# 338| v338_8(void) = ConditionalBranch : r338_7 +# 35| Block 106 +# 35| r35_1485(glval) = VariableAddress[x106] : +# 35| mu35_1486(String) = Uninitialized[x106] : &:r35_1485 +# 35| r35_1487(glval) = FunctionAddress[String] : +# 35| v35_1488(void) = Call[String] : func:r35_1487, this:r35_1485 +# 35| mu35_1489(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1490(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1485 +# 35| r35_1491(glval) = VariableAddress[x106] : +# 35| r35_1492(glval) = FunctionAddress[~String] : +# 35| v35_1493(void) = Call[~String] : func:r35_1492, this:r35_1491 +# 35| mu35_1494(unknown) = ^CallSideEffect : ~m? +# 35| v35_1495(void) = ^IndirectReadSideEffect[-1] : &:r35_1491, ~m? +# 35| mu35_1496(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1491 +# 35| r35_1497(bool) = Constant[0] : +# 35| v35_1498(void) = ConditionalBranch : r35_1497 #-----| False -> Block 107 #-----| True -> Block 1026 -# 340| Block 107 -# 340| r340_1(glval) = VariableAddress[x107] : -# 340| mu340_2(String) = Uninitialized[x107] : &:r340_1 -# 340| r340_3(glval) = FunctionAddress[String] : -# 340| v340_4(void) = Call[String] : func:r340_3, this:r340_1 -# 340| mu340_5(unknown) = ^CallSideEffect : ~m? -# 340| mu340_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r340_1 -# 341| r341_1(glval) = VariableAddress[x107] : -# 341| r341_2(glval) = FunctionAddress[~String] : -# 341| v341_3(void) = Call[~String] : func:r341_2, this:r341_1 -# 341| mu341_4(unknown) = ^CallSideEffect : ~m? -# 341| v341_5(void) = ^IndirectReadSideEffect[-1] : &:r341_1, ~m? -# 341| mu341_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r341_1 -# 341| r341_7(bool) = Constant[0] : -# 341| v341_8(void) = ConditionalBranch : r341_7 +# 35| Block 107 +# 35| r35_1499(glval) = VariableAddress[x107] : +# 35| mu35_1500(String) = Uninitialized[x107] : &:r35_1499 +# 35| r35_1501(glval) = FunctionAddress[String] : +# 35| v35_1502(void) = Call[String] : func:r35_1501, this:r35_1499 +# 35| mu35_1503(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1504(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1499 +# 35| r35_1505(glval) = VariableAddress[x107] : +# 35| r35_1506(glval) = FunctionAddress[~String] : +# 35| v35_1507(void) = Call[~String] : func:r35_1506, this:r35_1505 +# 35| mu35_1508(unknown) = ^CallSideEffect : ~m? +# 35| v35_1509(void) = ^IndirectReadSideEffect[-1] : &:r35_1505, ~m? +# 35| mu35_1510(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1505 +# 35| r35_1511(bool) = Constant[0] : +# 35| v35_1512(void) = ConditionalBranch : r35_1511 #-----| False -> Block 108 #-----| True -> Block 1026 -# 343| Block 108 -# 343| r343_1(glval) = VariableAddress[x108] : -# 343| mu343_2(String) = Uninitialized[x108] : &:r343_1 -# 343| r343_3(glval) = FunctionAddress[String] : -# 343| v343_4(void) = Call[String] : func:r343_3, this:r343_1 -# 343| mu343_5(unknown) = ^CallSideEffect : ~m? -# 343| mu343_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r343_1 -# 344| r344_1(glval) = VariableAddress[x108] : -# 344| r344_2(glval) = FunctionAddress[~String] : -# 344| v344_3(void) = Call[~String] : func:r344_2, this:r344_1 -# 344| mu344_4(unknown) = ^CallSideEffect : ~m? -# 344| v344_5(void) = ^IndirectReadSideEffect[-1] : &:r344_1, ~m? -# 344| mu344_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r344_1 -# 344| r344_7(bool) = Constant[0] : -# 344| v344_8(void) = ConditionalBranch : r344_7 +# 35| Block 108 +# 35| r35_1513(glval) = VariableAddress[x108] : +# 35| mu35_1514(String) = Uninitialized[x108] : &:r35_1513 +# 35| r35_1515(glval) = FunctionAddress[String] : +# 35| v35_1516(void) = Call[String] : func:r35_1515, this:r35_1513 +# 35| mu35_1517(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1518(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1513 +# 35| r35_1519(glval) = VariableAddress[x108] : +# 35| r35_1520(glval) = FunctionAddress[~String] : +# 35| v35_1521(void) = Call[~String] : func:r35_1520, this:r35_1519 +# 35| mu35_1522(unknown) = ^CallSideEffect : ~m? +# 35| v35_1523(void) = ^IndirectReadSideEffect[-1] : &:r35_1519, ~m? +# 35| mu35_1524(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1519 +# 35| r35_1525(bool) = Constant[0] : +# 35| v35_1526(void) = ConditionalBranch : r35_1525 #-----| False -> Block 109 #-----| True -> Block 1026 -# 346| Block 109 -# 346| r346_1(glval) = VariableAddress[x109] : -# 346| mu346_2(String) = Uninitialized[x109] : &:r346_1 -# 346| r346_3(glval) = FunctionAddress[String] : -# 346| v346_4(void) = Call[String] : func:r346_3, this:r346_1 -# 346| mu346_5(unknown) = ^CallSideEffect : ~m? -# 346| mu346_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r346_1 -# 347| r347_1(glval) = VariableAddress[x109] : -# 347| r347_2(glval) = FunctionAddress[~String] : -# 347| v347_3(void) = Call[~String] : func:r347_2, this:r347_1 -# 347| mu347_4(unknown) = ^CallSideEffect : ~m? -# 347| v347_5(void) = ^IndirectReadSideEffect[-1] : &:r347_1, ~m? -# 347| mu347_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r347_1 -# 347| r347_7(bool) = Constant[0] : -# 347| v347_8(void) = ConditionalBranch : r347_7 +# 35| Block 109 +# 35| r35_1527(glval) = VariableAddress[x109] : +# 35| mu35_1528(String) = Uninitialized[x109] : &:r35_1527 +# 35| r35_1529(glval) = FunctionAddress[String] : +# 35| v35_1530(void) = Call[String] : func:r35_1529, this:r35_1527 +# 35| mu35_1531(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1532(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1527 +# 35| r35_1533(glval) = VariableAddress[x109] : +# 35| r35_1534(glval) = FunctionAddress[~String] : +# 35| v35_1535(void) = Call[~String] : func:r35_1534, this:r35_1533 +# 35| mu35_1536(unknown) = ^CallSideEffect : ~m? +# 35| v35_1537(void) = ^IndirectReadSideEffect[-1] : &:r35_1533, ~m? +# 35| mu35_1538(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1533 +# 35| r35_1539(bool) = Constant[0] : +# 35| v35_1540(void) = ConditionalBranch : r35_1539 #-----| False -> Block 110 #-----| True -> Block 1026 -# 349| Block 110 -# 349| r349_1(glval) = VariableAddress[x110] : -# 349| mu349_2(String) = Uninitialized[x110] : &:r349_1 -# 349| r349_3(glval) = FunctionAddress[String] : -# 349| v349_4(void) = Call[String] : func:r349_3, this:r349_1 -# 349| mu349_5(unknown) = ^CallSideEffect : ~m? -# 349| mu349_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r349_1 -# 350| r350_1(glval) = VariableAddress[x110] : -# 350| r350_2(glval) = FunctionAddress[~String] : -# 350| v350_3(void) = Call[~String] : func:r350_2, this:r350_1 -# 350| mu350_4(unknown) = ^CallSideEffect : ~m? -# 350| v350_5(void) = ^IndirectReadSideEffect[-1] : &:r350_1, ~m? -# 350| mu350_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r350_1 -# 350| r350_7(bool) = Constant[0] : -# 350| v350_8(void) = ConditionalBranch : r350_7 +# 35| Block 110 +# 35| r35_1541(glval) = VariableAddress[x110] : +# 35| mu35_1542(String) = Uninitialized[x110] : &:r35_1541 +# 35| r35_1543(glval) = FunctionAddress[String] : +# 35| v35_1544(void) = Call[String] : func:r35_1543, this:r35_1541 +# 35| mu35_1545(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1546(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1541 +# 35| r35_1547(glval) = VariableAddress[x110] : +# 35| r35_1548(glval) = FunctionAddress[~String] : +# 35| v35_1549(void) = Call[~String] : func:r35_1548, this:r35_1547 +# 35| mu35_1550(unknown) = ^CallSideEffect : ~m? +# 35| v35_1551(void) = ^IndirectReadSideEffect[-1] : &:r35_1547, ~m? +# 35| mu35_1552(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1547 +# 35| r35_1553(bool) = Constant[0] : +# 35| v35_1554(void) = ConditionalBranch : r35_1553 #-----| False -> Block 111 #-----| True -> Block 1026 -# 352| Block 111 -# 352| r352_1(glval) = VariableAddress[x111] : -# 352| mu352_2(String) = Uninitialized[x111] : &:r352_1 -# 352| r352_3(glval) = FunctionAddress[String] : -# 352| v352_4(void) = Call[String] : func:r352_3, this:r352_1 -# 352| mu352_5(unknown) = ^CallSideEffect : ~m? -# 352| mu352_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r352_1 -# 353| r353_1(glval) = VariableAddress[x111] : -# 353| r353_2(glval) = FunctionAddress[~String] : -# 353| v353_3(void) = Call[~String] : func:r353_2, this:r353_1 -# 353| mu353_4(unknown) = ^CallSideEffect : ~m? -# 353| v353_5(void) = ^IndirectReadSideEffect[-1] : &:r353_1, ~m? -# 353| mu353_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r353_1 -# 353| r353_7(bool) = Constant[0] : -# 353| v353_8(void) = ConditionalBranch : r353_7 +# 35| Block 111 +# 35| r35_1555(glval) = VariableAddress[x111] : +# 35| mu35_1556(String) = Uninitialized[x111] : &:r35_1555 +# 35| r35_1557(glval) = FunctionAddress[String] : +# 35| v35_1558(void) = Call[String] : func:r35_1557, this:r35_1555 +# 35| mu35_1559(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1560(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1555 +# 35| r35_1561(glval) = VariableAddress[x111] : +# 35| r35_1562(glval) = FunctionAddress[~String] : +# 35| v35_1563(void) = Call[~String] : func:r35_1562, this:r35_1561 +# 35| mu35_1564(unknown) = ^CallSideEffect : ~m? +# 35| v35_1565(void) = ^IndirectReadSideEffect[-1] : &:r35_1561, ~m? +# 35| mu35_1566(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1561 +# 35| r35_1567(bool) = Constant[0] : +# 35| v35_1568(void) = ConditionalBranch : r35_1567 #-----| False -> Block 112 #-----| True -> Block 1026 -# 355| Block 112 -# 355| r355_1(glval) = VariableAddress[x112] : -# 355| mu355_2(String) = Uninitialized[x112] : &:r355_1 -# 355| r355_3(glval) = FunctionAddress[String] : -# 355| v355_4(void) = Call[String] : func:r355_3, this:r355_1 -# 355| mu355_5(unknown) = ^CallSideEffect : ~m? -# 355| mu355_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r355_1 -# 356| r356_1(glval) = VariableAddress[x112] : -# 356| r356_2(glval) = FunctionAddress[~String] : -# 356| v356_3(void) = Call[~String] : func:r356_2, this:r356_1 -# 356| mu356_4(unknown) = ^CallSideEffect : ~m? -# 356| v356_5(void) = ^IndirectReadSideEffect[-1] : &:r356_1, ~m? -# 356| mu356_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r356_1 -# 356| r356_7(bool) = Constant[0] : -# 356| v356_8(void) = ConditionalBranch : r356_7 +# 35| Block 112 +# 35| r35_1569(glval) = VariableAddress[x112] : +# 35| mu35_1570(String) = Uninitialized[x112] : &:r35_1569 +# 35| r35_1571(glval) = FunctionAddress[String] : +# 35| v35_1572(void) = Call[String] : func:r35_1571, this:r35_1569 +# 35| mu35_1573(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1574(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1569 +# 35| r35_1575(glval) = VariableAddress[x112] : +# 35| r35_1576(glval) = FunctionAddress[~String] : +# 35| v35_1577(void) = Call[~String] : func:r35_1576, this:r35_1575 +# 35| mu35_1578(unknown) = ^CallSideEffect : ~m? +# 35| v35_1579(void) = ^IndirectReadSideEffect[-1] : &:r35_1575, ~m? +# 35| mu35_1580(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1575 +# 35| r35_1581(bool) = Constant[0] : +# 35| v35_1582(void) = ConditionalBranch : r35_1581 #-----| False -> Block 113 #-----| True -> Block 1026 -# 358| Block 113 -# 358| r358_1(glval) = VariableAddress[x113] : -# 358| mu358_2(String) = Uninitialized[x113] : &:r358_1 -# 358| r358_3(glval) = FunctionAddress[String] : -# 358| v358_4(void) = Call[String] : func:r358_3, this:r358_1 -# 358| mu358_5(unknown) = ^CallSideEffect : ~m? -# 358| mu358_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r358_1 -# 359| r359_1(glval) = VariableAddress[x113] : -# 359| r359_2(glval) = FunctionAddress[~String] : -# 359| v359_3(void) = Call[~String] : func:r359_2, this:r359_1 -# 359| mu359_4(unknown) = ^CallSideEffect : ~m? -# 359| v359_5(void) = ^IndirectReadSideEffect[-1] : &:r359_1, ~m? -# 359| mu359_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r359_1 -# 359| r359_7(bool) = Constant[0] : -# 359| v359_8(void) = ConditionalBranch : r359_7 +# 35| Block 113 +# 35| r35_1583(glval) = VariableAddress[x113] : +# 35| mu35_1584(String) = Uninitialized[x113] : &:r35_1583 +# 35| r35_1585(glval) = FunctionAddress[String] : +# 35| v35_1586(void) = Call[String] : func:r35_1585, this:r35_1583 +# 35| mu35_1587(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1588(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1583 +# 35| r35_1589(glval) = VariableAddress[x113] : +# 35| r35_1590(glval) = FunctionAddress[~String] : +# 35| v35_1591(void) = Call[~String] : func:r35_1590, this:r35_1589 +# 35| mu35_1592(unknown) = ^CallSideEffect : ~m? +# 35| v35_1593(void) = ^IndirectReadSideEffect[-1] : &:r35_1589, ~m? +# 35| mu35_1594(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1589 +# 35| r35_1595(bool) = Constant[0] : +# 35| v35_1596(void) = ConditionalBranch : r35_1595 #-----| False -> Block 114 #-----| True -> Block 1026 -# 361| Block 114 -# 361| r361_1(glval) = VariableAddress[x114] : -# 361| mu361_2(String) = Uninitialized[x114] : &:r361_1 -# 361| r361_3(glval) = FunctionAddress[String] : -# 361| v361_4(void) = Call[String] : func:r361_3, this:r361_1 -# 361| mu361_5(unknown) = ^CallSideEffect : ~m? -# 361| mu361_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r361_1 -# 362| r362_1(glval) = VariableAddress[x114] : -# 362| r362_2(glval) = FunctionAddress[~String] : -# 362| v362_3(void) = Call[~String] : func:r362_2, this:r362_1 -# 362| mu362_4(unknown) = ^CallSideEffect : ~m? -# 362| v362_5(void) = ^IndirectReadSideEffect[-1] : &:r362_1, ~m? -# 362| mu362_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r362_1 -# 362| r362_7(bool) = Constant[0] : -# 362| v362_8(void) = ConditionalBranch : r362_7 +# 35| Block 114 +# 35| r35_1597(glval) = VariableAddress[x114] : +# 35| mu35_1598(String) = Uninitialized[x114] : &:r35_1597 +# 35| r35_1599(glval) = FunctionAddress[String] : +# 35| v35_1600(void) = Call[String] : func:r35_1599, this:r35_1597 +# 35| mu35_1601(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1602(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1597 +# 35| r35_1603(glval) = VariableAddress[x114] : +# 35| r35_1604(glval) = FunctionAddress[~String] : +# 35| v35_1605(void) = Call[~String] : func:r35_1604, this:r35_1603 +# 35| mu35_1606(unknown) = ^CallSideEffect : ~m? +# 35| v35_1607(void) = ^IndirectReadSideEffect[-1] : &:r35_1603, ~m? +# 35| mu35_1608(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1603 +# 35| r35_1609(bool) = Constant[0] : +# 35| v35_1610(void) = ConditionalBranch : r35_1609 #-----| False -> Block 115 #-----| True -> Block 1026 -# 364| Block 115 -# 364| r364_1(glval) = VariableAddress[x115] : -# 364| mu364_2(String) = Uninitialized[x115] : &:r364_1 -# 364| r364_3(glval) = FunctionAddress[String] : -# 364| v364_4(void) = Call[String] : func:r364_3, this:r364_1 -# 364| mu364_5(unknown) = ^CallSideEffect : ~m? -# 364| mu364_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r364_1 -# 365| r365_1(glval) = VariableAddress[x115] : -# 365| r365_2(glval) = FunctionAddress[~String] : -# 365| v365_3(void) = Call[~String] : func:r365_2, this:r365_1 -# 365| mu365_4(unknown) = ^CallSideEffect : ~m? -# 365| v365_5(void) = ^IndirectReadSideEffect[-1] : &:r365_1, ~m? -# 365| mu365_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r365_1 -# 365| r365_7(bool) = Constant[0] : -# 365| v365_8(void) = ConditionalBranch : r365_7 +# 35| Block 115 +# 35| r35_1611(glval) = VariableAddress[x115] : +# 35| mu35_1612(String) = Uninitialized[x115] : &:r35_1611 +# 35| r35_1613(glval) = FunctionAddress[String] : +# 35| v35_1614(void) = Call[String] : func:r35_1613, this:r35_1611 +# 35| mu35_1615(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1616(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1611 +# 35| r35_1617(glval) = VariableAddress[x115] : +# 35| r35_1618(glval) = FunctionAddress[~String] : +# 35| v35_1619(void) = Call[~String] : func:r35_1618, this:r35_1617 +# 35| mu35_1620(unknown) = ^CallSideEffect : ~m? +# 35| v35_1621(void) = ^IndirectReadSideEffect[-1] : &:r35_1617, ~m? +# 35| mu35_1622(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1617 +# 35| r35_1623(bool) = Constant[0] : +# 35| v35_1624(void) = ConditionalBranch : r35_1623 #-----| False -> Block 116 #-----| True -> Block 1026 -# 367| Block 116 -# 367| r367_1(glval) = VariableAddress[x116] : -# 367| mu367_2(String) = Uninitialized[x116] : &:r367_1 -# 367| r367_3(glval) = FunctionAddress[String] : -# 367| v367_4(void) = Call[String] : func:r367_3, this:r367_1 -# 367| mu367_5(unknown) = ^CallSideEffect : ~m? -# 367| mu367_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r367_1 -# 368| r368_1(glval) = VariableAddress[x116] : -# 368| r368_2(glval) = FunctionAddress[~String] : -# 368| v368_3(void) = Call[~String] : func:r368_2, this:r368_1 -# 368| mu368_4(unknown) = ^CallSideEffect : ~m? -# 368| v368_5(void) = ^IndirectReadSideEffect[-1] : &:r368_1, ~m? -# 368| mu368_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r368_1 -# 368| r368_7(bool) = Constant[0] : -# 368| v368_8(void) = ConditionalBranch : r368_7 +# 35| Block 116 +# 35| r35_1625(glval) = VariableAddress[x116] : +# 35| mu35_1626(String) = Uninitialized[x116] : &:r35_1625 +# 35| r35_1627(glval) = FunctionAddress[String] : +# 35| v35_1628(void) = Call[String] : func:r35_1627, this:r35_1625 +# 35| mu35_1629(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1630(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1625 +# 35| r35_1631(glval) = VariableAddress[x116] : +# 35| r35_1632(glval) = FunctionAddress[~String] : +# 35| v35_1633(void) = Call[~String] : func:r35_1632, this:r35_1631 +# 35| mu35_1634(unknown) = ^CallSideEffect : ~m? +# 35| v35_1635(void) = ^IndirectReadSideEffect[-1] : &:r35_1631, ~m? +# 35| mu35_1636(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1631 +# 35| r35_1637(bool) = Constant[0] : +# 35| v35_1638(void) = ConditionalBranch : r35_1637 #-----| False -> Block 117 #-----| True -> Block 1026 -# 370| Block 117 -# 370| r370_1(glval) = VariableAddress[x117] : -# 370| mu370_2(String) = Uninitialized[x117] : &:r370_1 -# 370| r370_3(glval) = FunctionAddress[String] : -# 370| v370_4(void) = Call[String] : func:r370_3, this:r370_1 -# 370| mu370_5(unknown) = ^CallSideEffect : ~m? -# 370| mu370_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r370_1 -# 371| r371_1(glval) = VariableAddress[x117] : -# 371| r371_2(glval) = FunctionAddress[~String] : -# 371| v371_3(void) = Call[~String] : func:r371_2, this:r371_1 -# 371| mu371_4(unknown) = ^CallSideEffect : ~m? -# 371| v371_5(void) = ^IndirectReadSideEffect[-1] : &:r371_1, ~m? -# 371| mu371_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r371_1 -# 371| r371_7(bool) = Constant[0] : -# 371| v371_8(void) = ConditionalBranch : r371_7 +# 35| Block 117 +# 35| r35_1639(glval) = VariableAddress[x117] : +# 35| mu35_1640(String) = Uninitialized[x117] : &:r35_1639 +# 35| r35_1641(glval) = FunctionAddress[String] : +# 35| v35_1642(void) = Call[String] : func:r35_1641, this:r35_1639 +# 35| mu35_1643(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1644(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1639 +# 35| r35_1645(glval) = VariableAddress[x117] : +# 35| r35_1646(glval) = FunctionAddress[~String] : +# 35| v35_1647(void) = Call[~String] : func:r35_1646, this:r35_1645 +# 35| mu35_1648(unknown) = ^CallSideEffect : ~m? +# 35| v35_1649(void) = ^IndirectReadSideEffect[-1] : &:r35_1645, ~m? +# 35| mu35_1650(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1645 +# 35| r35_1651(bool) = Constant[0] : +# 35| v35_1652(void) = ConditionalBranch : r35_1651 #-----| False -> Block 118 #-----| True -> Block 1026 -# 373| Block 118 -# 373| r373_1(glval) = VariableAddress[x118] : -# 373| mu373_2(String) = Uninitialized[x118] : &:r373_1 -# 373| r373_3(glval) = FunctionAddress[String] : -# 373| v373_4(void) = Call[String] : func:r373_3, this:r373_1 -# 373| mu373_5(unknown) = ^CallSideEffect : ~m? -# 373| mu373_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r373_1 -# 374| r374_1(glval) = VariableAddress[x118] : -# 374| r374_2(glval) = FunctionAddress[~String] : -# 374| v374_3(void) = Call[~String] : func:r374_2, this:r374_1 -# 374| mu374_4(unknown) = ^CallSideEffect : ~m? -# 374| v374_5(void) = ^IndirectReadSideEffect[-1] : &:r374_1, ~m? -# 374| mu374_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r374_1 -# 374| r374_7(bool) = Constant[0] : -# 374| v374_8(void) = ConditionalBranch : r374_7 +# 35| Block 118 +# 35| r35_1653(glval) = VariableAddress[x118] : +# 35| mu35_1654(String) = Uninitialized[x118] : &:r35_1653 +# 35| r35_1655(glval) = FunctionAddress[String] : +# 35| v35_1656(void) = Call[String] : func:r35_1655, this:r35_1653 +# 35| mu35_1657(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1658(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1653 +# 35| r35_1659(glval) = VariableAddress[x118] : +# 35| r35_1660(glval) = FunctionAddress[~String] : +# 35| v35_1661(void) = Call[~String] : func:r35_1660, this:r35_1659 +# 35| mu35_1662(unknown) = ^CallSideEffect : ~m? +# 35| v35_1663(void) = ^IndirectReadSideEffect[-1] : &:r35_1659, ~m? +# 35| mu35_1664(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1659 +# 35| r35_1665(bool) = Constant[0] : +# 35| v35_1666(void) = ConditionalBranch : r35_1665 #-----| False -> Block 119 #-----| True -> Block 1026 -# 376| Block 119 -# 376| r376_1(glval) = VariableAddress[x119] : -# 376| mu376_2(String) = Uninitialized[x119] : &:r376_1 -# 376| r376_3(glval) = FunctionAddress[String] : -# 376| v376_4(void) = Call[String] : func:r376_3, this:r376_1 -# 376| mu376_5(unknown) = ^CallSideEffect : ~m? -# 376| mu376_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r376_1 -# 377| r377_1(glval) = VariableAddress[x119] : -# 377| r377_2(glval) = FunctionAddress[~String] : -# 377| v377_3(void) = Call[~String] : func:r377_2, this:r377_1 -# 377| mu377_4(unknown) = ^CallSideEffect : ~m? -# 377| v377_5(void) = ^IndirectReadSideEffect[-1] : &:r377_1, ~m? -# 377| mu377_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r377_1 -# 377| r377_7(bool) = Constant[0] : -# 377| v377_8(void) = ConditionalBranch : r377_7 +# 35| Block 119 +# 35| r35_1667(glval) = VariableAddress[x119] : +# 35| mu35_1668(String) = Uninitialized[x119] : &:r35_1667 +# 35| r35_1669(glval) = FunctionAddress[String] : +# 35| v35_1670(void) = Call[String] : func:r35_1669, this:r35_1667 +# 35| mu35_1671(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1672(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1667 +# 35| r35_1673(glval) = VariableAddress[x119] : +# 35| r35_1674(glval) = FunctionAddress[~String] : +# 35| v35_1675(void) = Call[~String] : func:r35_1674, this:r35_1673 +# 35| mu35_1676(unknown) = ^CallSideEffect : ~m? +# 35| v35_1677(void) = ^IndirectReadSideEffect[-1] : &:r35_1673, ~m? +# 35| mu35_1678(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1673 +# 35| r35_1679(bool) = Constant[0] : +# 35| v35_1680(void) = ConditionalBranch : r35_1679 #-----| False -> Block 120 #-----| True -> Block 1026 -# 379| Block 120 -# 379| r379_1(glval) = VariableAddress[x120] : -# 379| mu379_2(String) = Uninitialized[x120] : &:r379_1 -# 379| r379_3(glval) = FunctionAddress[String] : -# 379| v379_4(void) = Call[String] : func:r379_3, this:r379_1 -# 379| mu379_5(unknown) = ^CallSideEffect : ~m? -# 379| mu379_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r379_1 -# 380| r380_1(glval) = VariableAddress[x120] : -# 380| r380_2(glval) = FunctionAddress[~String] : -# 380| v380_3(void) = Call[~String] : func:r380_2, this:r380_1 -# 380| mu380_4(unknown) = ^CallSideEffect : ~m? -# 380| v380_5(void) = ^IndirectReadSideEffect[-1] : &:r380_1, ~m? -# 380| mu380_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r380_1 -# 380| r380_7(bool) = Constant[0] : -# 380| v380_8(void) = ConditionalBranch : r380_7 +# 35| Block 120 +# 35| r35_1681(glval) = VariableAddress[x120] : +# 35| mu35_1682(String) = Uninitialized[x120] : &:r35_1681 +# 35| r35_1683(glval) = FunctionAddress[String] : +# 35| v35_1684(void) = Call[String] : func:r35_1683, this:r35_1681 +# 35| mu35_1685(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1686(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1681 +# 35| r35_1687(glval) = VariableAddress[x120] : +# 35| r35_1688(glval) = FunctionAddress[~String] : +# 35| v35_1689(void) = Call[~String] : func:r35_1688, this:r35_1687 +# 35| mu35_1690(unknown) = ^CallSideEffect : ~m? +# 35| v35_1691(void) = ^IndirectReadSideEffect[-1] : &:r35_1687, ~m? +# 35| mu35_1692(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1687 +# 35| r35_1693(bool) = Constant[0] : +# 35| v35_1694(void) = ConditionalBranch : r35_1693 #-----| False -> Block 121 #-----| True -> Block 1026 -# 382| Block 121 -# 382| r382_1(glval) = VariableAddress[x121] : -# 382| mu382_2(String) = Uninitialized[x121] : &:r382_1 -# 382| r382_3(glval) = FunctionAddress[String] : -# 382| v382_4(void) = Call[String] : func:r382_3, this:r382_1 -# 382| mu382_5(unknown) = ^CallSideEffect : ~m? -# 382| mu382_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r382_1 -# 383| r383_1(glval) = VariableAddress[x121] : -# 383| r383_2(glval) = FunctionAddress[~String] : -# 383| v383_3(void) = Call[~String] : func:r383_2, this:r383_1 -# 383| mu383_4(unknown) = ^CallSideEffect : ~m? -# 383| v383_5(void) = ^IndirectReadSideEffect[-1] : &:r383_1, ~m? -# 383| mu383_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r383_1 -# 383| r383_7(bool) = Constant[0] : -# 383| v383_8(void) = ConditionalBranch : r383_7 +# 35| Block 121 +# 35| r35_1695(glval) = VariableAddress[x121] : +# 35| mu35_1696(String) = Uninitialized[x121] : &:r35_1695 +# 35| r35_1697(glval) = FunctionAddress[String] : +# 35| v35_1698(void) = Call[String] : func:r35_1697, this:r35_1695 +# 35| mu35_1699(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1700(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1695 +# 35| r35_1701(glval) = VariableAddress[x121] : +# 35| r35_1702(glval) = FunctionAddress[~String] : +# 35| v35_1703(void) = Call[~String] : func:r35_1702, this:r35_1701 +# 35| mu35_1704(unknown) = ^CallSideEffect : ~m? +# 35| v35_1705(void) = ^IndirectReadSideEffect[-1] : &:r35_1701, ~m? +# 35| mu35_1706(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1701 +# 35| r35_1707(bool) = Constant[0] : +# 35| v35_1708(void) = ConditionalBranch : r35_1707 #-----| False -> Block 122 #-----| True -> Block 1026 -# 385| Block 122 -# 385| r385_1(glval) = VariableAddress[x122] : -# 385| mu385_2(String) = Uninitialized[x122] : &:r385_1 -# 385| r385_3(glval) = FunctionAddress[String] : -# 385| v385_4(void) = Call[String] : func:r385_3, this:r385_1 -# 385| mu385_5(unknown) = ^CallSideEffect : ~m? -# 385| mu385_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r385_1 -# 386| r386_1(glval) = VariableAddress[x122] : -# 386| r386_2(glval) = FunctionAddress[~String] : -# 386| v386_3(void) = Call[~String] : func:r386_2, this:r386_1 -# 386| mu386_4(unknown) = ^CallSideEffect : ~m? -# 386| v386_5(void) = ^IndirectReadSideEffect[-1] : &:r386_1, ~m? -# 386| mu386_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r386_1 -# 386| r386_7(bool) = Constant[0] : -# 386| v386_8(void) = ConditionalBranch : r386_7 +# 35| Block 122 +# 35| r35_1709(glval) = VariableAddress[x122] : +# 35| mu35_1710(String) = Uninitialized[x122] : &:r35_1709 +# 35| r35_1711(glval) = FunctionAddress[String] : +# 35| v35_1712(void) = Call[String] : func:r35_1711, this:r35_1709 +# 35| mu35_1713(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1714(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1709 +# 35| r35_1715(glval) = VariableAddress[x122] : +# 35| r35_1716(glval) = FunctionAddress[~String] : +# 35| v35_1717(void) = Call[~String] : func:r35_1716, this:r35_1715 +# 35| mu35_1718(unknown) = ^CallSideEffect : ~m? +# 35| v35_1719(void) = ^IndirectReadSideEffect[-1] : &:r35_1715, ~m? +# 35| mu35_1720(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1715 +# 35| r35_1721(bool) = Constant[0] : +# 35| v35_1722(void) = ConditionalBranch : r35_1721 #-----| False -> Block 123 #-----| True -> Block 1026 -# 388| Block 123 -# 388| r388_1(glval) = VariableAddress[x123] : -# 388| mu388_2(String) = Uninitialized[x123] : &:r388_1 -# 388| r388_3(glval) = FunctionAddress[String] : -# 388| v388_4(void) = Call[String] : func:r388_3, this:r388_1 -# 388| mu388_5(unknown) = ^CallSideEffect : ~m? -# 388| mu388_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r388_1 -# 389| r389_1(glval) = VariableAddress[x123] : -# 389| r389_2(glval) = FunctionAddress[~String] : -# 389| v389_3(void) = Call[~String] : func:r389_2, this:r389_1 -# 389| mu389_4(unknown) = ^CallSideEffect : ~m? -# 389| v389_5(void) = ^IndirectReadSideEffect[-1] : &:r389_1, ~m? -# 389| mu389_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r389_1 -# 389| r389_7(bool) = Constant[0] : -# 389| v389_8(void) = ConditionalBranch : r389_7 +# 35| Block 123 +# 35| r35_1723(glval) = VariableAddress[x123] : +# 35| mu35_1724(String) = Uninitialized[x123] : &:r35_1723 +# 35| r35_1725(glval) = FunctionAddress[String] : +# 35| v35_1726(void) = Call[String] : func:r35_1725, this:r35_1723 +# 35| mu35_1727(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1728(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1723 +# 35| r35_1729(glval) = VariableAddress[x123] : +# 35| r35_1730(glval) = FunctionAddress[~String] : +# 35| v35_1731(void) = Call[~String] : func:r35_1730, this:r35_1729 +# 35| mu35_1732(unknown) = ^CallSideEffect : ~m? +# 35| v35_1733(void) = ^IndirectReadSideEffect[-1] : &:r35_1729, ~m? +# 35| mu35_1734(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1729 +# 35| r35_1735(bool) = Constant[0] : +# 35| v35_1736(void) = ConditionalBranch : r35_1735 #-----| False -> Block 124 #-----| True -> Block 1026 -# 391| Block 124 -# 391| r391_1(glval) = VariableAddress[x124] : -# 391| mu391_2(String) = Uninitialized[x124] : &:r391_1 -# 391| r391_3(glval) = FunctionAddress[String] : -# 391| v391_4(void) = Call[String] : func:r391_3, this:r391_1 -# 391| mu391_5(unknown) = ^CallSideEffect : ~m? -# 391| mu391_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r391_1 -# 392| r392_1(glval) = VariableAddress[x124] : -# 392| r392_2(glval) = FunctionAddress[~String] : -# 392| v392_3(void) = Call[~String] : func:r392_2, this:r392_1 -# 392| mu392_4(unknown) = ^CallSideEffect : ~m? -# 392| v392_5(void) = ^IndirectReadSideEffect[-1] : &:r392_1, ~m? -# 392| mu392_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r392_1 -# 392| r392_7(bool) = Constant[0] : -# 392| v392_8(void) = ConditionalBranch : r392_7 +# 35| Block 124 +# 35| r35_1737(glval) = VariableAddress[x124] : +# 35| mu35_1738(String) = Uninitialized[x124] : &:r35_1737 +# 35| r35_1739(glval) = FunctionAddress[String] : +# 35| v35_1740(void) = Call[String] : func:r35_1739, this:r35_1737 +# 35| mu35_1741(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1742(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1737 +# 35| r35_1743(glval) = VariableAddress[x124] : +# 35| r35_1744(glval) = FunctionAddress[~String] : +# 35| v35_1745(void) = Call[~String] : func:r35_1744, this:r35_1743 +# 35| mu35_1746(unknown) = ^CallSideEffect : ~m? +# 35| v35_1747(void) = ^IndirectReadSideEffect[-1] : &:r35_1743, ~m? +# 35| mu35_1748(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1743 +# 35| r35_1749(bool) = Constant[0] : +# 35| v35_1750(void) = ConditionalBranch : r35_1749 #-----| False -> Block 125 #-----| True -> Block 1026 -# 394| Block 125 -# 394| r394_1(glval) = VariableAddress[x125] : -# 394| mu394_2(String) = Uninitialized[x125] : &:r394_1 -# 394| r394_3(glval) = FunctionAddress[String] : -# 394| v394_4(void) = Call[String] : func:r394_3, this:r394_1 -# 394| mu394_5(unknown) = ^CallSideEffect : ~m? -# 394| mu394_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r394_1 -# 395| r395_1(glval) = VariableAddress[x125] : -# 395| r395_2(glval) = FunctionAddress[~String] : -# 395| v395_3(void) = Call[~String] : func:r395_2, this:r395_1 -# 395| mu395_4(unknown) = ^CallSideEffect : ~m? -# 395| v395_5(void) = ^IndirectReadSideEffect[-1] : &:r395_1, ~m? -# 395| mu395_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r395_1 -# 395| r395_7(bool) = Constant[0] : -# 395| v395_8(void) = ConditionalBranch : r395_7 +# 35| Block 125 +# 35| r35_1751(glval) = VariableAddress[x125] : +# 35| mu35_1752(String) = Uninitialized[x125] : &:r35_1751 +# 35| r35_1753(glval) = FunctionAddress[String] : +# 35| v35_1754(void) = Call[String] : func:r35_1753, this:r35_1751 +# 35| mu35_1755(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1756(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1751 +# 35| r35_1757(glval) = VariableAddress[x125] : +# 35| r35_1758(glval) = FunctionAddress[~String] : +# 35| v35_1759(void) = Call[~String] : func:r35_1758, this:r35_1757 +# 35| mu35_1760(unknown) = ^CallSideEffect : ~m? +# 35| v35_1761(void) = ^IndirectReadSideEffect[-1] : &:r35_1757, ~m? +# 35| mu35_1762(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1757 +# 35| r35_1763(bool) = Constant[0] : +# 35| v35_1764(void) = ConditionalBranch : r35_1763 #-----| False -> Block 126 #-----| True -> Block 1026 -# 397| Block 126 -# 397| r397_1(glval) = VariableAddress[x126] : -# 397| mu397_2(String) = Uninitialized[x126] : &:r397_1 -# 397| r397_3(glval) = FunctionAddress[String] : -# 397| v397_4(void) = Call[String] : func:r397_3, this:r397_1 -# 397| mu397_5(unknown) = ^CallSideEffect : ~m? -# 397| mu397_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r397_1 -# 398| r398_1(glval) = VariableAddress[x126] : -# 398| r398_2(glval) = FunctionAddress[~String] : -# 398| v398_3(void) = Call[~String] : func:r398_2, this:r398_1 -# 398| mu398_4(unknown) = ^CallSideEffect : ~m? -# 398| v398_5(void) = ^IndirectReadSideEffect[-1] : &:r398_1, ~m? -# 398| mu398_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r398_1 -# 398| r398_7(bool) = Constant[0] : -# 398| v398_8(void) = ConditionalBranch : r398_7 +# 35| Block 126 +# 35| r35_1765(glval) = VariableAddress[x126] : +# 35| mu35_1766(String) = Uninitialized[x126] : &:r35_1765 +# 35| r35_1767(glval) = FunctionAddress[String] : +# 35| v35_1768(void) = Call[String] : func:r35_1767, this:r35_1765 +# 35| mu35_1769(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1770(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1765 +# 35| r35_1771(glval) = VariableAddress[x126] : +# 35| r35_1772(glval) = FunctionAddress[~String] : +# 35| v35_1773(void) = Call[~String] : func:r35_1772, this:r35_1771 +# 35| mu35_1774(unknown) = ^CallSideEffect : ~m? +# 35| v35_1775(void) = ^IndirectReadSideEffect[-1] : &:r35_1771, ~m? +# 35| mu35_1776(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1771 +# 35| r35_1777(bool) = Constant[0] : +# 35| v35_1778(void) = ConditionalBranch : r35_1777 #-----| False -> Block 127 #-----| True -> Block 1026 -# 400| Block 127 -# 400| r400_1(glval) = VariableAddress[x127] : -# 400| mu400_2(String) = Uninitialized[x127] : &:r400_1 -# 400| r400_3(glval) = FunctionAddress[String] : -# 400| v400_4(void) = Call[String] : func:r400_3, this:r400_1 -# 400| mu400_5(unknown) = ^CallSideEffect : ~m? -# 400| mu400_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r400_1 -# 401| r401_1(glval) = VariableAddress[x127] : -# 401| r401_2(glval) = FunctionAddress[~String] : -# 401| v401_3(void) = Call[~String] : func:r401_2, this:r401_1 -# 401| mu401_4(unknown) = ^CallSideEffect : ~m? -# 401| v401_5(void) = ^IndirectReadSideEffect[-1] : &:r401_1, ~m? -# 401| mu401_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r401_1 -# 401| r401_7(bool) = Constant[0] : -# 401| v401_8(void) = ConditionalBranch : r401_7 +# 35| Block 127 +# 35| r35_1779(glval) = VariableAddress[x127] : +# 35| mu35_1780(String) = Uninitialized[x127] : &:r35_1779 +# 35| r35_1781(glval) = FunctionAddress[String] : +# 35| v35_1782(void) = Call[String] : func:r35_1781, this:r35_1779 +# 35| mu35_1783(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1784(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1779 +# 35| r35_1785(glval) = VariableAddress[x127] : +# 35| r35_1786(glval) = FunctionAddress[~String] : +# 35| v35_1787(void) = Call[~String] : func:r35_1786, this:r35_1785 +# 35| mu35_1788(unknown) = ^CallSideEffect : ~m? +# 35| v35_1789(void) = ^IndirectReadSideEffect[-1] : &:r35_1785, ~m? +# 35| mu35_1790(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1785 +# 35| r35_1791(bool) = Constant[0] : +# 35| v35_1792(void) = ConditionalBranch : r35_1791 #-----| False -> Block 128 #-----| True -> Block 1026 -# 403| Block 128 -# 403| r403_1(glval) = VariableAddress[x128] : -# 403| mu403_2(String) = Uninitialized[x128] : &:r403_1 -# 403| r403_3(glval) = FunctionAddress[String] : -# 403| v403_4(void) = Call[String] : func:r403_3, this:r403_1 -# 403| mu403_5(unknown) = ^CallSideEffect : ~m? -# 403| mu403_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r403_1 -# 404| r404_1(glval) = VariableAddress[x128] : -# 404| r404_2(glval) = FunctionAddress[~String] : -# 404| v404_3(void) = Call[~String] : func:r404_2, this:r404_1 -# 404| mu404_4(unknown) = ^CallSideEffect : ~m? -# 404| v404_5(void) = ^IndirectReadSideEffect[-1] : &:r404_1, ~m? -# 404| mu404_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r404_1 -# 404| r404_7(bool) = Constant[0] : -# 404| v404_8(void) = ConditionalBranch : r404_7 +# 35| Block 128 +# 35| r35_1793(glval) = VariableAddress[x128] : +# 35| mu35_1794(String) = Uninitialized[x128] : &:r35_1793 +# 35| r35_1795(glval) = FunctionAddress[String] : +# 35| v35_1796(void) = Call[String] : func:r35_1795, this:r35_1793 +# 35| mu35_1797(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1798(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1793 +# 35| r35_1799(glval) = VariableAddress[x128] : +# 35| r35_1800(glval) = FunctionAddress[~String] : +# 35| v35_1801(void) = Call[~String] : func:r35_1800, this:r35_1799 +# 35| mu35_1802(unknown) = ^CallSideEffect : ~m? +# 35| v35_1803(void) = ^IndirectReadSideEffect[-1] : &:r35_1799, ~m? +# 35| mu35_1804(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1799 +# 35| r35_1805(bool) = Constant[0] : +# 35| v35_1806(void) = ConditionalBranch : r35_1805 #-----| False -> Block 129 #-----| True -> Block 1026 -# 406| Block 129 -# 406| r406_1(glval) = VariableAddress[x129] : -# 406| mu406_2(String) = Uninitialized[x129] : &:r406_1 -# 406| r406_3(glval) = FunctionAddress[String] : -# 406| v406_4(void) = Call[String] : func:r406_3, this:r406_1 -# 406| mu406_5(unknown) = ^CallSideEffect : ~m? -# 406| mu406_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r406_1 -# 407| r407_1(glval) = VariableAddress[x129] : -# 407| r407_2(glval) = FunctionAddress[~String] : -# 407| v407_3(void) = Call[~String] : func:r407_2, this:r407_1 -# 407| mu407_4(unknown) = ^CallSideEffect : ~m? -# 407| v407_5(void) = ^IndirectReadSideEffect[-1] : &:r407_1, ~m? -# 407| mu407_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r407_1 -# 407| r407_7(bool) = Constant[0] : -# 407| v407_8(void) = ConditionalBranch : r407_7 +# 35| Block 129 +# 35| r35_1807(glval) = VariableAddress[x129] : +# 35| mu35_1808(String) = Uninitialized[x129] : &:r35_1807 +# 35| r35_1809(glval) = FunctionAddress[String] : +# 35| v35_1810(void) = Call[String] : func:r35_1809, this:r35_1807 +# 35| mu35_1811(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1812(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1807 +# 35| r35_1813(glval) = VariableAddress[x129] : +# 35| r35_1814(glval) = FunctionAddress[~String] : +# 35| v35_1815(void) = Call[~String] : func:r35_1814, this:r35_1813 +# 35| mu35_1816(unknown) = ^CallSideEffect : ~m? +# 35| v35_1817(void) = ^IndirectReadSideEffect[-1] : &:r35_1813, ~m? +# 35| mu35_1818(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1813 +# 35| r35_1819(bool) = Constant[0] : +# 35| v35_1820(void) = ConditionalBranch : r35_1819 #-----| False -> Block 130 #-----| True -> Block 1026 -# 409| Block 130 -# 409| r409_1(glval) = VariableAddress[x130] : -# 409| mu409_2(String) = Uninitialized[x130] : &:r409_1 -# 409| r409_3(glval) = FunctionAddress[String] : -# 409| v409_4(void) = Call[String] : func:r409_3, this:r409_1 -# 409| mu409_5(unknown) = ^CallSideEffect : ~m? -# 409| mu409_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r409_1 -# 410| r410_1(glval) = VariableAddress[x130] : -# 410| r410_2(glval) = FunctionAddress[~String] : -# 410| v410_3(void) = Call[~String] : func:r410_2, this:r410_1 -# 410| mu410_4(unknown) = ^CallSideEffect : ~m? -# 410| v410_5(void) = ^IndirectReadSideEffect[-1] : &:r410_1, ~m? -# 410| mu410_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r410_1 -# 410| r410_7(bool) = Constant[0] : -# 410| v410_8(void) = ConditionalBranch : r410_7 +# 35| Block 130 +# 35| r35_1821(glval) = VariableAddress[x130] : +# 35| mu35_1822(String) = Uninitialized[x130] : &:r35_1821 +# 35| r35_1823(glval) = FunctionAddress[String] : +# 35| v35_1824(void) = Call[String] : func:r35_1823, this:r35_1821 +# 35| mu35_1825(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1826(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1821 +# 35| r35_1827(glval) = VariableAddress[x130] : +# 35| r35_1828(glval) = FunctionAddress[~String] : +# 35| v35_1829(void) = Call[~String] : func:r35_1828, this:r35_1827 +# 35| mu35_1830(unknown) = ^CallSideEffect : ~m? +# 35| v35_1831(void) = ^IndirectReadSideEffect[-1] : &:r35_1827, ~m? +# 35| mu35_1832(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1827 +# 35| r35_1833(bool) = Constant[0] : +# 35| v35_1834(void) = ConditionalBranch : r35_1833 #-----| False -> Block 131 #-----| True -> Block 1026 -# 412| Block 131 -# 412| r412_1(glval) = VariableAddress[x131] : -# 412| mu412_2(String) = Uninitialized[x131] : &:r412_1 -# 412| r412_3(glval) = FunctionAddress[String] : -# 412| v412_4(void) = Call[String] : func:r412_3, this:r412_1 -# 412| mu412_5(unknown) = ^CallSideEffect : ~m? -# 412| mu412_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r412_1 -# 413| r413_1(glval) = VariableAddress[x131] : -# 413| r413_2(glval) = FunctionAddress[~String] : -# 413| v413_3(void) = Call[~String] : func:r413_2, this:r413_1 -# 413| mu413_4(unknown) = ^CallSideEffect : ~m? -# 413| v413_5(void) = ^IndirectReadSideEffect[-1] : &:r413_1, ~m? -# 413| mu413_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r413_1 -# 413| r413_7(bool) = Constant[0] : -# 413| v413_8(void) = ConditionalBranch : r413_7 +# 35| Block 131 +# 35| r35_1835(glval) = VariableAddress[x131] : +# 35| mu35_1836(String) = Uninitialized[x131] : &:r35_1835 +# 35| r35_1837(glval) = FunctionAddress[String] : +# 35| v35_1838(void) = Call[String] : func:r35_1837, this:r35_1835 +# 35| mu35_1839(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1840(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1835 +# 35| r35_1841(glval) = VariableAddress[x131] : +# 35| r35_1842(glval) = FunctionAddress[~String] : +# 35| v35_1843(void) = Call[~String] : func:r35_1842, this:r35_1841 +# 35| mu35_1844(unknown) = ^CallSideEffect : ~m? +# 35| v35_1845(void) = ^IndirectReadSideEffect[-1] : &:r35_1841, ~m? +# 35| mu35_1846(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1841 +# 35| r35_1847(bool) = Constant[0] : +# 35| v35_1848(void) = ConditionalBranch : r35_1847 #-----| False -> Block 132 #-----| True -> Block 1026 -# 415| Block 132 -# 415| r415_1(glval) = VariableAddress[x132] : -# 415| mu415_2(String) = Uninitialized[x132] : &:r415_1 -# 415| r415_3(glval) = FunctionAddress[String] : -# 415| v415_4(void) = Call[String] : func:r415_3, this:r415_1 -# 415| mu415_5(unknown) = ^CallSideEffect : ~m? -# 415| mu415_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r415_1 -# 416| r416_1(glval) = VariableAddress[x132] : -# 416| r416_2(glval) = FunctionAddress[~String] : -# 416| v416_3(void) = Call[~String] : func:r416_2, this:r416_1 -# 416| mu416_4(unknown) = ^CallSideEffect : ~m? -# 416| v416_5(void) = ^IndirectReadSideEffect[-1] : &:r416_1, ~m? -# 416| mu416_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r416_1 -# 416| r416_7(bool) = Constant[0] : -# 416| v416_8(void) = ConditionalBranch : r416_7 +# 35| Block 132 +# 35| r35_1849(glval) = VariableAddress[x132] : +# 35| mu35_1850(String) = Uninitialized[x132] : &:r35_1849 +# 35| r35_1851(glval) = FunctionAddress[String] : +# 35| v35_1852(void) = Call[String] : func:r35_1851, this:r35_1849 +# 35| mu35_1853(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1854(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1849 +# 35| r35_1855(glval) = VariableAddress[x132] : +# 35| r35_1856(glval) = FunctionAddress[~String] : +# 35| v35_1857(void) = Call[~String] : func:r35_1856, this:r35_1855 +# 35| mu35_1858(unknown) = ^CallSideEffect : ~m? +# 35| v35_1859(void) = ^IndirectReadSideEffect[-1] : &:r35_1855, ~m? +# 35| mu35_1860(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1855 +# 35| r35_1861(bool) = Constant[0] : +# 35| v35_1862(void) = ConditionalBranch : r35_1861 #-----| False -> Block 133 #-----| True -> Block 1026 -# 418| Block 133 -# 418| r418_1(glval) = VariableAddress[x133] : -# 418| mu418_2(String) = Uninitialized[x133] : &:r418_1 -# 418| r418_3(glval) = FunctionAddress[String] : -# 418| v418_4(void) = Call[String] : func:r418_3, this:r418_1 -# 418| mu418_5(unknown) = ^CallSideEffect : ~m? -# 418| mu418_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r418_1 -# 419| r419_1(glval) = VariableAddress[x133] : -# 419| r419_2(glval) = FunctionAddress[~String] : -# 419| v419_3(void) = Call[~String] : func:r419_2, this:r419_1 -# 419| mu419_4(unknown) = ^CallSideEffect : ~m? -# 419| v419_5(void) = ^IndirectReadSideEffect[-1] : &:r419_1, ~m? -# 419| mu419_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r419_1 -# 419| r419_7(bool) = Constant[0] : -# 419| v419_8(void) = ConditionalBranch : r419_7 +# 35| Block 133 +# 35| r35_1863(glval) = VariableAddress[x133] : +# 35| mu35_1864(String) = Uninitialized[x133] : &:r35_1863 +# 35| r35_1865(glval) = FunctionAddress[String] : +# 35| v35_1866(void) = Call[String] : func:r35_1865, this:r35_1863 +# 35| mu35_1867(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1868(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1863 +# 35| r35_1869(glval) = VariableAddress[x133] : +# 35| r35_1870(glval) = FunctionAddress[~String] : +# 35| v35_1871(void) = Call[~String] : func:r35_1870, this:r35_1869 +# 35| mu35_1872(unknown) = ^CallSideEffect : ~m? +# 35| v35_1873(void) = ^IndirectReadSideEffect[-1] : &:r35_1869, ~m? +# 35| mu35_1874(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1869 +# 35| r35_1875(bool) = Constant[0] : +# 35| v35_1876(void) = ConditionalBranch : r35_1875 #-----| False -> Block 134 #-----| True -> Block 1026 -# 421| Block 134 -# 421| r421_1(glval) = VariableAddress[x134] : -# 421| mu421_2(String) = Uninitialized[x134] : &:r421_1 -# 421| r421_3(glval) = FunctionAddress[String] : -# 421| v421_4(void) = Call[String] : func:r421_3, this:r421_1 -# 421| mu421_5(unknown) = ^CallSideEffect : ~m? -# 421| mu421_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r421_1 -# 422| r422_1(glval) = VariableAddress[x134] : -# 422| r422_2(glval) = FunctionAddress[~String] : -# 422| v422_3(void) = Call[~String] : func:r422_2, this:r422_1 -# 422| mu422_4(unknown) = ^CallSideEffect : ~m? -# 422| v422_5(void) = ^IndirectReadSideEffect[-1] : &:r422_1, ~m? -# 422| mu422_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r422_1 -# 422| r422_7(bool) = Constant[0] : -# 422| v422_8(void) = ConditionalBranch : r422_7 +# 35| Block 134 +# 35| r35_1877(glval) = VariableAddress[x134] : +# 35| mu35_1878(String) = Uninitialized[x134] : &:r35_1877 +# 35| r35_1879(glval) = FunctionAddress[String] : +# 35| v35_1880(void) = Call[String] : func:r35_1879, this:r35_1877 +# 35| mu35_1881(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1882(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1877 +# 35| r35_1883(glval) = VariableAddress[x134] : +# 35| r35_1884(glval) = FunctionAddress[~String] : +# 35| v35_1885(void) = Call[~String] : func:r35_1884, this:r35_1883 +# 35| mu35_1886(unknown) = ^CallSideEffect : ~m? +# 35| v35_1887(void) = ^IndirectReadSideEffect[-1] : &:r35_1883, ~m? +# 35| mu35_1888(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1883 +# 35| r35_1889(bool) = Constant[0] : +# 35| v35_1890(void) = ConditionalBranch : r35_1889 #-----| False -> Block 135 #-----| True -> Block 1026 -# 424| Block 135 -# 424| r424_1(glval) = VariableAddress[x135] : -# 424| mu424_2(String) = Uninitialized[x135] : &:r424_1 -# 424| r424_3(glval) = FunctionAddress[String] : -# 424| v424_4(void) = Call[String] : func:r424_3, this:r424_1 -# 424| mu424_5(unknown) = ^CallSideEffect : ~m? -# 424| mu424_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r424_1 -# 425| r425_1(glval) = VariableAddress[x135] : -# 425| r425_2(glval) = FunctionAddress[~String] : -# 425| v425_3(void) = Call[~String] : func:r425_2, this:r425_1 -# 425| mu425_4(unknown) = ^CallSideEffect : ~m? -# 425| v425_5(void) = ^IndirectReadSideEffect[-1] : &:r425_1, ~m? -# 425| mu425_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r425_1 -# 425| r425_7(bool) = Constant[0] : -# 425| v425_8(void) = ConditionalBranch : r425_7 +# 35| Block 135 +# 35| r35_1891(glval) = VariableAddress[x135] : +# 35| mu35_1892(String) = Uninitialized[x135] : &:r35_1891 +# 35| r35_1893(glval) = FunctionAddress[String] : +# 35| v35_1894(void) = Call[String] : func:r35_1893, this:r35_1891 +# 35| mu35_1895(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1896(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1891 +# 35| r35_1897(glval) = VariableAddress[x135] : +# 35| r35_1898(glval) = FunctionAddress[~String] : +# 35| v35_1899(void) = Call[~String] : func:r35_1898, this:r35_1897 +# 35| mu35_1900(unknown) = ^CallSideEffect : ~m? +# 35| v35_1901(void) = ^IndirectReadSideEffect[-1] : &:r35_1897, ~m? +# 35| mu35_1902(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1897 +# 35| r35_1903(bool) = Constant[0] : +# 35| v35_1904(void) = ConditionalBranch : r35_1903 #-----| False -> Block 136 #-----| True -> Block 1026 -# 427| Block 136 -# 427| r427_1(glval) = VariableAddress[x136] : -# 427| mu427_2(String) = Uninitialized[x136] : &:r427_1 -# 427| r427_3(glval) = FunctionAddress[String] : -# 427| v427_4(void) = Call[String] : func:r427_3, this:r427_1 -# 427| mu427_5(unknown) = ^CallSideEffect : ~m? -# 427| mu427_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r427_1 -# 428| r428_1(glval) = VariableAddress[x136] : -# 428| r428_2(glval) = FunctionAddress[~String] : -# 428| v428_3(void) = Call[~String] : func:r428_2, this:r428_1 -# 428| mu428_4(unknown) = ^CallSideEffect : ~m? -# 428| v428_5(void) = ^IndirectReadSideEffect[-1] : &:r428_1, ~m? -# 428| mu428_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r428_1 -# 428| r428_7(bool) = Constant[0] : -# 428| v428_8(void) = ConditionalBranch : r428_7 +# 35| Block 136 +# 35| r35_1905(glval) = VariableAddress[x136] : +# 35| mu35_1906(String) = Uninitialized[x136] : &:r35_1905 +# 35| r35_1907(glval) = FunctionAddress[String] : +# 35| v35_1908(void) = Call[String] : func:r35_1907, this:r35_1905 +# 35| mu35_1909(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1910(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1905 +# 35| r35_1911(glval) = VariableAddress[x136] : +# 35| r35_1912(glval) = FunctionAddress[~String] : +# 35| v35_1913(void) = Call[~String] : func:r35_1912, this:r35_1911 +# 35| mu35_1914(unknown) = ^CallSideEffect : ~m? +# 35| v35_1915(void) = ^IndirectReadSideEffect[-1] : &:r35_1911, ~m? +# 35| mu35_1916(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1911 +# 35| r35_1917(bool) = Constant[0] : +# 35| v35_1918(void) = ConditionalBranch : r35_1917 #-----| False -> Block 137 #-----| True -> Block 1026 -# 430| Block 137 -# 430| r430_1(glval) = VariableAddress[x137] : -# 430| mu430_2(String) = Uninitialized[x137] : &:r430_1 -# 430| r430_3(glval) = FunctionAddress[String] : -# 430| v430_4(void) = Call[String] : func:r430_3, this:r430_1 -# 430| mu430_5(unknown) = ^CallSideEffect : ~m? -# 430| mu430_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r430_1 -# 431| r431_1(glval) = VariableAddress[x137] : -# 431| r431_2(glval) = FunctionAddress[~String] : -# 431| v431_3(void) = Call[~String] : func:r431_2, this:r431_1 -# 431| mu431_4(unknown) = ^CallSideEffect : ~m? -# 431| v431_5(void) = ^IndirectReadSideEffect[-1] : &:r431_1, ~m? -# 431| mu431_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r431_1 -# 431| r431_7(bool) = Constant[0] : -# 431| v431_8(void) = ConditionalBranch : r431_7 +# 35| Block 137 +# 35| r35_1919(glval) = VariableAddress[x137] : +# 35| mu35_1920(String) = Uninitialized[x137] : &:r35_1919 +# 35| r35_1921(glval) = FunctionAddress[String] : +# 35| v35_1922(void) = Call[String] : func:r35_1921, this:r35_1919 +# 35| mu35_1923(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1924(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1919 +# 35| r35_1925(glval) = VariableAddress[x137] : +# 35| r35_1926(glval) = FunctionAddress[~String] : +# 35| v35_1927(void) = Call[~String] : func:r35_1926, this:r35_1925 +# 35| mu35_1928(unknown) = ^CallSideEffect : ~m? +# 35| v35_1929(void) = ^IndirectReadSideEffect[-1] : &:r35_1925, ~m? +# 35| mu35_1930(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1925 +# 35| r35_1931(bool) = Constant[0] : +# 35| v35_1932(void) = ConditionalBranch : r35_1931 #-----| False -> Block 138 #-----| True -> Block 1026 -# 433| Block 138 -# 433| r433_1(glval) = VariableAddress[x138] : -# 433| mu433_2(String) = Uninitialized[x138] : &:r433_1 -# 433| r433_3(glval) = FunctionAddress[String] : -# 433| v433_4(void) = Call[String] : func:r433_3, this:r433_1 -# 433| mu433_5(unknown) = ^CallSideEffect : ~m? -# 433| mu433_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r433_1 -# 434| r434_1(glval) = VariableAddress[x138] : -# 434| r434_2(glval) = FunctionAddress[~String] : -# 434| v434_3(void) = Call[~String] : func:r434_2, this:r434_1 -# 434| mu434_4(unknown) = ^CallSideEffect : ~m? -# 434| v434_5(void) = ^IndirectReadSideEffect[-1] : &:r434_1, ~m? -# 434| mu434_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r434_1 -# 434| r434_7(bool) = Constant[0] : -# 434| v434_8(void) = ConditionalBranch : r434_7 +# 35| Block 138 +# 35| r35_1933(glval) = VariableAddress[x138] : +# 35| mu35_1934(String) = Uninitialized[x138] : &:r35_1933 +# 35| r35_1935(glval) = FunctionAddress[String] : +# 35| v35_1936(void) = Call[String] : func:r35_1935, this:r35_1933 +# 35| mu35_1937(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1938(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1933 +# 35| r35_1939(glval) = VariableAddress[x138] : +# 35| r35_1940(glval) = FunctionAddress[~String] : +# 35| v35_1941(void) = Call[~String] : func:r35_1940, this:r35_1939 +# 35| mu35_1942(unknown) = ^CallSideEffect : ~m? +# 35| v35_1943(void) = ^IndirectReadSideEffect[-1] : &:r35_1939, ~m? +# 35| mu35_1944(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1939 +# 35| r35_1945(bool) = Constant[0] : +# 35| v35_1946(void) = ConditionalBranch : r35_1945 #-----| False -> Block 139 #-----| True -> Block 1026 -# 436| Block 139 -# 436| r436_1(glval) = VariableAddress[x139] : -# 436| mu436_2(String) = Uninitialized[x139] : &:r436_1 -# 436| r436_3(glval) = FunctionAddress[String] : -# 436| v436_4(void) = Call[String] : func:r436_3, this:r436_1 -# 436| mu436_5(unknown) = ^CallSideEffect : ~m? -# 436| mu436_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r436_1 -# 437| r437_1(glval) = VariableAddress[x139] : -# 437| r437_2(glval) = FunctionAddress[~String] : -# 437| v437_3(void) = Call[~String] : func:r437_2, this:r437_1 -# 437| mu437_4(unknown) = ^CallSideEffect : ~m? -# 437| v437_5(void) = ^IndirectReadSideEffect[-1] : &:r437_1, ~m? -# 437| mu437_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r437_1 -# 437| r437_7(bool) = Constant[0] : -# 437| v437_8(void) = ConditionalBranch : r437_7 +# 35| Block 139 +# 35| r35_1947(glval) = VariableAddress[x139] : +# 35| mu35_1948(String) = Uninitialized[x139] : &:r35_1947 +# 35| r35_1949(glval) = FunctionAddress[String] : +# 35| v35_1950(void) = Call[String] : func:r35_1949, this:r35_1947 +# 35| mu35_1951(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1952(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1947 +# 35| r35_1953(glval) = VariableAddress[x139] : +# 35| r35_1954(glval) = FunctionAddress[~String] : +# 35| v35_1955(void) = Call[~String] : func:r35_1954, this:r35_1953 +# 35| mu35_1956(unknown) = ^CallSideEffect : ~m? +# 35| v35_1957(void) = ^IndirectReadSideEffect[-1] : &:r35_1953, ~m? +# 35| mu35_1958(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1953 +# 35| r35_1959(bool) = Constant[0] : +# 35| v35_1960(void) = ConditionalBranch : r35_1959 #-----| False -> Block 140 #-----| True -> Block 1026 -# 439| Block 140 -# 439| r439_1(glval) = VariableAddress[x140] : -# 439| mu439_2(String) = Uninitialized[x140] : &:r439_1 -# 439| r439_3(glval) = FunctionAddress[String] : -# 439| v439_4(void) = Call[String] : func:r439_3, this:r439_1 -# 439| mu439_5(unknown) = ^CallSideEffect : ~m? -# 439| mu439_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r439_1 -# 440| r440_1(glval) = VariableAddress[x140] : -# 440| r440_2(glval) = FunctionAddress[~String] : -# 440| v440_3(void) = Call[~String] : func:r440_2, this:r440_1 -# 440| mu440_4(unknown) = ^CallSideEffect : ~m? -# 440| v440_5(void) = ^IndirectReadSideEffect[-1] : &:r440_1, ~m? -# 440| mu440_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r440_1 -# 440| r440_7(bool) = Constant[0] : -# 440| v440_8(void) = ConditionalBranch : r440_7 +# 35| Block 140 +# 35| r35_1961(glval) = VariableAddress[x140] : +# 35| mu35_1962(String) = Uninitialized[x140] : &:r35_1961 +# 35| r35_1963(glval) = FunctionAddress[String] : +# 35| v35_1964(void) = Call[String] : func:r35_1963, this:r35_1961 +# 35| mu35_1965(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1966(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1961 +# 35| r35_1967(glval) = VariableAddress[x140] : +# 35| r35_1968(glval) = FunctionAddress[~String] : +# 35| v35_1969(void) = Call[~String] : func:r35_1968, this:r35_1967 +# 35| mu35_1970(unknown) = ^CallSideEffect : ~m? +# 35| v35_1971(void) = ^IndirectReadSideEffect[-1] : &:r35_1967, ~m? +# 35| mu35_1972(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1967 +# 35| r35_1973(bool) = Constant[0] : +# 35| v35_1974(void) = ConditionalBranch : r35_1973 #-----| False -> Block 141 #-----| True -> Block 1026 -# 442| Block 141 -# 442| r442_1(glval) = VariableAddress[x141] : -# 442| mu442_2(String) = Uninitialized[x141] : &:r442_1 -# 442| r442_3(glval) = FunctionAddress[String] : -# 442| v442_4(void) = Call[String] : func:r442_3, this:r442_1 -# 442| mu442_5(unknown) = ^CallSideEffect : ~m? -# 442| mu442_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r442_1 -# 443| r443_1(glval) = VariableAddress[x141] : -# 443| r443_2(glval) = FunctionAddress[~String] : -# 443| v443_3(void) = Call[~String] : func:r443_2, this:r443_1 -# 443| mu443_4(unknown) = ^CallSideEffect : ~m? -# 443| v443_5(void) = ^IndirectReadSideEffect[-1] : &:r443_1, ~m? -# 443| mu443_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r443_1 -# 443| r443_7(bool) = Constant[0] : -# 443| v443_8(void) = ConditionalBranch : r443_7 +# 35| Block 141 +# 35| r35_1975(glval) = VariableAddress[x141] : +# 35| mu35_1976(String) = Uninitialized[x141] : &:r35_1975 +# 35| r35_1977(glval) = FunctionAddress[String] : +# 35| v35_1978(void) = Call[String] : func:r35_1977, this:r35_1975 +# 35| mu35_1979(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1980(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1975 +# 35| r35_1981(glval) = VariableAddress[x141] : +# 35| r35_1982(glval) = FunctionAddress[~String] : +# 35| v35_1983(void) = Call[~String] : func:r35_1982, this:r35_1981 +# 35| mu35_1984(unknown) = ^CallSideEffect : ~m? +# 35| v35_1985(void) = ^IndirectReadSideEffect[-1] : &:r35_1981, ~m? +# 35| mu35_1986(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1981 +# 35| r35_1987(bool) = Constant[0] : +# 35| v35_1988(void) = ConditionalBranch : r35_1987 #-----| False -> Block 142 #-----| True -> Block 1026 -# 445| Block 142 -# 445| r445_1(glval) = VariableAddress[x142] : -# 445| mu445_2(String) = Uninitialized[x142] : &:r445_1 -# 445| r445_3(glval) = FunctionAddress[String] : -# 445| v445_4(void) = Call[String] : func:r445_3, this:r445_1 -# 445| mu445_5(unknown) = ^CallSideEffect : ~m? -# 445| mu445_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r445_1 -# 446| r446_1(glval) = VariableAddress[x142] : -# 446| r446_2(glval) = FunctionAddress[~String] : -# 446| v446_3(void) = Call[~String] : func:r446_2, this:r446_1 -# 446| mu446_4(unknown) = ^CallSideEffect : ~m? -# 446| v446_5(void) = ^IndirectReadSideEffect[-1] : &:r446_1, ~m? -# 446| mu446_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r446_1 -# 446| r446_7(bool) = Constant[0] : -# 446| v446_8(void) = ConditionalBranch : r446_7 +# 35| Block 142 +# 35| r35_1989(glval) = VariableAddress[x142] : +# 35| mu35_1990(String) = Uninitialized[x142] : &:r35_1989 +# 35| r35_1991(glval) = FunctionAddress[String] : +# 35| v35_1992(void) = Call[String] : func:r35_1991, this:r35_1989 +# 35| mu35_1993(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1994(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1989 +# 35| r35_1995(glval) = VariableAddress[x142] : +# 35| r35_1996(glval) = FunctionAddress[~String] : +# 35| v35_1997(void) = Call[~String] : func:r35_1996, this:r35_1995 +# 35| mu35_1998(unknown) = ^CallSideEffect : ~m? +# 35| v35_1999(void) = ^IndirectReadSideEffect[-1] : &:r35_1995, ~m? +# 35| mu35_2000(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1995 +# 35| r35_2001(bool) = Constant[0] : +# 35| v35_2002(void) = ConditionalBranch : r35_2001 #-----| False -> Block 143 #-----| True -> Block 1026 -# 448| Block 143 -# 448| r448_1(glval) = VariableAddress[x143] : -# 448| mu448_2(String) = Uninitialized[x143] : &:r448_1 -# 448| r448_3(glval) = FunctionAddress[String] : -# 448| v448_4(void) = Call[String] : func:r448_3, this:r448_1 -# 448| mu448_5(unknown) = ^CallSideEffect : ~m? -# 448| mu448_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r448_1 -# 449| r449_1(glval) = VariableAddress[x143] : -# 449| r449_2(glval) = FunctionAddress[~String] : -# 449| v449_3(void) = Call[~String] : func:r449_2, this:r449_1 -# 449| mu449_4(unknown) = ^CallSideEffect : ~m? -# 449| v449_5(void) = ^IndirectReadSideEffect[-1] : &:r449_1, ~m? -# 449| mu449_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r449_1 -# 449| r449_7(bool) = Constant[0] : -# 449| v449_8(void) = ConditionalBranch : r449_7 +# 35| Block 143 +# 35| r35_2003(glval) = VariableAddress[x143] : +# 35| mu35_2004(String) = Uninitialized[x143] : &:r35_2003 +# 35| r35_2005(glval) = FunctionAddress[String] : +# 35| v35_2006(void) = Call[String] : func:r35_2005, this:r35_2003 +# 35| mu35_2007(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2008(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2003 +# 35| r35_2009(glval) = VariableAddress[x143] : +# 35| r35_2010(glval) = FunctionAddress[~String] : +# 35| v35_2011(void) = Call[~String] : func:r35_2010, this:r35_2009 +# 35| mu35_2012(unknown) = ^CallSideEffect : ~m? +# 35| v35_2013(void) = ^IndirectReadSideEffect[-1] : &:r35_2009, ~m? +# 35| mu35_2014(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2009 +# 35| r35_2015(bool) = Constant[0] : +# 35| v35_2016(void) = ConditionalBranch : r35_2015 #-----| False -> Block 144 #-----| True -> Block 1026 -# 451| Block 144 -# 451| r451_1(glval) = VariableAddress[x144] : -# 451| mu451_2(String) = Uninitialized[x144] : &:r451_1 -# 451| r451_3(glval) = FunctionAddress[String] : -# 451| v451_4(void) = Call[String] : func:r451_3, this:r451_1 -# 451| mu451_5(unknown) = ^CallSideEffect : ~m? -# 451| mu451_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r451_1 -# 452| r452_1(glval) = VariableAddress[x144] : -# 452| r452_2(glval) = FunctionAddress[~String] : -# 452| v452_3(void) = Call[~String] : func:r452_2, this:r452_1 -# 452| mu452_4(unknown) = ^CallSideEffect : ~m? -# 452| v452_5(void) = ^IndirectReadSideEffect[-1] : &:r452_1, ~m? -# 452| mu452_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r452_1 -# 452| r452_7(bool) = Constant[0] : -# 452| v452_8(void) = ConditionalBranch : r452_7 +# 35| Block 144 +# 35| r35_2017(glval) = VariableAddress[x144] : +# 35| mu35_2018(String) = Uninitialized[x144] : &:r35_2017 +# 35| r35_2019(glval) = FunctionAddress[String] : +# 35| v35_2020(void) = Call[String] : func:r35_2019, this:r35_2017 +# 35| mu35_2021(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2022(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2017 +# 35| r35_2023(glval) = VariableAddress[x144] : +# 35| r35_2024(glval) = FunctionAddress[~String] : +# 35| v35_2025(void) = Call[~String] : func:r35_2024, this:r35_2023 +# 35| mu35_2026(unknown) = ^CallSideEffect : ~m? +# 35| v35_2027(void) = ^IndirectReadSideEffect[-1] : &:r35_2023, ~m? +# 35| mu35_2028(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2023 +# 35| r35_2029(bool) = Constant[0] : +# 35| v35_2030(void) = ConditionalBranch : r35_2029 #-----| False -> Block 145 #-----| True -> Block 1026 -# 454| Block 145 -# 454| r454_1(glval) = VariableAddress[x145] : -# 454| mu454_2(String) = Uninitialized[x145] : &:r454_1 -# 454| r454_3(glval) = FunctionAddress[String] : -# 454| v454_4(void) = Call[String] : func:r454_3, this:r454_1 -# 454| mu454_5(unknown) = ^CallSideEffect : ~m? -# 454| mu454_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r454_1 -# 455| r455_1(glval) = VariableAddress[x145] : -# 455| r455_2(glval) = FunctionAddress[~String] : -# 455| v455_3(void) = Call[~String] : func:r455_2, this:r455_1 -# 455| mu455_4(unknown) = ^CallSideEffect : ~m? -# 455| v455_5(void) = ^IndirectReadSideEffect[-1] : &:r455_1, ~m? -# 455| mu455_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r455_1 -# 455| r455_7(bool) = Constant[0] : -# 455| v455_8(void) = ConditionalBranch : r455_7 +# 35| Block 145 +# 35| r35_2031(glval) = VariableAddress[x145] : +# 35| mu35_2032(String) = Uninitialized[x145] : &:r35_2031 +# 35| r35_2033(glval) = FunctionAddress[String] : +# 35| v35_2034(void) = Call[String] : func:r35_2033, this:r35_2031 +# 35| mu35_2035(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2036(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2031 +# 35| r35_2037(glval) = VariableAddress[x145] : +# 35| r35_2038(glval) = FunctionAddress[~String] : +# 35| v35_2039(void) = Call[~String] : func:r35_2038, this:r35_2037 +# 35| mu35_2040(unknown) = ^CallSideEffect : ~m? +# 35| v35_2041(void) = ^IndirectReadSideEffect[-1] : &:r35_2037, ~m? +# 35| mu35_2042(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2037 +# 35| r35_2043(bool) = Constant[0] : +# 35| v35_2044(void) = ConditionalBranch : r35_2043 #-----| False -> Block 146 #-----| True -> Block 1026 -# 457| Block 146 -# 457| r457_1(glval) = VariableAddress[x146] : -# 457| mu457_2(String) = Uninitialized[x146] : &:r457_1 -# 457| r457_3(glval) = FunctionAddress[String] : -# 457| v457_4(void) = Call[String] : func:r457_3, this:r457_1 -# 457| mu457_5(unknown) = ^CallSideEffect : ~m? -# 457| mu457_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r457_1 -# 458| r458_1(glval) = VariableAddress[x146] : -# 458| r458_2(glval) = FunctionAddress[~String] : -# 458| v458_3(void) = Call[~String] : func:r458_2, this:r458_1 -# 458| mu458_4(unknown) = ^CallSideEffect : ~m? -# 458| v458_5(void) = ^IndirectReadSideEffect[-1] : &:r458_1, ~m? -# 458| mu458_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r458_1 -# 458| r458_7(bool) = Constant[0] : -# 458| v458_8(void) = ConditionalBranch : r458_7 +# 35| Block 146 +# 35| r35_2045(glval) = VariableAddress[x146] : +# 35| mu35_2046(String) = Uninitialized[x146] : &:r35_2045 +# 35| r35_2047(glval) = FunctionAddress[String] : +# 35| v35_2048(void) = Call[String] : func:r35_2047, this:r35_2045 +# 35| mu35_2049(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2050(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2045 +# 35| r35_2051(glval) = VariableAddress[x146] : +# 35| r35_2052(glval) = FunctionAddress[~String] : +# 35| v35_2053(void) = Call[~String] : func:r35_2052, this:r35_2051 +# 35| mu35_2054(unknown) = ^CallSideEffect : ~m? +# 35| v35_2055(void) = ^IndirectReadSideEffect[-1] : &:r35_2051, ~m? +# 35| mu35_2056(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2051 +# 35| r35_2057(bool) = Constant[0] : +# 35| v35_2058(void) = ConditionalBranch : r35_2057 #-----| False -> Block 147 #-----| True -> Block 1026 -# 460| Block 147 -# 460| r460_1(glval) = VariableAddress[x147] : -# 460| mu460_2(String) = Uninitialized[x147] : &:r460_1 -# 460| r460_3(glval) = FunctionAddress[String] : -# 460| v460_4(void) = Call[String] : func:r460_3, this:r460_1 -# 460| mu460_5(unknown) = ^CallSideEffect : ~m? -# 460| mu460_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r460_1 -# 461| r461_1(glval) = VariableAddress[x147] : -# 461| r461_2(glval) = FunctionAddress[~String] : -# 461| v461_3(void) = Call[~String] : func:r461_2, this:r461_1 -# 461| mu461_4(unknown) = ^CallSideEffect : ~m? -# 461| v461_5(void) = ^IndirectReadSideEffect[-1] : &:r461_1, ~m? -# 461| mu461_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r461_1 -# 461| r461_7(bool) = Constant[0] : -# 461| v461_8(void) = ConditionalBranch : r461_7 +# 35| Block 147 +# 35| r35_2059(glval) = VariableAddress[x147] : +# 35| mu35_2060(String) = Uninitialized[x147] : &:r35_2059 +# 35| r35_2061(glval) = FunctionAddress[String] : +# 35| v35_2062(void) = Call[String] : func:r35_2061, this:r35_2059 +# 35| mu35_2063(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2064(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2059 +# 35| r35_2065(glval) = VariableAddress[x147] : +# 35| r35_2066(glval) = FunctionAddress[~String] : +# 35| v35_2067(void) = Call[~String] : func:r35_2066, this:r35_2065 +# 35| mu35_2068(unknown) = ^CallSideEffect : ~m? +# 35| v35_2069(void) = ^IndirectReadSideEffect[-1] : &:r35_2065, ~m? +# 35| mu35_2070(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2065 +# 35| r35_2071(bool) = Constant[0] : +# 35| v35_2072(void) = ConditionalBranch : r35_2071 #-----| False -> Block 148 #-----| True -> Block 1026 -# 463| Block 148 -# 463| r463_1(glval) = VariableAddress[x148] : -# 463| mu463_2(String) = Uninitialized[x148] : &:r463_1 -# 463| r463_3(glval) = FunctionAddress[String] : -# 463| v463_4(void) = Call[String] : func:r463_3, this:r463_1 -# 463| mu463_5(unknown) = ^CallSideEffect : ~m? -# 463| mu463_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r463_1 -# 464| r464_1(glval) = VariableAddress[x148] : -# 464| r464_2(glval) = FunctionAddress[~String] : -# 464| v464_3(void) = Call[~String] : func:r464_2, this:r464_1 -# 464| mu464_4(unknown) = ^CallSideEffect : ~m? -# 464| v464_5(void) = ^IndirectReadSideEffect[-1] : &:r464_1, ~m? -# 464| mu464_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r464_1 -# 464| r464_7(bool) = Constant[0] : -# 464| v464_8(void) = ConditionalBranch : r464_7 +# 35| Block 148 +# 35| r35_2073(glval) = VariableAddress[x148] : +# 35| mu35_2074(String) = Uninitialized[x148] : &:r35_2073 +# 35| r35_2075(glval) = FunctionAddress[String] : +# 35| v35_2076(void) = Call[String] : func:r35_2075, this:r35_2073 +# 35| mu35_2077(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2078(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2073 +# 35| r35_2079(glval) = VariableAddress[x148] : +# 35| r35_2080(glval) = FunctionAddress[~String] : +# 35| v35_2081(void) = Call[~String] : func:r35_2080, this:r35_2079 +# 35| mu35_2082(unknown) = ^CallSideEffect : ~m? +# 35| v35_2083(void) = ^IndirectReadSideEffect[-1] : &:r35_2079, ~m? +# 35| mu35_2084(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2079 +# 35| r35_2085(bool) = Constant[0] : +# 35| v35_2086(void) = ConditionalBranch : r35_2085 #-----| False -> Block 149 #-----| True -> Block 1026 -# 466| Block 149 -# 466| r466_1(glval) = VariableAddress[x149] : -# 466| mu466_2(String) = Uninitialized[x149] : &:r466_1 -# 466| r466_3(glval) = FunctionAddress[String] : -# 466| v466_4(void) = Call[String] : func:r466_3, this:r466_1 -# 466| mu466_5(unknown) = ^CallSideEffect : ~m? -# 466| mu466_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r466_1 -# 467| r467_1(glval) = VariableAddress[x149] : -# 467| r467_2(glval) = FunctionAddress[~String] : -# 467| v467_3(void) = Call[~String] : func:r467_2, this:r467_1 -# 467| mu467_4(unknown) = ^CallSideEffect : ~m? -# 467| v467_5(void) = ^IndirectReadSideEffect[-1] : &:r467_1, ~m? -# 467| mu467_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r467_1 -# 467| r467_7(bool) = Constant[0] : -# 467| v467_8(void) = ConditionalBranch : r467_7 +# 35| Block 149 +# 35| r35_2087(glval) = VariableAddress[x149] : +# 35| mu35_2088(String) = Uninitialized[x149] : &:r35_2087 +# 35| r35_2089(glval) = FunctionAddress[String] : +# 35| v35_2090(void) = Call[String] : func:r35_2089, this:r35_2087 +# 35| mu35_2091(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2092(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2087 +# 35| r35_2093(glval) = VariableAddress[x149] : +# 35| r35_2094(glval) = FunctionAddress[~String] : +# 35| v35_2095(void) = Call[~String] : func:r35_2094, this:r35_2093 +# 35| mu35_2096(unknown) = ^CallSideEffect : ~m? +# 35| v35_2097(void) = ^IndirectReadSideEffect[-1] : &:r35_2093, ~m? +# 35| mu35_2098(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2093 +# 35| r35_2099(bool) = Constant[0] : +# 35| v35_2100(void) = ConditionalBranch : r35_2099 #-----| False -> Block 150 #-----| True -> Block 1026 -# 469| Block 150 -# 469| r469_1(glval) = VariableAddress[x150] : -# 469| mu469_2(String) = Uninitialized[x150] : &:r469_1 -# 469| r469_3(glval) = FunctionAddress[String] : -# 469| v469_4(void) = Call[String] : func:r469_3, this:r469_1 -# 469| mu469_5(unknown) = ^CallSideEffect : ~m? -# 469| mu469_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r469_1 -# 470| r470_1(glval) = VariableAddress[x150] : -# 470| r470_2(glval) = FunctionAddress[~String] : -# 470| v470_3(void) = Call[~String] : func:r470_2, this:r470_1 -# 470| mu470_4(unknown) = ^CallSideEffect : ~m? -# 470| v470_5(void) = ^IndirectReadSideEffect[-1] : &:r470_1, ~m? -# 470| mu470_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r470_1 -# 470| r470_7(bool) = Constant[0] : -# 470| v470_8(void) = ConditionalBranch : r470_7 +# 35| Block 150 +# 35| r35_2101(glval) = VariableAddress[x150] : +# 35| mu35_2102(String) = Uninitialized[x150] : &:r35_2101 +# 35| r35_2103(glval) = FunctionAddress[String] : +# 35| v35_2104(void) = Call[String] : func:r35_2103, this:r35_2101 +# 35| mu35_2105(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2106(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2101 +# 35| r35_2107(glval) = VariableAddress[x150] : +# 35| r35_2108(glval) = FunctionAddress[~String] : +# 35| v35_2109(void) = Call[~String] : func:r35_2108, this:r35_2107 +# 35| mu35_2110(unknown) = ^CallSideEffect : ~m? +# 35| v35_2111(void) = ^IndirectReadSideEffect[-1] : &:r35_2107, ~m? +# 35| mu35_2112(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2107 +# 35| r35_2113(bool) = Constant[0] : +# 35| v35_2114(void) = ConditionalBranch : r35_2113 #-----| False -> Block 151 #-----| True -> Block 1026 -# 472| Block 151 -# 472| r472_1(glval) = VariableAddress[x151] : -# 472| mu472_2(String) = Uninitialized[x151] : &:r472_1 -# 472| r472_3(glval) = FunctionAddress[String] : -# 472| v472_4(void) = Call[String] : func:r472_3, this:r472_1 -# 472| mu472_5(unknown) = ^CallSideEffect : ~m? -# 472| mu472_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r472_1 -# 473| r473_1(glval) = VariableAddress[x151] : -# 473| r473_2(glval) = FunctionAddress[~String] : -# 473| v473_3(void) = Call[~String] : func:r473_2, this:r473_1 -# 473| mu473_4(unknown) = ^CallSideEffect : ~m? -# 473| v473_5(void) = ^IndirectReadSideEffect[-1] : &:r473_1, ~m? -# 473| mu473_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r473_1 -# 473| r473_7(bool) = Constant[0] : -# 473| v473_8(void) = ConditionalBranch : r473_7 +# 35| Block 151 +# 35| r35_2115(glval) = VariableAddress[x151] : +# 35| mu35_2116(String) = Uninitialized[x151] : &:r35_2115 +# 35| r35_2117(glval) = FunctionAddress[String] : +# 35| v35_2118(void) = Call[String] : func:r35_2117, this:r35_2115 +# 35| mu35_2119(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2120(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2115 +# 35| r35_2121(glval) = VariableAddress[x151] : +# 35| r35_2122(glval) = FunctionAddress[~String] : +# 35| v35_2123(void) = Call[~String] : func:r35_2122, this:r35_2121 +# 35| mu35_2124(unknown) = ^CallSideEffect : ~m? +# 35| v35_2125(void) = ^IndirectReadSideEffect[-1] : &:r35_2121, ~m? +# 35| mu35_2126(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2121 +# 35| r35_2127(bool) = Constant[0] : +# 35| v35_2128(void) = ConditionalBranch : r35_2127 #-----| False -> Block 152 #-----| True -> Block 1026 -# 475| Block 152 -# 475| r475_1(glval) = VariableAddress[x152] : -# 475| mu475_2(String) = Uninitialized[x152] : &:r475_1 -# 475| r475_3(glval) = FunctionAddress[String] : -# 475| v475_4(void) = Call[String] : func:r475_3, this:r475_1 -# 475| mu475_5(unknown) = ^CallSideEffect : ~m? -# 475| mu475_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r475_1 -# 476| r476_1(glval) = VariableAddress[x152] : -# 476| r476_2(glval) = FunctionAddress[~String] : -# 476| v476_3(void) = Call[~String] : func:r476_2, this:r476_1 -# 476| mu476_4(unknown) = ^CallSideEffect : ~m? -# 476| v476_5(void) = ^IndirectReadSideEffect[-1] : &:r476_1, ~m? -# 476| mu476_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r476_1 -# 476| r476_7(bool) = Constant[0] : -# 476| v476_8(void) = ConditionalBranch : r476_7 +# 35| Block 152 +# 35| r35_2129(glval) = VariableAddress[x152] : +# 35| mu35_2130(String) = Uninitialized[x152] : &:r35_2129 +# 35| r35_2131(glval) = FunctionAddress[String] : +# 35| v35_2132(void) = Call[String] : func:r35_2131, this:r35_2129 +# 35| mu35_2133(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2134(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2129 +# 35| r35_2135(glval) = VariableAddress[x152] : +# 35| r35_2136(glval) = FunctionAddress[~String] : +# 35| v35_2137(void) = Call[~String] : func:r35_2136, this:r35_2135 +# 35| mu35_2138(unknown) = ^CallSideEffect : ~m? +# 35| v35_2139(void) = ^IndirectReadSideEffect[-1] : &:r35_2135, ~m? +# 35| mu35_2140(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2135 +# 35| r35_2141(bool) = Constant[0] : +# 35| v35_2142(void) = ConditionalBranch : r35_2141 #-----| False -> Block 153 #-----| True -> Block 1026 -# 478| Block 153 -# 478| r478_1(glval) = VariableAddress[x153] : -# 478| mu478_2(String) = Uninitialized[x153] : &:r478_1 -# 478| r478_3(glval) = FunctionAddress[String] : -# 478| v478_4(void) = Call[String] : func:r478_3, this:r478_1 -# 478| mu478_5(unknown) = ^CallSideEffect : ~m? -# 478| mu478_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r478_1 -# 479| r479_1(glval) = VariableAddress[x153] : -# 479| r479_2(glval) = FunctionAddress[~String] : -# 479| v479_3(void) = Call[~String] : func:r479_2, this:r479_1 -# 479| mu479_4(unknown) = ^CallSideEffect : ~m? -# 479| v479_5(void) = ^IndirectReadSideEffect[-1] : &:r479_1, ~m? -# 479| mu479_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r479_1 -# 479| r479_7(bool) = Constant[0] : -# 479| v479_8(void) = ConditionalBranch : r479_7 +# 35| Block 153 +# 35| r35_2143(glval) = VariableAddress[x153] : +# 35| mu35_2144(String) = Uninitialized[x153] : &:r35_2143 +# 35| r35_2145(glval) = FunctionAddress[String] : +# 35| v35_2146(void) = Call[String] : func:r35_2145, this:r35_2143 +# 35| mu35_2147(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2148(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2143 +# 35| r35_2149(glval) = VariableAddress[x153] : +# 35| r35_2150(glval) = FunctionAddress[~String] : +# 35| v35_2151(void) = Call[~String] : func:r35_2150, this:r35_2149 +# 35| mu35_2152(unknown) = ^CallSideEffect : ~m? +# 35| v35_2153(void) = ^IndirectReadSideEffect[-1] : &:r35_2149, ~m? +# 35| mu35_2154(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2149 +# 35| r35_2155(bool) = Constant[0] : +# 35| v35_2156(void) = ConditionalBranch : r35_2155 #-----| False -> Block 154 #-----| True -> Block 1026 -# 481| Block 154 -# 481| r481_1(glval) = VariableAddress[x154] : -# 481| mu481_2(String) = Uninitialized[x154] : &:r481_1 -# 481| r481_3(glval) = FunctionAddress[String] : -# 481| v481_4(void) = Call[String] : func:r481_3, this:r481_1 -# 481| mu481_5(unknown) = ^CallSideEffect : ~m? -# 481| mu481_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r481_1 -# 482| r482_1(glval) = VariableAddress[x154] : -# 482| r482_2(glval) = FunctionAddress[~String] : -# 482| v482_3(void) = Call[~String] : func:r482_2, this:r482_1 -# 482| mu482_4(unknown) = ^CallSideEffect : ~m? -# 482| v482_5(void) = ^IndirectReadSideEffect[-1] : &:r482_1, ~m? -# 482| mu482_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r482_1 -# 482| r482_7(bool) = Constant[0] : -# 482| v482_8(void) = ConditionalBranch : r482_7 +# 35| Block 154 +# 35| r35_2157(glval) = VariableAddress[x154] : +# 35| mu35_2158(String) = Uninitialized[x154] : &:r35_2157 +# 35| r35_2159(glval) = FunctionAddress[String] : +# 35| v35_2160(void) = Call[String] : func:r35_2159, this:r35_2157 +# 35| mu35_2161(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2162(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2157 +# 35| r35_2163(glval) = VariableAddress[x154] : +# 35| r35_2164(glval) = FunctionAddress[~String] : +# 35| v35_2165(void) = Call[~String] : func:r35_2164, this:r35_2163 +# 35| mu35_2166(unknown) = ^CallSideEffect : ~m? +# 35| v35_2167(void) = ^IndirectReadSideEffect[-1] : &:r35_2163, ~m? +# 35| mu35_2168(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2163 +# 35| r35_2169(bool) = Constant[0] : +# 35| v35_2170(void) = ConditionalBranch : r35_2169 #-----| False -> Block 155 #-----| True -> Block 1026 -# 484| Block 155 -# 484| r484_1(glval) = VariableAddress[x155] : -# 484| mu484_2(String) = Uninitialized[x155] : &:r484_1 -# 484| r484_3(glval) = FunctionAddress[String] : -# 484| v484_4(void) = Call[String] : func:r484_3, this:r484_1 -# 484| mu484_5(unknown) = ^CallSideEffect : ~m? -# 484| mu484_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r484_1 -# 485| r485_1(glval) = VariableAddress[x155] : -# 485| r485_2(glval) = FunctionAddress[~String] : -# 485| v485_3(void) = Call[~String] : func:r485_2, this:r485_1 -# 485| mu485_4(unknown) = ^CallSideEffect : ~m? -# 485| v485_5(void) = ^IndirectReadSideEffect[-1] : &:r485_1, ~m? -# 485| mu485_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r485_1 -# 485| r485_7(bool) = Constant[0] : -# 485| v485_8(void) = ConditionalBranch : r485_7 +# 35| Block 155 +# 35| r35_2171(glval) = VariableAddress[x155] : +# 35| mu35_2172(String) = Uninitialized[x155] : &:r35_2171 +# 35| r35_2173(glval) = FunctionAddress[String] : +# 35| v35_2174(void) = Call[String] : func:r35_2173, this:r35_2171 +# 35| mu35_2175(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2176(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2171 +# 35| r35_2177(glval) = VariableAddress[x155] : +# 35| r35_2178(glval) = FunctionAddress[~String] : +# 35| v35_2179(void) = Call[~String] : func:r35_2178, this:r35_2177 +# 35| mu35_2180(unknown) = ^CallSideEffect : ~m? +# 35| v35_2181(void) = ^IndirectReadSideEffect[-1] : &:r35_2177, ~m? +# 35| mu35_2182(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2177 +# 35| r35_2183(bool) = Constant[0] : +# 35| v35_2184(void) = ConditionalBranch : r35_2183 #-----| False -> Block 156 #-----| True -> Block 1026 -# 487| Block 156 -# 487| r487_1(glval) = VariableAddress[x156] : -# 487| mu487_2(String) = Uninitialized[x156] : &:r487_1 -# 487| r487_3(glval) = FunctionAddress[String] : -# 487| v487_4(void) = Call[String] : func:r487_3, this:r487_1 -# 487| mu487_5(unknown) = ^CallSideEffect : ~m? -# 487| mu487_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r487_1 -# 488| r488_1(glval) = VariableAddress[x156] : -# 488| r488_2(glval) = FunctionAddress[~String] : -# 488| v488_3(void) = Call[~String] : func:r488_2, this:r488_1 -# 488| mu488_4(unknown) = ^CallSideEffect : ~m? -# 488| v488_5(void) = ^IndirectReadSideEffect[-1] : &:r488_1, ~m? -# 488| mu488_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r488_1 -# 488| r488_7(bool) = Constant[0] : -# 488| v488_8(void) = ConditionalBranch : r488_7 +# 35| Block 156 +# 35| r35_2185(glval) = VariableAddress[x156] : +# 35| mu35_2186(String) = Uninitialized[x156] : &:r35_2185 +# 35| r35_2187(glval) = FunctionAddress[String] : +# 35| v35_2188(void) = Call[String] : func:r35_2187, this:r35_2185 +# 35| mu35_2189(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2190(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2185 +# 35| r35_2191(glval) = VariableAddress[x156] : +# 35| r35_2192(glval) = FunctionAddress[~String] : +# 35| v35_2193(void) = Call[~String] : func:r35_2192, this:r35_2191 +# 35| mu35_2194(unknown) = ^CallSideEffect : ~m? +# 35| v35_2195(void) = ^IndirectReadSideEffect[-1] : &:r35_2191, ~m? +# 35| mu35_2196(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2191 +# 35| r35_2197(bool) = Constant[0] : +# 35| v35_2198(void) = ConditionalBranch : r35_2197 #-----| False -> Block 157 #-----| True -> Block 1026 -# 490| Block 157 -# 490| r490_1(glval) = VariableAddress[x157] : -# 490| mu490_2(String) = Uninitialized[x157] : &:r490_1 -# 490| r490_3(glval) = FunctionAddress[String] : -# 490| v490_4(void) = Call[String] : func:r490_3, this:r490_1 -# 490| mu490_5(unknown) = ^CallSideEffect : ~m? -# 490| mu490_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r490_1 -# 491| r491_1(glval) = VariableAddress[x157] : -# 491| r491_2(glval) = FunctionAddress[~String] : -# 491| v491_3(void) = Call[~String] : func:r491_2, this:r491_1 -# 491| mu491_4(unknown) = ^CallSideEffect : ~m? -# 491| v491_5(void) = ^IndirectReadSideEffect[-1] : &:r491_1, ~m? -# 491| mu491_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r491_1 -# 491| r491_7(bool) = Constant[0] : -# 491| v491_8(void) = ConditionalBranch : r491_7 +# 35| Block 157 +# 35| r35_2199(glval) = VariableAddress[x157] : +# 35| mu35_2200(String) = Uninitialized[x157] : &:r35_2199 +# 35| r35_2201(glval) = FunctionAddress[String] : +# 35| v35_2202(void) = Call[String] : func:r35_2201, this:r35_2199 +# 35| mu35_2203(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2204(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2199 +# 35| r35_2205(glval) = VariableAddress[x157] : +# 35| r35_2206(glval) = FunctionAddress[~String] : +# 35| v35_2207(void) = Call[~String] : func:r35_2206, this:r35_2205 +# 35| mu35_2208(unknown) = ^CallSideEffect : ~m? +# 35| v35_2209(void) = ^IndirectReadSideEffect[-1] : &:r35_2205, ~m? +# 35| mu35_2210(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2205 +# 35| r35_2211(bool) = Constant[0] : +# 35| v35_2212(void) = ConditionalBranch : r35_2211 #-----| False -> Block 158 #-----| True -> Block 1026 -# 493| Block 158 -# 493| r493_1(glval) = VariableAddress[x158] : -# 493| mu493_2(String) = Uninitialized[x158] : &:r493_1 -# 493| r493_3(glval) = FunctionAddress[String] : -# 493| v493_4(void) = Call[String] : func:r493_3, this:r493_1 -# 493| mu493_5(unknown) = ^CallSideEffect : ~m? -# 493| mu493_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r493_1 -# 494| r494_1(glval) = VariableAddress[x158] : -# 494| r494_2(glval) = FunctionAddress[~String] : -# 494| v494_3(void) = Call[~String] : func:r494_2, this:r494_1 -# 494| mu494_4(unknown) = ^CallSideEffect : ~m? -# 494| v494_5(void) = ^IndirectReadSideEffect[-1] : &:r494_1, ~m? -# 494| mu494_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r494_1 -# 494| r494_7(bool) = Constant[0] : -# 494| v494_8(void) = ConditionalBranch : r494_7 +# 35| Block 158 +# 35| r35_2213(glval) = VariableAddress[x158] : +# 35| mu35_2214(String) = Uninitialized[x158] : &:r35_2213 +# 35| r35_2215(glval) = FunctionAddress[String] : +# 35| v35_2216(void) = Call[String] : func:r35_2215, this:r35_2213 +# 35| mu35_2217(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2218(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2213 +# 35| r35_2219(glval) = VariableAddress[x158] : +# 35| r35_2220(glval) = FunctionAddress[~String] : +# 35| v35_2221(void) = Call[~String] : func:r35_2220, this:r35_2219 +# 35| mu35_2222(unknown) = ^CallSideEffect : ~m? +# 35| v35_2223(void) = ^IndirectReadSideEffect[-1] : &:r35_2219, ~m? +# 35| mu35_2224(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2219 +# 35| r35_2225(bool) = Constant[0] : +# 35| v35_2226(void) = ConditionalBranch : r35_2225 #-----| False -> Block 159 #-----| True -> Block 1026 -# 496| Block 159 -# 496| r496_1(glval) = VariableAddress[x159] : -# 496| mu496_2(String) = Uninitialized[x159] : &:r496_1 -# 496| r496_3(glval) = FunctionAddress[String] : -# 496| v496_4(void) = Call[String] : func:r496_3, this:r496_1 -# 496| mu496_5(unknown) = ^CallSideEffect : ~m? -# 496| mu496_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r496_1 -# 497| r497_1(glval) = VariableAddress[x159] : -# 497| r497_2(glval) = FunctionAddress[~String] : -# 497| v497_3(void) = Call[~String] : func:r497_2, this:r497_1 -# 497| mu497_4(unknown) = ^CallSideEffect : ~m? -# 497| v497_5(void) = ^IndirectReadSideEffect[-1] : &:r497_1, ~m? -# 497| mu497_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r497_1 -# 497| r497_7(bool) = Constant[0] : -# 497| v497_8(void) = ConditionalBranch : r497_7 +# 35| Block 159 +# 35| r35_2227(glval) = VariableAddress[x159] : +# 35| mu35_2228(String) = Uninitialized[x159] : &:r35_2227 +# 35| r35_2229(glval) = FunctionAddress[String] : +# 35| v35_2230(void) = Call[String] : func:r35_2229, this:r35_2227 +# 35| mu35_2231(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2232(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2227 +# 35| r35_2233(glval) = VariableAddress[x159] : +# 35| r35_2234(glval) = FunctionAddress[~String] : +# 35| v35_2235(void) = Call[~String] : func:r35_2234, this:r35_2233 +# 35| mu35_2236(unknown) = ^CallSideEffect : ~m? +# 35| v35_2237(void) = ^IndirectReadSideEffect[-1] : &:r35_2233, ~m? +# 35| mu35_2238(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2233 +# 35| r35_2239(bool) = Constant[0] : +# 35| v35_2240(void) = ConditionalBranch : r35_2239 #-----| False -> Block 160 #-----| True -> Block 1026 -# 499| Block 160 -# 499| r499_1(glval) = VariableAddress[x160] : -# 499| mu499_2(String) = Uninitialized[x160] : &:r499_1 -# 499| r499_3(glval) = FunctionAddress[String] : -# 499| v499_4(void) = Call[String] : func:r499_3, this:r499_1 -# 499| mu499_5(unknown) = ^CallSideEffect : ~m? -# 499| mu499_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r499_1 -# 500| r500_1(glval) = VariableAddress[x160] : -# 500| r500_2(glval) = FunctionAddress[~String] : -# 500| v500_3(void) = Call[~String] : func:r500_2, this:r500_1 -# 500| mu500_4(unknown) = ^CallSideEffect : ~m? -# 500| v500_5(void) = ^IndirectReadSideEffect[-1] : &:r500_1, ~m? -# 500| mu500_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r500_1 -# 500| r500_7(bool) = Constant[0] : -# 500| v500_8(void) = ConditionalBranch : r500_7 +# 35| Block 160 +# 35| r35_2241(glval) = VariableAddress[x160] : +# 35| mu35_2242(String) = Uninitialized[x160] : &:r35_2241 +# 35| r35_2243(glval) = FunctionAddress[String] : +# 35| v35_2244(void) = Call[String] : func:r35_2243, this:r35_2241 +# 35| mu35_2245(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2246(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2241 +# 35| r35_2247(glval) = VariableAddress[x160] : +# 35| r35_2248(glval) = FunctionAddress[~String] : +# 35| v35_2249(void) = Call[~String] : func:r35_2248, this:r35_2247 +# 35| mu35_2250(unknown) = ^CallSideEffect : ~m? +# 35| v35_2251(void) = ^IndirectReadSideEffect[-1] : &:r35_2247, ~m? +# 35| mu35_2252(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2247 +# 35| r35_2253(bool) = Constant[0] : +# 35| v35_2254(void) = ConditionalBranch : r35_2253 #-----| False -> Block 161 #-----| True -> Block 1026 -# 502| Block 161 -# 502| r502_1(glval) = VariableAddress[x161] : -# 502| mu502_2(String) = Uninitialized[x161] : &:r502_1 -# 502| r502_3(glval) = FunctionAddress[String] : -# 502| v502_4(void) = Call[String] : func:r502_3, this:r502_1 -# 502| mu502_5(unknown) = ^CallSideEffect : ~m? -# 502| mu502_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r502_1 -# 503| r503_1(glval) = VariableAddress[x161] : -# 503| r503_2(glval) = FunctionAddress[~String] : -# 503| v503_3(void) = Call[~String] : func:r503_2, this:r503_1 -# 503| mu503_4(unknown) = ^CallSideEffect : ~m? -# 503| v503_5(void) = ^IndirectReadSideEffect[-1] : &:r503_1, ~m? -# 503| mu503_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r503_1 -# 503| r503_7(bool) = Constant[0] : -# 503| v503_8(void) = ConditionalBranch : r503_7 +# 35| Block 161 +# 35| r35_2255(glval) = VariableAddress[x161] : +# 35| mu35_2256(String) = Uninitialized[x161] : &:r35_2255 +# 35| r35_2257(glval) = FunctionAddress[String] : +# 35| v35_2258(void) = Call[String] : func:r35_2257, this:r35_2255 +# 35| mu35_2259(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2260(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2255 +# 35| r35_2261(glval) = VariableAddress[x161] : +# 35| r35_2262(glval) = FunctionAddress[~String] : +# 35| v35_2263(void) = Call[~String] : func:r35_2262, this:r35_2261 +# 35| mu35_2264(unknown) = ^CallSideEffect : ~m? +# 35| v35_2265(void) = ^IndirectReadSideEffect[-1] : &:r35_2261, ~m? +# 35| mu35_2266(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2261 +# 35| r35_2267(bool) = Constant[0] : +# 35| v35_2268(void) = ConditionalBranch : r35_2267 #-----| False -> Block 162 #-----| True -> Block 1026 -# 505| Block 162 -# 505| r505_1(glval) = VariableAddress[x162] : -# 505| mu505_2(String) = Uninitialized[x162] : &:r505_1 -# 505| r505_3(glval) = FunctionAddress[String] : -# 505| v505_4(void) = Call[String] : func:r505_3, this:r505_1 -# 505| mu505_5(unknown) = ^CallSideEffect : ~m? -# 505| mu505_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r505_1 -# 506| r506_1(glval) = VariableAddress[x162] : -# 506| r506_2(glval) = FunctionAddress[~String] : -# 506| v506_3(void) = Call[~String] : func:r506_2, this:r506_1 -# 506| mu506_4(unknown) = ^CallSideEffect : ~m? -# 506| v506_5(void) = ^IndirectReadSideEffect[-1] : &:r506_1, ~m? -# 506| mu506_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r506_1 -# 506| r506_7(bool) = Constant[0] : -# 506| v506_8(void) = ConditionalBranch : r506_7 +# 35| Block 162 +# 35| r35_2269(glval) = VariableAddress[x162] : +# 35| mu35_2270(String) = Uninitialized[x162] : &:r35_2269 +# 35| r35_2271(glval) = FunctionAddress[String] : +# 35| v35_2272(void) = Call[String] : func:r35_2271, this:r35_2269 +# 35| mu35_2273(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2274(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2269 +# 35| r35_2275(glval) = VariableAddress[x162] : +# 35| r35_2276(glval) = FunctionAddress[~String] : +# 35| v35_2277(void) = Call[~String] : func:r35_2276, this:r35_2275 +# 35| mu35_2278(unknown) = ^CallSideEffect : ~m? +# 35| v35_2279(void) = ^IndirectReadSideEffect[-1] : &:r35_2275, ~m? +# 35| mu35_2280(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2275 +# 35| r35_2281(bool) = Constant[0] : +# 35| v35_2282(void) = ConditionalBranch : r35_2281 #-----| False -> Block 163 #-----| True -> Block 1026 -# 508| Block 163 -# 508| r508_1(glval) = VariableAddress[x163] : -# 508| mu508_2(String) = Uninitialized[x163] : &:r508_1 -# 508| r508_3(glval) = FunctionAddress[String] : -# 508| v508_4(void) = Call[String] : func:r508_3, this:r508_1 -# 508| mu508_5(unknown) = ^CallSideEffect : ~m? -# 508| mu508_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r508_1 -# 509| r509_1(glval) = VariableAddress[x163] : -# 509| r509_2(glval) = FunctionAddress[~String] : -# 509| v509_3(void) = Call[~String] : func:r509_2, this:r509_1 -# 509| mu509_4(unknown) = ^CallSideEffect : ~m? -# 509| v509_5(void) = ^IndirectReadSideEffect[-1] : &:r509_1, ~m? -# 509| mu509_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r509_1 -# 509| r509_7(bool) = Constant[0] : -# 509| v509_8(void) = ConditionalBranch : r509_7 +# 35| Block 163 +# 35| r35_2283(glval) = VariableAddress[x163] : +# 35| mu35_2284(String) = Uninitialized[x163] : &:r35_2283 +# 35| r35_2285(glval) = FunctionAddress[String] : +# 35| v35_2286(void) = Call[String] : func:r35_2285, this:r35_2283 +# 35| mu35_2287(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2288(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2283 +# 35| r35_2289(glval) = VariableAddress[x163] : +# 35| r35_2290(glval) = FunctionAddress[~String] : +# 35| v35_2291(void) = Call[~String] : func:r35_2290, this:r35_2289 +# 35| mu35_2292(unknown) = ^CallSideEffect : ~m? +# 35| v35_2293(void) = ^IndirectReadSideEffect[-1] : &:r35_2289, ~m? +# 35| mu35_2294(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2289 +# 35| r35_2295(bool) = Constant[0] : +# 35| v35_2296(void) = ConditionalBranch : r35_2295 #-----| False -> Block 164 #-----| True -> Block 1026 -# 511| Block 164 -# 511| r511_1(glval) = VariableAddress[x164] : -# 511| mu511_2(String) = Uninitialized[x164] : &:r511_1 -# 511| r511_3(glval) = FunctionAddress[String] : -# 511| v511_4(void) = Call[String] : func:r511_3, this:r511_1 -# 511| mu511_5(unknown) = ^CallSideEffect : ~m? -# 511| mu511_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r511_1 -# 512| r512_1(glval) = VariableAddress[x164] : -# 512| r512_2(glval) = FunctionAddress[~String] : -# 512| v512_3(void) = Call[~String] : func:r512_2, this:r512_1 -# 512| mu512_4(unknown) = ^CallSideEffect : ~m? -# 512| v512_5(void) = ^IndirectReadSideEffect[-1] : &:r512_1, ~m? -# 512| mu512_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r512_1 -# 512| r512_7(bool) = Constant[0] : -# 512| v512_8(void) = ConditionalBranch : r512_7 +# 35| Block 164 +# 35| r35_2297(glval) = VariableAddress[x164] : +# 35| mu35_2298(String) = Uninitialized[x164] : &:r35_2297 +# 35| r35_2299(glval) = FunctionAddress[String] : +# 35| v35_2300(void) = Call[String] : func:r35_2299, this:r35_2297 +# 35| mu35_2301(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2302(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2297 +# 35| r35_2303(glval) = VariableAddress[x164] : +# 35| r35_2304(glval) = FunctionAddress[~String] : +# 35| v35_2305(void) = Call[~String] : func:r35_2304, this:r35_2303 +# 35| mu35_2306(unknown) = ^CallSideEffect : ~m? +# 35| v35_2307(void) = ^IndirectReadSideEffect[-1] : &:r35_2303, ~m? +# 35| mu35_2308(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2303 +# 35| r35_2309(bool) = Constant[0] : +# 35| v35_2310(void) = ConditionalBranch : r35_2309 #-----| False -> Block 165 #-----| True -> Block 1026 -# 514| Block 165 -# 514| r514_1(glval) = VariableAddress[x165] : -# 514| mu514_2(String) = Uninitialized[x165] : &:r514_1 -# 514| r514_3(glval) = FunctionAddress[String] : -# 514| v514_4(void) = Call[String] : func:r514_3, this:r514_1 -# 514| mu514_5(unknown) = ^CallSideEffect : ~m? -# 514| mu514_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r514_1 -# 515| r515_1(glval) = VariableAddress[x165] : -# 515| r515_2(glval) = FunctionAddress[~String] : -# 515| v515_3(void) = Call[~String] : func:r515_2, this:r515_1 -# 515| mu515_4(unknown) = ^CallSideEffect : ~m? -# 515| v515_5(void) = ^IndirectReadSideEffect[-1] : &:r515_1, ~m? -# 515| mu515_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r515_1 -# 515| r515_7(bool) = Constant[0] : -# 515| v515_8(void) = ConditionalBranch : r515_7 +# 35| Block 165 +# 35| r35_2311(glval) = VariableAddress[x165] : +# 35| mu35_2312(String) = Uninitialized[x165] : &:r35_2311 +# 35| r35_2313(glval) = FunctionAddress[String] : +# 35| v35_2314(void) = Call[String] : func:r35_2313, this:r35_2311 +# 35| mu35_2315(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2316(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2311 +# 35| r35_2317(glval) = VariableAddress[x165] : +# 35| r35_2318(glval) = FunctionAddress[~String] : +# 35| v35_2319(void) = Call[~String] : func:r35_2318, this:r35_2317 +# 35| mu35_2320(unknown) = ^CallSideEffect : ~m? +# 35| v35_2321(void) = ^IndirectReadSideEffect[-1] : &:r35_2317, ~m? +# 35| mu35_2322(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2317 +# 35| r35_2323(bool) = Constant[0] : +# 35| v35_2324(void) = ConditionalBranch : r35_2323 #-----| False -> Block 166 #-----| True -> Block 1026 -# 517| Block 166 -# 517| r517_1(glval) = VariableAddress[x166] : -# 517| mu517_2(String) = Uninitialized[x166] : &:r517_1 -# 517| r517_3(glval) = FunctionAddress[String] : -# 517| v517_4(void) = Call[String] : func:r517_3, this:r517_1 -# 517| mu517_5(unknown) = ^CallSideEffect : ~m? -# 517| mu517_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r517_1 -# 518| r518_1(glval) = VariableAddress[x166] : -# 518| r518_2(glval) = FunctionAddress[~String] : -# 518| v518_3(void) = Call[~String] : func:r518_2, this:r518_1 -# 518| mu518_4(unknown) = ^CallSideEffect : ~m? -# 518| v518_5(void) = ^IndirectReadSideEffect[-1] : &:r518_1, ~m? -# 518| mu518_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r518_1 -# 518| r518_7(bool) = Constant[0] : -# 518| v518_8(void) = ConditionalBranch : r518_7 +# 35| Block 166 +# 35| r35_2325(glval) = VariableAddress[x166] : +# 35| mu35_2326(String) = Uninitialized[x166] : &:r35_2325 +# 35| r35_2327(glval) = FunctionAddress[String] : +# 35| v35_2328(void) = Call[String] : func:r35_2327, this:r35_2325 +# 35| mu35_2329(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2330(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2325 +# 35| r35_2331(glval) = VariableAddress[x166] : +# 35| r35_2332(glval) = FunctionAddress[~String] : +# 35| v35_2333(void) = Call[~String] : func:r35_2332, this:r35_2331 +# 35| mu35_2334(unknown) = ^CallSideEffect : ~m? +# 35| v35_2335(void) = ^IndirectReadSideEffect[-1] : &:r35_2331, ~m? +# 35| mu35_2336(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2331 +# 35| r35_2337(bool) = Constant[0] : +# 35| v35_2338(void) = ConditionalBranch : r35_2337 #-----| False -> Block 167 #-----| True -> Block 1026 -# 520| Block 167 -# 520| r520_1(glval) = VariableAddress[x167] : -# 520| mu520_2(String) = Uninitialized[x167] : &:r520_1 -# 520| r520_3(glval) = FunctionAddress[String] : -# 520| v520_4(void) = Call[String] : func:r520_3, this:r520_1 -# 520| mu520_5(unknown) = ^CallSideEffect : ~m? -# 520| mu520_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r520_1 -# 521| r521_1(glval) = VariableAddress[x167] : -# 521| r521_2(glval) = FunctionAddress[~String] : -# 521| v521_3(void) = Call[~String] : func:r521_2, this:r521_1 -# 521| mu521_4(unknown) = ^CallSideEffect : ~m? -# 521| v521_5(void) = ^IndirectReadSideEffect[-1] : &:r521_1, ~m? -# 521| mu521_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r521_1 -# 521| r521_7(bool) = Constant[0] : -# 521| v521_8(void) = ConditionalBranch : r521_7 +# 35| Block 167 +# 35| r35_2339(glval) = VariableAddress[x167] : +# 35| mu35_2340(String) = Uninitialized[x167] : &:r35_2339 +# 35| r35_2341(glval) = FunctionAddress[String] : +# 35| v35_2342(void) = Call[String] : func:r35_2341, this:r35_2339 +# 35| mu35_2343(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2344(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2339 +# 35| r35_2345(glval) = VariableAddress[x167] : +# 35| r35_2346(glval) = FunctionAddress[~String] : +# 35| v35_2347(void) = Call[~String] : func:r35_2346, this:r35_2345 +# 35| mu35_2348(unknown) = ^CallSideEffect : ~m? +# 35| v35_2349(void) = ^IndirectReadSideEffect[-1] : &:r35_2345, ~m? +# 35| mu35_2350(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2345 +# 35| r35_2351(bool) = Constant[0] : +# 35| v35_2352(void) = ConditionalBranch : r35_2351 #-----| False -> Block 168 #-----| True -> Block 1026 -# 523| Block 168 -# 523| r523_1(glval) = VariableAddress[x168] : -# 523| mu523_2(String) = Uninitialized[x168] : &:r523_1 -# 523| r523_3(glval) = FunctionAddress[String] : -# 523| v523_4(void) = Call[String] : func:r523_3, this:r523_1 -# 523| mu523_5(unknown) = ^CallSideEffect : ~m? -# 523| mu523_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r523_1 -# 524| r524_1(glval) = VariableAddress[x168] : -# 524| r524_2(glval) = FunctionAddress[~String] : -# 524| v524_3(void) = Call[~String] : func:r524_2, this:r524_1 -# 524| mu524_4(unknown) = ^CallSideEffect : ~m? -# 524| v524_5(void) = ^IndirectReadSideEffect[-1] : &:r524_1, ~m? -# 524| mu524_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r524_1 -# 524| r524_7(bool) = Constant[0] : -# 524| v524_8(void) = ConditionalBranch : r524_7 +# 35| Block 168 +# 35| r35_2353(glval) = VariableAddress[x168] : +# 35| mu35_2354(String) = Uninitialized[x168] : &:r35_2353 +# 35| r35_2355(glval) = FunctionAddress[String] : +# 35| v35_2356(void) = Call[String] : func:r35_2355, this:r35_2353 +# 35| mu35_2357(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2358(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2353 +# 35| r35_2359(glval) = VariableAddress[x168] : +# 35| r35_2360(glval) = FunctionAddress[~String] : +# 35| v35_2361(void) = Call[~String] : func:r35_2360, this:r35_2359 +# 35| mu35_2362(unknown) = ^CallSideEffect : ~m? +# 35| v35_2363(void) = ^IndirectReadSideEffect[-1] : &:r35_2359, ~m? +# 35| mu35_2364(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2359 +# 35| r35_2365(bool) = Constant[0] : +# 35| v35_2366(void) = ConditionalBranch : r35_2365 #-----| False -> Block 169 #-----| True -> Block 1026 -# 526| Block 169 -# 526| r526_1(glval) = VariableAddress[x169] : -# 526| mu526_2(String) = Uninitialized[x169] : &:r526_1 -# 526| r526_3(glval) = FunctionAddress[String] : -# 526| v526_4(void) = Call[String] : func:r526_3, this:r526_1 -# 526| mu526_5(unknown) = ^CallSideEffect : ~m? -# 526| mu526_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r526_1 -# 527| r527_1(glval) = VariableAddress[x169] : -# 527| r527_2(glval) = FunctionAddress[~String] : -# 527| v527_3(void) = Call[~String] : func:r527_2, this:r527_1 -# 527| mu527_4(unknown) = ^CallSideEffect : ~m? -# 527| v527_5(void) = ^IndirectReadSideEffect[-1] : &:r527_1, ~m? -# 527| mu527_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r527_1 -# 527| r527_7(bool) = Constant[0] : -# 527| v527_8(void) = ConditionalBranch : r527_7 +# 35| Block 169 +# 35| r35_2367(glval) = VariableAddress[x169] : +# 35| mu35_2368(String) = Uninitialized[x169] : &:r35_2367 +# 35| r35_2369(glval) = FunctionAddress[String] : +# 35| v35_2370(void) = Call[String] : func:r35_2369, this:r35_2367 +# 35| mu35_2371(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2372(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2367 +# 35| r35_2373(glval) = VariableAddress[x169] : +# 35| r35_2374(glval) = FunctionAddress[~String] : +# 35| v35_2375(void) = Call[~String] : func:r35_2374, this:r35_2373 +# 35| mu35_2376(unknown) = ^CallSideEffect : ~m? +# 35| v35_2377(void) = ^IndirectReadSideEffect[-1] : &:r35_2373, ~m? +# 35| mu35_2378(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2373 +# 35| r35_2379(bool) = Constant[0] : +# 35| v35_2380(void) = ConditionalBranch : r35_2379 #-----| False -> Block 170 #-----| True -> Block 1026 -# 529| Block 170 -# 529| r529_1(glval) = VariableAddress[x170] : -# 529| mu529_2(String) = Uninitialized[x170] : &:r529_1 -# 529| r529_3(glval) = FunctionAddress[String] : -# 529| v529_4(void) = Call[String] : func:r529_3, this:r529_1 -# 529| mu529_5(unknown) = ^CallSideEffect : ~m? -# 529| mu529_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r529_1 -# 530| r530_1(glval) = VariableAddress[x170] : -# 530| r530_2(glval) = FunctionAddress[~String] : -# 530| v530_3(void) = Call[~String] : func:r530_2, this:r530_1 -# 530| mu530_4(unknown) = ^CallSideEffect : ~m? -# 530| v530_5(void) = ^IndirectReadSideEffect[-1] : &:r530_1, ~m? -# 530| mu530_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r530_1 -# 530| r530_7(bool) = Constant[0] : -# 530| v530_8(void) = ConditionalBranch : r530_7 +# 35| Block 170 +# 35| r35_2381(glval) = VariableAddress[x170] : +# 35| mu35_2382(String) = Uninitialized[x170] : &:r35_2381 +# 35| r35_2383(glval) = FunctionAddress[String] : +# 35| v35_2384(void) = Call[String] : func:r35_2383, this:r35_2381 +# 35| mu35_2385(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2386(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2381 +# 35| r35_2387(glval) = VariableAddress[x170] : +# 35| r35_2388(glval) = FunctionAddress[~String] : +# 35| v35_2389(void) = Call[~String] : func:r35_2388, this:r35_2387 +# 35| mu35_2390(unknown) = ^CallSideEffect : ~m? +# 35| v35_2391(void) = ^IndirectReadSideEffect[-1] : &:r35_2387, ~m? +# 35| mu35_2392(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2387 +# 35| r35_2393(bool) = Constant[0] : +# 35| v35_2394(void) = ConditionalBranch : r35_2393 #-----| False -> Block 171 #-----| True -> Block 1026 -# 532| Block 171 -# 532| r532_1(glval) = VariableAddress[x171] : -# 532| mu532_2(String) = Uninitialized[x171] : &:r532_1 -# 532| r532_3(glval) = FunctionAddress[String] : -# 532| v532_4(void) = Call[String] : func:r532_3, this:r532_1 -# 532| mu532_5(unknown) = ^CallSideEffect : ~m? -# 532| mu532_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r532_1 -# 533| r533_1(glval) = VariableAddress[x171] : -# 533| r533_2(glval) = FunctionAddress[~String] : -# 533| v533_3(void) = Call[~String] : func:r533_2, this:r533_1 -# 533| mu533_4(unknown) = ^CallSideEffect : ~m? -# 533| v533_5(void) = ^IndirectReadSideEffect[-1] : &:r533_1, ~m? -# 533| mu533_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r533_1 -# 533| r533_7(bool) = Constant[0] : -# 533| v533_8(void) = ConditionalBranch : r533_7 +# 35| Block 171 +# 35| r35_2395(glval) = VariableAddress[x171] : +# 35| mu35_2396(String) = Uninitialized[x171] : &:r35_2395 +# 35| r35_2397(glval) = FunctionAddress[String] : +# 35| v35_2398(void) = Call[String] : func:r35_2397, this:r35_2395 +# 35| mu35_2399(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2400(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2395 +# 35| r35_2401(glval) = VariableAddress[x171] : +# 35| r35_2402(glval) = FunctionAddress[~String] : +# 35| v35_2403(void) = Call[~String] : func:r35_2402, this:r35_2401 +# 35| mu35_2404(unknown) = ^CallSideEffect : ~m? +# 35| v35_2405(void) = ^IndirectReadSideEffect[-1] : &:r35_2401, ~m? +# 35| mu35_2406(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2401 +# 35| r35_2407(bool) = Constant[0] : +# 35| v35_2408(void) = ConditionalBranch : r35_2407 #-----| False -> Block 172 #-----| True -> Block 1026 -# 535| Block 172 -# 535| r535_1(glval) = VariableAddress[x172] : -# 535| mu535_2(String) = Uninitialized[x172] : &:r535_1 -# 535| r535_3(glval) = FunctionAddress[String] : -# 535| v535_4(void) = Call[String] : func:r535_3, this:r535_1 -# 535| mu535_5(unknown) = ^CallSideEffect : ~m? -# 535| mu535_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r535_1 -# 536| r536_1(glval) = VariableAddress[x172] : -# 536| r536_2(glval) = FunctionAddress[~String] : -# 536| v536_3(void) = Call[~String] : func:r536_2, this:r536_1 -# 536| mu536_4(unknown) = ^CallSideEffect : ~m? -# 536| v536_5(void) = ^IndirectReadSideEffect[-1] : &:r536_1, ~m? -# 536| mu536_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r536_1 -# 536| r536_7(bool) = Constant[0] : -# 536| v536_8(void) = ConditionalBranch : r536_7 +# 35| Block 172 +# 35| r35_2409(glval) = VariableAddress[x172] : +# 35| mu35_2410(String) = Uninitialized[x172] : &:r35_2409 +# 35| r35_2411(glval) = FunctionAddress[String] : +# 35| v35_2412(void) = Call[String] : func:r35_2411, this:r35_2409 +# 35| mu35_2413(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2414(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2409 +# 35| r35_2415(glval) = VariableAddress[x172] : +# 35| r35_2416(glval) = FunctionAddress[~String] : +# 35| v35_2417(void) = Call[~String] : func:r35_2416, this:r35_2415 +# 35| mu35_2418(unknown) = ^CallSideEffect : ~m? +# 35| v35_2419(void) = ^IndirectReadSideEffect[-1] : &:r35_2415, ~m? +# 35| mu35_2420(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2415 +# 35| r35_2421(bool) = Constant[0] : +# 35| v35_2422(void) = ConditionalBranch : r35_2421 #-----| False -> Block 173 #-----| True -> Block 1026 -# 538| Block 173 -# 538| r538_1(glval) = VariableAddress[x173] : -# 538| mu538_2(String) = Uninitialized[x173] : &:r538_1 -# 538| r538_3(glval) = FunctionAddress[String] : -# 538| v538_4(void) = Call[String] : func:r538_3, this:r538_1 -# 538| mu538_5(unknown) = ^CallSideEffect : ~m? -# 538| mu538_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r538_1 -# 539| r539_1(glval) = VariableAddress[x173] : -# 539| r539_2(glval) = FunctionAddress[~String] : -# 539| v539_3(void) = Call[~String] : func:r539_2, this:r539_1 -# 539| mu539_4(unknown) = ^CallSideEffect : ~m? -# 539| v539_5(void) = ^IndirectReadSideEffect[-1] : &:r539_1, ~m? -# 539| mu539_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r539_1 -# 539| r539_7(bool) = Constant[0] : -# 539| v539_8(void) = ConditionalBranch : r539_7 +# 35| Block 173 +# 35| r35_2423(glval) = VariableAddress[x173] : +# 35| mu35_2424(String) = Uninitialized[x173] : &:r35_2423 +# 35| r35_2425(glval) = FunctionAddress[String] : +# 35| v35_2426(void) = Call[String] : func:r35_2425, this:r35_2423 +# 35| mu35_2427(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2428(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2423 +# 35| r35_2429(glval) = VariableAddress[x173] : +# 35| r35_2430(glval) = FunctionAddress[~String] : +# 35| v35_2431(void) = Call[~String] : func:r35_2430, this:r35_2429 +# 35| mu35_2432(unknown) = ^CallSideEffect : ~m? +# 35| v35_2433(void) = ^IndirectReadSideEffect[-1] : &:r35_2429, ~m? +# 35| mu35_2434(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2429 +# 35| r35_2435(bool) = Constant[0] : +# 35| v35_2436(void) = ConditionalBranch : r35_2435 #-----| False -> Block 174 #-----| True -> Block 1026 -# 541| Block 174 -# 541| r541_1(glval) = VariableAddress[x174] : -# 541| mu541_2(String) = Uninitialized[x174] : &:r541_1 -# 541| r541_3(glval) = FunctionAddress[String] : -# 541| v541_4(void) = Call[String] : func:r541_3, this:r541_1 -# 541| mu541_5(unknown) = ^CallSideEffect : ~m? -# 541| mu541_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r541_1 -# 542| r542_1(glval) = VariableAddress[x174] : -# 542| r542_2(glval) = FunctionAddress[~String] : -# 542| v542_3(void) = Call[~String] : func:r542_2, this:r542_1 -# 542| mu542_4(unknown) = ^CallSideEffect : ~m? -# 542| v542_5(void) = ^IndirectReadSideEffect[-1] : &:r542_1, ~m? -# 542| mu542_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r542_1 -# 542| r542_7(bool) = Constant[0] : -# 542| v542_8(void) = ConditionalBranch : r542_7 +# 35| Block 174 +# 35| r35_2437(glval) = VariableAddress[x174] : +# 35| mu35_2438(String) = Uninitialized[x174] : &:r35_2437 +# 35| r35_2439(glval) = FunctionAddress[String] : +# 35| v35_2440(void) = Call[String] : func:r35_2439, this:r35_2437 +# 35| mu35_2441(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2442(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2437 +# 35| r35_2443(glval) = VariableAddress[x174] : +# 35| r35_2444(glval) = FunctionAddress[~String] : +# 35| v35_2445(void) = Call[~String] : func:r35_2444, this:r35_2443 +# 35| mu35_2446(unknown) = ^CallSideEffect : ~m? +# 35| v35_2447(void) = ^IndirectReadSideEffect[-1] : &:r35_2443, ~m? +# 35| mu35_2448(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2443 +# 35| r35_2449(bool) = Constant[0] : +# 35| v35_2450(void) = ConditionalBranch : r35_2449 #-----| False -> Block 175 #-----| True -> Block 1026 -# 544| Block 175 -# 544| r544_1(glval) = VariableAddress[x175] : -# 544| mu544_2(String) = Uninitialized[x175] : &:r544_1 -# 544| r544_3(glval) = FunctionAddress[String] : -# 544| v544_4(void) = Call[String] : func:r544_3, this:r544_1 -# 544| mu544_5(unknown) = ^CallSideEffect : ~m? -# 544| mu544_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r544_1 -# 545| r545_1(glval) = VariableAddress[x175] : -# 545| r545_2(glval) = FunctionAddress[~String] : -# 545| v545_3(void) = Call[~String] : func:r545_2, this:r545_1 -# 545| mu545_4(unknown) = ^CallSideEffect : ~m? -# 545| v545_5(void) = ^IndirectReadSideEffect[-1] : &:r545_1, ~m? -# 545| mu545_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r545_1 -# 545| r545_7(bool) = Constant[0] : -# 545| v545_8(void) = ConditionalBranch : r545_7 +# 35| Block 175 +# 35| r35_2451(glval) = VariableAddress[x175] : +# 35| mu35_2452(String) = Uninitialized[x175] : &:r35_2451 +# 35| r35_2453(glval) = FunctionAddress[String] : +# 35| v35_2454(void) = Call[String] : func:r35_2453, this:r35_2451 +# 35| mu35_2455(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2456(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2451 +# 35| r35_2457(glval) = VariableAddress[x175] : +# 35| r35_2458(glval) = FunctionAddress[~String] : +# 35| v35_2459(void) = Call[~String] : func:r35_2458, this:r35_2457 +# 35| mu35_2460(unknown) = ^CallSideEffect : ~m? +# 35| v35_2461(void) = ^IndirectReadSideEffect[-1] : &:r35_2457, ~m? +# 35| mu35_2462(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2457 +# 35| r35_2463(bool) = Constant[0] : +# 35| v35_2464(void) = ConditionalBranch : r35_2463 #-----| False -> Block 176 #-----| True -> Block 1026 -# 547| Block 176 -# 547| r547_1(glval) = VariableAddress[x176] : -# 547| mu547_2(String) = Uninitialized[x176] : &:r547_1 -# 547| r547_3(glval) = FunctionAddress[String] : -# 547| v547_4(void) = Call[String] : func:r547_3, this:r547_1 -# 547| mu547_5(unknown) = ^CallSideEffect : ~m? -# 547| mu547_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r547_1 -# 548| r548_1(glval) = VariableAddress[x176] : -# 548| r548_2(glval) = FunctionAddress[~String] : -# 548| v548_3(void) = Call[~String] : func:r548_2, this:r548_1 -# 548| mu548_4(unknown) = ^CallSideEffect : ~m? -# 548| v548_5(void) = ^IndirectReadSideEffect[-1] : &:r548_1, ~m? -# 548| mu548_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r548_1 -# 548| r548_7(bool) = Constant[0] : -# 548| v548_8(void) = ConditionalBranch : r548_7 +# 35| Block 176 +# 35| r35_2465(glval) = VariableAddress[x176] : +# 35| mu35_2466(String) = Uninitialized[x176] : &:r35_2465 +# 35| r35_2467(glval) = FunctionAddress[String] : +# 35| v35_2468(void) = Call[String] : func:r35_2467, this:r35_2465 +# 35| mu35_2469(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2470(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2465 +# 35| r35_2471(glval) = VariableAddress[x176] : +# 35| r35_2472(glval) = FunctionAddress[~String] : +# 35| v35_2473(void) = Call[~String] : func:r35_2472, this:r35_2471 +# 35| mu35_2474(unknown) = ^CallSideEffect : ~m? +# 35| v35_2475(void) = ^IndirectReadSideEffect[-1] : &:r35_2471, ~m? +# 35| mu35_2476(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2471 +# 35| r35_2477(bool) = Constant[0] : +# 35| v35_2478(void) = ConditionalBranch : r35_2477 #-----| False -> Block 177 #-----| True -> Block 1026 -# 550| Block 177 -# 550| r550_1(glval) = VariableAddress[x177] : -# 550| mu550_2(String) = Uninitialized[x177] : &:r550_1 -# 550| r550_3(glval) = FunctionAddress[String] : -# 550| v550_4(void) = Call[String] : func:r550_3, this:r550_1 -# 550| mu550_5(unknown) = ^CallSideEffect : ~m? -# 550| mu550_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r550_1 -# 551| r551_1(glval) = VariableAddress[x177] : -# 551| r551_2(glval) = FunctionAddress[~String] : -# 551| v551_3(void) = Call[~String] : func:r551_2, this:r551_1 -# 551| mu551_4(unknown) = ^CallSideEffect : ~m? -# 551| v551_5(void) = ^IndirectReadSideEffect[-1] : &:r551_1, ~m? -# 551| mu551_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r551_1 -# 551| r551_7(bool) = Constant[0] : -# 551| v551_8(void) = ConditionalBranch : r551_7 +# 35| Block 177 +# 35| r35_2479(glval) = VariableAddress[x177] : +# 35| mu35_2480(String) = Uninitialized[x177] : &:r35_2479 +# 35| r35_2481(glval) = FunctionAddress[String] : +# 35| v35_2482(void) = Call[String] : func:r35_2481, this:r35_2479 +# 35| mu35_2483(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2484(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2479 +# 35| r35_2485(glval) = VariableAddress[x177] : +# 35| r35_2486(glval) = FunctionAddress[~String] : +# 35| v35_2487(void) = Call[~String] : func:r35_2486, this:r35_2485 +# 35| mu35_2488(unknown) = ^CallSideEffect : ~m? +# 35| v35_2489(void) = ^IndirectReadSideEffect[-1] : &:r35_2485, ~m? +# 35| mu35_2490(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2485 +# 35| r35_2491(bool) = Constant[0] : +# 35| v35_2492(void) = ConditionalBranch : r35_2491 #-----| False -> Block 178 #-----| True -> Block 1026 -# 553| Block 178 -# 553| r553_1(glval) = VariableAddress[x178] : -# 553| mu553_2(String) = Uninitialized[x178] : &:r553_1 -# 553| r553_3(glval) = FunctionAddress[String] : -# 553| v553_4(void) = Call[String] : func:r553_3, this:r553_1 -# 553| mu553_5(unknown) = ^CallSideEffect : ~m? -# 553| mu553_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r553_1 -# 554| r554_1(glval) = VariableAddress[x178] : -# 554| r554_2(glval) = FunctionAddress[~String] : -# 554| v554_3(void) = Call[~String] : func:r554_2, this:r554_1 -# 554| mu554_4(unknown) = ^CallSideEffect : ~m? -# 554| v554_5(void) = ^IndirectReadSideEffect[-1] : &:r554_1, ~m? -# 554| mu554_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r554_1 -# 554| r554_7(bool) = Constant[0] : -# 554| v554_8(void) = ConditionalBranch : r554_7 +# 35| Block 178 +# 35| r35_2493(glval) = VariableAddress[x178] : +# 35| mu35_2494(String) = Uninitialized[x178] : &:r35_2493 +# 35| r35_2495(glval) = FunctionAddress[String] : +# 35| v35_2496(void) = Call[String] : func:r35_2495, this:r35_2493 +# 35| mu35_2497(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2498(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2493 +# 35| r35_2499(glval) = VariableAddress[x178] : +# 35| r35_2500(glval) = FunctionAddress[~String] : +# 35| v35_2501(void) = Call[~String] : func:r35_2500, this:r35_2499 +# 35| mu35_2502(unknown) = ^CallSideEffect : ~m? +# 35| v35_2503(void) = ^IndirectReadSideEffect[-1] : &:r35_2499, ~m? +# 35| mu35_2504(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2499 +# 35| r35_2505(bool) = Constant[0] : +# 35| v35_2506(void) = ConditionalBranch : r35_2505 #-----| False -> Block 179 #-----| True -> Block 1026 -# 556| Block 179 -# 556| r556_1(glval) = VariableAddress[x179] : -# 556| mu556_2(String) = Uninitialized[x179] : &:r556_1 -# 556| r556_3(glval) = FunctionAddress[String] : -# 556| v556_4(void) = Call[String] : func:r556_3, this:r556_1 -# 556| mu556_5(unknown) = ^CallSideEffect : ~m? -# 556| mu556_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r556_1 -# 557| r557_1(glval) = VariableAddress[x179] : -# 557| r557_2(glval) = FunctionAddress[~String] : -# 557| v557_3(void) = Call[~String] : func:r557_2, this:r557_1 -# 557| mu557_4(unknown) = ^CallSideEffect : ~m? -# 557| v557_5(void) = ^IndirectReadSideEffect[-1] : &:r557_1, ~m? -# 557| mu557_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r557_1 -# 557| r557_7(bool) = Constant[0] : -# 557| v557_8(void) = ConditionalBranch : r557_7 +# 35| Block 179 +# 35| r35_2507(glval) = VariableAddress[x179] : +# 35| mu35_2508(String) = Uninitialized[x179] : &:r35_2507 +# 35| r35_2509(glval) = FunctionAddress[String] : +# 35| v35_2510(void) = Call[String] : func:r35_2509, this:r35_2507 +# 35| mu35_2511(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2512(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2507 +# 35| r35_2513(glval) = VariableAddress[x179] : +# 35| r35_2514(glval) = FunctionAddress[~String] : +# 35| v35_2515(void) = Call[~String] : func:r35_2514, this:r35_2513 +# 35| mu35_2516(unknown) = ^CallSideEffect : ~m? +# 35| v35_2517(void) = ^IndirectReadSideEffect[-1] : &:r35_2513, ~m? +# 35| mu35_2518(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2513 +# 35| r35_2519(bool) = Constant[0] : +# 35| v35_2520(void) = ConditionalBranch : r35_2519 #-----| False -> Block 180 #-----| True -> Block 1026 -# 559| Block 180 -# 559| r559_1(glval) = VariableAddress[x180] : -# 559| mu559_2(String) = Uninitialized[x180] : &:r559_1 -# 559| r559_3(glval) = FunctionAddress[String] : -# 559| v559_4(void) = Call[String] : func:r559_3, this:r559_1 -# 559| mu559_5(unknown) = ^CallSideEffect : ~m? -# 559| mu559_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r559_1 -# 560| r560_1(glval) = VariableAddress[x180] : -# 560| r560_2(glval) = FunctionAddress[~String] : -# 560| v560_3(void) = Call[~String] : func:r560_2, this:r560_1 -# 560| mu560_4(unknown) = ^CallSideEffect : ~m? -# 560| v560_5(void) = ^IndirectReadSideEffect[-1] : &:r560_1, ~m? -# 560| mu560_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r560_1 -# 560| r560_7(bool) = Constant[0] : -# 560| v560_8(void) = ConditionalBranch : r560_7 +# 35| Block 180 +# 35| r35_2521(glval) = VariableAddress[x180] : +# 35| mu35_2522(String) = Uninitialized[x180] : &:r35_2521 +# 35| r35_2523(glval) = FunctionAddress[String] : +# 35| v35_2524(void) = Call[String] : func:r35_2523, this:r35_2521 +# 35| mu35_2525(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2526(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2521 +# 35| r35_2527(glval) = VariableAddress[x180] : +# 35| r35_2528(glval) = FunctionAddress[~String] : +# 35| v35_2529(void) = Call[~String] : func:r35_2528, this:r35_2527 +# 35| mu35_2530(unknown) = ^CallSideEffect : ~m? +# 35| v35_2531(void) = ^IndirectReadSideEffect[-1] : &:r35_2527, ~m? +# 35| mu35_2532(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2527 +# 35| r35_2533(bool) = Constant[0] : +# 35| v35_2534(void) = ConditionalBranch : r35_2533 #-----| False -> Block 181 #-----| True -> Block 1026 -# 562| Block 181 -# 562| r562_1(glval) = VariableAddress[x181] : -# 562| mu562_2(String) = Uninitialized[x181] : &:r562_1 -# 562| r562_3(glval) = FunctionAddress[String] : -# 562| v562_4(void) = Call[String] : func:r562_3, this:r562_1 -# 562| mu562_5(unknown) = ^CallSideEffect : ~m? -# 562| mu562_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r562_1 -# 563| r563_1(glval) = VariableAddress[x181] : -# 563| r563_2(glval) = FunctionAddress[~String] : -# 563| v563_3(void) = Call[~String] : func:r563_2, this:r563_1 -# 563| mu563_4(unknown) = ^CallSideEffect : ~m? -# 563| v563_5(void) = ^IndirectReadSideEffect[-1] : &:r563_1, ~m? -# 563| mu563_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r563_1 -# 563| r563_7(bool) = Constant[0] : -# 563| v563_8(void) = ConditionalBranch : r563_7 +# 35| Block 181 +# 35| r35_2535(glval) = VariableAddress[x181] : +# 35| mu35_2536(String) = Uninitialized[x181] : &:r35_2535 +# 35| r35_2537(glval) = FunctionAddress[String] : +# 35| v35_2538(void) = Call[String] : func:r35_2537, this:r35_2535 +# 35| mu35_2539(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2540(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2535 +# 35| r35_2541(glval) = VariableAddress[x181] : +# 35| r35_2542(glval) = FunctionAddress[~String] : +# 35| v35_2543(void) = Call[~String] : func:r35_2542, this:r35_2541 +# 35| mu35_2544(unknown) = ^CallSideEffect : ~m? +# 35| v35_2545(void) = ^IndirectReadSideEffect[-1] : &:r35_2541, ~m? +# 35| mu35_2546(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2541 +# 35| r35_2547(bool) = Constant[0] : +# 35| v35_2548(void) = ConditionalBranch : r35_2547 #-----| False -> Block 182 #-----| True -> Block 1026 -# 565| Block 182 -# 565| r565_1(glval) = VariableAddress[x182] : -# 565| mu565_2(String) = Uninitialized[x182] : &:r565_1 -# 565| r565_3(glval) = FunctionAddress[String] : -# 565| v565_4(void) = Call[String] : func:r565_3, this:r565_1 -# 565| mu565_5(unknown) = ^CallSideEffect : ~m? -# 565| mu565_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r565_1 -# 566| r566_1(glval) = VariableAddress[x182] : -# 566| r566_2(glval) = FunctionAddress[~String] : -# 566| v566_3(void) = Call[~String] : func:r566_2, this:r566_1 -# 566| mu566_4(unknown) = ^CallSideEffect : ~m? -# 566| v566_5(void) = ^IndirectReadSideEffect[-1] : &:r566_1, ~m? -# 566| mu566_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r566_1 -# 566| r566_7(bool) = Constant[0] : -# 566| v566_8(void) = ConditionalBranch : r566_7 +# 35| Block 182 +# 35| r35_2549(glval) = VariableAddress[x182] : +# 35| mu35_2550(String) = Uninitialized[x182] : &:r35_2549 +# 35| r35_2551(glval) = FunctionAddress[String] : +# 35| v35_2552(void) = Call[String] : func:r35_2551, this:r35_2549 +# 35| mu35_2553(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2554(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2549 +# 35| r35_2555(glval) = VariableAddress[x182] : +# 35| r35_2556(glval) = FunctionAddress[~String] : +# 35| v35_2557(void) = Call[~String] : func:r35_2556, this:r35_2555 +# 35| mu35_2558(unknown) = ^CallSideEffect : ~m? +# 35| v35_2559(void) = ^IndirectReadSideEffect[-1] : &:r35_2555, ~m? +# 35| mu35_2560(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2555 +# 35| r35_2561(bool) = Constant[0] : +# 35| v35_2562(void) = ConditionalBranch : r35_2561 #-----| False -> Block 183 #-----| True -> Block 1026 -# 568| Block 183 -# 568| r568_1(glval) = VariableAddress[x183] : -# 568| mu568_2(String) = Uninitialized[x183] : &:r568_1 -# 568| r568_3(glval) = FunctionAddress[String] : -# 568| v568_4(void) = Call[String] : func:r568_3, this:r568_1 -# 568| mu568_5(unknown) = ^CallSideEffect : ~m? -# 568| mu568_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r568_1 -# 569| r569_1(glval) = VariableAddress[x183] : -# 569| r569_2(glval) = FunctionAddress[~String] : -# 569| v569_3(void) = Call[~String] : func:r569_2, this:r569_1 -# 569| mu569_4(unknown) = ^CallSideEffect : ~m? -# 569| v569_5(void) = ^IndirectReadSideEffect[-1] : &:r569_1, ~m? -# 569| mu569_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r569_1 -# 569| r569_7(bool) = Constant[0] : -# 569| v569_8(void) = ConditionalBranch : r569_7 +# 35| Block 183 +# 35| r35_2563(glval) = VariableAddress[x183] : +# 35| mu35_2564(String) = Uninitialized[x183] : &:r35_2563 +# 35| r35_2565(glval) = FunctionAddress[String] : +# 35| v35_2566(void) = Call[String] : func:r35_2565, this:r35_2563 +# 35| mu35_2567(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2568(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2563 +# 35| r35_2569(glval) = VariableAddress[x183] : +# 35| r35_2570(glval) = FunctionAddress[~String] : +# 35| v35_2571(void) = Call[~String] : func:r35_2570, this:r35_2569 +# 35| mu35_2572(unknown) = ^CallSideEffect : ~m? +# 35| v35_2573(void) = ^IndirectReadSideEffect[-1] : &:r35_2569, ~m? +# 35| mu35_2574(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2569 +# 35| r35_2575(bool) = Constant[0] : +# 35| v35_2576(void) = ConditionalBranch : r35_2575 #-----| False -> Block 184 #-----| True -> Block 1026 -# 571| Block 184 -# 571| r571_1(glval) = VariableAddress[x184] : -# 571| mu571_2(String) = Uninitialized[x184] : &:r571_1 -# 571| r571_3(glval) = FunctionAddress[String] : -# 571| v571_4(void) = Call[String] : func:r571_3, this:r571_1 -# 571| mu571_5(unknown) = ^CallSideEffect : ~m? -# 571| mu571_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r571_1 -# 572| r572_1(glval) = VariableAddress[x184] : -# 572| r572_2(glval) = FunctionAddress[~String] : -# 572| v572_3(void) = Call[~String] : func:r572_2, this:r572_1 -# 572| mu572_4(unknown) = ^CallSideEffect : ~m? -# 572| v572_5(void) = ^IndirectReadSideEffect[-1] : &:r572_1, ~m? -# 572| mu572_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r572_1 -# 572| r572_7(bool) = Constant[0] : -# 572| v572_8(void) = ConditionalBranch : r572_7 +# 35| Block 184 +# 35| r35_2577(glval) = VariableAddress[x184] : +# 35| mu35_2578(String) = Uninitialized[x184] : &:r35_2577 +# 35| r35_2579(glval) = FunctionAddress[String] : +# 35| v35_2580(void) = Call[String] : func:r35_2579, this:r35_2577 +# 35| mu35_2581(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2582(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2577 +# 35| r35_2583(glval) = VariableAddress[x184] : +# 35| r35_2584(glval) = FunctionAddress[~String] : +# 35| v35_2585(void) = Call[~String] : func:r35_2584, this:r35_2583 +# 35| mu35_2586(unknown) = ^CallSideEffect : ~m? +# 35| v35_2587(void) = ^IndirectReadSideEffect[-1] : &:r35_2583, ~m? +# 35| mu35_2588(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2583 +# 35| r35_2589(bool) = Constant[0] : +# 35| v35_2590(void) = ConditionalBranch : r35_2589 #-----| False -> Block 185 #-----| True -> Block 1026 -# 574| Block 185 -# 574| r574_1(glval) = VariableAddress[x185] : -# 574| mu574_2(String) = Uninitialized[x185] : &:r574_1 -# 574| r574_3(glval) = FunctionAddress[String] : -# 574| v574_4(void) = Call[String] : func:r574_3, this:r574_1 -# 574| mu574_5(unknown) = ^CallSideEffect : ~m? -# 574| mu574_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r574_1 -# 575| r575_1(glval) = VariableAddress[x185] : -# 575| r575_2(glval) = FunctionAddress[~String] : -# 575| v575_3(void) = Call[~String] : func:r575_2, this:r575_1 -# 575| mu575_4(unknown) = ^CallSideEffect : ~m? -# 575| v575_5(void) = ^IndirectReadSideEffect[-1] : &:r575_1, ~m? -# 575| mu575_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r575_1 -# 575| r575_7(bool) = Constant[0] : -# 575| v575_8(void) = ConditionalBranch : r575_7 +# 35| Block 185 +# 35| r35_2591(glval) = VariableAddress[x185] : +# 35| mu35_2592(String) = Uninitialized[x185] : &:r35_2591 +# 35| r35_2593(glval) = FunctionAddress[String] : +# 35| v35_2594(void) = Call[String] : func:r35_2593, this:r35_2591 +# 35| mu35_2595(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2596(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2591 +# 35| r35_2597(glval) = VariableAddress[x185] : +# 35| r35_2598(glval) = FunctionAddress[~String] : +# 35| v35_2599(void) = Call[~String] : func:r35_2598, this:r35_2597 +# 35| mu35_2600(unknown) = ^CallSideEffect : ~m? +# 35| v35_2601(void) = ^IndirectReadSideEffect[-1] : &:r35_2597, ~m? +# 35| mu35_2602(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2597 +# 35| r35_2603(bool) = Constant[0] : +# 35| v35_2604(void) = ConditionalBranch : r35_2603 #-----| False -> Block 186 #-----| True -> Block 1026 -# 577| Block 186 -# 577| r577_1(glval) = VariableAddress[x186] : -# 577| mu577_2(String) = Uninitialized[x186] : &:r577_1 -# 577| r577_3(glval) = FunctionAddress[String] : -# 577| v577_4(void) = Call[String] : func:r577_3, this:r577_1 -# 577| mu577_5(unknown) = ^CallSideEffect : ~m? -# 577| mu577_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r577_1 -# 578| r578_1(glval) = VariableAddress[x186] : -# 578| r578_2(glval) = FunctionAddress[~String] : -# 578| v578_3(void) = Call[~String] : func:r578_2, this:r578_1 -# 578| mu578_4(unknown) = ^CallSideEffect : ~m? -# 578| v578_5(void) = ^IndirectReadSideEffect[-1] : &:r578_1, ~m? -# 578| mu578_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r578_1 -# 578| r578_7(bool) = Constant[0] : -# 578| v578_8(void) = ConditionalBranch : r578_7 +# 35| Block 186 +# 35| r35_2605(glval) = VariableAddress[x186] : +# 35| mu35_2606(String) = Uninitialized[x186] : &:r35_2605 +# 35| r35_2607(glval) = FunctionAddress[String] : +# 35| v35_2608(void) = Call[String] : func:r35_2607, this:r35_2605 +# 35| mu35_2609(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2610(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2605 +# 35| r35_2611(glval) = VariableAddress[x186] : +# 35| r35_2612(glval) = FunctionAddress[~String] : +# 35| v35_2613(void) = Call[~String] : func:r35_2612, this:r35_2611 +# 35| mu35_2614(unknown) = ^CallSideEffect : ~m? +# 35| v35_2615(void) = ^IndirectReadSideEffect[-1] : &:r35_2611, ~m? +# 35| mu35_2616(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2611 +# 35| r35_2617(bool) = Constant[0] : +# 35| v35_2618(void) = ConditionalBranch : r35_2617 #-----| False -> Block 187 #-----| True -> Block 1026 -# 580| Block 187 -# 580| r580_1(glval) = VariableAddress[x187] : -# 580| mu580_2(String) = Uninitialized[x187] : &:r580_1 -# 580| r580_3(glval) = FunctionAddress[String] : -# 580| v580_4(void) = Call[String] : func:r580_3, this:r580_1 -# 580| mu580_5(unknown) = ^CallSideEffect : ~m? -# 580| mu580_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r580_1 -# 581| r581_1(glval) = VariableAddress[x187] : -# 581| r581_2(glval) = FunctionAddress[~String] : -# 581| v581_3(void) = Call[~String] : func:r581_2, this:r581_1 -# 581| mu581_4(unknown) = ^CallSideEffect : ~m? -# 581| v581_5(void) = ^IndirectReadSideEffect[-1] : &:r581_1, ~m? -# 581| mu581_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r581_1 -# 581| r581_7(bool) = Constant[0] : -# 581| v581_8(void) = ConditionalBranch : r581_7 +# 35| Block 187 +# 35| r35_2619(glval) = VariableAddress[x187] : +# 35| mu35_2620(String) = Uninitialized[x187] : &:r35_2619 +# 35| r35_2621(glval) = FunctionAddress[String] : +# 35| v35_2622(void) = Call[String] : func:r35_2621, this:r35_2619 +# 35| mu35_2623(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2624(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2619 +# 35| r35_2625(glval) = VariableAddress[x187] : +# 35| r35_2626(glval) = FunctionAddress[~String] : +# 35| v35_2627(void) = Call[~String] : func:r35_2626, this:r35_2625 +# 35| mu35_2628(unknown) = ^CallSideEffect : ~m? +# 35| v35_2629(void) = ^IndirectReadSideEffect[-1] : &:r35_2625, ~m? +# 35| mu35_2630(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2625 +# 35| r35_2631(bool) = Constant[0] : +# 35| v35_2632(void) = ConditionalBranch : r35_2631 #-----| False -> Block 188 #-----| True -> Block 1026 -# 583| Block 188 -# 583| r583_1(glval) = VariableAddress[x188] : -# 583| mu583_2(String) = Uninitialized[x188] : &:r583_1 -# 583| r583_3(glval) = FunctionAddress[String] : -# 583| v583_4(void) = Call[String] : func:r583_3, this:r583_1 -# 583| mu583_5(unknown) = ^CallSideEffect : ~m? -# 583| mu583_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r583_1 -# 584| r584_1(glval) = VariableAddress[x188] : -# 584| r584_2(glval) = FunctionAddress[~String] : -# 584| v584_3(void) = Call[~String] : func:r584_2, this:r584_1 -# 584| mu584_4(unknown) = ^CallSideEffect : ~m? -# 584| v584_5(void) = ^IndirectReadSideEffect[-1] : &:r584_1, ~m? -# 584| mu584_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r584_1 -# 584| r584_7(bool) = Constant[0] : -# 584| v584_8(void) = ConditionalBranch : r584_7 +# 35| Block 188 +# 35| r35_2633(glval) = VariableAddress[x188] : +# 35| mu35_2634(String) = Uninitialized[x188] : &:r35_2633 +# 35| r35_2635(glval) = FunctionAddress[String] : +# 35| v35_2636(void) = Call[String] : func:r35_2635, this:r35_2633 +# 35| mu35_2637(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2638(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2633 +# 35| r35_2639(glval) = VariableAddress[x188] : +# 35| r35_2640(glval) = FunctionAddress[~String] : +# 35| v35_2641(void) = Call[~String] : func:r35_2640, this:r35_2639 +# 35| mu35_2642(unknown) = ^CallSideEffect : ~m? +# 35| v35_2643(void) = ^IndirectReadSideEffect[-1] : &:r35_2639, ~m? +# 35| mu35_2644(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2639 +# 35| r35_2645(bool) = Constant[0] : +# 35| v35_2646(void) = ConditionalBranch : r35_2645 #-----| False -> Block 189 #-----| True -> Block 1026 -# 586| Block 189 -# 586| r586_1(glval) = VariableAddress[x189] : -# 586| mu586_2(String) = Uninitialized[x189] : &:r586_1 -# 586| r586_3(glval) = FunctionAddress[String] : -# 586| v586_4(void) = Call[String] : func:r586_3, this:r586_1 -# 586| mu586_5(unknown) = ^CallSideEffect : ~m? -# 586| mu586_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r586_1 -# 587| r587_1(glval) = VariableAddress[x189] : -# 587| r587_2(glval) = FunctionAddress[~String] : -# 587| v587_3(void) = Call[~String] : func:r587_2, this:r587_1 -# 587| mu587_4(unknown) = ^CallSideEffect : ~m? -# 587| v587_5(void) = ^IndirectReadSideEffect[-1] : &:r587_1, ~m? -# 587| mu587_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r587_1 -# 587| r587_7(bool) = Constant[0] : -# 587| v587_8(void) = ConditionalBranch : r587_7 +# 35| Block 189 +# 35| r35_2647(glval) = VariableAddress[x189] : +# 35| mu35_2648(String) = Uninitialized[x189] : &:r35_2647 +# 35| r35_2649(glval) = FunctionAddress[String] : +# 35| v35_2650(void) = Call[String] : func:r35_2649, this:r35_2647 +# 35| mu35_2651(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2652(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2647 +# 35| r35_2653(glval) = VariableAddress[x189] : +# 35| r35_2654(glval) = FunctionAddress[~String] : +# 35| v35_2655(void) = Call[~String] : func:r35_2654, this:r35_2653 +# 35| mu35_2656(unknown) = ^CallSideEffect : ~m? +# 35| v35_2657(void) = ^IndirectReadSideEffect[-1] : &:r35_2653, ~m? +# 35| mu35_2658(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2653 +# 35| r35_2659(bool) = Constant[0] : +# 35| v35_2660(void) = ConditionalBranch : r35_2659 #-----| False -> Block 190 #-----| True -> Block 1026 -# 589| Block 190 -# 589| r589_1(glval) = VariableAddress[x190] : -# 589| mu589_2(String) = Uninitialized[x190] : &:r589_1 -# 589| r589_3(glval) = FunctionAddress[String] : -# 589| v589_4(void) = Call[String] : func:r589_3, this:r589_1 -# 589| mu589_5(unknown) = ^CallSideEffect : ~m? -# 589| mu589_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r589_1 -# 590| r590_1(glval) = VariableAddress[x190] : -# 590| r590_2(glval) = FunctionAddress[~String] : -# 590| v590_3(void) = Call[~String] : func:r590_2, this:r590_1 -# 590| mu590_4(unknown) = ^CallSideEffect : ~m? -# 590| v590_5(void) = ^IndirectReadSideEffect[-1] : &:r590_1, ~m? -# 590| mu590_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r590_1 -# 590| r590_7(bool) = Constant[0] : -# 590| v590_8(void) = ConditionalBranch : r590_7 +# 35| Block 190 +# 35| r35_2661(glval) = VariableAddress[x190] : +# 35| mu35_2662(String) = Uninitialized[x190] : &:r35_2661 +# 35| r35_2663(glval) = FunctionAddress[String] : +# 35| v35_2664(void) = Call[String] : func:r35_2663, this:r35_2661 +# 35| mu35_2665(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2666(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2661 +# 35| r35_2667(glval) = VariableAddress[x190] : +# 35| r35_2668(glval) = FunctionAddress[~String] : +# 35| v35_2669(void) = Call[~String] : func:r35_2668, this:r35_2667 +# 35| mu35_2670(unknown) = ^CallSideEffect : ~m? +# 35| v35_2671(void) = ^IndirectReadSideEffect[-1] : &:r35_2667, ~m? +# 35| mu35_2672(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2667 +# 35| r35_2673(bool) = Constant[0] : +# 35| v35_2674(void) = ConditionalBranch : r35_2673 #-----| False -> Block 191 #-----| True -> Block 1026 -# 592| Block 191 -# 592| r592_1(glval) = VariableAddress[x191] : -# 592| mu592_2(String) = Uninitialized[x191] : &:r592_1 -# 592| r592_3(glval) = FunctionAddress[String] : -# 592| v592_4(void) = Call[String] : func:r592_3, this:r592_1 -# 592| mu592_5(unknown) = ^CallSideEffect : ~m? -# 592| mu592_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r592_1 -# 593| r593_1(glval) = VariableAddress[x191] : -# 593| r593_2(glval) = FunctionAddress[~String] : -# 593| v593_3(void) = Call[~String] : func:r593_2, this:r593_1 -# 593| mu593_4(unknown) = ^CallSideEffect : ~m? -# 593| v593_5(void) = ^IndirectReadSideEffect[-1] : &:r593_1, ~m? -# 593| mu593_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r593_1 -# 593| r593_7(bool) = Constant[0] : -# 593| v593_8(void) = ConditionalBranch : r593_7 +# 35| Block 191 +# 35| r35_2675(glval) = VariableAddress[x191] : +# 35| mu35_2676(String) = Uninitialized[x191] : &:r35_2675 +# 35| r35_2677(glval) = FunctionAddress[String] : +# 35| v35_2678(void) = Call[String] : func:r35_2677, this:r35_2675 +# 35| mu35_2679(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2680(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2675 +# 35| r35_2681(glval) = VariableAddress[x191] : +# 35| r35_2682(glval) = FunctionAddress[~String] : +# 35| v35_2683(void) = Call[~String] : func:r35_2682, this:r35_2681 +# 35| mu35_2684(unknown) = ^CallSideEffect : ~m? +# 35| v35_2685(void) = ^IndirectReadSideEffect[-1] : &:r35_2681, ~m? +# 35| mu35_2686(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2681 +# 35| r35_2687(bool) = Constant[0] : +# 35| v35_2688(void) = ConditionalBranch : r35_2687 #-----| False -> Block 192 #-----| True -> Block 1026 -# 595| Block 192 -# 595| r595_1(glval) = VariableAddress[x192] : -# 595| mu595_2(String) = Uninitialized[x192] : &:r595_1 -# 595| r595_3(glval) = FunctionAddress[String] : -# 595| v595_4(void) = Call[String] : func:r595_3, this:r595_1 -# 595| mu595_5(unknown) = ^CallSideEffect : ~m? -# 595| mu595_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r595_1 -# 596| r596_1(glval) = VariableAddress[x192] : -# 596| r596_2(glval) = FunctionAddress[~String] : -# 596| v596_3(void) = Call[~String] : func:r596_2, this:r596_1 -# 596| mu596_4(unknown) = ^CallSideEffect : ~m? -# 596| v596_5(void) = ^IndirectReadSideEffect[-1] : &:r596_1, ~m? -# 596| mu596_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r596_1 -# 596| r596_7(bool) = Constant[0] : -# 596| v596_8(void) = ConditionalBranch : r596_7 +# 35| Block 192 +# 35| r35_2689(glval) = VariableAddress[x192] : +# 35| mu35_2690(String) = Uninitialized[x192] : &:r35_2689 +# 35| r35_2691(glval) = FunctionAddress[String] : +# 35| v35_2692(void) = Call[String] : func:r35_2691, this:r35_2689 +# 35| mu35_2693(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2694(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2689 +# 35| r35_2695(glval) = VariableAddress[x192] : +# 35| r35_2696(glval) = FunctionAddress[~String] : +# 35| v35_2697(void) = Call[~String] : func:r35_2696, this:r35_2695 +# 35| mu35_2698(unknown) = ^CallSideEffect : ~m? +# 35| v35_2699(void) = ^IndirectReadSideEffect[-1] : &:r35_2695, ~m? +# 35| mu35_2700(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2695 +# 35| r35_2701(bool) = Constant[0] : +# 35| v35_2702(void) = ConditionalBranch : r35_2701 #-----| False -> Block 193 #-----| True -> Block 1026 -# 598| Block 193 -# 598| r598_1(glval) = VariableAddress[x193] : -# 598| mu598_2(String) = Uninitialized[x193] : &:r598_1 -# 598| r598_3(glval) = FunctionAddress[String] : -# 598| v598_4(void) = Call[String] : func:r598_3, this:r598_1 -# 598| mu598_5(unknown) = ^CallSideEffect : ~m? -# 598| mu598_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r598_1 -# 599| r599_1(glval) = VariableAddress[x193] : -# 599| r599_2(glval) = FunctionAddress[~String] : -# 599| v599_3(void) = Call[~String] : func:r599_2, this:r599_1 -# 599| mu599_4(unknown) = ^CallSideEffect : ~m? -# 599| v599_5(void) = ^IndirectReadSideEffect[-1] : &:r599_1, ~m? -# 599| mu599_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r599_1 -# 599| r599_7(bool) = Constant[0] : -# 599| v599_8(void) = ConditionalBranch : r599_7 +# 35| Block 193 +# 35| r35_2703(glval) = VariableAddress[x193] : +# 35| mu35_2704(String) = Uninitialized[x193] : &:r35_2703 +# 35| r35_2705(glval) = FunctionAddress[String] : +# 35| v35_2706(void) = Call[String] : func:r35_2705, this:r35_2703 +# 35| mu35_2707(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2708(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2703 +# 35| r35_2709(glval) = VariableAddress[x193] : +# 35| r35_2710(glval) = FunctionAddress[~String] : +# 35| v35_2711(void) = Call[~String] : func:r35_2710, this:r35_2709 +# 35| mu35_2712(unknown) = ^CallSideEffect : ~m? +# 35| v35_2713(void) = ^IndirectReadSideEffect[-1] : &:r35_2709, ~m? +# 35| mu35_2714(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2709 +# 35| r35_2715(bool) = Constant[0] : +# 35| v35_2716(void) = ConditionalBranch : r35_2715 #-----| False -> Block 194 #-----| True -> Block 1026 -# 601| Block 194 -# 601| r601_1(glval) = VariableAddress[x194] : -# 601| mu601_2(String) = Uninitialized[x194] : &:r601_1 -# 601| r601_3(glval) = FunctionAddress[String] : -# 601| v601_4(void) = Call[String] : func:r601_3, this:r601_1 -# 601| mu601_5(unknown) = ^CallSideEffect : ~m? -# 601| mu601_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r601_1 -# 602| r602_1(glval) = VariableAddress[x194] : -# 602| r602_2(glval) = FunctionAddress[~String] : -# 602| v602_3(void) = Call[~String] : func:r602_2, this:r602_1 -# 602| mu602_4(unknown) = ^CallSideEffect : ~m? -# 602| v602_5(void) = ^IndirectReadSideEffect[-1] : &:r602_1, ~m? -# 602| mu602_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r602_1 -# 602| r602_7(bool) = Constant[0] : -# 602| v602_8(void) = ConditionalBranch : r602_7 +# 35| Block 194 +# 35| r35_2717(glval) = VariableAddress[x194] : +# 35| mu35_2718(String) = Uninitialized[x194] : &:r35_2717 +# 35| r35_2719(glval) = FunctionAddress[String] : +# 35| v35_2720(void) = Call[String] : func:r35_2719, this:r35_2717 +# 35| mu35_2721(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2722(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2717 +# 35| r35_2723(glval) = VariableAddress[x194] : +# 35| r35_2724(glval) = FunctionAddress[~String] : +# 35| v35_2725(void) = Call[~String] : func:r35_2724, this:r35_2723 +# 35| mu35_2726(unknown) = ^CallSideEffect : ~m? +# 35| v35_2727(void) = ^IndirectReadSideEffect[-1] : &:r35_2723, ~m? +# 35| mu35_2728(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2723 +# 35| r35_2729(bool) = Constant[0] : +# 35| v35_2730(void) = ConditionalBranch : r35_2729 #-----| False -> Block 195 #-----| True -> Block 1026 -# 604| Block 195 -# 604| r604_1(glval) = VariableAddress[x195] : -# 604| mu604_2(String) = Uninitialized[x195] : &:r604_1 -# 604| r604_3(glval) = FunctionAddress[String] : -# 604| v604_4(void) = Call[String] : func:r604_3, this:r604_1 -# 604| mu604_5(unknown) = ^CallSideEffect : ~m? -# 604| mu604_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r604_1 -# 605| r605_1(glval) = VariableAddress[x195] : -# 605| r605_2(glval) = FunctionAddress[~String] : -# 605| v605_3(void) = Call[~String] : func:r605_2, this:r605_1 -# 605| mu605_4(unknown) = ^CallSideEffect : ~m? -# 605| v605_5(void) = ^IndirectReadSideEffect[-1] : &:r605_1, ~m? -# 605| mu605_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r605_1 -# 605| r605_7(bool) = Constant[0] : -# 605| v605_8(void) = ConditionalBranch : r605_7 +# 35| Block 195 +# 35| r35_2731(glval) = VariableAddress[x195] : +# 35| mu35_2732(String) = Uninitialized[x195] : &:r35_2731 +# 35| r35_2733(glval) = FunctionAddress[String] : +# 35| v35_2734(void) = Call[String] : func:r35_2733, this:r35_2731 +# 35| mu35_2735(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2736(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2731 +# 35| r35_2737(glval) = VariableAddress[x195] : +# 35| r35_2738(glval) = FunctionAddress[~String] : +# 35| v35_2739(void) = Call[~String] : func:r35_2738, this:r35_2737 +# 35| mu35_2740(unknown) = ^CallSideEffect : ~m? +# 35| v35_2741(void) = ^IndirectReadSideEffect[-1] : &:r35_2737, ~m? +# 35| mu35_2742(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2737 +# 35| r35_2743(bool) = Constant[0] : +# 35| v35_2744(void) = ConditionalBranch : r35_2743 #-----| False -> Block 196 #-----| True -> Block 1026 -# 607| Block 196 -# 607| r607_1(glval) = VariableAddress[x196] : -# 607| mu607_2(String) = Uninitialized[x196] : &:r607_1 -# 607| r607_3(glval) = FunctionAddress[String] : -# 607| v607_4(void) = Call[String] : func:r607_3, this:r607_1 -# 607| mu607_5(unknown) = ^CallSideEffect : ~m? -# 607| mu607_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r607_1 -# 608| r608_1(glval) = VariableAddress[x196] : -# 608| r608_2(glval) = FunctionAddress[~String] : -# 608| v608_3(void) = Call[~String] : func:r608_2, this:r608_1 -# 608| mu608_4(unknown) = ^CallSideEffect : ~m? -# 608| v608_5(void) = ^IndirectReadSideEffect[-1] : &:r608_1, ~m? -# 608| mu608_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r608_1 -# 608| r608_7(bool) = Constant[0] : -# 608| v608_8(void) = ConditionalBranch : r608_7 +# 35| Block 196 +# 35| r35_2745(glval) = VariableAddress[x196] : +# 35| mu35_2746(String) = Uninitialized[x196] : &:r35_2745 +# 35| r35_2747(glval) = FunctionAddress[String] : +# 35| v35_2748(void) = Call[String] : func:r35_2747, this:r35_2745 +# 35| mu35_2749(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2750(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2745 +# 35| r35_2751(glval) = VariableAddress[x196] : +# 35| r35_2752(glval) = FunctionAddress[~String] : +# 35| v35_2753(void) = Call[~String] : func:r35_2752, this:r35_2751 +# 35| mu35_2754(unknown) = ^CallSideEffect : ~m? +# 35| v35_2755(void) = ^IndirectReadSideEffect[-1] : &:r35_2751, ~m? +# 35| mu35_2756(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2751 +# 35| r35_2757(bool) = Constant[0] : +# 35| v35_2758(void) = ConditionalBranch : r35_2757 #-----| False -> Block 197 #-----| True -> Block 1026 -# 610| Block 197 -# 610| r610_1(glval) = VariableAddress[x197] : -# 610| mu610_2(String) = Uninitialized[x197] : &:r610_1 -# 610| r610_3(glval) = FunctionAddress[String] : -# 610| v610_4(void) = Call[String] : func:r610_3, this:r610_1 -# 610| mu610_5(unknown) = ^CallSideEffect : ~m? -# 610| mu610_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r610_1 -# 611| r611_1(glval) = VariableAddress[x197] : -# 611| r611_2(glval) = FunctionAddress[~String] : -# 611| v611_3(void) = Call[~String] : func:r611_2, this:r611_1 -# 611| mu611_4(unknown) = ^CallSideEffect : ~m? -# 611| v611_5(void) = ^IndirectReadSideEffect[-1] : &:r611_1, ~m? -# 611| mu611_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r611_1 -# 611| r611_7(bool) = Constant[0] : -# 611| v611_8(void) = ConditionalBranch : r611_7 +# 35| Block 197 +# 35| r35_2759(glval) = VariableAddress[x197] : +# 35| mu35_2760(String) = Uninitialized[x197] : &:r35_2759 +# 35| r35_2761(glval) = FunctionAddress[String] : +# 35| v35_2762(void) = Call[String] : func:r35_2761, this:r35_2759 +# 35| mu35_2763(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2764(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2759 +# 35| r35_2765(glval) = VariableAddress[x197] : +# 35| r35_2766(glval) = FunctionAddress[~String] : +# 35| v35_2767(void) = Call[~String] : func:r35_2766, this:r35_2765 +# 35| mu35_2768(unknown) = ^CallSideEffect : ~m? +# 35| v35_2769(void) = ^IndirectReadSideEffect[-1] : &:r35_2765, ~m? +# 35| mu35_2770(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2765 +# 35| r35_2771(bool) = Constant[0] : +# 35| v35_2772(void) = ConditionalBranch : r35_2771 #-----| False -> Block 198 #-----| True -> Block 1026 -# 613| Block 198 -# 613| r613_1(glval) = VariableAddress[x198] : -# 613| mu613_2(String) = Uninitialized[x198] : &:r613_1 -# 613| r613_3(glval) = FunctionAddress[String] : -# 613| v613_4(void) = Call[String] : func:r613_3, this:r613_1 -# 613| mu613_5(unknown) = ^CallSideEffect : ~m? -# 613| mu613_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r613_1 -# 614| r614_1(glval) = VariableAddress[x198] : -# 614| r614_2(glval) = FunctionAddress[~String] : -# 614| v614_3(void) = Call[~String] : func:r614_2, this:r614_1 -# 614| mu614_4(unknown) = ^CallSideEffect : ~m? -# 614| v614_5(void) = ^IndirectReadSideEffect[-1] : &:r614_1, ~m? -# 614| mu614_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r614_1 -# 614| r614_7(bool) = Constant[0] : -# 614| v614_8(void) = ConditionalBranch : r614_7 +# 35| Block 198 +# 35| r35_2773(glval) = VariableAddress[x198] : +# 35| mu35_2774(String) = Uninitialized[x198] : &:r35_2773 +# 35| r35_2775(glval) = FunctionAddress[String] : +# 35| v35_2776(void) = Call[String] : func:r35_2775, this:r35_2773 +# 35| mu35_2777(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2778(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2773 +# 35| r35_2779(glval) = VariableAddress[x198] : +# 35| r35_2780(glval) = FunctionAddress[~String] : +# 35| v35_2781(void) = Call[~String] : func:r35_2780, this:r35_2779 +# 35| mu35_2782(unknown) = ^CallSideEffect : ~m? +# 35| v35_2783(void) = ^IndirectReadSideEffect[-1] : &:r35_2779, ~m? +# 35| mu35_2784(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2779 +# 35| r35_2785(bool) = Constant[0] : +# 35| v35_2786(void) = ConditionalBranch : r35_2785 #-----| False -> Block 199 #-----| True -> Block 1026 -# 616| Block 199 -# 616| r616_1(glval) = VariableAddress[x199] : -# 616| mu616_2(String) = Uninitialized[x199] : &:r616_1 -# 616| r616_3(glval) = FunctionAddress[String] : -# 616| v616_4(void) = Call[String] : func:r616_3, this:r616_1 -# 616| mu616_5(unknown) = ^CallSideEffect : ~m? -# 616| mu616_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r616_1 -# 617| r617_1(glval) = VariableAddress[x199] : -# 617| r617_2(glval) = FunctionAddress[~String] : -# 617| v617_3(void) = Call[~String] : func:r617_2, this:r617_1 -# 617| mu617_4(unknown) = ^CallSideEffect : ~m? -# 617| v617_5(void) = ^IndirectReadSideEffect[-1] : &:r617_1, ~m? -# 617| mu617_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r617_1 -# 617| r617_7(bool) = Constant[0] : -# 617| v617_8(void) = ConditionalBranch : r617_7 +# 35| Block 199 +# 35| r35_2787(glval) = VariableAddress[x199] : +# 35| mu35_2788(String) = Uninitialized[x199] : &:r35_2787 +# 35| r35_2789(glval) = FunctionAddress[String] : +# 35| v35_2790(void) = Call[String] : func:r35_2789, this:r35_2787 +# 35| mu35_2791(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2792(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2787 +# 35| r35_2793(glval) = VariableAddress[x199] : +# 35| r35_2794(glval) = FunctionAddress[~String] : +# 35| v35_2795(void) = Call[~String] : func:r35_2794, this:r35_2793 +# 35| mu35_2796(unknown) = ^CallSideEffect : ~m? +# 35| v35_2797(void) = ^IndirectReadSideEffect[-1] : &:r35_2793, ~m? +# 35| mu35_2798(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2793 +# 35| r35_2799(bool) = Constant[0] : +# 35| v35_2800(void) = ConditionalBranch : r35_2799 #-----| False -> Block 200 #-----| True -> Block 1026 -# 619| Block 200 -# 619| r619_1(glval) = VariableAddress[x200] : -# 619| mu619_2(String) = Uninitialized[x200] : &:r619_1 -# 619| r619_3(glval) = FunctionAddress[String] : -# 619| v619_4(void) = Call[String] : func:r619_3, this:r619_1 -# 619| mu619_5(unknown) = ^CallSideEffect : ~m? -# 619| mu619_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r619_1 -# 620| r620_1(glval) = VariableAddress[x200] : -# 620| r620_2(glval) = FunctionAddress[~String] : -# 620| v620_3(void) = Call[~String] : func:r620_2, this:r620_1 -# 620| mu620_4(unknown) = ^CallSideEffect : ~m? -# 620| v620_5(void) = ^IndirectReadSideEffect[-1] : &:r620_1, ~m? -# 620| mu620_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r620_1 -# 620| r620_7(bool) = Constant[0] : -# 620| v620_8(void) = ConditionalBranch : r620_7 +# 35| Block 200 +# 35| r35_2801(glval) = VariableAddress[x200] : +# 35| mu35_2802(String) = Uninitialized[x200] : &:r35_2801 +# 35| r35_2803(glval) = FunctionAddress[String] : +# 35| v35_2804(void) = Call[String] : func:r35_2803, this:r35_2801 +# 35| mu35_2805(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2806(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2801 +# 35| r35_2807(glval) = VariableAddress[x200] : +# 35| r35_2808(glval) = FunctionAddress[~String] : +# 35| v35_2809(void) = Call[~String] : func:r35_2808, this:r35_2807 +# 35| mu35_2810(unknown) = ^CallSideEffect : ~m? +# 35| v35_2811(void) = ^IndirectReadSideEffect[-1] : &:r35_2807, ~m? +# 35| mu35_2812(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2807 +# 35| r35_2813(bool) = Constant[0] : +# 35| v35_2814(void) = ConditionalBranch : r35_2813 #-----| False -> Block 201 #-----| True -> Block 1026 -# 622| Block 201 -# 622| r622_1(glval) = VariableAddress[x201] : -# 622| mu622_2(String) = Uninitialized[x201] : &:r622_1 -# 622| r622_3(glval) = FunctionAddress[String] : -# 622| v622_4(void) = Call[String] : func:r622_3, this:r622_1 -# 622| mu622_5(unknown) = ^CallSideEffect : ~m? -# 622| mu622_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r622_1 -# 623| r623_1(glval) = VariableAddress[x201] : -# 623| r623_2(glval) = FunctionAddress[~String] : -# 623| v623_3(void) = Call[~String] : func:r623_2, this:r623_1 -# 623| mu623_4(unknown) = ^CallSideEffect : ~m? -# 623| v623_5(void) = ^IndirectReadSideEffect[-1] : &:r623_1, ~m? -# 623| mu623_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r623_1 -# 623| r623_7(bool) = Constant[0] : -# 623| v623_8(void) = ConditionalBranch : r623_7 +# 35| Block 201 +# 35| r35_2815(glval) = VariableAddress[x201] : +# 35| mu35_2816(String) = Uninitialized[x201] : &:r35_2815 +# 35| r35_2817(glval) = FunctionAddress[String] : +# 35| v35_2818(void) = Call[String] : func:r35_2817, this:r35_2815 +# 35| mu35_2819(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2820(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2815 +# 35| r35_2821(glval) = VariableAddress[x201] : +# 35| r35_2822(glval) = FunctionAddress[~String] : +# 35| v35_2823(void) = Call[~String] : func:r35_2822, this:r35_2821 +# 35| mu35_2824(unknown) = ^CallSideEffect : ~m? +# 35| v35_2825(void) = ^IndirectReadSideEffect[-1] : &:r35_2821, ~m? +# 35| mu35_2826(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2821 +# 35| r35_2827(bool) = Constant[0] : +# 35| v35_2828(void) = ConditionalBranch : r35_2827 #-----| False -> Block 202 #-----| True -> Block 1026 -# 625| Block 202 -# 625| r625_1(glval) = VariableAddress[x202] : -# 625| mu625_2(String) = Uninitialized[x202] : &:r625_1 -# 625| r625_3(glval) = FunctionAddress[String] : -# 625| v625_4(void) = Call[String] : func:r625_3, this:r625_1 -# 625| mu625_5(unknown) = ^CallSideEffect : ~m? -# 625| mu625_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r625_1 -# 626| r626_1(glval) = VariableAddress[x202] : -# 626| r626_2(glval) = FunctionAddress[~String] : -# 626| v626_3(void) = Call[~String] : func:r626_2, this:r626_1 -# 626| mu626_4(unknown) = ^CallSideEffect : ~m? -# 626| v626_5(void) = ^IndirectReadSideEffect[-1] : &:r626_1, ~m? -# 626| mu626_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r626_1 -# 626| r626_7(bool) = Constant[0] : -# 626| v626_8(void) = ConditionalBranch : r626_7 +# 35| Block 202 +# 35| r35_2829(glval) = VariableAddress[x202] : +# 35| mu35_2830(String) = Uninitialized[x202] : &:r35_2829 +# 35| r35_2831(glval) = FunctionAddress[String] : +# 35| v35_2832(void) = Call[String] : func:r35_2831, this:r35_2829 +# 35| mu35_2833(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2834(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2829 +# 35| r35_2835(glval) = VariableAddress[x202] : +# 35| r35_2836(glval) = FunctionAddress[~String] : +# 35| v35_2837(void) = Call[~String] : func:r35_2836, this:r35_2835 +# 35| mu35_2838(unknown) = ^CallSideEffect : ~m? +# 35| v35_2839(void) = ^IndirectReadSideEffect[-1] : &:r35_2835, ~m? +# 35| mu35_2840(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2835 +# 35| r35_2841(bool) = Constant[0] : +# 35| v35_2842(void) = ConditionalBranch : r35_2841 #-----| False -> Block 203 #-----| True -> Block 1026 -# 628| Block 203 -# 628| r628_1(glval) = VariableAddress[x203] : -# 628| mu628_2(String) = Uninitialized[x203] : &:r628_1 -# 628| r628_3(glval) = FunctionAddress[String] : -# 628| v628_4(void) = Call[String] : func:r628_3, this:r628_1 -# 628| mu628_5(unknown) = ^CallSideEffect : ~m? -# 628| mu628_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r628_1 -# 629| r629_1(glval) = VariableAddress[x203] : -# 629| r629_2(glval) = FunctionAddress[~String] : -# 629| v629_3(void) = Call[~String] : func:r629_2, this:r629_1 -# 629| mu629_4(unknown) = ^CallSideEffect : ~m? -# 629| v629_5(void) = ^IndirectReadSideEffect[-1] : &:r629_1, ~m? -# 629| mu629_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r629_1 -# 629| r629_7(bool) = Constant[0] : -# 629| v629_8(void) = ConditionalBranch : r629_7 +# 35| Block 203 +# 35| r35_2843(glval) = VariableAddress[x203] : +# 35| mu35_2844(String) = Uninitialized[x203] : &:r35_2843 +# 35| r35_2845(glval) = FunctionAddress[String] : +# 35| v35_2846(void) = Call[String] : func:r35_2845, this:r35_2843 +# 35| mu35_2847(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2848(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2843 +# 35| r35_2849(glval) = VariableAddress[x203] : +# 35| r35_2850(glval) = FunctionAddress[~String] : +# 35| v35_2851(void) = Call[~String] : func:r35_2850, this:r35_2849 +# 35| mu35_2852(unknown) = ^CallSideEffect : ~m? +# 35| v35_2853(void) = ^IndirectReadSideEffect[-1] : &:r35_2849, ~m? +# 35| mu35_2854(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2849 +# 35| r35_2855(bool) = Constant[0] : +# 35| v35_2856(void) = ConditionalBranch : r35_2855 #-----| False -> Block 204 #-----| True -> Block 1026 -# 631| Block 204 -# 631| r631_1(glval) = VariableAddress[x204] : -# 631| mu631_2(String) = Uninitialized[x204] : &:r631_1 -# 631| r631_3(glval) = FunctionAddress[String] : -# 631| v631_4(void) = Call[String] : func:r631_3, this:r631_1 -# 631| mu631_5(unknown) = ^CallSideEffect : ~m? -# 631| mu631_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r631_1 -# 632| r632_1(glval) = VariableAddress[x204] : -# 632| r632_2(glval) = FunctionAddress[~String] : -# 632| v632_3(void) = Call[~String] : func:r632_2, this:r632_1 -# 632| mu632_4(unknown) = ^CallSideEffect : ~m? -# 632| v632_5(void) = ^IndirectReadSideEffect[-1] : &:r632_1, ~m? -# 632| mu632_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r632_1 -# 632| r632_7(bool) = Constant[0] : -# 632| v632_8(void) = ConditionalBranch : r632_7 +# 35| Block 204 +# 35| r35_2857(glval) = VariableAddress[x204] : +# 35| mu35_2858(String) = Uninitialized[x204] : &:r35_2857 +# 35| r35_2859(glval) = FunctionAddress[String] : +# 35| v35_2860(void) = Call[String] : func:r35_2859, this:r35_2857 +# 35| mu35_2861(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2862(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2857 +# 35| r35_2863(glval) = VariableAddress[x204] : +# 35| r35_2864(glval) = FunctionAddress[~String] : +# 35| v35_2865(void) = Call[~String] : func:r35_2864, this:r35_2863 +# 35| mu35_2866(unknown) = ^CallSideEffect : ~m? +# 35| v35_2867(void) = ^IndirectReadSideEffect[-1] : &:r35_2863, ~m? +# 35| mu35_2868(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2863 +# 35| r35_2869(bool) = Constant[0] : +# 35| v35_2870(void) = ConditionalBranch : r35_2869 #-----| False -> Block 205 #-----| True -> Block 1026 -# 634| Block 205 -# 634| r634_1(glval) = VariableAddress[x205] : -# 634| mu634_2(String) = Uninitialized[x205] : &:r634_1 -# 634| r634_3(glval) = FunctionAddress[String] : -# 634| v634_4(void) = Call[String] : func:r634_3, this:r634_1 -# 634| mu634_5(unknown) = ^CallSideEffect : ~m? -# 634| mu634_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r634_1 -# 635| r635_1(glval) = VariableAddress[x205] : -# 635| r635_2(glval) = FunctionAddress[~String] : -# 635| v635_3(void) = Call[~String] : func:r635_2, this:r635_1 -# 635| mu635_4(unknown) = ^CallSideEffect : ~m? -# 635| v635_5(void) = ^IndirectReadSideEffect[-1] : &:r635_1, ~m? -# 635| mu635_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r635_1 -# 635| r635_7(bool) = Constant[0] : -# 635| v635_8(void) = ConditionalBranch : r635_7 +# 35| Block 205 +# 35| r35_2871(glval) = VariableAddress[x205] : +# 35| mu35_2872(String) = Uninitialized[x205] : &:r35_2871 +# 35| r35_2873(glval) = FunctionAddress[String] : +# 35| v35_2874(void) = Call[String] : func:r35_2873, this:r35_2871 +# 35| mu35_2875(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2876(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2871 +# 35| r35_2877(glval) = VariableAddress[x205] : +# 35| r35_2878(glval) = FunctionAddress[~String] : +# 35| v35_2879(void) = Call[~String] : func:r35_2878, this:r35_2877 +# 35| mu35_2880(unknown) = ^CallSideEffect : ~m? +# 35| v35_2881(void) = ^IndirectReadSideEffect[-1] : &:r35_2877, ~m? +# 35| mu35_2882(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2877 +# 35| r35_2883(bool) = Constant[0] : +# 35| v35_2884(void) = ConditionalBranch : r35_2883 #-----| False -> Block 206 #-----| True -> Block 1026 -# 637| Block 206 -# 637| r637_1(glval) = VariableAddress[x206] : -# 637| mu637_2(String) = Uninitialized[x206] : &:r637_1 -# 637| r637_3(glval) = FunctionAddress[String] : -# 637| v637_4(void) = Call[String] : func:r637_3, this:r637_1 -# 637| mu637_5(unknown) = ^CallSideEffect : ~m? -# 637| mu637_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r637_1 -# 638| r638_1(glval) = VariableAddress[x206] : -# 638| r638_2(glval) = FunctionAddress[~String] : -# 638| v638_3(void) = Call[~String] : func:r638_2, this:r638_1 -# 638| mu638_4(unknown) = ^CallSideEffect : ~m? -# 638| v638_5(void) = ^IndirectReadSideEffect[-1] : &:r638_1, ~m? -# 638| mu638_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r638_1 -# 638| r638_7(bool) = Constant[0] : -# 638| v638_8(void) = ConditionalBranch : r638_7 +# 35| Block 206 +# 35| r35_2885(glval) = VariableAddress[x206] : +# 35| mu35_2886(String) = Uninitialized[x206] : &:r35_2885 +# 35| r35_2887(glval) = FunctionAddress[String] : +# 35| v35_2888(void) = Call[String] : func:r35_2887, this:r35_2885 +# 35| mu35_2889(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2890(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2885 +# 35| r35_2891(glval) = VariableAddress[x206] : +# 35| r35_2892(glval) = FunctionAddress[~String] : +# 35| v35_2893(void) = Call[~String] : func:r35_2892, this:r35_2891 +# 35| mu35_2894(unknown) = ^CallSideEffect : ~m? +# 35| v35_2895(void) = ^IndirectReadSideEffect[-1] : &:r35_2891, ~m? +# 35| mu35_2896(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2891 +# 35| r35_2897(bool) = Constant[0] : +# 35| v35_2898(void) = ConditionalBranch : r35_2897 #-----| False -> Block 207 #-----| True -> Block 1026 -# 640| Block 207 -# 640| r640_1(glval) = VariableAddress[x207] : -# 640| mu640_2(String) = Uninitialized[x207] : &:r640_1 -# 640| r640_3(glval) = FunctionAddress[String] : -# 640| v640_4(void) = Call[String] : func:r640_3, this:r640_1 -# 640| mu640_5(unknown) = ^CallSideEffect : ~m? -# 640| mu640_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r640_1 -# 641| r641_1(glval) = VariableAddress[x207] : -# 641| r641_2(glval) = FunctionAddress[~String] : -# 641| v641_3(void) = Call[~String] : func:r641_2, this:r641_1 -# 641| mu641_4(unknown) = ^CallSideEffect : ~m? -# 641| v641_5(void) = ^IndirectReadSideEffect[-1] : &:r641_1, ~m? -# 641| mu641_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r641_1 -# 641| r641_7(bool) = Constant[0] : -# 641| v641_8(void) = ConditionalBranch : r641_7 +# 35| Block 207 +# 35| r35_2899(glval) = VariableAddress[x207] : +# 35| mu35_2900(String) = Uninitialized[x207] : &:r35_2899 +# 35| r35_2901(glval) = FunctionAddress[String] : +# 35| v35_2902(void) = Call[String] : func:r35_2901, this:r35_2899 +# 35| mu35_2903(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2904(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2899 +# 35| r35_2905(glval) = VariableAddress[x207] : +# 35| r35_2906(glval) = FunctionAddress[~String] : +# 35| v35_2907(void) = Call[~String] : func:r35_2906, this:r35_2905 +# 35| mu35_2908(unknown) = ^CallSideEffect : ~m? +# 35| v35_2909(void) = ^IndirectReadSideEffect[-1] : &:r35_2905, ~m? +# 35| mu35_2910(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2905 +# 35| r35_2911(bool) = Constant[0] : +# 35| v35_2912(void) = ConditionalBranch : r35_2911 #-----| False -> Block 208 #-----| True -> Block 1026 -# 643| Block 208 -# 643| r643_1(glval) = VariableAddress[x208] : -# 643| mu643_2(String) = Uninitialized[x208] : &:r643_1 -# 643| r643_3(glval) = FunctionAddress[String] : -# 643| v643_4(void) = Call[String] : func:r643_3, this:r643_1 -# 643| mu643_5(unknown) = ^CallSideEffect : ~m? -# 643| mu643_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r643_1 -# 644| r644_1(glval) = VariableAddress[x208] : -# 644| r644_2(glval) = FunctionAddress[~String] : -# 644| v644_3(void) = Call[~String] : func:r644_2, this:r644_1 -# 644| mu644_4(unknown) = ^CallSideEffect : ~m? -# 644| v644_5(void) = ^IndirectReadSideEffect[-1] : &:r644_1, ~m? -# 644| mu644_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r644_1 -# 644| r644_7(bool) = Constant[0] : -# 644| v644_8(void) = ConditionalBranch : r644_7 +# 35| Block 208 +# 35| r35_2913(glval) = VariableAddress[x208] : +# 35| mu35_2914(String) = Uninitialized[x208] : &:r35_2913 +# 35| r35_2915(glval) = FunctionAddress[String] : +# 35| v35_2916(void) = Call[String] : func:r35_2915, this:r35_2913 +# 35| mu35_2917(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2918(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2913 +# 35| r35_2919(glval) = VariableAddress[x208] : +# 35| r35_2920(glval) = FunctionAddress[~String] : +# 35| v35_2921(void) = Call[~String] : func:r35_2920, this:r35_2919 +# 35| mu35_2922(unknown) = ^CallSideEffect : ~m? +# 35| v35_2923(void) = ^IndirectReadSideEffect[-1] : &:r35_2919, ~m? +# 35| mu35_2924(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2919 +# 35| r35_2925(bool) = Constant[0] : +# 35| v35_2926(void) = ConditionalBranch : r35_2925 #-----| False -> Block 209 #-----| True -> Block 1026 -# 646| Block 209 -# 646| r646_1(glval) = VariableAddress[x209] : -# 646| mu646_2(String) = Uninitialized[x209] : &:r646_1 -# 646| r646_3(glval) = FunctionAddress[String] : -# 646| v646_4(void) = Call[String] : func:r646_3, this:r646_1 -# 646| mu646_5(unknown) = ^CallSideEffect : ~m? -# 646| mu646_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r646_1 -# 647| r647_1(glval) = VariableAddress[x209] : -# 647| r647_2(glval) = FunctionAddress[~String] : -# 647| v647_3(void) = Call[~String] : func:r647_2, this:r647_1 -# 647| mu647_4(unknown) = ^CallSideEffect : ~m? -# 647| v647_5(void) = ^IndirectReadSideEffect[-1] : &:r647_1, ~m? -# 647| mu647_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r647_1 -# 647| r647_7(bool) = Constant[0] : -# 647| v647_8(void) = ConditionalBranch : r647_7 +# 35| Block 209 +# 35| r35_2927(glval) = VariableAddress[x209] : +# 35| mu35_2928(String) = Uninitialized[x209] : &:r35_2927 +# 35| r35_2929(glval) = FunctionAddress[String] : +# 35| v35_2930(void) = Call[String] : func:r35_2929, this:r35_2927 +# 35| mu35_2931(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2932(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2927 +# 35| r35_2933(glval) = VariableAddress[x209] : +# 35| r35_2934(glval) = FunctionAddress[~String] : +# 35| v35_2935(void) = Call[~String] : func:r35_2934, this:r35_2933 +# 35| mu35_2936(unknown) = ^CallSideEffect : ~m? +# 35| v35_2937(void) = ^IndirectReadSideEffect[-1] : &:r35_2933, ~m? +# 35| mu35_2938(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2933 +# 35| r35_2939(bool) = Constant[0] : +# 35| v35_2940(void) = ConditionalBranch : r35_2939 #-----| False -> Block 210 #-----| True -> Block 1026 -# 649| Block 210 -# 649| r649_1(glval) = VariableAddress[x210] : -# 649| mu649_2(String) = Uninitialized[x210] : &:r649_1 -# 649| r649_3(glval) = FunctionAddress[String] : -# 649| v649_4(void) = Call[String] : func:r649_3, this:r649_1 -# 649| mu649_5(unknown) = ^CallSideEffect : ~m? -# 649| mu649_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r649_1 -# 650| r650_1(glval) = VariableAddress[x210] : -# 650| r650_2(glval) = FunctionAddress[~String] : -# 650| v650_3(void) = Call[~String] : func:r650_2, this:r650_1 -# 650| mu650_4(unknown) = ^CallSideEffect : ~m? -# 650| v650_5(void) = ^IndirectReadSideEffect[-1] : &:r650_1, ~m? -# 650| mu650_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r650_1 -# 650| r650_7(bool) = Constant[0] : -# 650| v650_8(void) = ConditionalBranch : r650_7 +# 35| Block 210 +# 35| r35_2941(glval) = VariableAddress[x210] : +# 35| mu35_2942(String) = Uninitialized[x210] : &:r35_2941 +# 35| r35_2943(glval) = FunctionAddress[String] : +# 35| v35_2944(void) = Call[String] : func:r35_2943, this:r35_2941 +# 35| mu35_2945(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2946(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2941 +# 35| r35_2947(glval) = VariableAddress[x210] : +# 35| r35_2948(glval) = FunctionAddress[~String] : +# 35| v35_2949(void) = Call[~String] : func:r35_2948, this:r35_2947 +# 35| mu35_2950(unknown) = ^CallSideEffect : ~m? +# 35| v35_2951(void) = ^IndirectReadSideEffect[-1] : &:r35_2947, ~m? +# 35| mu35_2952(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2947 +# 35| r35_2953(bool) = Constant[0] : +# 35| v35_2954(void) = ConditionalBranch : r35_2953 #-----| False -> Block 211 #-----| True -> Block 1026 -# 652| Block 211 -# 652| r652_1(glval) = VariableAddress[x211] : -# 652| mu652_2(String) = Uninitialized[x211] : &:r652_1 -# 652| r652_3(glval) = FunctionAddress[String] : -# 652| v652_4(void) = Call[String] : func:r652_3, this:r652_1 -# 652| mu652_5(unknown) = ^CallSideEffect : ~m? -# 652| mu652_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r652_1 -# 653| r653_1(glval) = VariableAddress[x211] : -# 653| r653_2(glval) = FunctionAddress[~String] : -# 653| v653_3(void) = Call[~String] : func:r653_2, this:r653_1 -# 653| mu653_4(unknown) = ^CallSideEffect : ~m? -# 653| v653_5(void) = ^IndirectReadSideEffect[-1] : &:r653_1, ~m? -# 653| mu653_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r653_1 -# 653| r653_7(bool) = Constant[0] : -# 653| v653_8(void) = ConditionalBranch : r653_7 +# 35| Block 211 +# 35| r35_2955(glval) = VariableAddress[x211] : +# 35| mu35_2956(String) = Uninitialized[x211] : &:r35_2955 +# 35| r35_2957(glval) = FunctionAddress[String] : +# 35| v35_2958(void) = Call[String] : func:r35_2957, this:r35_2955 +# 35| mu35_2959(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2960(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2955 +# 35| r35_2961(glval) = VariableAddress[x211] : +# 35| r35_2962(glval) = FunctionAddress[~String] : +# 35| v35_2963(void) = Call[~String] : func:r35_2962, this:r35_2961 +# 35| mu35_2964(unknown) = ^CallSideEffect : ~m? +# 35| v35_2965(void) = ^IndirectReadSideEffect[-1] : &:r35_2961, ~m? +# 35| mu35_2966(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2961 +# 35| r35_2967(bool) = Constant[0] : +# 35| v35_2968(void) = ConditionalBranch : r35_2967 #-----| False -> Block 212 #-----| True -> Block 1026 -# 655| Block 212 -# 655| r655_1(glval) = VariableAddress[x212] : -# 655| mu655_2(String) = Uninitialized[x212] : &:r655_1 -# 655| r655_3(glval) = FunctionAddress[String] : -# 655| v655_4(void) = Call[String] : func:r655_3, this:r655_1 -# 655| mu655_5(unknown) = ^CallSideEffect : ~m? -# 655| mu655_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r655_1 -# 656| r656_1(glval) = VariableAddress[x212] : -# 656| r656_2(glval) = FunctionAddress[~String] : -# 656| v656_3(void) = Call[~String] : func:r656_2, this:r656_1 -# 656| mu656_4(unknown) = ^CallSideEffect : ~m? -# 656| v656_5(void) = ^IndirectReadSideEffect[-1] : &:r656_1, ~m? -# 656| mu656_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r656_1 -# 656| r656_7(bool) = Constant[0] : -# 656| v656_8(void) = ConditionalBranch : r656_7 +# 35| Block 212 +# 35| r35_2969(glval) = VariableAddress[x212] : +# 35| mu35_2970(String) = Uninitialized[x212] : &:r35_2969 +# 35| r35_2971(glval) = FunctionAddress[String] : +# 35| v35_2972(void) = Call[String] : func:r35_2971, this:r35_2969 +# 35| mu35_2973(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2974(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2969 +# 35| r35_2975(glval) = VariableAddress[x212] : +# 35| r35_2976(glval) = FunctionAddress[~String] : +# 35| v35_2977(void) = Call[~String] : func:r35_2976, this:r35_2975 +# 35| mu35_2978(unknown) = ^CallSideEffect : ~m? +# 35| v35_2979(void) = ^IndirectReadSideEffect[-1] : &:r35_2975, ~m? +# 35| mu35_2980(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2975 +# 35| r35_2981(bool) = Constant[0] : +# 35| v35_2982(void) = ConditionalBranch : r35_2981 #-----| False -> Block 213 #-----| True -> Block 1026 -# 658| Block 213 -# 658| r658_1(glval) = VariableAddress[x213] : -# 658| mu658_2(String) = Uninitialized[x213] : &:r658_1 -# 658| r658_3(glval) = FunctionAddress[String] : -# 658| v658_4(void) = Call[String] : func:r658_3, this:r658_1 -# 658| mu658_5(unknown) = ^CallSideEffect : ~m? -# 658| mu658_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r658_1 -# 659| r659_1(glval) = VariableAddress[x213] : -# 659| r659_2(glval) = FunctionAddress[~String] : -# 659| v659_3(void) = Call[~String] : func:r659_2, this:r659_1 -# 659| mu659_4(unknown) = ^CallSideEffect : ~m? -# 659| v659_5(void) = ^IndirectReadSideEffect[-1] : &:r659_1, ~m? -# 659| mu659_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r659_1 -# 659| r659_7(bool) = Constant[0] : -# 659| v659_8(void) = ConditionalBranch : r659_7 +# 35| Block 213 +# 35| r35_2983(glval) = VariableAddress[x213] : +# 35| mu35_2984(String) = Uninitialized[x213] : &:r35_2983 +# 35| r35_2985(glval) = FunctionAddress[String] : +# 35| v35_2986(void) = Call[String] : func:r35_2985, this:r35_2983 +# 35| mu35_2987(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2988(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2983 +# 35| r35_2989(glval) = VariableAddress[x213] : +# 35| r35_2990(glval) = FunctionAddress[~String] : +# 35| v35_2991(void) = Call[~String] : func:r35_2990, this:r35_2989 +# 35| mu35_2992(unknown) = ^CallSideEffect : ~m? +# 35| v35_2993(void) = ^IndirectReadSideEffect[-1] : &:r35_2989, ~m? +# 35| mu35_2994(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2989 +# 35| r35_2995(bool) = Constant[0] : +# 35| v35_2996(void) = ConditionalBranch : r35_2995 #-----| False -> Block 214 #-----| True -> Block 1026 -# 661| Block 214 -# 661| r661_1(glval) = VariableAddress[x214] : -# 661| mu661_2(String) = Uninitialized[x214] : &:r661_1 -# 661| r661_3(glval) = FunctionAddress[String] : -# 661| v661_4(void) = Call[String] : func:r661_3, this:r661_1 -# 661| mu661_5(unknown) = ^CallSideEffect : ~m? -# 661| mu661_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r661_1 -# 662| r662_1(glval) = VariableAddress[x214] : -# 662| r662_2(glval) = FunctionAddress[~String] : -# 662| v662_3(void) = Call[~String] : func:r662_2, this:r662_1 -# 662| mu662_4(unknown) = ^CallSideEffect : ~m? -# 662| v662_5(void) = ^IndirectReadSideEffect[-1] : &:r662_1, ~m? -# 662| mu662_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r662_1 -# 662| r662_7(bool) = Constant[0] : -# 662| v662_8(void) = ConditionalBranch : r662_7 +# 35| Block 214 +# 35| r35_2997(glval) = VariableAddress[x214] : +# 35| mu35_2998(String) = Uninitialized[x214] : &:r35_2997 +# 35| r35_2999(glval) = FunctionAddress[String] : +# 35| v35_3000(void) = Call[String] : func:r35_2999, this:r35_2997 +# 35| mu35_3001(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3002(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2997 +# 35| r35_3003(glval) = VariableAddress[x214] : +# 35| r35_3004(glval) = FunctionAddress[~String] : +# 35| v35_3005(void) = Call[~String] : func:r35_3004, this:r35_3003 +# 35| mu35_3006(unknown) = ^CallSideEffect : ~m? +# 35| v35_3007(void) = ^IndirectReadSideEffect[-1] : &:r35_3003, ~m? +# 35| mu35_3008(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3003 +# 35| r35_3009(bool) = Constant[0] : +# 35| v35_3010(void) = ConditionalBranch : r35_3009 #-----| False -> Block 215 #-----| True -> Block 1026 -# 664| Block 215 -# 664| r664_1(glval) = VariableAddress[x215] : -# 664| mu664_2(String) = Uninitialized[x215] : &:r664_1 -# 664| r664_3(glval) = FunctionAddress[String] : -# 664| v664_4(void) = Call[String] : func:r664_3, this:r664_1 -# 664| mu664_5(unknown) = ^CallSideEffect : ~m? -# 664| mu664_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r664_1 -# 665| r665_1(glval) = VariableAddress[x215] : -# 665| r665_2(glval) = FunctionAddress[~String] : -# 665| v665_3(void) = Call[~String] : func:r665_2, this:r665_1 -# 665| mu665_4(unknown) = ^CallSideEffect : ~m? -# 665| v665_5(void) = ^IndirectReadSideEffect[-1] : &:r665_1, ~m? -# 665| mu665_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r665_1 -# 665| r665_7(bool) = Constant[0] : -# 665| v665_8(void) = ConditionalBranch : r665_7 +# 35| Block 215 +# 35| r35_3011(glval) = VariableAddress[x215] : +# 35| mu35_3012(String) = Uninitialized[x215] : &:r35_3011 +# 35| r35_3013(glval) = FunctionAddress[String] : +# 35| v35_3014(void) = Call[String] : func:r35_3013, this:r35_3011 +# 35| mu35_3015(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3016(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3011 +# 35| r35_3017(glval) = VariableAddress[x215] : +# 35| r35_3018(glval) = FunctionAddress[~String] : +# 35| v35_3019(void) = Call[~String] : func:r35_3018, this:r35_3017 +# 35| mu35_3020(unknown) = ^CallSideEffect : ~m? +# 35| v35_3021(void) = ^IndirectReadSideEffect[-1] : &:r35_3017, ~m? +# 35| mu35_3022(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3017 +# 35| r35_3023(bool) = Constant[0] : +# 35| v35_3024(void) = ConditionalBranch : r35_3023 #-----| False -> Block 216 #-----| True -> Block 1026 -# 667| Block 216 -# 667| r667_1(glval) = VariableAddress[x216] : -# 667| mu667_2(String) = Uninitialized[x216] : &:r667_1 -# 667| r667_3(glval) = FunctionAddress[String] : -# 667| v667_4(void) = Call[String] : func:r667_3, this:r667_1 -# 667| mu667_5(unknown) = ^CallSideEffect : ~m? -# 667| mu667_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r667_1 -# 668| r668_1(glval) = VariableAddress[x216] : -# 668| r668_2(glval) = FunctionAddress[~String] : -# 668| v668_3(void) = Call[~String] : func:r668_2, this:r668_1 -# 668| mu668_4(unknown) = ^CallSideEffect : ~m? -# 668| v668_5(void) = ^IndirectReadSideEffect[-1] : &:r668_1, ~m? -# 668| mu668_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r668_1 -# 668| r668_7(bool) = Constant[0] : -# 668| v668_8(void) = ConditionalBranch : r668_7 +# 35| Block 216 +# 35| r35_3025(glval) = VariableAddress[x216] : +# 35| mu35_3026(String) = Uninitialized[x216] : &:r35_3025 +# 35| r35_3027(glval) = FunctionAddress[String] : +# 35| v35_3028(void) = Call[String] : func:r35_3027, this:r35_3025 +# 35| mu35_3029(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3030(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3025 +# 35| r35_3031(glval) = VariableAddress[x216] : +# 35| r35_3032(glval) = FunctionAddress[~String] : +# 35| v35_3033(void) = Call[~String] : func:r35_3032, this:r35_3031 +# 35| mu35_3034(unknown) = ^CallSideEffect : ~m? +# 35| v35_3035(void) = ^IndirectReadSideEffect[-1] : &:r35_3031, ~m? +# 35| mu35_3036(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3031 +# 35| r35_3037(bool) = Constant[0] : +# 35| v35_3038(void) = ConditionalBranch : r35_3037 #-----| False -> Block 217 #-----| True -> Block 1026 -# 670| Block 217 -# 670| r670_1(glval) = VariableAddress[x217] : -# 670| mu670_2(String) = Uninitialized[x217] : &:r670_1 -# 670| r670_3(glval) = FunctionAddress[String] : -# 670| v670_4(void) = Call[String] : func:r670_3, this:r670_1 -# 670| mu670_5(unknown) = ^CallSideEffect : ~m? -# 670| mu670_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r670_1 -# 671| r671_1(glval) = VariableAddress[x217] : -# 671| r671_2(glval) = FunctionAddress[~String] : -# 671| v671_3(void) = Call[~String] : func:r671_2, this:r671_1 -# 671| mu671_4(unknown) = ^CallSideEffect : ~m? -# 671| v671_5(void) = ^IndirectReadSideEffect[-1] : &:r671_1, ~m? -# 671| mu671_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r671_1 -# 671| r671_7(bool) = Constant[0] : -# 671| v671_8(void) = ConditionalBranch : r671_7 +# 35| Block 217 +# 35| r35_3039(glval) = VariableAddress[x217] : +# 35| mu35_3040(String) = Uninitialized[x217] : &:r35_3039 +# 35| r35_3041(glval) = FunctionAddress[String] : +# 35| v35_3042(void) = Call[String] : func:r35_3041, this:r35_3039 +# 35| mu35_3043(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3044(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3039 +# 35| r35_3045(glval) = VariableAddress[x217] : +# 35| r35_3046(glval) = FunctionAddress[~String] : +# 35| v35_3047(void) = Call[~String] : func:r35_3046, this:r35_3045 +# 35| mu35_3048(unknown) = ^CallSideEffect : ~m? +# 35| v35_3049(void) = ^IndirectReadSideEffect[-1] : &:r35_3045, ~m? +# 35| mu35_3050(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3045 +# 35| r35_3051(bool) = Constant[0] : +# 35| v35_3052(void) = ConditionalBranch : r35_3051 #-----| False -> Block 218 #-----| True -> Block 1026 -# 673| Block 218 -# 673| r673_1(glval) = VariableAddress[x218] : -# 673| mu673_2(String) = Uninitialized[x218] : &:r673_1 -# 673| r673_3(glval) = FunctionAddress[String] : -# 673| v673_4(void) = Call[String] : func:r673_3, this:r673_1 -# 673| mu673_5(unknown) = ^CallSideEffect : ~m? -# 673| mu673_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r673_1 -# 674| r674_1(glval) = VariableAddress[x218] : -# 674| r674_2(glval) = FunctionAddress[~String] : -# 674| v674_3(void) = Call[~String] : func:r674_2, this:r674_1 -# 674| mu674_4(unknown) = ^CallSideEffect : ~m? -# 674| v674_5(void) = ^IndirectReadSideEffect[-1] : &:r674_1, ~m? -# 674| mu674_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r674_1 -# 674| r674_7(bool) = Constant[0] : -# 674| v674_8(void) = ConditionalBranch : r674_7 +# 35| Block 218 +# 35| r35_3053(glval) = VariableAddress[x218] : +# 35| mu35_3054(String) = Uninitialized[x218] : &:r35_3053 +# 35| r35_3055(glval) = FunctionAddress[String] : +# 35| v35_3056(void) = Call[String] : func:r35_3055, this:r35_3053 +# 35| mu35_3057(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3058(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3053 +# 35| r35_3059(glval) = VariableAddress[x218] : +# 35| r35_3060(glval) = FunctionAddress[~String] : +# 35| v35_3061(void) = Call[~String] : func:r35_3060, this:r35_3059 +# 35| mu35_3062(unknown) = ^CallSideEffect : ~m? +# 35| v35_3063(void) = ^IndirectReadSideEffect[-1] : &:r35_3059, ~m? +# 35| mu35_3064(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3059 +# 35| r35_3065(bool) = Constant[0] : +# 35| v35_3066(void) = ConditionalBranch : r35_3065 #-----| False -> Block 219 #-----| True -> Block 1026 -# 676| Block 219 -# 676| r676_1(glval) = VariableAddress[x219] : -# 676| mu676_2(String) = Uninitialized[x219] : &:r676_1 -# 676| r676_3(glval) = FunctionAddress[String] : -# 676| v676_4(void) = Call[String] : func:r676_3, this:r676_1 -# 676| mu676_5(unknown) = ^CallSideEffect : ~m? -# 676| mu676_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r676_1 -# 677| r677_1(glval) = VariableAddress[x219] : -# 677| r677_2(glval) = FunctionAddress[~String] : -# 677| v677_3(void) = Call[~String] : func:r677_2, this:r677_1 -# 677| mu677_4(unknown) = ^CallSideEffect : ~m? -# 677| v677_5(void) = ^IndirectReadSideEffect[-1] : &:r677_1, ~m? -# 677| mu677_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r677_1 -# 677| r677_7(bool) = Constant[0] : -# 677| v677_8(void) = ConditionalBranch : r677_7 +# 35| Block 219 +# 35| r35_3067(glval) = VariableAddress[x219] : +# 35| mu35_3068(String) = Uninitialized[x219] : &:r35_3067 +# 35| r35_3069(glval) = FunctionAddress[String] : +# 35| v35_3070(void) = Call[String] : func:r35_3069, this:r35_3067 +# 35| mu35_3071(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3072(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3067 +# 35| r35_3073(glval) = VariableAddress[x219] : +# 35| r35_3074(glval) = FunctionAddress[~String] : +# 35| v35_3075(void) = Call[~String] : func:r35_3074, this:r35_3073 +# 35| mu35_3076(unknown) = ^CallSideEffect : ~m? +# 35| v35_3077(void) = ^IndirectReadSideEffect[-1] : &:r35_3073, ~m? +# 35| mu35_3078(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3073 +# 35| r35_3079(bool) = Constant[0] : +# 35| v35_3080(void) = ConditionalBranch : r35_3079 #-----| False -> Block 220 #-----| True -> Block 1026 -# 679| Block 220 -# 679| r679_1(glval) = VariableAddress[x220] : -# 679| mu679_2(String) = Uninitialized[x220] : &:r679_1 -# 679| r679_3(glval) = FunctionAddress[String] : -# 679| v679_4(void) = Call[String] : func:r679_3, this:r679_1 -# 679| mu679_5(unknown) = ^CallSideEffect : ~m? -# 679| mu679_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r679_1 -# 680| r680_1(glval) = VariableAddress[x220] : -# 680| r680_2(glval) = FunctionAddress[~String] : -# 680| v680_3(void) = Call[~String] : func:r680_2, this:r680_1 -# 680| mu680_4(unknown) = ^CallSideEffect : ~m? -# 680| v680_5(void) = ^IndirectReadSideEffect[-1] : &:r680_1, ~m? -# 680| mu680_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r680_1 -# 680| r680_7(bool) = Constant[0] : -# 680| v680_8(void) = ConditionalBranch : r680_7 +# 35| Block 220 +# 35| r35_3081(glval) = VariableAddress[x220] : +# 35| mu35_3082(String) = Uninitialized[x220] : &:r35_3081 +# 35| r35_3083(glval) = FunctionAddress[String] : +# 35| v35_3084(void) = Call[String] : func:r35_3083, this:r35_3081 +# 35| mu35_3085(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3086(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3081 +# 35| r35_3087(glval) = VariableAddress[x220] : +# 35| r35_3088(glval) = FunctionAddress[~String] : +# 35| v35_3089(void) = Call[~String] : func:r35_3088, this:r35_3087 +# 35| mu35_3090(unknown) = ^CallSideEffect : ~m? +# 35| v35_3091(void) = ^IndirectReadSideEffect[-1] : &:r35_3087, ~m? +# 35| mu35_3092(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3087 +# 35| r35_3093(bool) = Constant[0] : +# 35| v35_3094(void) = ConditionalBranch : r35_3093 #-----| False -> Block 221 #-----| True -> Block 1026 -# 682| Block 221 -# 682| r682_1(glval) = VariableAddress[x221] : -# 682| mu682_2(String) = Uninitialized[x221] : &:r682_1 -# 682| r682_3(glval) = FunctionAddress[String] : -# 682| v682_4(void) = Call[String] : func:r682_3, this:r682_1 -# 682| mu682_5(unknown) = ^CallSideEffect : ~m? -# 682| mu682_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r682_1 -# 683| r683_1(glval) = VariableAddress[x221] : -# 683| r683_2(glval) = FunctionAddress[~String] : -# 683| v683_3(void) = Call[~String] : func:r683_2, this:r683_1 -# 683| mu683_4(unknown) = ^CallSideEffect : ~m? -# 683| v683_5(void) = ^IndirectReadSideEffect[-1] : &:r683_1, ~m? -# 683| mu683_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r683_1 -# 683| r683_7(bool) = Constant[0] : -# 683| v683_8(void) = ConditionalBranch : r683_7 +# 35| Block 221 +# 35| r35_3095(glval) = VariableAddress[x221] : +# 35| mu35_3096(String) = Uninitialized[x221] : &:r35_3095 +# 35| r35_3097(glval) = FunctionAddress[String] : +# 35| v35_3098(void) = Call[String] : func:r35_3097, this:r35_3095 +# 35| mu35_3099(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3100(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3095 +# 35| r35_3101(glval) = VariableAddress[x221] : +# 35| r35_3102(glval) = FunctionAddress[~String] : +# 35| v35_3103(void) = Call[~String] : func:r35_3102, this:r35_3101 +# 35| mu35_3104(unknown) = ^CallSideEffect : ~m? +# 35| v35_3105(void) = ^IndirectReadSideEffect[-1] : &:r35_3101, ~m? +# 35| mu35_3106(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3101 +# 35| r35_3107(bool) = Constant[0] : +# 35| v35_3108(void) = ConditionalBranch : r35_3107 #-----| False -> Block 222 #-----| True -> Block 1026 -# 685| Block 222 -# 685| r685_1(glval) = VariableAddress[x222] : -# 685| mu685_2(String) = Uninitialized[x222] : &:r685_1 -# 685| r685_3(glval) = FunctionAddress[String] : -# 685| v685_4(void) = Call[String] : func:r685_3, this:r685_1 -# 685| mu685_5(unknown) = ^CallSideEffect : ~m? -# 685| mu685_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r685_1 -# 686| r686_1(glval) = VariableAddress[x222] : -# 686| r686_2(glval) = FunctionAddress[~String] : -# 686| v686_3(void) = Call[~String] : func:r686_2, this:r686_1 -# 686| mu686_4(unknown) = ^CallSideEffect : ~m? -# 686| v686_5(void) = ^IndirectReadSideEffect[-1] : &:r686_1, ~m? -# 686| mu686_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r686_1 -# 686| r686_7(bool) = Constant[0] : -# 686| v686_8(void) = ConditionalBranch : r686_7 +# 35| Block 222 +# 35| r35_3109(glval) = VariableAddress[x222] : +# 35| mu35_3110(String) = Uninitialized[x222] : &:r35_3109 +# 35| r35_3111(glval) = FunctionAddress[String] : +# 35| v35_3112(void) = Call[String] : func:r35_3111, this:r35_3109 +# 35| mu35_3113(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3114(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3109 +# 35| r35_3115(glval) = VariableAddress[x222] : +# 35| r35_3116(glval) = FunctionAddress[~String] : +# 35| v35_3117(void) = Call[~String] : func:r35_3116, this:r35_3115 +# 35| mu35_3118(unknown) = ^CallSideEffect : ~m? +# 35| v35_3119(void) = ^IndirectReadSideEffect[-1] : &:r35_3115, ~m? +# 35| mu35_3120(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3115 +# 35| r35_3121(bool) = Constant[0] : +# 35| v35_3122(void) = ConditionalBranch : r35_3121 #-----| False -> Block 223 #-----| True -> Block 1026 -# 688| Block 223 -# 688| r688_1(glval) = VariableAddress[x223] : -# 688| mu688_2(String) = Uninitialized[x223] : &:r688_1 -# 688| r688_3(glval) = FunctionAddress[String] : -# 688| v688_4(void) = Call[String] : func:r688_3, this:r688_1 -# 688| mu688_5(unknown) = ^CallSideEffect : ~m? -# 688| mu688_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r688_1 -# 689| r689_1(glval) = VariableAddress[x223] : -# 689| r689_2(glval) = FunctionAddress[~String] : -# 689| v689_3(void) = Call[~String] : func:r689_2, this:r689_1 -# 689| mu689_4(unknown) = ^CallSideEffect : ~m? -# 689| v689_5(void) = ^IndirectReadSideEffect[-1] : &:r689_1, ~m? -# 689| mu689_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r689_1 -# 689| r689_7(bool) = Constant[0] : -# 689| v689_8(void) = ConditionalBranch : r689_7 +# 35| Block 223 +# 35| r35_3123(glval) = VariableAddress[x223] : +# 35| mu35_3124(String) = Uninitialized[x223] : &:r35_3123 +# 35| r35_3125(glval) = FunctionAddress[String] : +# 35| v35_3126(void) = Call[String] : func:r35_3125, this:r35_3123 +# 35| mu35_3127(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3128(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3123 +# 35| r35_3129(glval) = VariableAddress[x223] : +# 35| r35_3130(glval) = FunctionAddress[~String] : +# 35| v35_3131(void) = Call[~String] : func:r35_3130, this:r35_3129 +# 35| mu35_3132(unknown) = ^CallSideEffect : ~m? +# 35| v35_3133(void) = ^IndirectReadSideEffect[-1] : &:r35_3129, ~m? +# 35| mu35_3134(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3129 +# 35| r35_3135(bool) = Constant[0] : +# 35| v35_3136(void) = ConditionalBranch : r35_3135 #-----| False -> Block 224 #-----| True -> Block 1026 -# 691| Block 224 -# 691| r691_1(glval) = VariableAddress[x224] : -# 691| mu691_2(String) = Uninitialized[x224] : &:r691_1 -# 691| r691_3(glval) = FunctionAddress[String] : -# 691| v691_4(void) = Call[String] : func:r691_3, this:r691_1 -# 691| mu691_5(unknown) = ^CallSideEffect : ~m? -# 691| mu691_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r691_1 -# 692| r692_1(glval) = VariableAddress[x224] : -# 692| r692_2(glval) = FunctionAddress[~String] : -# 692| v692_3(void) = Call[~String] : func:r692_2, this:r692_1 -# 692| mu692_4(unknown) = ^CallSideEffect : ~m? -# 692| v692_5(void) = ^IndirectReadSideEffect[-1] : &:r692_1, ~m? -# 692| mu692_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r692_1 -# 692| r692_7(bool) = Constant[0] : -# 692| v692_8(void) = ConditionalBranch : r692_7 +# 35| Block 224 +# 35| r35_3137(glval) = VariableAddress[x224] : +# 35| mu35_3138(String) = Uninitialized[x224] : &:r35_3137 +# 35| r35_3139(glval) = FunctionAddress[String] : +# 35| v35_3140(void) = Call[String] : func:r35_3139, this:r35_3137 +# 35| mu35_3141(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3142(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3137 +# 35| r35_3143(glval) = VariableAddress[x224] : +# 35| r35_3144(glval) = FunctionAddress[~String] : +# 35| v35_3145(void) = Call[~String] : func:r35_3144, this:r35_3143 +# 35| mu35_3146(unknown) = ^CallSideEffect : ~m? +# 35| v35_3147(void) = ^IndirectReadSideEffect[-1] : &:r35_3143, ~m? +# 35| mu35_3148(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3143 +# 35| r35_3149(bool) = Constant[0] : +# 35| v35_3150(void) = ConditionalBranch : r35_3149 #-----| False -> Block 225 #-----| True -> Block 1026 -# 694| Block 225 -# 694| r694_1(glval) = VariableAddress[x225] : -# 694| mu694_2(String) = Uninitialized[x225] : &:r694_1 -# 694| r694_3(glval) = FunctionAddress[String] : -# 694| v694_4(void) = Call[String] : func:r694_3, this:r694_1 -# 694| mu694_5(unknown) = ^CallSideEffect : ~m? -# 694| mu694_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r694_1 -# 695| r695_1(glval) = VariableAddress[x225] : -# 695| r695_2(glval) = FunctionAddress[~String] : -# 695| v695_3(void) = Call[~String] : func:r695_2, this:r695_1 -# 695| mu695_4(unknown) = ^CallSideEffect : ~m? -# 695| v695_5(void) = ^IndirectReadSideEffect[-1] : &:r695_1, ~m? -# 695| mu695_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r695_1 -# 695| r695_7(bool) = Constant[0] : -# 695| v695_8(void) = ConditionalBranch : r695_7 +# 35| Block 225 +# 35| r35_3151(glval) = VariableAddress[x225] : +# 35| mu35_3152(String) = Uninitialized[x225] : &:r35_3151 +# 35| r35_3153(glval) = FunctionAddress[String] : +# 35| v35_3154(void) = Call[String] : func:r35_3153, this:r35_3151 +# 35| mu35_3155(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3156(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3151 +# 35| r35_3157(glval) = VariableAddress[x225] : +# 35| r35_3158(glval) = FunctionAddress[~String] : +# 35| v35_3159(void) = Call[~String] : func:r35_3158, this:r35_3157 +# 35| mu35_3160(unknown) = ^CallSideEffect : ~m? +# 35| v35_3161(void) = ^IndirectReadSideEffect[-1] : &:r35_3157, ~m? +# 35| mu35_3162(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3157 +# 35| r35_3163(bool) = Constant[0] : +# 35| v35_3164(void) = ConditionalBranch : r35_3163 #-----| False -> Block 226 #-----| True -> Block 1026 -# 697| Block 226 -# 697| r697_1(glval) = VariableAddress[x226] : -# 697| mu697_2(String) = Uninitialized[x226] : &:r697_1 -# 697| r697_3(glval) = FunctionAddress[String] : -# 697| v697_4(void) = Call[String] : func:r697_3, this:r697_1 -# 697| mu697_5(unknown) = ^CallSideEffect : ~m? -# 697| mu697_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r697_1 -# 698| r698_1(glval) = VariableAddress[x226] : -# 698| r698_2(glval) = FunctionAddress[~String] : -# 698| v698_3(void) = Call[~String] : func:r698_2, this:r698_1 -# 698| mu698_4(unknown) = ^CallSideEffect : ~m? -# 698| v698_5(void) = ^IndirectReadSideEffect[-1] : &:r698_1, ~m? -# 698| mu698_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r698_1 -# 698| r698_7(bool) = Constant[0] : -# 698| v698_8(void) = ConditionalBranch : r698_7 +# 35| Block 226 +# 35| r35_3165(glval) = VariableAddress[x226] : +# 35| mu35_3166(String) = Uninitialized[x226] : &:r35_3165 +# 35| r35_3167(glval) = FunctionAddress[String] : +# 35| v35_3168(void) = Call[String] : func:r35_3167, this:r35_3165 +# 35| mu35_3169(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3170(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3165 +# 35| r35_3171(glval) = VariableAddress[x226] : +# 35| r35_3172(glval) = FunctionAddress[~String] : +# 35| v35_3173(void) = Call[~String] : func:r35_3172, this:r35_3171 +# 35| mu35_3174(unknown) = ^CallSideEffect : ~m? +# 35| v35_3175(void) = ^IndirectReadSideEffect[-1] : &:r35_3171, ~m? +# 35| mu35_3176(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3171 +# 35| r35_3177(bool) = Constant[0] : +# 35| v35_3178(void) = ConditionalBranch : r35_3177 #-----| False -> Block 227 #-----| True -> Block 1026 -# 700| Block 227 -# 700| r700_1(glval) = VariableAddress[x227] : -# 700| mu700_2(String) = Uninitialized[x227] : &:r700_1 -# 700| r700_3(glval) = FunctionAddress[String] : -# 700| v700_4(void) = Call[String] : func:r700_3, this:r700_1 -# 700| mu700_5(unknown) = ^CallSideEffect : ~m? -# 700| mu700_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r700_1 -# 701| r701_1(glval) = VariableAddress[x227] : -# 701| r701_2(glval) = FunctionAddress[~String] : -# 701| v701_3(void) = Call[~String] : func:r701_2, this:r701_1 -# 701| mu701_4(unknown) = ^CallSideEffect : ~m? -# 701| v701_5(void) = ^IndirectReadSideEffect[-1] : &:r701_1, ~m? -# 701| mu701_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r701_1 -# 701| r701_7(bool) = Constant[0] : -# 701| v701_8(void) = ConditionalBranch : r701_7 +# 35| Block 227 +# 35| r35_3179(glval) = VariableAddress[x227] : +# 35| mu35_3180(String) = Uninitialized[x227] : &:r35_3179 +# 35| r35_3181(glval) = FunctionAddress[String] : +# 35| v35_3182(void) = Call[String] : func:r35_3181, this:r35_3179 +# 35| mu35_3183(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3184(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3179 +# 35| r35_3185(glval) = VariableAddress[x227] : +# 35| r35_3186(glval) = FunctionAddress[~String] : +# 35| v35_3187(void) = Call[~String] : func:r35_3186, this:r35_3185 +# 35| mu35_3188(unknown) = ^CallSideEffect : ~m? +# 35| v35_3189(void) = ^IndirectReadSideEffect[-1] : &:r35_3185, ~m? +# 35| mu35_3190(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3185 +# 35| r35_3191(bool) = Constant[0] : +# 35| v35_3192(void) = ConditionalBranch : r35_3191 #-----| False -> Block 228 #-----| True -> Block 1026 -# 703| Block 228 -# 703| r703_1(glval) = VariableAddress[x228] : -# 703| mu703_2(String) = Uninitialized[x228] : &:r703_1 -# 703| r703_3(glval) = FunctionAddress[String] : -# 703| v703_4(void) = Call[String] : func:r703_3, this:r703_1 -# 703| mu703_5(unknown) = ^CallSideEffect : ~m? -# 703| mu703_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r703_1 -# 704| r704_1(glval) = VariableAddress[x228] : -# 704| r704_2(glval) = FunctionAddress[~String] : -# 704| v704_3(void) = Call[~String] : func:r704_2, this:r704_1 -# 704| mu704_4(unknown) = ^CallSideEffect : ~m? -# 704| v704_5(void) = ^IndirectReadSideEffect[-1] : &:r704_1, ~m? -# 704| mu704_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r704_1 -# 704| r704_7(bool) = Constant[0] : -# 704| v704_8(void) = ConditionalBranch : r704_7 +# 35| Block 228 +# 35| r35_3193(glval) = VariableAddress[x228] : +# 35| mu35_3194(String) = Uninitialized[x228] : &:r35_3193 +# 35| r35_3195(glval) = FunctionAddress[String] : +# 35| v35_3196(void) = Call[String] : func:r35_3195, this:r35_3193 +# 35| mu35_3197(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3198(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3193 +# 35| r35_3199(glval) = VariableAddress[x228] : +# 35| r35_3200(glval) = FunctionAddress[~String] : +# 35| v35_3201(void) = Call[~String] : func:r35_3200, this:r35_3199 +# 35| mu35_3202(unknown) = ^CallSideEffect : ~m? +# 35| v35_3203(void) = ^IndirectReadSideEffect[-1] : &:r35_3199, ~m? +# 35| mu35_3204(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3199 +# 35| r35_3205(bool) = Constant[0] : +# 35| v35_3206(void) = ConditionalBranch : r35_3205 #-----| False -> Block 229 #-----| True -> Block 1026 -# 706| Block 229 -# 706| r706_1(glval) = VariableAddress[x229] : -# 706| mu706_2(String) = Uninitialized[x229] : &:r706_1 -# 706| r706_3(glval) = FunctionAddress[String] : -# 706| v706_4(void) = Call[String] : func:r706_3, this:r706_1 -# 706| mu706_5(unknown) = ^CallSideEffect : ~m? -# 706| mu706_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r706_1 -# 707| r707_1(glval) = VariableAddress[x229] : -# 707| r707_2(glval) = FunctionAddress[~String] : -# 707| v707_3(void) = Call[~String] : func:r707_2, this:r707_1 -# 707| mu707_4(unknown) = ^CallSideEffect : ~m? -# 707| v707_5(void) = ^IndirectReadSideEffect[-1] : &:r707_1, ~m? -# 707| mu707_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r707_1 -# 707| r707_7(bool) = Constant[0] : -# 707| v707_8(void) = ConditionalBranch : r707_7 +# 35| Block 229 +# 35| r35_3207(glval) = VariableAddress[x229] : +# 35| mu35_3208(String) = Uninitialized[x229] : &:r35_3207 +# 35| r35_3209(glval) = FunctionAddress[String] : +# 35| v35_3210(void) = Call[String] : func:r35_3209, this:r35_3207 +# 35| mu35_3211(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3212(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3207 +# 35| r35_3213(glval) = VariableAddress[x229] : +# 35| r35_3214(glval) = FunctionAddress[~String] : +# 35| v35_3215(void) = Call[~String] : func:r35_3214, this:r35_3213 +# 35| mu35_3216(unknown) = ^CallSideEffect : ~m? +# 35| v35_3217(void) = ^IndirectReadSideEffect[-1] : &:r35_3213, ~m? +# 35| mu35_3218(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3213 +# 35| r35_3219(bool) = Constant[0] : +# 35| v35_3220(void) = ConditionalBranch : r35_3219 #-----| False -> Block 230 #-----| True -> Block 1026 -# 709| Block 230 -# 709| r709_1(glval) = VariableAddress[x230] : -# 709| mu709_2(String) = Uninitialized[x230] : &:r709_1 -# 709| r709_3(glval) = FunctionAddress[String] : -# 709| v709_4(void) = Call[String] : func:r709_3, this:r709_1 -# 709| mu709_5(unknown) = ^CallSideEffect : ~m? -# 709| mu709_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r709_1 -# 710| r710_1(glval) = VariableAddress[x230] : -# 710| r710_2(glval) = FunctionAddress[~String] : -# 710| v710_3(void) = Call[~String] : func:r710_2, this:r710_1 -# 710| mu710_4(unknown) = ^CallSideEffect : ~m? -# 710| v710_5(void) = ^IndirectReadSideEffect[-1] : &:r710_1, ~m? -# 710| mu710_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r710_1 -# 710| r710_7(bool) = Constant[0] : -# 710| v710_8(void) = ConditionalBranch : r710_7 +# 35| Block 230 +# 35| r35_3221(glval) = VariableAddress[x230] : +# 35| mu35_3222(String) = Uninitialized[x230] : &:r35_3221 +# 35| r35_3223(glval) = FunctionAddress[String] : +# 35| v35_3224(void) = Call[String] : func:r35_3223, this:r35_3221 +# 35| mu35_3225(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3226(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3221 +# 35| r35_3227(glval) = VariableAddress[x230] : +# 35| r35_3228(glval) = FunctionAddress[~String] : +# 35| v35_3229(void) = Call[~String] : func:r35_3228, this:r35_3227 +# 35| mu35_3230(unknown) = ^CallSideEffect : ~m? +# 35| v35_3231(void) = ^IndirectReadSideEffect[-1] : &:r35_3227, ~m? +# 35| mu35_3232(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3227 +# 35| r35_3233(bool) = Constant[0] : +# 35| v35_3234(void) = ConditionalBranch : r35_3233 #-----| False -> Block 231 #-----| True -> Block 1026 -# 712| Block 231 -# 712| r712_1(glval) = VariableAddress[x231] : -# 712| mu712_2(String) = Uninitialized[x231] : &:r712_1 -# 712| r712_3(glval) = FunctionAddress[String] : -# 712| v712_4(void) = Call[String] : func:r712_3, this:r712_1 -# 712| mu712_5(unknown) = ^CallSideEffect : ~m? -# 712| mu712_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r712_1 -# 713| r713_1(glval) = VariableAddress[x231] : -# 713| r713_2(glval) = FunctionAddress[~String] : -# 713| v713_3(void) = Call[~String] : func:r713_2, this:r713_1 -# 713| mu713_4(unknown) = ^CallSideEffect : ~m? -# 713| v713_5(void) = ^IndirectReadSideEffect[-1] : &:r713_1, ~m? -# 713| mu713_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r713_1 -# 713| r713_7(bool) = Constant[0] : -# 713| v713_8(void) = ConditionalBranch : r713_7 +# 35| Block 231 +# 35| r35_3235(glval) = VariableAddress[x231] : +# 35| mu35_3236(String) = Uninitialized[x231] : &:r35_3235 +# 35| r35_3237(glval) = FunctionAddress[String] : +# 35| v35_3238(void) = Call[String] : func:r35_3237, this:r35_3235 +# 35| mu35_3239(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3240(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3235 +# 35| r35_3241(glval) = VariableAddress[x231] : +# 35| r35_3242(glval) = FunctionAddress[~String] : +# 35| v35_3243(void) = Call[~String] : func:r35_3242, this:r35_3241 +# 35| mu35_3244(unknown) = ^CallSideEffect : ~m? +# 35| v35_3245(void) = ^IndirectReadSideEffect[-1] : &:r35_3241, ~m? +# 35| mu35_3246(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3241 +# 35| r35_3247(bool) = Constant[0] : +# 35| v35_3248(void) = ConditionalBranch : r35_3247 #-----| False -> Block 232 #-----| True -> Block 1026 -# 715| Block 232 -# 715| r715_1(glval) = VariableAddress[x232] : -# 715| mu715_2(String) = Uninitialized[x232] : &:r715_1 -# 715| r715_3(glval) = FunctionAddress[String] : -# 715| v715_4(void) = Call[String] : func:r715_3, this:r715_1 -# 715| mu715_5(unknown) = ^CallSideEffect : ~m? -# 715| mu715_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r715_1 -# 716| r716_1(glval) = VariableAddress[x232] : -# 716| r716_2(glval) = FunctionAddress[~String] : -# 716| v716_3(void) = Call[~String] : func:r716_2, this:r716_1 -# 716| mu716_4(unknown) = ^CallSideEffect : ~m? -# 716| v716_5(void) = ^IndirectReadSideEffect[-1] : &:r716_1, ~m? -# 716| mu716_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r716_1 -# 716| r716_7(bool) = Constant[0] : -# 716| v716_8(void) = ConditionalBranch : r716_7 +# 35| Block 232 +# 35| r35_3249(glval) = VariableAddress[x232] : +# 35| mu35_3250(String) = Uninitialized[x232] : &:r35_3249 +# 35| r35_3251(glval) = FunctionAddress[String] : +# 35| v35_3252(void) = Call[String] : func:r35_3251, this:r35_3249 +# 35| mu35_3253(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3254(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3249 +# 35| r35_3255(glval) = VariableAddress[x232] : +# 35| r35_3256(glval) = FunctionAddress[~String] : +# 35| v35_3257(void) = Call[~String] : func:r35_3256, this:r35_3255 +# 35| mu35_3258(unknown) = ^CallSideEffect : ~m? +# 35| v35_3259(void) = ^IndirectReadSideEffect[-1] : &:r35_3255, ~m? +# 35| mu35_3260(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3255 +# 35| r35_3261(bool) = Constant[0] : +# 35| v35_3262(void) = ConditionalBranch : r35_3261 #-----| False -> Block 233 #-----| True -> Block 1026 -# 718| Block 233 -# 718| r718_1(glval) = VariableAddress[x233] : -# 718| mu718_2(String) = Uninitialized[x233] : &:r718_1 -# 718| r718_3(glval) = FunctionAddress[String] : -# 718| v718_4(void) = Call[String] : func:r718_3, this:r718_1 -# 718| mu718_5(unknown) = ^CallSideEffect : ~m? -# 718| mu718_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r718_1 -# 719| r719_1(glval) = VariableAddress[x233] : -# 719| r719_2(glval) = FunctionAddress[~String] : -# 719| v719_3(void) = Call[~String] : func:r719_2, this:r719_1 -# 719| mu719_4(unknown) = ^CallSideEffect : ~m? -# 719| v719_5(void) = ^IndirectReadSideEffect[-1] : &:r719_1, ~m? -# 719| mu719_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r719_1 -# 719| r719_7(bool) = Constant[0] : -# 719| v719_8(void) = ConditionalBranch : r719_7 +# 35| Block 233 +# 35| r35_3263(glval) = VariableAddress[x233] : +# 35| mu35_3264(String) = Uninitialized[x233] : &:r35_3263 +# 35| r35_3265(glval) = FunctionAddress[String] : +# 35| v35_3266(void) = Call[String] : func:r35_3265, this:r35_3263 +# 35| mu35_3267(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3268(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3263 +# 35| r35_3269(glval) = VariableAddress[x233] : +# 35| r35_3270(glval) = FunctionAddress[~String] : +# 35| v35_3271(void) = Call[~String] : func:r35_3270, this:r35_3269 +# 35| mu35_3272(unknown) = ^CallSideEffect : ~m? +# 35| v35_3273(void) = ^IndirectReadSideEffect[-1] : &:r35_3269, ~m? +# 35| mu35_3274(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3269 +# 35| r35_3275(bool) = Constant[0] : +# 35| v35_3276(void) = ConditionalBranch : r35_3275 #-----| False -> Block 234 #-----| True -> Block 1026 -# 721| Block 234 -# 721| r721_1(glval) = VariableAddress[x234] : -# 721| mu721_2(String) = Uninitialized[x234] : &:r721_1 -# 721| r721_3(glval) = FunctionAddress[String] : -# 721| v721_4(void) = Call[String] : func:r721_3, this:r721_1 -# 721| mu721_5(unknown) = ^CallSideEffect : ~m? -# 721| mu721_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r721_1 -# 722| r722_1(glval) = VariableAddress[x234] : -# 722| r722_2(glval) = FunctionAddress[~String] : -# 722| v722_3(void) = Call[~String] : func:r722_2, this:r722_1 -# 722| mu722_4(unknown) = ^CallSideEffect : ~m? -# 722| v722_5(void) = ^IndirectReadSideEffect[-1] : &:r722_1, ~m? -# 722| mu722_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r722_1 -# 722| r722_7(bool) = Constant[0] : -# 722| v722_8(void) = ConditionalBranch : r722_7 +# 35| Block 234 +# 35| r35_3277(glval) = VariableAddress[x234] : +# 35| mu35_3278(String) = Uninitialized[x234] : &:r35_3277 +# 35| r35_3279(glval) = FunctionAddress[String] : +# 35| v35_3280(void) = Call[String] : func:r35_3279, this:r35_3277 +# 35| mu35_3281(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3282(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3277 +# 35| r35_3283(glval) = VariableAddress[x234] : +# 35| r35_3284(glval) = FunctionAddress[~String] : +# 35| v35_3285(void) = Call[~String] : func:r35_3284, this:r35_3283 +# 35| mu35_3286(unknown) = ^CallSideEffect : ~m? +# 35| v35_3287(void) = ^IndirectReadSideEffect[-1] : &:r35_3283, ~m? +# 35| mu35_3288(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3283 +# 35| r35_3289(bool) = Constant[0] : +# 35| v35_3290(void) = ConditionalBranch : r35_3289 #-----| False -> Block 235 #-----| True -> Block 1026 -# 724| Block 235 -# 724| r724_1(glval) = VariableAddress[x235] : -# 724| mu724_2(String) = Uninitialized[x235] : &:r724_1 -# 724| r724_3(glval) = FunctionAddress[String] : -# 724| v724_4(void) = Call[String] : func:r724_3, this:r724_1 -# 724| mu724_5(unknown) = ^CallSideEffect : ~m? -# 724| mu724_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r724_1 -# 725| r725_1(glval) = VariableAddress[x235] : -# 725| r725_2(glval) = FunctionAddress[~String] : -# 725| v725_3(void) = Call[~String] : func:r725_2, this:r725_1 -# 725| mu725_4(unknown) = ^CallSideEffect : ~m? -# 725| v725_5(void) = ^IndirectReadSideEffect[-1] : &:r725_1, ~m? -# 725| mu725_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r725_1 -# 725| r725_7(bool) = Constant[0] : -# 725| v725_8(void) = ConditionalBranch : r725_7 +# 35| Block 235 +# 35| r35_3291(glval) = VariableAddress[x235] : +# 35| mu35_3292(String) = Uninitialized[x235] : &:r35_3291 +# 35| r35_3293(glval) = FunctionAddress[String] : +# 35| v35_3294(void) = Call[String] : func:r35_3293, this:r35_3291 +# 35| mu35_3295(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3296(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3291 +# 35| r35_3297(glval) = VariableAddress[x235] : +# 35| r35_3298(glval) = FunctionAddress[~String] : +# 35| v35_3299(void) = Call[~String] : func:r35_3298, this:r35_3297 +# 35| mu35_3300(unknown) = ^CallSideEffect : ~m? +# 35| v35_3301(void) = ^IndirectReadSideEffect[-1] : &:r35_3297, ~m? +# 35| mu35_3302(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3297 +# 35| r35_3303(bool) = Constant[0] : +# 35| v35_3304(void) = ConditionalBranch : r35_3303 #-----| False -> Block 236 #-----| True -> Block 1026 -# 727| Block 236 -# 727| r727_1(glval) = VariableAddress[x236] : -# 727| mu727_2(String) = Uninitialized[x236] : &:r727_1 -# 727| r727_3(glval) = FunctionAddress[String] : -# 727| v727_4(void) = Call[String] : func:r727_3, this:r727_1 -# 727| mu727_5(unknown) = ^CallSideEffect : ~m? -# 727| mu727_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r727_1 -# 728| r728_1(glval) = VariableAddress[x236] : -# 728| r728_2(glval) = FunctionAddress[~String] : -# 728| v728_3(void) = Call[~String] : func:r728_2, this:r728_1 -# 728| mu728_4(unknown) = ^CallSideEffect : ~m? -# 728| v728_5(void) = ^IndirectReadSideEffect[-1] : &:r728_1, ~m? -# 728| mu728_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r728_1 -# 728| r728_7(bool) = Constant[0] : -# 728| v728_8(void) = ConditionalBranch : r728_7 +# 35| Block 236 +# 35| r35_3305(glval) = VariableAddress[x236] : +# 35| mu35_3306(String) = Uninitialized[x236] : &:r35_3305 +# 35| r35_3307(glval) = FunctionAddress[String] : +# 35| v35_3308(void) = Call[String] : func:r35_3307, this:r35_3305 +# 35| mu35_3309(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3310(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3305 +# 35| r35_3311(glval) = VariableAddress[x236] : +# 35| r35_3312(glval) = FunctionAddress[~String] : +# 35| v35_3313(void) = Call[~String] : func:r35_3312, this:r35_3311 +# 35| mu35_3314(unknown) = ^CallSideEffect : ~m? +# 35| v35_3315(void) = ^IndirectReadSideEffect[-1] : &:r35_3311, ~m? +# 35| mu35_3316(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3311 +# 35| r35_3317(bool) = Constant[0] : +# 35| v35_3318(void) = ConditionalBranch : r35_3317 #-----| False -> Block 237 #-----| True -> Block 1026 -# 730| Block 237 -# 730| r730_1(glval) = VariableAddress[x237] : -# 730| mu730_2(String) = Uninitialized[x237] : &:r730_1 -# 730| r730_3(glval) = FunctionAddress[String] : -# 730| v730_4(void) = Call[String] : func:r730_3, this:r730_1 -# 730| mu730_5(unknown) = ^CallSideEffect : ~m? -# 730| mu730_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r730_1 -# 731| r731_1(glval) = VariableAddress[x237] : -# 731| r731_2(glval) = FunctionAddress[~String] : -# 731| v731_3(void) = Call[~String] : func:r731_2, this:r731_1 -# 731| mu731_4(unknown) = ^CallSideEffect : ~m? -# 731| v731_5(void) = ^IndirectReadSideEffect[-1] : &:r731_1, ~m? -# 731| mu731_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r731_1 -# 731| r731_7(bool) = Constant[0] : -# 731| v731_8(void) = ConditionalBranch : r731_7 +# 35| Block 237 +# 35| r35_3319(glval) = VariableAddress[x237] : +# 35| mu35_3320(String) = Uninitialized[x237] : &:r35_3319 +# 35| r35_3321(glval) = FunctionAddress[String] : +# 35| v35_3322(void) = Call[String] : func:r35_3321, this:r35_3319 +# 35| mu35_3323(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3324(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3319 +# 35| r35_3325(glval) = VariableAddress[x237] : +# 35| r35_3326(glval) = FunctionAddress[~String] : +# 35| v35_3327(void) = Call[~String] : func:r35_3326, this:r35_3325 +# 35| mu35_3328(unknown) = ^CallSideEffect : ~m? +# 35| v35_3329(void) = ^IndirectReadSideEffect[-1] : &:r35_3325, ~m? +# 35| mu35_3330(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3325 +# 35| r35_3331(bool) = Constant[0] : +# 35| v35_3332(void) = ConditionalBranch : r35_3331 #-----| False -> Block 238 #-----| True -> Block 1026 -# 733| Block 238 -# 733| r733_1(glval) = VariableAddress[x238] : -# 733| mu733_2(String) = Uninitialized[x238] : &:r733_1 -# 733| r733_3(glval) = FunctionAddress[String] : -# 733| v733_4(void) = Call[String] : func:r733_3, this:r733_1 -# 733| mu733_5(unknown) = ^CallSideEffect : ~m? -# 733| mu733_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r733_1 -# 734| r734_1(glval) = VariableAddress[x238] : -# 734| r734_2(glval) = FunctionAddress[~String] : -# 734| v734_3(void) = Call[~String] : func:r734_2, this:r734_1 -# 734| mu734_4(unknown) = ^CallSideEffect : ~m? -# 734| v734_5(void) = ^IndirectReadSideEffect[-1] : &:r734_1, ~m? -# 734| mu734_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r734_1 -# 734| r734_7(bool) = Constant[0] : -# 734| v734_8(void) = ConditionalBranch : r734_7 +# 35| Block 238 +# 35| r35_3333(glval) = VariableAddress[x238] : +# 35| mu35_3334(String) = Uninitialized[x238] : &:r35_3333 +# 35| r35_3335(glval) = FunctionAddress[String] : +# 35| v35_3336(void) = Call[String] : func:r35_3335, this:r35_3333 +# 35| mu35_3337(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3338(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3333 +# 35| r35_3339(glval) = VariableAddress[x238] : +# 35| r35_3340(glval) = FunctionAddress[~String] : +# 35| v35_3341(void) = Call[~String] : func:r35_3340, this:r35_3339 +# 35| mu35_3342(unknown) = ^CallSideEffect : ~m? +# 35| v35_3343(void) = ^IndirectReadSideEffect[-1] : &:r35_3339, ~m? +# 35| mu35_3344(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3339 +# 35| r35_3345(bool) = Constant[0] : +# 35| v35_3346(void) = ConditionalBranch : r35_3345 #-----| False -> Block 239 #-----| True -> Block 1026 -# 736| Block 239 -# 736| r736_1(glval) = VariableAddress[x239] : -# 736| mu736_2(String) = Uninitialized[x239] : &:r736_1 -# 736| r736_3(glval) = FunctionAddress[String] : -# 736| v736_4(void) = Call[String] : func:r736_3, this:r736_1 -# 736| mu736_5(unknown) = ^CallSideEffect : ~m? -# 736| mu736_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r736_1 -# 737| r737_1(glval) = VariableAddress[x239] : -# 737| r737_2(glval) = FunctionAddress[~String] : -# 737| v737_3(void) = Call[~String] : func:r737_2, this:r737_1 -# 737| mu737_4(unknown) = ^CallSideEffect : ~m? -# 737| v737_5(void) = ^IndirectReadSideEffect[-1] : &:r737_1, ~m? -# 737| mu737_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r737_1 -# 737| r737_7(bool) = Constant[0] : -# 737| v737_8(void) = ConditionalBranch : r737_7 +# 35| Block 239 +# 35| r35_3347(glval) = VariableAddress[x239] : +# 35| mu35_3348(String) = Uninitialized[x239] : &:r35_3347 +# 35| r35_3349(glval) = FunctionAddress[String] : +# 35| v35_3350(void) = Call[String] : func:r35_3349, this:r35_3347 +# 35| mu35_3351(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3352(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3347 +# 35| r35_3353(glval) = VariableAddress[x239] : +# 35| r35_3354(glval) = FunctionAddress[~String] : +# 35| v35_3355(void) = Call[~String] : func:r35_3354, this:r35_3353 +# 35| mu35_3356(unknown) = ^CallSideEffect : ~m? +# 35| v35_3357(void) = ^IndirectReadSideEffect[-1] : &:r35_3353, ~m? +# 35| mu35_3358(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3353 +# 35| r35_3359(bool) = Constant[0] : +# 35| v35_3360(void) = ConditionalBranch : r35_3359 #-----| False -> Block 240 #-----| True -> Block 1026 -# 739| Block 240 -# 739| r739_1(glval) = VariableAddress[x240] : -# 739| mu739_2(String) = Uninitialized[x240] : &:r739_1 -# 739| r739_3(glval) = FunctionAddress[String] : -# 739| v739_4(void) = Call[String] : func:r739_3, this:r739_1 -# 739| mu739_5(unknown) = ^CallSideEffect : ~m? -# 739| mu739_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r739_1 -# 740| r740_1(glval) = VariableAddress[x240] : -# 740| r740_2(glval) = FunctionAddress[~String] : -# 740| v740_3(void) = Call[~String] : func:r740_2, this:r740_1 -# 740| mu740_4(unknown) = ^CallSideEffect : ~m? -# 740| v740_5(void) = ^IndirectReadSideEffect[-1] : &:r740_1, ~m? -# 740| mu740_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r740_1 -# 740| r740_7(bool) = Constant[0] : -# 740| v740_8(void) = ConditionalBranch : r740_7 +# 35| Block 240 +# 35| r35_3361(glval) = VariableAddress[x240] : +# 35| mu35_3362(String) = Uninitialized[x240] : &:r35_3361 +# 35| r35_3363(glval) = FunctionAddress[String] : +# 35| v35_3364(void) = Call[String] : func:r35_3363, this:r35_3361 +# 35| mu35_3365(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3366(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3361 +# 35| r35_3367(glval) = VariableAddress[x240] : +# 35| r35_3368(glval) = FunctionAddress[~String] : +# 35| v35_3369(void) = Call[~String] : func:r35_3368, this:r35_3367 +# 35| mu35_3370(unknown) = ^CallSideEffect : ~m? +# 35| v35_3371(void) = ^IndirectReadSideEffect[-1] : &:r35_3367, ~m? +# 35| mu35_3372(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3367 +# 35| r35_3373(bool) = Constant[0] : +# 35| v35_3374(void) = ConditionalBranch : r35_3373 #-----| False -> Block 241 #-----| True -> Block 1026 -# 742| Block 241 -# 742| r742_1(glval) = VariableAddress[x241] : -# 742| mu742_2(String) = Uninitialized[x241] : &:r742_1 -# 742| r742_3(glval) = FunctionAddress[String] : -# 742| v742_4(void) = Call[String] : func:r742_3, this:r742_1 -# 742| mu742_5(unknown) = ^CallSideEffect : ~m? -# 742| mu742_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r742_1 -# 743| r743_1(glval) = VariableAddress[x241] : -# 743| r743_2(glval) = FunctionAddress[~String] : -# 743| v743_3(void) = Call[~String] : func:r743_2, this:r743_1 -# 743| mu743_4(unknown) = ^CallSideEffect : ~m? -# 743| v743_5(void) = ^IndirectReadSideEffect[-1] : &:r743_1, ~m? -# 743| mu743_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r743_1 -# 743| r743_7(bool) = Constant[0] : -# 743| v743_8(void) = ConditionalBranch : r743_7 +# 35| Block 241 +# 35| r35_3375(glval) = VariableAddress[x241] : +# 35| mu35_3376(String) = Uninitialized[x241] : &:r35_3375 +# 35| r35_3377(glval) = FunctionAddress[String] : +# 35| v35_3378(void) = Call[String] : func:r35_3377, this:r35_3375 +# 35| mu35_3379(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3380(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3375 +# 35| r35_3381(glval) = VariableAddress[x241] : +# 35| r35_3382(glval) = FunctionAddress[~String] : +# 35| v35_3383(void) = Call[~String] : func:r35_3382, this:r35_3381 +# 35| mu35_3384(unknown) = ^CallSideEffect : ~m? +# 35| v35_3385(void) = ^IndirectReadSideEffect[-1] : &:r35_3381, ~m? +# 35| mu35_3386(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3381 +# 35| r35_3387(bool) = Constant[0] : +# 35| v35_3388(void) = ConditionalBranch : r35_3387 #-----| False -> Block 242 #-----| True -> Block 1026 -# 745| Block 242 -# 745| r745_1(glval) = VariableAddress[x242] : -# 745| mu745_2(String) = Uninitialized[x242] : &:r745_1 -# 745| r745_3(glval) = FunctionAddress[String] : -# 745| v745_4(void) = Call[String] : func:r745_3, this:r745_1 -# 745| mu745_5(unknown) = ^CallSideEffect : ~m? -# 745| mu745_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r745_1 -# 746| r746_1(glval) = VariableAddress[x242] : -# 746| r746_2(glval) = FunctionAddress[~String] : -# 746| v746_3(void) = Call[~String] : func:r746_2, this:r746_1 -# 746| mu746_4(unknown) = ^CallSideEffect : ~m? -# 746| v746_5(void) = ^IndirectReadSideEffect[-1] : &:r746_1, ~m? -# 746| mu746_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r746_1 -# 746| r746_7(bool) = Constant[0] : -# 746| v746_8(void) = ConditionalBranch : r746_7 +# 35| Block 242 +# 35| r35_3389(glval) = VariableAddress[x242] : +# 35| mu35_3390(String) = Uninitialized[x242] : &:r35_3389 +# 35| r35_3391(glval) = FunctionAddress[String] : +# 35| v35_3392(void) = Call[String] : func:r35_3391, this:r35_3389 +# 35| mu35_3393(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3394(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3389 +# 35| r35_3395(glval) = VariableAddress[x242] : +# 35| r35_3396(glval) = FunctionAddress[~String] : +# 35| v35_3397(void) = Call[~String] : func:r35_3396, this:r35_3395 +# 35| mu35_3398(unknown) = ^CallSideEffect : ~m? +# 35| v35_3399(void) = ^IndirectReadSideEffect[-1] : &:r35_3395, ~m? +# 35| mu35_3400(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3395 +# 35| r35_3401(bool) = Constant[0] : +# 35| v35_3402(void) = ConditionalBranch : r35_3401 #-----| False -> Block 243 #-----| True -> Block 1026 -# 748| Block 243 -# 748| r748_1(glval) = VariableAddress[x243] : -# 748| mu748_2(String) = Uninitialized[x243] : &:r748_1 -# 748| r748_3(glval) = FunctionAddress[String] : -# 748| v748_4(void) = Call[String] : func:r748_3, this:r748_1 -# 748| mu748_5(unknown) = ^CallSideEffect : ~m? -# 748| mu748_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r748_1 -# 749| r749_1(glval) = VariableAddress[x243] : -# 749| r749_2(glval) = FunctionAddress[~String] : -# 749| v749_3(void) = Call[~String] : func:r749_2, this:r749_1 -# 749| mu749_4(unknown) = ^CallSideEffect : ~m? -# 749| v749_5(void) = ^IndirectReadSideEffect[-1] : &:r749_1, ~m? -# 749| mu749_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r749_1 -# 749| r749_7(bool) = Constant[0] : -# 749| v749_8(void) = ConditionalBranch : r749_7 +# 35| Block 243 +# 35| r35_3403(glval) = VariableAddress[x243] : +# 35| mu35_3404(String) = Uninitialized[x243] : &:r35_3403 +# 35| r35_3405(glval) = FunctionAddress[String] : +# 35| v35_3406(void) = Call[String] : func:r35_3405, this:r35_3403 +# 35| mu35_3407(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3408(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3403 +# 35| r35_3409(glval) = VariableAddress[x243] : +# 35| r35_3410(glval) = FunctionAddress[~String] : +# 35| v35_3411(void) = Call[~String] : func:r35_3410, this:r35_3409 +# 35| mu35_3412(unknown) = ^CallSideEffect : ~m? +# 35| v35_3413(void) = ^IndirectReadSideEffect[-1] : &:r35_3409, ~m? +# 35| mu35_3414(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3409 +# 35| r35_3415(bool) = Constant[0] : +# 35| v35_3416(void) = ConditionalBranch : r35_3415 #-----| False -> Block 244 #-----| True -> Block 1026 -# 751| Block 244 -# 751| r751_1(glval) = VariableAddress[x244] : -# 751| mu751_2(String) = Uninitialized[x244] : &:r751_1 -# 751| r751_3(glval) = FunctionAddress[String] : -# 751| v751_4(void) = Call[String] : func:r751_3, this:r751_1 -# 751| mu751_5(unknown) = ^CallSideEffect : ~m? -# 751| mu751_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r751_1 -# 752| r752_1(glval) = VariableAddress[x244] : -# 752| r752_2(glval) = FunctionAddress[~String] : -# 752| v752_3(void) = Call[~String] : func:r752_2, this:r752_1 -# 752| mu752_4(unknown) = ^CallSideEffect : ~m? -# 752| v752_5(void) = ^IndirectReadSideEffect[-1] : &:r752_1, ~m? -# 752| mu752_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r752_1 -# 752| r752_7(bool) = Constant[0] : -# 752| v752_8(void) = ConditionalBranch : r752_7 +# 35| Block 244 +# 35| r35_3417(glval) = VariableAddress[x244] : +# 35| mu35_3418(String) = Uninitialized[x244] : &:r35_3417 +# 35| r35_3419(glval) = FunctionAddress[String] : +# 35| v35_3420(void) = Call[String] : func:r35_3419, this:r35_3417 +# 35| mu35_3421(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3422(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3417 +# 35| r35_3423(glval) = VariableAddress[x244] : +# 35| r35_3424(glval) = FunctionAddress[~String] : +# 35| v35_3425(void) = Call[~String] : func:r35_3424, this:r35_3423 +# 35| mu35_3426(unknown) = ^CallSideEffect : ~m? +# 35| v35_3427(void) = ^IndirectReadSideEffect[-1] : &:r35_3423, ~m? +# 35| mu35_3428(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3423 +# 35| r35_3429(bool) = Constant[0] : +# 35| v35_3430(void) = ConditionalBranch : r35_3429 #-----| False -> Block 245 #-----| True -> Block 1026 -# 754| Block 245 -# 754| r754_1(glval) = VariableAddress[x245] : -# 754| mu754_2(String) = Uninitialized[x245] : &:r754_1 -# 754| r754_3(glval) = FunctionAddress[String] : -# 754| v754_4(void) = Call[String] : func:r754_3, this:r754_1 -# 754| mu754_5(unknown) = ^CallSideEffect : ~m? -# 754| mu754_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r754_1 -# 755| r755_1(glval) = VariableAddress[x245] : -# 755| r755_2(glval) = FunctionAddress[~String] : -# 755| v755_3(void) = Call[~String] : func:r755_2, this:r755_1 -# 755| mu755_4(unknown) = ^CallSideEffect : ~m? -# 755| v755_5(void) = ^IndirectReadSideEffect[-1] : &:r755_1, ~m? -# 755| mu755_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r755_1 -# 755| r755_7(bool) = Constant[0] : -# 755| v755_8(void) = ConditionalBranch : r755_7 +# 35| Block 245 +# 35| r35_3431(glval) = VariableAddress[x245] : +# 35| mu35_3432(String) = Uninitialized[x245] : &:r35_3431 +# 35| r35_3433(glval) = FunctionAddress[String] : +# 35| v35_3434(void) = Call[String] : func:r35_3433, this:r35_3431 +# 35| mu35_3435(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3436(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3431 +# 35| r35_3437(glval) = VariableAddress[x245] : +# 35| r35_3438(glval) = FunctionAddress[~String] : +# 35| v35_3439(void) = Call[~String] : func:r35_3438, this:r35_3437 +# 35| mu35_3440(unknown) = ^CallSideEffect : ~m? +# 35| v35_3441(void) = ^IndirectReadSideEffect[-1] : &:r35_3437, ~m? +# 35| mu35_3442(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3437 +# 35| r35_3443(bool) = Constant[0] : +# 35| v35_3444(void) = ConditionalBranch : r35_3443 #-----| False -> Block 246 #-----| True -> Block 1026 -# 757| Block 246 -# 757| r757_1(glval) = VariableAddress[x246] : -# 757| mu757_2(String) = Uninitialized[x246] : &:r757_1 -# 757| r757_3(glval) = FunctionAddress[String] : -# 757| v757_4(void) = Call[String] : func:r757_3, this:r757_1 -# 757| mu757_5(unknown) = ^CallSideEffect : ~m? -# 757| mu757_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r757_1 -# 758| r758_1(glval) = VariableAddress[x246] : -# 758| r758_2(glval) = FunctionAddress[~String] : -# 758| v758_3(void) = Call[~String] : func:r758_2, this:r758_1 -# 758| mu758_4(unknown) = ^CallSideEffect : ~m? -# 758| v758_5(void) = ^IndirectReadSideEffect[-1] : &:r758_1, ~m? -# 758| mu758_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r758_1 -# 758| r758_7(bool) = Constant[0] : -# 758| v758_8(void) = ConditionalBranch : r758_7 +# 35| Block 246 +# 35| r35_3445(glval) = VariableAddress[x246] : +# 35| mu35_3446(String) = Uninitialized[x246] : &:r35_3445 +# 35| r35_3447(glval) = FunctionAddress[String] : +# 35| v35_3448(void) = Call[String] : func:r35_3447, this:r35_3445 +# 35| mu35_3449(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3450(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3445 +# 35| r35_3451(glval) = VariableAddress[x246] : +# 35| r35_3452(glval) = FunctionAddress[~String] : +# 35| v35_3453(void) = Call[~String] : func:r35_3452, this:r35_3451 +# 35| mu35_3454(unknown) = ^CallSideEffect : ~m? +# 35| v35_3455(void) = ^IndirectReadSideEffect[-1] : &:r35_3451, ~m? +# 35| mu35_3456(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3451 +# 35| r35_3457(bool) = Constant[0] : +# 35| v35_3458(void) = ConditionalBranch : r35_3457 #-----| False -> Block 247 #-----| True -> Block 1026 -# 760| Block 247 -# 760| r760_1(glval) = VariableAddress[x247] : -# 760| mu760_2(String) = Uninitialized[x247] : &:r760_1 -# 760| r760_3(glval) = FunctionAddress[String] : -# 760| v760_4(void) = Call[String] : func:r760_3, this:r760_1 -# 760| mu760_5(unknown) = ^CallSideEffect : ~m? -# 760| mu760_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r760_1 -# 761| r761_1(glval) = VariableAddress[x247] : -# 761| r761_2(glval) = FunctionAddress[~String] : -# 761| v761_3(void) = Call[~String] : func:r761_2, this:r761_1 -# 761| mu761_4(unknown) = ^CallSideEffect : ~m? -# 761| v761_5(void) = ^IndirectReadSideEffect[-1] : &:r761_1, ~m? -# 761| mu761_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r761_1 -# 761| r761_7(bool) = Constant[0] : -# 761| v761_8(void) = ConditionalBranch : r761_7 +# 35| Block 247 +# 35| r35_3459(glval) = VariableAddress[x247] : +# 35| mu35_3460(String) = Uninitialized[x247] : &:r35_3459 +# 35| r35_3461(glval) = FunctionAddress[String] : +# 35| v35_3462(void) = Call[String] : func:r35_3461, this:r35_3459 +# 35| mu35_3463(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3464(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3459 +# 35| r35_3465(glval) = VariableAddress[x247] : +# 35| r35_3466(glval) = FunctionAddress[~String] : +# 35| v35_3467(void) = Call[~String] : func:r35_3466, this:r35_3465 +# 35| mu35_3468(unknown) = ^CallSideEffect : ~m? +# 35| v35_3469(void) = ^IndirectReadSideEffect[-1] : &:r35_3465, ~m? +# 35| mu35_3470(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3465 +# 35| r35_3471(bool) = Constant[0] : +# 35| v35_3472(void) = ConditionalBranch : r35_3471 #-----| False -> Block 248 #-----| True -> Block 1026 -# 763| Block 248 -# 763| r763_1(glval) = VariableAddress[x248] : -# 763| mu763_2(String) = Uninitialized[x248] : &:r763_1 -# 763| r763_3(glval) = FunctionAddress[String] : -# 763| v763_4(void) = Call[String] : func:r763_3, this:r763_1 -# 763| mu763_5(unknown) = ^CallSideEffect : ~m? -# 763| mu763_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r763_1 -# 764| r764_1(glval) = VariableAddress[x248] : -# 764| r764_2(glval) = FunctionAddress[~String] : -# 764| v764_3(void) = Call[~String] : func:r764_2, this:r764_1 -# 764| mu764_4(unknown) = ^CallSideEffect : ~m? -# 764| v764_5(void) = ^IndirectReadSideEffect[-1] : &:r764_1, ~m? -# 764| mu764_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r764_1 -# 764| r764_7(bool) = Constant[0] : -# 764| v764_8(void) = ConditionalBranch : r764_7 +# 35| Block 248 +# 35| r35_3473(glval) = VariableAddress[x248] : +# 35| mu35_3474(String) = Uninitialized[x248] : &:r35_3473 +# 35| r35_3475(glval) = FunctionAddress[String] : +# 35| v35_3476(void) = Call[String] : func:r35_3475, this:r35_3473 +# 35| mu35_3477(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3478(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3473 +# 35| r35_3479(glval) = VariableAddress[x248] : +# 35| r35_3480(glval) = FunctionAddress[~String] : +# 35| v35_3481(void) = Call[~String] : func:r35_3480, this:r35_3479 +# 35| mu35_3482(unknown) = ^CallSideEffect : ~m? +# 35| v35_3483(void) = ^IndirectReadSideEffect[-1] : &:r35_3479, ~m? +# 35| mu35_3484(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3479 +# 35| r35_3485(bool) = Constant[0] : +# 35| v35_3486(void) = ConditionalBranch : r35_3485 #-----| False -> Block 249 #-----| True -> Block 1026 -# 766| Block 249 -# 766| r766_1(glval) = VariableAddress[x249] : -# 766| mu766_2(String) = Uninitialized[x249] : &:r766_1 -# 766| r766_3(glval) = FunctionAddress[String] : -# 766| v766_4(void) = Call[String] : func:r766_3, this:r766_1 -# 766| mu766_5(unknown) = ^CallSideEffect : ~m? -# 766| mu766_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r766_1 -# 767| r767_1(glval) = VariableAddress[x249] : -# 767| r767_2(glval) = FunctionAddress[~String] : -# 767| v767_3(void) = Call[~String] : func:r767_2, this:r767_1 -# 767| mu767_4(unknown) = ^CallSideEffect : ~m? -# 767| v767_5(void) = ^IndirectReadSideEffect[-1] : &:r767_1, ~m? -# 767| mu767_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r767_1 -# 767| r767_7(bool) = Constant[0] : -# 767| v767_8(void) = ConditionalBranch : r767_7 +# 35| Block 249 +# 35| r35_3487(glval) = VariableAddress[x249] : +# 35| mu35_3488(String) = Uninitialized[x249] : &:r35_3487 +# 35| r35_3489(glval) = FunctionAddress[String] : +# 35| v35_3490(void) = Call[String] : func:r35_3489, this:r35_3487 +# 35| mu35_3491(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3492(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3487 +# 35| r35_3493(glval) = VariableAddress[x249] : +# 35| r35_3494(glval) = FunctionAddress[~String] : +# 35| v35_3495(void) = Call[~String] : func:r35_3494, this:r35_3493 +# 35| mu35_3496(unknown) = ^CallSideEffect : ~m? +# 35| v35_3497(void) = ^IndirectReadSideEffect[-1] : &:r35_3493, ~m? +# 35| mu35_3498(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3493 +# 35| r35_3499(bool) = Constant[0] : +# 35| v35_3500(void) = ConditionalBranch : r35_3499 #-----| False -> Block 250 #-----| True -> Block 1026 -# 769| Block 250 -# 769| r769_1(glval) = VariableAddress[x250] : -# 769| mu769_2(String) = Uninitialized[x250] : &:r769_1 -# 769| r769_3(glval) = FunctionAddress[String] : -# 769| v769_4(void) = Call[String] : func:r769_3, this:r769_1 -# 769| mu769_5(unknown) = ^CallSideEffect : ~m? -# 769| mu769_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r769_1 -# 770| r770_1(glval) = VariableAddress[x250] : -# 770| r770_2(glval) = FunctionAddress[~String] : -# 770| v770_3(void) = Call[~String] : func:r770_2, this:r770_1 -# 770| mu770_4(unknown) = ^CallSideEffect : ~m? -# 770| v770_5(void) = ^IndirectReadSideEffect[-1] : &:r770_1, ~m? -# 770| mu770_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r770_1 -# 770| r770_7(bool) = Constant[0] : -# 770| v770_8(void) = ConditionalBranch : r770_7 +# 35| Block 250 +# 35| r35_3501(glval) = VariableAddress[x250] : +# 35| mu35_3502(String) = Uninitialized[x250] : &:r35_3501 +# 35| r35_3503(glval) = FunctionAddress[String] : +# 35| v35_3504(void) = Call[String] : func:r35_3503, this:r35_3501 +# 35| mu35_3505(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3506(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3501 +# 35| r35_3507(glval) = VariableAddress[x250] : +# 35| r35_3508(glval) = FunctionAddress[~String] : +# 35| v35_3509(void) = Call[~String] : func:r35_3508, this:r35_3507 +# 35| mu35_3510(unknown) = ^CallSideEffect : ~m? +# 35| v35_3511(void) = ^IndirectReadSideEffect[-1] : &:r35_3507, ~m? +# 35| mu35_3512(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3507 +# 35| r35_3513(bool) = Constant[0] : +# 35| v35_3514(void) = ConditionalBranch : r35_3513 #-----| False -> Block 251 #-----| True -> Block 1026 -# 772| Block 251 -# 772| r772_1(glval) = VariableAddress[x251] : -# 772| mu772_2(String) = Uninitialized[x251] : &:r772_1 -# 772| r772_3(glval) = FunctionAddress[String] : -# 772| v772_4(void) = Call[String] : func:r772_3, this:r772_1 -# 772| mu772_5(unknown) = ^CallSideEffect : ~m? -# 772| mu772_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r772_1 -# 773| r773_1(glval) = VariableAddress[x251] : -# 773| r773_2(glval) = FunctionAddress[~String] : -# 773| v773_3(void) = Call[~String] : func:r773_2, this:r773_1 -# 773| mu773_4(unknown) = ^CallSideEffect : ~m? -# 773| v773_5(void) = ^IndirectReadSideEffect[-1] : &:r773_1, ~m? -# 773| mu773_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r773_1 -# 773| r773_7(bool) = Constant[0] : -# 773| v773_8(void) = ConditionalBranch : r773_7 +# 35| Block 251 +# 35| r35_3515(glval) = VariableAddress[x251] : +# 35| mu35_3516(String) = Uninitialized[x251] : &:r35_3515 +# 35| r35_3517(glval) = FunctionAddress[String] : +# 35| v35_3518(void) = Call[String] : func:r35_3517, this:r35_3515 +# 35| mu35_3519(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3520(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3515 +# 35| r35_3521(glval) = VariableAddress[x251] : +# 35| r35_3522(glval) = FunctionAddress[~String] : +# 35| v35_3523(void) = Call[~String] : func:r35_3522, this:r35_3521 +# 35| mu35_3524(unknown) = ^CallSideEffect : ~m? +# 35| v35_3525(void) = ^IndirectReadSideEffect[-1] : &:r35_3521, ~m? +# 35| mu35_3526(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3521 +# 35| r35_3527(bool) = Constant[0] : +# 35| v35_3528(void) = ConditionalBranch : r35_3527 #-----| False -> Block 252 #-----| True -> Block 1026 -# 775| Block 252 -# 775| r775_1(glval) = VariableAddress[x252] : -# 775| mu775_2(String) = Uninitialized[x252] : &:r775_1 -# 775| r775_3(glval) = FunctionAddress[String] : -# 775| v775_4(void) = Call[String] : func:r775_3, this:r775_1 -# 775| mu775_5(unknown) = ^CallSideEffect : ~m? -# 775| mu775_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r775_1 -# 776| r776_1(glval) = VariableAddress[x252] : -# 776| r776_2(glval) = FunctionAddress[~String] : -# 776| v776_3(void) = Call[~String] : func:r776_2, this:r776_1 -# 776| mu776_4(unknown) = ^CallSideEffect : ~m? -# 776| v776_5(void) = ^IndirectReadSideEffect[-1] : &:r776_1, ~m? -# 776| mu776_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r776_1 -# 776| r776_7(bool) = Constant[0] : -# 776| v776_8(void) = ConditionalBranch : r776_7 +# 35| Block 252 +# 35| r35_3529(glval) = VariableAddress[x252] : +# 35| mu35_3530(String) = Uninitialized[x252] : &:r35_3529 +# 35| r35_3531(glval) = FunctionAddress[String] : +# 35| v35_3532(void) = Call[String] : func:r35_3531, this:r35_3529 +# 35| mu35_3533(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3534(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3529 +# 35| r35_3535(glval) = VariableAddress[x252] : +# 35| r35_3536(glval) = FunctionAddress[~String] : +# 35| v35_3537(void) = Call[~String] : func:r35_3536, this:r35_3535 +# 35| mu35_3538(unknown) = ^CallSideEffect : ~m? +# 35| v35_3539(void) = ^IndirectReadSideEffect[-1] : &:r35_3535, ~m? +# 35| mu35_3540(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3535 +# 35| r35_3541(bool) = Constant[0] : +# 35| v35_3542(void) = ConditionalBranch : r35_3541 #-----| False -> Block 253 #-----| True -> Block 1026 -# 778| Block 253 -# 778| r778_1(glval) = VariableAddress[x253] : -# 778| mu778_2(String) = Uninitialized[x253] : &:r778_1 -# 778| r778_3(glval) = FunctionAddress[String] : -# 778| v778_4(void) = Call[String] : func:r778_3, this:r778_1 -# 778| mu778_5(unknown) = ^CallSideEffect : ~m? -# 778| mu778_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r778_1 -# 779| r779_1(glval) = VariableAddress[x253] : -# 779| r779_2(glval) = FunctionAddress[~String] : -# 779| v779_3(void) = Call[~String] : func:r779_2, this:r779_1 -# 779| mu779_4(unknown) = ^CallSideEffect : ~m? -# 779| v779_5(void) = ^IndirectReadSideEffect[-1] : &:r779_1, ~m? -# 779| mu779_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r779_1 -# 779| r779_7(bool) = Constant[0] : -# 779| v779_8(void) = ConditionalBranch : r779_7 +# 35| Block 253 +# 35| r35_3543(glval) = VariableAddress[x253] : +# 35| mu35_3544(String) = Uninitialized[x253] : &:r35_3543 +# 35| r35_3545(glval) = FunctionAddress[String] : +# 35| v35_3546(void) = Call[String] : func:r35_3545, this:r35_3543 +# 35| mu35_3547(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3548(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3543 +# 35| r35_3549(glval) = VariableAddress[x253] : +# 35| r35_3550(glval) = FunctionAddress[~String] : +# 35| v35_3551(void) = Call[~String] : func:r35_3550, this:r35_3549 +# 35| mu35_3552(unknown) = ^CallSideEffect : ~m? +# 35| v35_3553(void) = ^IndirectReadSideEffect[-1] : &:r35_3549, ~m? +# 35| mu35_3554(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3549 +# 35| r35_3555(bool) = Constant[0] : +# 35| v35_3556(void) = ConditionalBranch : r35_3555 #-----| False -> Block 254 #-----| True -> Block 1026 -# 781| Block 254 -# 781| r781_1(glval) = VariableAddress[x254] : -# 781| mu781_2(String) = Uninitialized[x254] : &:r781_1 -# 781| r781_3(glval) = FunctionAddress[String] : -# 781| v781_4(void) = Call[String] : func:r781_3, this:r781_1 -# 781| mu781_5(unknown) = ^CallSideEffect : ~m? -# 781| mu781_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r781_1 -# 782| r782_1(glval) = VariableAddress[x254] : -# 782| r782_2(glval) = FunctionAddress[~String] : -# 782| v782_3(void) = Call[~String] : func:r782_2, this:r782_1 -# 782| mu782_4(unknown) = ^CallSideEffect : ~m? -# 782| v782_5(void) = ^IndirectReadSideEffect[-1] : &:r782_1, ~m? -# 782| mu782_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r782_1 -# 782| r782_7(bool) = Constant[0] : -# 782| v782_8(void) = ConditionalBranch : r782_7 +# 35| Block 254 +# 35| r35_3557(glval) = VariableAddress[x254] : +# 35| mu35_3558(String) = Uninitialized[x254] : &:r35_3557 +# 35| r35_3559(glval) = FunctionAddress[String] : +# 35| v35_3560(void) = Call[String] : func:r35_3559, this:r35_3557 +# 35| mu35_3561(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3562(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3557 +# 35| r35_3563(glval) = VariableAddress[x254] : +# 35| r35_3564(glval) = FunctionAddress[~String] : +# 35| v35_3565(void) = Call[~String] : func:r35_3564, this:r35_3563 +# 35| mu35_3566(unknown) = ^CallSideEffect : ~m? +# 35| v35_3567(void) = ^IndirectReadSideEffect[-1] : &:r35_3563, ~m? +# 35| mu35_3568(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3563 +# 35| r35_3569(bool) = Constant[0] : +# 35| v35_3570(void) = ConditionalBranch : r35_3569 #-----| False -> Block 255 #-----| True -> Block 1026 -# 784| Block 255 -# 784| r784_1(glval) = VariableAddress[x255] : -# 784| mu784_2(String) = Uninitialized[x255] : &:r784_1 -# 784| r784_3(glval) = FunctionAddress[String] : -# 784| v784_4(void) = Call[String] : func:r784_3, this:r784_1 -# 784| mu784_5(unknown) = ^CallSideEffect : ~m? -# 784| mu784_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r784_1 -# 785| r785_1(glval) = VariableAddress[x255] : -# 785| r785_2(glval) = FunctionAddress[~String] : -# 785| v785_3(void) = Call[~String] : func:r785_2, this:r785_1 -# 785| mu785_4(unknown) = ^CallSideEffect : ~m? -# 785| v785_5(void) = ^IndirectReadSideEffect[-1] : &:r785_1, ~m? -# 785| mu785_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r785_1 -# 785| r785_7(bool) = Constant[0] : -# 785| v785_8(void) = ConditionalBranch : r785_7 +# 35| Block 255 +# 35| r35_3571(glval) = VariableAddress[x255] : +# 35| mu35_3572(String) = Uninitialized[x255] : &:r35_3571 +# 35| r35_3573(glval) = FunctionAddress[String] : +# 35| v35_3574(void) = Call[String] : func:r35_3573, this:r35_3571 +# 35| mu35_3575(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3576(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3571 +# 35| r35_3577(glval) = VariableAddress[x255] : +# 35| r35_3578(glval) = FunctionAddress[~String] : +# 35| v35_3579(void) = Call[~String] : func:r35_3578, this:r35_3577 +# 35| mu35_3580(unknown) = ^CallSideEffect : ~m? +# 35| v35_3581(void) = ^IndirectReadSideEffect[-1] : &:r35_3577, ~m? +# 35| mu35_3582(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3577 +# 35| r35_3583(bool) = Constant[0] : +# 35| v35_3584(void) = ConditionalBranch : r35_3583 #-----| False -> Block 256 #-----| True -> Block 1026 -# 787| Block 256 -# 787| r787_1(glval) = VariableAddress[x256] : -# 787| mu787_2(String) = Uninitialized[x256] : &:r787_1 -# 787| r787_3(glval) = FunctionAddress[String] : -# 787| v787_4(void) = Call[String] : func:r787_3, this:r787_1 -# 787| mu787_5(unknown) = ^CallSideEffect : ~m? -# 787| mu787_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r787_1 -# 788| r788_1(glval) = VariableAddress[x256] : -# 788| r788_2(glval) = FunctionAddress[~String] : -# 788| v788_3(void) = Call[~String] : func:r788_2, this:r788_1 -# 788| mu788_4(unknown) = ^CallSideEffect : ~m? -# 788| v788_5(void) = ^IndirectReadSideEffect[-1] : &:r788_1, ~m? -# 788| mu788_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r788_1 -# 788| r788_7(bool) = Constant[0] : -# 788| v788_8(void) = ConditionalBranch : r788_7 +# 35| Block 256 +# 35| r35_3585(glval) = VariableAddress[x256] : +# 35| mu35_3586(String) = Uninitialized[x256] : &:r35_3585 +# 35| r35_3587(glval) = FunctionAddress[String] : +# 35| v35_3588(void) = Call[String] : func:r35_3587, this:r35_3585 +# 35| mu35_3589(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3590(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3585 +# 35| r35_3591(glval) = VariableAddress[x256] : +# 35| r35_3592(glval) = FunctionAddress[~String] : +# 35| v35_3593(void) = Call[~String] : func:r35_3592, this:r35_3591 +# 35| mu35_3594(unknown) = ^CallSideEffect : ~m? +# 35| v35_3595(void) = ^IndirectReadSideEffect[-1] : &:r35_3591, ~m? +# 35| mu35_3596(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3591 +# 35| r35_3597(bool) = Constant[0] : +# 35| v35_3598(void) = ConditionalBranch : r35_3597 #-----| False -> Block 257 #-----| True -> Block 1026 -# 790| Block 257 -# 790| r790_1(glval) = VariableAddress[x257] : -# 790| mu790_2(String) = Uninitialized[x257] : &:r790_1 -# 790| r790_3(glval) = FunctionAddress[String] : -# 790| v790_4(void) = Call[String] : func:r790_3, this:r790_1 -# 790| mu790_5(unknown) = ^CallSideEffect : ~m? -# 790| mu790_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r790_1 -# 791| r791_1(glval) = VariableAddress[x257] : -# 791| r791_2(glval) = FunctionAddress[~String] : -# 791| v791_3(void) = Call[~String] : func:r791_2, this:r791_1 -# 791| mu791_4(unknown) = ^CallSideEffect : ~m? -# 791| v791_5(void) = ^IndirectReadSideEffect[-1] : &:r791_1, ~m? -# 791| mu791_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r791_1 -# 791| r791_7(bool) = Constant[0] : -# 791| v791_8(void) = ConditionalBranch : r791_7 +# 35| Block 257 +# 35| r35_3599(glval) = VariableAddress[x257] : +# 35| mu35_3600(String) = Uninitialized[x257] : &:r35_3599 +# 35| r35_3601(glval) = FunctionAddress[String] : +# 35| v35_3602(void) = Call[String] : func:r35_3601, this:r35_3599 +# 35| mu35_3603(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3604(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3599 +# 35| r35_3605(glval) = VariableAddress[x257] : +# 35| r35_3606(glval) = FunctionAddress[~String] : +# 35| v35_3607(void) = Call[~String] : func:r35_3606, this:r35_3605 +# 35| mu35_3608(unknown) = ^CallSideEffect : ~m? +# 35| v35_3609(void) = ^IndirectReadSideEffect[-1] : &:r35_3605, ~m? +# 35| mu35_3610(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3605 +# 35| r35_3611(bool) = Constant[0] : +# 35| v35_3612(void) = ConditionalBranch : r35_3611 #-----| False -> Block 258 #-----| True -> Block 1026 -# 793| Block 258 -# 793| r793_1(glval) = VariableAddress[x258] : -# 793| mu793_2(String) = Uninitialized[x258] : &:r793_1 -# 793| r793_3(glval) = FunctionAddress[String] : -# 793| v793_4(void) = Call[String] : func:r793_3, this:r793_1 -# 793| mu793_5(unknown) = ^CallSideEffect : ~m? -# 793| mu793_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r793_1 -# 794| r794_1(glval) = VariableAddress[x258] : -# 794| r794_2(glval) = FunctionAddress[~String] : -# 794| v794_3(void) = Call[~String] : func:r794_2, this:r794_1 -# 794| mu794_4(unknown) = ^CallSideEffect : ~m? -# 794| v794_5(void) = ^IndirectReadSideEffect[-1] : &:r794_1, ~m? -# 794| mu794_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r794_1 -# 794| r794_7(bool) = Constant[0] : -# 794| v794_8(void) = ConditionalBranch : r794_7 +# 35| Block 258 +# 35| r35_3613(glval) = VariableAddress[x258] : +# 35| mu35_3614(String) = Uninitialized[x258] : &:r35_3613 +# 35| r35_3615(glval) = FunctionAddress[String] : +# 35| v35_3616(void) = Call[String] : func:r35_3615, this:r35_3613 +# 35| mu35_3617(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3618(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3613 +# 35| r35_3619(glval) = VariableAddress[x258] : +# 35| r35_3620(glval) = FunctionAddress[~String] : +# 35| v35_3621(void) = Call[~String] : func:r35_3620, this:r35_3619 +# 35| mu35_3622(unknown) = ^CallSideEffect : ~m? +# 35| v35_3623(void) = ^IndirectReadSideEffect[-1] : &:r35_3619, ~m? +# 35| mu35_3624(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3619 +# 35| r35_3625(bool) = Constant[0] : +# 35| v35_3626(void) = ConditionalBranch : r35_3625 #-----| False -> Block 259 #-----| True -> Block 1026 -# 796| Block 259 -# 796| r796_1(glval) = VariableAddress[x259] : -# 796| mu796_2(String) = Uninitialized[x259] : &:r796_1 -# 796| r796_3(glval) = FunctionAddress[String] : -# 796| v796_4(void) = Call[String] : func:r796_3, this:r796_1 -# 796| mu796_5(unknown) = ^CallSideEffect : ~m? -# 796| mu796_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r796_1 -# 797| r797_1(glval) = VariableAddress[x259] : -# 797| r797_2(glval) = FunctionAddress[~String] : -# 797| v797_3(void) = Call[~String] : func:r797_2, this:r797_1 -# 797| mu797_4(unknown) = ^CallSideEffect : ~m? -# 797| v797_5(void) = ^IndirectReadSideEffect[-1] : &:r797_1, ~m? -# 797| mu797_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r797_1 -# 797| r797_7(bool) = Constant[0] : -# 797| v797_8(void) = ConditionalBranch : r797_7 +# 35| Block 259 +# 35| r35_3627(glval) = VariableAddress[x259] : +# 35| mu35_3628(String) = Uninitialized[x259] : &:r35_3627 +# 35| r35_3629(glval) = FunctionAddress[String] : +# 35| v35_3630(void) = Call[String] : func:r35_3629, this:r35_3627 +# 35| mu35_3631(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3632(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3627 +# 35| r35_3633(glval) = VariableAddress[x259] : +# 35| r35_3634(glval) = FunctionAddress[~String] : +# 35| v35_3635(void) = Call[~String] : func:r35_3634, this:r35_3633 +# 35| mu35_3636(unknown) = ^CallSideEffect : ~m? +# 35| v35_3637(void) = ^IndirectReadSideEffect[-1] : &:r35_3633, ~m? +# 35| mu35_3638(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3633 +# 35| r35_3639(bool) = Constant[0] : +# 35| v35_3640(void) = ConditionalBranch : r35_3639 #-----| False -> Block 260 #-----| True -> Block 1026 -# 799| Block 260 -# 799| r799_1(glval) = VariableAddress[x260] : -# 799| mu799_2(String) = Uninitialized[x260] : &:r799_1 -# 799| r799_3(glval) = FunctionAddress[String] : -# 799| v799_4(void) = Call[String] : func:r799_3, this:r799_1 -# 799| mu799_5(unknown) = ^CallSideEffect : ~m? -# 799| mu799_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r799_1 -# 800| r800_1(glval) = VariableAddress[x260] : -# 800| r800_2(glval) = FunctionAddress[~String] : -# 800| v800_3(void) = Call[~String] : func:r800_2, this:r800_1 -# 800| mu800_4(unknown) = ^CallSideEffect : ~m? -# 800| v800_5(void) = ^IndirectReadSideEffect[-1] : &:r800_1, ~m? -# 800| mu800_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r800_1 -# 800| r800_7(bool) = Constant[0] : -# 800| v800_8(void) = ConditionalBranch : r800_7 +# 35| Block 260 +# 35| r35_3641(glval) = VariableAddress[x260] : +# 35| mu35_3642(String) = Uninitialized[x260] : &:r35_3641 +# 35| r35_3643(glval) = FunctionAddress[String] : +# 35| v35_3644(void) = Call[String] : func:r35_3643, this:r35_3641 +# 35| mu35_3645(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3646(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3641 +# 35| r35_3647(glval) = VariableAddress[x260] : +# 35| r35_3648(glval) = FunctionAddress[~String] : +# 35| v35_3649(void) = Call[~String] : func:r35_3648, this:r35_3647 +# 35| mu35_3650(unknown) = ^CallSideEffect : ~m? +# 35| v35_3651(void) = ^IndirectReadSideEffect[-1] : &:r35_3647, ~m? +# 35| mu35_3652(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3647 +# 35| r35_3653(bool) = Constant[0] : +# 35| v35_3654(void) = ConditionalBranch : r35_3653 #-----| False -> Block 261 #-----| True -> Block 1026 -# 802| Block 261 -# 802| r802_1(glval) = VariableAddress[x261] : -# 802| mu802_2(String) = Uninitialized[x261] : &:r802_1 -# 802| r802_3(glval) = FunctionAddress[String] : -# 802| v802_4(void) = Call[String] : func:r802_3, this:r802_1 -# 802| mu802_5(unknown) = ^CallSideEffect : ~m? -# 802| mu802_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r802_1 -# 803| r803_1(glval) = VariableAddress[x261] : -# 803| r803_2(glval) = FunctionAddress[~String] : -# 803| v803_3(void) = Call[~String] : func:r803_2, this:r803_1 -# 803| mu803_4(unknown) = ^CallSideEffect : ~m? -# 803| v803_5(void) = ^IndirectReadSideEffect[-1] : &:r803_1, ~m? -# 803| mu803_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r803_1 -# 803| r803_7(bool) = Constant[0] : -# 803| v803_8(void) = ConditionalBranch : r803_7 +# 35| Block 261 +# 35| r35_3655(glval) = VariableAddress[x261] : +# 35| mu35_3656(String) = Uninitialized[x261] : &:r35_3655 +# 35| r35_3657(glval) = FunctionAddress[String] : +# 35| v35_3658(void) = Call[String] : func:r35_3657, this:r35_3655 +# 35| mu35_3659(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3660(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3655 +# 35| r35_3661(glval) = VariableAddress[x261] : +# 35| r35_3662(glval) = FunctionAddress[~String] : +# 35| v35_3663(void) = Call[~String] : func:r35_3662, this:r35_3661 +# 35| mu35_3664(unknown) = ^CallSideEffect : ~m? +# 35| v35_3665(void) = ^IndirectReadSideEffect[-1] : &:r35_3661, ~m? +# 35| mu35_3666(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3661 +# 35| r35_3667(bool) = Constant[0] : +# 35| v35_3668(void) = ConditionalBranch : r35_3667 #-----| False -> Block 262 #-----| True -> Block 1026 -# 805| Block 262 -# 805| r805_1(glval) = VariableAddress[x262] : -# 805| mu805_2(String) = Uninitialized[x262] : &:r805_1 -# 805| r805_3(glval) = FunctionAddress[String] : -# 805| v805_4(void) = Call[String] : func:r805_3, this:r805_1 -# 805| mu805_5(unknown) = ^CallSideEffect : ~m? -# 805| mu805_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r805_1 -# 806| r806_1(glval) = VariableAddress[x262] : -# 806| r806_2(glval) = FunctionAddress[~String] : -# 806| v806_3(void) = Call[~String] : func:r806_2, this:r806_1 -# 806| mu806_4(unknown) = ^CallSideEffect : ~m? -# 806| v806_5(void) = ^IndirectReadSideEffect[-1] : &:r806_1, ~m? -# 806| mu806_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r806_1 -# 806| r806_7(bool) = Constant[0] : -# 806| v806_8(void) = ConditionalBranch : r806_7 +# 35| Block 262 +# 35| r35_3669(glval) = VariableAddress[x262] : +# 35| mu35_3670(String) = Uninitialized[x262] : &:r35_3669 +# 35| r35_3671(glval) = FunctionAddress[String] : +# 35| v35_3672(void) = Call[String] : func:r35_3671, this:r35_3669 +# 35| mu35_3673(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3674(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3669 +# 35| r35_3675(glval) = VariableAddress[x262] : +# 35| r35_3676(glval) = FunctionAddress[~String] : +# 35| v35_3677(void) = Call[~String] : func:r35_3676, this:r35_3675 +# 35| mu35_3678(unknown) = ^CallSideEffect : ~m? +# 35| v35_3679(void) = ^IndirectReadSideEffect[-1] : &:r35_3675, ~m? +# 35| mu35_3680(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3675 +# 35| r35_3681(bool) = Constant[0] : +# 35| v35_3682(void) = ConditionalBranch : r35_3681 #-----| False -> Block 263 #-----| True -> Block 1026 -# 808| Block 263 -# 808| r808_1(glval) = VariableAddress[x263] : -# 808| mu808_2(String) = Uninitialized[x263] : &:r808_1 -# 808| r808_3(glval) = FunctionAddress[String] : -# 808| v808_4(void) = Call[String] : func:r808_3, this:r808_1 -# 808| mu808_5(unknown) = ^CallSideEffect : ~m? -# 808| mu808_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r808_1 -# 809| r809_1(glval) = VariableAddress[x263] : -# 809| r809_2(glval) = FunctionAddress[~String] : -# 809| v809_3(void) = Call[~String] : func:r809_2, this:r809_1 -# 809| mu809_4(unknown) = ^CallSideEffect : ~m? -# 809| v809_5(void) = ^IndirectReadSideEffect[-1] : &:r809_1, ~m? -# 809| mu809_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r809_1 -# 809| r809_7(bool) = Constant[0] : -# 809| v809_8(void) = ConditionalBranch : r809_7 +# 35| Block 263 +# 35| r35_3683(glval) = VariableAddress[x263] : +# 35| mu35_3684(String) = Uninitialized[x263] : &:r35_3683 +# 35| r35_3685(glval) = FunctionAddress[String] : +# 35| v35_3686(void) = Call[String] : func:r35_3685, this:r35_3683 +# 35| mu35_3687(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3688(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3683 +# 35| r35_3689(glval) = VariableAddress[x263] : +# 35| r35_3690(glval) = FunctionAddress[~String] : +# 35| v35_3691(void) = Call[~String] : func:r35_3690, this:r35_3689 +# 35| mu35_3692(unknown) = ^CallSideEffect : ~m? +# 35| v35_3693(void) = ^IndirectReadSideEffect[-1] : &:r35_3689, ~m? +# 35| mu35_3694(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3689 +# 35| r35_3695(bool) = Constant[0] : +# 35| v35_3696(void) = ConditionalBranch : r35_3695 #-----| False -> Block 264 #-----| True -> Block 1026 -# 811| Block 264 -# 811| r811_1(glval) = VariableAddress[x264] : -# 811| mu811_2(String) = Uninitialized[x264] : &:r811_1 -# 811| r811_3(glval) = FunctionAddress[String] : -# 811| v811_4(void) = Call[String] : func:r811_3, this:r811_1 -# 811| mu811_5(unknown) = ^CallSideEffect : ~m? -# 811| mu811_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r811_1 -# 812| r812_1(glval) = VariableAddress[x264] : -# 812| r812_2(glval) = FunctionAddress[~String] : -# 812| v812_3(void) = Call[~String] : func:r812_2, this:r812_1 -# 812| mu812_4(unknown) = ^CallSideEffect : ~m? -# 812| v812_5(void) = ^IndirectReadSideEffect[-1] : &:r812_1, ~m? -# 812| mu812_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r812_1 -# 812| r812_7(bool) = Constant[0] : -# 812| v812_8(void) = ConditionalBranch : r812_7 +# 35| Block 264 +# 35| r35_3697(glval) = VariableAddress[x264] : +# 35| mu35_3698(String) = Uninitialized[x264] : &:r35_3697 +# 35| r35_3699(glval) = FunctionAddress[String] : +# 35| v35_3700(void) = Call[String] : func:r35_3699, this:r35_3697 +# 35| mu35_3701(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3702(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3697 +# 35| r35_3703(glval) = VariableAddress[x264] : +# 35| r35_3704(glval) = FunctionAddress[~String] : +# 35| v35_3705(void) = Call[~String] : func:r35_3704, this:r35_3703 +# 35| mu35_3706(unknown) = ^CallSideEffect : ~m? +# 35| v35_3707(void) = ^IndirectReadSideEffect[-1] : &:r35_3703, ~m? +# 35| mu35_3708(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3703 +# 35| r35_3709(bool) = Constant[0] : +# 35| v35_3710(void) = ConditionalBranch : r35_3709 #-----| False -> Block 265 #-----| True -> Block 1026 -# 814| Block 265 -# 814| r814_1(glval) = VariableAddress[x265] : -# 814| mu814_2(String) = Uninitialized[x265] : &:r814_1 -# 814| r814_3(glval) = FunctionAddress[String] : -# 814| v814_4(void) = Call[String] : func:r814_3, this:r814_1 -# 814| mu814_5(unknown) = ^CallSideEffect : ~m? -# 814| mu814_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r814_1 -# 815| r815_1(glval) = VariableAddress[x265] : -# 815| r815_2(glval) = FunctionAddress[~String] : -# 815| v815_3(void) = Call[~String] : func:r815_2, this:r815_1 -# 815| mu815_4(unknown) = ^CallSideEffect : ~m? -# 815| v815_5(void) = ^IndirectReadSideEffect[-1] : &:r815_1, ~m? -# 815| mu815_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r815_1 -# 815| r815_7(bool) = Constant[0] : -# 815| v815_8(void) = ConditionalBranch : r815_7 +# 35| Block 265 +# 35| r35_3711(glval) = VariableAddress[x265] : +# 35| mu35_3712(String) = Uninitialized[x265] : &:r35_3711 +# 35| r35_3713(glval) = FunctionAddress[String] : +# 35| v35_3714(void) = Call[String] : func:r35_3713, this:r35_3711 +# 35| mu35_3715(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3716(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3711 +# 35| r35_3717(glval) = VariableAddress[x265] : +# 35| r35_3718(glval) = FunctionAddress[~String] : +# 35| v35_3719(void) = Call[~String] : func:r35_3718, this:r35_3717 +# 35| mu35_3720(unknown) = ^CallSideEffect : ~m? +# 35| v35_3721(void) = ^IndirectReadSideEffect[-1] : &:r35_3717, ~m? +# 35| mu35_3722(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3717 +# 35| r35_3723(bool) = Constant[0] : +# 35| v35_3724(void) = ConditionalBranch : r35_3723 #-----| False -> Block 266 #-----| True -> Block 1026 -# 817| Block 266 -# 817| r817_1(glval) = VariableAddress[x266] : -# 817| mu817_2(String) = Uninitialized[x266] : &:r817_1 -# 817| r817_3(glval) = FunctionAddress[String] : -# 817| v817_4(void) = Call[String] : func:r817_3, this:r817_1 -# 817| mu817_5(unknown) = ^CallSideEffect : ~m? -# 817| mu817_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r817_1 -# 818| r818_1(glval) = VariableAddress[x266] : -# 818| r818_2(glval) = FunctionAddress[~String] : -# 818| v818_3(void) = Call[~String] : func:r818_2, this:r818_1 -# 818| mu818_4(unknown) = ^CallSideEffect : ~m? -# 818| v818_5(void) = ^IndirectReadSideEffect[-1] : &:r818_1, ~m? -# 818| mu818_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r818_1 -# 818| r818_7(bool) = Constant[0] : -# 818| v818_8(void) = ConditionalBranch : r818_7 +# 35| Block 266 +# 35| r35_3725(glval) = VariableAddress[x266] : +# 35| mu35_3726(String) = Uninitialized[x266] : &:r35_3725 +# 35| r35_3727(glval) = FunctionAddress[String] : +# 35| v35_3728(void) = Call[String] : func:r35_3727, this:r35_3725 +# 35| mu35_3729(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3730(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3725 +# 35| r35_3731(glval) = VariableAddress[x266] : +# 35| r35_3732(glval) = FunctionAddress[~String] : +# 35| v35_3733(void) = Call[~String] : func:r35_3732, this:r35_3731 +# 35| mu35_3734(unknown) = ^CallSideEffect : ~m? +# 35| v35_3735(void) = ^IndirectReadSideEffect[-1] : &:r35_3731, ~m? +# 35| mu35_3736(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3731 +# 35| r35_3737(bool) = Constant[0] : +# 35| v35_3738(void) = ConditionalBranch : r35_3737 #-----| False -> Block 267 #-----| True -> Block 1026 -# 820| Block 267 -# 820| r820_1(glval) = VariableAddress[x267] : -# 820| mu820_2(String) = Uninitialized[x267] : &:r820_1 -# 820| r820_3(glval) = FunctionAddress[String] : -# 820| v820_4(void) = Call[String] : func:r820_3, this:r820_1 -# 820| mu820_5(unknown) = ^CallSideEffect : ~m? -# 820| mu820_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r820_1 -# 821| r821_1(glval) = VariableAddress[x267] : -# 821| r821_2(glval) = FunctionAddress[~String] : -# 821| v821_3(void) = Call[~String] : func:r821_2, this:r821_1 -# 821| mu821_4(unknown) = ^CallSideEffect : ~m? -# 821| v821_5(void) = ^IndirectReadSideEffect[-1] : &:r821_1, ~m? -# 821| mu821_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r821_1 -# 821| r821_7(bool) = Constant[0] : -# 821| v821_8(void) = ConditionalBranch : r821_7 +# 35| Block 267 +# 35| r35_3739(glval) = VariableAddress[x267] : +# 35| mu35_3740(String) = Uninitialized[x267] : &:r35_3739 +# 35| r35_3741(glval) = FunctionAddress[String] : +# 35| v35_3742(void) = Call[String] : func:r35_3741, this:r35_3739 +# 35| mu35_3743(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3744(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3739 +# 35| r35_3745(glval) = VariableAddress[x267] : +# 35| r35_3746(glval) = FunctionAddress[~String] : +# 35| v35_3747(void) = Call[~String] : func:r35_3746, this:r35_3745 +# 35| mu35_3748(unknown) = ^CallSideEffect : ~m? +# 35| v35_3749(void) = ^IndirectReadSideEffect[-1] : &:r35_3745, ~m? +# 35| mu35_3750(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3745 +# 35| r35_3751(bool) = Constant[0] : +# 35| v35_3752(void) = ConditionalBranch : r35_3751 #-----| False -> Block 268 #-----| True -> Block 1026 -# 823| Block 268 -# 823| r823_1(glval) = VariableAddress[x268] : -# 823| mu823_2(String) = Uninitialized[x268] : &:r823_1 -# 823| r823_3(glval) = FunctionAddress[String] : -# 823| v823_4(void) = Call[String] : func:r823_3, this:r823_1 -# 823| mu823_5(unknown) = ^CallSideEffect : ~m? -# 823| mu823_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r823_1 -# 824| r824_1(glval) = VariableAddress[x268] : -# 824| r824_2(glval) = FunctionAddress[~String] : -# 824| v824_3(void) = Call[~String] : func:r824_2, this:r824_1 -# 824| mu824_4(unknown) = ^CallSideEffect : ~m? -# 824| v824_5(void) = ^IndirectReadSideEffect[-1] : &:r824_1, ~m? -# 824| mu824_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r824_1 -# 824| r824_7(bool) = Constant[0] : -# 824| v824_8(void) = ConditionalBranch : r824_7 +# 35| Block 268 +# 35| r35_3753(glval) = VariableAddress[x268] : +# 35| mu35_3754(String) = Uninitialized[x268] : &:r35_3753 +# 35| r35_3755(glval) = FunctionAddress[String] : +# 35| v35_3756(void) = Call[String] : func:r35_3755, this:r35_3753 +# 35| mu35_3757(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3758(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3753 +# 35| r35_3759(glval) = VariableAddress[x268] : +# 35| r35_3760(glval) = FunctionAddress[~String] : +# 35| v35_3761(void) = Call[~String] : func:r35_3760, this:r35_3759 +# 35| mu35_3762(unknown) = ^CallSideEffect : ~m? +# 35| v35_3763(void) = ^IndirectReadSideEffect[-1] : &:r35_3759, ~m? +# 35| mu35_3764(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3759 +# 35| r35_3765(bool) = Constant[0] : +# 35| v35_3766(void) = ConditionalBranch : r35_3765 #-----| False -> Block 269 #-----| True -> Block 1026 -# 826| Block 269 -# 826| r826_1(glval) = VariableAddress[x269] : -# 826| mu826_2(String) = Uninitialized[x269] : &:r826_1 -# 826| r826_3(glval) = FunctionAddress[String] : -# 826| v826_4(void) = Call[String] : func:r826_3, this:r826_1 -# 826| mu826_5(unknown) = ^CallSideEffect : ~m? -# 826| mu826_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r826_1 -# 827| r827_1(glval) = VariableAddress[x269] : -# 827| r827_2(glval) = FunctionAddress[~String] : -# 827| v827_3(void) = Call[~String] : func:r827_2, this:r827_1 -# 827| mu827_4(unknown) = ^CallSideEffect : ~m? -# 827| v827_5(void) = ^IndirectReadSideEffect[-1] : &:r827_1, ~m? -# 827| mu827_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r827_1 -# 827| r827_7(bool) = Constant[0] : -# 827| v827_8(void) = ConditionalBranch : r827_7 +# 35| Block 269 +# 35| r35_3767(glval) = VariableAddress[x269] : +# 35| mu35_3768(String) = Uninitialized[x269] : &:r35_3767 +# 35| r35_3769(glval) = FunctionAddress[String] : +# 35| v35_3770(void) = Call[String] : func:r35_3769, this:r35_3767 +# 35| mu35_3771(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3772(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3767 +# 35| r35_3773(glval) = VariableAddress[x269] : +# 35| r35_3774(glval) = FunctionAddress[~String] : +# 35| v35_3775(void) = Call[~String] : func:r35_3774, this:r35_3773 +# 35| mu35_3776(unknown) = ^CallSideEffect : ~m? +# 35| v35_3777(void) = ^IndirectReadSideEffect[-1] : &:r35_3773, ~m? +# 35| mu35_3778(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3773 +# 35| r35_3779(bool) = Constant[0] : +# 35| v35_3780(void) = ConditionalBranch : r35_3779 #-----| False -> Block 270 #-----| True -> Block 1026 -# 829| Block 270 -# 829| r829_1(glval) = VariableAddress[x270] : -# 829| mu829_2(String) = Uninitialized[x270] : &:r829_1 -# 829| r829_3(glval) = FunctionAddress[String] : -# 829| v829_4(void) = Call[String] : func:r829_3, this:r829_1 -# 829| mu829_5(unknown) = ^CallSideEffect : ~m? -# 829| mu829_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r829_1 -# 830| r830_1(glval) = VariableAddress[x270] : -# 830| r830_2(glval) = FunctionAddress[~String] : -# 830| v830_3(void) = Call[~String] : func:r830_2, this:r830_1 -# 830| mu830_4(unknown) = ^CallSideEffect : ~m? -# 830| v830_5(void) = ^IndirectReadSideEffect[-1] : &:r830_1, ~m? -# 830| mu830_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r830_1 -# 830| r830_7(bool) = Constant[0] : -# 830| v830_8(void) = ConditionalBranch : r830_7 +# 35| Block 270 +# 35| r35_3781(glval) = VariableAddress[x270] : +# 35| mu35_3782(String) = Uninitialized[x270] : &:r35_3781 +# 35| r35_3783(glval) = FunctionAddress[String] : +# 35| v35_3784(void) = Call[String] : func:r35_3783, this:r35_3781 +# 35| mu35_3785(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3786(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3781 +# 35| r35_3787(glval) = VariableAddress[x270] : +# 35| r35_3788(glval) = FunctionAddress[~String] : +# 35| v35_3789(void) = Call[~String] : func:r35_3788, this:r35_3787 +# 35| mu35_3790(unknown) = ^CallSideEffect : ~m? +# 35| v35_3791(void) = ^IndirectReadSideEffect[-1] : &:r35_3787, ~m? +# 35| mu35_3792(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3787 +# 35| r35_3793(bool) = Constant[0] : +# 35| v35_3794(void) = ConditionalBranch : r35_3793 #-----| False -> Block 271 #-----| True -> Block 1026 -# 832| Block 271 -# 832| r832_1(glval) = VariableAddress[x271] : -# 832| mu832_2(String) = Uninitialized[x271] : &:r832_1 -# 832| r832_3(glval) = FunctionAddress[String] : -# 832| v832_4(void) = Call[String] : func:r832_3, this:r832_1 -# 832| mu832_5(unknown) = ^CallSideEffect : ~m? -# 832| mu832_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r832_1 -# 833| r833_1(glval) = VariableAddress[x271] : -# 833| r833_2(glval) = FunctionAddress[~String] : -# 833| v833_3(void) = Call[~String] : func:r833_2, this:r833_1 -# 833| mu833_4(unknown) = ^CallSideEffect : ~m? -# 833| v833_5(void) = ^IndirectReadSideEffect[-1] : &:r833_1, ~m? -# 833| mu833_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r833_1 -# 833| r833_7(bool) = Constant[0] : -# 833| v833_8(void) = ConditionalBranch : r833_7 +# 35| Block 271 +# 35| r35_3795(glval) = VariableAddress[x271] : +# 35| mu35_3796(String) = Uninitialized[x271] : &:r35_3795 +# 35| r35_3797(glval) = FunctionAddress[String] : +# 35| v35_3798(void) = Call[String] : func:r35_3797, this:r35_3795 +# 35| mu35_3799(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3800(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3795 +# 35| r35_3801(glval) = VariableAddress[x271] : +# 35| r35_3802(glval) = FunctionAddress[~String] : +# 35| v35_3803(void) = Call[~String] : func:r35_3802, this:r35_3801 +# 35| mu35_3804(unknown) = ^CallSideEffect : ~m? +# 35| v35_3805(void) = ^IndirectReadSideEffect[-1] : &:r35_3801, ~m? +# 35| mu35_3806(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3801 +# 35| r35_3807(bool) = Constant[0] : +# 35| v35_3808(void) = ConditionalBranch : r35_3807 #-----| False -> Block 272 #-----| True -> Block 1026 -# 835| Block 272 -# 835| r835_1(glval) = VariableAddress[x272] : -# 835| mu835_2(String) = Uninitialized[x272] : &:r835_1 -# 835| r835_3(glval) = FunctionAddress[String] : -# 835| v835_4(void) = Call[String] : func:r835_3, this:r835_1 -# 835| mu835_5(unknown) = ^CallSideEffect : ~m? -# 835| mu835_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r835_1 -# 836| r836_1(glval) = VariableAddress[x272] : -# 836| r836_2(glval) = FunctionAddress[~String] : -# 836| v836_3(void) = Call[~String] : func:r836_2, this:r836_1 -# 836| mu836_4(unknown) = ^CallSideEffect : ~m? -# 836| v836_5(void) = ^IndirectReadSideEffect[-1] : &:r836_1, ~m? -# 836| mu836_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r836_1 -# 836| r836_7(bool) = Constant[0] : -# 836| v836_8(void) = ConditionalBranch : r836_7 +# 35| Block 272 +# 35| r35_3809(glval) = VariableAddress[x272] : +# 35| mu35_3810(String) = Uninitialized[x272] : &:r35_3809 +# 35| r35_3811(glval) = FunctionAddress[String] : +# 35| v35_3812(void) = Call[String] : func:r35_3811, this:r35_3809 +# 35| mu35_3813(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3814(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3809 +# 35| r35_3815(glval) = VariableAddress[x272] : +# 35| r35_3816(glval) = FunctionAddress[~String] : +# 35| v35_3817(void) = Call[~String] : func:r35_3816, this:r35_3815 +# 35| mu35_3818(unknown) = ^CallSideEffect : ~m? +# 35| v35_3819(void) = ^IndirectReadSideEffect[-1] : &:r35_3815, ~m? +# 35| mu35_3820(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3815 +# 35| r35_3821(bool) = Constant[0] : +# 35| v35_3822(void) = ConditionalBranch : r35_3821 #-----| False -> Block 273 #-----| True -> Block 1026 -# 838| Block 273 -# 838| r838_1(glval) = VariableAddress[x273] : -# 838| mu838_2(String) = Uninitialized[x273] : &:r838_1 -# 838| r838_3(glval) = FunctionAddress[String] : -# 838| v838_4(void) = Call[String] : func:r838_3, this:r838_1 -# 838| mu838_5(unknown) = ^CallSideEffect : ~m? -# 838| mu838_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r838_1 -# 839| r839_1(glval) = VariableAddress[x273] : -# 839| r839_2(glval) = FunctionAddress[~String] : -# 839| v839_3(void) = Call[~String] : func:r839_2, this:r839_1 -# 839| mu839_4(unknown) = ^CallSideEffect : ~m? -# 839| v839_5(void) = ^IndirectReadSideEffect[-1] : &:r839_1, ~m? -# 839| mu839_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r839_1 -# 839| r839_7(bool) = Constant[0] : -# 839| v839_8(void) = ConditionalBranch : r839_7 +# 35| Block 273 +# 35| r35_3823(glval) = VariableAddress[x273] : +# 35| mu35_3824(String) = Uninitialized[x273] : &:r35_3823 +# 35| r35_3825(glval) = FunctionAddress[String] : +# 35| v35_3826(void) = Call[String] : func:r35_3825, this:r35_3823 +# 35| mu35_3827(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3828(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3823 +# 35| r35_3829(glval) = VariableAddress[x273] : +# 35| r35_3830(glval) = FunctionAddress[~String] : +# 35| v35_3831(void) = Call[~String] : func:r35_3830, this:r35_3829 +# 35| mu35_3832(unknown) = ^CallSideEffect : ~m? +# 35| v35_3833(void) = ^IndirectReadSideEffect[-1] : &:r35_3829, ~m? +# 35| mu35_3834(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3829 +# 35| r35_3835(bool) = Constant[0] : +# 35| v35_3836(void) = ConditionalBranch : r35_3835 #-----| False -> Block 274 #-----| True -> Block 1026 -# 841| Block 274 -# 841| r841_1(glval) = VariableAddress[x274] : -# 841| mu841_2(String) = Uninitialized[x274] : &:r841_1 -# 841| r841_3(glval) = FunctionAddress[String] : -# 841| v841_4(void) = Call[String] : func:r841_3, this:r841_1 -# 841| mu841_5(unknown) = ^CallSideEffect : ~m? -# 841| mu841_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r841_1 -# 842| r842_1(glval) = VariableAddress[x274] : -# 842| r842_2(glval) = FunctionAddress[~String] : -# 842| v842_3(void) = Call[~String] : func:r842_2, this:r842_1 -# 842| mu842_4(unknown) = ^CallSideEffect : ~m? -# 842| v842_5(void) = ^IndirectReadSideEffect[-1] : &:r842_1, ~m? -# 842| mu842_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r842_1 -# 842| r842_7(bool) = Constant[0] : -# 842| v842_8(void) = ConditionalBranch : r842_7 +# 35| Block 274 +# 35| r35_3837(glval) = VariableAddress[x274] : +# 35| mu35_3838(String) = Uninitialized[x274] : &:r35_3837 +# 35| r35_3839(glval) = FunctionAddress[String] : +# 35| v35_3840(void) = Call[String] : func:r35_3839, this:r35_3837 +# 35| mu35_3841(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3842(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3837 +# 35| r35_3843(glval) = VariableAddress[x274] : +# 35| r35_3844(glval) = FunctionAddress[~String] : +# 35| v35_3845(void) = Call[~String] : func:r35_3844, this:r35_3843 +# 35| mu35_3846(unknown) = ^CallSideEffect : ~m? +# 35| v35_3847(void) = ^IndirectReadSideEffect[-1] : &:r35_3843, ~m? +# 35| mu35_3848(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3843 +# 35| r35_3849(bool) = Constant[0] : +# 35| v35_3850(void) = ConditionalBranch : r35_3849 #-----| False -> Block 275 #-----| True -> Block 1026 -# 844| Block 275 -# 844| r844_1(glval) = VariableAddress[x275] : -# 844| mu844_2(String) = Uninitialized[x275] : &:r844_1 -# 844| r844_3(glval) = FunctionAddress[String] : -# 844| v844_4(void) = Call[String] : func:r844_3, this:r844_1 -# 844| mu844_5(unknown) = ^CallSideEffect : ~m? -# 844| mu844_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r844_1 -# 845| r845_1(glval) = VariableAddress[x275] : -# 845| r845_2(glval) = FunctionAddress[~String] : -# 845| v845_3(void) = Call[~String] : func:r845_2, this:r845_1 -# 845| mu845_4(unknown) = ^CallSideEffect : ~m? -# 845| v845_5(void) = ^IndirectReadSideEffect[-1] : &:r845_1, ~m? -# 845| mu845_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r845_1 -# 845| r845_7(bool) = Constant[0] : -# 845| v845_8(void) = ConditionalBranch : r845_7 +# 35| Block 275 +# 35| r35_3851(glval) = VariableAddress[x275] : +# 35| mu35_3852(String) = Uninitialized[x275] : &:r35_3851 +# 35| r35_3853(glval) = FunctionAddress[String] : +# 35| v35_3854(void) = Call[String] : func:r35_3853, this:r35_3851 +# 35| mu35_3855(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3856(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3851 +# 35| r35_3857(glval) = VariableAddress[x275] : +# 35| r35_3858(glval) = FunctionAddress[~String] : +# 35| v35_3859(void) = Call[~String] : func:r35_3858, this:r35_3857 +# 35| mu35_3860(unknown) = ^CallSideEffect : ~m? +# 35| v35_3861(void) = ^IndirectReadSideEffect[-1] : &:r35_3857, ~m? +# 35| mu35_3862(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3857 +# 35| r35_3863(bool) = Constant[0] : +# 35| v35_3864(void) = ConditionalBranch : r35_3863 #-----| False -> Block 276 #-----| True -> Block 1026 -# 847| Block 276 -# 847| r847_1(glval) = VariableAddress[x276] : -# 847| mu847_2(String) = Uninitialized[x276] : &:r847_1 -# 847| r847_3(glval) = FunctionAddress[String] : -# 847| v847_4(void) = Call[String] : func:r847_3, this:r847_1 -# 847| mu847_5(unknown) = ^CallSideEffect : ~m? -# 847| mu847_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r847_1 -# 848| r848_1(glval) = VariableAddress[x276] : -# 848| r848_2(glval) = FunctionAddress[~String] : -# 848| v848_3(void) = Call[~String] : func:r848_2, this:r848_1 -# 848| mu848_4(unknown) = ^CallSideEffect : ~m? -# 848| v848_5(void) = ^IndirectReadSideEffect[-1] : &:r848_1, ~m? -# 848| mu848_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r848_1 -# 848| r848_7(bool) = Constant[0] : -# 848| v848_8(void) = ConditionalBranch : r848_7 +# 35| Block 276 +# 35| r35_3865(glval) = VariableAddress[x276] : +# 35| mu35_3866(String) = Uninitialized[x276] : &:r35_3865 +# 35| r35_3867(glval) = FunctionAddress[String] : +# 35| v35_3868(void) = Call[String] : func:r35_3867, this:r35_3865 +# 35| mu35_3869(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3870(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3865 +# 35| r35_3871(glval) = VariableAddress[x276] : +# 35| r35_3872(glval) = FunctionAddress[~String] : +# 35| v35_3873(void) = Call[~String] : func:r35_3872, this:r35_3871 +# 35| mu35_3874(unknown) = ^CallSideEffect : ~m? +# 35| v35_3875(void) = ^IndirectReadSideEffect[-1] : &:r35_3871, ~m? +# 35| mu35_3876(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3871 +# 35| r35_3877(bool) = Constant[0] : +# 35| v35_3878(void) = ConditionalBranch : r35_3877 #-----| False -> Block 277 #-----| True -> Block 1026 -# 850| Block 277 -# 850| r850_1(glval) = VariableAddress[x277] : -# 850| mu850_2(String) = Uninitialized[x277] : &:r850_1 -# 850| r850_3(glval) = FunctionAddress[String] : -# 850| v850_4(void) = Call[String] : func:r850_3, this:r850_1 -# 850| mu850_5(unknown) = ^CallSideEffect : ~m? -# 850| mu850_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r850_1 -# 851| r851_1(glval) = VariableAddress[x277] : -# 851| r851_2(glval) = FunctionAddress[~String] : -# 851| v851_3(void) = Call[~String] : func:r851_2, this:r851_1 -# 851| mu851_4(unknown) = ^CallSideEffect : ~m? -# 851| v851_5(void) = ^IndirectReadSideEffect[-1] : &:r851_1, ~m? -# 851| mu851_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r851_1 -# 851| r851_7(bool) = Constant[0] : -# 851| v851_8(void) = ConditionalBranch : r851_7 +# 35| Block 277 +# 35| r35_3879(glval) = VariableAddress[x277] : +# 35| mu35_3880(String) = Uninitialized[x277] : &:r35_3879 +# 35| r35_3881(glval) = FunctionAddress[String] : +# 35| v35_3882(void) = Call[String] : func:r35_3881, this:r35_3879 +# 35| mu35_3883(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3884(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3879 +# 35| r35_3885(glval) = VariableAddress[x277] : +# 35| r35_3886(glval) = FunctionAddress[~String] : +# 35| v35_3887(void) = Call[~String] : func:r35_3886, this:r35_3885 +# 35| mu35_3888(unknown) = ^CallSideEffect : ~m? +# 35| v35_3889(void) = ^IndirectReadSideEffect[-1] : &:r35_3885, ~m? +# 35| mu35_3890(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3885 +# 35| r35_3891(bool) = Constant[0] : +# 35| v35_3892(void) = ConditionalBranch : r35_3891 #-----| False -> Block 278 #-----| True -> Block 1026 -# 853| Block 278 -# 853| r853_1(glval) = VariableAddress[x278] : -# 853| mu853_2(String) = Uninitialized[x278] : &:r853_1 -# 853| r853_3(glval) = FunctionAddress[String] : -# 853| v853_4(void) = Call[String] : func:r853_3, this:r853_1 -# 853| mu853_5(unknown) = ^CallSideEffect : ~m? -# 853| mu853_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r853_1 -# 854| r854_1(glval) = VariableAddress[x278] : -# 854| r854_2(glval) = FunctionAddress[~String] : -# 854| v854_3(void) = Call[~String] : func:r854_2, this:r854_1 -# 854| mu854_4(unknown) = ^CallSideEffect : ~m? -# 854| v854_5(void) = ^IndirectReadSideEffect[-1] : &:r854_1, ~m? -# 854| mu854_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r854_1 -# 854| r854_7(bool) = Constant[0] : -# 854| v854_8(void) = ConditionalBranch : r854_7 +# 35| Block 278 +# 35| r35_3893(glval) = VariableAddress[x278] : +# 35| mu35_3894(String) = Uninitialized[x278] : &:r35_3893 +# 35| r35_3895(glval) = FunctionAddress[String] : +# 35| v35_3896(void) = Call[String] : func:r35_3895, this:r35_3893 +# 35| mu35_3897(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3898(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3893 +# 35| r35_3899(glval) = VariableAddress[x278] : +# 35| r35_3900(glval) = FunctionAddress[~String] : +# 35| v35_3901(void) = Call[~String] : func:r35_3900, this:r35_3899 +# 35| mu35_3902(unknown) = ^CallSideEffect : ~m? +# 35| v35_3903(void) = ^IndirectReadSideEffect[-1] : &:r35_3899, ~m? +# 35| mu35_3904(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3899 +# 35| r35_3905(bool) = Constant[0] : +# 35| v35_3906(void) = ConditionalBranch : r35_3905 #-----| False -> Block 279 #-----| True -> Block 1026 -# 856| Block 279 -# 856| r856_1(glval) = VariableAddress[x279] : -# 856| mu856_2(String) = Uninitialized[x279] : &:r856_1 -# 856| r856_3(glval) = FunctionAddress[String] : -# 856| v856_4(void) = Call[String] : func:r856_3, this:r856_1 -# 856| mu856_5(unknown) = ^CallSideEffect : ~m? -# 856| mu856_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r856_1 -# 857| r857_1(glval) = VariableAddress[x279] : -# 857| r857_2(glval) = FunctionAddress[~String] : -# 857| v857_3(void) = Call[~String] : func:r857_2, this:r857_1 -# 857| mu857_4(unknown) = ^CallSideEffect : ~m? -# 857| v857_5(void) = ^IndirectReadSideEffect[-1] : &:r857_1, ~m? -# 857| mu857_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r857_1 -# 857| r857_7(bool) = Constant[0] : -# 857| v857_8(void) = ConditionalBranch : r857_7 +# 35| Block 279 +# 35| r35_3907(glval) = VariableAddress[x279] : +# 35| mu35_3908(String) = Uninitialized[x279] : &:r35_3907 +# 35| r35_3909(glval) = FunctionAddress[String] : +# 35| v35_3910(void) = Call[String] : func:r35_3909, this:r35_3907 +# 35| mu35_3911(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3912(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3907 +# 35| r35_3913(glval) = VariableAddress[x279] : +# 35| r35_3914(glval) = FunctionAddress[~String] : +# 35| v35_3915(void) = Call[~String] : func:r35_3914, this:r35_3913 +# 35| mu35_3916(unknown) = ^CallSideEffect : ~m? +# 35| v35_3917(void) = ^IndirectReadSideEffect[-1] : &:r35_3913, ~m? +# 35| mu35_3918(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3913 +# 35| r35_3919(bool) = Constant[0] : +# 35| v35_3920(void) = ConditionalBranch : r35_3919 #-----| False -> Block 280 #-----| True -> Block 1026 -# 859| Block 280 -# 859| r859_1(glval) = VariableAddress[x280] : -# 859| mu859_2(String) = Uninitialized[x280] : &:r859_1 -# 859| r859_3(glval) = FunctionAddress[String] : -# 859| v859_4(void) = Call[String] : func:r859_3, this:r859_1 -# 859| mu859_5(unknown) = ^CallSideEffect : ~m? -# 859| mu859_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r859_1 -# 860| r860_1(glval) = VariableAddress[x280] : -# 860| r860_2(glval) = FunctionAddress[~String] : -# 860| v860_3(void) = Call[~String] : func:r860_2, this:r860_1 -# 860| mu860_4(unknown) = ^CallSideEffect : ~m? -# 860| v860_5(void) = ^IndirectReadSideEffect[-1] : &:r860_1, ~m? -# 860| mu860_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r860_1 -# 860| r860_7(bool) = Constant[0] : -# 860| v860_8(void) = ConditionalBranch : r860_7 +# 35| Block 280 +# 35| r35_3921(glval) = VariableAddress[x280] : +# 35| mu35_3922(String) = Uninitialized[x280] : &:r35_3921 +# 35| r35_3923(glval) = FunctionAddress[String] : +# 35| v35_3924(void) = Call[String] : func:r35_3923, this:r35_3921 +# 35| mu35_3925(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3926(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3921 +# 35| r35_3927(glval) = VariableAddress[x280] : +# 35| r35_3928(glval) = FunctionAddress[~String] : +# 35| v35_3929(void) = Call[~String] : func:r35_3928, this:r35_3927 +# 35| mu35_3930(unknown) = ^CallSideEffect : ~m? +# 35| v35_3931(void) = ^IndirectReadSideEffect[-1] : &:r35_3927, ~m? +# 35| mu35_3932(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3927 +# 35| r35_3933(bool) = Constant[0] : +# 35| v35_3934(void) = ConditionalBranch : r35_3933 #-----| False -> Block 281 #-----| True -> Block 1026 -# 862| Block 281 -# 862| r862_1(glval) = VariableAddress[x281] : -# 862| mu862_2(String) = Uninitialized[x281] : &:r862_1 -# 862| r862_3(glval) = FunctionAddress[String] : -# 862| v862_4(void) = Call[String] : func:r862_3, this:r862_1 -# 862| mu862_5(unknown) = ^CallSideEffect : ~m? -# 862| mu862_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r862_1 -# 863| r863_1(glval) = VariableAddress[x281] : -# 863| r863_2(glval) = FunctionAddress[~String] : -# 863| v863_3(void) = Call[~String] : func:r863_2, this:r863_1 -# 863| mu863_4(unknown) = ^CallSideEffect : ~m? -# 863| v863_5(void) = ^IndirectReadSideEffect[-1] : &:r863_1, ~m? -# 863| mu863_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r863_1 -# 863| r863_7(bool) = Constant[0] : -# 863| v863_8(void) = ConditionalBranch : r863_7 +# 35| Block 281 +# 35| r35_3935(glval) = VariableAddress[x281] : +# 35| mu35_3936(String) = Uninitialized[x281] : &:r35_3935 +# 35| r35_3937(glval) = FunctionAddress[String] : +# 35| v35_3938(void) = Call[String] : func:r35_3937, this:r35_3935 +# 35| mu35_3939(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3940(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3935 +# 35| r35_3941(glval) = VariableAddress[x281] : +# 35| r35_3942(glval) = FunctionAddress[~String] : +# 35| v35_3943(void) = Call[~String] : func:r35_3942, this:r35_3941 +# 35| mu35_3944(unknown) = ^CallSideEffect : ~m? +# 35| v35_3945(void) = ^IndirectReadSideEffect[-1] : &:r35_3941, ~m? +# 35| mu35_3946(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3941 +# 35| r35_3947(bool) = Constant[0] : +# 35| v35_3948(void) = ConditionalBranch : r35_3947 #-----| False -> Block 282 #-----| True -> Block 1026 -# 865| Block 282 -# 865| r865_1(glval) = VariableAddress[x282] : -# 865| mu865_2(String) = Uninitialized[x282] : &:r865_1 -# 865| r865_3(glval) = FunctionAddress[String] : -# 865| v865_4(void) = Call[String] : func:r865_3, this:r865_1 -# 865| mu865_5(unknown) = ^CallSideEffect : ~m? -# 865| mu865_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r865_1 -# 866| r866_1(glval) = VariableAddress[x282] : -# 866| r866_2(glval) = FunctionAddress[~String] : -# 866| v866_3(void) = Call[~String] : func:r866_2, this:r866_1 -# 866| mu866_4(unknown) = ^CallSideEffect : ~m? -# 866| v866_5(void) = ^IndirectReadSideEffect[-1] : &:r866_1, ~m? -# 866| mu866_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r866_1 -# 866| r866_7(bool) = Constant[0] : -# 866| v866_8(void) = ConditionalBranch : r866_7 +# 35| Block 282 +# 35| r35_3949(glval) = VariableAddress[x282] : +# 35| mu35_3950(String) = Uninitialized[x282] : &:r35_3949 +# 35| r35_3951(glval) = FunctionAddress[String] : +# 35| v35_3952(void) = Call[String] : func:r35_3951, this:r35_3949 +# 35| mu35_3953(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3954(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3949 +# 35| r35_3955(glval) = VariableAddress[x282] : +# 35| r35_3956(glval) = FunctionAddress[~String] : +# 35| v35_3957(void) = Call[~String] : func:r35_3956, this:r35_3955 +# 35| mu35_3958(unknown) = ^CallSideEffect : ~m? +# 35| v35_3959(void) = ^IndirectReadSideEffect[-1] : &:r35_3955, ~m? +# 35| mu35_3960(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3955 +# 35| r35_3961(bool) = Constant[0] : +# 35| v35_3962(void) = ConditionalBranch : r35_3961 #-----| False -> Block 283 #-----| True -> Block 1026 -# 868| Block 283 -# 868| r868_1(glval) = VariableAddress[x283] : -# 868| mu868_2(String) = Uninitialized[x283] : &:r868_1 -# 868| r868_3(glval) = FunctionAddress[String] : -# 868| v868_4(void) = Call[String] : func:r868_3, this:r868_1 -# 868| mu868_5(unknown) = ^CallSideEffect : ~m? -# 868| mu868_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r868_1 -# 869| r869_1(glval) = VariableAddress[x283] : -# 869| r869_2(glval) = FunctionAddress[~String] : -# 869| v869_3(void) = Call[~String] : func:r869_2, this:r869_1 -# 869| mu869_4(unknown) = ^CallSideEffect : ~m? -# 869| v869_5(void) = ^IndirectReadSideEffect[-1] : &:r869_1, ~m? -# 869| mu869_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r869_1 -# 869| r869_7(bool) = Constant[0] : -# 869| v869_8(void) = ConditionalBranch : r869_7 +# 35| Block 283 +# 35| r35_3963(glval) = VariableAddress[x283] : +# 35| mu35_3964(String) = Uninitialized[x283] : &:r35_3963 +# 35| r35_3965(glval) = FunctionAddress[String] : +# 35| v35_3966(void) = Call[String] : func:r35_3965, this:r35_3963 +# 35| mu35_3967(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3968(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3963 +# 35| r35_3969(glval) = VariableAddress[x283] : +# 35| r35_3970(glval) = FunctionAddress[~String] : +# 35| v35_3971(void) = Call[~String] : func:r35_3970, this:r35_3969 +# 35| mu35_3972(unknown) = ^CallSideEffect : ~m? +# 35| v35_3973(void) = ^IndirectReadSideEffect[-1] : &:r35_3969, ~m? +# 35| mu35_3974(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3969 +# 35| r35_3975(bool) = Constant[0] : +# 35| v35_3976(void) = ConditionalBranch : r35_3975 #-----| False -> Block 284 #-----| True -> Block 1026 -# 871| Block 284 -# 871| r871_1(glval) = VariableAddress[x284] : -# 871| mu871_2(String) = Uninitialized[x284] : &:r871_1 -# 871| r871_3(glval) = FunctionAddress[String] : -# 871| v871_4(void) = Call[String] : func:r871_3, this:r871_1 -# 871| mu871_5(unknown) = ^CallSideEffect : ~m? -# 871| mu871_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r871_1 -# 872| r872_1(glval) = VariableAddress[x284] : -# 872| r872_2(glval) = FunctionAddress[~String] : -# 872| v872_3(void) = Call[~String] : func:r872_2, this:r872_1 -# 872| mu872_4(unknown) = ^CallSideEffect : ~m? -# 872| v872_5(void) = ^IndirectReadSideEffect[-1] : &:r872_1, ~m? -# 872| mu872_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r872_1 -# 872| r872_7(bool) = Constant[0] : -# 872| v872_8(void) = ConditionalBranch : r872_7 +# 35| Block 284 +# 35| r35_3977(glval) = VariableAddress[x284] : +# 35| mu35_3978(String) = Uninitialized[x284] : &:r35_3977 +# 35| r35_3979(glval) = FunctionAddress[String] : +# 35| v35_3980(void) = Call[String] : func:r35_3979, this:r35_3977 +# 35| mu35_3981(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3982(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3977 +# 35| r35_3983(glval) = VariableAddress[x284] : +# 35| r35_3984(glval) = FunctionAddress[~String] : +# 35| v35_3985(void) = Call[~String] : func:r35_3984, this:r35_3983 +# 35| mu35_3986(unknown) = ^CallSideEffect : ~m? +# 35| v35_3987(void) = ^IndirectReadSideEffect[-1] : &:r35_3983, ~m? +# 35| mu35_3988(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3983 +# 35| r35_3989(bool) = Constant[0] : +# 35| v35_3990(void) = ConditionalBranch : r35_3989 #-----| False -> Block 285 #-----| True -> Block 1026 -# 874| Block 285 -# 874| r874_1(glval) = VariableAddress[x285] : -# 874| mu874_2(String) = Uninitialized[x285] : &:r874_1 -# 874| r874_3(glval) = FunctionAddress[String] : -# 874| v874_4(void) = Call[String] : func:r874_3, this:r874_1 -# 874| mu874_5(unknown) = ^CallSideEffect : ~m? -# 874| mu874_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r874_1 -# 875| r875_1(glval) = VariableAddress[x285] : -# 875| r875_2(glval) = FunctionAddress[~String] : -# 875| v875_3(void) = Call[~String] : func:r875_2, this:r875_1 -# 875| mu875_4(unknown) = ^CallSideEffect : ~m? -# 875| v875_5(void) = ^IndirectReadSideEffect[-1] : &:r875_1, ~m? -# 875| mu875_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r875_1 -# 875| r875_7(bool) = Constant[0] : -# 875| v875_8(void) = ConditionalBranch : r875_7 +# 35| Block 285 +# 35| r35_3991(glval) = VariableAddress[x285] : +# 35| mu35_3992(String) = Uninitialized[x285] : &:r35_3991 +# 35| r35_3993(glval) = FunctionAddress[String] : +# 35| v35_3994(void) = Call[String] : func:r35_3993, this:r35_3991 +# 35| mu35_3995(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3996(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3991 +# 35| r35_3997(glval) = VariableAddress[x285] : +# 35| r35_3998(glval) = FunctionAddress[~String] : +# 35| v35_3999(void) = Call[~String] : func:r35_3998, this:r35_3997 +# 35| mu35_4000(unknown) = ^CallSideEffect : ~m? +# 35| v35_4001(void) = ^IndirectReadSideEffect[-1] : &:r35_3997, ~m? +# 35| mu35_4002(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3997 +# 35| r35_4003(bool) = Constant[0] : +# 35| v35_4004(void) = ConditionalBranch : r35_4003 #-----| False -> Block 286 #-----| True -> Block 1026 -# 877| Block 286 -# 877| r877_1(glval) = VariableAddress[x286] : -# 877| mu877_2(String) = Uninitialized[x286] : &:r877_1 -# 877| r877_3(glval) = FunctionAddress[String] : -# 877| v877_4(void) = Call[String] : func:r877_3, this:r877_1 -# 877| mu877_5(unknown) = ^CallSideEffect : ~m? -# 877| mu877_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r877_1 -# 878| r878_1(glval) = VariableAddress[x286] : -# 878| r878_2(glval) = FunctionAddress[~String] : -# 878| v878_3(void) = Call[~String] : func:r878_2, this:r878_1 -# 878| mu878_4(unknown) = ^CallSideEffect : ~m? -# 878| v878_5(void) = ^IndirectReadSideEffect[-1] : &:r878_1, ~m? -# 878| mu878_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r878_1 -# 878| r878_7(bool) = Constant[0] : -# 878| v878_8(void) = ConditionalBranch : r878_7 +# 35| Block 286 +# 35| r35_4005(glval) = VariableAddress[x286] : +# 35| mu35_4006(String) = Uninitialized[x286] : &:r35_4005 +# 35| r35_4007(glval) = FunctionAddress[String] : +# 35| v35_4008(void) = Call[String] : func:r35_4007, this:r35_4005 +# 35| mu35_4009(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4010(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4005 +# 35| r35_4011(glval) = VariableAddress[x286] : +# 35| r35_4012(glval) = FunctionAddress[~String] : +# 35| v35_4013(void) = Call[~String] : func:r35_4012, this:r35_4011 +# 35| mu35_4014(unknown) = ^CallSideEffect : ~m? +# 35| v35_4015(void) = ^IndirectReadSideEffect[-1] : &:r35_4011, ~m? +# 35| mu35_4016(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4011 +# 35| r35_4017(bool) = Constant[0] : +# 35| v35_4018(void) = ConditionalBranch : r35_4017 #-----| False -> Block 287 #-----| True -> Block 1026 -# 880| Block 287 -# 880| r880_1(glval) = VariableAddress[x287] : -# 880| mu880_2(String) = Uninitialized[x287] : &:r880_1 -# 880| r880_3(glval) = FunctionAddress[String] : -# 880| v880_4(void) = Call[String] : func:r880_3, this:r880_1 -# 880| mu880_5(unknown) = ^CallSideEffect : ~m? -# 880| mu880_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r880_1 -# 881| r881_1(glval) = VariableAddress[x287] : -# 881| r881_2(glval) = FunctionAddress[~String] : -# 881| v881_3(void) = Call[~String] : func:r881_2, this:r881_1 -# 881| mu881_4(unknown) = ^CallSideEffect : ~m? -# 881| v881_5(void) = ^IndirectReadSideEffect[-1] : &:r881_1, ~m? -# 881| mu881_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r881_1 -# 881| r881_7(bool) = Constant[0] : -# 881| v881_8(void) = ConditionalBranch : r881_7 +# 35| Block 287 +# 35| r35_4019(glval) = VariableAddress[x287] : +# 35| mu35_4020(String) = Uninitialized[x287] : &:r35_4019 +# 35| r35_4021(glval) = FunctionAddress[String] : +# 35| v35_4022(void) = Call[String] : func:r35_4021, this:r35_4019 +# 35| mu35_4023(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4024(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4019 +# 35| r35_4025(glval) = VariableAddress[x287] : +# 35| r35_4026(glval) = FunctionAddress[~String] : +# 35| v35_4027(void) = Call[~String] : func:r35_4026, this:r35_4025 +# 35| mu35_4028(unknown) = ^CallSideEffect : ~m? +# 35| v35_4029(void) = ^IndirectReadSideEffect[-1] : &:r35_4025, ~m? +# 35| mu35_4030(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4025 +# 35| r35_4031(bool) = Constant[0] : +# 35| v35_4032(void) = ConditionalBranch : r35_4031 #-----| False -> Block 288 #-----| True -> Block 1026 -# 883| Block 288 -# 883| r883_1(glval) = VariableAddress[x288] : -# 883| mu883_2(String) = Uninitialized[x288] : &:r883_1 -# 883| r883_3(glval) = FunctionAddress[String] : -# 883| v883_4(void) = Call[String] : func:r883_3, this:r883_1 -# 883| mu883_5(unknown) = ^CallSideEffect : ~m? -# 883| mu883_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r883_1 -# 884| r884_1(glval) = VariableAddress[x288] : -# 884| r884_2(glval) = FunctionAddress[~String] : -# 884| v884_3(void) = Call[~String] : func:r884_2, this:r884_1 -# 884| mu884_4(unknown) = ^CallSideEffect : ~m? -# 884| v884_5(void) = ^IndirectReadSideEffect[-1] : &:r884_1, ~m? -# 884| mu884_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r884_1 -# 884| r884_7(bool) = Constant[0] : -# 884| v884_8(void) = ConditionalBranch : r884_7 +# 35| Block 288 +# 35| r35_4033(glval) = VariableAddress[x288] : +# 35| mu35_4034(String) = Uninitialized[x288] : &:r35_4033 +# 35| r35_4035(glval) = FunctionAddress[String] : +# 35| v35_4036(void) = Call[String] : func:r35_4035, this:r35_4033 +# 35| mu35_4037(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4038(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4033 +# 35| r35_4039(glval) = VariableAddress[x288] : +# 35| r35_4040(glval) = FunctionAddress[~String] : +# 35| v35_4041(void) = Call[~String] : func:r35_4040, this:r35_4039 +# 35| mu35_4042(unknown) = ^CallSideEffect : ~m? +# 35| v35_4043(void) = ^IndirectReadSideEffect[-1] : &:r35_4039, ~m? +# 35| mu35_4044(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4039 +# 35| r35_4045(bool) = Constant[0] : +# 35| v35_4046(void) = ConditionalBranch : r35_4045 #-----| False -> Block 289 #-----| True -> Block 1026 -# 886| Block 289 -# 886| r886_1(glval) = VariableAddress[x289] : -# 886| mu886_2(String) = Uninitialized[x289] : &:r886_1 -# 886| r886_3(glval) = FunctionAddress[String] : -# 886| v886_4(void) = Call[String] : func:r886_3, this:r886_1 -# 886| mu886_5(unknown) = ^CallSideEffect : ~m? -# 886| mu886_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r886_1 -# 887| r887_1(glval) = VariableAddress[x289] : -# 887| r887_2(glval) = FunctionAddress[~String] : -# 887| v887_3(void) = Call[~String] : func:r887_2, this:r887_1 -# 887| mu887_4(unknown) = ^CallSideEffect : ~m? -# 887| v887_5(void) = ^IndirectReadSideEffect[-1] : &:r887_1, ~m? -# 887| mu887_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r887_1 -# 887| r887_7(bool) = Constant[0] : -# 887| v887_8(void) = ConditionalBranch : r887_7 +# 35| Block 289 +# 35| r35_4047(glval) = VariableAddress[x289] : +# 35| mu35_4048(String) = Uninitialized[x289] : &:r35_4047 +# 35| r35_4049(glval) = FunctionAddress[String] : +# 35| v35_4050(void) = Call[String] : func:r35_4049, this:r35_4047 +# 35| mu35_4051(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4052(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4047 +# 35| r35_4053(glval) = VariableAddress[x289] : +# 35| r35_4054(glval) = FunctionAddress[~String] : +# 35| v35_4055(void) = Call[~String] : func:r35_4054, this:r35_4053 +# 35| mu35_4056(unknown) = ^CallSideEffect : ~m? +# 35| v35_4057(void) = ^IndirectReadSideEffect[-1] : &:r35_4053, ~m? +# 35| mu35_4058(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4053 +# 35| r35_4059(bool) = Constant[0] : +# 35| v35_4060(void) = ConditionalBranch : r35_4059 #-----| False -> Block 290 #-----| True -> Block 1026 -# 889| Block 290 -# 889| r889_1(glval) = VariableAddress[x290] : -# 889| mu889_2(String) = Uninitialized[x290] : &:r889_1 -# 889| r889_3(glval) = FunctionAddress[String] : -# 889| v889_4(void) = Call[String] : func:r889_3, this:r889_1 -# 889| mu889_5(unknown) = ^CallSideEffect : ~m? -# 889| mu889_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r889_1 -# 890| r890_1(glval) = VariableAddress[x290] : -# 890| r890_2(glval) = FunctionAddress[~String] : -# 890| v890_3(void) = Call[~String] : func:r890_2, this:r890_1 -# 890| mu890_4(unknown) = ^CallSideEffect : ~m? -# 890| v890_5(void) = ^IndirectReadSideEffect[-1] : &:r890_1, ~m? -# 890| mu890_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r890_1 -# 890| r890_7(bool) = Constant[0] : -# 890| v890_8(void) = ConditionalBranch : r890_7 +# 35| Block 290 +# 35| r35_4061(glval) = VariableAddress[x290] : +# 35| mu35_4062(String) = Uninitialized[x290] : &:r35_4061 +# 35| r35_4063(glval) = FunctionAddress[String] : +# 35| v35_4064(void) = Call[String] : func:r35_4063, this:r35_4061 +# 35| mu35_4065(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4066(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4061 +# 35| r35_4067(glval) = VariableAddress[x290] : +# 35| r35_4068(glval) = FunctionAddress[~String] : +# 35| v35_4069(void) = Call[~String] : func:r35_4068, this:r35_4067 +# 35| mu35_4070(unknown) = ^CallSideEffect : ~m? +# 35| v35_4071(void) = ^IndirectReadSideEffect[-1] : &:r35_4067, ~m? +# 35| mu35_4072(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4067 +# 35| r35_4073(bool) = Constant[0] : +# 35| v35_4074(void) = ConditionalBranch : r35_4073 #-----| False -> Block 291 #-----| True -> Block 1026 -# 892| Block 291 -# 892| r892_1(glval) = VariableAddress[x291] : -# 892| mu892_2(String) = Uninitialized[x291] : &:r892_1 -# 892| r892_3(glval) = FunctionAddress[String] : -# 892| v892_4(void) = Call[String] : func:r892_3, this:r892_1 -# 892| mu892_5(unknown) = ^CallSideEffect : ~m? -# 892| mu892_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r892_1 -# 893| r893_1(glval) = VariableAddress[x291] : -# 893| r893_2(glval) = FunctionAddress[~String] : -# 893| v893_3(void) = Call[~String] : func:r893_2, this:r893_1 -# 893| mu893_4(unknown) = ^CallSideEffect : ~m? -# 893| v893_5(void) = ^IndirectReadSideEffect[-1] : &:r893_1, ~m? -# 893| mu893_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r893_1 -# 893| r893_7(bool) = Constant[0] : -# 893| v893_8(void) = ConditionalBranch : r893_7 +# 35| Block 291 +# 35| r35_4075(glval) = VariableAddress[x291] : +# 35| mu35_4076(String) = Uninitialized[x291] : &:r35_4075 +# 35| r35_4077(glval) = FunctionAddress[String] : +# 35| v35_4078(void) = Call[String] : func:r35_4077, this:r35_4075 +# 35| mu35_4079(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4080(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4075 +# 35| r35_4081(glval) = VariableAddress[x291] : +# 35| r35_4082(glval) = FunctionAddress[~String] : +# 35| v35_4083(void) = Call[~String] : func:r35_4082, this:r35_4081 +# 35| mu35_4084(unknown) = ^CallSideEffect : ~m? +# 35| v35_4085(void) = ^IndirectReadSideEffect[-1] : &:r35_4081, ~m? +# 35| mu35_4086(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4081 +# 35| r35_4087(bool) = Constant[0] : +# 35| v35_4088(void) = ConditionalBranch : r35_4087 #-----| False -> Block 292 #-----| True -> Block 1026 -# 895| Block 292 -# 895| r895_1(glval) = VariableAddress[x292] : -# 895| mu895_2(String) = Uninitialized[x292] : &:r895_1 -# 895| r895_3(glval) = FunctionAddress[String] : -# 895| v895_4(void) = Call[String] : func:r895_3, this:r895_1 -# 895| mu895_5(unknown) = ^CallSideEffect : ~m? -# 895| mu895_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r895_1 -# 896| r896_1(glval) = VariableAddress[x292] : -# 896| r896_2(glval) = FunctionAddress[~String] : -# 896| v896_3(void) = Call[~String] : func:r896_2, this:r896_1 -# 896| mu896_4(unknown) = ^CallSideEffect : ~m? -# 896| v896_5(void) = ^IndirectReadSideEffect[-1] : &:r896_1, ~m? -# 896| mu896_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r896_1 -# 896| r896_7(bool) = Constant[0] : -# 896| v896_8(void) = ConditionalBranch : r896_7 +# 35| Block 292 +# 35| r35_4089(glval) = VariableAddress[x292] : +# 35| mu35_4090(String) = Uninitialized[x292] : &:r35_4089 +# 35| r35_4091(glval) = FunctionAddress[String] : +# 35| v35_4092(void) = Call[String] : func:r35_4091, this:r35_4089 +# 35| mu35_4093(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4094(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4089 +# 35| r35_4095(glval) = VariableAddress[x292] : +# 35| r35_4096(glval) = FunctionAddress[~String] : +# 35| v35_4097(void) = Call[~String] : func:r35_4096, this:r35_4095 +# 35| mu35_4098(unknown) = ^CallSideEffect : ~m? +# 35| v35_4099(void) = ^IndirectReadSideEffect[-1] : &:r35_4095, ~m? +# 35| mu35_4100(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4095 +# 35| r35_4101(bool) = Constant[0] : +# 35| v35_4102(void) = ConditionalBranch : r35_4101 #-----| False -> Block 293 #-----| True -> Block 1026 -# 898| Block 293 -# 898| r898_1(glval) = VariableAddress[x293] : -# 898| mu898_2(String) = Uninitialized[x293] : &:r898_1 -# 898| r898_3(glval) = FunctionAddress[String] : -# 898| v898_4(void) = Call[String] : func:r898_3, this:r898_1 -# 898| mu898_5(unknown) = ^CallSideEffect : ~m? -# 898| mu898_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r898_1 -# 899| r899_1(glval) = VariableAddress[x293] : -# 899| r899_2(glval) = FunctionAddress[~String] : -# 899| v899_3(void) = Call[~String] : func:r899_2, this:r899_1 -# 899| mu899_4(unknown) = ^CallSideEffect : ~m? -# 899| v899_5(void) = ^IndirectReadSideEffect[-1] : &:r899_1, ~m? -# 899| mu899_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r899_1 -# 899| r899_7(bool) = Constant[0] : -# 899| v899_8(void) = ConditionalBranch : r899_7 +# 35| Block 293 +# 35| r35_4103(glval) = VariableAddress[x293] : +# 35| mu35_4104(String) = Uninitialized[x293] : &:r35_4103 +# 35| r35_4105(glval) = FunctionAddress[String] : +# 35| v35_4106(void) = Call[String] : func:r35_4105, this:r35_4103 +# 35| mu35_4107(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4108(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4103 +# 35| r35_4109(glval) = VariableAddress[x293] : +# 35| r35_4110(glval) = FunctionAddress[~String] : +# 35| v35_4111(void) = Call[~String] : func:r35_4110, this:r35_4109 +# 35| mu35_4112(unknown) = ^CallSideEffect : ~m? +# 35| v35_4113(void) = ^IndirectReadSideEffect[-1] : &:r35_4109, ~m? +# 35| mu35_4114(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4109 +# 35| r35_4115(bool) = Constant[0] : +# 35| v35_4116(void) = ConditionalBranch : r35_4115 #-----| False -> Block 294 #-----| True -> Block 1026 -# 901| Block 294 -# 901| r901_1(glval) = VariableAddress[x294] : -# 901| mu901_2(String) = Uninitialized[x294] : &:r901_1 -# 901| r901_3(glval) = FunctionAddress[String] : -# 901| v901_4(void) = Call[String] : func:r901_3, this:r901_1 -# 901| mu901_5(unknown) = ^CallSideEffect : ~m? -# 901| mu901_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r901_1 -# 902| r902_1(glval) = VariableAddress[x294] : -# 902| r902_2(glval) = FunctionAddress[~String] : -# 902| v902_3(void) = Call[~String] : func:r902_2, this:r902_1 -# 902| mu902_4(unknown) = ^CallSideEffect : ~m? -# 902| v902_5(void) = ^IndirectReadSideEffect[-1] : &:r902_1, ~m? -# 902| mu902_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r902_1 -# 902| r902_7(bool) = Constant[0] : -# 902| v902_8(void) = ConditionalBranch : r902_7 +# 35| Block 294 +# 35| r35_4117(glval) = VariableAddress[x294] : +# 35| mu35_4118(String) = Uninitialized[x294] : &:r35_4117 +# 35| r35_4119(glval) = FunctionAddress[String] : +# 35| v35_4120(void) = Call[String] : func:r35_4119, this:r35_4117 +# 35| mu35_4121(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4122(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4117 +# 35| r35_4123(glval) = VariableAddress[x294] : +# 35| r35_4124(glval) = FunctionAddress[~String] : +# 35| v35_4125(void) = Call[~String] : func:r35_4124, this:r35_4123 +# 35| mu35_4126(unknown) = ^CallSideEffect : ~m? +# 35| v35_4127(void) = ^IndirectReadSideEffect[-1] : &:r35_4123, ~m? +# 35| mu35_4128(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4123 +# 35| r35_4129(bool) = Constant[0] : +# 35| v35_4130(void) = ConditionalBranch : r35_4129 #-----| False -> Block 295 #-----| True -> Block 1026 -# 904| Block 295 -# 904| r904_1(glval) = VariableAddress[x295] : -# 904| mu904_2(String) = Uninitialized[x295] : &:r904_1 -# 904| r904_3(glval) = FunctionAddress[String] : -# 904| v904_4(void) = Call[String] : func:r904_3, this:r904_1 -# 904| mu904_5(unknown) = ^CallSideEffect : ~m? -# 904| mu904_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r904_1 -# 905| r905_1(glval) = VariableAddress[x295] : -# 905| r905_2(glval) = FunctionAddress[~String] : -# 905| v905_3(void) = Call[~String] : func:r905_2, this:r905_1 -# 905| mu905_4(unknown) = ^CallSideEffect : ~m? -# 905| v905_5(void) = ^IndirectReadSideEffect[-1] : &:r905_1, ~m? -# 905| mu905_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r905_1 -# 905| r905_7(bool) = Constant[0] : -# 905| v905_8(void) = ConditionalBranch : r905_7 +# 35| Block 295 +# 35| r35_4131(glval) = VariableAddress[x295] : +# 35| mu35_4132(String) = Uninitialized[x295] : &:r35_4131 +# 35| r35_4133(glval) = FunctionAddress[String] : +# 35| v35_4134(void) = Call[String] : func:r35_4133, this:r35_4131 +# 35| mu35_4135(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4136(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4131 +# 35| r35_4137(glval) = VariableAddress[x295] : +# 35| r35_4138(glval) = FunctionAddress[~String] : +# 35| v35_4139(void) = Call[~String] : func:r35_4138, this:r35_4137 +# 35| mu35_4140(unknown) = ^CallSideEffect : ~m? +# 35| v35_4141(void) = ^IndirectReadSideEffect[-1] : &:r35_4137, ~m? +# 35| mu35_4142(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4137 +# 35| r35_4143(bool) = Constant[0] : +# 35| v35_4144(void) = ConditionalBranch : r35_4143 #-----| False -> Block 296 #-----| True -> Block 1026 -# 907| Block 296 -# 907| r907_1(glval) = VariableAddress[x296] : -# 907| mu907_2(String) = Uninitialized[x296] : &:r907_1 -# 907| r907_3(glval) = FunctionAddress[String] : -# 907| v907_4(void) = Call[String] : func:r907_3, this:r907_1 -# 907| mu907_5(unknown) = ^CallSideEffect : ~m? -# 907| mu907_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r907_1 -# 908| r908_1(glval) = VariableAddress[x296] : -# 908| r908_2(glval) = FunctionAddress[~String] : -# 908| v908_3(void) = Call[~String] : func:r908_2, this:r908_1 -# 908| mu908_4(unknown) = ^CallSideEffect : ~m? -# 908| v908_5(void) = ^IndirectReadSideEffect[-1] : &:r908_1, ~m? -# 908| mu908_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r908_1 -# 908| r908_7(bool) = Constant[0] : -# 908| v908_8(void) = ConditionalBranch : r908_7 +# 35| Block 296 +# 35| r35_4145(glval) = VariableAddress[x296] : +# 35| mu35_4146(String) = Uninitialized[x296] : &:r35_4145 +# 35| r35_4147(glval) = FunctionAddress[String] : +# 35| v35_4148(void) = Call[String] : func:r35_4147, this:r35_4145 +# 35| mu35_4149(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4150(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4145 +# 35| r35_4151(glval) = VariableAddress[x296] : +# 35| r35_4152(glval) = FunctionAddress[~String] : +# 35| v35_4153(void) = Call[~String] : func:r35_4152, this:r35_4151 +# 35| mu35_4154(unknown) = ^CallSideEffect : ~m? +# 35| v35_4155(void) = ^IndirectReadSideEffect[-1] : &:r35_4151, ~m? +# 35| mu35_4156(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4151 +# 35| r35_4157(bool) = Constant[0] : +# 35| v35_4158(void) = ConditionalBranch : r35_4157 #-----| False -> Block 297 #-----| True -> Block 1026 -# 910| Block 297 -# 910| r910_1(glval) = VariableAddress[x297] : -# 910| mu910_2(String) = Uninitialized[x297] : &:r910_1 -# 910| r910_3(glval) = FunctionAddress[String] : -# 910| v910_4(void) = Call[String] : func:r910_3, this:r910_1 -# 910| mu910_5(unknown) = ^CallSideEffect : ~m? -# 910| mu910_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r910_1 -# 911| r911_1(glval) = VariableAddress[x297] : -# 911| r911_2(glval) = FunctionAddress[~String] : -# 911| v911_3(void) = Call[~String] : func:r911_2, this:r911_1 -# 911| mu911_4(unknown) = ^CallSideEffect : ~m? -# 911| v911_5(void) = ^IndirectReadSideEffect[-1] : &:r911_1, ~m? -# 911| mu911_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r911_1 -# 911| r911_7(bool) = Constant[0] : -# 911| v911_8(void) = ConditionalBranch : r911_7 +# 35| Block 297 +# 35| r35_4159(glval) = VariableAddress[x297] : +# 35| mu35_4160(String) = Uninitialized[x297] : &:r35_4159 +# 35| r35_4161(glval) = FunctionAddress[String] : +# 35| v35_4162(void) = Call[String] : func:r35_4161, this:r35_4159 +# 35| mu35_4163(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4164(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4159 +# 35| r35_4165(glval) = VariableAddress[x297] : +# 35| r35_4166(glval) = FunctionAddress[~String] : +# 35| v35_4167(void) = Call[~String] : func:r35_4166, this:r35_4165 +# 35| mu35_4168(unknown) = ^CallSideEffect : ~m? +# 35| v35_4169(void) = ^IndirectReadSideEffect[-1] : &:r35_4165, ~m? +# 35| mu35_4170(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4165 +# 35| r35_4171(bool) = Constant[0] : +# 35| v35_4172(void) = ConditionalBranch : r35_4171 #-----| False -> Block 298 #-----| True -> Block 1026 -# 913| Block 298 -# 913| r913_1(glval) = VariableAddress[x298] : -# 913| mu913_2(String) = Uninitialized[x298] : &:r913_1 -# 913| r913_3(glval) = FunctionAddress[String] : -# 913| v913_4(void) = Call[String] : func:r913_3, this:r913_1 -# 913| mu913_5(unknown) = ^CallSideEffect : ~m? -# 913| mu913_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r913_1 -# 914| r914_1(glval) = VariableAddress[x298] : -# 914| r914_2(glval) = FunctionAddress[~String] : -# 914| v914_3(void) = Call[~String] : func:r914_2, this:r914_1 -# 914| mu914_4(unknown) = ^CallSideEffect : ~m? -# 914| v914_5(void) = ^IndirectReadSideEffect[-1] : &:r914_1, ~m? -# 914| mu914_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r914_1 -# 914| r914_7(bool) = Constant[0] : -# 914| v914_8(void) = ConditionalBranch : r914_7 +# 35| Block 298 +# 35| r35_4173(glval) = VariableAddress[x298] : +# 35| mu35_4174(String) = Uninitialized[x298] : &:r35_4173 +# 35| r35_4175(glval) = FunctionAddress[String] : +# 35| v35_4176(void) = Call[String] : func:r35_4175, this:r35_4173 +# 35| mu35_4177(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4178(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4173 +# 35| r35_4179(glval) = VariableAddress[x298] : +# 35| r35_4180(glval) = FunctionAddress[~String] : +# 35| v35_4181(void) = Call[~String] : func:r35_4180, this:r35_4179 +# 35| mu35_4182(unknown) = ^CallSideEffect : ~m? +# 35| v35_4183(void) = ^IndirectReadSideEffect[-1] : &:r35_4179, ~m? +# 35| mu35_4184(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4179 +# 35| r35_4185(bool) = Constant[0] : +# 35| v35_4186(void) = ConditionalBranch : r35_4185 #-----| False -> Block 299 #-----| True -> Block 1026 -# 916| Block 299 -# 916| r916_1(glval) = VariableAddress[x299] : -# 916| mu916_2(String) = Uninitialized[x299] : &:r916_1 -# 916| r916_3(glval) = FunctionAddress[String] : -# 916| v916_4(void) = Call[String] : func:r916_3, this:r916_1 -# 916| mu916_5(unknown) = ^CallSideEffect : ~m? -# 916| mu916_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r916_1 -# 917| r917_1(glval) = VariableAddress[x299] : -# 917| r917_2(glval) = FunctionAddress[~String] : -# 917| v917_3(void) = Call[~String] : func:r917_2, this:r917_1 -# 917| mu917_4(unknown) = ^CallSideEffect : ~m? -# 917| v917_5(void) = ^IndirectReadSideEffect[-1] : &:r917_1, ~m? -# 917| mu917_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r917_1 -# 917| r917_7(bool) = Constant[0] : -# 917| v917_8(void) = ConditionalBranch : r917_7 +# 35| Block 299 +# 35| r35_4187(glval) = VariableAddress[x299] : +# 35| mu35_4188(String) = Uninitialized[x299] : &:r35_4187 +# 35| r35_4189(glval) = FunctionAddress[String] : +# 35| v35_4190(void) = Call[String] : func:r35_4189, this:r35_4187 +# 35| mu35_4191(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4192(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4187 +# 35| r35_4193(glval) = VariableAddress[x299] : +# 35| r35_4194(glval) = FunctionAddress[~String] : +# 35| v35_4195(void) = Call[~String] : func:r35_4194, this:r35_4193 +# 35| mu35_4196(unknown) = ^CallSideEffect : ~m? +# 35| v35_4197(void) = ^IndirectReadSideEffect[-1] : &:r35_4193, ~m? +# 35| mu35_4198(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4193 +# 35| r35_4199(bool) = Constant[0] : +# 35| v35_4200(void) = ConditionalBranch : r35_4199 #-----| False -> Block 300 #-----| True -> Block 1026 -# 919| Block 300 -# 919| r919_1(glval) = VariableAddress[x300] : -# 919| mu919_2(String) = Uninitialized[x300] : &:r919_1 -# 919| r919_3(glval) = FunctionAddress[String] : -# 919| v919_4(void) = Call[String] : func:r919_3, this:r919_1 -# 919| mu919_5(unknown) = ^CallSideEffect : ~m? -# 919| mu919_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r919_1 -# 920| r920_1(glval) = VariableAddress[x300] : -# 920| r920_2(glval) = FunctionAddress[~String] : -# 920| v920_3(void) = Call[~String] : func:r920_2, this:r920_1 -# 920| mu920_4(unknown) = ^CallSideEffect : ~m? -# 920| v920_5(void) = ^IndirectReadSideEffect[-1] : &:r920_1, ~m? -# 920| mu920_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r920_1 -# 920| r920_7(bool) = Constant[0] : -# 920| v920_8(void) = ConditionalBranch : r920_7 +# 35| Block 300 +# 35| r35_4201(glval) = VariableAddress[x300] : +# 35| mu35_4202(String) = Uninitialized[x300] : &:r35_4201 +# 35| r35_4203(glval) = FunctionAddress[String] : +# 35| v35_4204(void) = Call[String] : func:r35_4203, this:r35_4201 +# 35| mu35_4205(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4206(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4201 +# 35| r35_4207(glval) = VariableAddress[x300] : +# 35| r35_4208(glval) = FunctionAddress[~String] : +# 35| v35_4209(void) = Call[~String] : func:r35_4208, this:r35_4207 +# 35| mu35_4210(unknown) = ^CallSideEffect : ~m? +# 35| v35_4211(void) = ^IndirectReadSideEffect[-1] : &:r35_4207, ~m? +# 35| mu35_4212(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4207 +# 35| r35_4213(bool) = Constant[0] : +# 35| v35_4214(void) = ConditionalBranch : r35_4213 #-----| False -> Block 301 #-----| True -> Block 1026 -# 922| Block 301 -# 922| r922_1(glval) = VariableAddress[x301] : -# 922| mu922_2(String) = Uninitialized[x301] : &:r922_1 -# 922| r922_3(glval) = FunctionAddress[String] : -# 922| v922_4(void) = Call[String] : func:r922_3, this:r922_1 -# 922| mu922_5(unknown) = ^CallSideEffect : ~m? -# 922| mu922_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r922_1 -# 923| r923_1(glval) = VariableAddress[x301] : -# 923| r923_2(glval) = FunctionAddress[~String] : -# 923| v923_3(void) = Call[~String] : func:r923_2, this:r923_1 -# 923| mu923_4(unknown) = ^CallSideEffect : ~m? -# 923| v923_5(void) = ^IndirectReadSideEffect[-1] : &:r923_1, ~m? -# 923| mu923_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r923_1 -# 923| r923_7(bool) = Constant[0] : -# 923| v923_8(void) = ConditionalBranch : r923_7 +# 35| Block 301 +# 35| r35_4215(glval) = VariableAddress[x301] : +# 35| mu35_4216(String) = Uninitialized[x301] : &:r35_4215 +# 35| r35_4217(glval) = FunctionAddress[String] : +# 35| v35_4218(void) = Call[String] : func:r35_4217, this:r35_4215 +# 35| mu35_4219(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4220(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4215 +# 35| r35_4221(glval) = VariableAddress[x301] : +# 35| r35_4222(glval) = FunctionAddress[~String] : +# 35| v35_4223(void) = Call[~String] : func:r35_4222, this:r35_4221 +# 35| mu35_4224(unknown) = ^CallSideEffect : ~m? +# 35| v35_4225(void) = ^IndirectReadSideEffect[-1] : &:r35_4221, ~m? +# 35| mu35_4226(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4221 +# 35| r35_4227(bool) = Constant[0] : +# 35| v35_4228(void) = ConditionalBranch : r35_4227 #-----| False -> Block 302 #-----| True -> Block 1026 -# 925| Block 302 -# 925| r925_1(glval) = VariableAddress[x302] : -# 925| mu925_2(String) = Uninitialized[x302] : &:r925_1 -# 925| r925_3(glval) = FunctionAddress[String] : -# 925| v925_4(void) = Call[String] : func:r925_3, this:r925_1 -# 925| mu925_5(unknown) = ^CallSideEffect : ~m? -# 925| mu925_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r925_1 -# 926| r926_1(glval) = VariableAddress[x302] : -# 926| r926_2(glval) = FunctionAddress[~String] : -# 926| v926_3(void) = Call[~String] : func:r926_2, this:r926_1 -# 926| mu926_4(unknown) = ^CallSideEffect : ~m? -# 926| v926_5(void) = ^IndirectReadSideEffect[-1] : &:r926_1, ~m? -# 926| mu926_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r926_1 -# 926| r926_7(bool) = Constant[0] : -# 926| v926_8(void) = ConditionalBranch : r926_7 +# 35| Block 302 +# 35| r35_4229(glval) = VariableAddress[x302] : +# 35| mu35_4230(String) = Uninitialized[x302] : &:r35_4229 +# 35| r35_4231(glval) = FunctionAddress[String] : +# 35| v35_4232(void) = Call[String] : func:r35_4231, this:r35_4229 +# 35| mu35_4233(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4234(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4229 +# 35| r35_4235(glval) = VariableAddress[x302] : +# 35| r35_4236(glval) = FunctionAddress[~String] : +# 35| v35_4237(void) = Call[~String] : func:r35_4236, this:r35_4235 +# 35| mu35_4238(unknown) = ^CallSideEffect : ~m? +# 35| v35_4239(void) = ^IndirectReadSideEffect[-1] : &:r35_4235, ~m? +# 35| mu35_4240(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4235 +# 35| r35_4241(bool) = Constant[0] : +# 35| v35_4242(void) = ConditionalBranch : r35_4241 #-----| False -> Block 303 #-----| True -> Block 1026 -# 928| Block 303 -# 928| r928_1(glval) = VariableAddress[x303] : -# 928| mu928_2(String) = Uninitialized[x303] : &:r928_1 -# 928| r928_3(glval) = FunctionAddress[String] : -# 928| v928_4(void) = Call[String] : func:r928_3, this:r928_1 -# 928| mu928_5(unknown) = ^CallSideEffect : ~m? -# 928| mu928_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r928_1 -# 929| r929_1(glval) = VariableAddress[x303] : -# 929| r929_2(glval) = FunctionAddress[~String] : -# 929| v929_3(void) = Call[~String] : func:r929_2, this:r929_1 -# 929| mu929_4(unknown) = ^CallSideEffect : ~m? -# 929| v929_5(void) = ^IndirectReadSideEffect[-1] : &:r929_1, ~m? -# 929| mu929_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r929_1 -# 929| r929_7(bool) = Constant[0] : -# 929| v929_8(void) = ConditionalBranch : r929_7 +# 35| Block 303 +# 35| r35_4243(glval) = VariableAddress[x303] : +# 35| mu35_4244(String) = Uninitialized[x303] : &:r35_4243 +# 35| r35_4245(glval) = FunctionAddress[String] : +# 35| v35_4246(void) = Call[String] : func:r35_4245, this:r35_4243 +# 35| mu35_4247(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4248(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4243 +# 35| r35_4249(glval) = VariableAddress[x303] : +# 35| r35_4250(glval) = FunctionAddress[~String] : +# 35| v35_4251(void) = Call[~String] : func:r35_4250, this:r35_4249 +# 35| mu35_4252(unknown) = ^CallSideEffect : ~m? +# 35| v35_4253(void) = ^IndirectReadSideEffect[-1] : &:r35_4249, ~m? +# 35| mu35_4254(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4249 +# 35| r35_4255(bool) = Constant[0] : +# 35| v35_4256(void) = ConditionalBranch : r35_4255 #-----| False -> Block 304 #-----| True -> Block 1026 -# 931| Block 304 -# 931| r931_1(glval) = VariableAddress[x304] : -# 931| mu931_2(String) = Uninitialized[x304] : &:r931_1 -# 931| r931_3(glval) = FunctionAddress[String] : -# 931| v931_4(void) = Call[String] : func:r931_3, this:r931_1 -# 931| mu931_5(unknown) = ^CallSideEffect : ~m? -# 931| mu931_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r931_1 -# 932| r932_1(glval) = VariableAddress[x304] : -# 932| r932_2(glval) = FunctionAddress[~String] : -# 932| v932_3(void) = Call[~String] : func:r932_2, this:r932_1 -# 932| mu932_4(unknown) = ^CallSideEffect : ~m? -# 932| v932_5(void) = ^IndirectReadSideEffect[-1] : &:r932_1, ~m? -# 932| mu932_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r932_1 -# 932| r932_7(bool) = Constant[0] : -# 932| v932_8(void) = ConditionalBranch : r932_7 +# 35| Block 304 +# 35| r35_4257(glval) = VariableAddress[x304] : +# 35| mu35_4258(String) = Uninitialized[x304] : &:r35_4257 +# 35| r35_4259(glval) = FunctionAddress[String] : +# 35| v35_4260(void) = Call[String] : func:r35_4259, this:r35_4257 +# 35| mu35_4261(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4262(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4257 +# 35| r35_4263(glval) = VariableAddress[x304] : +# 35| r35_4264(glval) = FunctionAddress[~String] : +# 35| v35_4265(void) = Call[~String] : func:r35_4264, this:r35_4263 +# 35| mu35_4266(unknown) = ^CallSideEffect : ~m? +# 35| v35_4267(void) = ^IndirectReadSideEffect[-1] : &:r35_4263, ~m? +# 35| mu35_4268(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4263 +# 35| r35_4269(bool) = Constant[0] : +# 35| v35_4270(void) = ConditionalBranch : r35_4269 #-----| False -> Block 305 #-----| True -> Block 1026 -# 934| Block 305 -# 934| r934_1(glval) = VariableAddress[x305] : -# 934| mu934_2(String) = Uninitialized[x305] : &:r934_1 -# 934| r934_3(glval) = FunctionAddress[String] : -# 934| v934_4(void) = Call[String] : func:r934_3, this:r934_1 -# 934| mu934_5(unknown) = ^CallSideEffect : ~m? -# 934| mu934_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r934_1 -# 935| r935_1(glval) = VariableAddress[x305] : -# 935| r935_2(glval) = FunctionAddress[~String] : -# 935| v935_3(void) = Call[~String] : func:r935_2, this:r935_1 -# 935| mu935_4(unknown) = ^CallSideEffect : ~m? -# 935| v935_5(void) = ^IndirectReadSideEffect[-1] : &:r935_1, ~m? -# 935| mu935_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r935_1 -# 935| r935_7(bool) = Constant[0] : -# 935| v935_8(void) = ConditionalBranch : r935_7 +# 35| Block 305 +# 35| r35_4271(glval) = VariableAddress[x305] : +# 35| mu35_4272(String) = Uninitialized[x305] : &:r35_4271 +# 35| r35_4273(glval) = FunctionAddress[String] : +# 35| v35_4274(void) = Call[String] : func:r35_4273, this:r35_4271 +# 35| mu35_4275(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4276(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4271 +# 35| r35_4277(glval) = VariableAddress[x305] : +# 35| r35_4278(glval) = FunctionAddress[~String] : +# 35| v35_4279(void) = Call[~String] : func:r35_4278, this:r35_4277 +# 35| mu35_4280(unknown) = ^CallSideEffect : ~m? +# 35| v35_4281(void) = ^IndirectReadSideEffect[-1] : &:r35_4277, ~m? +# 35| mu35_4282(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4277 +# 35| r35_4283(bool) = Constant[0] : +# 35| v35_4284(void) = ConditionalBranch : r35_4283 #-----| False -> Block 306 #-----| True -> Block 1026 -# 937| Block 306 -# 937| r937_1(glval) = VariableAddress[x306] : -# 937| mu937_2(String) = Uninitialized[x306] : &:r937_1 -# 937| r937_3(glval) = FunctionAddress[String] : -# 937| v937_4(void) = Call[String] : func:r937_3, this:r937_1 -# 937| mu937_5(unknown) = ^CallSideEffect : ~m? -# 937| mu937_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r937_1 -# 938| r938_1(glval) = VariableAddress[x306] : -# 938| r938_2(glval) = FunctionAddress[~String] : -# 938| v938_3(void) = Call[~String] : func:r938_2, this:r938_1 -# 938| mu938_4(unknown) = ^CallSideEffect : ~m? -# 938| v938_5(void) = ^IndirectReadSideEffect[-1] : &:r938_1, ~m? -# 938| mu938_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r938_1 -# 938| r938_7(bool) = Constant[0] : -# 938| v938_8(void) = ConditionalBranch : r938_7 +# 35| Block 306 +# 35| r35_4285(glval) = VariableAddress[x306] : +# 35| mu35_4286(String) = Uninitialized[x306] : &:r35_4285 +# 35| r35_4287(glval) = FunctionAddress[String] : +# 35| v35_4288(void) = Call[String] : func:r35_4287, this:r35_4285 +# 35| mu35_4289(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4290(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4285 +# 35| r35_4291(glval) = VariableAddress[x306] : +# 35| r35_4292(glval) = FunctionAddress[~String] : +# 35| v35_4293(void) = Call[~String] : func:r35_4292, this:r35_4291 +# 35| mu35_4294(unknown) = ^CallSideEffect : ~m? +# 35| v35_4295(void) = ^IndirectReadSideEffect[-1] : &:r35_4291, ~m? +# 35| mu35_4296(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4291 +# 35| r35_4297(bool) = Constant[0] : +# 35| v35_4298(void) = ConditionalBranch : r35_4297 #-----| False -> Block 307 #-----| True -> Block 1026 -# 940| Block 307 -# 940| r940_1(glval) = VariableAddress[x307] : -# 940| mu940_2(String) = Uninitialized[x307] : &:r940_1 -# 940| r940_3(glval) = FunctionAddress[String] : -# 940| v940_4(void) = Call[String] : func:r940_3, this:r940_1 -# 940| mu940_5(unknown) = ^CallSideEffect : ~m? -# 940| mu940_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r940_1 -# 941| r941_1(glval) = VariableAddress[x307] : -# 941| r941_2(glval) = FunctionAddress[~String] : -# 941| v941_3(void) = Call[~String] : func:r941_2, this:r941_1 -# 941| mu941_4(unknown) = ^CallSideEffect : ~m? -# 941| v941_5(void) = ^IndirectReadSideEffect[-1] : &:r941_1, ~m? -# 941| mu941_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r941_1 -# 941| r941_7(bool) = Constant[0] : -# 941| v941_8(void) = ConditionalBranch : r941_7 +# 35| Block 307 +# 35| r35_4299(glval) = VariableAddress[x307] : +# 35| mu35_4300(String) = Uninitialized[x307] : &:r35_4299 +# 35| r35_4301(glval) = FunctionAddress[String] : +# 35| v35_4302(void) = Call[String] : func:r35_4301, this:r35_4299 +# 35| mu35_4303(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4304(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4299 +# 35| r35_4305(glval) = VariableAddress[x307] : +# 35| r35_4306(glval) = FunctionAddress[~String] : +# 35| v35_4307(void) = Call[~String] : func:r35_4306, this:r35_4305 +# 35| mu35_4308(unknown) = ^CallSideEffect : ~m? +# 35| v35_4309(void) = ^IndirectReadSideEffect[-1] : &:r35_4305, ~m? +# 35| mu35_4310(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4305 +# 35| r35_4311(bool) = Constant[0] : +# 35| v35_4312(void) = ConditionalBranch : r35_4311 #-----| False -> Block 308 #-----| True -> Block 1026 -# 943| Block 308 -# 943| r943_1(glval) = VariableAddress[x308] : -# 943| mu943_2(String) = Uninitialized[x308] : &:r943_1 -# 943| r943_3(glval) = FunctionAddress[String] : -# 943| v943_4(void) = Call[String] : func:r943_3, this:r943_1 -# 943| mu943_5(unknown) = ^CallSideEffect : ~m? -# 943| mu943_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r943_1 -# 944| r944_1(glval) = VariableAddress[x308] : -# 944| r944_2(glval) = FunctionAddress[~String] : -# 944| v944_3(void) = Call[~String] : func:r944_2, this:r944_1 -# 944| mu944_4(unknown) = ^CallSideEffect : ~m? -# 944| v944_5(void) = ^IndirectReadSideEffect[-1] : &:r944_1, ~m? -# 944| mu944_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r944_1 -# 944| r944_7(bool) = Constant[0] : -# 944| v944_8(void) = ConditionalBranch : r944_7 +# 35| Block 308 +# 35| r35_4313(glval) = VariableAddress[x308] : +# 35| mu35_4314(String) = Uninitialized[x308] : &:r35_4313 +# 35| r35_4315(glval) = FunctionAddress[String] : +# 35| v35_4316(void) = Call[String] : func:r35_4315, this:r35_4313 +# 35| mu35_4317(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4318(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4313 +# 35| r35_4319(glval) = VariableAddress[x308] : +# 35| r35_4320(glval) = FunctionAddress[~String] : +# 35| v35_4321(void) = Call[~String] : func:r35_4320, this:r35_4319 +# 35| mu35_4322(unknown) = ^CallSideEffect : ~m? +# 35| v35_4323(void) = ^IndirectReadSideEffect[-1] : &:r35_4319, ~m? +# 35| mu35_4324(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4319 +# 35| r35_4325(bool) = Constant[0] : +# 35| v35_4326(void) = ConditionalBranch : r35_4325 #-----| False -> Block 309 #-----| True -> Block 1026 -# 946| Block 309 -# 946| r946_1(glval) = VariableAddress[x309] : -# 946| mu946_2(String) = Uninitialized[x309] : &:r946_1 -# 946| r946_3(glval) = FunctionAddress[String] : -# 946| v946_4(void) = Call[String] : func:r946_3, this:r946_1 -# 946| mu946_5(unknown) = ^CallSideEffect : ~m? -# 946| mu946_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r946_1 -# 947| r947_1(glval) = VariableAddress[x309] : -# 947| r947_2(glval) = FunctionAddress[~String] : -# 947| v947_3(void) = Call[~String] : func:r947_2, this:r947_1 -# 947| mu947_4(unknown) = ^CallSideEffect : ~m? -# 947| v947_5(void) = ^IndirectReadSideEffect[-1] : &:r947_1, ~m? -# 947| mu947_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r947_1 -# 947| r947_7(bool) = Constant[0] : -# 947| v947_8(void) = ConditionalBranch : r947_7 +# 35| Block 309 +# 35| r35_4327(glval) = VariableAddress[x309] : +# 35| mu35_4328(String) = Uninitialized[x309] : &:r35_4327 +# 35| r35_4329(glval) = FunctionAddress[String] : +# 35| v35_4330(void) = Call[String] : func:r35_4329, this:r35_4327 +# 35| mu35_4331(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4332(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4327 +# 35| r35_4333(glval) = VariableAddress[x309] : +# 35| r35_4334(glval) = FunctionAddress[~String] : +# 35| v35_4335(void) = Call[~String] : func:r35_4334, this:r35_4333 +# 35| mu35_4336(unknown) = ^CallSideEffect : ~m? +# 35| v35_4337(void) = ^IndirectReadSideEffect[-1] : &:r35_4333, ~m? +# 35| mu35_4338(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4333 +# 35| r35_4339(bool) = Constant[0] : +# 35| v35_4340(void) = ConditionalBranch : r35_4339 #-----| False -> Block 310 #-----| True -> Block 1026 -# 949| Block 310 -# 949| r949_1(glval) = VariableAddress[x310] : -# 949| mu949_2(String) = Uninitialized[x310] : &:r949_1 -# 949| r949_3(glval) = FunctionAddress[String] : -# 949| v949_4(void) = Call[String] : func:r949_3, this:r949_1 -# 949| mu949_5(unknown) = ^CallSideEffect : ~m? -# 949| mu949_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r949_1 -# 950| r950_1(glval) = VariableAddress[x310] : -# 950| r950_2(glval) = FunctionAddress[~String] : -# 950| v950_3(void) = Call[~String] : func:r950_2, this:r950_1 -# 950| mu950_4(unknown) = ^CallSideEffect : ~m? -# 950| v950_5(void) = ^IndirectReadSideEffect[-1] : &:r950_1, ~m? -# 950| mu950_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r950_1 -# 950| r950_7(bool) = Constant[0] : -# 950| v950_8(void) = ConditionalBranch : r950_7 +# 35| Block 310 +# 35| r35_4341(glval) = VariableAddress[x310] : +# 35| mu35_4342(String) = Uninitialized[x310] : &:r35_4341 +# 35| r35_4343(glval) = FunctionAddress[String] : +# 35| v35_4344(void) = Call[String] : func:r35_4343, this:r35_4341 +# 35| mu35_4345(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4346(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4341 +# 35| r35_4347(glval) = VariableAddress[x310] : +# 35| r35_4348(glval) = FunctionAddress[~String] : +# 35| v35_4349(void) = Call[~String] : func:r35_4348, this:r35_4347 +# 35| mu35_4350(unknown) = ^CallSideEffect : ~m? +# 35| v35_4351(void) = ^IndirectReadSideEffect[-1] : &:r35_4347, ~m? +# 35| mu35_4352(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4347 +# 35| r35_4353(bool) = Constant[0] : +# 35| v35_4354(void) = ConditionalBranch : r35_4353 #-----| False -> Block 311 #-----| True -> Block 1026 -# 952| Block 311 -# 952| r952_1(glval) = VariableAddress[x311] : -# 952| mu952_2(String) = Uninitialized[x311] : &:r952_1 -# 952| r952_3(glval) = FunctionAddress[String] : -# 952| v952_4(void) = Call[String] : func:r952_3, this:r952_1 -# 952| mu952_5(unknown) = ^CallSideEffect : ~m? -# 952| mu952_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r952_1 -# 953| r953_1(glval) = VariableAddress[x311] : -# 953| r953_2(glval) = FunctionAddress[~String] : -# 953| v953_3(void) = Call[~String] : func:r953_2, this:r953_1 -# 953| mu953_4(unknown) = ^CallSideEffect : ~m? -# 953| v953_5(void) = ^IndirectReadSideEffect[-1] : &:r953_1, ~m? -# 953| mu953_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r953_1 -# 953| r953_7(bool) = Constant[0] : -# 953| v953_8(void) = ConditionalBranch : r953_7 +# 35| Block 311 +# 35| r35_4355(glval) = VariableAddress[x311] : +# 35| mu35_4356(String) = Uninitialized[x311] : &:r35_4355 +# 35| r35_4357(glval) = FunctionAddress[String] : +# 35| v35_4358(void) = Call[String] : func:r35_4357, this:r35_4355 +# 35| mu35_4359(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4360(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4355 +# 35| r35_4361(glval) = VariableAddress[x311] : +# 35| r35_4362(glval) = FunctionAddress[~String] : +# 35| v35_4363(void) = Call[~String] : func:r35_4362, this:r35_4361 +# 35| mu35_4364(unknown) = ^CallSideEffect : ~m? +# 35| v35_4365(void) = ^IndirectReadSideEffect[-1] : &:r35_4361, ~m? +# 35| mu35_4366(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4361 +# 35| r35_4367(bool) = Constant[0] : +# 35| v35_4368(void) = ConditionalBranch : r35_4367 #-----| False -> Block 312 #-----| True -> Block 1026 -# 955| Block 312 -# 955| r955_1(glval) = VariableAddress[x312] : -# 955| mu955_2(String) = Uninitialized[x312] : &:r955_1 -# 955| r955_3(glval) = FunctionAddress[String] : -# 955| v955_4(void) = Call[String] : func:r955_3, this:r955_1 -# 955| mu955_5(unknown) = ^CallSideEffect : ~m? -# 955| mu955_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r955_1 -# 956| r956_1(glval) = VariableAddress[x312] : -# 956| r956_2(glval) = FunctionAddress[~String] : -# 956| v956_3(void) = Call[~String] : func:r956_2, this:r956_1 -# 956| mu956_4(unknown) = ^CallSideEffect : ~m? -# 956| v956_5(void) = ^IndirectReadSideEffect[-1] : &:r956_1, ~m? -# 956| mu956_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r956_1 -# 956| r956_7(bool) = Constant[0] : -# 956| v956_8(void) = ConditionalBranch : r956_7 +# 35| Block 312 +# 35| r35_4369(glval) = VariableAddress[x312] : +# 35| mu35_4370(String) = Uninitialized[x312] : &:r35_4369 +# 35| r35_4371(glval) = FunctionAddress[String] : +# 35| v35_4372(void) = Call[String] : func:r35_4371, this:r35_4369 +# 35| mu35_4373(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4374(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4369 +# 35| r35_4375(glval) = VariableAddress[x312] : +# 35| r35_4376(glval) = FunctionAddress[~String] : +# 35| v35_4377(void) = Call[~String] : func:r35_4376, this:r35_4375 +# 35| mu35_4378(unknown) = ^CallSideEffect : ~m? +# 35| v35_4379(void) = ^IndirectReadSideEffect[-1] : &:r35_4375, ~m? +# 35| mu35_4380(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4375 +# 35| r35_4381(bool) = Constant[0] : +# 35| v35_4382(void) = ConditionalBranch : r35_4381 #-----| False -> Block 313 #-----| True -> Block 1026 -# 958| Block 313 -# 958| r958_1(glval) = VariableAddress[x313] : -# 958| mu958_2(String) = Uninitialized[x313] : &:r958_1 -# 958| r958_3(glval) = FunctionAddress[String] : -# 958| v958_4(void) = Call[String] : func:r958_3, this:r958_1 -# 958| mu958_5(unknown) = ^CallSideEffect : ~m? -# 958| mu958_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r958_1 -# 959| r959_1(glval) = VariableAddress[x313] : -# 959| r959_2(glval) = FunctionAddress[~String] : -# 959| v959_3(void) = Call[~String] : func:r959_2, this:r959_1 -# 959| mu959_4(unknown) = ^CallSideEffect : ~m? -# 959| v959_5(void) = ^IndirectReadSideEffect[-1] : &:r959_1, ~m? -# 959| mu959_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r959_1 -# 959| r959_7(bool) = Constant[0] : -# 959| v959_8(void) = ConditionalBranch : r959_7 +# 35| Block 313 +# 35| r35_4383(glval) = VariableAddress[x313] : +# 35| mu35_4384(String) = Uninitialized[x313] : &:r35_4383 +# 35| r35_4385(glval) = FunctionAddress[String] : +# 35| v35_4386(void) = Call[String] : func:r35_4385, this:r35_4383 +# 35| mu35_4387(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4388(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4383 +# 35| r35_4389(glval) = VariableAddress[x313] : +# 35| r35_4390(glval) = FunctionAddress[~String] : +# 35| v35_4391(void) = Call[~String] : func:r35_4390, this:r35_4389 +# 35| mu35_4392(unknown) = ^CallSideEffect : ~m? +# 35| v35_4393(void) = ^IndirectReadSideEffect[-1] : &:r35_4389, ~m? +# 35| mu35_4394(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4389 +# 35| r35_4395(bool) = Constant[0] : +# 35| v35_4396(void) = ConditionalBranch : r35_4395 #-----| False -> Block 314 #-----| True -> Block 1026 -# 961| Block 314 -# 961| r961_1(glval) = VariableAddress[x314] : -# 961| mu961_2(String) = Uninitialized[x314] : &:r961_1 -# 961| r961_3(glval) = FunctionAddress[String] : -# 961| v961_4(void) = Call[String] : func:r961_3, this:r961_1 -# 961| mu961_5(unknown) = ^CallSideEffect : ~m? -# 961| mu961_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r961_1 -# 962| r962_1(glval) = VariableAddress[x314] : -# 962| r962_2(glval) = FunctionAddress[~String] : -# 962| v962_3(void) = Call[~String] : func:r962_2, this:r962_1 -# 962| mu962_4(unknown) = ^CallSideEffect : ~m? -# 962| v962_5(void) = ^IndirectReadSideEffect[-1] : &:r962_1, ~m? -# 962| mu962_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r962_1 -# 962| r962_7(bool) = Constant[0] : -# 962| v962_8(void) = ConditionalBranch : r962_7 +# 35| Block 314 +# 35| r35_4397(glval) = VariableAddress[x314] : +# 35| mu35_4398(String) = Uninitialized[x314] : &:r35_4397 +# 35| r35_4399(glval) = FunctionAddress[String] : +# 35| v35_4400(void) = Call[String] : func:r35_4399, this:r35_4397 +# 35| mu35_4401(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4402(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4397 +# 35| r35_4403(glval) = VariableAddress[x314] : +# 35| r35_4404(glval) = FunctionAddress[~String] : +# 35| v35_4405(void) = Call[~String] : func:r35_4404, this:r35_4403 +# 35| mu35_4406(unknown) = ^CallSideEffect : ~m? +# 35| v35_4407(void) = ^IndirectReadSideEffect[-1] : &:r35_4403, ~m? +# 35| mu35_4408(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4403 +# 35| r35_4409(bool) = Constant[0] : +# 35| v35_4410(void) = ConditionalBranch : r35_4409 #-----| False -> Block 315 #-----| True -> Block 1026 -# 964| Block 315 -# 964| r964_1(glval) = VariableAddress[x315] : -# 964| mu964_2(String) = Uninitialized[x315] : &:r964_1 -# 964| r964_3(glval) = FunctionAddress[String] : -# 964| v964_4(void) = Call[String] : func:r964_3, this:r964_1 -# 964| mu964_5(unknown) = ^CallSideEffect : ~m? -# 964| mu964_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r964_1 -# 965| r965_1(glval) = VariableAddress[x315] : -# 965| r965_2(glval) = FunctionAddress[~String] : -# 965| v965_3(void) = Call[~String] : func:r965_2, this:r965_1 -# 965| mu965_4(unknown) = ^CallSideEffect : ~m? -# 965| v965_5(void) = ^IndirectReadSideEffect[-1] : &:r965_1, ~m? -# 965| mu965_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r965_1 -# 965| r965_7(bool) = Constant[0] : -# 965| v965_8(void) = ConditionalBranch : r965_7 +# 35| Block 315 +# 35| r35_4411(glval) = VariableAddress[x315] : +# 35| mu35_4412(String) = Uninitialized[x315] : &:r35_4411 +# 35| r35_4413(glval) = FunctionAddress[String] : +# 35| v35_4414(void) = Call[String] : func:r35_4413, this:r35_4411 +# 35| mu35_4415(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4416(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4411 +# 35| r35_4417(glval) = VariableAddress[x315] : +# 35| r35_4418(glval) = FunctionAddress[~String] : +# 35| v35_4419(void) = Call[~String] : func:r35_4418, this:r35_4417 +# 35| mu35_4420(unknown) = ^CallSideEffect : ~m? +# 35| v35_4421(void) = ^IndirectReadSideEffect[-1] : &:r35_4417, ~m? +# 35| mu35_4422(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4417 +# 35| r35_4423(bool) = Constant[0] : +# 35| v35_4424(void) = ConditionalBranch : r35_4423 #-----| False -> Block 316 #-----| True -> Block 1026 -# 967| Block 316 -# 967| r967_1(glval) = VariableAddress[x316] : -# 967| mu967_2(String) = Uninitialized[x316] : &:r967_1 -# 967| r967_3(glval) = FunctionAddress[String] : -# 967| v967_4(void) = Call[String] : func:r967_3, this:r967_1 -# 967| mu967_5(unknown) = ^CallSideEffect : ~m? -# 967| mu967_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r967_1 -# 968| r968_1(glval) = VariableAddress[x316] : -# 968| r968_2(glval) = FunctionAddress[~String] : -# 968| v968_3(void) = Call[~String] : func:r968_2, this:r968_1 -# 968| mu968_4(unknown) = ^CallSideEffect : ~m? -# 968| v968_5(void) = ^IndirectReadSideEffect[-1] : &:r968_1, ~m? -# 968| mu968_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r968_1 -# 968| r968_7(bool) = Constant[0] : -# 968| v968_8(void) = ConditionalBranch : r968_7 +# 35| Block 316 +# 35| r35_4425(glval) = VariableAddress[x316] : +# 35| mu35_4426(String) = Uninitialized[x316] : &:r35_4425 +# 35| r35_4427(glval) = FunctionAddress[String] : +# 35| v35_4428(void) = Call[String] : func:r35_4427, this:r35_4425 +# 35| mu35_4429(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4430(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4425 +# 35| r35_4431(glval) = VariableAddress[x316] : +# 35| r35_4432(glval) = FunctionAddress[~String] : +# 35| v35_4433(void) = Call[~String] : func:r35_4432, this:r35_4431 +# 35| mu35_4434(unknown) = ^CallSideEffect : ~m? +# 35| v35_4435(void) = ^IndirectReadSideEffect[-1] : &:r35_4431, ~m? +# 35| mu35_4436(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4431 +# 35| r35_4437(bool) = Constant[0] : +# 35| v35_4438(void) = ConditionalBranch : r35_4437 #-----| False -> Block 317 #-----| True -> Block 1026 -# 970| Block 317 -# 970| r970_1(glval) = VariableAddress[x317] : -# 970| mu970_2(String) = Uninitialized[x317] : &:r970_1 -# 970| r970_3(glval) = FunctionAddress[String] : -# 970| v970_4(void) = Call[String] : func:r970_3, this:r970_1 -# 970| mu970_5(unknown) = ^CallSideEffect : ~m? -# 970| mu970_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r970_1 -# 971| r971_1(glval) = VariableAddress[x317] : -# 971| r971_2(glval) = FunctionAddress[~String] : -# 971| v971_3(void) = Call[~String] : func:r971_2, this:r971_1 -# 971| mu971_4(unknown) = ^CallSideEffect : ~m? -# 971| v971_5(void) = ^IndirectReadSideEffect[-1] : &:r971_1, ~m? -# 971| mu971_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r971_1 -# 971| r971_7(bool) = Constant[0] : -# 971| v971_8(void) = ConditionalBranch : r971_7 +# 35| Block 317 +# 35| r35_4439(glval) = VariableAddress[x317] : +# 35| mu35_4440(String) = Uninitialized[x317] : &:r35_4439 +# 35| r35_4441(glval) = FunctionAddress[String] : +# 35| v35_4442(void) = Call[String] : func:r35_4441, this:r35_4439 +# 35| mu35_4443(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4444(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4439 +# 35| r35_4445(glval) = VariableAddress[x317] : +# 35| r35_4446(glval) = FunctionAddress[~String] : +# 35| v35_4447(void) = Call[~String] : func:r35_4446, this:r35_4445 +# 35| mu35_4448(unknown) = ^CallSideEffect : ~m? +# 35| v35_4449(void) = ^IndirectReadSideEffect[-1] : &:r35_4445, ~m? +# 35| mu35_4450(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4445 +# 35| r35_4451(bool) = Constant[0] : +# 35| v35_4452(void) = ConditionalBranch : r35_4451 #-----| False -> Block 318 #-----| True -> Block 1026 -# 973| Block 318 -# 973| r973_1(glval) = VariableAddress[x318] : -# 973| mu973_2(String) = Uninitialized[x318] : &:r973_1 -# 973| r973_3(glval) = FunctionAddress[String] : -# 973| v973_4(void) = Call[String] : func:r973_3, this:r973_1 -# 973| mu973_5(unknown) = ^CallSideEffect : ~m? -# 973| mu973_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r973_1 -# 974| r974_1(glval) = VariableAddress[x318] : -# 974| r974_2(glval) = FunctionAddress[~String] : -# 974| v974_3(void) = Call[~String] : func:r974_2, this:r974_1 -# 974| mu974_4(unknown) = ^CallSideEffect : ~m? -# 974| v974_5(void) = ^IndirectReadSideEffect[-1] : &:r974_1, ~m? -# 974| mu974_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r974_1 -# 974| r974_7(bool) = Constant[0] : -# 974| v974_8(void) = ConditionalBranch : r974_7 +# 35| Block 318 +# 35| r35_4453(glval) = VariableAddress[x318] : +# 35| mu35_4454(String) = Uninitialized[x318] : &:r35_4453 +# 35| r35_4455(glval) = FunctionAddress[String] : +# 35| v35_4456(void) = Call[String] : func:r35_4455, this:r35_4453 +# 35| mu35_4457(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4458(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4453 +# 35| r35_4459(glval) = VariableAddress[x318] : +# 35| r35_4460(glval) = FunctionAddress[~String] : +# 35| v35_4461(void) = Call[~String] : func:r35_4460, this:r35_4459 +# 35| mu35_4462(unknown) = ^CallSideEffect : ~m? +# 35| v35_4463(void) = ^IndirectReadSideEffect[-1] : &:r35_4459, ~m? +# 35| mu35_4464(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4459 +# 35| r35_4465(bool) = Constant[0] : +# 35| v35_4466(void) = ConditionalBranch : r35_4465 #-----| False -> Block 319 #-----| True -> Block 1026 -# 976| Block 319 -# 976| r976_1(glval) = VariableAddress[x319] : -# 976| mu976_2(String) = Uninitialized[x319] : &:r976_1 -# 976| r976_3(glval) = FunctionAddress[String] : -# 976| v976_4(void) = Call[String] : func:r976_3, this:r976_1 -# 976| mu976_5(unknown) = ^CallSideEffect : ~m? -# 976| mu976_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r976_1 -# 977| r977_1(glval) = VariableAddress[x319] : -# 977| r977_2(glval) = FunctionAddress[~String] : -# 977| v977_3(void) = Call[~String] : func:r977_2, this:r977_1 -# 977| mu977_4(unknown) = ^CallSideEffect : ~m? -# 977| v977_5(void) = ^IndirectReadSideEffect[-1] : &:r977_1, ~m? -# 977| mu977_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r977_1 -# 977| r977_7(bool) = Constant[0] : -# 977| v977_8(void) = ConditionalBranch : r977_7 +# 35| Block 319 +# 35| r35_4467(glval) = VariableAddress[x319] : +# 35| mu35_4468(String) = Uninitialized[x319] : &:r35_4467 +# 35| r35_4469(glval) = FunctionAddress[String] : +# 35| v35_4470(void) = Call[String] : func:r35_4469, this:r35_4467 +# 35| mu35_4471(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4472(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4467 +# 35| r35_4473(glval) = VariableAddress[x319] : +# 35| r35_4474(glval) = FunctionAddress[~String] : +# 35| v35_4475(void) = Call[~String] : func:r35_4474, this:r35_4473 +# 35| mu35_4476(unknown) = ^CallSideEffect : ~m? +# 35| v35_4477(void) = ^IndirectReadSideEffect[-1] : &:r35_4473, ~m? +# 35| mu35_4478(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4473 +# 35| r35_4479(bool) = Constant[0] : +# 35| v35_4480(void) = ConditionalBranch : r35_4479 #-----| False -> Block 320 #-----| True -> Block 1026 -# 979| Block 320 -# 979| r979_1(glval) = VariableAddress[x320] : -# 979| mu979_2(String) = Uninitialized[x320] : &:r979_1 -# 979| r979_3(glval) = FunctionAddress[String] : -# 979| v979_4(void) = Call[String] : func:r979_3, this:r979_1 -# 979| mu979_5(unknown) = ^CallSideEffect : ~m? -# 979| mu979_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r979_1 -# 980| r980_1(glval) = VariableAddress[x320] : -# 980| r980_2(glval) = FunctionAddress[~String] : -# 980| v980_3(void) = Call[~String] : func:r980_2, this:r980_1 -# 980| mu980_4(unknown) = ^CallSideEffect : ~m? -# 980| v980_5(void) = ^IndirectReadSideEffect[-1] : &:r980_1, ~m? -# 980| mu980_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r980_1 -# 980| r980_7(bool) = Constant[0] : -# 980| v980_8(void) = ConditionalBranch : r980_7 +# 35| Block 320 +# 35| r35_4481(glval) = VariableAddress[x320] : +# 35| mu35_4482(String) = Uninitialized[x320] : &:r35_4481 +# 35| r35_4483(glval) = FunctionAddress[String] : +# 35| v35_4484(void) = Call[String] : func:r35_4483, this:r35_4481 +# 35| mu35_4485(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4486(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4481 +# 35| r35_4487(glval) = VariableAddress[x320] : +# 35| r35_4488(glval) = FunctionAddress[~String] : +# 35| v35_4489(void) = Call[~String] : func:r35_4488, this:r35_4487 +# 35| mu35_4490(unknown) = ^CallSideEffect : ~m? +# 35| v35_4491(void) = ^IndirectReadSideEffect[-1] : &:r35_4487, ~m? +# 35| mu35_4492(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4487 +# 35| r35_4493(bool) = Constant[0] : +# 35| v35_4494(void) = ConditionalBranch : r35_4493 #-----| False -> Block 321 #-----| True -> Block 1026 -# 982| Block 321 -# 982| r982_1(glval) = VariableAddress[x321] : -# 982| mu982_2(String) = Uninitialized[x321] : &:r982_1 -# 982| r982_3(glval) = FunctionAddress[String] : -# 982| v982_4(void) = Call[String] : func:r982_3, this:r982_1 -# 982| mu982_5(unknown) = ^CallSideEffect : ~m? -# 982| mu982_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r982_1 -# 983| r983_1(glval) = VariableAddress[x321] : -# 983| r983_2(glval) = FunctionAddress[~String] : -# 983| v983_3(void) = Call[~String] : func:r983_2, this:r983_1 -# 983| mu983_4(unknown) = ^CallSideEffect : ~m? -# 983| v983_5(void) = ^IndirectReadSideEffect[-1] : &:r983_1, ~m? -# 983| mu983_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r983_1 -# 983| r983_7(bool) = Constant[0] : -# 983| v983_8(void) = ConditionalBranch : r983_7 +# 35| Block 321 +# 35| r35_4495(glval) = VariableAddress[x321] : +# 35| mu35_4496(String) = Uninitialized[x321] : &:r35_4495 +# 35| r35_4497(glval) = FunctionAddress[String] : +# 35| v35_4498(void) = Call[String] : func:r35_4497, this:r35_4495 +# 35| mu35_4499(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4500(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4495 +# 35| r35_4501(glval) = VariableAddress[x321] : +# 35| r35_4502(glval) = FunctionAddress[~String] : +# 35| v35_4503(void) = Call[~String] : func:r35_4502, this:r35_4501 +# 35| mu35_4504(unknown) = ^CallSideEffect : ~m? +# 35| v35_4505(void) = ^IndirectReadSideEffect[-1] : &:r35_4501, ~m? +# 35| mu35_4506(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4501 +# 35| r35_4507(bool) = Constant[0] : +# 35| v35_4508(void) = ConditionalBranch : r35_4507 #-----| False -> Block 322 #-----| True -> Block 1026 -# 985| Block 322 -# 985| r985_1(glval) = VariableAddress[x322] : -# 985| mu985_2(String) = Uninitialized[x322] : &:r985_1 -# 985| r985_3(glval) = FunctionAddress[String] : -# 985| v985_4(void) = Call[String] : func:r985_3, this:r985_1 -# 985| mu985_5(unknown) = ^CallSideEffect : ~m? -# 985| mu985_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r985_1 -# 986| r986_1(glval) = VariableAddress[x322] : -# 986| r986_2(glval) = FunctionAddress[~String] : -# 986| v986_3(void) = Call[~String] : func:r986_2, this:r986_1 -# 986| mu986_4(unknown) = ^CallSideEffect : ~m? -# 986| v986_5(void) = ^IndirectReadSideEffect[-1] : &:r986_1, ~m? -# 986| mu986_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r986_1 -# 986| r986_7(bool) = Constant[0] : -# 986| v986_8(void) = ConditionalBranch : r986_7 +# 35| Block 322 +# 35| r35_4509(glval) = VariableAddress[x322] : +# 35| mu35_4510(String) = Uninitialized[x322] : &:r35_4509 +# 35| r35_4511(glval) = FunctionAddress[String] : +# 35| v35_4512(void) = Call[String] : func:r35_4511, this:r35_4509 +# 35| mu35_4513(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4514(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4509 +# 35| r35_4515(glval) = VariableAddress[x322] : +# 35| r35_4516(glval) = FunctionAddress[~String] : +# 35| v35_4517(void) = Call[~String] : func:r35_4516, this:r35_4515 +# 35| mu35_4518(unknown) = ^CallSideEffect : ~m? +# 35| v35_4519(void) = ^IndirectReadSideEffect[-1] : &:r35_4515, ~m? +# 35| mu35_4520(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4515 +# 35| r35_4521(bool) = Constant[0] : +# 35| v35_4522(void) = ConditionalBranch : r35_4521 #-----| False -> Block 323 #-----| True -> Block 1026 -# 988| Block 323 -# 988| r988_1(glval) = VariableAddress[x323] : -# 988| mu988_2(String) = Uninitialized[x323] : &:r988_1 -# 988| r988_3(glval) = FunctionAddress[String] : -# 988| v988_4(void) = Call[String] : func:r988_3, this:r988_1 -# 988| mu988_5(unknown) = ^CallSideEffect : ~m? -# 988| mu988_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r988_1 -# 989| r989_1(glval) = VariableAddress[x323] : -# 989| r989_2(glval) = FunctionAddress[~String] : -# 989| v989_3(void) = Call[~String] : func:r989_2, this:r989_1 -# 989| mu989_4(unknown) = ^CallSideEffect : ~m? -# 989| v989_5(void) = ^IndirectReadSideEffect[-1] : &:r989_1, ~m? -# 989| mu989_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r989_1 -# 989| r989_7(bool) = Constant[0] : -# 989| v989_8(void) = ConditionalBranch : r989_7 +# 35| Block 323 +# 35| r35_4523(glval) = VariableAddress[x323] : +# 35| mu35_4524(String) = Uninitialized[x323] : &:r35_4523 +# 35| r35_4525(glval) = FunctionAddress[String] : +# 35| v35_4526(void) = Call[String] : func:r35_4525, this:r35_4523 +# 35| mu35_4527(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4528(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4523 +# 35| r35_4529(glval) = VariableAddress[x323] : +# 35| r35_4530(glval) = FunctionAddress[~String] : +# 35| v35_4531(void) = Call[~String] : func:r35_4530, this:r35_4529 +# 35| mu35_4532(unknown) = ^CallSideEffect : ~m? +# 35| v35_4533(void) = ^IndirectReadSideEffect[-1] : &:r35_4529, ~m? +# 35| mu35_4534(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4529 +# 35| r35_4535(bool) = Constant[0] : +# 35| v35_4536(void) = ConditionalBranch : r35_4535 #-----| False -> Block 324 #-----| True -> Block 1026 -# 991| Block 324 -# 991| r991_1(glval) = VariableAddress[x324] : -# 991| mu991_2(String) = Uninitialized[x324] : &:r991_1 -# 991| r991_3(glval) = FunctionAddress[String] : -# 991| v991_4(void) = Call[String] : func:r991_3, this:r991_1 -# 991| mu991_5(unknown) = ^CallSideEffect : ~m? -# 991| mu991_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r991_1 -# 992| r992_1(glval) = VariableAddress[x324] : -# 992| r992_2(glval) = FunctionAddress[~String] : -# 992| v992_3(void) = Call[~String] : func:r992_2, this:r992_1 -# 992| mu992_4(unknown) = ^CallSideEffect : ~m? -# 992| v992_5(void) = ^IndirectReadSideEffect[-1] : &:r992_1, ~m? -# 992| mu992_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r992_1 -# 992| r992_7(bool) = Constant[0] : -# 992| v992_8(void) = ConditionalBranch : r992_7 +# 35| Block 324 +# 35| r35_4537(glval) = VariableAddress[x324] : +# 35| mu35_4538(String) = Uninitialized[x324] : &:r35_4537 +# 35| r35_4539(glval) = FunctionAddress[String] : +# 35| v35_4540(void) = Call[String] : func:r35_4539, this:r35_4537 +# 35| mu35_4541(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4542(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4537 +# 35| r35_4543(glval) = VariableAddress[x324] : +# 35| r35_4544(glval) = FunctionAddress[~String] : +# 35| v35_4545(void) = Call[~String] : func:r35_4544, this:r35_4543 +# 35| mu35_4546(unknown) = ^CallSideEffect : ~m? +# 35| v35_4547(void) = ^IndirectReadSideEffect[-1] : &:r35_4543, ~m? +# 35| mu35_4548(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4543 +# 35| r35_4549(bool) = Constant[0] : +# 35| v35_4550(void) = ConditionalBranch : r35_4549 #-----| False -> Block 325 #-----| True -> Block 1026 -# 994| Block 325 -# 994| r994_1(glval) = VariableAddress[x325] : -# 994| mu994_2(String) = Uninitialized[x325] : &:r994_1 -# 994| r994_3(glval) = FunctionAddress[String] : -# 994| v994_4(void) = Call[String] : func:r994_3, this:r994_1 -# 994| mu994_5(unknown) = ^CallSideEffect : ~m? -# 994| mu994_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r994_1 -# 995| r995_1(glval) = VariableAddress[x325] : -# 995| r995_2(glval) = FunctionAddress[~String] : -# 995| v995_3(void) = Call[~String] : func:r995_2, this:r995_1 -# 995| mu995_4(unknown) = ^CallSideEffect : ~m? -# 995| v995_5(void) = ^IndirectReadSideEffect[-1] : &:r995_1, ~m? -# 995| mu995_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r995_1 -# 995| r995_7(bool) = Constant[0] : -# 995| v995_8(void) = ConditionalBranch : r995_7 +# 35| Block 325 +# 35| r35_4551(glval) = VariableAddress[x325] : +# 35| mu35_4552(String) = Uninitialized[x325] : &:r35_4551 +# 35| r35_4553(glval) = FunctionAddress[String] : +# 35| v35_4554(void) = Call[String] : func:r35_4553, this:r35_4551 +# 35| mu35_4555(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4556(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4551 +# 35| r35_4557(glval) = VariableAddress[x325] : +# 35| r35_4558(glval) = FunctionAddress[~String] : +# 35| v35_4559(void) = Call[~String] : func:r35_4558, this:r35_4557 +# 35| mu35_4560(unknown) = ^CallSideEffect : ~m? +# 35| v35_4561(void) = ^IndirectReadSideEffect[-1] : &:r35_4557, ~m? +# 35| mu35_4562(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4557 +# 35| r35_4563(bool) = Constant[0] : +# 35| v35_4564(void) = ConditionalBranch : r35_4563 #-----| False -> Block 326 #-----| True -> Block 1026 -# 997| Block 326 -# 997| r997_1(glval) = VariableAddress[x326] : -# 997| mu997_2(String) = Uninitialized[x326] : &:r997_1 -# 997| r997_3(glval) = FunctionAddress[String] : -# 997| v997_4(void) = Call[String] : func:r997_3, this:r997_1 -# 997| mu997_5(unknown) = ^CallSideEffect : ~m? -# 997| mu997_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r997_1 -# 998| r998_1(glval) = VariableAddress[x326] : -# 998| r998_2(glval) = FunctionAddress[~String] : -# 998| v998_3(void) = Call[~String] : func:r998_2, this:r998_1 -# 998| mu998_4(unknown) = ^CallSideEffect : ~m? -# 998| v998_5(void) = ^IndirectReadSideEffect[-1] : &:r998_1, ~m? -# 998| mu998_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r998_1 -# 998| r998_7(bool) = Constant[0] : -# 998| v998_8(void) = ConditionalBranch : r998_7 +# 35| Block 326 +# 35| r35_4565(glval) = VariableAddress[x326] : +# 35| mu35_4566(String) = Uninitialized[x326] : &:r35_4565 +# 35| r35_4567(glval) = FunctionAddress[String] : +# 35| v35_4568(void) = Call[String] : func:r35_4567, this:r35_4565 +# 35| mu35_4569(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4570(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4565 +# 35| r35_4571(glval) = VariableAddress[x326] : +# 35| r35_4572(glval) = FunctionAddress[~String] : +# 35| v35_4573(void) = Call[~String] : func:r35_4572, this:r35_4571 +# 35| mu35_4574(unknown) = ^CallSideEffect : ~m? +# 35| v35_4575(void) = ^IndirectReadSideEffect[-1] : &:r35_4571, ~m? +# 35| mu35_4576(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4571 +# 35| r35_4577(bool) = Constant[0] : +# 35| v35_4578(void) = ConditionalBranch : r35_4577 #-----| False -> Block 327 #-----| True -> Block 1026 -# 1000| Block 327 -# 1000| r1000_1(glval) = VariableAddress[x327] : -# 1000| mu1000_2(String) = Uninitialized[x327] : &:r1000_1 -# 1000| r1000_3(glval) = FunctionAddress[String] : -# 1000| v1000_4(void) = Call[String] : func:r1000_3, this:r1000_1 -# 1000| mu1000_5(unknown) = ^CallSideEffect : ~m? -# 1000| mu1000_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1000_1 -# 1001| r1001_1(glval) = VariableAddress[x327] : -# 1001| r1001_2(glval) = FunctionAddress[~String] : -# 1001| v1001_3(void) = Call[~String] : func:r1001_2, this:r1001_1 -# 1001| mu1001_4(unknown) = ^CallSideEffect : ~m? -# 1001| v1001_5(void) = ^IndirectReadSideEffect[-1] : &:r1001_1, ~m? -# 1001| mu1001_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1001_1 -# 1001| r1001_7(bool) = Constant[0] : -# 1001| v1001_8(void) = ConditionalBranch : r1001_7 +# 35| Block 327 +# 35| r35_4579(glval) = VariableAddress[x327] : +# 35| mu35_4580(String) = Uninitialized[x327] : &:r35_4579 +# 35| r35_4581(glval) = FunctionAddress[String] : +# 35| v35_4582(void) = Call[String] : func:r35_4581, this:r35_4579 +# 35| mu35_4583(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4584(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4579 +# 35| r35_4585(glval) = VariableAddress[x327] : +# 35| r35_4586(glval) = FunctionAddress[~String] : +# 35| v35_4587(void) = Call[~String] : func:r35_4586, this:r35_4585 +# 35| mu35_4588(unknown) = ^CallSideEffect : ~m? +# 35| v35_4589(void) = ^IndirectReadSideEffect[-1] : &:r35_4585, ~m? +# 35| mu35_4590(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4585 +# 35| r35_4591(bool) = Constant[0] : +# 35| v35_4592(void) = ConditionalBranch : r35_4591 #-----| False -> Block 328 #-----| True -> Block 1026 -# 1003| Block 328 -# 1003| r1003_1(glval) = VariableAddress[x328] : -# 1003| mu1003_2(String) = Uninitialized[x328] : &:r1003_1 -# 1003| r1003_3(glval) = FunctionAddress[String] : -# 1003| v1003_4(void) = Call[String] : func:r1003_3, this:r1003_1 -# 1003| mu1003_5(unknown) = ^CallSideEffect : ~m? -# 1003| mu1003_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1003_1 -# 1004| r1004_1(glval) = VariableAddress[x328] : -# 1004| r1004_2(glval) = FunctionAddress[~String] : -# 1004| v1004_3(void) = Call[~String] : func:r1004_2, this:r1004_1 -# 1004| mu1004_4(unknown) = ^CallSideEffect : ~m? -# 1004| v1004_5(void) = ^IndirectReadSideEffect[-1] : &:r1004_1, ~m? -# 1004| mu1004_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1004_1 -# 1004| r1004_7(bool) = Constant[0] : -# 1004| v1004_8(void) = ConditionalBranch : r1004_7 +# 35| Block 328 +# 35| r35_4593(glval) = VariableAddress[x328] : +# 35| mu35_4594(String) = Uninitialized[x328] : &:r35_4593 +# 35| r35_4595(glval) = FunctionAddress[String] : +# 35| v35_4596(void) = Call[String] : func:r35_4595, this:r35_4593 +# 35| mu35_4597(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4598(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4593 +# 35| r35_4599(glval) = VariableAddress[x328] : +# 35| r35_4600(glval) = FunctionAddress[~String] : +# 35| v35_4601(void) = Call[~String] : func:r35_4600, this:r35_4599 +# 35| mu35_4602(unknown) = ^CallSideEffect : ~m? +# 35| v35_4603(void) = ^IndirectReadSideEffect[-1] : &:r35_4599, ~m? +# 35| mu35_4604(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4599 +# 35| r35_4605(bool) = Constant[0] : +# 35| v35_4606(void) = ConditionalBranch : r35_4605 #-----| False -> Block 329 #-----| True -> Block 1026 -# 1006| Block 329 -# 1006| r1006_1(glval) = VariableAddress[x329] : -# 1006| mu1006_2(String) = Uninitialized[x329] : &:r1006_1 -# 1006| r1006_3(glval) = FunctionAddress[String] : -# 1006| v1006_4(void) = Call[String] : func:r1006_3, this:r1006_1 -# 1006| mu1006_5(unknown) = ^CallSideEffect : ~m? -# 1006| mu1006_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1006_1 -# 1007| r1007_1(glval) = VariableAddress[x329] : -# 1007| r1007_2(glval) = FunctionAddress[~String] : -# 1007| v1007_3(void) = Call[~String] : func:r1007_2, this:r1007_1 -# 1007| mu1007_4(unknown) = ^CallSideEffect : ~m? -# 1007| v1007_5(void) = ^IndirectReadSideEffect[-1] : &:r1007_1, ~m? -# 1007| mu1007_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1007_1 -# 1007| r1007_7(bool) = Constant[0] : -# 1007| v1007_8(void) = ConditionalBranch : r1007_7 +# 35| Block 329 +# 35| r35_4607(glval) = VariableAddress[x329] : +# 35| mu35_4608(String) = Uninitialized[x329] : &:r35_4607 +# 35| r35_4609(glval) = FunctionAddress[String] : +# 35| v35_4610(void) = Call[String] : func:r35_4609, this:r35_4607 +# 35| mu35_4611(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4612(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4607 +# 35| r35_4613(glval) = VariableAddress[x329] : +# 35| r35_4614(glval) = FunctionAddress[~String] : +# 35| v35_4615(void) = Call[~String] : func:r35_4614, this:r35_4613 +# 35| mu35_4616(unknown) = ^CallSideEffect : ~m? +# 35| v35_4617(void) = ^IndirectReadSideEffect[-1] : &:r35_4613, ~m? +# 35| mu35_4618(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4613 +# 35| r35_4619(bool) = Constant[0] : +# 35| v35_4620(void) = ConditionalBranch : r35_4619 #-----| False -> Block 330 #-----| True -> Block 1026 -# 1009| Block 330 -# 1009| r1009_1(glval) = VariableAddress[x330] : -# 1009| mu1009_2(String) = Uninitialized[x330] : &:r1009_1 -# 1009| r1009_3(glval) = FunctionAddress[String] : -# 1009| v1009_4(void) = Call[String] : func:r1009_3, this:r1009_1 -# 1009| mu1009_5(unknown) = ^CallSideEffect : ~m? -# 1009| mu1009_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1009_1 -# 1010| r1010_1(glval) = VariableAddress[x330] : -# 1010| r1010_2(glval) = FunctionAddress[~String] : -# 1010| v1010_3(void) = Call[~String] : func:r1010_2, this:r1010_1 -# 1010| mu1010_4(unknown) = ^CallSideEffect : ~m? -# 1010| v1010_5(void) = ^IndirectReadSideEffect[-1] : &:r1010_1, ~m? -# 1010| mu1010_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1010_1 -# 1010| r1010_7(bool) = Constant[0] : -# 1010| v1010_8(void) = ConditionalBranch : r1010_7 +# 35| Block 330 +# 35| r35_4621(glval) = VariableAddress[x330] : +# 35| mu35_4622(String) = Uninitialized[x330] : &:r35_4621 +# 35| r35_4623(glval) = FunctionAddress[String] : +# 35| v35_4624(void) = Call[String] : func:r35_4623, this:r35_4621 +# 35| mu35_4625(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4626(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4621 +# 35| r35_4627(glval) = VariableAddress[x330] : +# 35| r35_4628(glval) = FunctionAddress[~String] : +# 35| v35_4629(void) = Call[~String] : func:r35_4628, this:r35_4627 +# 35| mu35_4630(unknown) = ^CallSideEffect : ~m? +# 35| v35_4631(void) = ^IndirectReadSideEffect[-1] : &:r35_4627, ~m? +# 35| mu35_4632(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4627 +# 35| r35_4633(bool) = Constant[0] : +# 35| v35_4634(void) = ConditionalBranch : r35_4633 #-----| False -> Block 331 #-----| True -> Block 1026 -# 1012| Block 331 -# 1012| r1012_1(glval) = VariableAddress[x331] : -# 1012| mu1012_2(String) = Uninitialized[x331] : &:r1012_1 -# 1012| r1012_3(glval) = FunctionAddress[String] : -# 1012| v1012_4(void) = Call[String] : func:r1012_3, this:r1012_1 -# 1012| mu1012_5(unknown) = ^CallSideEffect : ~m? -# 1012| mu1012_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1012_1 -# 1013| r1013_1(glval) = VariableAddress[x331] : -# 1013| r1013_2(glval) = FunctionAddress[~String] : -# 1013| v1013_3(void) = Call[~String] : func:r1013_2, this:r1013_1 -# 1013| mu1013_4(unknown) = ^CallSideEffect : ~m? -# 1013| v1013_5(void) = ^IndirectReadSideEffect[-1] : &:r1013_1, ~m? -# 1013| mu1013_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1013_1 -# 1013| r1013_7(bool) = Constant[0] : -# 1013| v1013_8(void) = ConditionalBranch : r1013_7 +# 35| Block 331 +# 35| r35_4635(glval) = VariableAddress[x331] : +# 35| mu35_4636(String) = Uninitialized[x331] : &:r35_4635 +# 35| r35_4637(glval) = FunctionAddress[String] : +# 35| v35_4638(void) = Call[String] : func:r35_4637, this:r35_4635 +# 35| mu35_4639(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4640(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4635 +# 35| r35_4641(glval) = VariableAddress[x331] : +# 35| r35_4642(glval) = FunctionAddress[~String] : +# 35| v35_4643(void) = Call[~String] : func:r35_4642, this:r35_4641 +# 35| mu35_4644(unknown) = ^CallSideEffect : ~m? +# 35| v35_4645(void) = ^IndirectReadSideEffect[-1] : &:r35_4641, ~m? +# 35| mu35_4646(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4641 +# 35| r35_4647(bool) = Constant[0] : +# 35| v35_4648(void) = ConditionalBranch : r35_4647 #-----| False -> Block 332 #-----| True -> Block 1026 -# 1015| Block 332 -# 1015| r1015_1(glval) = VariableAddress[x332] : -# 1015| mu1015_2(String) = Uninitialized[x332] : &:r1015_1 -# 1015| r1015_3(glval) = FunctionAddress[String] : -# 1015| v1015_4(void) = Call[String] : func:r1015_3, this:r1015_1 -# 1015| mu1015_5(unknown) = ^CallSideEffect : ~m? -# 1015| mu1015_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1015_1 -# 1016| r1016_1(glval) = VariableAddress[x332] : -# 1016| r1016_2(glval) = FunctionAddress[~String] : -# 1016| v1016_3(void) = Call[~String] : func:r1016_2, this:r1016_1 -# 1016| mu1016_4(unknown) = ^CallSideEffect : ~m? -# 1016| v1016_5(void) = ^IndirectReadSideEffect[-1] : &:r1016_1, ~m? -# 1016| mu1016_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1016_1 -# 1016| r1016_7(bool) = Constant[0] : -# 1016| v1016_8(void) = ConditionalBranch : r1016_7 +# 35| Block 332 +# 35| r35_4649(glval) = VariableAddress[x332] : +# 35| mu35_4650(String) = Uninitialized[x332] : &:r35_4649 +# 35| r35_4651(glval) = FunctionAddress[String] : +# 35| v35_4652(void) = Call[String] : func:r35_4651, this:r35_4649 +# 35| mu35_4653(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4654(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4649 +# 35| r35_4655(glval) = VariableAddress[x332] : +# 35| r35_4656(glval) = FunctionAddress[~String] : +# 35| v35_4657(void) = Call[~String] : func:r35_4656, this:r35_4655 +# 35| mu35_4658(unknown) = ^CallSideEffect : ~m? +# 35| v35_4659(void) = ^IndirectReadSideEffect[-1] : &:r35_4655, ~m? +# 35| mu35_4660(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4655 +# 35| r35_4661(bool) = Constant[0] : +# 35| v35_4662(void) = ConditionalBranch : r35_4661 #-----| False -> Block 333 #-----| True -> Block 1026 -# 1018| Block 333 -# 1018| r1018_1(glval) = VariableAddress[x333] : -# 1018| mu1018_2(String) = Uninitialized[x333] : &:r1018_1 -# 1018| r1018_3(glval) = FunctionAddress[String] : -# 1018| v1018_4(void) = Call[String] : func:r1018_3, this:r1018_1 -# 1018| mu1018_5(unknown) = ^CallSideEffect : ~m? -# 1018| mu1018_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1018_1 -# 1019| r1019_1(glval) = VariableAddress[x333] : -# 1019| r1019_2(glval) = FunctionAddress[~String] : -# 1019| v1019_3(void) = Call[~String] : func:r1019_2, this:r1019_1 -# 1019| mu1019_4(unknown) = ^CallSideEffect : ~m? -# 1019| v1019_5(void) = ^IndirectReadSideEffect[-1] : &:r1019_1, ~m? -# 1019| mu1019_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1019_1 -# 1019| r1019_7(bool) = Constant[0] : -# 1019| v1019_8(void) = ConditionalBranch : r1019_7 +# 35| Block 333 +# 35| r35_4663(glval) = VariableAddress[x333] : +# 35| mu35_4664(String) = Uninitialized[x333] : &:r35_4663 +# 35| r35_4665(glval) = FunctionAddress[String] : +# 35| v35_4666(void) = Call[String] : func:r35_4665, this:r35_4663 +# 35| mu35_4667(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4668(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4663 +# 35| r35_4669(glval) = VariableAddress[x333] : +# 35| r35_4670(glval) = FunctionAddress[~String] : +# 35| v35_4671(void) = Call[~String] : func:r35_4670, this:r35_4669 +# 35| mu35_4672(unknown) = ^CallSideEffect : ~m? +# 35| v35_4673(void) = ^IndirectReadSideEffect[-1] : &:r35_4669, ~m? +# 35| mu35_4674(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4669 +# 35| r35_4675(bool) = Constant[0] : +# 35| v35_4676(void) = ConditionalBranch : r35_4675 #-----| False -> Block 334 #-----| True -> Block 1026 -# 1021| Block 334 -# 1021| r1021_1(glval) = VariableAddress[x334] : -# 1021| mu1021_2(String) = Uninitialized[x334] : &:r1021_1 -# 1021| r1021_3(glval) = FunctionAddress[String] : -# 1021| v1021_4(void) = Call[String] : func:r1021_3, this:r1021_1 -# 1021| mu1021_5(unknown) = ^CallSideEffect : ~m? -# 1021| mu1021_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1021_1 -# 1022| r1022_1(glval) = VariableAddress[x334] : -# 1022| r1022_2(glval) = FunctionAddress[~String] : -# 1022| v1022_3(void) = Call[~String] : func:r1022_2, this:r1022_1 -# 1022| mu1022_4(unknown) = ^CallSideEffect : ~m? -# 1022| v1022_5(void) = ^IndirectReadSideEffect[-1] : &:r1022_1, ~m? -# 1022| mu1022_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1022_1 -# 1022| r1022_7(bool) = Constant[0] : -# 1022| v1022_8(void) = ConditionalBranch : r1022_7 +# 35| Block 334 +# 35| r35_4677(glval) = VariableAddress[x334] : +# 35| mu35_4678(String) = Uninitialized[x334] : &:r35_4677 +# 35| r35_4679(glval) = FunctionAddress[String] : +# 35| v35_4680(void) = Call[String] : func:r35_4679, this:r35_4677 +# 35| mu35_4681(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4682(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4677 +# 35| r35_4683(glval) = VariableAddress[x334] : +# 35| r35_4684(glval) = FunctionAddress[~String] : +# 35| v35_4685(void) = Call[~String] : func:r35_4684, this:r35_4683 +# 35| mu35_4686(unknown) = ^CallSideEffect : ~m? +# 35| v35_4687(void) = ^IndirectReadSideEffect[-1] : &:r35_4683, ~m? +# 35| mu35_4688(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4683 +# 35| r35_4689(bool) = Constant[0] : +# 35| v35_4690(void) = ConditionalBranch : r35_4689 #-----| False -> Block 335 #-----| True -> Block 1026 -# 1024| Block 335 -# 1024| r1024_1(glval) = VariableAddress[x335] : -# 1024| mu1024_2(String) = Uninitialized[x335] : &:r1024_1 -# 1024| r1024_3(glval) = FunctionAddress[String] : -# 1024| v1024_4(void) = Call[String] : func:r1024_3, this:r1024_1 -# 1024| mu1024_5(unknown) = ^CallSideEffect : ~m? -# 1024| mu1024_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1024_1 -# 1025| r1025_1(glval) = VariableAddress[x335] : -# 1025| r1025_2(glval) = FunctionAddress[~String] : -# 1025| v1025_3(void) = Call[~String] : func:r1025_2, this:r1025_1 -# 1025| mu1025_4(unknown) = ^CallSideEffect : ~m? -# 1025| v1025_5(void) = ^IndirectReadSideEffect[-1] : &:r1025_1, ~m? -# 1025| mu1025_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1025_1 -# 1025| r1025_7(bool) = Constant[0] : -# 1025| v1025_8(void) = ConditionalBranch : r1025_7 +# 35| Block 335 +# 35| r35_4691(glval) = VariableAddress[x335] : +# 35| mu35_4692(String) = Uninitialized[x335] : &:r35_4691 +# 35| r35_4693(glval) = FunctionAddress[String] : +# 35| v35_4694(void) = Call[String] : func:r35_4693, this:r35_4691 +# 35| mu35_4695(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4696(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4691 +# 35| r35_4697(glval) = VariableAddress[x335] : +# 35| r35_4698(glval) = FunctionAddress[~String] : +# 35| v35_4699(void) = Call[~String] : func:r35_4698, this:r35_4697 +# 35| mu35_4700(unknown) = ^CallSideEffect : ~m? +# 35| v35_4701(void) = ^IndirectReadSideEffect[-1] : &:r35_4697, ~m? +# 35| mu35_4702(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4697 +# 35| r35_4703(bool) = Constant[0] : +# 35| v35_4704(void) = ConditionalBranch : r35_4703 #-----| False -> Block 336 #-----| True -> Block 1026 -# 1027| Block 336 -# 1027| r1027_1(glval) = VariableAddress[x336] : -# 1027| mu1027_2(String) = Uninitialized[x336] : &:r1027_1 -# 1027| r1027_3(glval) = FunctionAddress[String] : -# 1027| v1027_4(void) = Call[String] : func:r1027_3, this:r1027_1 -# 1027| mu1027_5(unknown) = ^CallSideEffect : ~m? -# 1027| mu1027_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1027_1 -# 1028| r1028_1(glval) = VariableAddress[x336] : -# 1028| r1028_2(glval) = FunctionAddress[~String] : -# 1028| v1028_3(void) = Call[~String] : func:r1028_2, this:r1028_1 -# 1028| mu1028_4(unknown) = ^CallSideEffect : ~m? -# 1028| v1028_5(void) = ^IndirectReadSideEffect[-1] : &:r1028_1, ~m? -# 1028| mu1028_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1028_1 -# 1028| r1028_7(bool) = Constant[0] : -# 1028| v1028_8(void) = ConditionalBranch : r1028_7 +# 35| Block 336 +# 35| r35_4705(glval) = VariableAddress[x336] : +# 35| mu35_4706(String) = Uninitialized[x336] : &:r35_4705 +# 35| r35_4707(glval) = FunctionAddress[String] : +# 35| v35_4708(void) = Call[String] : func:r35_4707, this:r35_4705 +# 35| mu35_4709(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4710(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4705 +# 35| r35_4711(glval) = VariableAddress[x336] : +# 35| r35_4712(glval) = FunctionAddress[~String] : +# 35| v35_4713(void) = Call[~String] : func:r35_4712, this:r35_4711 +# 35| mu35_4714(unknown) = ^CallSideEffect : ~m? +# 35| v35_4715(void) = ^IndirectReadSideEffect[-1] : &:r35_4711, ~m? +# 35| mu35_4716(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4711 +# 35| r35_4717(bool) = Constant[0] : +# 35| v35_4718(void) = ConditionalBranch : r35_4717 #-----| False -> Block 337 #-----| True -> Block 1026 -# 1030| Block 337 -# 1030| r1030_1(glval) = VariableAddress[x337] : -# 1030| mu1030_2(String) = Uninitialized[x337] : &:r1030_1 -# 1030| r1030_3(glval) = FunctionAddress[String] : -# 1030| v1030_4(void) = Call[String] : func:r1030_3, this:r1030_1 -# 1030| mu1030_5(unknown) = ^CallSideEffect : ~m? -# 1030| mu1030_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1030_1 -# 1031| r1031_1(glval) = VariableAddress[x337] : -# 1031| r1031_2(glval) = FunctionAddress[~String] : -# 1031| v1031_3(void) = Call[~String] : func:r1031_2, this:r1031_1 -# 1031| mu1031_4(unknown) = ^CallSideEffect : ~m? -# 1031| v1031_5(void) = ^IndirectReadSideEffect[-1] : &:r1031_1, ~m? -# 1031| mu1031_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1031_1 -# 1031| r1031_7(bool) = Constant[0] : -# 1031| v1031_8(void) = ConditionalBranch : r1031_7 +# 35| Block 337 +# 35| r35_4719(glval) = VariableAddress[x337] : +# 35| mu35_4720(String) = Uninitialized[x337] : &:r35_4719 +# 35| r35_4721(glval) = FunctionAddress[String] : +# 35| v35_4722(void) = Call[String] : func:r35_4721, this:r35_4719 +# 35| mu35_4723(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4724(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4719 +# 35| r35_4725(glval) = VariableAddress[x337] : +# 35| r35_4726(glval) = FunctionAddress[~String] : +# 35| v35_4727(void) = Call[~String] : func:r35_4726, this:r35_4725 +# 35| mu35_4728(unknown) = ^CallSideEffect : ~m? +# 35| v35_4729(void) = ^IndirectReadSideEffect[-1] : &:r35_4725, ~m? +# 35| mu35_4730(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4725 +# 35| r35_4731(bool) = Constant[0] : +# 35| v35_4732(void) = ConditionalBranch : r35_4731 #-----| False -> Block 338 #-----| True -> Block 1026 -# 1033| Block 338 -# 1033| r1033_1(glval) = VariableAddress[x338] : -# 1033| mu1033_2(String) = Uninitialized[x338] : &:r1033_1 -# 1033| r1033_3(glval) = FunctionAddress[String] : -# 1033| v1033_4(void) = Call[String] : func:r1033_3, this:r1033_1 -# 1033| mu1033_5(unknown) = ^CallSideEffect : ~m? -# 1033| mu1033_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1033_1 -# 1034| r1034_1(glval) = VariableAddress[x338] : -# 1034| r1034_2(glval) = FunctionAddress[~String] : -# 1034| v1034_3(void) = Call[~String] : func:r1034_2, this:r1034_1 -# 1034| mu1034_4(unknown) = ^CallSideEffect : ~m? -# 1034| v1034_5(void) = ^IndirectReadSideEffect[-1] : &:r1034_1, ~m? -# 1034| mu1034_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1034_1 -# 1034| r1034_7(bool) = Constant[0] : -# 1034| v1034_8(void) = ConditionalBranch : r1034_7 +# 35| Block 338 +# 35| r35_4733(glval) = VariableAddress[x338] : +# 35| mu35_4734(String) = Uninitialized[x338] : &:r35_4733 +# 35| r35_4735(glval) = FunctionAddress[String] : +# 35| v35_4736(void) = Call[String] : func:r35_4735, this:r35_4733 +# 35| mu35_4737(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4738(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4733 +# 35| r35_4739(glval) = VariableAddress[x338] : +# 35| r35_4740(glval) = FunctionAddress[~String] : +# 35| v35_4741(void) = Call[~String] : func:r35_4740, this:r35_4739 +# 35| mu35_4742(unknown) = ^CallSideEffect : ~m? +# 35| v35_4743(void) = ^IndirectReadSideEffect[-1] : &:r35_4739, ~m? +# 35| mu35_4744(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4739 +# 35| r35_4745(bool) = Constant[0] : +# 35| v35_4746(void) = ConditionalBranch : r35_4745 #-----| False -> Block 339 #-----| True -> Block 1026 -# 1036| Block 339 -# 1036| r1036_1(glval) = VariableAddress[x339] : -# 1036| mu1036_2(String) = Uninitialized[x339] : &:r1036_1 -# 1036| r1036_3(glval) = FunctionAddress[String] : -# 1036| v1036_4(void) = Call[String] : func:r1036_3, this:r1036_1 -# 1036| mu1036_5(unknown) = ^CallSideEffect : ~m? -# 1036| mu1036_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1036_1 -# 1037| r1037_1(glval) = VariableAddress[x339] : -# 1037| r1037_2(glval) = FunctionAddress[~String] : -# 1037| v1037_3(void) = Call[~String] : func:r1037_2, this:r1037_1 -# 1037| mu1037_4(unknown) = ^CallSideEffect : ~m? -# 1037| v1037_5(void) = ^IndirectReadSideEffect[-1] : &:r1037_1, ~m? -# 1037| mu1037_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1037_1 -# 1037| r1037_7(bool) = Constant[0] : -# 1037| v1037_8(void) = ConditionalBranch : r1037_7 +# 35| Block 339 +# 35| r35_4747(glval) = VariableAddress[x339] : +# 35| mu35_4748(String) = Uninitialized[x339] : &:r35_4747 +# 35| r35_4749(glval) = FunctionAddress[String] : +# 35| v35_4750(void) = Call[String] : func:r35_4749, this:r35_4747 +# 35| mu35_4751(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4752(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4747 +# 35| r35_4753(glval) = VariableAddress[x339] : +# 35| r35_4754(glval) = FunctionAddress[~String] : +# 35| v35_4755(void) = Call[~String] : func:r35_4754, this:r35_4753 +# 35| mu35_4756(unknown) = ^CallSideEffect : ~m? +# 35| v35_4757(void) = ^IndirectReadSideEffect[-1] : &:r35_4753, ~m? +# 35| mu35_4758(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4753 +# 35| r35_4759(bool) = Constant[0] : +# 35| v35_4760(void) = ConditionalBranch : r35_4759 #-----| False -> Block 340 #-----| True -> Block 1026 -# 1039| Block 340 -# 1039| r1039_1(glval) = VariableAddress[x340] : -# 1039| mu1039_2(String) = Uninitialized[x340] : &:r1039_1 -# 1039| r1039_3(glval) = FunctionAddress[String] : -# 1039| v1039_4(void) = Call[String] : func:r1039_3, this:r1039_1 -# 1039| mu1039_5(unknown) = ^CallSideEffect : ~m? -# 1039| mu1039_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1039_1 -# 1040| r1040_1(glval) = VariableAddress[x340] : -# 1040| r1040_2(glval) = FunctionAddress[~String] : -# 1040| v1040_3(void) = Call[~String] : func:r1040_2, this:r1040_1 -# 1040| mu1040_4(unknown) = ^CallSideEffect : ~m? -# 1040| v1040_5(void) = ^IndirectReadSideEffect[-1] : &:r1040_1, ~m? -# 1040| mu1040_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1040_1 -# 1040| r1040_7(bool) = Constant[0] : -# 1040| v1040_8(void) = ConditionalBranch : r1040_7 +# 35| Block 340 +# 35| r35_4761(glval) = VariableAddress[x340] : +# 35| mu35_4762(String) = Uninitialized[x340] : &:r35_4761 +# 35| r35_4763(glval) = FunctionAddress[String] : +# 35| v35_4764(void) = Call[String] : func:r35_4763, this:r35_4761 +# 35| mu35_4765(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4766(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4761 +# 35| r35_4767(glval) = VariableAddress[x340] : +# 35| r35_4768(glval) = FunctionAddress[~String] : +# 35| v35_4769(void) = Call[~String] : func:r35_4768, this:r35_4767 +# 35| mu35_4770(unknown) = ^CallSideEffect : ~m? +# 35| v35_4771(void) = ^IndirectReadSideEffect[-1] : &:r35_4767, ~m? +# 35| mu35_4772(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4767 +# 35| r35_4773(bool) = Constant[0] : +# 35| v35_4774(void) = ConditionalBranch : r35_4773 #-----| False -> Block 341 #-----| True -> Block 1026 -# 1042| Block 341 -# 1042| r1042_1(glval) = VariableAddress[x341] : -# 1042| mu1042_2(String) = Uninitialized[x341] : &:r1042_1 -# 1042| r1042_3(glval) = FunctionAddress[String] : -# 1042| v1042_4(void) = Call[String] : func:r1042_3, this:r1042_1 -# 1042| mu1042_5(unknown) = ^CallSideEffect : ~m? -# 1042| mu1042_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1042_1 -# 1043| r1043_1(glval) = VariableAddress[x341] : -# 1043| r1043_2(glval) = FunctionAddress[~String] : -# 1043| v1043_3(void) = Call[~String] : func:r1043_2, this:r1043_1 -# 1043| mu1043_4(unknown) = ^CallSideEffect : ~m? -# 1043| v1043_5(void) = ^IndirectReadSideEffect[-1] : &:r1043_1, ~m? -# 1043| mu1043_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1043_1 -# 1043| r1043_7(bool) = Constant[0] : -# 1043| v1043_8(void) = ConditionalBranch : r1043_7 +# 35| Block 341 +# 35| r35_4775(glval) = VariableAddress[x341] : +# 35| mu35_4776(String) = Uninitialized[x341] : &:r35_4775 +# 35| r35_4777(glval) = FunctionAddress[String] : +# 35| v35_4778(void) = Call[String] : func:r35_4777, this:r35_4775 +# 35| mu35_4779(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4780(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4775 +# 35| r35_4781(glval) = VariableAddress[x341] : +# 35| r35_4782(glval) = FunctionAddress[~String] : +# 35| v35_4783(void) = Call[~String] : func:r35_4782, this:r35_4781 +# 35| mu35_4784(unknown) = ^CallSideEffect : ~m? +# 35| v35_4785(void) = ^IndirectReadSideEffect[-1] : &:r35_4781, ~m? +# 35| mu35_4786(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4781 +# 35| r35_4787(bool) = Constant[0] : +# 35| v35_4788(void) = ConditionalBranch : r35_4787 #-----| False -> Block 342 #-----| True -> Block 1026 -# 1045| Block 342 -# 1045| r1045_1(glval) = VariableAddress[x342] : -# 1045| mu1045_2(String) = Uninitialized[x342] : &:r1045_1 -# 1045| r1045_3(glval) = FunctionAddress[String] : -# 1045| v1045_4(void) = Call[String] : func:r1045_3, this:r1045_1 -# 1045| mu1045_5(unknown) = ^CallSideEffect : ~m? -# 1045| mu1045_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1045_1 -# 1046| r1046_1(glval) = VariableAddress[x342] : -# 1046| r1046_2(glval) = FunctionAddress[~String] : -# 1046| v1046_3(void) = Call[~String] : func:r1046_2, this:r1046_1 -# 1046| mu1046_4(unknown) = ^CallSideEffect : ~m? -# 1046| v1046_5(void) = ^IndirectReadSideEffect[-1] : &:r1046_1, ~m? -# 1046| mu1046_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1046_1 -# 1046| r1046_7(bool) = Constant[0] : -# 1046| v1046_8(void) = ConditionalBranch : r1046_7 +# 35| Block 342 +# 35| r35_4789(glval) = VariableAddress[x342] : +# 35| mu35_4790(String) = Uninitialized[x342] : &:r35_4789 +# 35| r35_4791(glval) = FunctionAddress[String] : +# 35| v35_4792(void) = Call[String] : func:r35_4791, this:r35_4789 +# 35| mu35_4793(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4794(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4789 +# 35| r35_4795(glval) = VariableAddress[x342] : +# 35| r35_4796(glval) = FunctionAddress[~String] : +# 35| v35_4797(void) = Call[~String] : func:r35_4796, this:r35_4795 +# 35| mu35_4798(unknown) = ^CallSideEffect : ~m? +# 35| v35_4799(void) = ^IndirectReadSideEffect[-1] : &:r35_4795, ~m? +# 35| mu35_4800(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4795 +# 35| r35_4801(bool) = Constant[0] : +# 35| v35_4802(void) = ConditionalBranch : r35_4801 #-----| False -> Block 343 #-----| True -> Block 1026 -# 1048| Block 343 -# 1048| r1048_1(glval) = VariableAddress[x343] : -# 1048| mu1048_2(String) = Uninitialized[x343] : &:r1048_1 -# 1048| r1048_3(glval) = FunctionAddress[String] : -# 1048| v1048_4(void) = Call[String] : func:r1048_3, this:r1048_1 -# 1048| mu1048_5(unknown) = ^CallSideEffect : ~m? -# 1048| mu1048_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1048_1 -# 1049| r1049_1(glval) = VariableAddress[x343] : -# 1049| r1049_2(glval) = FunctionAddress[~String] : -# 1049| v1049_3(void) = Call[~String] : func:r1049_2, this:r1049_1 -# 1049| mu1049_4(unknown) = ^CallSideEffect : ~m? -# 1049| v1049_5(void) = ^IndirectReadSideEffect[-1] : &:r1049_1, ~m? -# 1049| mu1049_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1049_1 -# 1049| r1049_7(bool) = Constant[0] : -# 1049| v1049_8(void) = ConditionalBranch : r1049_7 +# 35| Block 343 +# 35| r35_4803(glval) = VariableAddress[x343] : +# 35| mu35_4804(String) = Uninitialized[x343] : &:r35_4803 +# 35| r35_4805(glval) = FunctionAddress[String] : +# 35| v35_4806(void) = Call[String] : func:r35_4805, this:r35_4803 +# 35| mu35_4807(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4808(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4803 +# 35| r35_4809(glval) = VariableAddress[x343] : +# 35| r35_4810(glval) = FunctionAddress[~String] : +# 35| v35_4811(void) = Call[~String] : func:r35_4810, this:r35_4809 +# 35| mu35_4812(unknown) = ^CallSideEffect : ~m? +# 35| v35_4813(void) = ^IndirectReadSideEffect[-1] : &:r35_4809, ~m? +# 35| mu35_4814(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4809 +# 35| r35_4815(bool) = Constant[0] : +# 35| v35_4816(void) = ConditionalBranch : r35_4815 #-----| False -> Block 344 #-----| True -> Block 1026 -# 1051| Block 344 -# 1051| r1051_1(glval) = VariableAddress[x344] : -# 1051| mu1051_2(String) = Uninitialized[x344] : &:r1051_1 -# 1051| r1051_3(glval) = FunctionAddress[String] : -# 1051| v1051_4(void) = Call[String] : func:r1051_3, this:r1051_1 -# 1051| mu1051_5(unknown) = ^CallSideEffect : ~m? -# 1051| mu1051_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1051_1 -# 1052| r1052_1(glval) = VariableAddress[x344] : -# 1052| r1052_2(glval) = FunctionAddress[~String] : -# 1052| v1052_3(void) = Call[~String] : func:r1052_2, this:r1052_1 -# 1052| mu1052_4(unknown) = ^CallSideEffect : ~m? -# 1052| v1052_5(void) = ^IndirectReadSideEffect[-1] : &:r1052_1, ~m? -# 1052| mu1052_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1052_1 -# 1052| r1052_7(bool) = Constant[0] : -# 1052| v1052_8(void) = ConditionalBranch : r1052_7 +# 35| Block 344 +# 35| r35_4817(glval) = VariableAddress[x344] : +# 35| mu35_4818(String) = Uninitialized[x344] : &:r35_4817 +# 35| r35_4819(glval) = FunctionAddress[String] : +# 35| v35_4820(void) = Call[String] : func:r35_4819, this:r35_4817 +# 35| mu35_4821(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4822(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4817 +# 35| r35_4823(glval) = VariableAddress[x344] : +# 35| r35_4824(glval) = FunctionAddress[~String] : +# 35| v35_4825(void) = Call[~String] : func:r35_4824, this:r35_4823 +# 35| mu35_4826(unknown) = ^CallSideEffect : ~m? +# 35| v35_4827(void) = ^IndirectReadSideEffect[-1] : &:r35_4823, ~m? +# 35| mu35_4828(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4823 +# 35| r35_4829(bool) = Constant[0] : +# 35| v35_4830(void) = ConditionalBranch : r35_4829 #-----| False -> Block 345 #-----| True -> Block 1026 -# 1054| Block 345 -# 1054| r1054_1(glval) = VariableAddress[x345] : -# 1054| mu1054_2(String) = Uninitialized[x345] : &:r1054_1 -# 1054| r1054_3(glval) = FunctionAddress[String] : -# 1054| v1054_4(void) = Call[String] : func:r1054_3, this:r1054_1 -# 1054| mu1054_5(unknown) = ^CallSideEffect : ~m? -# 1054| mu1054_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1054_1 -# 1055| r1055_1(glval) = VariableAddress[x345] : -# 1055| r1055_2(glval) = FunctionAddress[~String] : -# 1055| v1055_3(void) = Call[~String] : func:r1055_2, this:r1055_1 -# 1055| mu1055_4(unknown) = ^CallSideEffect : ~m? -# 1055| v1055_5(void) = ^IndirectReadSideEffect[-1] : &:r1055_1, ~m? -# 1055| mu1055_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1055_1 -# 1055| r1055_7(bool) = Constant[0] : -# 1055| v1055_8(void) = ConditionalBranch : r1055_7 +# 35| Block 345 +# 35| r35_4831(glval) = VariableAddress[x345] : +# 35| mu35_4832(String) = Uninitialized[x345] : &:r35_4831 +# 35| r35_4833(glval) = FunctionAddress[String] : +# 35| v35_4834(void) = Call[String] : func:r35_4833, this:r35_4831 +# 35| mu35_4835(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4836(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4831 +# 35| r35_4837(glval) = VariableAddress[x345] : +# 35| r35_4838(glval) = FunctionAddress[~String] : +# 35| v35_4839(void) = Call[~String] : func:r35_4838, this:r35_4837 +# 35| mu35_4840(unknown) = ^CallSideEffect : ~m? +# 35| v35_4841(void) = ^IndirectReadSideEffect[-1] : &:r35_4837, ~m? +# 35| mu35_4842(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4837 +# 35| r35_4843(bool) = Constant[0] : +# 35| v35_4844(void) = ConditionalBranch : r35_4843 #-----| False -> Block 346 #-----| True -> Block 1026 -# 1057| Block 346 -# 1057| r1057_1(glval) = VariableAddress[x346] : -# 1057| mu1057_2(String) = Uninitialized[x346] : &:r1057_1 -# 1057| r1057_3(glval) = FunctionAddress[String] : -# 1057| v1057_4(void) = Call[String] : func:r1057_3, this:r1057_1 -# 1057| mu1057_5(unknown) = ^CallSideEffect : ~m? -# 1057| mu1057_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1057_1 -# 1058| r1058_1(glval) = VariableAddress[x346] : -# 1058| r1058_2(glval) = FunctionAddress[~String] : -# 1058| v1058_3(void) = Call[~String] : func:r1058_2, this:r1058_1 -# 1058| mu1058_4(unknown) = ^CallSideEffect : ~m? -# 1058| v1058_5(void) = ^IndirectReadSideEffect[-1] : &:r1058_1, ~m? -# 1058| mu1058_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1058_1 -# 1058| r1058_7(bool) = Constant[0] : -# 1058| v1058_8(void) = ConditionalBranch : r1058_7 +# 35| Block 346 +# 35| r35_4845(glval) = VariableAddress[x346] : +# 35| mu35_4846(String) = Uninitialized[x346] : &:r35_4845 +# 35| r35_4847(glval) = FunctionAddress[String] : +# 35| v35_4848(void) = Call[String] : func:r35_4847, this:r35_4845 +# 35| mu35_4849(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4850(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4845 +# 35| r35_4851(glval) = VariableAddress[x346] : +# 35| r35_4852(glval) = FunctionAddress[~String] : +# 35| v35_4853(void) = Call[~String] : func:r35_4852, this:r35_4851 +# 35| mu35_4854(unknown) = ^CallSideEffect : ~m? +# 35| v35_4855(void) = ^IndirectReadSideEffect[-1] : &:r35_4851, ~m? +# 35| mu35_4856(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4851 +# 35| r35_4857(bool) = Constant[0] : +# 35| v35_4858(void) = ConditionalBranch : r35_4857 #-----| False -> Block 347 #-----| True -> Block 1026 -# 1060| Block 347 -# 1060| r1060_1(glval) = VariableAddress[x347] : -# 1060| mu1060_2(String) = Uninitialized[x347] : &:r1060_1 -# 1060| r1060_3(glval) = FunctionAddress[String] : -# 1060| v1060_4(void) = Call[String] : func:r1060_3, this:r1060_1 -# 1060| mu1060_5(unknown) = ^CallSideEffect : ~m? -# 1060| mu1060_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1060_1 -# 1061| r1061_1(glval) = VariableAddress[x347] : -# 1061| r1061_2(glval) = FunctionAddress[~String] : -# 1061| v1061_3(void) = Call[~String] : func:r1061_2, this:r1061_1 -# 1061| mu1061_4(unknown) = ^CallSideEffect : ~m? -# 1061| v1061_5(void) = ^IndirectReadSideEffect[-1] : &:r1061_1, ~m? -# 1061| mu1061_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1061_1 -# 1061| r1061_7(bool) = Constant[0] : -# 1061| v1061_8(void) = ConditionalBranch : r1061_7 +# 35| Block 347 +# 35| r35_4859(glval) = VariableAddress[x347] : +# 35| mu35_4860(String) = Uninitialized[x347] : &:r35_4859 +# 35| r35_4861(glval) = FunctionAddress[String] : +# 35| v35_4862(void) = Call[String] : func:r35_4861, this:r35_4859 +# 35| mu35_4863(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4864(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4859 +# 35| r35_4865(glval) = VariableAddress[x347] : +# 35| r35_4866(glval) = FunctionAddress[~String] : +# 35| v35_4867(void) = Call[~String] : func:r35_4866, this:r35_4865 +# 35| mu35_4868(unknown) = ^CallSideEffect : ~m? +# 35| v35_4869(void) = ^IndirectReadSideEffect[-1] : &:r35_4865, ~m? +# 35| mu35_4870(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4865 +# 35| r35_4871(bool) = Constant[0] : +# 35| v35_4872(void) = ConditionalBranch : r35_4871 #-----| False -> Block 348 #-----| True -> Block 1026 -# 1063| Block 348 -# 1063| r1063_1(glval) = VariableAddress[x348] : -# 1063| mu1063_2(String) = Uninitialized[x348] : &:r1063_1 -# 1063| r1063_3(glval) = FunctionAddress[String] : -# 1063| v1063_4(void) = Call[String] : func:r1063_3, this:r1063_1 -# 1063| mu1063_5(unknown) = ^CallSideEffect : ~m? -# 1063| mu1063_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1063_1 -# 1064| r1064_1(glval) = VariableAddress[x348] : -# 1064| r1064_2(glval) = FunctionAddress[~String] : -# 1064| v1064_3(void) = Call[~String] : func:r1064_2, this:r1064_1 -# 1064| mu1064_4(unknown) = ^CallSideEffect : ~m? -# 1064| v1064_5(void) = ^IndirectReadSideEffect[-1] : &:r1064_1, ~m? -# 1064| mu1064_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1064_1 -# 1064| r1064_7(bool) = Constant[0] : -# 1064| v1064_8(void) = ConditionalBranch : r1064_7 +# 35| Block 348 +# 35| r35_4873(glval) = VariableAddress[x348] : +# 35| mu35_4874(String) = Uninitialized[x348] : &:r35_4873 +# 35| r35_4875(glval) = FunctionAddress[String] : +# 35| v35_4876(void) = Call[String] : func:r35_4875, this:r35_4873 +# 35| mu35_4877(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4878(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4873 +# 35| r35_4879(glval) = VariableAddress[x348] : +# 35| r35_4880(glval) = FunctionAddress[~String] : +# 35| v35_4881(void) = Call[~String] : func:r35_4880, this:r35_4879 +# 35| mu35_4882(unknown) = ^CallSideEffect : ~m? +# 35| v35_4883(void) = ^IndirectReadSideEffect[-1] : &:r35_4879, ~m? +# 35| mu35_4884(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4879 +# 35| r35_4885(bool) = Constant[0] : +# 35| v35_4886(void) = ConditionalBranch : r35_4885 #-----| False -> Block 349 #-----| True -> Block 1026 -# 1066| Block 349 -# 1066| r1066_1(glval) = VariableAddress[x349] : -# 1066| mu1066_2(String) = Uninitialized[x349] : &:r1066_1 -# 1066| r1066_3(glval) = FunctionAddress[String] : -# 1066| v1066_4(void) = Call[String] : func:r1066_3, this:r1066_1 -# 1066| mu1066_5(unknown) = ^CallSideEffect : ~m? -# 1066| mu1066_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1066_1 -# 1067| r1067_1(glval) = VariableAddress[x349] : -# 1067| r1067_2(glval) = FunctionAddress[~String] : -# 1067| v1067_3(void) = Call[~String] : func:r1067_2, this:r1067_1 -# 1067| mu1067_4(unknown) = ^CallSideEffect : ~m? -# 1067| v1067_5(void) = ^IndirectReadSideEffect[-1] : &:r1067_1, ~m? -# 1067| mu1067_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1067_1 -# 1067| r1067_7(bool) = Constant[0] : -# 1067| v1067_8(void) = ConditionalBranch : r1067_7 +# 35| Block 349 +# 35| r35_4887(glval) = VariableAddress[x349] : +# 35| mu35_4888(String) = Uninitialized[x349] : &:r35_4887 +# 35| r35_4889(glval) = FunctionAddress[String] : +# 35| v35_4890(void) = Call[String] : func:r35_4889, this:r35_4887 +# 35| mu35_4891(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4892(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4887 +# 35| r35_4893(glval) = VariableAddress[x349] : +# 35| r35_4894(glval) = FunctionAddress[~String] : +# 35| v35_4895(void) = Call[~String] : func:r35_4894, this:r35_4893 +# 35| mu35_4896(unknown) = ^CallSideEffect : ~m? +# 35| v35_4897(void) = ^IndirectReadSideEffect[-1] : &:r35_4893, ~m? +# 35| mu35_4898(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4893 +# 35| r35_4899(bool) = Constant[0] : +# 35| v35_4900(void) = ConditionalBranch : r35_4899 #-----| False -> Block 350 #-----| True -> Block 1026 -# 1069| Block 350 -# 1069| r1069_1(glval) = VariableAddress[x350] : -# 1069| mu1069_2(String) = Uninitialized[x350] : &:r1069_1 -# 1069| r1069_3(glval) = FunctionAddress[String] : -# 1069| v1069_4(void) = Call[String] : func:r1069_3, this:r1069_1 -# 1069| mu1069_5(unknown) = ^CallSideEffect : ~m? -# 1069| mu1069_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1069_1 -# 1070| r1070_1(glval) = VariableAddress[x350] : -# 1070| r1070_2(glval) = FunctionAddress[~String] : -# 1070| v1070_3(void) = Call[~String] : func:r1070_2, this:r1070_1 -# 1070| mu1070_4(unknown) = ^CallSideEffect : ~m? -# 1070| v1070_5(void) = ^IndirectReadSideEffect[-1] : &:r1070_1, ~m? -# 1070| mu1070_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1070_1 -# 1070| r1070_7(bool) = Constant[0] : -# 1070| v1070_8(void) = ConditionalBranch : r1070_7 +# 35| Block 350 +# 35| r35_4901(glval) = VariableAddress[x350] : +# 35| mu35_4902(String) = Uninitialized[x350] : &:r35_4901 +# 35| r35_4903(glval) = FunctionAddress[String] : +# 35| v35_4904(void) = Call[String] : func:r35_4903, this:r35_4901 +# 35| mu35_4905(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4906(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4901 +# 35| r35_4907(glval) = VariableAddress[x350] : +# 35| r35_4908(glval) = FunctionAddress[~String] : +# 35| v35_4909(void) = Call[~String] : func:r35_4908, this:r35_4907 +# 35| mu35_4910(unknown) = ^CallSideEffect : ~m? +# 35| v35_4911(void) = ^IndirectReadSideEffect[-1] : &:r35_4907, ~m? +# 35| mu35_4912(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4907 +# 35| r35_4913(bool) = Constant[0] : +# 35| v35_4914(void) = ConditionalBranch : r35_4913 #-----| False -> Block 351 #-----| True -> Block 1026 -# 1072| Block 351 -# 1072| r1072_1(glval) = VariableAddress[x351] : -# 1072| mu1072_2(String) = Uninitialized[x351] : &:r1072_1 -# 1072| r1072_3(glval) = FunctionAddress[String] : -# 1072| v1072_4(void) = Call[String] : func:r1072_3, this:r1072_1 -# 1072| mu1072_5(unknown) = ^CallSideEffect : ~m? -# 1072| mu1072_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1072_1 -# 1073| r1073_1(glval) = VariableAddress[x351] : -# 1073| r1073_2(glval) = FunctionAddress[~String] : -# 1073| v1073_3(void) = Call[~String] : func:r1073_2, this:r1073_1 -# 1073| mu1073_4(unknown) = ^CallSideEffect : ~m? -# 1073| v1073_5(void) = ^IndirectReadSideEffect[-1] : &:r1073_1, ~m? -# 1073| mu1073_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1073_1 -# 1073| r1073_7(bool) = Constant[0] : -# 1073| v1073_8(void) = ConditionalBranch : r1073_7 +# 35| Block 351 +# 35| r35_4915(glval) = VariableAddress[x351] : +# 35| mu35_4916(String) = Uninitialized[x351] : &:r35_4915 +# 35| r35_4917(glval) = FunctionAddress[String] : +# 35| v35_4918(void) = Call[String] : func:r35_4917, this:r35_4915 +# 35| mu35_4919(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4920(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4915 +# 35| r35_4921(glval) = VariableAddress[x351] : +# 35| r35_4922(glval) = FunctionAddress[~String] : +# 35| v35_4923(void) = Call[~String] : func:r35_4922, this:r35_4921 +# 35| mu35_4924(unknown) = ^CallSideEffect : ~m? +# 35| v35_4925(void) = ^IndirectReadSideEffect[-1] : &:r35_4921, ~m? +# 35| mu35_4926(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4921 +# 35| r35_4927(bool) = Constant[0] : +# 35| v35_4928(void) = ConditionalBranch : r35_4927 #-----| False -> Block 352 #-----| True -> Block 1026 -# 1075| Block 352 -# 1075| r1075_1(glval) = VariableAddress[x352] : -# 1075| mu1075_2(String) = Uninitialized[x352] : &:r1075_1 -# 1075| r1075_3(glval) = FunctionAddress[String] : -# 1075| v1075_4(void) = Call[String] : func:r1075_3, this:r1075_1 -# 1075| mu1075_5(unknown) = ^CallSideEffect : ~m? -# 1075| mu1075_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1075_1 -# 1076| r1076_1(glval) = VariableAddress[x352] : -# 1076| r1076_2(glval) = FunctionAddress[~String] : -# 1076| v1076_3(void) = Call[~String] : func:r1076_2, this:r1076_1 -# 1076| mu1076_4(unknown) = ^CallSideEffect : ~m? -# 1076| v1076_5(void) = ^IndirectReadSideEffect[-1] : &:r1076_1, ~m? -# 1076| mu1076_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1076_1 -# 1076| r1076_7(bool) = Constant[0] : -# 1076| v1076_8(void) = ConditionalBranch : r1076_7 +# 35| Block 352 +# 35| r35_4929(glval) = VariableAddress[x352] : +# 35| mu35_4930(String) = Uninitialized[x352] : &:r35_4929 +# 35| r35_4931(glval) = FunctionAddress[String] : +# 35| v35_4932(void) = Call[String] : func:r35_4931, this:r35_4929 +# 35| mu35_4933(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4934(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4929 +# 35| r35_4935(glval) = VariableAddress[x352] : +# 35| r35_4936(glval) = FunctionAddress[~String] : +# 35| v35_4937(void) = Call[~String] : func:r35_4936, this:r35_4935 +# 35| mu35_4938(unknown) = ^CallSideEffect : ~m? +# 35| v35_4939(void) = ^IndirectReadSideEffect[-1] : &:r35_4935, ~m? +# 35| mu35_4940(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4935 +# 35| r35_4941(bool) = Constant[0] : +# 35| v35_4942(void) = ConditionalBranch : r35_4941 #-----| False -> Block 353 #-----| True -> Block 1026 -# 1078| Block 353 -# 1078| r1078_1(glval) = VariableAddress[x353] : -# 1078| mu1078_2(String) = Uninitialized[x353] : &:r1078_1 -# 1078| r1078_3(glval) = FunctionAddress[String] : -# 1078| v1078_4(void) = Call[String] : func:r1078_3, this:r1078_1 -# 1078| mu1078_5(unknown) = ^CallSideEffect : ~m? -# 1078| mu1078_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1078_1 -# 1079| r1079_1(glval) = VariableAddress[x353] : -# 1079| r1079_2(glval) = FunctionAddress[~String] : -# 1079| v1079_3(void) = Call[~String] : func:r1079_2, this:r1079_1 -# 1079| mu1079_4(unknown) = ^CallSideEffect : ~m? -# 1079| v1079_5(void) = ^IndirectReadSideEffect[-1] : &:r1079_1, ~m? -# 1079| mu1079_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1079_1 -# 1079| r1079_7(bool) = Constant[0] : -# 1079| v1079_8(void) = ConditionalBranch : r1079_7 +# 35| Block 353 +# 35| r35_4943(glval) = VariableAddress[x353] : +# 35| mu35_4944(String) = Uninitialized[x353] : &:r35_4943 +# 35| r35_4945(glval) = FunctionAddress[String] : +# 35| v35_4946(void) = Call[String] : func:r35_4945, this:r35_4943 +# 35| mu35_4947(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4948(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4943 +# 35| r35_4949(glval) = VariableAddress[x353] : +# 35| r35_4950(glval) = FunctionAddress[~String] : +# 35| v35_4951(void) = Call[~String] : func:r35_4950, this:r35_4949 +# 35| mu35_4952(unknown) = ^CallSideEffect : ~m? +# 35| v35_4953(void) = ^IndirectReadSideEffect[-1] : &:r35_4949, ~m? +# 35| mu35_4954(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4949 +# 35| r35_4955(bool) = Constant[0] : +# 35| v35_4956(void) = ConditionalBranch : r35_4955 #-----| False -> Block 354 #-----| True -> Block 1026 -# 1081| Block 354 -# 1081| r1081_1(glval) = VariableAddress[x354] : -# 1081| mu1081_2(String) = Uninitialized[x354] : &:r1081_1 -# 1081| r1081_3(glval) = FunctionAddress[String] : -# 1081| v1081_4(void) = Call[String] : func:r1081_3, this:r1081_1 -# 1081| mu1081_5(unknown) = ^CallSideEffect : ~m? -# 1081| mu1081_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1081_1 -# 1082| r1082_1(glval) = VariableAddress[x354] : -# 1082| r1082_2(glval) = FunctionAddress[~String] : -# 1082| v1082_3(void) = Call[~String] : func:r1082_2, this:r1082_1 -# 1082| mu1082_4(unknown) = ^CallSideEffect : ~m? -# 1082| v1082_5(void) = ^IndirectReadSideEffect[-1] : &:r1082_1, ~m? -# 1082| mu1082_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1082_1 -# 1082| r1082_7(bool) = Constant[0] : -# 1082| v1082_8(void) = ConditionalBranch : r1082_7 +# 35| Block 354 +# 35| r35_4957(glval) = VariableAddress[x354] : +# 35| mu35_4958(String) = Uninitialized[x354] : &:r35_4957 +# 35| r35_4959(glval) = FunctionAddress[String] : +# 35| v35_4960(void) = Call[String] : func:r35_4959, this:r35_4957 +# 35| mu35_4961(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4962(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4957 +# 35| r35_4963(glval) = VariableAddress[x354] : +# 35| r35_4964(glval) = FunctionAddress[~String] : +# 35| v35_4965(void) = Call[~String] : func:r35_4964, this:r35_4963 +# 35| mu35_4966(unknown) = ^CallSideEffect : ~m? +# 35| v35_4967(void) = ^IndirectReadSideEffect[-1] : &:r35_4963, ~m? +# 35| mu35_4968(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4963 +# 35| r35_4969(bool) = Constant[0] : +# 35| v35_4970(void) = ConditionalBranch : r35_4969 #-----| False -> Block 355 #-----| True -> Block 1026 -# 1084| Block 355 -# 1084| r1084_1(glval) = VariableAddress[x355] : -# 1084| mu1084_2(String) = Uninitialized[x355] : &:r1084_1 -# 1084| r1084_3(glval) = FunctionAddress[String] : -# 1084| v1084_4(void) = Call[String] : func:r1084_3, this:r1084_1 -# 1084| mu1084_5(unknown) = ^CallSideEffect : ~m? -# 1084| mu1084_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1084_1 -# 1085| r1085_1(glval) = VariableAddress[x355] : -# 1085| r1085_2(glval) = FunctionAddress[~String] : -# 1085| v1085_3(void) = Call[~String] : func:r1085_2, this:r1085_1 -# 1085| mu1085_4(unknown) = ^CallSideEffect : ~m? -# 1085| v1085_5(void) = ^IndirectReadSideEffect[-1] : &:r1085_1, ~m? -# 1085| mu1085_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1085_1 -# 1085| r1085_7(bool) = Constant[0] : -# 1085| v1085_8(void) = ConditionalBranch : r1085_7 +# 35| Block 355 +# 35| r35_4971(glval) = VariableAddress[x355] : +# 35| mu35_4972(String) = Uninitialized[x355] : &:r35_4971 +# 35| r35_4973(glval) = FunctionAddress[String] : +# 35| v35_4974(void) = Call[String] : func:r35_4973, this:r35_4971 +# 35| mu35_4975(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4976(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4971 +# 35| r35_4977(glval) = VariableAddress[x355] : +# 35| r35_4978(glval) = FunctionAddress[~String] : +# 35| v35_4979(void) = Call[~String] : func:r35_4978, this:r35_4977 +# 35| mu35_4980(unknown) = ^CallSideEffect : ~m? +# 35| v35_4981(void) = ^IndirectReadSideEffect[-1] : &:r35_4977, ~m? +# 35| mu35_4982(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4977 +# 35| r35_4983(bool) = Constant[0] : +# 35| v35_4984(void) = ConditionalBranch : r35_4983 #-----| False -> Block 356 #-----| True -> Block 1026 -# 1087| Block 356 -# 1087| r1087_1(glval) = VariableAddress[x356] : -# 1087| mu1087_2(String) = Uninitialized[x356] : &:r1087_1 -# 1087| r1087_3(glval) = FunctionAddress[String] : -# 1087| v1087_4(void) = Call[String] : func:r1087_3, this:r1087_1 -# 1087| mu1087_5(unknown) = ^CallSideEffect : ~m? -# 1087| mu1087_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1087_1 -# 1088| r1088_1(glval) = VariableAddress[x356] : -# 1088| r1088_2(glval) = FunctionAddress[~String] : -# 1088| v1088_3(void) = Call[~String] : func:r1088_2, this:r1088_1 -# 1088| mu1088_4(unknown) = ^CallSideEffect : ~m? -# 1088| v1088_5(void) = ^IndirectReadSideEffect[-1] : &:r1088_1, ~m? -# 1088| mu1088_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1088_1 -# 1088| r1088_7(bool) = Constant[0] : -# 1088| v1088_8(void) = ConditionalBranch : r1088_7 +# 35| Block 356 +# 35| r35_4985(glval) = VariableAddress[x356] : +# 35| mu35_4986(String) = Uninitialized[x356] : &:r35_4985 +# 35| r35_4987(glval) = FunctionAddress[String] : +# 35| v35_4988(void) = Call[String] : func:r35_4987, this:r35_4985 +# 35| mu35_4989(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4990(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4985 +# 35| r35_4991(glval) = VariableAddress[x356] : +# 35| r35_4992(glval) = FunctionAddress[~String] : +# 35| v35_4993(void) = Call[~String] : func:r35_4992, this:r35_4991 +# 35| mu35_4994(unknown) = ^CallSideEffect : ~m? +# 35| v35_4995(void) = ^IndirectReadSideEffect[-1] : &:r35_4991, ~m? +# 35| mu35_4996(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4991 +# 35| r35_4997(bool) = Constant[0] : +# 35| v35_4998(void) = ConditionalBranch : r35_4997 #-----| False -> Block 357 #-----| True -> Block 1026 -# 1090| Block 357 -# 1090| r1090_1(glval) = VariableAddress[x357] : -# 1090| mu1090_2(String) = Uninitialized[x357] : &:r1090_1 -# 1090| r1090_3(glval) = FunctionAddress[String] : -# 1090| v1090_4(void) = Call[String] : func:r1090_3, this:r1090_1 -# 1090| mu1090_5(unknown) = ^CallSideEffect : ~m? -# 1090| mu1090_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1090_1 -# 1091| r1091_1(glval) = VariableAddress[x357] : -# 1091| r1091_2(glval) = FunctionAddress[~String] : -# 1091| v1091_3(void) = Call[~String] : func:r1091_2, this:r1091_1 -# 1091| mu1091_4(unknown) = ^CallSideEffect : ~m? -# 1091| v1091_5(void) = ^IndirectReadSideEffect[-1] : &:r1091_1, ~m? -# 1091| mu1091_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1091_1 -# 1091| r1091_7(bool) = Constant[0] : -# 1091| v1091_8(void) = ConditionalBranch : r1091_7 +# 35| Block 357 +# 35| r35_4999(glval) = VariableAddress[x357] : +# 35| mu35_5000(String) = Uninitialized[x357] : &:r35_4999 +# 35| r35_5001(glval) = FunctionAddress[String] : +# 35| v35_5002(void) = Call[String] : func:r35_5001, this:r35_4999 +# 35| mu35_5003(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5004(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4999 +# 35| r35_5005(glval) = VariableAddress[x357] : +# 35| r35_5006(glval) = FunctionAddress[~String] : +# 35| v35_5007(void) = Call[~String] : func:r35_5006, this:r35_5005 +# 35| mu35_5008(unknown) = ^CallSideEffect : ~m? +# 35| v35_5009(void) = ^IndirectReadSideEffect[-1] : &:r35_5005, ~m? +# 35| mu35_5010(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5005 +# 35| r35_5011(bool) = Constant[0] : +# 35| v35_5012(void) = ConditionalBranch : r35_5011 #-----| False -> Block 358 #-----| True -> Block 1026 -# 1093| Block 358 -# 1093| r1093_1(glval) = VariableAddress[x358] : -# 1093| mu1093_2(String) = Uninitialized[x358] : &:r1093_1 -# 1093| r1093_3(glval) = FunctionAddress[String] : -# 1093| v1093_4(void) = Call[String] : func:r1093_3, this:r1093_1 -# 1093| mu1093_5(unknown) = ^CallSideEffect : ~m? -# 1093| mu1093_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1093_1 -# 1094| r1094_1(glval) = VariableAddress[x358] : -# 1094| r1094_2(glval) = FunctionAddress[~String] : -# 1094| v1094_3(void) = Call[~String] : func:r1094_2, this:r1094_1 -# 1094| mu1094_4(unknown) = ^CallSideEffect : ~m? -# 1094| v1094_5(void) = ^IndirectReadSideEffect[-1] : &:r1094_1, ~m? -# 1094| mu1094_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1094_1 -# 1094| r1094_7(bool) = Constant[0] : -# 1094| v1094_8(void) = ConditionalBranch : r1094_7 +# 35| Block 358 +# 35| r35_5013(glval) = VariableAddress[x358] : +# 35| mu35_5014(String) = Uninitialized[x358] : &:r35_5013 +# 35| r35_5015(glval) = FunctionAddress[String] : +# 35| v35_5016(void) = Call[String] : func:r35_5015, this:r35_5013 +# 35| mu35_5017(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5018(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5013 +# 35| r35_5019(glval) = VariableAddress[x358] : +# 35| r35_5020(glval) = FunctionAddress[~String] : +# 35| v35_5021(void) = Call[~String] : func:r35_5020, this:r35_5019 +# 35| mu35_5022(unknown) = ^CallSideEffect : ~m? +# 35| v35_5023(void) = ^IndirectReadSideEffect[-1] : &:r35_5019, ~m? +# 35| mu35_5024(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5019 +# 35| r35_5025(bool) = Constant[0] : +# 35| v35_5026(void) = ConditionalBranch : r35_5025 #-----| False -> Block 359 #-----| True -> Block 1026 -# 1096| Block 359 -# 1096| r1096_1(glval) = VariableAddress[x359] : -# 1096| mu1096_2(String) = Uninitialized[x359] : &:r1096_1 -# 1096| r1096_3(glval) = FunctionAddress[String] : -# 1096| v1096_4(void) = Call[String] : func:r1096_3, this:r1096_1 -# 1096| mu1096_5(unknown) = ^CallSideEffect : ~m? -# 1096| mu1096_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1096_1 -# 1097| r1097_1(glval) = VariableAddress[x359] : -# 1097| r1097_2(glval) = FunctionAddress[~String] : -# 1097| v1097_3(void) = Call[~String] : func:r1097_2, this:r1097_1 -# 1097| mu1097_4(unknown) = ^CallSideEffect : ~m? -# 1097| v1097_5(void) = ^IndirectReadSideEffect[-1] : &:r1097_1, ~m? -# 1097| mu1097_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1097_1 -# 1097| r1097_7(bool) = Constant[0] : -# 1097| v1097_8(void) = ConditionalBranch : r1097_7 +# 35| Block 359 +# 35| r35_5027(glval) = VariableAddress[x359] : +# 35| mu35_5028(String) = Uninitialized[x359] : &:r35_5027 +# 35| r35_5029(glval) = FunctionAddress[String] : +# 35| v35_5030(void) = Call[String] : func:r35_5029, this:r35_5027 +# 35| mu35_5031(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5032(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5027 +# 35| r35_5033(glval) = VariableAddress[x359] : +# 35| r35_5034(glval) = FunctionAddress[~String] : +# 35| v35_5035(void) = Call[~String] : func:r35_5034, this:r35_5033 +# 35| mu35_5036(unknown) = ^CallSideEffect : ~m? +# 35| v35_5037(void) = ^IndirectReadSideEffect[-1] : &:r35_5033, ~m? +# 35| mu35_5038(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5033 +# 35| r35_5039(bool) = Constant[0] : +# 35| v35_5040(void) = ConditionalBranch : r35_5039 #-----| False -> Block 360 #-----| True -> Block 1026 -# 1099| Block 360 -# 1099| r1099_1(glval) = VariableAddress[x360] : -# 1099| mu1099_2(String) = Uninitialized[x360] : &:r1099_1 -# 1099| r1099_3(glval) = FunctionAddress[String] : -# 1099| v1099_4(void) = Call[String] : func:r1099_3, this:r1099_1 -# 1099| mu1099_5(unknown) = ^CallSideEffect : ~m? -# 1099| mu1099_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1099_1 -# 1100| r1100_1(glval) = VariableAddress[x360] : -# 1100| r1100_2(glval) = FunctionAddress[~String] : -# 1100| v1100_3(void) = Call[~String] : func:r1100_2, this:r1100_1 -# 1100| mu1100_4(unknown) = ^CallSideEffect : ~m? -# 1100| v1100_5(void) = ^IndirectReadSideEffect[-1] : &:r1100_1, ~m? -# 1100| mu1100_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1100_1 -# 1100| r1100_7(bool) = Constant[0] : -# 1100| v1100_8(void) = ConditionalBranch : r1100_7 +# 35| Block 360 +# 35| r35_5041(glval) = VariableAddress[x360] : +# 35| mu35_5042(String) = Uninitialized[x360] : &:r35_5041 +# 35| r35_5043(glval) = FunctionAddress[String] : +# 35| v35_5044(void) = Call[String] : func:r35_5043, this:r35_5041 +# 35| mu35_5045(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5046(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5041 +# 35| r35_5047(glval) = VariableAddress[x360] : +# 35| r35_5048(glval) = FunctionAddress[~String] : +# 35| v35_5049(void) = Call[~String] : func:r35_5048, this:r35_5047 +# 35| mu35_5050(unknown) = ^CallSideEffect : ~m? +# 35| v35_5051(void) = ^IndirectReadSideEffect[-1] : &:r35_5047, ~m? +# 35| mu35_5052(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5047 +# 35| r35_5053(bool) = Constant[0] : +# 35| v35_5054(void) = ConditionalBranch : r35_5053 #-----| False -> Block 361 #-----| True -> Block 1026 -# 1102| Block 361 -# 1102| r1102_1(glval) = VariableAddress[x361] : -# 1102| mu1102_2(String) = Uninitialized[x361] : &:r1102_1 -# 1102| r1102_3(glval) = FunctionAddress[String] : -# 1102| v1102_4(void) = Call[String] : func:r1102_3, this:r1102_1 -# 1102| mu1102_5(unknown) = ^CallSideEffect : ~m? -# 1102| mu1102_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1102_1 -# 1103| r1103_1(glval) = VariableAddress[x361] : -# 1103| r1103_2(glval) = FunctionAddress[~String] : -# 1103| v1103_3(void) = Call[~String] : func:r1103_2, this:r1103_1 -# 1103| mu1103_4(unknown) = ^CallSideEffect : ~m? -# 1103| v1103_5(void) = ^IndirectReadSideEffect[-1] : &:r1103_1, ~m? -# 1103| mu1103_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1103_1 -# 1103| r1103_7(bool) = Constant[0] : -# 1103| v1103_8(void) = ConditionalBranch : r1103_7 +# 35| Block 361 +# 35| r35_5055(glval) = VariableAddress[x361] : +# 35| mu35_5056(String) = Uninitialized[x361] : &:r35_5055 +# 35| r35_5057(glval) = FunctionAddress[String] : +# 35| v35_5058(void) = Call[String] : func:r35_5057, this:r35_5055 +# 35| mu35_5059(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5060(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5055 +# 35| r35_5061(glval) = VariableAddress[x361] : +# 35| r35_5062(glval) = FunctionAddress[~String] : +# 35| v35_5063(void) = Call[~String] : func:r35_5062, this:r35_5061 +# 35| mu35_5064(unknown) = ^CallSideEffect : ~m? +# 35| v35_5065(void) = ^IndirectReadSideEffect[-1] : &:r35_5061, ~m? +# 35| mu35_5066(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5061 +# 35| r35_5067(bool) = Constant[0] : +# 35| v35_5068(void) = ConditionalBranch : r35_5067 #-----| False -> Block 362 #-----| True -> Block 1026 -# 1105| Block 362 -# 1105| r1105_1(glval) = VariableAddress[x362] : -# 1105| mu1105_2(String) = Uninitialized[x362] : &:r1105_1 -# 1105| r1105_3(glval) = FunctionAddress[String] : -# 1105| v1105_4(void) = Call[String] : func:r1105_3, this:r1105_1 -# 1105| mu1105_5(unknown) = ^CallSideEffect : ~m? -# 1105| mu1105_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1105_1 -# 1106| r1106_1(glval) = VariableAddress[x362] : -# 1106| r1106_2(glval) = FunctionAddress[~String] : -# 1106| v1106_3(void) = Call[~String] : func:r1106_2, this:r1106_1 -# 1106| mu1106_4(unknown) = ^CallSideEffect : ~m? -# 1106| v1106_5(void) = ^IndirectReadSideEffect[-1] : &:r1106_1, ~m? -# 1106| mu1106_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1106_1 -# 1106| r1106_7(bool) = Constant[0] : -# 1106| v1106_8(void) = ConditionalBranch : r1106_7 +# 35| Block 362 +# 35| r35_5069(glval) = VariableAddress[x362] : +# 35| mu35_5070(String) = Uninitialized[x362] : &:r35_5069 +# 35| r35_5071(glval) = FunctionAddress[String] : +# 35| v35_5072(void) = Call[String] : func:r35_5071, this:r35_5069 +# 35| mu35_5073(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5074(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5069 +# 35| r35_5075(glval) = VariableAddress[x362] : +# 35| r35_5076(glval) = FunctionAddress[~String] : +# 35| v35_5077(void) = Call[~String] : func:r35_5076, this:r35_5075 +# 35| mu35_5078(unknown) = ^CallSideEffect : ~m? +# 35| v35_5079(void) = ^IndirectReadSideEffect[-1] : &:r35_5075, ~m? +# 35| mu35_5080(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5075 +# 35| r35_5081(bool) = Constant[0] : +# 35| v35_5082(void) = ConditionalBranch : r35_5081 #-----| False -> Block 363 #-----| True -> Block 1026 -# 1108| Block 363 -# 1108| r1108_1(glval) = VariableAddress[x363] : -# 1108| mu1108_2(String) = Uninitialized[x363] : &:r1108_1 -# 1108| r1108_3(glval) = FunctionAddress[String] : -# 1108| v1108_4(void) = Call[String] : func:r1108_3, this:r1108_1 -# 1108| mu1108_5(unknown) = ^CallSideEffect : ~m? -# 1108| mu1108_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1108_1 -# 1109| r1109_1(glval) = VariableAddress[x363] : -# 1109| r1109_2(glval) = FunctionAddress[~String] : -# 1109| v1109_3(void) = Call[~String] : func:r1109_2, this:r1109_1 -# 1109| mu1109_4(unknown) = ^CallSideEffect : ~m? -# 1109| v1109_5(void) = ^IndirectReadSideEffect[-1] : &:r1109_1, ~m? -# 1109| mu1109_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1109_1 -# 1109| r1109_7(bool) = Constant[0] : -# 1109| v1109_8(void) = ConditionalBranch : r1109_7 +# 35| Block 363 +# 35| r35_5083(glval) = VariableAddress[x363] : +# 35| mu35_5084(String) = Uninitialized[x363] : &:r35_5083 +# 35| r35_5085(glval) = FunctionAddress[String] : +# 35| v35_5086(void) = Call[String] : func:r35_5085, this:r35_5083 +# 35| mu35_5087(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5088(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5083 +# 35| r35_5089(glval) = VariableAddress[x363] : +# 35| r35_5090(glval) = FunctionAddress[~String] : +# 35| v35_5091(void) = Call[~String] : func:r35_5090, this:r35_5089 +# 35| mu35_5092(unknown) = ^CallSideEffect : ~m? +# 35| v35_5093(void) = ^IndirectReadSideEffect[-1] : &:r35_5089, ~m? +# 35| mu35_5094(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5089 +# 35| r35_5095(bool) = Constant[0] : +# 35| v35_5096(void) = ConditionalBranch : r35_5095 #-----| False -> Block 364 #-----| True -> Block 1026 -# 1111| Block 364 -# 1111| r1111_1(glval) = VariableAddress[x364] : -# 1111| mu1111_2(String) = Uninitialized[x364] : &:r1111_1 -# 1111| r1111_3(glval) = FunctionAddress[String] : -# 1111| v1111_4(void) = Call[String] : func:r1111_3, this:r1111_1 -# 1111| mu1111_5(unknown) = ^CallSideEffect : ~m? -# 1111| mu1111_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1111_1 -# 1112| r1112_1(glval) = VariableAddress[x364] : -# 1112| r1112_2(glval) = FunctionAddress[~String] : -# 1112| v1112_3(void) = Call[~String] : func:r1112_2, this:r1112_1 -# 1112| mu1112_4(unknown) = ^CallSideEffect : ~m? -# 1112| v1112_5(void) = ^IndirectReadSideEffect[-1] : &:r1112_1, ~m? -# 1112| mu1112_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1112_1 -# 1112| r1112_7(bool) = Constant[0] : -# 1112| v1112_8(void) = ConditionalBranch : r1112_7 +# 35| Block 364 +# 35| r35_5097(glval) = VariableAddress[x364] : +# 35| mu35_5098(String) = Uninitialized[x364] : &:r35_5097 +# 35| r35_5099(glval) = FunctionAddress[String] : +# 35| v35_5100(void) = Call[String] : func:r35_5099, this:r35_5097 +# 35| mu35_5101(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5102(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5097 +# 35| r35_5103(glval) = VariableAddress[x364] : +# 35| r35_5104(glval) = FunctionAddress[~String] : +# 35| v35_5105(void) = Call[~String] : func:r35_5104, this:r35_5103 +# 35| mu35_5106(unknown) = ^CallSideEffect : ~m? +# 35| v35_5107(void) = ^IndirectReadSideEffect[-1] : &:r35_5103, ~m? +# 35| mu35_5108(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5103 +# 35| r35_5109(bool) = Constant[0] : +# 35| v35_5110(void) = ConditionalBranch : r35_5109 #-----| False -> Block 365 #-----| True -> Block 1026 -# 1114| Block 365 -# 1114| r1114_1(glval) = VariableAddress[x365] : -# 1114| mu1114_2(String) = Uninitialized[x365] : &:r1114_1 -# 1114| r1114_3(glval) = FunctionAddress[String] : -# 1114| v1114_4(void) = Call[String] : func:r1114_3, this:r1114_1 -# 1114| mu1114_5(unknown) = ^CallSideEffect : ~m? -# 1114| mu1114_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1114_1 -# 1115| r1115_1(glval) = VariableAddress[x365] : -# 1115| r1115_2(glval) = FunctionAddress[~String] : -# 1115| v1115_3(void) = Call[~String] : func:r1115_2, this:r1115_1 -# 1115| mu1115_4(unknown) = ^CallSideEffect : ~m? -# 1115| v1115_5(void) = ^IndirectReadSideEffect[-1] : &:r1115_1, ~m? -# 1115| mu1115_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1115_1 -# 1115| r1115_7(bool) = Constant[0] : -# 1115| v1115_8(void) = ConditionalBranch : r1115_7 +# 35| Block 365 +# 35| r35_5111(glval) = VariableAddress[x365] : +# 35| mu35_5112(String) = Uninitialized[x365] : &:r35_5111 +# 35| r35_5113(glval) = FunctionAddress[String] : +# 35| v35_5114(void) = Call[String] : func:r35_5113, this:r35_5111 +# 35| mu35_5115(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5116(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5111 +# 35| r35_5117(glval) = VariableAddress[x365] : +# 35| r35_5118(glval) = FunctionAddress[~String] : +# 35| v35_5119(void) = Call[~String] : func:r35_5118, this:r35_5117 +# 35| mu35_5120(unknown) = ^CallSideEffect : ~m? +# 35| v35_5121(void) = ^IndirectReadSideEffect[-1] : &:r35_5117, ~m? +# 35| mu35_5122(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5117 +# 35| r35_5123(bool) = Constant[0] : +# 35| v35_5124(void) = ConditionalBranch : r35_5123 #-----| False -> Block 366 #-----| True -> Block 1026 -# 1117| Block 366 -# 1117| r1117_1(glval) = VariableAddress[x366] : -# 1117| mu1117_2(String) = Uninitialized[x366] : &:r1117_1 -# 1117| r1117_3(glval) = FunctionAddress[String] : -# 1117| v1117_4(void) = Call[String] : func:r1117_3, this:r1117_1 -# 1117| mu1117_5(unknown) = ^CallSideEffect : ~m? -# 1117| mu1117_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1117_1 -# 1118| r1118_1(glval) = VariableAddress[x366] : -# 1118| r1118_2(glval) = FunctionAddress[~String] : -# 1118| v1118_3(void) = Call[~String] : func:r1118_2, this:r1118_1 -# 1118| mu1118_4(unknown) = ^CallSideEffect : ~m? -# 1118| v1118_5(void) = ^IndirectReadSideEffect[-1] : &:r1118_1, ~m? -# 1118| mu1118_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1118_1 -# 1118| r1118_7(bool) = Constant[0] : -# 1118| v1118_8(void) = ConditionalBranch : r1118_7 +# 35| Block 366 +# 35| r35_5125(glval) = VariableAddress[x366] : +# 35| mu35_5126(String) = Uninitialized[x366] : &:r35_5125 +# 35| r35_5127(glval) = FunctionAddress[String] : +# 35| v35_5128(void) = Call[String] : func:r35_5127, this:r35_5125 +# 35| mu35_5129(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5130(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5125 +# 35| r35_5131(glval) = VariableAddress[x366] : +# 35| r35_5132(glval) = FunctionAddress[~String] : +# 35| v35_5133(void) = Call[~String] : func:r35_5132, this:r35_5131 +# 35| mu35_5134(unknown) = ^CallSideEffect : ~m? +# 35| v35_5135(void) = ^IndirectReadSideEffect[-1] : &:r35_5131, ~m? +# 35| mu35_5136(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5131 +# 35| r35_5137(bool) = Constant[0] : +# 35| v35_5138(void) = ConditionalBranch : r35_5137 #-----| False -> Block 367 #-----| True -> Block 1026 -# 1120| Block 367 -# 1120| r1120_1(glval) = VariableAddress[x367] : -# 1120| mu1120_2(String) = Uninitialized[x367] : &:r1120_1 -# 1120| r1120_3(glval) = FunctionAddress[String] : -# 1120| v1120_4(void) = Call[String] : func:r1120_3, this:r1120_1 -# 1120| mu1120_5(unknown) = ^CallSideEffect : ~m? -# 1120| mu1120_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1120_1 -# 1121| r1121_1(glval) = VariableAddress[x367] : -# 1121| r1121_2(glval) = FunctionAddress[~String] : -# 1121| v1121_3(void) = Call[~String] : func:r1121_2, this:r1121_1 -# 1121| mu1121_4(unknown) = ^CallSideEffect : ~m? -# 1121| v1121_5(void) = ^IndirectReadSideEffect[-1] : &:r1121_1, ~m? -# 1121| mu1121_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1121_1 -# 1121| r1121_7(bool) = Constant[0] : -# 1121| v1121_8(void) = ConditionalBranch : r1121_7 +# 35| Block 367 +# 35| r35_5139(glval) = VariableAddress[x367] : +# 35| mu35_5140(String) = Uninitialized[x367] : &:r35_5139 +# 35| r35_5141(glval) = FunctionAddress[String] : +# 35| v35_5142(void) = Call[String] : func:r35_5141, this:r35_5139 +# 35| mu35_5143(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5144(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5139 +# 35| r35_5145(glval) = VariableAddress[x367] : +# 35| r35_5146(glval) = FunctionAddress[~String] : +# 35| v35_5147(void) = Call[~String] : func:r35_5146, this:r35_5145 +# 35| mu35_5148(unknown) = ^CallSideEffect : ~m? +# 35| v35_5149(void) = ^IndirectReadSideEffect[-1] : &:r35_5145, ~m? +# 35| mu35_5150(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5145 +# 35| r35_5151(bool) = Constant[0] : +# 35| v35_5152(void) = ConditionalBranch : r35_5151 #-----| False -> Block 368 #-----| True -> Block 1026 -# 1123| Block 368 -# 1123| r1123_1(glval) = VariableAddress[x368] : -# 1123| mu1123_2(String) = Uninitialized[x368] : &:r1123_1 -# 1123| r1123_3(glval) = FunctionAddress[String] : -# 1123| v1123_4(void) = Call[String] : func:r1123_3, this:r1123_1 -# 1123| mu1123_5(unknown) = ^CallSideEffect : ~m? -# 1123| mu1123_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1123_1 -# 1124| r1124_1(glval) = VariableAddress[x368] : -# 1124| r1124_2(glval) = FunctionAddress[~String] : -# 1124| v1124_3(void) = Call[~String] : func:r1124_2, this:r1124_1 -# 1124| mu1124_4(unknown) = ^CallSideEffect : ~m? -# 1124| v1124_5(void) = ^IndirectReadSideEffect[-1] : &:r1124_1, ~m? -# 1124| mu1124_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1124_1 -# 1124| r1124_7(bool) = Constant[0] : -# 1124| v1124_8(void) = ConditionalBranch : r1124_7 +# 35| Block 368 +# 35| r35_5153(glval) = VariableAddress[x368] : +# 35| mu35_5154(String) = Uninitialized[x368] : &:r35_5153 +# 35| r35_5155(glval) = FunctionAddress[String] : +# 35| v35_5156(void) = Call[String] : func:r35_5155, this:r35_5153 +# 35| mu35_5157(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5158(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5153 +# 35| r35_5159(glval) = VariableAddress[x368] : +# 35| r35_5160(glval) = FunctionAddress[~String] : +# 35| v35_5161(void) = Call[~String] : func:r35_5160, this:r35_5159 +# 35| mu35_5162(unknown) = ^CallSideEffect : ~m? +# 35| v35_5163(void) = ^IndirectReadSideEffect[-1] : &:r35_5159, ~m? +# 35| mu35_5164(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5159 +# 35| r35_5165(bool) = Constant[0] : +# 35| v35_5166(void) = ConditionalBranch : r35_5165 #-----| False -> Block 369 #-----| True -> Block 1026 -# 1126| Block 369 -# 1126| r1126_1(glval) = VariableAddress[x369] : -# 1126| mu1126_2(String) = Uninitialized[x369] : &:r1126_1 -# 1126| r1126_3(glval) = FunctionAddress[String] : -# 1126| v1126_4(void) = Call[String] : func:r1126_3, this:r1126_1 -# 1126| mu1126_5(unknown) = ^CallSideEffect : ~m? -# 1126| mu1126_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1126_1 -# 1127| r1127_1(glval) = VariableAddress[x369] : -# 1127| r1127_2(glval) = FunctionAddress[~String] : -# 1127| v1127_3(void) = Call[~String] : func:r1127_2, this:r1127_1 -# 1127| mu1127_4(unknown) = ^CallSideEffect : ~m? -# 1127| v1127_5(void) = ^IndirectReadSideEffect[-1] : &:r1127_1, ~m? -# 1127| mu1127_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1127_1 -# 1127| r1127_7(bool) = Constant[0] : -# 1127| v1127_8(void) = ConditionalBranch : r1127_7 +# 35| Block 369 +# 35| r35_5167(glval) = VariableAddress[x369] : +# 35| mu35_5168(String) = Uninitialized[x369] : &:r35_5167 +# 35| r35_5169(glval) = FunctionAddress[String] : +# 35| v35_5170(void) = Call[String] : func:r35_5169, this:r35_5167 +# 35| mu35_5171(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5172(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5167 +# 35| r35_5173(glval) = VariableAddress[x369] : +# 35| r35_5174(glval) = FunctionAddress[~String] : +# 35| v35_5175(void) = Call[~String] : func:r35_5174, this:r35_5173 +# 35| mu35_5176(unknown) = ^CallSideEffect : ~m? +# 35| v35_5177(void) = ^IndirectReadSideEffect[-1] : &:r35_5173, ~m? +# 35| mu35_5178(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5173 +# 35| r35_5179(bool) = Constant[0] : +# 35| v35_5180(void) = ConditionalBranch : r35_5179 #-----| False -> Block 370 #-----| True -> Block 1026 -# 1129| Block 370 -# 1129| r1129_1(glval) = VariableAddress[x370] : -# 1129| mu1129_2(String) = Uninitialized[x370] : &:r1129_1 -# 1129| r1129_3(glval) = FunctionAddress[String] : -# 1129| v1129_4(void) = Call[String] : func:r1129_3, this:r1129_1 -# 1129| mu1129_5(unknown) = ^CallSideEffect : ~m? -# 1129| mu1129_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1129_1 -# 1130| r1130_1(glval) = VariableAddress[x370] : -# 1130| r1130_2(glval) = FunctionAddress[~String] : -# 1130| v1130_3(void) = Call[~String] : func:r1130_2, this:r1130_1 -# 1130| mu1130_4(unknown) = ^CallSideEffect : ~m? -# 1130| v1130_5(void) = ^IndirectReadSideEffect[-1] : &:r1130_1, ~m? -# 1130| mu1130_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1130_1 -# 1130| r1130_7(bool) = Constant[0] : -# 1130| v1130_8(void) = ConditionalBranch : r1130_7 +# 35| Block 370 +# 35| r35_5181(glval) = VariableAddress[x370] : +# 35| mu35_5182(String) = Uninitialized[x370] : &:r35_5181 +# 35| r35_5183(glval) = FunctionAddress[String] : +# 35| v35_5184(void) = Call[String] : func:r35_5183, this:r35_5181 +# 35| mu35_5185(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5186(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5181 +# 35| r35_5187(glval) = VariableAddress[x370] : +# 35| r35_5188(glval) = FunctionAddress[~String] : +# 35| v35_5189(void) = Call[~String] : func:r35_5188, this:r35_5187 +# 35| mu35_5190(unknown) = ^CallSideEffect : ~m? +# 35| v35_5191(void) = ^IndirectReadSideEffect[-1] : &:r35_5187, ~m? +# 35| mu35_5192(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5187 +# 35| r35_5193(bool) = Constant[0] : +# 35| v35_5194(void) = ConditionalBranch : r35_5193 #-----| False -> Block 371 #-----| True -> Block 1026 -# 1132| Block 371 -# 1132| r1132_1(glval) = VariableAddress[x371] : -# 1132| mu1132_2(String) = Uninitialized[x371] : &:r1132_1 -# 1132| r1132_3(glval) = FunctionAddress[String] : -# 1132| v1132_4(void) = Call[String] : func:r1132_3, this:r1132_1 -# 1132| mu1132_5(unknown) = ^CallSideEffect : ~m? -# 1132| mu1132_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1132_1 -# 1133| r1133_1(glval) = VariableAddress[x371] : -# 1133| r1133_2(glval) = FunctionAddress[~String] : -# 1133| v1133_3(void) = Call[~String] : func:r1133_2, this:r1133_1 -# 1133| mu1133_4(unknown) = ^CallSideEffect : ~m? -# 1133| v1133_5(void) = ^IndirectReadSideEffect[-1] : &:r1133_1, ~m? -# 1133| mu1133_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1133_1 -# 1133| r1133_7(bool) = Constant[0] : -# 1133| v1133_8(void) = ConditionalBranch : r1133_7 +# 35| Block 371 +# 35| r35_5195(glval) = VariableAddress[x371] : +# 35| mu35_5196(String) = Uninitialized[x371] : &:r35_5195 +# 35| r35_5197(glval) = FunctionAddress[String] : +# 35| v35_5198(void) = Call[String] : func:r35_5197, this:r35_5195 +# 35| mu35_5199(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5200(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5195 +# 35| r35_5201(glval) = VariableAddress[x371] : +# 35| r35_5202(glval) = FunctionAddress[~String] : +# 35| v35_5203(void) = Call[~String] : func:r35_5202, this:r35_5201 +# 35| mu35_5204(unknown) = ^CallSideEffect : ~m? +# 35| v35_5205(void) = ^IndirectReadSideEffect[-1] : &:r35_5201, ~m? +# 35| mu35_5206(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5201 +# 35| r35_5207(bool) = Constant[0] : +# 35| v35_5208(void) = ConditionalBranch : r35_5207 #-----| False -> Block 372 #-----| True -> Block 1026 -# 1135| Block 372 -# 1135| r1135_1(glval) = VariableAddress[x372] : -# 1135| mu1135_2(String) = Uninitialized[x372] : &:r1135_1 -# 1135| r1135_3(glval) = FunctionAddress[String] : -# 1135| v1135_4(void) = Call[String] : func:r1135_3, this:r1135_1 -# 1135| mu1135_5(unknown) = ^CallSideEffect : ~m? -# 1135| mu1135_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1135_1 -# 1136| r1136_1(glval) = VariableAddress[x372] : -# 1136| r1136_2(glval) = FunctionAddress[~String] : -# 1136| v1136_3(void) = Call[~String] : func:r1136_2, this:r1136_1 -# 1136| mu1136_4(unknown) = ^CallSideEffect : ~m? -# 1136| v1136_5(void) = ^IndirectReadSideEffect[-1] : &:r1136_1, ~m? -# 1136| mu1136_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1136_1 -# 1136| r1136_7(bool) = Constant[0] : -# 1136| v1136_8(void) = ConditionalBranch : r1136_7 +# 35| Block 372 +# 35| r35_5209(glval) = VariableAddress[x372] : +# 35| mu35_5210(String) = Uninitialized[x372] : &:r35_5209 +# 35| r35_5211(glval) = FunctionAddress[String] : +# 35| v35_5212(void) = Call[String] : func:r35_5211, this:r35_5209 +# 35| mu35_5213(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5214(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5209 +# 35| r35_5215(glval) = VariableAddress[x372] : +# 35| r35_5216(glval) = FunctionAddress[~String] : +# 35| v35_5217(void) = Call[~String] : func:r35_5216, this:r35_5215 +# 35| mu35_5218(unknown) = ^CallSideEffect : ~m? +# 35| v35_5219(void) = ^IndirectReadSideEffect[-1] : &:r35_5215, ~m? +# 35| mu35_5220(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5215 +# 35| r35_5221(bool) = Constant[0] : +# 35| v35_5222(void) = ConditionalBranch : r35_5221 #-----| False -> Block 373 #-----| True -> Block 1026 -# 1138| Block 373 -# 1138| r1138_1(glval) = VariableAddress[x373] : -# 1138| mu1138_2(String) = Uninitialized[x373] : &:r1138_1 -# 1138| r1138_3(glval) = FunctionAddress[String] : -# 1138| v1138_4(void) = Call[String] : func:r1138_3, this:r1138_1 -# 1138| mu1138_5(unknown) = ^CallSideEffect : ~m? -# 1138| mu1138_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1138_1 -# 1139| r1139_1(glval) = VariableAddress[x373] : -# 1139| r1139_2(glval) = FunctionAddress[~String] : -# 1139| v1139_3(void) = Call[~String] : func:r1139_2, this:r1139_1 -# 1139| mu1139_4(unknown) = ^CallSideEffect : ~m? -# 1139| v1139_5(void) = ^IndirectReadSideEffect[-1] : &:r1139_1, ~m? -# 1139| mu1139_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1139_1 -# 1139| r1139_7(bool) = Constant[0] : -# 1139| v1139_8(void) = ConditionalBranch : r1139_7 +# 35| Block 373 +# 35| r35_5223(glval) = VariableAddress[x373] : +# 35| mu35_5224(String) = Uninitialized[x373] : &:r35_5223 +# 35| r35_5225(glval) = FunctionAddress[String] : +# 35| v35_5226(void) = Call[String] : func:r35_5225, this:r35_5223 +# 35| mu35_5227(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5228(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5223 +# 35| r35_5229(glval) = VariableAddress[x373] : +# 35| r35_5230(glval) = FunctionAddress[~String] : +# 35| v35_5231(void) = Call[~String] : func:r35_5230, this:r35_5229 +# 35| mu35_5232(unknown) = ^CallSideEffect : ~m? +# 35| v35_5233(void) = ^IndirectReadSideEffect[-1] : &:r35_5229, ~m? +# 35| mu35_5234(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5229 +# 35| r35_5235(bool) = Constant[0] : +# 35| v35_5236(void) = ConditionalBranch : r35_5235 #-----| False -> Block 374 #-----| True -> Block 1026 -# 1141| Block 374 -# 1141| r1141_1(glval) = VariableAddress[x374] : -# 1141| mu1141_2(String) = Uninitialized[x374] : &:r1141_1 -# 1141| r1141_3(glval) = FunctionAddress[String] : -# 1141| v1141_4(void) = Call[String] : func:r1141_3, this:r1141_1 -# 1141| mu1141_5(unknown) = ^CallSideEffect : ~m? -# 1141| mu1141_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1141_1 -# 1142| r1142_1(glval) = VariableAddress[x374] : -# 1142| r1142_2(glval) = FunctionAddress[~String] : -# 1142| v1142_3(void) = Call[~String] : func:r1142_2, this:r1142_1 -# 1142| mu1142_4(unknown) = ^CallSideEffect : ~m? -# 1142| v1142_5(void) = ^IndirectReadSideEffect[-1] : &:r1142_1, ~m? -# 1142| mu1142_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1142_1 -# 1142| r1142_7(bool) = Constant[0] : -# 1142| v1142_8(void) = ConditionalBranch : r1142_7 +# 35| Block 374 +# 35| r35_5237(glval) = VariableAddress[x374] : +# 35| mu35_5238(String) = Uninitialized[x374] : &:r35_5237 +# 35| r35_5239(glval) = FunctionAddress[String] : +# 35| v35_5240(void) = Call[String] : func:r35_5239, this:r35_5237 +# 35| mu35_5241(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5242(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5237 +# 35| r35_5243(glval) = VariableAddress[x374] : +# 35| r35_5244(glval) = FunctionAddress[~String] : +# 35| v35_5245(void) = Call[~String] : func:r35_5244, this:r35_5243 +# 35| mu35_5246(unknown) = ^CallSideEffect : ~m? +# 35| v35_5247(void) = ^IndirectReadSideEffect[-1] : &:r35_5243, ~m? +# 35| mu35_5248(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5243 +# 35| r35_5249(bool) = Constant[0] : +# 35| v35_5250(void) = ConditionalBranch : r35_5249 #-----| False -> Block 375 #-----| True -> Block 1026 -# 1144| Block 375 -# 1144| r1144_1(glval) = VariableAddress[x375] : -# 1144| mu1144_2(String) = Uninitialized[x375] : &:r1144_1 -# 1144| r1144_3(glval) = FunctionAddress[String] : -# 1144| v1144_4(void) = Call[String] : func:r1144_3, this:r1144_1 -# 1144| mu1144_5(unknown) = ^CallSideEffect : ~m? -# 1144| mu1144_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1144_1 -# 1145| r1145_1(glval) = VariableAddress[x375] : -# 1145| r1145_2(glval) = FunctionAddress[~String] : -# 1145| v1145_3(void) = Call[~String] : func:r1145_2, this:r1145_1 -# 1145| mu1145_4(unknown) = ^CallSideEffect : ~m? -# 1145| v1145_5(void) = ^IndirectReadSideEffect[-1] : &:r1145_1, ~m? -# 1145| mu1145_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1145_1 -# 1145| r1145_7(bool) = Constant[0] : -# 1145| v1145_8(void) = ConditionalBranch : r1145_7 +# 35| Block 375 +# 35| r35_5251(glval) = VariableAddress[x375] : +# 35| mu35_5252(String) = Uninitialized[x375] : &:r35_5251 +# 35| r35_5253(glval) = FunctionAddress[String] : +# 35| v35_5254(void) = Call[String] : func:r35_5253, this:r35_5251 +# 35| mu35_5255(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5256(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5251 +# 35| r35_5257(glval) = VariableAddress[x375] : +# 35| r35_5258(glval) = FunctionAddress[~String] : +# 35| v35_5259(void) = Call[~String] : func:r35_5258, this:r35_5257 +# 35| mu35_5260(unknown) = ^CallSideEffect : ~m? +# 35| v35_5261(void) = ^IndirectReadSideEffect[-1] : &:r35_5257, ~m? +# 35| mu35_5262(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5257 +# 35| r35_5263(bool) = Constant[0] : +# 35| v35_5264(void) = ConditionalBranch : r35_5263 #-----| False -> Block 376 #-----| True -> Block 1026 -# 1147| Block 376 -# 1147| r1147_1(glval) = VariableAddress[x376] : -# 1147| mu1147_2(String) = Uninitialized[x376] : &:r1147_1 -# 1147| r1147_3(glval) = FunctionAddress[String] : -# 1147| v1147_4(void) = Call[String] : func:r1147_3, this:r1147_1 -# 1147| mu1147_5(unknown) = ^CallSideEffect : ~m? -# 1147| mu1147_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1147_1 -# 1148| r1148_1(glval) = VariableAddress[x376] : -# 1148| r1148_2(glval) = FunctionAddress[~String] : -# 1148| v1148_3(void) = Call[~String] : func:r1148_2, this:r1148_1 -# 1148| mu1148_4(unknown) = ^CallSideEffect : ~m? -# 1148| v1148_5(void) = ^IndirectReadSideEffect[-1] : &:r1148_1, ~m? -# 1148| mu1148_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1148_1 -# 1148| r1148_7(bool) = Constant[0] : -# 1148| v1148_8(void) = ConditionalBranch : r1148_7 +# 35| Block 376 +# 35| r35_5265(glval) = VariableAddress[x376] : +# 35| mu35_5266(String) = Uninitialized[x376] : &:r35_5265 +# 35| r35_5267(glval) = FunctionAddress[String] : +# 35| v35_5268(void) = Call[String] : func:r35_5267, this:r35_5265 +# 35| mu35_5269(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5270(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5265 +# 35| r35_5271(glval) = VariableAddress[x376] : +# 35| r35_5272(glval) = FunctionAddress[~String] : +# 35| v35_5273(void) = Call[~String] : func:r35_5272, this:r35_5271 +# 35| mu35_5274(unknown) = ^CallSideEffect : ~m? +# 35| v35_5275(void) = ^IndirectReadSideEffect[-1] : &:r35_5271, ~m? +# 35| mu35_5276(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5271 +# 35| r35_5277(bool) = Constant[0] : +# 35| v35_5278(void) = ConditionalBranch : r35_5277 #-----| False -> Block 377 #-----| True -> Block 1026 -# 1150| Block 377 -# 1150| r1150_1(glval) = VariableAddress[x377] : -# 1150| mu1150_2(String) = Uninitialized[x377] : &:r1150_1 -# 1150| r1150_3(glval) = FunctionAddress[String] : -# 1150| v1150_4(void) = Call[String] : func:r1150_3, this:r1150_1 -# 1150| mu1150_5(unknown) = ^CallSideEffect : ~m? -# 1150| mu1150_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1150_1 -# 1151| r1151_1(glval) = VariableAddress[x377] : -# 1151| r1151_2(glval) = FunctionAddress[~String] : -# 1151| v1151_3(void) = Call[~String] : func:r1151_2, this:r1151_1 -# 1151| mu1151_4(unknown) = ^CallSideEffect : ~m? -# 1151| v1151_5(void) = ^IndirectReadSideEffect[-1] : &:r1151_1, ~m? -# 1151| mu1151_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1151_1 -# 1151| r1151_7(bool) = Constant[0] : -# 1151| v1151_8(void) = ConditionalBranch : r1151_7 +# 35| Block 377 +# 35| r35_5279(glval) = VariableAddress[x377] : +# 35| mu35_5280(String) = Uninitialized[x377] : &:r35_5279 +# 35| r35_5281(glval) = FunctionAddress[String] : +# 35| v35_5282(void) = Call[String] : func:r35_5281, this:r35_5279 +# 35| mu35_5283(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5284(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5279 +# 35| r35_5285(glval) = VariableAddress[x377] : +# 35| r35_5286(glval) = FunctionAddress[~String] : +# 35| v35_5287(void) = Call[~String] : func:r35_5286, this:r35_5285 +# 35| mu35_5288(unknown) = ^CallSideEffect : ~m? +# 35| v35_5289(void) = ^IndirectReadSideEffect[-1] : &:r35_5285, ~m? +# 35| mu35_5290(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5285 +# 35| r35_5291(bool) = Constant[0] : +# 35| v35_5292(void) = ConditionalBranch : r35_5291 #-----| False -> Block 378 #-----| True -> Block 1026 -# 1153| Block 378 -# 1153| r1153_1(glval) = VariableAddress[x378] : -# 1153| mu1153_2(String) = Uninitialized[x378] : &:r1153_1 -# 1153| r1153_3(glval) = FunctionAddress[String] : -# 1153| v1153_4(void) = Call[String] : func:r1153_3, this:r1153_1 -# 1153| mu1153_5(unknown) = ^CallSideEffect : ~m? -# 1153| mu1153_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1153_1 -# 1154| r1154_1(glval) = VariableAddress[x378] : -# 1154| r1154_2(glval) = FunctionAddress[~String] : -# 1154| v1154_3(void) = Call[~String] : func:r1154_2, this:r1154_1 -# 1154| mu1154_4(unknown) = ^CallSideEffect : ~m? -# 1154| v1154_5(void) = ^IndirectReadSideEffect[-1] : &:r1154_1, ~m? -# 1154| mu1154_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1154_1 -# 1154| r1154_7(bool) = Constant[0] : -# 1154| v1154_8(void) = ConditionalBranch : r1154_7 +# 35| Block 378 +# 35| r35_5293(glval) = VariableAddress[x378] : +# 35| mu35_5294(String) = Uninitialized[x378] : &:r35_5293 +# 35| r35_5295(glval) = FunctionAddress[String] : +# 35| v35_5296(void) = Call[String] : func:r35_5295, this:r35_5293 +# 35| mu35_5297(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5298(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5293 +# 35| r35_5299(glval) = VariableAddress[x378] : +# 35| r35_5300(glval) = FunctionAddress[~String] : +# 35| v35_5301(void) = Call[~String] : func:r35_5300, this:r35_5299 +# 35| mu35_5302(unknown) = ^CallSideEffect : ~m? +# 35| v35_5303(void) = ^IndirectReadSideEffect[-1] : &:r35_5299, ~m? +# 35| mu35_5304(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5299 +# 35| r35_5305(bool) = Constant[0] : +# 35| v35_5306(void) = ConditionalBranch : r35_5305 #-----| False -> Block 379 #-----| True -> Block 1026 -# 1156| Block 379 -# 1156| r1156_1(glval) = VariableAddress[x379] : -# 1156| mu1156_2(String) = Uninitialized[x379] : &:r1156_1 -# 1156| r1156_3(glval) = FunctionAddress[String] : -# 1156| v1156_4(void) = Call[String] : func:r1156_3, this:r1156_1 -# 1156| mu1156_5(unknown) = ^CallSideEffect : ~m? -# 1156| mu1156_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1156_1 -# 1157| r1157_1(glval) = VariableAddress[x379] : -# 1157| r1157_2(glval) = FunctionAddress[~String] : -# 1157| v1157_3(void) = Call[~String] : func:r1157_2, this:r1157_1 -# 1157| mu1157_4(unknown) = ^CallSideEffect : ~m? -# 1157| v1157_5(void) = ^IndirectReadSideEffect[-1] : &:r1157_1, ~m? -# 1157| mu1157_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1157_1 -# 1157| r1157_7(bool) = Constant[0] : -# 1157| v1157_8(void) = ConditionalBranch : r1157_7 +# 35| Block 379 +# 35| r35_5307(glval) = VariableAddress[x379] : +# 35| mu35_5308(String) = Uninitialized[x379] : &:r35_5307 +# 35| r35_5309(glval) = FunctionAddress[String] : +# 35| v35_5310(void) = Call[String] : func:r35_5309, this:r35_5307 +# 35| mu35_5311(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5312(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5307 +# 35| r35_5313(glval) = VariableAddress[x379] : +# 35| r35_5314(glval) = FunctionAddress[~String] : +# 35| v35_5315(void) = Call[~String] : func:r35_5314, this:r35_5313 +# 35| mu35_5316(unknown) = ^CallSideEffect : ~m? +# 35| v35_5317(void) = ^IndirectReadSideEffect[-1] : &:r35_5313, ~m? +# 35| mu35_5318(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5313 +# 35| r35_5319(bool) = Constant[0] : +# 35| v35_5320(void) = ConditionalBranch : r35_5319 #-----| False -> Block 380 #-----| True -> Block 1026 -# 1159| Block 380 -# 1159| r1159_1(glval) = VariableAddress[x380] : -# 1159| mu1159_2(String) = Uninitialized[x380] : &:r1159_1 -# 1159| r1159_3(glval) = FunctionAddress[String] : -# 1159| v1159_4(void) = Call[String] : func:r1159_3, this:r1159_1 -# 1159| mu1159_5(unknown) = ^CallSideEffect : ~m? -# 1159| mu1159_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1159_1 -# 1160| r1160_1(glval) = VariableAddress[x380] : -# 1160| r1160_2(glval) = FunctionAddress[~String] : -# 1160| v1160_3(void) = Call[~String] : func:r1160_2, this:r1160_1 -# 1160| mu1160_4(unknown) = ^CallSideEffect : ~m? -# 1160| v1160_5(void) = ^IndirectReadSideEffect[-1] : &:r1160_1, ~m? -# 1160| mu1160_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1160_1 -# 1160| r1160_7(bool) = Constant[0] : -# 1160| v1160_8(void) = ConditionalBranch : r1160_7 +# 35| Block 380 +# 35| r35_5321(glval) = VariableAddress[x380] : +# 35| mu35_5322(String) = Uninitialized[x380] : &:r35_5321 +# 35| r35_5323(glval) = FunctionAddress[String] : +# 35| v35_5324(void) = Call[String] : func:r35_5323, this:r35_5321 +# 35| mu35_5325(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5326(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5321 +# 35| r35_5327(glval) = VariableAddress[x380] : +# 35| r35_5328(glval) = FunctionAddress[~String] : +# 35| v35_5329(void) = Call[~String] : func:r35_5328, this:r35_5327 +# 35| mu35_5330(unknown) = ^CallSideEffect : ~m? +# 35| v35_5331(void) = ^IndirectReadSideEffect[-1] : &:r35_5327, ~m? +# 35| mu35_5332(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5327 +# 35| r35_5333(bool) = Constant[0] : +# 35| v35_5334(void) = ConditionalBranch : r35_5333 #-----| False -> Block 381 #-----| True -> Block 1026 -# 1162| Block 381 -# 1162| r1162_1(glval) = VariableAddress[x381] : -# 1162| mu1162_2(String) = Uninitialized[x381] : &:r1162_1 -# 1162| r1162_3(glval) = FunctionAddress[String] : -# 1162| v1162_4(void) = Call[String] : func:r1162_3, this:r1162_1 -# 1162| mu1162_5(unknown) = ^CallSideEffect : ~m? -# 1162| mu1162_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1162_1 -# 1163| r1163_1(glval) = VariableAddress[x381] : -# 1163| r1163_2(glval) = FunctionAddress[~String] : -# 1163| v1163_3(void) = Call[~String] : func:r1163_2, this:r1163_1 -# 1163| mu1163_4(unknown) = ^CallSideEffect : ~m? -# 1163| v1163_5(void) = ^IndirectReadSideEffect[-1] : &:r1163_1, ~m? -# 1163| mu1163_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1163_1 -# 1163| r1163_7(bool) = Constant[0] : -# 1163| v1163_8(void) = ConditionalBranch : r1163_7 +# 35| Block 381 +# 35| r35_5335(glval) = VariableAddress[x381] : +# 35| mu35_5336(String) = Uninitialized[x381] : &:r35_5335 +# 35| r35_5337(glval) = FunctionAddress[String] : +# 35| v35_5338(void) = Call[String] : func:r35_5337, this:r35_5335 +# 35| mu35_5339(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5340(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5335 +# 35| r35_5341(glval) = VariableAddress[x381] : +# 35| r35_5342(glval) = FunctionAddress[~String] : +# 35| v35_5343(void) = Call[~String] : func:r35_5342, this:r35_5341 +# 35| mu35_5344(unknown) = ^CallSideEffect : ~m? +# 35| v35_5345(void) = ^IndirectReadSideEffect[-1] : &:r35_5341, ~m? +# 35| mu35_5346(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5341 +# 35| r35_5347(bool) = Constant[0] : +# 35| v35_5348(void) = ConditionalBranch : r35_5347 #-----| False -> Block 382 #-----| True -> Block 1026 -# 1165| Block 382 -# 1165| r1165_1(glval) = VariableAddress[x382] : -# 1165| mu1165_2(String) = Uninitialized[x382] : &:r1165_1 -# 1165| r1165_3(glval) = FunctionAddress[String] : -# 1165| v1165_4(void) = Call[String] : func:r1165_3, this:r1165_1 -# 1165| mu1165_5(unknown) = ^CallSideEffect : ~m? -# 1165| mu1165_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1165_1 -# 1166| r1166_1(glval) = VariableAddress[x382] : -# 1166| r1166_2(glval) = FunctionAddress[~String] : -# 1166| v1166_3(void) = Call[~String] : func:r1166_2, this:r1166_1 -# 1166| mu1166_4(unknown) = ^CallSideEffect : ~m? -# 1166| v1166_5(void) = ^IndirectReadSideEffect[-1] : &:r1166_1, ~m? -# 1166| mu1166_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1166_1 -# 1166| r1166_7(bool) = Constant[0] : -# 1166| v1166_8(void) = ConditionalBranch : r1166_7 +# 35| Block 382 +# 35| r35_5349(glval) = VariableAddress[x382] : +# 35| mu35_5350(String) = Uninitialized[x382] : &:r35_5349 +# 35| r35_5351(glval) = FunctionAddress[String] : +# 35| v35_5352(void) = Call[String] : func:r35_5351, this:r35_5349 +# 35| mu35_5353(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5354(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5349 +# 35| r35_5355(glval) = VariableAddress[x382] : +# 35| r35_5356(glval) = FunctionAddress[~String] : +# 35| v35_5357(void) = Call[~String] : func:r35_5356, this:r35_5355 +# 35| mu35_5358(unknown) = ^CallSideEffect : ~m? +# 35| v35_5359(void) = ^IndirectReadSideEffect[-1] : &:r35_5355, ~m? +# 35| mu35_5360(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5355 +# 35| r35_5361(bool) = Constant[0] : +# 35| v35_5362(void) = ConditionalBranch : r35_5361 #-----| False -> Block 383 #-----| True -> Block 1026 -# 1168| Block 383 -# 1168| r1168_1(glval) = VariableAddress[x383] : -# 1168| mu1168_2(String) = Uninitialized[x383] : &:r1168_1 -# 1168| r1168_3(glval) = FunctionAddress[String] : -# 1168| v1168_4(void) = Call[String] : func:r1168_3, this:r1168_1 -# 1168| mu1168_5(unknown) = ^CallSideEffect : ~m? -# 1168| mu1168_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1168_1 -# 1169| r1169_1(glval) = VariableAddress[x383] : -# 1169| r1169_2(glval) = FunctionAddress[~String] : -# 1169| v1169_3(void) = Call[~String] : func:r1169_2, this:r1169_1 -# 1169| mu1169_4(unknown) = ^CallSideEffect : ~m? -# 1169| v1169_5(void) = ^IndirectReadSideEffect[-1] : &:r1169_1, ~m? -# 1169| mu1169_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1169_1 -# 1169| r1169_7(bool) = Constant[0] : -# 1169| v1169_8(void) = ConditionalBranch : r1169_7 +# 35| Block 383 +# 35| r35_5363(glval) = VariableAddress[x383] : +# 35| mu35_5364(String) = Uninitialized[x383] : &:r35_5363 +# 35| r35_5365(glval) = FunctionAddress[String] : +# 35| v35_5366(void) = Call[String] : func:r35_5365, this:r35_5363 +# 35| mu35_5367(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5368(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5363 +# 35| r35_5369(glval) = VariableAddress[x383] : +# 35| r35_5370(glval) = FunctionAddress[~String] : +# 35| v35_5371(void) = Call[~String] : func:r35_5370, this:r35_5369 +# 35| mu35_5372(unknown) = ^CallSideEffect : ~m? +# 35| v35_5373(void) = ^IndirectReadSideEffect[-1] : &:r35_5369, ~m? +# 35| mu35_5374(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5369 +# 35| r35_5375(bool) = Constant[0] : +# 35| v35_5376(void) = ConditionalBranch : r35_5375 #-----| False -> Block 384 #-----| True -> Block 1026 -# 1171| Block 384 -# 1171| r1171_1(glval) = VariableAddress[x384] : -# 1171| mu1171_2(String) = Uninitialized[x384] : &:r1171_1 -# 1171| r1171_3(glval) = FunctionAddress[String] : -# 1171| v1171_4(void) = Call[String] : func:r1171_3, this:r1171_1 -# 1171| mu1171_5(unknown) = ^CallSideEffect : ~m? -# 1171| mu1171_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1171_1 -# 1172| r1172_1(glval) = VariableAddress[x384] : -# 1172| r1172_2(glval) = FunctionAddress[~String] : -# 1172| v1172_3(void) = Call[~String] : func:r1172_2, this:r1172_1 -# 1172| mu1172_4(unknown) = ^CallSideEffect : ~m? -# 1172| v1172_5(void) = ^IndirectReadSideEffect[-1] : &:r1172_1, ~m? -# 1172| mu1172_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1172_1 -# 1172| r1172_7(bool) = Constant[0] : -# 1172| v1172_8(void) = ConditionalBranch : r1172_7 +# 35| Block 384 +# 35| r35_5377(glval) = VariableAddress[x384] : +# 35| mu35_5378(String) = Uninitialized[x384] : &:r35_5377 +# 35| r35_5379(glval) = FunctionAddress[String] : +# 35| v35_5380(void) = Call[String] : func:r35_5379, this:r35_5377 +# 35| mu35_5381(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5382(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5377 +# 35| r35_5383(glval) = VariableAddress[x384] : +# 35| r35_5384(glval) = FunctionAddress[~String] : +# 35| v35_5385(void) = Call[~String] : func:r35_5384, this:r35_5383 +# 35| mu35_5386(unknown) = ^CallSideEffect : ~m? +# 35| v35_5387(void) = ^IndirectReadSideEffect[-1] : &:r35_5383, ~m? +# 35| mu35_5388(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5383 +# 35| r35_5389(bool) = Constant[0] : +# 35| v35_5390(void) = ConditionalBranch : r35_5389 #-----| False -> Block 385 #-----| True -> Block 1026 -# 1174| Block 385 -# 1174| r1174_1(glval) = VariableAddress[x385] : -# 1174| mu1174_2(String) = Uninitialized[x385] : &:r1174_1 -# 1174| r1174_3(glval) = FunctionAddress[String] : -# 1174| v1174_4(void) = Call[String] : func:r1174_3, this:r1174_1 -# 1174| mu1174_5(unknown) = ^CallSideEffect : ~m? -# 1174| mu1174_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1174_1 -# 1175| r1175_1(glval) = VariableAddress[x385] : -# 1175| r1175_2(glval) = FunctionAddress[~String] : -# 1175| v1175_3(void) = Call[~String] : func:r1175_2, this:r1175_1 -# 1175| mu1175_4(unknown) = ^CallSideEffect : ~m? -# 1175| v1175_5(void) = ^IndirectReadSideEffect[-1] : &:r1175_1, ~m? -# 1175| mu1175_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1175_1 -# 1175| r1175_7(bool) = Constant[0] : -# 1175| v1175_8(void) = ConditionalBranch : r1175_7 +# 35| Block 385 +# 35| r35_5391(glval) = VariableAddress[x385] : +# 35| mu35_5392(String) = Uninitialized[x385] : &:r35_5391 +# 35| r35_5393(glval) = FunctionAddress[String] : +# 35| v35_5394(void) = Call[String] : func:r35_5393, this:r35_5391 +# 35| mu35_5395(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5396(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5391 +# 35| r35_5397(glval) = VariableAddress[x385] : +# 35| r35_5398(glval) = FunctionAddress[~String] : +# 35| v35_5399(void) = Call[~String] : func:r35_5398, this:r35_5397 +# 35| mu35_5400(unknown) = ^CallSideEffect : ~m? +# 35| v35_5401(void) = ^IndirectReadSideEffect[-1] : &:r35_5397, ~m? +# 35| mu35_5402(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5397 +# 35| r35_5403(bool) = Constant[0] : +# 35| v35_5404(void) = ConditionalBranch : r35_5403 #-----| False -> Block 386 #-----| True -> Block 1026 -# 1177| Block 386 -# 1177| r1177_1(glval) = VariableAddress[x386] : -# 1177| mu1177_2(String) = Uninitialized[x386] : &:r1177_1 -# 1177| r1177_3(glval) = FunctionAddress[String] : -# 1177| v1177_4(void) = Call[String] : func:r1177_3, this:r1177_1 -# 1177| mu1177_5(unknown) = ^CallSideEffect : ~m? -# 1177| mu1177_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1177_1 -# 1178| r1178_1(glval) = VariableAddress[x386] : -# 1178| r1178_2(glval) = FunctionAddress[~String] : -# 1178| v1178_3(void) = Call[~String] : func:r1178_2, this:r1178_1 -# 1178| mu1178_4(unknown) = ^CallSideEffect : ~m? -# 1178| v1178_5(void) = ^IndirectReadSideEffect[-1] : &:r1178_1, ~m? -# 1178| mu1178_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1178_1 -# 1178| r1178_7(bool) = Constant[0] : -# 1178| v1178_8(void) = ConditionalBranch : r1178_7 +# 35| Block 386 +# 35| r35_5405(glval) = VariableAddress[x386] : +# 35| mu35_5406(String) = Uninitialized[x386] : &:r35_5405 +# 35| r35_5407(glval) = FunctionAddress[String] : +# 35| v35_5408(void) = Call[String] : func:r35_5407, this:r35_5405 +# 35| mu35_5409(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5410(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5405 +# 35| r35_5411(glval) = VariableAddress[x386] : +# 35| r35_5412(glval) = FunctionAddress[~String] : +# 35| v35_5413(void) = Call[~String] : func:r35_5412, this:r35_5411 +# 35| mu35_5414(unknown) = ^CallSideEffect : ~m? +# 35| v35_5415(void) = ^IndirectReadSideEffect[-1] : &:r35_5411, ~m? +# 35| mu35_5416(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5411 +# 35| r35_5417(bool) = Constant[0] : +# 35| v35_5418(void) = ConditionalBranch : r35_5417 #-----| False -> Block 387 #-----| True -> Block 1026 -# 1180| Block 387 -# 1180| r1180_1(glval) = VariableAddress[x387] : -# 1180| mu1180_2(String) = Uninitialized[x387] : &:r1180_1 -# 1180| r1180_3(glval) = FunctionAddress[String] : -# 1180| v1180_4(void) = Call[String] : func:r1180_3, this:r1180_1 -# 1180| mu1180_5(unknown) = ^CallSideEffect : ~m? -# 1180| mu1180_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1180_1 -# 1181| r1181_1(glval) = VariableAddress[x387] : -# 1181| r1181_2(glval) = FunctionAddress[~String] : -# 1181| v1181_3(void) = Call[~String] : func:r1181_2, this:r1181_1 -# 1181| mu1181_4(unknown) = ^CallSideEffect : ~m? -# 1181| v1181_5(void) = ^IndirectReadSideEffect[-1] : &:r1181_1, ~m? -# 1181| mu1181_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1181_1 -# 1181| r1181_7(bool) = Constant[0] : -# 1181| v1181_8(void) = ConditionalBranch : r1181_7 +# 35| Block 387 +# 35| r35_5419(glval) = VariableAddress[x387] : +# 35| mu35_5420(String) = Uninitialized[x387] : &:r35_5419 +# 35| r35_5421(glval) = FunctionAddress[String] : +# 35| v35_5422(void) = Call[String] : func:r35_5421, this:r35_5419 +# 35| mu35_5423(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5424(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5419 +# 35| r35_5425(glval) = VariableAddress[x387] : +# 35| r35_5426(glval) = FunctionAddress[~String] : +# 35| v35_5427(void) = Call[~String] : func:r35_5426, this:r35_5425 +# 35| mu35_5428(unknown) = ^CallSideEffect : ~m? +# 35| v35_5429(void) = ^IndirectReadSideEffect[-1] : &:r35_5425, ~m? +# 35| mu35_5430(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5425 +# 35| r35_5431(bool) = Constant[0] : +# 35| v35_5432(void) = ConditionalBranch : r35_5431 #-----| False -> Block 388 #-----| True -> Block 1026 -# 1183| Block 388 -# 1183| r1183_1(glval) = VariableAddress[x388] : -# 1183| mu1183_2(String) = Uninitialized[x388] : &:r1183_1 -# 1183| r1183_3(glval) = FunctionAddress[String] : -# 1183| v1183_4(void) = Call[String] : func:r1183_3, this:r1183_1 -# 1183| mu1183_5(unknown) = ^CallSideEffect : ~m? -# 1183| mu1183_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1183_1 -# 1184| r1184_1(glval) = VariableAddress[x388] : -# 1184| r1184_2(glval) = FunctionAddress[~String] : -# 1184| v1184_3(void) = Call[~String] : func:r1184_2, this:r1184_1 -# 1184| mu1184_4(unknown) = ^CallSideEffect : ~m? -# 1184| v1184_5(void) = ^IndirectReadSideEffect[-1] : &:r1184_1, ~m? -# 1184| mu1184_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1184_1 -# 1184| r1184_7(bool) = Constant[0] : -# 1184| v1184_8(void) = ConditionalBranch : r1184_7 +# 35| Block 388 +# 35| r35_5433(glval) = VariableAddress[x388] : +# 35| mu35_5434(String) = Uninitialized[x388] : &:r35_5433 +# 35| r35_5435(glval) = FunctionAddress[String] : +# 35| v35_5436(void) = Call[String] : func:r35_5435, this:r35_5433 +# 35| mu35_5437(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5438(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5433 +# 35| r35_5439(glval) = VariableAddress[x388] : +# 35| r35_5440(glval) = FunctionAddress[~String] : +# 35| v35_5441(void) = Call[~String] : func:r35_5440, this:r35_5439 +# 35| mu35_5442(unknown) = ^CallSideEffect : ~m? +# 35| v35_5443(void) = ^IndirectReadSideEffect[-1] : &:r35_5439, ~m? +# 35| mu35_5444(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5439 +# 35| r35_5445(bool) = Constant[0] : +# 35| v35_5446(void) = ConditionalBranch : r35_5445 #-----| False -> Block 389 #-----| True -> Block 1026 -# 1186| Block 389 -# 1186| r1186_1(glval) = VariableAddress[x389] : -# 1186| mu1186_2(String) = Uninitialized[x389] : &:r1186_1 -# 1186| r1186_3(glval) = FunctionAddress[String] : -# 1186| v1186_4(void) = Call[String] : func:r1186_3, this:r1186_1 -# 1186| mu1186_5(unknown) = ^CallSideEffect : ~m? -# 1186| mu1186_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1186_1 -# 1187| r1187_1(glval) = VariableAddress[x389] : -# 1187| r1187_2(glval) = FunctionAddress[~String] : -# 1187| v1187_3(void) = Call[~String] : func:r1187_2, this:r1187_1 -# 1187| mu1187_4(unknown) = ^CallSideEffect : ~m? -# 1187| v1187_5(void) = ^IndirectReadSideEffect[-1] : &:r1187_1, ~m? -# 1187| mu1187_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1187_1 -# 1187| r1187_7(bool) = Constant[0] : -# 1187| v1187_8(void) = ConditionalBranch : r1187_7 +# 35| Block 389 +# 35| r35_5447(glval) = VariableAddress[x389] : +# 35| mu35_5448(String) = Uninitialized[x389] : &:r35_5447 +# 35| r35_5449(glval) = FunctionAddress[String] : +# 35| v35_5450(void) = Call[String] : func:r35_5449, this:r35_5447 +# 35| mu35_5451(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5452(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5447 +# 35| r35_5453(glval) = VariableAddress[x389] : +# 35| r35_5454(glval) = FunctionAddress[~String] : +# 35| v35_5455(void) = Call[~String] : func:r35_5454, this:r35_5453 +# 35| mu35_5456(unknown) = ^CallSideEffect : ~m? +# 35| v35_5457(void) = ^IndirectReadSideEffect[-1] : &:r35_5453, ~m? +# 35| mu35_5458(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5453 +# 35| r35_5459(bool) = Constant[0] : +# 35| v35_5460(void) = ConditionalBranch : r35_5459 #-----| False -> Block 390 #-----| True -> Block 1026 -# 1189| Block 390 -# 1189| r1189_1(glval) = VariableAddress[x390] : -# 1189| mu1189_2(String) = Uninitialized[x390] : &:r1189_1 -# 1189| r1189_3(glval) = FunctionAddress[String] : -# 1189| v1189_4(void) = Call[String] : func:r1189_3, this:r1189_1 -# 1189| mu1189_5(unknown) = ^CallSideEffect : ~m? -# 1189| mu1189_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1189_1 -# 1190| r1190_1(glval) = VariableAddress[x390] : -# 1190| r1190_2(glval) = FunctionAddress[~String] : -# 1190| v1190_3(void) = Call[~String] : func:r1190_2, this:r1190_1 -# 1190| mu1190_4(unknown) = ^CallSideEffect : ~m? -# 1190| v1190_5(void) = ^IndirectReadSideEffect[-1] : &:r1190_1, ~m? -# 1190| mu1190_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1190_1 -# 1190| r1190_7(bool) = Constant[0] : -# 1190| v1190_8(void) = ConditionalBranch : r1190_7 +# 35| Block 390 +# 35| r35_5461(glval) = VariableAddress[x390] : +# 35| mu35_5462(String) = Uninitialized[x390] : &:r35_5461 +# 35| r35_5463(glval) = FunctionAddress[String] : +# 35| v35_5464(void) = Call[String] : func:r35_5463, this:r35_5461 +# 35| mu35_5465(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5466(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5461 +# 35| r35_5467(glval) = VariableAddress[x390] : +# 35| r35_5468(glval) = FunctionAddress[~String] : +# 35| v35_5469(void) = Call[~String] : func:r35_5468, this:r35_5467 +# 35| mu35_5470(unknown) = ^CallSideEffect : ~m? +# 35| v35_5471(void) = ^IndirectReadSideEffect[-1] : &:r35_5467, ~m? +# 35| mu35_5472(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5467 +# 35| r35_5473(bool) = Constant[0] : +# 35| v35_5474(void) = ConditionalBranch : r35_5473 #-----| False -> Block 391 #-----| True -> Block 1026 -# 1192| Block 391 -# 1192| r1192_1(glval) = VariableAddress[x391] : -# 1192| mu1192_2(String) = Uninitialized[x391] : &:r1192_1 -# 1192| r1192_3(glval) = FunctionAddress[String] : -# 1192| v1192_4(void) = Call[String] : func:r1192_3, this:r1192_1 -# 1192| mu1192_5(unknown) = ^CallSideEffect : ~m? -# 1192| mu1192_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1192_1 -# 1193| r1193_1(glval) = VariableAddress[x391] : -# 1193| r1193_2(glval) = FunctionAddress[~String] : -# 1193| v1193_3(void) = Call[~String] : func:r1193_2, this:r1193_1 -# 1193| mu1193_4(unknown) = ^CallSideEffect : ~m? -# 1193| v1193_5(void) = ^IndirectReadSideEffect[-1] : &:r1193_1, ~m? -# 1193| mu1193_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1193_1 -# 1193| r1193_7(bool) = Constant[0] : -# 1193| v1193_8(void) = ConditionalBranch : r1193_7 +# 35| Block 391 +# 35| r35_5475(glval) = VariableAddress[x391] : +# 35| mu35_5476(String) = Uninitialized[x391] : &:r35_5475 +# 35| r35_5477(glval) = FunctionAddress[String] : +# 35| v35_5478(void) = Call[String] : func:r35_5477, this:r35_5475 +# 35| mu35_5479(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5480(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5475 +# 35| r35_5481(glval) = VariableAddress[x391] : +# 35| r35_5482(glval) = FunctionAddress[~String] : +# 35| v35_5483(void) = Call[~String] : func:r35_5482, this:r35_5481 +# 35| mu35_5484(unknown) = ^CallSideEffect : ~m? +# 35| v35_5485(void) = ^IndirectReadSideEffect[-1] : &:r35_5481, ~m? +# 35| mu35_5486(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5481 +# 35| r35_5487(bool) = Constant[0] : +# 35| v35_5488(void) = ConditionalBranch : r35_5487 #-----| False -> Block 392 #-----| True -> Block 1026 -# 1195| Block 392 -# 1195| r1195_1(glval) = VariableAddress[x392] : -# 1195| mu1195_2(String) = Uninitialized[x392] : &:r1195_1 -# 1195| r1195_3(glval) = FunctionAddress[String] : -# 1195| v1195_4(void) = Call[String] : func:r1195_3, this:r1195_1 -# 1195| mu1195_5(unknown) = ^CallSideEffect : ~m? -# 1195| mu1195_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1195_1 -# 1196| r1196_1(glval) = VariableAddress[x392] : -# 1196| r1196_2(glval) = FunctionAddress[~String] : -# 1196| v1196_3(void) = Call[~String] : func:r1196_2, this:r1196_1 -# 1196| mu1196_4(unknown) = ^CallSideEffect : ~m? -# 1196| v1196_5(void) = ^IndirectReadSideEffect[-1] : &:r1196_1, ~m? -# 1196| mu1196_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1196_1 -# 1196| r1196_7(bool) = Constant[0] : -# 1196| v1196_8(void) = ConditionalBranch : r1196_7 +# 35| Block 392 +# 35| r35_5489(glval) = VariableAddress[x392] : +# 35| mu35_5490(String) = Uninitialized[x392] : &:r35_5489 +# 35| r35_5491(glval) = FunctionAddress[String] : +# 35| v35_5492(void) = Call[String] : func:r35_5491, this:r35_5489 +# 35| mu35_5493(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5494(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5489 +# 35| r35_5495(glval) = VariableAddress[x392] : +# 35| r35_5496(glval) = FunctionAddress[~String] : +# 35| v35_5497(void) = Call[~String] : func:r35_5496, this:r35_5495 +# 35| mu35_5498(unknown) = ^CallSideEffect : ~m? +# 35| v35_5499(void) = ^IndirectReadSideEffect[-1] : &:r35_5495, ~m? +# 35| mu35_5500(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5495 +# 35| r35_5501(bool) = Constant[0] : +# 35| v35_5502(void) = ConditionalBranch : r35_5501 #-----| False -> Block 393 #-----| True -> Block 1026 -# 1198| Block 393 -# 1198| r1198_1(glval) = VariableAddress[x393] : -# 1198| mu1198_2(String) = Uninitialized[x393] : &:r1198_1 -# 1198| r1198_3(glval) = FunctionAddress[String] : -# 1198| v1198_4(void) = Call[String] : func:r1198_3, this:r1198_1 -# 1198| mu1198_5(unknown) = ^CallSideEffect : ~m? -# 1198| mu1198_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1198_1 -# 1199| r1199_1(glval) = VariableAddress[x393] : -# 1199| r1199_2(glval) = FunctionAddress[~String] : -# 1199| v1199_3(void) = Call[~String] : func:r1199_2, this:r1199_1 -# 1199| mu1199_4(unknown) = ^CallSideEffect : ~m? -# 1199| v1199_5(void) = ^IndirectReadSideEffect[-1] : &:r1199_1, ~m? -# 1199| mu1199_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1199_1 -# 1199| r1199_7(bool) = Constant[0] : -# 1199| v1199_8(void) = ConditionalBranch : r1199_7 +# 35| Block 393 +# 35| r35_5503(glval) = VariableAddress[x393] : +# 35| mu35_5504(String) = Uninitialized[x393] : &:r35_5503 +# 35| r35_5505(glval) = FunctionAddress[String] : +# 35| v35_5506(void) = Call[String] : func:r35_5505, this:r35_5503 +# 35| mu35_5507(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5508(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5503 +# 35| r35_5509(glval) = VariableAddress[x393] : +# 35| r35_5510(glval) = FunctionAddress[~String] : +# 35| v35_5511(void) = Call[~String] : func:r35_5510, this:r35_5509 +# 35| mu35_5512(unknown) = ^CallSideEffect : ~m? +# 35| v35_5513(void) = ^IndirectReadSideEffect[-1] : &:r35_5509, ~m? +# 35| mu35_5514(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5509 +# 35| r35_5515(bool) = Constant[0] : +# 35| v35_5516(void) = ConditionalBranch : r35_5515 #-----| False -> Block 394 #-----| True -> Block 1026 -# 1201| Block 394 -# 1201| r1201_1(glval) = VariableAddress[x394] : -# 1201| mu1201_2(String) = Uninitialized[x394] : &:r1201_1 -# 1201| r1201_3(glval) = FunctionAddress[String] : -# 1201| v1201_4(void) = Call[String] : func:r1201_3, this:r1201_1 -# 1201| mu1201_5(unknown) = ^CallSideEffect : ~m? -# 1201| mu1201_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1201_1 -# 1202| r1202_1(glval) = VariableAddress[x394] : -# 1202| r1202_2(glval) = FunctionAddress[~String] : -# 1202| v1202_3(void) = Call[~String] : func:r1202_2, this:r1202_1 -# 1202| mu1202_4(unknown) = ^CallSideEffect : ~m? -# 1202| v1202_5(void) = ^IndirectReadSideEffect[-1] : &:r1202_1, ~m? -# 1202| mu1202_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1202_1 -# 1202| r1202_7(bool) = Constant[0] : -# 1202| v1202_8(void) = ConditionalBranch : r1202_7 +# 35| Block 394 +# 35| r35_5517(glval) = VariableAddress[x394] : +# 35| mu35_5518(String) = Uninitialized[x394] : &:r35_5517 +# 35| r35_5519(glval) = FunctionAddress[String] : +# 35| v35_5520(void) = Call[String] : func:r35_5519, this:r35_5517 +# 35| mu35_5521(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5522(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5517 +# 35| r35_5523(glval) = VariableAddress[x394] : +# 35| r35_5524(glval) = FunctionAddress[~String] : +# 35| v35_5525(void) = Call[~String] : func:r35_5524, this:r35_5523 +# 35| mu35_5526(unknown) = ^CallSideEffect : ~m? +# 35| v35_5527(void) = ^IndirectReadSideEffect[-1] : &:r35_5523, ~m? +# 35| mu35_5528(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5523 +# 35| r35_5529(bool) = Constant[0] : +# 35| v35_5530(void) = ConditionalBranch : r35_5529 #-----| False -> Block 395 #-----| True -> Block 1026 -# 1204| Block 395 -# 1204| r1204_1(glval) = VariableAddress[x395] : -# 1204| mu1204_2(String) = Uninitialized[x395] : &:r1204_1 -# 1204| r1204_3(glval) = FunctionAddress[String] : -# 1204| v1204_4(void) = Call[String] : func:r1204_3, this:r1204_1 -# 1204| mu1204_5(unknown) = ^CallSideEffect : ~m? -# 1204| mu1204_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1204_1 -# 1205| r1205_1(glval) = VariableAddress[x395] : -# 1205| r1205_2(glval) = FunctionAddress[~String] : -# 1205| v1205_3(void) = Call[~String] : func:r1205_2, this:r1205_1 -# 1205| mu1205_4(unknown) = ^CallSideEffect : ~m? -# 1205| v1205_5(void) = ^IndirectReadSideEffect[-1] : &:r1205_1, ~m? -# 1205| mu1205_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1205_1 -# 1205| r1205_7(bool) = Constant[0] : -# 1205| v1205_8(void) = ConditionalBranch : r1205_7 +# 35| Block 395 +# 35| r35_5531(glval) = VariableAddress[x395] : +# 35| mu35_5532(String) = Uninitialized[x395] : &:r35_5531 +# 35| r35_5533(glval) = FunctionAddress[String] : +# 35| v35_5534(void) = Call[String] : func:r35_5533, this:r35_5531 +# 35| mu35_5535(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5536(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5531 +# 35| r35_5537(glval) = VariableAddress[x395] : +# 35| r35_5538(glval) = FunctionAddress[~String] : +# 35| v35_5539(void) = Call[~String] : func:r35_5538, this:r35_5537 +# 35| mu35_5540(unknown) = ^CallSideEffect : ~m? +# 35| v35_5541(void) = ^IndirectReadSideEffect[-1] : &:r35_5537, ~m? +# 35| mu35_5542(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5537 +# 35| r35_5543(bool) = Constant[0] : +# 35| v35_5544(void) = ConditionalBranch : r35_5543 #-----| False -> Block 396 #-----| True -> Block 1026 -# 1207| Block 396 -# 1207| r1207_1(glval) = VariableAddress[x396] : -# 1207| mu1207_2(String) = Uninitialized[x396] : &:r1207_1 -# 1207| r1207_3(glval) = FunctionAddress[String] : -# 1207| v1207_4(void) = Call[String] : func:r1207_3, this:r1207_1 -# 1207| mu1207_5(unknown) = ^CallSideEffect : ~m? -# 1207| mu1207_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1207_1 -# 1208| r1208_1(glval) = VariableAddress[x396] : -# 1208| r1208_2(glval) = FunctionAddress[~String] : -# 1208| v1208_3(void) = Call[~String] : func:r1208_2, this:r1208_1 -# 1208| mu1208_4(unknown) = ^CallSideEffect : ~m? -# 1208| v1208_5(void) = ^IndirectReadSideEffect[-1] : &:r1208_1, ~m? -# 1208| mu1208_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1208_1 -# 1208| r1208_7(bool) = Constant[0] : -# 1208| v1208_8(void) = ConditionalBranch : r1208_7 +# 35| Block 396 +# 35| r35_5545(glval) = VariableAddress[x396] : +# 35| mu35_5546(String) = Uninitialized[x396] : &:r35_5545 +# 35| r35_5547(glval) = FunctionAddress[String] : +# 35| v35_5548(void) = Call[String] : func:r35_5547, this:r35_5545 +# 35| mu35_5549(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5550(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5545 +# 35| r35_5551(glval) = VariableAddress[x396] : +# 35| r35_5552(glval) = FunctionAddress[~String] : +# 35| v35_5553(void) = Call[~String] : func:r35_5552, this:r35_5551 +# 35| mu35_5554(unknown) = ^CallSideEffect : ~m? +# 35| v35_5555(void) = ^IndirectReadSideEffect[-1] : &:r35_5551, ~m? +# 35| mu35_5556(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5551 +# 35| r35_5557(bool) = Constant[0] : +# 35| v35_5558(void) = ConditionalBranch : r35_5557 #-----| False -> Block 397 #-----| True -> Block 1026 -# 1210| Block 397 -# 1210| r1210_1(glval) = VariableAddress[x397] : -# 1210| mu1210_2(String) = Uninitialized[x397] : &:r1210_1 -# 1210| r1210_3(glval) = FunctionAddress[String] : -# 1210| v1210_4(void) = Call[String] : func:r1210_3, this:r1210_1 -# 1210| mu1210_5(unknown) = ^CallSideEffect : ~m? -# 1210| mu1210_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1210_1 -# 1211| r1211_1(glval) = VariableAddress[x397] : -# 1211| r1211_2(glval) = FunctionAddress[~String] : -# 1211| v1211_3(void) = Call[~String] : func:r1211_2, this:r1211_1 -# 1211| mu1211_4(unknown) = ^CallSideEffect : ~m? -# 1211| v1211_5(void) = ^IndirectReadSideEffect[-1] : &:r1211_1, ~m? -# 1211| mu1211_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1211_1 -# 1211| r1211_7(bool) = Constant[0] : -# 1211| v1211_8(void) = ConditionalBranch : r1211_7 +# 35| Block 397 +# 35| r35_5559(glval) = VariableAddress[x397] : +# 35| mu35_5560(String) = Uninitialized[x397] : &:r35_5559 +# 35| r35_5561(glval) = FunctionAddress[String] : +# 35| v35_5562(void) = Call[String] : func:r35_5561, this:r35_5559 +# 35| mu35_5563(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5564(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5559 +# 35| r35_5565(glval) = VariableAddress[x397] : +# 35| r35_5566(glval) = FunctionAddress[~String] : +# 35| v35_5567(void) = Call[~String] : func:r35_5566, this:r35_5565 +# 35| mu35_5568(unknown) = ^CallSideEffect : ~m? +# 35| v35_5569(void) = ^IndirectReadSideEffect[-1] : &:r35_5565, ~m? +# 35| mu35_5570(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5565 +# 35| r35_5571(bool) = Constant[0] : +# 35| v35_5572(void) = ConditionalBranch : r35_5571 #-----| False -> Block 398 #-----| True -> Block 1026 -# 1213| Block 398 -# 1213| r1213_1(glval) = VariableAddress[x398] : -# 1213| mu1213_2(String) = Uninitialized[x398] : &:r1213_1 -# 1213| r1213_3(glval) = FunctionAddress[String] : -# 1213| v1213_4(void) = Call[String] : func:r1213_3, this:r1213_1 -# 1213| mu1213_5(unknown) = ^CallSideEffect : ~m? -# 1213| mu1213_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1213_1 -# 1214| r1214_1(glval) = VariableAddress[x398] : -# 1214| r1214_2(glval) = FunctionAddress[~String] : -# 1214| v1214_3(void) = Call[~String] : func:r1214_2, this:r1214_1 -# 1214| mu1214_4(unknown) = ^CallSideEffect : ~m? -# 1214| v1214_5(void) = ^IndirectReadSideEffect[-1] : &:r1214_1, ~m? -# 1214| mu1214_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1214_1 -# 1214| r1214_7(bool) = Constant[0] : -# 1214| v1214_8(void) = ConditionalBranch : r1214_7 +# 35| Block 398 +# 35| r35_5573(glval) = VariableAddress[x398] : +# 35| mu35_5574(String) = Uninitialized[x398] : &:r35_5573 +# 35| r35_5575(glval) = FunctionAddress[String] : +# 35| v35_5576(void) = Call[String] : func:r35_5575, this:r35_5573 +# 35| mu35_5577(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5578(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5573 +# 35| r35_5579(glval) = VariableAddress[x398] : +# 35| r35_5580(glval) = FunctionAddress[~String] : +# 35| v35_5581(void) = Call[~String] : func:r35_5580, this:r35_5579 +# 35| mu35_5582(unknown) = ^CallSideEffect : ~m? +# 35| v35_5583(void) = ^IndirectReadSideEffect[-1] : &:r35_5579, ~m? +# 35| mu35_5584(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5579 +# 35| r35_5585(bool) = Constant[0] : +# 35| v35_5586(void) = ConditionalBranch : r35_5585 #-----| False -> Block 399 #-----| True -> Block 1026 -# 1216| Block 399 -# 1216| r1216_1(glval) = VariableAddress[x399] : -# 1216| mu1216_2(String) = Uninitialized[x399] : &:r1216_1 -# 1216| r1216_3(glval) = FunctionAddress[String] : -# 1216| v1216_4(void) = Call[String] : func:r1216_3, this:r1216_1 -# 1216| mu1216_5(unknown) = ^CallSideEffect : ~m? -# 1216| mu1216_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1216_1 -# 1217| r1217_1(glval) = VariableAddress[x399] : -# 1217| r1217_2(glval) = FunctionAddress[~String] : -# 1217| v1217_3(void) = Call[~String] : func:r1217_2, this:r1217_1 -# 1217| mu1217_4(unknown) = ^CallSideEffect : ~m? -# 1217| v1217_5(void) = ^IndirectReadSideEffect[-1] : &:r1217_1, ~m? -# 1217| mu1217_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1217_1 -# 1217| r1217_7(bool) = Constant[0] : -# 1217| v1217_8(void) = ConditionalBranch : r1217_7 +# 35| Block 399 +# 35| r35_5587(glval) = VariableAddress[x399] : +# 35| mu35_5588(String) = Uninitialized[x399] : &:r35_5587 +# 35| r35_5589(glval) = FunctionAddress[String] : +# 35| v35_5590(void) = Call[String] : func:r35_5589, this:r35_5587 +# 35| mu35_5591(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5592(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5587 +# 35| r35_5593(glval) = VariableAddress[x399] : +# 35| r35_5594(glval) = FunctionAddress[~String] : +# 35| v35_5595(void) = Call[~String] : func:r35_5594, this:r35_5593 +# 35| mu35_5596(unknown) = ^CallSideEffect : ~m? +# 35| v35_5597(void) = ^IndirectReadSideEffect[-1] : &:r35_5593, ~m? +# 35| mu35_5598(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5593 +# 35| r35_5599(bool) = Constant[0] : +# 35| v35_5600(void) = ConditionalBranch : r35_5599 #-----| False -> Block 400 #-----| True -> Block 1026 -# 1219| Block 400 -# 1219| r1219_1(glval) = VariableAddress[x400] : -# 1219| mu1219_2(String) = Uninitialized[x400] : &:r1219_1 -# 1219| r1219_3(glval) = FunctionAddress[String] : -# 1219| v1219_4(void) = Call[String] : func:r1219_3, this:r1219_1 -# 1219| mu1219_5(unknown) = ^CallSideEffect : ~m? -# 1219| mu1219_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1219_1 -# 1220| r1220_1(glval) = VariableAddress[x400] : -# 1220| r1220_2(glval) = FunctionAddress[~String] : -# 1220| v1220_3(void) = Call[~String] : func:r1220_2, this:r1220_1 -# 1220| mu1220_4(unknown) = ^CallSideEffect : ~m? -# 1220| v1220_5(void) = ^IndirectReadSideEffect[-1] : &:r1220_1, ~m? -# 1220| mu1220_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1220_1 -# 1220| r1220_7(bool) = Constant[0] : -# 1220| v1220_8(void) = ConditionalBranch : r1220_7 +# 35| Block 400 +# 35| r35_5601(glval) = VariableAddress[x400] : +# 35| mu35_5602(String) = Uninitialized[x400] : &:r35_5601 +# 35| r35_5603(glval) = FunctionAddress[String] : +# 35| v35_5604(void) = Call[String] : func:r35_5603, this:r35_5601 +# 35| mu35_5605(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5606(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5601 +# 35| r35_5607(glval) = VariableAddress[x400] : +# 35| r35_5608(glval) = FunctionAddress[~String] : +# 35| v35_5609(void) = Call[~String] : func:r35_5608, this:r35_5607 +# 35| mu35_5610(unknown) = ^CallSideEffect : ~m? +# 35| v35_5611(void) = ^IndirectReadSideEffect[-1] : &:r35_5607, ~m? +# 35| mu35_5612(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5607 +# 35| r35_5613(bool) = Constant[0] : +# 35| v35_5614(void) = ConditionalBranch : r35_5613 #-----| False -> Block 401 #-----| True -> Block 1026 -# 1222| Block 401 -# 1222| r1222_1(glval) = VariableAddress[x401] : -# 1222| mu1222_2(String) = Uninitialized[x401] : &:r1222_1 -# 1222| r1222_3(glval) = FunctionAddress[String] : -# 1222| v1222_4(void) = Call[String] : func:r1222_3, this:r1222_1 -# 1222| mu1222_5(unknown) = ^CallSideEffect : ~m? -# 1222| mu1222_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1222_1 -# 1223| r1223_1(glval) = VariableAddress[x401] : -# 1223| r1223_2(glval) = FunctionAddress[~String] : -# 1223| v1223_3(void) = Call[~String] : func:r1223_2, this:r1223_1 -# 1223| mu1223_4(unknown) = ^CallSideEffect : ~m? -# 1223| v1223_5(void) = ^IndirectReadSideEffect[-1] : &:r1223_1, ~m? -# 1223| mu1223_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1223_1 -# 1223| r1223_7(bool) = Constant[0] : -# 1223| v1223_8(void) = ConditionalBranch : r1223_7 +# 35| Block 401 +# 35| r35_5615(glval) = VariableAddress[x401] : +# 35| mu35_5616(String) = Uninitialized[x401] : &:r35_5615 +# 35| r35_5617(glval) = FunctionAddress[String] : +# 35| v35_5618(void) = Call[String] : func:r35_5617, this:r35_5615 +# 35| mu35_5619(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5620(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5615 +# 35| r35_5621(glval) = VariableAddress[x401] : +# 35| r35_5622(glval) = FunctionAddress[~String] : +# 35| v35_5623(void) = Call[~String] : func:r35_5622, this:r35_5621 +# 35| mu35_5624(unknown) = ^CallSideEffect : ~m? +# 35| v35_5625(void) = ^IndirectReadSideEffect[-1] : &:r35_5621, ~m? +# 35| mu35_5626(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5621 +# 35| r35_5627(bool) = Constant[0] : +# 35| v35_5628(void) = ConditionalBranch : r35_5627 #-----| False -> Block 402 #-----| True -> Block 1026 -# 1225| Block 402 -# 1225| r1225_1(glval) = VariableAddress[x402] : -# 1225| mu1225_2(String) = Uninitialized[x402] : &:r1225_1 -# 1225| r1225_3(glval) = FunctionAddress[String] : -# 1225| v1225_4(void) = Call[String] : func:r1225_3, this:r1225_1 -# 1225| mu1225_5(unknown) = ^CallSideEffect : ~m? -# 1225| mu1225_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1225_1 -# 1226| r1226_1(glval) = VariableAddress[x402] : -# 1226| r1226_2(glval) = FunctionAddress[~String] : -# 1226| v1226_3(void) = Call[~String] : func:r1226_2, this:r1226_1 -# 1226| mu1226_4(unknown) = ^CallSideEffect : ~m? -# 1226| v1226_5(void) = ^IndirectReadSideEffect[-1] : &:r1226_1, ~m? -# 1226| mu1226_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1226_1 -# 1226| r1226_7(bool) = Constant[0] : -# 1226| v1226_8(void) = ConditionalBranch : r1226_7 +# 35| Block 402 +# 35| r35_5629(glval) = VariableAddress[x402] : +# 35| mu35_5630(String) = Uninitialized[x402] : &:r35_5629 +# 35| r35_5631(glval) = FunctionAddress[String] : +# 35| v35_5632(void) = Call[String] : func:r35_5631, this:r35_5629 +# 35| mu35_5633(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5634(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5629 +# 35| r35_5635(glval) = VariableAddress[x402] : +# 35| r35_5636(glval) = FunctionAddress[~String] : +# 35| v35_5637(void) = Call[~String] : func:r35_5636, this:r35_5635 +# 35| mu35_5638(unknown) = ^CallSideEffect : ~m? +# 35| v35_5639(void) = ^IndirectReadSideEffect[-1] : &:r35_5635, ~m? +# 35| mu35_5640(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5635 +# 35| r35_5641(bool) = Constant[0] : +# 35| v35_5642(void) = ConditionalBranch : r35_5641 #-----| False -> Block 403 #-----| True -> Block 1026 -# 1228| Block 403 -# 1228| r1228_1(glval) = VariableAddress[x403] : -# 1228| mu1228_2(String) = Uninitialized[x403] : &:r1228_1 -# 1228| r1228_3(glval) = FunctionAddress[String] : -# 1228| v1228_4(void) = Call[String] : func:r1228_3, this:r1228_1 -# 1228| mu1228_5(unknown) = ^CallSideEffect : ~m? -# 1228| mu1228_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1228_1 -# 1229| r1229_1(glval) = VariableAddress[x403] : -# 1229| r1229_2(glval) = FunctionAddress[~String] : -# 1229| v1229_3(void) = Call[~String] : func:r1229_2, this:r1229_1 -# 1229| mu1229_4(unknown) = ^CallSideEffect : ~m? -# 1229| v1229_5(void) = ^IndirectReadSideEffect[-1] : &:r1229_1, ~m? -# 1229| mu1229_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1229_1 -# 1229| r1229_7(bool) = Constant[0] : -# 1229| v1229_8(void) = ConditionalBranch : r1229_7 +# 35| Block 403 +# 35| r35_5643(glval) = VariableAddress[x403] : +# 35| mu35_5644(String) = Uninitialized[x403] : &:r35_5643 +# 35| r35_5645(glval) = FunctionAddress[String] : +# 35| v35_5646(void) = Call[String] : func:r35_5645, this:r35_5643 +# 35| mu35_5647(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5648(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5643 +# 35| r35_5649(glval) = VariableAddress[x403] : +# 35| r35_5650(glval) = FunctionAddress[~String] : +# 35| v35_5651(void) = Call[~String] : func:r35_5650, this:r35_5649 +# 35| mu35_5652(unknown) = ^CallSideEffect : ~m? +# 35| v35_5653(void) = ^IndirectReadSideEffect[-1] : &:r35_5649, ~m? +# 35| mu35_5654(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5649 +# 35| r35_5655(bool) = Constant[0] : +# 35| v35_5656(void) = ConditionalBranch : r35_5655 #-----| False -> Block 404 #-----| True -> Block 1026 -# 1231| Block 404 -# 1231| r1231_1(glval) = VariableAddress[x404] : -# 1231| mu1231_2(String) = Uninitialized[x404] : &:r1231_1 -# 1231| r1231_3(glval) = FunctionAddress[String] : -# 1231| v1231_4(void) = Call[String] : func:r1231_3, this:r1231_1 -# 1231| mu1231_5(unknown) = ^CallSideEffect : ~m? -# 1231| mu1231_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1231_1 -# 1232| r1232_1(glval) = VariableAddress[x404] : -# 1232| r1232_2(glval) = FunctionAddress[~String] : -# 1232| v1232_3(void) = Call[~String] : func:r1232_2, this:r1232_1 -# 1232| mu1232_4(unknown) = ^CallSideEffect : ~m? -# 1232| v1232_5(void) = ^IndirectReadSideEffect[-1] : &:r1232_1, ~m? -# 1232| mu1232_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1232_1 -# 1232| r1232_7(bool) = Constant[0] : -# 1232| v1232_8(void) = ConditionalBranch : r1232_7 +# 35| Block 404 +# 35| r35_5657(glval) = VariableAddress[x404] : +# 35| mu35_5658(String) = Uninitialized[x404] : &:r35_5657 +# 35| r35_5659(glval) = FunctionAddress[String] : +# 35| v35_5660(void) = Call[String] : func:r35_5659, this:r35_5657 +# 35| mu35_5661(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5662(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5657 +# 35| r35_5663(glval) = VariableAddress[x404] : +# 35| r35_5664(glval) = FunctionAddress[~String] : +# 35| v35_5665(void) = Call[~String] : func:r35_5664, this:r35_5663 +# 35| mu35_5666(unknown) = ^CallSideEffect : ~m? +# 35| v35_5667(void) = ^IndirectReadSideEffect[-1] : &:r35_5663, ~m? +# 35| mu35_5668(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5663 +# 35| r35_5669(bool) = Constant[0] : +# 35| v35_5670(void) = ConditionalBranch : r35_5669 #-----| False -> Block 405 #-----| True -> Block 1026 -# 1234| Block 405 -# 1234| r1234_1(glval) = VariableAddress[x405] : -# 1234| mu1234_2(String) = Uninitialized[x405] : &:r1234_1 -# 1234| r1234_3(glval) = FunctionAddress[String] : -# 1234| v1234_4(void) = Call[String] : func:r1234_3, this:r1234_1 -# 1234| mu1234_5(unknown) = ^CallSideEffect : ~m? -# 1234| mu1234_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1234_1 -# 1235| r1235_1(glval) = VariableAddress[x405] : -# 1235| r1235_2(glval) = FunctionAddress[~String] : -# 1235| v1235_3(void) = Call[~String] : func:r1235_2, this:r1235_1 -# 1235| mu1235_4(unknown) = ^CallSideEffect : ~m? -# 1235| v1235_5(void) = ^IndirectReadSideEffect[-1] : &:r1235_1, ~m? -# 1235| mu1235_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1235_1 -# 1235| r1235_7(bool) = Constant[0] : -# 1235| v1235_8(void) = ConditionalBranch : r1235_7 +# 35| Block 405 +# 35| r35_5671(glval) = VariableAddress[x405] : +# 35| mu35_5672(String) = Uninitialized[x405] : &:r35_5671 +# 35| r35_5673(glval) = FunctionAddress[String] : +# 35| v35_5674(void) = Call[String] : func:r35_5673, this:r35_5671 +# 35| mu35_5675(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5676(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5671 +# 35| r35_5677(glval) = VariableAddress[x405] : +# 35| r35_5678(glval) = FunctionAddress[~String] : +# 35| v35_5679(void) = Call[~String] : func:r35_5678, this:r35_5677 +# 35| mu35_5680(unknown) = ^CallSideEffect : ~m? +# 35| v35_5681(void) = ^IndirectReadSideEffect[-1] : &:r35_5677, ~m? +# 35| mu35_5682(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5677 +# 35| r35_5683(bool) = Constant[0] : +# 35| v35_5684(void) = ConditionalBranch : r35_5683 #-----| False -> Block 406 #-----| True -> Block 1026 -# 1237| Block 406 -# 1237| r1237_1(glval) = VariableAddress[x406] : -# 1237| mu1237_2(String) = Uninitialized[x406] : &:r1237_1 -# 1237| r1237_3(glval) = FunctionAddress[String] : -# 1237| v1237_4(void) = Call[String] : func:r1237_3, this:r1237_1 -# 1237| mu1237_5(unknown) = ^CallSideEffect : ~m? -# 1237| mu1237_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1237_1 -# 1238| r1238_1(glval) = VariableAddress[x406] : -# 1238| r1238_2(glval) = FunctionAddress[~String] : -# 1238| v1238_3(void) = Call[~String] : func:r1238_2, this:r1238_1 -# 1238| mu1238_4(unknown) = ^CallSideEffect : ~m? -# 1238| v1238_5(void) = ^IndirectReadSideEffect[-1] : &:r1238_1, ~m? -# 1238| mu1238_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1238_1 -# 1238| r1238_7(bool) = Constant[0] : -# 1238| v1238_8(void) = ConditionalBranch : r1238_7 +# 35| Block 406 +# 35| r35_5685(glval) = VariableAddress[x406] : +# 35| mu35_5686(String) = Uninitialized[x406] : &:r35_5685 +# 35| r35_5687(glval) = FunctionAddress[String] : +# 35| v35_5688(void) = Call[String] : func:r35_5687, this:r35_5685 +# 35| mu35_5689(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5690(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5685 +# 35| r35_5691(glval) = VariableAddress[x406] : +# 35| r35_5692(glval) = FunctionAddress[~String] : +# 35| v35_5693(void) = Call[~String] : func:r35_5692, this:r35_5691 +# 35| mu35_5694(unknown) = ^CallSideEffect : ~m? +# 35| v35_5695(void) = ^IndirectReadSideEffect[-1] : &:r35_5691, ~m? +# 35| mu35_5696(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5691 +# 35| r35_5697(bool) = Constant[0] : +# 35| v35_5698(void) = ConditionalBranch : r35_5697 #-----| False -> Block 407 #-----| True -> Block 1026 -# 1240| Block 407 -# 1240| r1240_1(glval) = VariableAddress[x407] : -# 1240| mu1240_2(String) = Uninitialized[x407] : &:r1240_1 -# 1240| r1240_3(glval) = FunctionAddress[String] : -# 1240| v1240_4(void) = Call[String] : func:r1240_3, this:r1240_1 -# 1240| mu1240_5(unknown) = ^CallSideEffect : ~m? -# 1240| mu1240_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1240_1 -# 1241| r1241_1(glval) = VariableAddress[x407] : -# 1241| r1241_2(glval) = FunctionAddress[~String] : -# 1241| v1241_3(void) = Call[~String] : func:r1241_2, this:r1241_1 -# 1241| mu1241_4(unknown) = ^CallSideEffect : ~m? -# 1241| v1241_5(void) = ^IndirectReadSideEffect[-1] : &:r1241_1, ~m? -# 1241| mu1241_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1241_1 -# 1241| r1241_7(bool) = Constant[0] : -# 1241| v1241_8(void) = ConditionalBranch : r1241_7 +# 35| Block 407 +# 35| r35_5699(glval) = VariableAddress[x407] : +# 35| mu35_5700(String) = Uninitialized[x407] : &:r35_5699 +# 35| r35_5701(glval) = FunctionAddress[String] : +# 35| v35_5702(void) = Call[String] : func:r35_5701, this:r35_5699 +# 35| mu35_5703(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5704(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5699 +# 35| r35_5705(glval) = VariableAddress[x407] : +# 35| r35_5706(glval) = FunctionAddress[~String] : +# 35| v35_5707(void) = Call[~String] : func:r35_5706, this:r35_5705 +# 35| mu35_5708(unknown) = ^CallSideEffect : ~m? +# 35| v35_5709(void) = ^IndirectReadSideEffect[-1] : &:r35_5705, ~m? +# 35| mu35_5710(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5705 +# 35| r35_5711(bool) = Constant[0] : +# 35| v35_5712(void) = ConditionalBranch : r35_5711 #-----| False -> Block 408 #-----| True -> Block 1026 -# 1243| Block 408 -# 1243| r1243_1(glval) = VariableAddress[x408] : -# 1243| mu1243_2(String) = Uninitialized[x408] : &:r1243_1 -# 1243| r1243_3(glval) = FunctionAddress[String] : -# 1243| v1243_4(void) = Call[String] : func:r1243_3, this:r1243_1 -# 1243| mu1243_5(unknown) = ^CallSideEffect : ~m? -# 1243| mu1243_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1243_1 -# 1244| r1244_1(glval) = VariableAddress[x408] : -# 1244| r1244_2(glval) = FunctionAddress[~String] : -# 1244| v1244_3(void) = Call[~String] : func:r1244_2, this:r1244_1 -# 1244| mu1244_4(unknown) = ^CallSideEffect : ~m? -# 1244| v1244_5(void) = ^IndirectReadSideEffect[-1] : &:r1244_1, ~m? -# 1244| mu1244_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1244_1 -# 1244| r1244_7(bool) = Constant[0] : -# 1244| v1244_8(void) = ConditionalBranch : r1244_7 +# 35| Block 408 +# 35| r35_5713(glval) = VariableAddress[x408] : +# 35| mu35_5714(String) = Uninitialized[x408] : &:r35_5713 +# 35| r35_5715(glval) = FunctionAddress[String] : +# 35| v35_5716(void) = Call[String] : func:r35_5715, this:r35_5713 +# 35| mu35_5717(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5718(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5713 +# 35| r35_5719(glval) = VariableAddress[x408] : +# 35| r35_5720(glval) = FunctionAddress[~String] : +# 35| v35_5721(void) = Call[~String] : func:r35_5720, this:r35_5719 +# 35| mu35_5722(unknown) = ^CallSideEffect : ~m? +# 35| v35_5723(void) = ^IndirectReadSideEffect[-1] : &:r35_5719, ~m? +# 35| mu35_5724(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5719 +# 35| r35_5725(bool) = Constant[0] : +# 35| v35_5726(void) = ConditionalBranch : r35_5725 #-----| False -> Block 409 #-----| True -> Block 1026 -# 1246| Block 409 -# 1246| r1246_1(glval) = VariableAddress[x409] : -# 1246| mu1246_2(String) = Uninitialized[x409] : &:r1246_1 -# 1246| r1246_3(glval) = FunctionAddress[String] : -# 1246| v1246_4(void) = Call[String] : func:r1246_3, this:r1246_1 -# 1246| mu1246_5(unknown) = ^CallSideEffect : ~m? -# 1246| mu1246_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1246_1 -# 1247| r1247_1(glval) = VariableAddress[x409] : -# 1247| r1247_2(glval) = FunctionAddress[~String] : -# 1247| v1247_3(void) = Call[~String] : func:r1247_2, this:r1247_1 -# 1247| mu1247_4(unknown) = ^CallSideEffect : ~m? -# 1247| v1247_5(void) = ^IndirectReadSideEffect[-1] : &:r1247_1, ~m? -# 1247| mu1247_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1247_1 -# 1247| r1247_7(bool) = Constant[0] : -# 1247| v1247_8(void) = ConditionalBranch : r1247_7 +# 35| Block 409 +# 35| r35_5727(glval) = VariableAddress[x409] : +# 35| mu35_5728(String) = Uninitialized[x409] : &:r35_5727 +# 35| r35_5729(glval) = FunctionAddress[String] : +# 35| v35_5730(void) = Call[String] : func:r35_5729, this:r35_5727 +# 35| mu35_5731(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5732(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5727 +# 35| r35_5733(glval) = VariableAddress[x409] : +# 35| r35_5734(glval) = FunctionAddress[~String] : +# 35| v35_5735(void) = Call[~String] : func:r35_5734, this:r35_5733 +# 35| mu35_5736(unknown) = ^CallSideEffect : ~m? +# 35| v35_5737(void) = ^IndirectReadSideEffect[-1] : &:r35_5733, ~m? +# 35| mu35_5738(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5733 +# 35| r35_5739(bool) = Constant[0] : +# 35| v35_5740(void) = ConditionalBranch : r35_5739 #-----| False -> Block 410 #-----| True -> Block 1026 -# 1249| Block 410 -# 1249| r1249_1(glval) = VariableAddress[x410] : -# 1249| mu1249_2(String) = Uninitialized[x410] : &:r1249_1 -# 1249| r1249_3(glval) = FunctionAddress[String] : -# 1249| v1249_4(void) = Call[String] : func:r1249_3, this:r1249_1 -# 1249| mu1249_5(unknown) = ^CallSideEffect : ~m? -# 1249| mu1249_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1249_1 -# 1250| r1250_1(glval) = VariableAddress[x410] : -# 1250| r1250_2(glval) = FunctionAddress[~String] : -# 1250| v1250_3(void) = Call[~String] : func:r1250_2, this:r1250_1 -# 1250| mu1250_4(unknown) = ^CallSideEffect : ~m? -# 1250| v1250_5(void) = ^IndirectReadSideEffect[-1] : &:r1250_1, ~m? -# 1250| mu1250_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1250_1 -# 1250| r1250_7(bool) = Constant[0] : -# 1250| v1250_8(void) = ConditionalBranch : r1250_7 +# 35| Block 410 +# 35| r35_5741(glval) = VariableAddress[x410] : +# 35| mu35_5742(String) = Uninitialized[x410] : &:r35_5741 +# 35| r35_5743(glval) = FunctionAddress[String] : +# 35| v35_5744(void) = Call[String] : func:r35_5743, this:r35_5741 +# 35| mu35_5745(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5746(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5741 +# 35| r35_5747(glval) = VariableAddress[x410] : +# 35| r35_5748(glval) = FunctionAddress[~String] : +# 35| v35_5749(void) = Call[~String] : func:r35_5748, this:r35_5747 +# 35| mu35_5750(unknown) = ^CallSideEffect : ~m? +# 35| v35_5751(void) = ^IndirectReadSideEffect[-1] : &:r35_5747, ~m? +# 35| mu35_5752(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5747 +# 35| r35_5753(bool) = Constant[0] : +# 35| v35_5754(void) = ConditionalBranch : r35_5753 #-----| False -> Block 411 #-----| True -> Block 1026 -# 1252| Block 411 -# 1252| r1252_1(glval) = VariableAddress[x411] : -# 1252| mu1252_2(String) = Uninitialized[x411] : &:r1252_1 -# 1252| r1252_3(glval) = FunctionAddress[String] : -# 1252| v1252_4(void) = Call[String] : func:r1252_3, this:r1252_1 -# 1252| mu1252_5(unknown) = ^CallSideEffect : ~m? -# 1252| mu1252_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1252_1 -# 1253| r1253_1(glval) = VariableAddress[x411] : -# 1253| r1253_2(glval) = FunctionAddress[~String] : -# 1253| v1253_3(void) = Call[~String] : func:r1253_2, this:r1253_1 -# 1253| mu1253_4(unknown) = ^CallSideEffect : ~m? -# 1253| v1253_5(void) = ^IndirectReadSideEffect[-1] : &:r1253_1, ~m? -# 1253| mu1253_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1253_1 -# 1253| r1253_7(bool) = Constant[0] : -# 1253| v1253_8(void) = ConditionalBranch : r1253_7 +# 35| Block 411 +# 35| r35_5755(glval) = VariableAddress[x411] : +# 35| mu35_5756(String) = Uninitialized[x411] : &:r35_5755 +# 35| r35_5757(glval) = FunctionAddress[String] : +# 35| v35_5758(void) = Call[String] : func:r35_5757, this:r35_5755 +# 35| mu35_5759(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5760(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5755 +# 35| r35_5761(glval) = VariableAddress[x411] : +# 35| r35_5762(glval) = FunctionAddress[~String] : +# 35| v35_5763(void) = Call[~String] : func:r35_5762, this:r35_5761 +# 35| mu35_5764(unknown) = ^CallSideEffect : ~m? +# 35| v35_5765(void) = ^IndirectReadSideEffect[-1] : &:r35_5761, ~m? +# 35| mu35_5766(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5761 +# 35| r35_5767(bool) = Constant[0] : +# 35| v35_5768(void) = ConditionalBranch : r35_5767 #-----| False -> Block 412 #-----| True -> Block 1026 -# 1255| Block 412 -# 1255| r1255_1(glval) = VariableAddress[x412] : -# 1255| mu1255_2(String) = Uninitialized[x412] : &:r1255_1 -# 1255| r1255_3(glval) = FunctionAddress[String] : -# 1255| v1255_4(void) = Call[String] : func:r1255_3, this:r1255_1 -# 1255| mu1255_5(unknown) = ^CallSideEffect : ~m? -# 1255| mu1255_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1255_1 -# 1256| r1256_1(glval) = VariableAddress[x412] : -# 1256| r1256_2(glval) = FunctionAddress[~String] : -# 1256| v1256_3(void) = Call[~String] : func:r1256_2, this:r1256_1 -# 1256| mu1256_4(unknown) = ^CallSideEffect : ~m? -# 1256| v1256_5(void) = ^IndirectReadSideEffect[-1] : &:r1256_1, ~m? -# 1256| mu1256_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1256_1 -# 1256| r1256_7(bool) = Constant[0] : -# 1256| v1256_8(void) = ConditionalBranch : r1256_7 +# 35| Block 412 +# 35| r35_5769(glval) = VariableAddress[x412] : +# 35| mu35_5770(String) = Uninitialized[x412] : &:r35_5769 +# 35| r35_5771(glval) = FunctionAddress[String] : +# 35| v35_5772(void) = Call[String] : func:r35_5771, this:r35_5769 +# 35| mu35_5773(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5774(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5769 +# 35| r35_5775(glval) = VariableAddress[x412] : +# 35| r35_5776(glval) = FunctionAddress[~String] : +# 35| v35_5777(void) = Call[~String] : func:r35_5776, this:r35_5775 +# 35| mu35_5778(unknown) = ^CallSideEffect : ~m? +# 35| v35_5779(void) = ^IndirectReadSideEffect[-1] : &:r35_5775, ~m? +# 35| mu35_5780(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5775 +# 35| r35_5781(bool) = Constant[0] : +# 35| v35_5782(void) = ConditionalBranch : r35_5781 #-----| False -> Block 413 #-----| True -> Block 1026 -# 1258| Block 413 -# 1258| r1258_1(glval) = VariableAddress[x413] : -# 1258| mu1258_2(String) = Uninitialized[x413] : &:r1258_1 -# 1258| r1258_3(glval) = FunctionAddress[String] : -# 1258| v1258_4(void) = Call[String] : func:r1258_3, this:r1258_1 -# 1258| mu1258_5(unknown) = ^CallSideEffect : ~m? -# 1258| mu1258_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1258_1 -# 1259| r1259_1(glval) = VariableAddress[x413] : -# 1259| r1259_2(glval) = FunctionAddress[~String] : -# 1259| v1259_3(void) = Call[~String] : func:r1259_2, this:r1259_1 -# 1259| mu1259_4(unknown) = ^CallSideEffect : ~m? -# 1259| v1259_5(void) = ^IndirectReadSideEffect[-1] : &:r1259_1, ~m? -# 1259| mu1259_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1259_1 -# 1259| r1259_7(bool) = Constant[0] : -# 1259| v1259_8(void) = ConditionalBranch : r1259_7 +# 35| Block 413 +# 35| r35_5783(glval) = VariableAddress[x413] : +# 35| mu35_5784(String) = Uninitialized[x413] : &:r35_5783 +# 35| r35_5785(glval) = FunctionAddress[String] : +# 35| v35_5786(void) = Call[String] : func:r35_5785, this:r35_5783 +# 35| mu35_5787(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5788(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5783 +# 35| r35_5789(glval) = VariableAddress[x413] : +# 35| r35_5790(glval) = FunctionAddress[~String] : +# 35| v35_5791(void) = Call[~String] : func:r35_5790, this:r35_5789 +# 35| mu35_5792(unknown) = ^CallSideEffect : ~m? +# 35| v35_5793(void) = ^IndirectReadSideEffect[-1] : &:r35_5789, ~m? +# 35| mu35_5794(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5789 +# 35| r35_5795(bool) = Constant[0] : +# 35| v35_5796(void) = ConditionalBranch : r35_5795 #-----| False -> Block 414 #-----| True -> Block 1026 -# 1261| Block 414 -# 1261| r1261_1(glval) = VariableAddress[x414] : -# 1261| mu1261_2(String) = Uninitialized[x414] : &:r1261_1 -# 1261| r1261_3(glval) = FunctionAddress[String] : -# 1261| v1261_4(void) = Call[String] : func:r1261_3, this:r1261_1 -# 1261| mu1261_5(unknown) = ^CallSideEffect : ~m? -# 1261| mu1261_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1261_1 -# 1262| r1262_1(glval) = VariableAddress[x414] : -# 1262| r1262_2(glval) = FunctionAddress[~String] : -# 1262| v1262_3(void) = Call[~String] : func:r1262_2, this:r1262_1 -# 1262| mu1262_4(unknown) = ^CallSideEffect : ~m? -# 1262| v1262_5(void) = ^IndirectReadSideEffect[-1] : &:r1262_1, ~m? -# 1262| mu1262_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1262_1 -# 1262| r1262_7(bool) = Constant[0] : -# 1262| v1262_8(void) = ConditionalBranch : r1262_7 +# 35| Block 414 +# 35| r35_5797(glval) = VariableAddress[x414] : +# 35| mu35_5798(String) = Uninitialized[x414] : &:r35_5797 +# 35| r35_5799(glval) = FunctionAddress[String] : +# 35| v35_5800(void) = Call[String] : func:r35_5799, this:r35_5797 +# 35| mu35_5801(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5802(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5797 +# 35| r35_5803(glval) = VariableAddress[x414] : +# 35| r35_5804(glval) = FunctionAddress[~String] : +# 35| v35_5805(void) = Call[~String] : func:r35_5804, this:r35_5803 +# 35| mu35_5806(unknown) = ^CallSideEffect : ~m? +# 35| v35_5807(void) = ^IndirectReadSideEffect[-1] : &:r35_5803, ~m? +# 35| mu35_5808(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5803 +# 35| r35_5809(bool) = Constant[0] : +# 35| v35_5810(void) = ConditionalBranch : r35_5809 #-----| False -> Block 415 #-----| True -> Block 1026 -# 1264| Block 415 -# 1264| r1264_1(glval) = VariableAddress[x415] : -# 1264| mu1264_2(String) = Uninitialized[x415] : &:r1264_1 -# 1264| r1264_3(glval) = FunctionAddress[String] : -# 1264| v1264_4(void) = Call[String] : func:r1264_3, this:r1264_1 -# 1264| mu1264_5(unknown) = ^CallSideEffect : ~m? -# 1264| mu1264_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1264_1 -# 1265| r1265_1(glval) = VariableAddress[x415] : -# 1265| r1265_2(glval) = FunctionAddress[~String] : -# 1265| v1265_3(void) = Call[~String] : func:r1265_2, this:r1265_1 -# 1265| mu1265_4(unknown) = ^CallSideEffect : ~m? -# 1265| v1265_5(void) = ^IndirectReadSideEffect[-1] : &:r1265_1, ~m? -# 1265| mu1265_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1265_1 -# 1265| r1265_7(bool) = Constant[0] : -# 1265| v1265_8(void) = ConditionalBranch : r1265_7 +# 35| Block 415 +# 35| r35_5811(glval) = VariableAddress[x415] : +# 35| mu35_5812(String) = Uninitialized[x415] : &:r35_5811 +# 35| r35_5813(glval) = FunctionAddress[String] : +# 35| v35_5814(void) = Call[String] : func:r35_5813, this:r35_5811 +# 35| mu35_5815(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5816(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5811 +# 35| r35_5817(glval) = VariableAddress[x415] : +# 35| r35_5818(glval) = FunctionAddress[~String] : +# 35| v35_5819(void) = Call[~String] : func:r35_5818, this:r35_5817 +# 35| mu35_5820(unknown) = ^CallSideEffect : ~m? +# 35| v35_5821(void) = ^IndirectReadSideEffect[-1] : &:r35_5817, ~m? +# 35| mu35_5822(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5817 +# 35| r35_5823(bool) = Constant[0] : +# 35| v35_5824(void) = ConditionalBranch : r35_5823 #-----| False -> Block 416 #-----| True -> Block 1026 -# 1267| Block 416 -# 1267| r1267_1(glval) = VariableAddress[x416] : -# 1267| mu1267_2(String) = Uninitialized[x416] : &:r1267_1 -# 1267| r1267_3(glval) = FunctionAddress[String] : -# 1267| v1267_4(void) = Call[String] : func:r1267_3, this:r1267_1 -# 1267| mu1267_5(unknown) = ^CallSideEffect : ~m? -# 1267| mu1267_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1267_1 -# 1268| r1268_1(glval) = VariableAddress[x416] : -# 1268| r1268_2(glval) = FunctionAddress[~String] : -# 1268| v1268_3(void) = Call[~String] : func:r1268_2, this:r1268_1 -# 1268| mu1268_4(unknown) = ^CallSideEffect : ~m? -# 1268| v1268_5(void) = ^IndirectReadSideEffect[-1] : &:r1268_1, ~m? -# 1268| mu1268_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1268_1 -# 1268| r1268_7(bool) = Constant[0] : -# 1268| v1268_8(void) = ConditionalBranch : r1268_7 +# 35| Block 416 +# 35| r35_5825(glval) = VariableAddress[x416] : +# 35| mu35_5826(String) = Uninitialized[x416] : &:r35_5825 +# 35| r35_5827(glval) = FunctionAddress[String] : +# 35| v35_5828(void) = Call[String] : func:r35_5827, this:r35_5825 +# 35| mu35_5829(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5830(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5825 +# 35| r35_5831(glval) = VariableAddress[x416] : +# 35| r35_5832(glval) = FunctionAddress[~String] : +# 35| v35_5833(void) = Call[~String] : func:r35_5832, this:r35_5831 +# 35| mu35_5834(unknown) = ^CallSideEffect : ~m? +# 35| v35_5835(void) = ^IndirectReadSideEffect[-1] : &:r35_5831, ~m? +# 35| mu35_5836(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5831 +# 35| r35_5837(bool) = Constant[0] : +# 35| v35_5838(void) = ConditionalBranch : r35_5837 #-----| False -> Block 417 #-----| True -> Block 1026 -# 1270| Block 417 -# 1270| r1270_1(glval) = VariableAddress[x417] : -# 1270| mu1270_2(String) = Uninitialized[x417] : &:r1270_1 -# 1270| r1270_3(glval) = FunctionAddress[String] : -# 1270| v1270_4(void) = Call[String] : func:r1270_3, this:r1270_1 -# 1270| mu1270_5(unknown) = ^CallSideEffect : ~m? -# 1270| mu1270_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1270_1 -# 1271| r1271_1(glval) = VariableAddress[x417] : -# 1271| r1271_2(glval) = FunctionAddress[~String] : -# 1271| v1271_3(void) = Call[~String] : func:r1271_2, this:r1271_1 -# 1271| mu1271_4(unknown) = ^CallSideEffect : ~m? -# 1271| v1271_5(void) = ^IndirectReadSideEffect[-1] : &:r1271_1, ~m? -# 1271| mu1271_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1271_1 -# 1271| r1271_7(bool) = Constant[0] : -# 1271| v1271_8(void) = ConditionalBranch : r1271_7 +# 35| Block 417 +# 35| r35_5839(glval) = VariableAddress[x417] : +# 35| mu35_5840(String) = Uninitialized[x417] : &:r35_5839 +# 35| r35_5841(glval) = FunctionAddress[String] : +# 35| v35_5842(void) = Call[String] : func:r35_5841, this:r35_5839 +# 35| mu35_5843(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5844(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5839 +# 35| r35_5845(glval) = VariableAddress[x417] : +# 35| r35_5846(glval) = FunctionAddress[~String] : +# 35| v35_5847(void) = Call[~String] : func:r35_5846, this:r35_5845 +# 35| mu35_5848(unknown) = ^CallSideEffect : ~m? +# 35| v35_5849(void) = ^IndirectReadSideEffect[-1] : &:r35_5845, ~m? +# 35| mu35_5850(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5845 +# 35| r35_5851(bool) = Constant[0] : +# 35| v35_5852(void) = ConditionalBranch : r35_5851 #-----| False -> Block 418 #-----| True -> Block 1026 -# 1273| Block 418 -# 1273| r1273_1(glval) = VariableAddress[x418] : -# 1273| mu1273_2(String) = Uninitialized[x418] : &:r1273_1 -# 1273| r1273_3(glval) = FunctionAddress[String] : -# 1273| v1273_4(void) = Call[String] : func:r1273_3, this:r1273_1 -# 1273| mu1273_5(unknown) = ^CallSideEffect : ~m? -# 1273| mu1273_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1273_1 -# 1274| r1274_1(glval) = VariableAddress[x418] : -# 1274| r1274_2(glval) = FunctionAddress[~String] : -# 1274| v1274_3(void) = Call[~String] : func:r1274_2, this:r1274_1 -# 1274| mu1274_4(unknown) = ^CallSideEffect : ~m? -# 1274| v1274_5(void) = ^IndirectReadSideEffect[-1] : &:r1274_1, ~m? -# 1274| mu1274_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1274_1 -# 1274| r1274_7(bool) = Constant[0] : -# 1274| v1274_8(void) = ConditionalBranch : r1274_7 +# 35| Block 418 +# 35| r35_5853(glval) = VariableAddress[x418] : +# 35| mu35_5854(String) = Uninitialized[x418] : &:r35_5853 +# 35| r35_5855(glval) = FunctionAddress[String] : +# 35| v35_5856(void) = Call[String] : func:r35_5855, this:r35_5853 +# 35| mu35_5857(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5858(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5853 +# 35| r35_5859(glval) = VariableAddress[x418] : +# 35| r35_5860(glval) = FunctionAddress[~String] : +# 35| v35_5861(void) = Call[~String] : func:r35_5860, this:r35_5859 +# 35| mu35_5862(unknown) = ^CallSideEffect : ~m? +# 35| v35_5863(void) = ^IndirectReadSideEffect[-1] : &:r35_5859, ~m? +# 35| mu35_5864(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5859 +# 35| r35_5865(bool) = Constant[0] : +# 35| v35_5866(void) = ConditionalBranch : r35_5865 #-----| False -> Block 419 #-----| True -> Block 1026 -# 1276| Block 419 -# 1276| r1276_1(glval) = VariableAddress[x419] : -# 1276| mu1276_2(String) = Uninitialized[x419] : &:r1276_1 -# 1276| r1276_3(glval) = FunctionAddress[String] : -# 1276| v1276_4(void) = Call[String] : func:r1276_3, this:r1276_1 -# 1276| mu1276_5(unknown) = ^CallSideEffect : ~m? -# 1276| mu1276_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1276_1 -# 1277| r1277_1(glval) = VariableAddress[x419] : -# 1277| r1277_2(glval) = FunctionAddress[~String] : -# 1277| v1277_3(void) = Call[~String] : func:r1277_2, this:r1277_1 -# 1277| mu1277_4(unknown) = ^CallSideEffect : ~m? -# 1277| v1277_5(void) = ^IndirectReadSideEffect[-1] : &:r1277_1, ~m? -# 1277| mu1277_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1277_1 -# 1277| r1277_7(bool) = Constant[0] : -# 1277| v1277_8(void) = ConditionalBranch : r1277_7 +# 35| Block 419 +# 35| r35_5867(glval) = VariableAddress[x419] : +# 35| mu35_5868(String) = Uninitialized[x419] : &:r35_5867 +# 35| r35_5869(glval) = FunctionAddress[String] : +# 35| v35_5870(void) = Call[String] : func:r35_5869, this:r35_5867 +# 35| mu35_5871(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5872(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5867 +# 35| r35_5873(glval) = VariableAddress[x419] : +# 35| r35_5874(glval) = FunctionAddress[~String] : +# 35| v35_5875(void) = Call[~String] : func:r35_5874, this:r35_5873 +# 35| mu35_5876(unknown) = ^CallSideEffect : ~m? +# 35| v35_5877(void) = ^IndirectReadSideEffect[-1] : &:r35_5873, ~m? +# 35| mu35_5878(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5873 +# 35| r35_5879(bool) = Constant[0] : +# 35| v35_5880(void) = ConditionalBranch : r35_5879 #-----| False -> Block 420 #-----| True -> Block 1026 -# 1279| Block 420 -# 1279| r1279_1(glval) = VariableAddress[x420] : -# 1279| mu1279_2(String) = Uninitialized[x420] : &:r1279_1 -# 1279| r1279_3(glval) = FunctionAddress[String] : -# 1279| v1279_4(void) = Call[String] : func:r1279_3, this:r1279_1 -# 1279| mu1279_5(unknown) = ^CallSideEffect : ~m? -# 1279| mu1279_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1279_1 -# 1280| r1280_1(glval) = VariableAddress[x420] : -# 1280| r1280_2(glval) = FunctionAddress[~String] : -# 1280| v1280_3(void) = Call[~String] : func:r1280_2, this:r1280_1 -# 1280| mu1280_4(unknown) = ^CallSideEffect : ~m? -# 1280| v1280_5(void) = ^IndirectReadSideEffect[-1] : &:r1280_1, ~m? -# 1280| mu1280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1280_1 -# 1280| r1280_7(bool) = Constant[0] : -# 1280| v1280_8(void) = ConditionalBranch : r1280_7 +# 35| Block 420 +# 35| r35_5881(glval) = VariableAddress[x420] : +# 35| mu35_5882(String) = Uninitialized[x420] : &:r35_5881 +# 35| r35_5883(glval) = FunctionAddress[String] : +# 35| v35_5884(void) = Call[String] : func:r35_5883, this:r35_5881 +# 35| mu35_5885(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5886(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5881 +# 35| r35_5887(glval) = VariableAddress[x420] : +# 35| r35_5888(glval) = FunctionAddress[~String] : +# 35| v35_5889(void) = Call[~String] : func:r35_5888, this:r35_5887 +# 35| mu35_5890(unknown) = ^CallSideEffect : ~m? +# 35| v35_5891(void) = ^IndirectReadSideEffect[-1] : &:r35_5887, ~m? +# 35| mu35_5892(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5887 +# 35| r35_5893(bool) = Constant[0] : +# 35| v35_5894(void) = ConditionalBranch : r35_5893 #-----| False -> Block 421 #-----| True -> Block 1026 -# 1282| Block 421 -# 1282| r1282_1(glval) = VariableAddress[x421] : -# 1282| mu1282_2(String) = Uninitialized[x421] : &:r1282_1 -# 1282| r1282_3(glval) = FunctionAddress[String] : -# 1282| v1282_4(void) = Call[String] : func:r1282_3, this:r1282_1 -# 1282| mu1282_5(unknown) = ^CallSideEffect : ~m? -# 1282| mu1282_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1282_1 -# 1283| r1283_1(glval) = VariableAddress[x421] : -# 1283| r1283_2(glval) = FunctionAddress[~String] : -# 1283| v1283_3(void) = Call[~String] : func:r1283_2, this:r1283_1 -# 1283| mu1283_4(unknown) = ^CallSideEffect : ~m? -# 1283| v1283_5(void) = ^IndirectReadSideEffect[-1] : &:r1283_1, ~m? -# 1283| mu1283_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1283_1 -# 1283| r1283_7(bool) = Constant[0] : -# 1283| v1283_8(void) = ConditionalBranch : r1283_7 +# 35| Block 421 +# 35| r35_5895(glval) = VariableAddress[x421] : +# 35| mu35_5896(String) = Uninitialized[x421] : &:r35_5895 +# 35| r35_5897(glval) = FunctionAddress[String] : +# 35| v35_5898(void) = Call[String] : func:r35_5897, this:r35_5895 +# 35| mu35_5899(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5900(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5895 +# 35| r35_5901(glval) = VariableAddress[x421] : +# 35| r35_5902(glval) = FunctionAddress[~String] : +# 35| v35_5903(void) = Call[~String] : func:r35_5902, this:r35_5901 +# 35| mu35_5904(unknown) = ^CallSideEffect : ~m? +# 35| v35_5905(void) = ^IndirectReadSideEffect[-1] : &:r35_5901, ~m? +# 35| mu35_5906(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5901 +# 35| r35_5907(bool) = Constant[0] : +# 35| v35_5908(void) = ConditionalBranch : r35_5907 #-----| False -> Block 422 #-----| True -> Block 1026 -# 1285| Block 422 -# 1285| r1285_1(glval) = VariableAddress[x422] : -# 1285| mu1285_2(String) = Uninitialized[x422] : &:r1285_1 -# 1285| r1285_3(glval) = FunctionAddress[String] : -# 1285| v1285_4(void) = Call[String] : func:r1285_3, this:r1285_1 -# 1285| mu1285_5(unknown) = ^CallSideEffect : ~m? -# 1285| mu1285_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1285_1 -# 1286| r1286_1(glval) = VariableAddress[x422] : -# 1286| r1286_2(glval) = FunctionAddress[~String] : -# 1286| v1286_3(void) = Call[~String] : func:r1286_2, this:r1286_1 -# 1286| mu1286_4(unknown) = ^CallSideEffect : ~m? -# 1286| v1286_5(void) = ^IndirectReadSideEffect[-1] : &:r1286_1, ~m? -# 1286| mu1286_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1286_1 -# 1286| r1286_7(bool) = Constant[0] : -# 1286| v1286_8(void) = ConditionalBranch : r1286_7 +# 35| Block 422 +# 35| r35_5909(glval) = VariableAddress[x422] : +# 35| mu35_5910(String) = Uninitialized[x422] : &:r35_5909 +# 35| r35_5911(glval) = FunctionAddress[String] : +# 35| v35_5912(void) = Call[String] : func:r35_5911, this:r35_5909 +# 35| mu35_5913(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5914(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5909 +# 35| r35_5915(glval) = VariableAddress[x422] : +# 35| r35_5916(glval) = FunctionAddress[~String] : +# 35| v35_5917(void) = Call[~String] : func:r35_5916, this:r35_5915 +# 35| mu35_5918(unknown) = ^CallSideEffect : ~m? +# 35| v35_5919(void) = ^IndirectReadSideEffect[-1] : &:r35_5915, ~m? +# 35| mu35_5920(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5915 +# 35| r35_5921(bool) = Constant[0] : +# 35| v35_5922(void) = ConditionalBranch : r35_5921 #-----| False -> Block 423 #-----| True -> Block 1026 -# 1288| Block 423 -# 1288| r1288_1(glval) = VariableAddress[x423] : -# 1288| mu1288_2(String) = Uninitialized[x423] : &:r1288_1 -# 1288| r1288_3(glval) = FunctionAddress[String] : -# 1288| v1288_4(void) = Call[String] : func:r1288_3, this:r1288_1 -# 1288| mu1288_5(unknown) = ^CallSideEffect : ~m? -# 1288| mu1288_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1288_1 -# 1289| r1289_1(glval) = VariableAddress[x423] : -# 1289| r1289_2(glval) = FunctionAddress[~String] : -# 1289| v1289_3(void) = Call[~String] : func:r1289_2, this:r1289_1 -# 1289| mu1289_4(unknown) = ^CallSideEffect : ~m? -# 1289| v1289_5(void) = ^IndirectReadSideEffect[-1] : &:r1289_1, ~m? -# 1289| mu1289_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1289_1 -# 1289| r1289_7(bool) = Constant[0] : -# 1289| v1289_8(void) = ConditionalBranch : r1289_7 +# 35| Block 423 +# 35| r35_5923(glval) = VariableAddress[x423] : +# 35| mu35_5924(String) = Uninitialized[x423] : &:r35_5923 +# 35| r35_5925(glval) = FunctionAddress[String] : +# 35| v35_5926(void) = Call[String] : func:r35_5925, this:r35_5923 +# 35| mu35_5927(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5928(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5923 +# 35| r35_5929(glval) = VariableAddress[x423] : +# 35| r35_5930(glval) = FunctionAddress[~String] : +# 35| v35_5931(void) = Call[~String] : func:r35_5930, this:r35_5929 +# 35| mu35_5932(unknown) = ^CallSideEffect : ~m? +# 35| v35_5933(void) = ^IndirectReadSideEffect[-1] : &:r35_5929, ~m? +# 35| mu35_5934(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5929 +# 35| r35_5935(bool) = Constant[0] : +# 35| v35_5936(void) = ConditionalBranch : r35_5935 #-----| False -> Block 424 #-----| True -> Block 1026 -# 1291| Block 424 -# 1291| r1291_1(glval) = VariableAddress[x424] : -# 1291| mu1291_2(String) = Uninitialized[x424] : &:r1291_1 -# 1291| r1291_3(glval) = FunctionAddress[String] : -# 1291| v1291_4(void) = Call[String] : func:r1291_3, this:r1291_1 -# 1291| mu1291_5(unknown) = ^CallSideEffect : ~m? -# 1291| mu1291_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1291_1 -# 1292| r1292_1(glval) = VariableAddress[x424] : -# 1292| r1292_2(glval) = FunctionAddress[~String] : -# 1292| v1292_3(void) = Call[~String] : func:r1292_2, this:r1292_1 -# 1292| mu1292_4(unknown) = ^CallSideEffect : ~m? -# 1292| v1292_5(void) = ^IndirectReadSideEffect[-1] : &:r1292_1, ~m? -# 1292| mu1292_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1292_1 -# 1292| r1292_7(bool) = Constant[0] : -# 1292| v1292_8(void) = ConditionalBranch : r1292_7 +# 35| Block 424 +# 35| r35_5937(glval) = VariableAddress[x424] : +# 35| mu35_5938(String) = Uninitialized[x424] : &:r35_5937 +# 35| r35_5939(glval) = FunctionAddress[String] : +# 35| v35_5940(void) = Call[String] : func:r35_5939, this:r35_5937 +# 35| mu35_5941(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5942(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5937 +# 35| r35_5943(glval) = VariableAddress[x424] : +# 35| r35_5944(glval) = FunctionAddress[~String] : +# 35| v35_5945(void) = Call[~String] : func:r35_5944, this:r35_5943 +# 35| mu35_5946(unknown) = ^CallSideEffect : ~m? +# 35| v35_5947(void) = ^IndirectReadSideEffect[-1] : &:r35_5943, ~m? +# 35| mu35_5948(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5943 +# 35| r35_5949(bool) = Constant[0] : +# 35| v35_5950(void) = ConditionalBranch : r35_5949 #-----| False -> Block 425 #-----| True -> Block 1026 -# 1294| Block 425 -# 1294| r1294_1(glval) = VariableAddress[x425] : -# 1294| mu1294_2(String) = Uninitialized[x425] : &:r1294_1 -# 1294| r1294_3(glval) = FunctionAddress[String] : -# 1294| v1294_4(void) = Call[String] : func:r1294_3, this:r1294_1 -# 1294| mu1294_5(unknown) = ^CallSideEffect : ~m? -# 1294| mu1294_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1294_1 -# 1295| r1295_1(glval) = VariableAddress[x425] : -# 1295| r1295_2(glval) = FunctionAddress[~String] : -# 1295| v1295_3(void) = Call[~String] : func:r1295_2, this:r1295_1 -# 1295| mu1295_4(unknown) = ^CallSideEffect : ~m? -# 1295| v1295_5(void) = ^IndirectReadSideEffect[-1] : &:r1295_1, ~m? -# 1295| mu1295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1295_1 -# 1295| r1295_7(bool) = Constant[0] : -# 1295| v1295_8(void) = ConditionalBranch : r1295_7 +# 35| Block 425 +# 35| r35_5951(glval) = VariableAddress[x425] : +# 35| mu35_5952(String) = Uninitialized[x425] : &:r35_5951 +# 35| r35_5953(glval) = FunctionAddress[String] : +# 35| v35_5954(void) = Call[String] : func:r35_5953, this:r35_5951 +# 35| mu35_5955(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5956(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5951 +# 35| r35_5957(glval) = VariableAddress[x425] : +# 35| r35_5958(glval) = FunctionAddress[~String] : +# 35| v35_5959(void) = Call[~String] : func:r35_5958, this:r35_5957 +# 35| mu35_5960(unknown) = ^CallSideEffect : ~m? +# 35| v35_5961(void) = ^IndirectReadSideEffect[-1] : &:r35_5957, ~m? +# 35| mu35_5962(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5957 +# 35| r35_5963(bool) = Constant[0] : +# 35| v35_5964(void) = ConditionalBranch : r35_5963 #-----| False -> Block 426 #-----| True -> Block 1026 -# 1297| Block 426 -# 1297| r1297_1(glval) = VariableAddress[x426] : -# 1297| mu1297_2(String) = Uninitialized[x426] : &:r1297_1 -# 1297| r1297_3(glval) = FunctionAddress[String] : -# 1297| v1297_4(void) = Call[String] : func:r1297_3, this:r1297_1 -# 1297| mu1297_5(unknown) = ^CallSideEffect : ~m? -# 1297| mu1297_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1297_1 -# 1298| r1298_1(glval) = VariableAddress[x426] : -# 1298| r1298_2(glval) = FunctionAddress[~String] : -# 1298| v1298_3(void) = Call[~String] : func:r1298_2, this:r1298_1 -# 1298| mu1298_4(unknown) = ^CallSideEffect : ~m? -# 1298| v1298_5(void) = ^IndirectReadSideEffect[-1] : &:r1298_1, ~m? -# 1298| mu1298_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1298_1 -# 1298| r1298_7(bool) = Constant[0] : -# 1298| v1298_8(void) = ConditionalBranch : r1298_7 +# 35| Block 426 +# 35| r35_5965(glval) = VariableAddress[x426] : +# 35| mu35_5966(String) = Uninitialized[x426] : &:r35_5965 +# 35| r35_5967(glval) = FunctionAddress[String] : +# 35| v35_5968(void) = Call[String] : func:r35_5967, this:r35_5965 +# 35| mu35_5969(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5970(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5965 +# 35| r35_5971(glval) = VariableAddress[x426] : +# 35| r35_5972(glval) = FunctionAddress[~String] : +# 35| v35_5973(void) = Call[~String] : func:r35_5972, this:r35_5971 +# 35| mu35_5974(unknown) = ^CallSideEffect : ~m? +# 35| v35_5975(void) = ^IndirectReadSideEffect[-1] : &:r35_5971, ~m? +# 35| mu35_5976(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5971 +# 35| r35_5977(bool) = Constant[0] : +# 35| v35_5978(void) = ConditionalBranch : r35_5977 #-----| False -> Block 427 #-----| True -> Block 1026 -# 1300| Block 427 -# 1300| r1300_1(glval) = VariableAddress[x427] : -# 1300| mu1300_2(String) = Uninitialized[x427] : &:r1300_1 -# 1300| r1300_3(glval) = FunctionAddress[String] : -# 1300| v1300_4(void) = Call[String] : func:r1300_3, this:r1300_1 -# 1300| mu1300_5(unknown) = ^CallSideEffect : ~m? -# 1300| mu1300_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1300_1 -# 1301| r1301_1(glval) = VariableAddress[x427] : -# 1301| r1301_2(glval) = FunctionAddress[~String] : -# 1301| v1301_3(void) = Call[~String] : func:r1301_2, this:r1301_1 -# 1301| mu1301_4(unknown) = ^CallSideEffect : ~m? -# 1301| v1301_5(void) = ^IndirectReadSideEffect[-1] : &:r1301_1, ~m? -# 1301| mu1301_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1301_1 -# 1301| r1301_7(bool) = Constant[0] : -# 1301| v1301_8(void) = ConditionalBranch : r1301_7 +# 35| Block 427 +# 35| r35_5979(glval) = VariableAddress[x427] : +# 35| mu35_5980(String) = Uninitialized[x427] : &:r35_5979 +# 35| r35_5981(glval) = FunctionAddress[String] : +# 35| v35_5982(void) = Call[String] : func:r35_5981, this:r35_5979 +# 35| mu35_5983(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5984(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5979 +# 35| r35_5985(glval) = VariableAddress[x427] : +# 35| r35_5986(glval) = FunctionAddress[~String] : +# 35| v35_5987(void) = Call[~String] : func:r35_5986, this:r35_5985 +# 35| mu35_5988(unknown) = ^CallSideEffect : ~m? +# 35| v35_5989(void) = ^IndirectReadSideEffect[-1] : &:r35_5985, ~m? +# 35| mu35_5990(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5985 +# 35| r35_5991(bool) = Constant[0] : +# 35| v35_5992(void) = ConditionalBranch : r35_5991 #-----| False -> Block 428 #-----| True -> Block 1026 -# 1303| Block 428 -# 1303| r1303_1(glval) = VariableAddress[x428] : -# 1303| mu1303_2(String) = Uninitialized[x428] : &:r1303_1 -# 1303| r1303_3(glval) = FunctionAddress[String] : -# 1303| v1303_4(void) = Call[String] : func:r1303_3, this:r1303_1 -# 1303| mu1303_5(unknown) = ^CallSideEffect : ~m? -# 1303| mu1303_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1303_1 -# 1304| r1304_1(glval) = VariableAddress[x428] : -# 1304| r1304_2(glval) = FunctionAddress[~String] : -# 1304| v1304_3(void) = Call[~String] : func:r1304_2, this:r1304_1 -# 1304| mu1304_4(unknown) = ^CallSideEffect : ~m? -# 1304| v1304_5(void) = ^IndirectReadSideEffect[-1] : &:r1304_1, ~m? -# 1304| mu1304_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1304_1 -# 1304| r1304_7(bool) = Constant[0] : -# 1304| v1304_8(void) = ConditionalBranch : r1304_7 +# 35| Block 428 +# 35| r35_5993(glval) = VariableAddress[x428] : +# 35| mu35_5994(String) = Uninitialized[x428] : &:r35_5993 +# 35| r35_5995(glval) = FunctionAddress[String] : +# 35| v35_5996(void) = Call[String] : func:r35_5995, this:r35_5993 +# 35| mu35_5997(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5998(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5993 +# 35| r35_5999(glval) = VariableAddress[x428] : +# 35| r35_6000(glval) = FunctionAddress[~String] : +# 35| v35_6001(void) = Call[~String] : func:r35_6000, this:r35_5999 +# 35| mu35_6002(unknown) = ^CallSideEffect : ~m? +# 35| v35_6003(void) = ^IndirectReadSideEffect[-1] : &:r35_5999, ~m? +# 35| mu35_6004(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5999 +# 35| r35_6005(bool) = Constant[0] : +# 35| v35_6006(void) = ConditionalBranch : r35_6005 #-----| False -> Block 429 #-----| True -> Block 1026 -# 1306| Block 429 -# 1306| r1306_1(glval) = VariableAddress[x429] : -# 1306| mu1306_2(String) = Uninitialized[x429] : &:r1306_1 -# 1306| r1306_3(glval) = FunctionAddress[String] : -# 1306| v1306_4(void) = Call[String] : func:r1306_3, this:r1306_1 -# 1306| mu1306_5(unknown) = ^CallSideEffect : ~m? -# 1306| mu1306_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1306_1 -# 1307| r1307_1(glval) = VariableAddress[x429] : -# 1307| r1307_2(glval) = FunctionAddress[~String] : -# 1307| v1307_3(void) = Call[~String] : func:r1307_2, this:r1307_1 -# 1307| mu1307_4(unknown) = ^CallSideEffect : ~m? -# 1307| v1307_5(void) = ^IndirectReadSideEffect[-1] : &:r1307_1, ~m? -# 1307| mu1307_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1307_1 -# 1307| r1307_7(bool) = Constant[0] : -# 1307| v1307_8(void) = ConditionalBranch : r1307_7 +# 35| Block 429 +# 35| r35_6007(glval) = VariableAddress[x429] : +# 35| mu35_6008(String) = Uninitialized[x429] : &:r35_6007 +# 35| r35_6009(glval) = FunctionAddress[String] : +# 35| v35_6010(void) = Call[String] : func:r35_6009, this:r35_6007 +# 35| mu35_6011(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6012(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6007 +# 35| r35_6013(glval) = VariableAddress[x429] : +# 35| r35_6014(glval) = FunctionAddress[~String] : +# 35| v35_6015(void) = Call[~String] : func:r35_6014, this:r35_6013 +# 35| mu35_6016(unknown) = ^CallSideEffect : ~m? +# 35| v35_6017(void) = ^IndirectReadSideEffect[-1] : &:r35_6013, ~m? +# 35| mu35_6018(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6013 +# 35| r35_6019(bool) = Constant[0] : +# 35| v35_6020(void) = ConditionalBranch : r35_6019 #-----| False -> Block 430 #-----| True -> Block 1026 -# 1309| Block 430 -# 1309| r1309_1(glval) = VariableAddress[x430] : -# 1309| mu1309_2(String) = Uninitialized[x430] : &:r1309_1 -# 1309| r1309_3(glval) = FunctionAddress[String] : -# 1309| v1309_4(void) = Call[String] : func:r1309_3, this:r1309_1 -# 1309| mu1309_5(unknown) = ^CallSideEffect : ~m? -# 1309| mu1309_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1309_1 -# 1310| r1310_1(glval) = VariableAddress[x430] : -# 1310| r1310_2(glval) = FunctionAddress[~String] : -# 1310| v1310_3(void) = Call[~String] : func:r1310_2, this:r1310_1 -# 1310| mu1310_4(unknown) = ^CallSideEffect : ~m? -# 1310| v1310_5(void) = ^IndirectReadSideEffect[-1] : &:r1310_1, ~m? -# 1310| mu1310_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1310_1 -# 1310| r1310_7(bool) = Constant[0] : -# 1310| v1310_8(void) = ConditionalBranch : r1310_7 +# 35| Block 430 +# 35| r35_6021(glval) = VariableAddress[x430] : +# 35| mu35_6022(String) = Uninitialized[x430] : &:r35_6021 +# 35| r35_6023(glval) = FunctionAddress[String] : +# 35| v35_6024(void) = Call[String] : func:r35_6023, this:r35_6021 +# 35| mu35_6025(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6026(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6021 +# 35| r35_6027(glval) = VariableAddress[x430] : +# 35| r35_6028(glval) = FunctionAddress[~String] : +# 35| v35_6029(void) = Call[~String] : func:r35_6028, this:r35_6027 +# 35| mu35_6030(unknown) = ^CallSideEffect : ~m? +# 35| v35_6031(void) = ^IndirectReadSideEffect[-1] : &:r35_6027, ~m? +# 35| mu35_6032(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6027 +# 35| r35_6033(bool) = Constant[0] : +# 35| v35_6034(void) = ConditionalBranch : r35_6033 #-----| False -> Block 431 #-----| True -> Block 1026 -# 1312| Block 431 -# 1312| r1312_1(glval) = VariableAddress[x431] : -# 1312| mu1312_2(String) = Uninitialized[x431] : &:r1312_1 -# 1312| r1312_3(glval) = FunctionAddress[String] : -# 1312| v1312_4(void) = Call[String] : func:r1312_3, this:r1312_1 -# 1312| mu1312_5(unknown) = ^CallSideEffect : ~m? -# 1312| mu1312_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1312_1 -# 1313| r1313_1(glval) = VariableAddress[x431] : -# 1313| r1313_2(glval) = FunctionAddress[~String] : -# 1313| v1313_3(void) = Call[~String] : func:r1313_2, this:r1313_1 -# 1313| mu1313_4(unknown) = ^CallSideEffect : ~m? -# 1313| v1313_5(void) = ^IndirectReadSideEffect[-1] : &:r1313_1, ~m? -# 1313| mu1313_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1313_1 -# 1313| r1313_7(bool) = Constant[0] : -# 1313| v1313_8(void) = ConditionalBranch : r1313_7 +# 35| Block 431 +# 35| r35_6035(glval) = VariableAddress[x431] : +# 35| mu35_6036(String) = Uninitialized[x431] : &:r35_6035 +# 35| r35_6037(glval) = FunctionAddress[String] : +# 35| v35_6038(void) = Call[String] : func:r35_6037, this:r35_6035 +# 35| mu35_6039(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6040(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6035 +# 35| r35_6041(glval) = VariableAddress[x431] : +# 35| r35_6042(glval) = FunctionAddress[~String] : +# 35| v35_6043(void) = Call[~String] : func:r35_6042, this:r35_6041 +# 35| mu35_6044(unknown) = ^CallSideEffect : ~m? +# 35| v35_6045(void) = ^IndirectReadSideEffect[-1] : &:r35_6041, ~m? +# 35| mu35_6046(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6041 +# 35| r35_6047(bool) = Constant[0] : +# 35| v35_6048(void) = ConditionalBranch : r35_6047 #-----| False -> Block 432 #-----| True -> Block 1026 -# 1315| Block 432 -# 1315| r1315_1(glval) = VariableAddress[x432] : -# 1315| mu1315_2(String) = Uninitialized[x432] : &:r1315_1 -# 1315| r1315_3(glval) = FunctionAddress[String] : -# 1315| v1315_4(void) = Call[String] : func:r1315_3, this:r1315_1 -# 1315| mu1315_5(unknown) = ^CallSideEffect : ~m? -# 1315| mu1315_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1315_1 -# 1316| r1316_1(glval) = VariableAddress[x432] : -# 1316| r1316_2(glval) = FunctionAddress[~String] : -# 1316| v1316_3(void) = Call[~String] : func:r1316_2, this:r1316_1 -# 1316| mu1316_4(unknown) = ^CallSideEffect : ~m? -# 1316| v1316_5(void) = ^IndirectReadSideEffect[-1] : &:r1316_1, ~m? -# 1316| mu1316_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1316_1 -# 1316| r1316_7(bool) = Constant[0] : -# 1316| v1316_8(void) = ConditionalBranch : r1316_7 +# 35| Block 432 +# 35| r35_6049(glval) = VariableAddress[x432] : +# 35| mu35_6050(String) = Uninitialized[x432] : &:r35_6049 +# 35| r35_6051(glval) = FunctionAddress[String] : +# 35| v35_6052(void) = Call[String] : func:r35_6051, this:r35_6049 +# 35| mu35_6053(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6054(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6049 +# 35| r35_6055(glval) = VariableAddress[x432] : +# 35| r35_6056(glval) = FunctionAddress[~String] : +# 35| v35_6057(void) = Call[~String] : func:r35_6056, this:r35_6055 +# 35| mu35_6058(unknown) = ^CallSideEffect : ~m? +# 35| v35_6059(void) = ^IndirectReadSideEffect[-1] : &:r35_6055, ~m? +# 35| mu35_6060(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6055 +# 35| r35_6061(bool) = Constant[0] : +# 35| v35_6062(void) = ConditionalBranch : r35_6061 #-----| False -> Block 433 #-----| True -> Block 1026 -# 1318| Block 433 -# 1318| r1318_1(glval) = VariableAddress[x433] : -# 1318| mu1318_2(String) = Uninitialized[x433] : &:r1318_1 -# 1318| r1318_3(glval) = FunctionAddress[String] : -# 1318| v1318_4(void) = Call[String] : func:r1318_3, this:r1318_1 -# 1318| mu1318_5(unknown) = ^CallSideEffect : ~m? -# 1318| mu1318_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1318_1 -# 1319| r1319_1(glval) = VariableAddress[x433] : -# 1319| r1319_2(glval) = FunctionAddress[~String] : -# 1319| v1319_3(void) = Call[~String] : func:r1319_2, this:r1319_1 -# 1319| mu1319_4(unknown) = ^CallSideEffect : ~m? -# 1319| v1319_5(void) = ^IndirectReadSideEffect[-1] : &:r1319_1, ~m? -# 1319| mu1319_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1319_1 -# 1319| r1319_7(bool) = Constant[0] : -# 1319| v1319_8(void) = ConditionalBranch : r1319_7 +# 35| Block 433 +# 35| r35_6063(glval) = VariableAddress[x433] : +# 35| mu35_6064(String) = Uninitialized[x433] : &:r35_6063 +# 35| r35_6065(glval) = FunctionAddress[String] : +# 35| v35_6066(void) = Call[String] : func:r35_6065, this:r35_6063 +# 35| mu35_6067(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6068(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6063 +# 35| r35_6069(glval) = VariableAddress[x433] : +# 35| r35_6070(glval) = FunctionAddress[~String] : +# 35| v35_6071(void) = Call[~String] : func:r35_6070, this:r35_6069 +# 35| mu35_6072(unknown) = ^CallSideEffect : ~m? +# 35| v35_6073(void) = ^IndirectReadSideEffect[-1] : &:r35_6069, ~m? +# 35| mu35_6074(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6069 +# 35| r35_6075(bool) = Constant[0] : +# 35| v35_6076(void) = ConditionalBranch : r35_6075 #-----| False -> Block 434 #-----| True -> Block 1026 -# 1321| Block 434 -# 1321| r1321_1(glval) = VariableAddress[x434] : -# 1321| mu1321_2(String) = Uninitialized[x434] : &:r1321_1 -# 1321| r1321_3(glval) = FunctionAddress[String] : -# 1321| v1321_4(void) = Call[String] : func:r1321_3, this:r1321_1 -# 1321| mu1321_5(unknown) = ^CallSideEffect : ~m? -# 1321| mu1321_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1321_1 -# 1322| r1322_1(glval) = VariableAddress[x434] : -# 1322| r1322_2(glval) = FunctionAddress[~String] : -# 1322| v1322_3(void) = Call[~String] : func:r1322_2, this:r1322_1 -# 1322| mu1322_4(unknown) = ^CallSideEffect : ~m? -# 1322| v1322_5(void) = ^IndirectReadSideEffect[-1] : &:r1322_1, ~m? -# 1322| mu1322_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1322_1 -# 1322| r1322_7(bool) = Constant[0] : -# 1322| v1322_8(void) = ConditionalBranch : r1322_7 +# 35| Block 434 +# 35| r35_6077(glval) = VariableAddress[x434] : +# 35| mu35_6078(String) = Uninitialized[x434] : &:r35_6077 +# 35| r35_6079(glval) = FunctionAddress[String] : +# 35| v35_6080(void) = Call[String] : func:r35_6079, this:r35_6077 +# 35| mu35_6081(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6082(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6077 +# 35| r35_6083(glval) = VariableAddress[x434] : +# 35| r35_6084(glval) = FunctionAddress[~String] : +# 35| v35_6085(void) = Call[~String] : func:r35_6084, this:r35_6083 +# 35| mu35_6086(unknown) = ^CallSideEffect : ~m? +# 35| v35_6087(void) = ^IndirectReadSideEffect[-1] : &:r35_6083, ~m? +# 35| mu35_6088(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6083 +# 35| r35_6089(bool) = Constant[0] : +# 35| v35_6090(void) = ConditionalBranch : r35_6089 #-----| False -> Block 435 #-----| True -> Block 1026 -# 1324| Block 435 -# 1324| r1324_1(glval) = VariableAddress[x435] : -# 1324| mu1324_2(String) = Uninitialized[x435] : &:r1324_1 -# 1324| r1324_3(glval) = FunctionAddress[String] : -# 1324| v1324_4(void) = Call[String] : func:r1324_3, this:r1324_1 -# 1324| mu1324_5(unknown) = ^CallSideEffect : ~m? -# 1324| mu1324_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1324_1 -# 1325| r1325_1(glval) = VariableAddress[x435] : -# 1325| r1325_2(glval) = FunctionAddress[~String] : -# 1325| v1325_3(void) = Call[~String] : func:r1325_2, this:r1325_1 -# 1325| mu1325_4(unknown) = ^CallSideEffect : ~m? -# 1325| v1325_5(void) = ^IndirectReadSideEffect[-1] : &:r1325_1, ~m? -# 1325| mu1325_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1325_1 -# 1325| r1325_7(bool) = Constant[0] : -# 1325| v1325_8(void) = ConditionalBranch : r1325_7 +# 35| Block 435 +# 35| r35_6091(glval) = VariableAddress[x435] : +# 35| mu35_6092(String) = Uninitialized[x435] : &:r35_6091 +# 35| r35_6093(glval) = FunctionAddress[String] : +# 35| v35_6094(void) = Call[String] : func:r35_6093, this:r35_6091 +# 35| mu35_6095(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6096(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6091 +# 35| r35_6097(glval) = VariableAddress[x435] : +# 35| r35_6098(glval) = FunctionAddress[~String] : +# 35| v35_6099(void) = Call[~String] : func:r35_6098, this:r35_6097 +# 35| mu35_6100(unknown) = ^CallSideEffect : ~m? +# 35| v35_6101(void) = ^IndirectReadSideEffect[-1] : &:r35_6097, ~m? +# 35| mu35_6102(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6097 +# 35| r35_6103(bool) = Constant[0] : +# 35| v35_6104(void) = ConditionalBranch : r35_6103 #-----| False -> Block 436 #-----| True -> Block 1026 -# 1327| Block 436 -# 1327| r1327_1(glval) = VariableAddress[x436] : -# 1327| mu1327_2(String) = Uninitialized[x436] : &:r1327_1 -# 1327| r1327_3(glval) = FunctionAddress[String] : -# 1327| v1327_4(void) = Call[String] : func:r1327_3, this:r1327_1 -# 1327| mu1327_5(unknown) = ^CallSideEffect : ~m? -# 1327| mu1327_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1327_1 -# 1328| r1328_1(glval) = VariableAddress[x436] : -# 1328| r1328_2(glval) = FunctionAddress[~String] : -# 1328| v1328_3(void) = Call[~String] : func:r1328_2, this:r1328_1 -# 1328| mu1328_4(unknown) = ^CallSideEffect : ~m? -# 1328| v1328_5(void) = ^IndirectReadSideEffect[-1] : &:r1328_1, ~m? -# 1328| mu1328_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1328_1 -# 1328| r1328_7(bool) = Constant[0] : -# 1328| v1328_8(void) = ConditionalBranch : r1328_7 +# 35| Block 436 +# 35| r35_6105(glval) = VariableAddress[x436] : +# 35| mu35_6106(String) = Uninitialized[x436] : &:r35_6105 +# 35| r35_6107(glval) = FunctionAddress[String] : +# 35| v35_6108(void) = Call[String] : func:r35_6107, this:r35_6105 +# 35| mu35_6109(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6105 +# 35| r35_6111(glval) = VariableAddress[x436] : +# 35| r35_6112(glval) = FunctionAddress[~String] : +# 35| v35_6113(void) = Call[~String] : func:r35_6112, this:r35_6111 +# 35| mu35_6114(unknown) = ^CallSideEffect : ~m? +# 35| v35_6115(void) = ^IndirectReadSideEffect[-1] : &:r35_6111, ~m? +# 35| mu35_6116(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6111 +# 35| r35_6117(bool) = Constant[0] : +# 35| v35_6118(void) = ConditionalBranch : r35_6117 #-----| False -> Block 437 #-----| True -> Block 1026 -# 1330| Block 437 -# 1330| r1330_1(glval) = VariableAddress[x437] : -# 1330| mu1330_2(String) = Uninitialized[x437] : &:r1330_1 -# 1330| r1330_3(glval) = FunctionAddress[String] : -# 1330| v1330_4(void) = Call[String] : func:r1330_3, this:r1330_1 -# 1330| mu1330_5(unknown) = ^CallSideEffect : ~m? -# 1330| mu1330_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1330_1 -# 1331| r1331_1(glval) = VariableAddress[x437] : -# 1331| r1331_2(glval) = FunctionAddress[~String] : -# 1331| v1331_3(void) = Call[~String] : func:r1331_2, this:r1331_1 -# 1331| mu1331_4(unknown) = ^CallSideEffect : ~m? -# 1331| v1331_5(void) = ^IndirectReadSideEffect[-1] : &:r1331_1, ~m? -# 1331| mu1331_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1331_1 -# 1331| r1331_7(bool) = Constant[0] : -# 1331| v1331_8(void) = ConditionalBranch : r1331_7 +# 35| Block 437 +# 35| r35_6119(glval) = VariableAddress[x437] : +# 35| mu35_6120(String) = Uninitialized[x437] : &:r35_6119 +# 35| r35_6121(glval) = FunctionAddress[String] : +# 35| v35_6122(void) = Call[String] : func:r35_6121, this:r35_6119 +# 35| mu35_6123(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6119 +# 35| r35_6125(glval) = VariableAddress[x437] : +# 35| r35_6126(glval) = FunctionAddress[~String] : +# 35| v35_6127(void) = Call[~String] : func:r35_6126, this:r35_6125 +# 35| mu35_6128(unknown) = ^CallSideEffect : ~m? +# 35| v35_6129(void) = ^IndirectReadSideEffect[-1] : &:r35_6125, ~m? +# 35| mu35_6130(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6125 +# 35| r35_6131(bool) = Constant[0] : +# 35| v35_6132(void) = ConditionalBranch : r35_6131 #-----| False -> Block 438 #-----| True -> Block 1026 -# 1333| Block 438 -# 1333| r1333_1(glval) = VariableAddress[x438] : -# 1333| mu1333_2(String) = Uninitialized[x438] : &:r1333_1 -# 1333| r1333_3(glval) = FunctionAddress[String] : -# 1333| v1333_4(void) = Call[String] : func:r1333_3, this:r1333_1 -# 1333| mu1333_5(unknown) = ^CallSideEffect : ~m? -# 1333| mu1333_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1333_1 -# 1334| r1334_1(glval) = VariableAddress[x438] : -# 1334| r1334_2(glval) = FunctionAddress[~String] : -# 1334| v1334_3(void) = Call[~String] : func:r1334_2, this:r1334_1 -# 1334| mu1334_4(unknown) = ^CallSideEffect : ~m? -# 1334| v1334_5(void) = ^IndirectReadSideEffect[-1] : &:r1334_1, ~m? -# 1334| mu1334_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1334_1 -# 1334| r1334_7(bool) = Constant[0] : -# 1334| v1334_8(void) = ConditionalBranch : r1334_7 +# 35| Block 438 +# 35| r35_6133(glval) = VariableAddress[x438] : +# 35| mu35_6134(String) = Uninitialized[x438] : &:r35_6133 +# 35| r35_6135(glval) = FunctionAddress[String] : +# 35| v35_6136(void) = Call[String] : func:r35_6135, this:r35_6133 +# 35| mu35_6137(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6133 +# 35| r35_6139(glval) = VariableAddress[x438] : +# 35| r35_6140(glval) = FunctionAddress[~String] : +# 35| v35_6141(void) = Call[~String] : func:r35_6140, this:r35_6139 +# 35| mu35_6142(unknown) = ^CallSideEffect : ~m? +# 35| v35_6143(void) = ^IndirectReadSideEffect[-1] : &:r35_6139, ~m? +# 35| mu35_6144(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6139 +# 35| r35_6145(bool) = Constant[0] : +# 35| v35_6146(void) = ConditionalBranch : r35_6145 #-----| False -> Block 439 #-----| True -> Block 1026 -# 1336| Block 439 -# 1336| r1336_1(glval) = VariableAddress[x439] : -# 1336| mu1336_2(String) = Uninitialized[x439] : &:r1336_1 -# 1336| r1336_3(glval) = FunctionAddress[String] : -# 1336| v1336_4(void) = Call[String] : func:r1336_3, this:r1336_1 -# 1336| mu1336_5(unknown) = ^CallSideEffect : ~m? -# 1336| mu1336_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1336_1 -# 1337| r1337_1(glval) = VariableAddress[x439] : -# 1337| r1337_2(glval) = FunctionAddress[~String] : -# 1337| v1337_3(void) = Call[~String] : func:r1337_2, this:r1337_1 -# 1337| mu1337_4(unknown) = ^CallSideEffect : ~m? -# 1337| v1337_5(void) = ^IndirectReadSideEffect[-1] : &:r1337_1, ~m? -# 1337| mu1337_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1337_1 -# 1337| r1337_7(bool) = Constant[0] : -# 1337| v1337_8(void) = ConditionalBranch : r1337_7 +# 35| Block 439 +# 35| r35_6147(glval) = VariableAddress[x439] : +# 35| mu35_6148(String) = Uninitialized[x439] : &:r35_6147 +# 35| r35_6149(glval) = FunctionAddress[String] : +# 35| v35_6150(void) = Call[String] : func:r35_6149, this:r35_6147 +# 35| mu35_6151(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6147 +# 35| r35_6153(glval) = VariableAddress[x439] : +# 35| r35_6154(glval) = FunctionAddress[~String] : +# 35| v35_6155(void) = Call[~String] : func:r35_6154, this:r35_6153 +# 35| mu35_6156(unknown) = ^CallSideEffect : ~m? +# 35| v35_6157(void) = ^IndirectReadSideEffect[-1] : &:r35_6153, ~m? +# 35| mu35_6158(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6153 +# 35| r35_6159(bool) = Constant[0] : +# 35| v35_6160(void) = ConditionalBranch : r35_6159 #-----| False -> Block 440 #-----| True -> Block 1026 -# 1339| Block 440 -# 1339| r1339_1(glval) = VariableAddress[x440] : -# 1339| mu1339_2(String) = Uninitialized[x440] : &:r1339_1 -# 1339| r1339_3(glval) = FunctionAddress[String] : -# 1339| v1339_4(void) = Call[String] : func:r1339_3, this:r1339_1 -# 1339| mu1339_5(unknown) = ^CallSideEffect : ~m? -# 1339| mu1339_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1339_1 -# 1340| r1340_1(glval) = VariableAddress[x440] : -# 1340| r1340_2(glval) = FunctionAddress[~String] : -# 1340| v1340_3(void) = Call[~String] : func:r1340_2, this:r1340_1 -# 1340| mu1340_4(unknown) = ^CallSideEffect : ~m? -# 1340| v1340_5(void) = ^IndirectReadSideEffect[-1] : &:r1340_1, ~m? -# 1340| mu1340_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1340_1 -# 1340| r1340_7(bool) = Constant[0] : -# 1340| v1340_8(void) = ConditionalBranch : r1340_7 +# 35| Block 440 +# 35| r35_6161(glval) = VariableAddress[x440] : +# 35| mu35_6162(String) = Uninitialized[x440] : &:r35_6161 +# 35| r35_6163(glval) = FunctionAddress[String] : +# 35| v35_6164(void) = Call[String] : func:r35_6163, this:r35_6161 +# 35| mu35_6165(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6161 +# 35| r35_6167(glval) = VariableAddress[x440] : +# 35| r35_6168(glval) = FunctionAddress[~String] : +# 35| v35_6169(void) = Call[~String] : func:r35_6168, this:r35_6167 +# 35| mu35_6170(unknown) = ^CallSideEffect : ~m? +# 35| v35_6171(void) = ^IndirectReadSideEffect[-1] : &:r35_6167, ~m? +# 35| mu35_6172(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6167 +# 35| r35_6173(bool) = Constant[0] : +# 35| v35_6174(void) = ConditionalBranch : r35_6173 #-----| False -> Block 441 #-----| True -> Block 1026 -# 1342| Block 441 -# 1342| r1342_1(glval) = VariableAddress[x441] : -# 1342| mu1342_2(String) = Uninitialized[x441] : &:r1342_1 -# 1342| r1342_3(glval) = FunctionAddress[String] : -# 1342| v1342_4(void) = Call[String] : func:r1342_3, this:r1342_1 -# 1342| mu1342_5(unknown) = ^CallSideEffect : ~m? -# 1342| mu1342_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1342_1 -# 1343| r1343_1(glval) = VariableAddress[x441] : -# 1343| r1343_2(glval) = FunctionAddress[~String] : -# 1343| v1343_3(void) = Call[~String] : func:r1343_2, this:r1343_1 -# 1343| mu1343_4(unknown) = ^CallSideEffect : ~m? -# 1343| v1343_5(void) = ^IndirectReadSideEffect[-1] : &:r1343_1, ~m? -# 1343| mu1343_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1343_1 -# 1343| r1343_7(bool) = Constant[0] : -# 1343| v1343_8(void) = ConditionalBranch : r1343_7 +# 35| Block 441 +# 35| r35_6175(glval) = VariableAddress[x441] : +# 35| mu35_6176(String) = Uninitialized[x441] : &:r35_6175 +# 35| r35_6177(glval) = FunctionAddress[String] : +# 35| v35_6178(void) = Call[String] : func:r35_6177, this:r35_6175 +# 35| mu35_6179(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6175 +# 35| r35_6181(glval) = VariableAddress[x441] : +# 35| r35_6182(glval) = FunctionAddress[~String] : +# 35| v35_6183(void) = Call[~String] : func:r35_6182, this:r35_6181 +# 35| mu35_6184(unknown) = ^CallSideEffect : ~m? +# 35| v35_6185(void) = ^IndirectReadSideEffect[-1] : &:r35_6181, ~m? +# 35| mu35_6186(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6181 +# 35| r35_6187(bool) = Constant[0] : +# 35| v35_6188(void) = ConditionalBranch : r35_6187 #-----| False -> Block 442 #-----| True -> Block 1026 -# 1345| Block 442 -# 1345| r1345_1(glval) = VariableAddress[x442] : -# 1345| mu1345_2(String) = Uninitialized[x442] : &:r1345_1 -# 1345| r1345_3(glval) = FunctionAddress[String] : -# 1345| v1345_4(void) = Call[String] : func:r1345_3, this:r1345_1 -# 1345| mu1345_5(unknown) = ^CallSideEffect : ~m? -# 1345| mu1345_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1345_1 -# 1346| r1346_1(glval) = VariableAddress[x442] : -# 1346| r1346_2(glval) = FunctionAddress[~String] : -# 1346| v1346_3(void) = Call[~String] : func:r1346_2, this:r1346_1 -# 1346| mu1346_4(unknown) = ^CallSideEffect : ~m? -# 1346| v1346_5(void) = ^IndirectReadSideEffect[-1] : &:r1346_1, ~m? -# 1346| mu1346_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1346_1 -# 1346| r1346_7(bool) = Constant[0] : -# 1346| v1346_8(void) = ConditionalBranch : r1346_7 +# 35| Block 442 +# 35| r35_6189(glval) = VariableAddress[x442] : +# 35| mu35_6190(String) = Uninitialized[x442] : &:r35_6189 +# 35| r35_6191(glval) = FunctionAddress[String] : +# 35| v35_6192(void) = Call[String] : func:r35_6191, this:r35_6189 +# 35| mu35_6193(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6189 +# 35| r35_6195(glval) = VariableAddress[x442] : +# 35| r35_6196(glval) = FunctionAddress[~String] : +# 35| v35_6197(void) = Call[~String] : func:r35_6196, this:r35_6195 +# 35| mu35_6198(unknown) = ^CallSideEffect : ~m? +# 35| v35_6199(void) = ^IndirectReadSideEffect[-1] : &:r35_6195, ~m? +# 35| mu35_6200(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6195 +# 35| r35_6201(bool) = Constant[0] : +# 35| v35_6202(void) = ConditionalBranch : r35_6201 #-----| False -> Block 443 #-----| True -> Block 1026 -# 1348| Block 443 -# 1348| r1348_1(glval) = VariableAddress[x443] : -# 1348| mu1348_2(String) = Uninitialized[x443] : &:r1348_1 -# 1348| r1348_3(glval) = FunctionAddress[String] : -# 1348| v1348_4(void) = Call[String] : func:r1348_3, this:r1348_1 -# 1348| mu1348_5(unknown) = ^CallSideEffect : ~m? -# 1348| mu1348_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1348_1 -# 1349| r1349_1(glval) = VariableAddress[x443] : -# 1349| r1349_2(glval) = FunctionAddress[~String] : -# 1349| v1349_3(void) = Call[~String] : func:r1349_2, this:r1349_1 -# 1349| mu1349_4(unknown) = ^CallSideEffect : ~m? -# 1349| v1349_5(void) = ^IndirectReadSideEffect[-1] : &:r1349_1, ~m? -# 1349| mu1349_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1349_1 -# 1349| r1349_7(bool) = Constant[0] : -# 1349| v1349_8(void) = ConditionalBranch : r1349_7 +# 35| Block 443 +# 35| r35_6203(glval) = VariableAddress[x443] : +# 35| mu35_6204(String) = Uninitialized[x443] : &:r35_6203 +# 35| r35_6205(glval) = FunctionAddress[String] : +# 35| v35_6206(void) = Call[String] : func:r35_6205, this:r35_6203 +# 35| mu35_6207(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6203 +# 35| r35_6209(glval) = VariableAddress[x443] : +# 35| r35_6210(glval) = FunctionAddress[~String] : +# 35| v35_6211(void) = Call[~String] : func:r35_6210, this:r35_6209 +# 35| mu35_6212(unknown) = ^CallSideEffect : ~m? +# 35| v35_6213(void) = ^IndirectReadSideEffect[-1] : &:r35_6209, ~m? +# 35| mu35_6214(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6209 +# 35| r35_6215(bool) = Constant[0] : +# 35| v35_6216(void) = ConditionalBranch : r35_6215 #-----| False -> Block 444 #-----| True -> Block 1026 -# 1351| Block 444 -# 1351| r1351_1(glval) = VariableAddress[x444] : -# 1351| mu1351_2(String) = Uninitialized[x444] : &:r1351_1 -# 1351| r1351_3(glval) = FunctionAddress[String] : -# 1351| v1351_4(void) = Call[String] : func:r1351_3, this:r1351_1 -# 1351| mu1351_5(unknown) = ^CallSideEffect : ~m? -# 1351| mu1351_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1351_1 -# 1352| r1352_1(glval) = VariableAddress[x444] : -# 1352| r1352_2(glval) = FunctionAddress[~String] : -# 1352| v1352_3(void) = Call[~String] : func:r1352_2, this:r1352_1 -# 1352| mu1352_4(unknown) = ^CallSideEffect : ~m? -# 1352| v1352_5(void) = ^IndirectReadSideEffect[-1] : &:r1352_1, ~m? -# 1352| mu1352_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1352_1 -# 1352| r1352_7(bool) = Constant[0] : -# 1352| v1352_8(void) = ConditionalBranch : r1352_7 +# 35| Block 444 +# 35| r35_6217(glval) = VariableAddress[x444] : +# 35| mu35_6218(String) = Uninitialized[x444] : &:r35_6217 +# 35| r35_6219(glval) = FunctionAddress[String] : +# 35| v35_6220(void) = Call[String] : func:r35_6219, this:r35_6217 +# 35| mu35_6221(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6217 +# 35| r35_6223(glval) = VariableAddress[x444] : +# 35| r35_6224(glval) = FunctionAddress[~String] : +# 35| v35_6225(void) = Call[~String] : func:r35_6224, this:r35_6223 +# 35| mu35_6226(unknown) = ^CallSideEffect : ~m? +# 35| v35_6227(void) = ^IndirectReadSideEffect[-1] : &:r35_6223, ~m? +# 35| mu35_6228(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6223 +# 35| r35_6229(bool) = Constant[0] : +# 35| v35_6230(void) = ConditionalBranch : r35_6229 #-----| False -> Block 445 #-----| True -> Block 1026 -# 1354| Block 445 -# 1354| r1354_1(glval) = VariableAddress[x445] : -# 1354| mu1354_2(String) = Uninitialized[x445] : &:r1354_1 -# 1354| r1354_3(glval) = FunctionAddress[String] : -# 1354| v1354_4(void) = Call[String] : func:r1354_3, this:r1354_1 -# 1354| mu1354_5(unknown) = ^CallSideEffect : ~m? -# 1354| mu1354_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1354_1 -# 1355| r1355_1(glval) = VariableAddress[x445] : -# 1355| r1355_2(glval) = FunctionAddress[~String] : -# 1355| v1355_3(void) = Call[~String] : func:r1355_2, this:r1355_1 -# 1355| mu1355_4(unknown) = ^CallSideEffect : ~m? -# 1355| v1355_5(void) = ^IndirectReadSideEffect[-1] : &:r1355_1, ~m? -# 1355| mu1355_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1355_1 -# 1355| r1355_7(bool) = Constant[0] : -# 1355| v1355_8(void) = ConditionalBranch : r1355_7 +# 35| Block 445 +# 35| r35_6231(glval) = VariableAddress[x445] : +# 35| mu35_6232(String) = Uninitialized[x445] : &:r35_6231 +# 35| r35_6233(glval) = FunctionAddress[String] : +# 35| v35_6234(void) = Call[String] : func:r35_6233, this:r35_6231 +# 35| mu35_6235(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6231 +# 35| r35_6237(glval) = VariableAddress[x445] : +# 35| r35_6238(glval) = FunctionAddress[~String] : +# 35| v35_6239(void) = Call[~String] : func:r35_6238, this:r35_6237 +# 35| mu35_6240(unknown) = ^CallSideEffect : ~m? +# 35| v35_6241(void) = ^IndirectReadSideEffect[-1] : &:r35_6237, ~m? +# 35| mu35_6242(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6237 +# 35| r35_6243(bool) = Constant[0] : +# 35| v35_6244(void) = ConditionalBranch : r35_6243 #-----| False -> Block 446 #-----| True -> Block 1026 -# 1357| Block 446 -# 1357| r1357_1(glval) = VariableAddress[x446] : -# 1357| mu1357_2(String) = Uninitialized[x446] : &:r1357_1 -# 1357| r1357_3(glval) = FunctionAddress[String] : -# 1357| v1357_4(void) = Call[String] : func:r1357_3, this:r1357_1 -# 1357| mu1357_5(unknown) = ^CallSideEffect : ~m? -# 1357| mu1357_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1357_1 -# 1358| r1358_1(glval) = VariableAddress[x446] : -# 1358| r1358_2(glval) = FunctionAddress[~String] : -# 1358| v1358_3(void) = Call[~String] : func:r1358_2, this:r1358_1 -# 1358| mu1358_4(unknown) = ^CallSideEffect : ~m? -# 1358| v1358_5(void) = ^IndirectReadSideEffect[-1] : &:r1358_1, ~m? -# 1358| mu1358_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1358_1 -# 1358| r1358_7(bool) = Constant[0] : -# 1358| v1358_8(void) = ConditionalBranch : r1358_7 +# 35| Block 446 +# 35| r35_6245(glval) = VariableAddress[x446] : +# 35| mu35_6246(String) = Uninitialized[x446] : &:r35_6245 +# 35| r35_6247(glval) = FunctionAddress[String] : +# 35| v35_6248(void) = Call[String] : func:r35_6247, this:r35_6245 +# 35| mu35_6249(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6245 +# 35| r35_6251(glval) = VariableAddress[x446] : +# 35| r35_6252(glval) = FunctionAddress[~String] : +# 35| v35_6253(void) = Call[~String] : func:r35_6252, this:r35_6251 +# 35| mu35_6254(unknown) = ^CallSideEffect : ~m? +# 35| v35_6255(void) = ^IndirectReadSideEffect[-1] : &:r35_6251, ~m? +# 35| mu35_6256(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6251 +# 35| r35_6257(bool) = Constant[0] : +# 35| v35_6258(void) = ConditionalBranch : r35_6257 #-----| False -> Block 447 #-----| True -> Block 1026 -# 1360| Block 447 -# 1360| r1360_1(glval) = VariableAddress[x447] : -# 1360| mu1360_2(String) = Uninitialized[x447] : &:r1360_1 -# 1360| r1360_3(glval) = FunctionAddress[String] : -# 1360| v1360_4(void) = Call[String] : func:r1360_3, this:r1360_1 -# 1360| mu1360_5(unknown) = ^CallSideEffect : ~m? -# 1360| mu1360_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1360_1 -# 1361| r1361_1(glval) = VariableAddress[x447] : -# 1361| r1361_2(glval) = FunctionAddress[~String] : -# 1361| v1361_3(void) = Call[~String] : func:r1361_2, this:r1361_1 -# 1361| mu1361_4(unknown) = ^CallSideEffect : ~m? -# 1361| v1361_5(void) = ^IndirectReadSideEffect[-1] : &:r1361_1, ~m? -# 1361| mu1361_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1361_1 -# 1361| r1361_7(bool) = Constant[0] : -# 1361| v1361_8(void) = ConditionalBranch : r1361_7 +# 35| Block 447 +# 35| r35_6259(glval) = VariableAddress[x447] : +# 35| mu35_6260(String) = Uninitialized[x447] : &:r35_6259 +# 35| r35_6261(glval) = FunctionAddress[String] : +# 35| v35_6262(void) = Call[String] : func:r35_6261, this:r35_6259 +# 35| mu35_6263(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6259 +# 35| r35_6265(glval) = VariableAddress[x447] : +# 35| r35_6266(glval) = FunctionAddress[~String] : +# 35| v35_6267(void) = Call[~String] : func:r35_6266, this:r35_6265 +# 35| mu35_6268(unknown) = ^CallSideEffect : ~m? +# 35| v35_6269(void) = ^IndirectReadSideEffect[-1] : &:r35_6265, ~m? +# 35| mu35_6270(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6265 +# 35| r35_6271(bool) = Constant[0] : +# 35| v35_6272(void) = ConditionalBranch : r35_6271 #-----| False -> Block 448 #-----| True -> Block 1026 -# 1363| Block 448 -# 1363| r1363_1(glval) = VariableAddress[x448] : -# 1363| mu1363_2(String) = Uninitialized[x448] : &:r1363_1 -# 1363| r1363_3(glval) = FunctionAddress[String] : -# 1363| v1363_4(void) = Call[String] : func:r1363_3, this:r1363_1 -# 1363| mu1363_5(unknown) = ^CallSideEffect : ~m? -# 1363| mu1363_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1363_1 -# 1364| r1364_1(glval) = VariableAddress[x448] : -# 1364| r1364_2(glval) = FunctionAddress[~String] : -# 1364| v1364_3(void) = Call[~String] : func:r1364_2, this:r1364_1 -# 1364| mu1364_4(unknown) = ^CallSideEffect : ~m? -# 1364| v1364_5(void) = ^IndirectReadSideEffect[-1] : &:r1364_1, ~m? -# 1364| mu1364_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1364_1 -# 1364| r1364_7(bool) = Constant[0] : -# 1364| v1364_8(void) = ConditionalBranch : r1364_7 +# 35| Block 448 +# 35| r35_6273(glval) = VariableAddress[x448] : +# 35| mu35_6274(String) = Uninitialized[x448] : &:r35_6273 +# 35| r35_6275(glval) = FunctionAddress[String] : +# 35| v35_6276(void) = Call[String] : func:r35_6275, this:r35_6273 +# 35| mu35_6277(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6273 +# 35| r35_6279(glval) = VariableAddress[x448] : +# 35| r35_6280(glval) = FunctionAddress[~String] : +# 35| v35_6281(void) = Call[~String] : func:r35_6280, this:r35_6279 +# 35| mu35_6282(unknown) = ^CallSideEffect : ~m? +# 35| v35_6283(void) = ^IndirectReadSideEffect[-1] : &:r35_6279, ~m? +# 35| mu35_6284(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6279 +# 35| r35_6285(bool) = Constant[0] : +# 35| v35_6286(void) = ConditionalBranch : r35_6285 #-----| False -> Block 449 #-----| True -> Block 1026 -# 1366| Block 449 -# 1366| r1366_1(glval) = VariableAddress[x449] : -# 1366| mu1366_2(String) = Uninitialized[x449] : &:r1366_1 -# 1366| r1366_3(glval) = FunctionAddress[String] : -# 1366| v1366_4(void) = Call[String] : func:r1366_3, this:r1366_1 -# 1366| mu1366_5(unknown) = ^CallSideEffect : ~m? -# 1366| mu1366_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1366_1 -# 1367| r1367_1(glval) = VariableAddress[x449] : -# 1367| r1367_2(glval) = FunctionAddress[~String] : -# 1367| v1367_3(void) = Call[~String] : func:r1367_2, this:r1367_1 -# 1367| mu1367_4(unknown) = ^CallSideEffect : ~m? -# 1367| v1367_5(void) = ^IndirectReadSideEffect[-1] : &:r1367_1, ~m? -# 1367| mu1367_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1367_1 -# 1367| r1367_7(bool) = Constant[0] : -# 1367| v1367_8(void) = ConditionalBranch : r1367_7 +# 35| Block 449 +# 35| r35_6287(glval) = VariableAddress[x449] : +# 35| mu35_6288(String) = Uninitialized[x449] : &:r35_6287 +# 35| r35_6289(glval) = FunctionAddress[String] : +# 35| v35_6290(void) = Call[String] : func:r35_6289, this:r35_6287 +# 35| mu35_6291(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6287 +# 35| r35_6293(glval) = VariableAddress[x449] : +# 35| r35_6294(glval) = FunctionAddress[~String] : +# 35| v35_6295(void) = Call[~String] : func:r35_6294, this:r35_6293 +# 35| mu35_6296(unknown) = ^CallSideEffect : ~m? +# 35| v35_6297(void) = ^IndirectReadSideEffect[-1] : &:r35_6293, ~m? +# 35| mu35_6298(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6293 +# 35| r35_6299(bool) = Constant[0] : +# 35| v35_6300(void) = ConditionalBranch : r35_6299 #-----| False -> Block 450 #-----| True -> Block 1026 -# 1369| Block 450 -# 1369| r1369_1(glval) = VariableAddress[x450] : -# 1369| mu1369_2(String) = Uninitialized[x450] : &:r1369_1 -# 1369| r1369_3(glval) = FunctionAddress[String] : -# 1369| v1369_4(void) = Call[String] : func:r1369_3, this:r1369_1 -# 1369| mu1369_5(unknown) = ^CallSideEffect : ~m? -# 1369| mu1369_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1369_1 -# 1370| r1370_1(glval) = VariableAddress[x450] : -# 1370| r1370_2(glval) = FunctionAddress[~String] : -# 1370| v1370_3(void) = Call[~String] : func:r1370_2, this:r1370_1 -# 1370| mu1370_4(unknown) = ^CallSideEffect : ~m? -# 1370| v1370_5(void) = ^IndirectReadSideEffect[-1] : &:r1370_1, ~m? -# 1370| mu1370_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1370_1 -# 1370| r1370_7(bool) = Constant[0] : -# 1370| v1370_8(void) = ConditionalBranch : r1370_7 +# 35| Block 450 +# 35| r35_6301(glval) = VariableAddress[x450] : +# 35| mu35_6302(String) = Uninitialized[x450] : &:r35_6301 +# 35| r35_6303(glval) = FunctionAddress[String] : +# 35| v35_6304(void) = Call[String] : func:r35_6303, this:r35_6301 +# 35| mu35_6305(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6301 +# 35| r35_6307(glval) = VariableAddress[x450] : +# 35| r35_6308(glval) = FunctionAddress[~String] : +# 35| v35_6309(void) = Call[~String] : func:r35_6308, this:r35_6307 +# 35| mu35_6310(unknown) = ^CallSideEffect : ~m? +# 35| v35_6311(void) = ^IndirectReadSideEffect[-1] : &:r35_6307, ~m? +# 35| mu35_6312(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6307 +# 35| r35_6313(bool) = Constant[0] : +# 35| v35_6314(void) = ConditionalBranch : r35_6313 #-----| False -> Block 451 #-----| True -> Block 1026 -# 1372| Block 451 -# 1372| r1372_1(glval) = VariableAddress[x451] : -# 1372| mu1372_2(String) = Uninitialized[x451] : &:r1372_1 -# 1372| r1372_3(glval) = FunctionAddress[String] : -# 1372| v1372_4(void) = Call[String] : func:r1372_3, this:r1372_1 -# 1372| mu1372_5(unknown) = ^CallSideEffect : ~m? -# 1372| mu1372_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1372_1 -# 1373| r1373_1(glval) = VariableAddress[x451] : -# 1373| r1373_2(glval) = FunctionAddress[~String] : -# 1373| v1373_3(void) = Call[~String] : func:r1373_2, this:r1373_1 -# 1373| mu1373_4(unknown) = ^CallSideEffect : ~m? -# 1373| v1373_5(void) = ^IndirectReadSideEffect[-1] : &:r1373_1, ~m? -# 1373| mu1373_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1373_1 -# 1373| r1373_7(bool) = Constant[0] : -# 1373| v1373_8(void) = ConditionalBranch : r1373_7 +# 35| Block 451 +# 35| r35_6315(glval) = VariableAddress[x451] : +# 35| mu35_6316(String) = Uninitialized[x451] : &:r35_6315 +# 35| r35_6317(glval) = FunctionAddress[String] : +# 35| v35_6318(void) = Call[String] : func:r35_6317, this:r35_6315 +# 35| mu35_6319(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6315 +# 35| r35_6321(glval) = VariableAddress[x451] : +# 35| r35_6322(glval) = FunctionAddress[~String] : +# 35| v35_6323(void) = Call[~String] : func:r35_6322, this:r35_6321 +# 35| mu35_6324(unknown) = ^CallSideEffect : ~m? +# 35| v35_6325(void) = ^IndirectReadSideEffect[-1] : &:r35_6321, ~m? +# 35| mu35_6326(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6321 +# 35| r35_6327(bool) = Constant[0] : +# 35| v35_6328(void) = ConditionalBranch : r35_6327 #-----| False -> Block 452 #-----| True -> Block 1026 -# 1375| Block 452 -# 1375| r1375_1(glval) = VariableAddress[x452] : -# 1375| mu1375_2(String) = Uninitialized[x452] : &:r1375_1 -# 1375| r1375_3(glval) = FunctionAddress[String] : -# 1375| v1375_4(void) = Call[String] : func:r1375_3, this:r1375_1 -# 1375| mu1375_5(unknown) = ^CallSideEffect : ~m? -# 1375| mu1375_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1375_1 -# 1376| r1376_1(glval) = VariableAddress[x452] : -# 1376| r1376_2(glval) = FunctionAddress[~String] : -# 1376| v1376_3(void) = Call[~String] : func:r1376_2, this:r1376_1 -# 1376| mu1376_4(unknown) = ^CallSideEffect : ~m? -# 1376| v1376_5(void) = ^IndirectReadSideEffect[-1] : &:r1376_1, ~m? -# 1376| mu1376_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 -# 1376| r1376_7(bool) = Constant[0] : -# 1376| v1376_8(void) = ConditionalBranch : r1376_7 +# 35| Block 452 +# 35| r35_6329(glval) = VariableAddress[x452] : +# 35| mu35_6330(String) = Uninitialized[x452] : &:r35_6329 +# 35| r35_6331(glval) = FunctionAddress[String] : +# 35| v35_6332(void) = Call[String] : func:r35_6331, this:r35_6329 +# 35| mu35_6333(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6329 +# 35| r35_6335(glval) = VariableAddress[x452] : +# 35| r35_6336(glval) = FunctionAddress[~String] : +# 35| v35_6337(void) = Call[~String] : func:r35_6336, this:r35_6335 +# 35| mu35_6338(unknown) = ^CallSideEffect : ~m? +# 35| v35_6339(void) = ^IndirectReadSideEffect[-1] : &:r35_6335, ~m? +# 35| mu35_6340(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6335 +# 35| r35_6341(bool) = Constant[0] : +# 35| v35_6342(void) = ConditionalBranch : r35_6341 #-----| False -> Block 453 #-----| True -> Block 1026 -# 1378| Block 453 -# 1378| r1378_1(glval) = VariableAddress[x453] : -# 1378| mu1378_2(String) = Uninitialized[x453] : &:r1378_1 -# 1378| r1378_3(glval) = FunctionAddress[String] : -# 1378| v1378_4(void) = Call[String] : func:r1378_3, this:r1378_1 -# 1378| mu1378_5(unknown) = ^CallSideEffect : ~m? -# 1378| mu1378_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1378_1 -# 1379| r1379_1(glval) = VariableAddress[x453] : -# 1379| r1379_2(glval) = FunctionAddress[~String] : -# 1379| v1379_3(void) = Call[~String] : func:r1379_2, this:r1379_1 -# 1379| mu1379_4(unknown) = ^CallSideEffect : ~m? -# 1379| v1379_5(void) = ^IndirectReadSideEffect[-1] : &:r1379_1, ~m? -# 1379| mu1379_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1379_1 -# 1379| r1379_7(bool) = Constant[0] : -# 1379| v1379_8(void) = ConditionalBranch : r1379_7 +# 35| Block 453 +# 35| r35_6343(glval) = VariableAddress[x453] : +# 35| mu35_6344(String) = Uninitialized[x453] : &:r35_6343 +# 35| r35_6345(glval) = FunctionAddress[String] : +# 35| v35_6346(void) = Call[String] : func:r35_6345, this:r35_6343 +# 35| mu35_6347(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6343 +# 35| r35_6349(glval) = VariableAddress[x453] : +# 35| r35_6350(glval) = FunctionAddress[~String] : +# 35| v35_6351(void) = Call[~String] : func:r35_6350, this:r35_6349 +# 35| mu35_6352(unknown) = ^CallSideEffect : ~m? +# 35| v35_6353(void) = ^IndirectReadSideEffect[-1] : &:r35_6349, ~m? +# 35| mu35_6354(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6349 +# 35| r35_6355(bool) = Constant[0] : +# 35| v35_6356(void) = ConditionalBranch : r35_6355 #-----| False -> Block 454 #-----| True -> Block 1026 -# 1381| Block 454 -# 1381| r1381_1(glval) = VariableAddress[x454] : -# 1381| mu1381_2(String) = Uninitialized[x454] : &:r1381_1 -# 1381| r1381_3(glval) = FunctionAddress[String] : -# 1381| v1381_4(void) = Call[String] : func:r1381_3, this:r1381_1 -# 1381| mu1381_5(unknown) = ^CallSideEffect : ~m? -# 1381| mu1381_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1381_1 -# 1382| r1382_1(glval) = VariableAddress[x454] : -# 1382| r1382_2(glval) = FunctionAddress[~String] : -# 1382| v1382_3(void) = Call[~String] : func:r1382_2, this:r1382_1 -# 1382| mu1382_4(unknown) = ^CallSideEffect : ~m? -# 1382| v1382_5(void) = ^IndirectReadSideEffect[-1] : &:r1382_1, ~m? -# 1382| mu1382_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1382_1 -# 1382| r1382_7(bool) = Constant[0] : -# 1382| v1382_8(void) = ConditionalBranch : r1382_7 +# 35| Block 454 +# 35| r35_6357(glval) = VariableAddress[x454] : +# 35| mu35_6358(String) = Uninitialized[x454] : &:r35_6357 +# 35| r35_6359(glval) = FunctionAddress[String] : +# 35| v35_6360(void) = Call[String] : func:r35_6359, this:r35_6357 +# 35| mu35_6361(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6362(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6357 +# 35| r35_6363(glval) = VariableAddress[x454] : +# 35| r35_6364(glval) = FunctionAddress[~String] : +# 35| v35_6365(void) = Call[~String] : func:r35_6364, this:r35_6363 +# 35| mu35_6366(unknown) = ^CallSideEffect : ~m? +# 35| v35_6367(void) = ^IndirectReadSideEffect[-1] : &:r35_6363, ~m? +# 35| mu35_6368(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6363 +# 35| r35_6369(bool) = Constant[0] : +# 35| v35_6370(void) = ConditionalBranch : r35_6369 #-----| False -> Block 455 #-----| True -> Block 1026 -# 1384| Block 455 -# 1384| r1384_1(glval) = VariableAddress[x455] : -# 1384| mu1384_2(String) = Uninitialized[x455] : &:r1384_1 -# 1384| r1384_3(glval) = FunctionAddress[String] : -# 1384| v1384_4(void) = Call[String] : func:r1384_3, this:r1384_1 -# 1384| mu1384_5(unknown) = ^CallSideEffect : ~m? -# 1384| mu1384_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1384_1 -# 1385| r1385_1(glval) = VariableAddress[x455] : -# 1385| r1385_2(glval) = FunctionAddress[~String] : -# 1385| v1385_3(void) = Call[~String] : func:r1385_2, this:r1385_1 -# 1385| mu1385_4(unknown) = ^CallSideEffect : ~m? -# 1385| v1385_5(void) = ^IndirectReadSideEffect[-1] : &:r1385_1, ~m? -# 1385| mu1385_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1385_1 -# 1385| r1385_7(bool) = Constant[0] : -# 1385| v1385_8(void) = ConditionalBranch : r1385_7 +# 35| Block 455 +# 35| r35_6371(glval) = VariableAddress[x455] : +# 35| mu35_6372(String) = Uninitialized[x455] : &:r35_6371 +# 35| r35_6373(glval) = FunctionAddress[String] : +# 35| v35_6374(void) = Call[String] : func:r35_6373, this:r35_6371 +# 35| mu35_6375(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6376(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6371 +# 35| r35_6377(glval) = VariableAddress[x455] : +# 35| r35_6378(glval) = FunctionAddress[~String] : +# 35| v35_6379(void) = Call[~String] : func:r35_6378, this:r35_6377 +# 35| mu35_6380(unknown) = ^CallSideEffect : ~m? +# 35| v35_6381(void) = ^IndirectReadSideEffect[-1] : &:r35_6377, ~m? +# 35| mu35_6382(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6377 +# 35| r35_6383(bool) = Constant[0] : +# 35| v35_6384(void) = ConditionalBranch : r35_6383 #-----| False -> Block 456 #-----| True -> Block 1026 -# 1387| Block 456 -# 1387| r1387_1(glval) = VariableAddress[x456] : -# 1387| mu1387_2(String) = Uninitialized[x456] : &:r1387_1 -# 1387| r1387_3(glval) = FunctionAddress[String] : -# 1387| v1387_4(void) = Call[String] : func:r1387_3, this:r1387_1 -# 1387| mu1387_5(unknown) = ^CallSideEffect : ~m? -# 1387| mu1387_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1387_1 -# 1388| r1388_1(glval) = VariableAddress[x456] : -# 1388| r1388_2(glval) = FunctionAddress[~String] : -# 1388| v1388_3(void) = Call[~String] : func:r1388_2, this:r1388_1 -# 1388| mu1388_4(unknown) = ^CallSideEffect : ~m? -# 1388| v1388_5(void) = ^IndirectReadSideEffect[-1] : &:r1388_1, ~m? -# 1388| mu1388_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1388_1 -# 1388| r1388_7(bool) = Constant[0] : -# 1388| v1388_8(void) = ConditionalBranch : r1388_7 +# 35| Block 456 +# 35| r35_6385(glval) = VariableAddress[x456] : +# 35| mu35_6386(String) = Uninitialized[x456] : &:r35_6385 +# 35| r35_6387(glval) = FunctionAddress[String] : +# 35| v35_6388(void) = Call[String] : func:r35_6387, this:r35_6385 +# 35| mu35_6389(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6390(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6385 +# 35| r35_6391(glval) = VariableAddress[x456] : +# 35| r35_6392(glval) = FunctionAddress[~String] : +# 35| v35_6393(void) = Call[~String] : func:r35_6392, this:r35_6391 +# 35| mu35_6394(unknown) = ^CallSideEffect : ~m? +# 35| v35_6395(void) = ^IndirectReadSideEffect[-1] : &:r35_6391, ~m? +# 35| mu35_6396(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6391 +# 35| r35_6397(bool) = Constant[0] : +# 35| v35_6398(void) = ConditionalBranch : r35_6397 #-----| False -> Block 457 #-----| True -> Block 1026 -# 1390| Block 457 -# 1390| r1390_1(glval) = VariableAddress[x457] : -# 1390| mu1390_2(String) = Uninitialized[x457] : &:r1390_1 -# 1390| r1390_3(glval) = FunctionAddress[String] : -# 1390| v1390_4(void) = Call[String] : func:r1390_3, this:r1390_1 -# 1390| mu1390_5(unknown) = ^CallSideEffect : ~m? -# 1390| mu1390_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1390_1 -# 1391| r1391_1(glval) = VariableAddress[x457] : -# 1391| r1391_2(glval) = FunctionAddress[~String] : -# 1391| v1391_3(void) = Call[~String] : func:r1391_2, this:r1391_1 -# 1391| mu1391_4(unknown) = ^CallSideEffect : ~m? -# 1391| v1391_5(void) = ^IndirectReadSideEffect[-1] : &:r1391_1, ~m? -# 1391| mu1391_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1391_1 -# 1391| r1391_7(bool) = Constant[0] : -# 1391| v1391_8(void) = ConditionalBranch : r1391_7 +# 35| Block 457 +# 35| r35_6399(glval) = VariableAddress[x457] : +# 35| mu35_6400(String) = Uninitialized[x457] : &:r35_6399 +# 35| r35_6401(glval) = FunctionAddress[String] : +# 35| v35_6402(void) = Call[String] : func:r35_6401, this:r35_6399 +# 35| mu35_6403(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6404(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6399 +# 35| r35_6405(glval) = VariableAddress[x457] : +# 35| r35_6406(glval) = FunctionAddress[~String] : +# 35| v35_6407(void) = Call[~String] : func:r35_6406, this:r35_6405 +# 35| mu35_6408(unknown) = ^CallSideEffect : ~m? +# 35| v35_6409(void) = ^IndirectReadSideEffect[-1] : &:r35_6405, ~m? +# 35| mu35_6410(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6405 +# 35| r35_6411(bool) = Constant[0] : +# 35| v35_6412(void) = ConditionalBranch : r35_6411 #-----| False -> Block 458 #-----| True -> Block 1026 -# 1393| Block 458 -# 1393| r1393_1(glval) = VariableAddress[x458] : -# 1393| mu1393_2(String) = Uninitialized[x458] : &:r1393_1 -# 1393| r1393_3(glval) = FunctionAddress[String] : -# 1393| v1393_4(void) = Call[String] : func:r1393_3, this:r1393_1 -# 1393| mu1393_5(unknown) = ^CallSideEffect : ~m? -# 1393| mu1393_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1393_1 -# 1394| r1394_1(glval) = VariableAddress[x458] : -# 1394| r1394_2(glval) = FunctionAddress[~String] : -# 1394| v1394_3(void) = Call[~String] : func:r1394_2, this:r1394_1 -# 1394| mu1394_4(unknown) = ^CallSideEffect : ~m? -# 1394| v1394_5(void) = ^IndirectReadSideEffect[-1] : &:r1394_1, ~m? -# 1394| mu1394_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1394_1 -# 1394| r1394_7(bool) = Constant[0] : -# 1394| v1394_8(void) = ConditionalBranch : r1394_7 +# 35| Block 458 +# 35| r35_6413(glval) = VariableAddress[x458] : +# 35| mu35_6414(String) = Uninitialized[x458] : &:r35_6413 +# 35| r35_6415(glval) = FunctionAddress[String] : +# 35| v35_6416(void) = Call[String] : func:r35_6415, this:r35_6413 +# 35| mu35_6417(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6418(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6413 +# 35| r35_6419(glval) = VariableAddress[x458] : +# 35| r35_6420(glval) = FunctionAddress[~String] : +# 35| v35_6421(void) = Call[~String] : func:r35_6420, this:r35_6419 +# 35| mu35_6422(unknown) = ^CallSideEffect : ~m? +# 35| v35_6423(void) = ^IndirectReadSideEffect[-1] : &:r35_6419, ~m? +# 35| mu35_6424(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6419 +# 35| r35_6425(bool) = Constant[0] : +# 35| v35_6426(void) = ConditionalBranch : r35_6425 #-----| False -> Block 459 #-----| True -> Block 1026 -# 1396| Block 459 -# 1396| r1396_1(glval) = VariableAddress[x459] : -# 1396| mu1396_2(String) = Uninitialized[x459] : &:r1396_1 -# 1396| r1396_3(glval) = FunctionAddress[String] : -# 1396| v1396_4(void) = Call[String] : func:r1396_3, this:r1396_1 -# 1396| mu1396_5(unknown) = ^CallSideEffect : ~m? -# 1396| mu1396_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1396_1 -# 1397| r1397_1(glval) = VariableAddress[x459] : -# 1397| r1397_2(glval) = FunctionAddress[~String] : -# 1397| v1397_3(void) = Call[~String] : func:r1397_2, this:r1397_1 -# 1397| mu1397_4(unknown) = ^CallSideEffect : ~m? -# 1397| v1397_5(void) = ^IndirectReadSideEffect[-1] : &:r1397_1, ~m? -# 1397| mu1397_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1397_1 -# 1397| r1397_7(bool) = Constant[0] : -# 1397| v1397_8(void) = ConditionalBranch : r1397_7 +# 35| Block 459 +# 35| r35_6427(glval) = VariableAddress[x459] : +# 35| mu35_6428(String) = Uninitialized[x459] : &:r35_6427 +# 35| r35_6429(glval) = FunctionAddress[String] : +# 35| v35_6430(void) = Call[String] : func:r35_6429, this:r35_6427 +# 35| mu35_6431(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6432(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6427 +# 35| r35_6433(glval) = VariableAddress[x459] : +# 35| r35_6434(glval) = FunctionAddress[~String] : +# 35| v35_6435(void) = Call[~String] : func:r35_6434, this:r35_6433 +# 35| mu35_6436(unknown) = ^CallSideEffect : ~m? +# 35| v35_6437(void) = ^IndirectReadSideEffect[-1] : &:r35_6433, ~m? +# 35| mu35_6438(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6433 +# 35| r35_6439(bool) = Constant[0] : +# 35| v35_6440(void) = ConditionalBranch : r35_6439 #-----| False -> Block 460 #-----| True -> Block 1026 -# 1399| Block 460 -# 1399| r1399_1(glval) = VariableAddress[x460] : -# 1399| mu1399_2(String) = Uninitialized[x460] : &:r1399_1 -# 1399| r1399_3(glval) = FunctionAddress[String] : -# 1399| v1399_4(void) = Call[String] : func:r1399_3, this:r1399_1 -# 1399| mu1399_5(unknown) = ^CallSideEffect : ~m? -# 1399| mu1399_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 -# 1400| r1400_1(glval) = VariableAddress[x460] : -# 1400| r1400_2(glval) = FunctionAddress[~String] : -# 1400| v1400_3(void) = Call[~String] : func:r1400_2, this:r1400_1 -# 1400| mu1400_4(unknown) = ^CallSideEffect : ~m? -# 1400| v1400_5(void) = ^IndirectReadSideEffect[-1] : &:r1400_1, ~m? -# 1400| mu1400_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1400_1 -# 1400| r1400_7(bool) = Constant[0] : -# 1400| v1400_8(void) = ConditionalBranch : r1400_7 +# 35| Block 460 +# 35| r35_6441(glval) = VariableAddress[x460] : +# 35| mu35_6442(String) = Uninitialized[x460] : &:r35_6441 +# 35| r35_6443(glval) = FunctionAddress[String] : +# 35| v35_6444(void) = Call[String] : func:r35_6443, this:r35_6441 +# 35| mu35_6445(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6446(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6441 +# 35| r35_6447(glval) = VariableAddress[x460] : +# 35| r35_6448(glval) = FunctionAddress[~String] : +# 35| v35_6449(void) = Call[~String] : func:r35_6448, this:r35_6447 +# 35| mu35_6450(unknown) = ^CallSideEffect : ~m? +# 35| v35_6451(void) = ^IndirectReadSideEffect[-1] : &:r35_6447, ~m? +# 35| mu35_6452(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6447 +# 35| r35_6453(bool) = Constant[0] : +# 35| v35_6454(void) = ConditionalBranch : r35_6453 #-----| False -> Block 461 #-----| True -> Block 1026 -# 1402| Block 461 -# 1402| r1402_1(glval) = VariableAddress[x461] : -# 1402| mu1402_2(String) = Uninitialized[x461] : &:r1402_1 -# 1402| r1402_3(glval) = FunctionAddress[String] : -# 1402| v1402_4(void) = Call[String] : func:r1402_3, this:r1402_1 -# 1402| mu1402_5(unknown) = ^CallSideEffect : ~m? -# 1402| mu1402_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1402_1 -# 1403| r1403_1(glval) = VariableAddress[x461] : -# 1403| r1403_2(glval) = FunctionAddress[~String] : -# 1403| v1403_3(void) = Call[~String] : func:r1403_2, this:r1403_1 -# 1403| mu1403_4(unknown) = ^CallSideEffect : ~m? -# 1403| v1403_5(void) = ^IndirectReadSideEffect[-1] : &:r1403_1, ~m? -# 1403| mu1403_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1403_1 -# 1403| r1403_7(bool) = Constant[0] : -# 1403| v1403_8(void) = ConditionalBranch : r1403_7 +# 35| Block 461 +# 35| r35_6455(glval) = VariableAddress[x461] : +# 35| mu35_6456(String) = Uninitialized[x461] : &:r35_6455 +# 35| r35_6457(glval) = FunctionAddress[String] : +# 35| v35_6458(void) = Call[String] : func:r35_6457, this:r35_6455 +# 35| mu35_6459(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6460(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6455 +# 35| r35_6461(glval) = VariableAddress[x461] : +# 35| r35_6462(glval) = FunctionAddress[~String] : +# 35| v35_6463(void) = Call[~String] : func:r35_6462, this:r35_6461 +# 35| mu35_6464(unknown) = ^CallSideEffect : ~m? +# 35| v35_6465(void) = ^IndirectReadSideEffect[-1] : &:r35_6461, ~m? +# 35| mu35_6466(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6461 +# 35| r35_6467(bool) = Constant[0] : +# 35| v35_6468(void) = ConditionalBranch : r35_6467 #-----| False -> Block 462 #-----| True -> Block 1026 -# 1405| Block 462 -# 1405| r1405_1(glval) = VariableAddress[x462] : -# 1405| mu1405_2(String) = Uninitialized[x462] : &:r1405_1 -# 1405| r1405_3(glval) = FunctionAddress[String] : -# 1405| v1405_4(void) = Call[String] : func:r1405_3, this:r1405_1 -# 1405| mu1405_5(unknown) = ^CallSideEffect : ~m? -# 1405| mu1405_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1405_1 -# 1406| r1406_1(glval) = VariableAddress[x462] : -# 1406| r1406_2(glval) = FunctionAddress[~String] : -# 1406| v1406_3(void) = Call[~String] : func:r1406_2, this:r1406_1 -# 1406| mu1406_4(unknown) = ^CallSideEffect : ~m? -# 1406| v1406_5(void) = ^IndirectReadSideEffect[-1] : &:r1406_1, ~m? -# 1406| mu1406_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1406_1 -# 1406| r1406_7(bool) = Constant[0] : -# 1406| v1406_8(void) = ConditionalBranch : r1406_7 +# 35| Block 462 +# 35| r35_6469(glval) = VariableAddress[x462] : +# 35| mu35_6470(String) = Uninitialized[x462] : &:r35_6469 +# 35| r35_6471(glval) = FunctionAddress[String] : +# 35| v35_6472(void) = Call[String] : func:r35_6471, this:r35_6469 +# 35| mu35_6473(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6474(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6469 +# 35| r35_6475(glval) = VariableAddress[x462] : +# 35| r35_6476(glval) = FunctionAddress[~String] : +# 35| v35_6477(void) = Call[~String] : func:r35_6476, this:r35_6475 +# 35| mu35_6478(unknown) = ^CallSideEffect : ~m? +# 35| v35_6479(void) = ^IndirectReadSideEffect[-1] : &:r35_6475, ~m? +# 35| mu35_6480(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6475 +# 35| r35_6481(bool) = Constant[0] : +# 35| v35_6482(void) = ConditionalBranch : r35_6481 #-----| False -> Block 463 #-----| True -> Block 1026 -# 1408| Block 463 -# 1408| r1408_1(glval) = VariableAddress[x463] : -# 1408| mu1408_2(String) = Uninitialized[x463] : &:r1408_1 -# 1408| r1408_3(glval) = FunctionAddress[String] : -# 1408| v1408_4(void) = Call[String] : func:r1408_3, this:r1408_1 -# 1408| mu1408_5(unknown) = ^CallSideEffect : ~m? -# 1408| mu1408_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1408_1 -# 1409| r1409_1(glval) = VariableAddress[x463] : -# 1409| r1409_2(glval) = FunctionAddress[~String] : -# 1409| v1409_3(void) = Call[~String] : func:r1409_2, this:r1409_1 -# 1409| mu1409_4(unknown) = ^CallSideEffect : ~m? -# 1409| v1409_5(void) = ^IndirectReadSideEffect[-1] : &:r1409_1, ~m? -# 1409| mu1409_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1409_1 -# 1409| r1409_7(bool) = Constant[0] : -# 1409| v1409_8(void) = ConditionalBranch : r1409_7 +# 35| Block 463 +# 35| r35_6483(glval) = VariableAddress[x463] : +# 35| mu35_6484(String) = Uninitialized[x463] : &:r35_6483 +# 35| r35_6485(glval) = FunctionAddress[String] : +# 35| v35_6486(void) = Call[String] : func:r35_6485, this:r35_6483 +# 35| mu35_6487(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6488(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6483 +# 35| r35_6489(glval) = VariableAddress[x463] : +# 35| r35_6490(glval) = FunctionAddress[~String] : +# 35| v35_6491(void) = Call[~String] : func:r35_6490, this:r35_6489 +# 35| mu35_6492(unknown) = ^CallSideEffect : ~m? +# 35| v35_6493(void) = ^IndirectReadSideEffect[-1] : &:r35_6489, ~m? +# 35| mu35_6494(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6489 +# 35| r35_6495(bool) = Constant[0] : +# 35| v35_6496(void) = ConditionalBranch : r35_6495 #-----| False -> Block 464 #-----| True -> Block 1026 -# 1411| Block 464 -# 1411| r1411_1(glval) = VariableAddress[x464] : -# 1411| mu1411_2(String) = Uninitialized[x464] : &:r1411_1 -# 1411| r1411_3(glval) = FunctionAddress[String] : -# 1411| v1411_4(void) = Call[String] : func:r1411_3, this:r1411_1 -# 1411| mu1411_5(unknown) = ^CallSideEffect : ~m? -# 1411| mu1411_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1411_1 -# 1412| r1412_1(glval) = VariableAddress[x464] : -# 1412| r1412_2(glval) = FunctionAddress[~String] : -# 1412| v1412_3(void) = Call[~String] : func:r1412_2, this:r1412_1 -# 1412| mu1412_4(unknown) = ^CallSideEffect : ~m? -# 1412| v1412_5(void) = ^IndirectReadSideEffect[-1] : &:r1412_1, ~m? -# 1412| mu1412_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1412_1 -# 1412| r1412_7(bool) = Constant[0] : -# 1412| v1412_8(void) = ConditionalBranch : r1412_7 +# 35| Block 464 +# 35| r35_6497(glval) = VariableAddress[x464] : +# 35| mu35_6498(String) = Uninitialized[x464] : &:r35_6497 +# 35| r35_6499(glval) = FunctionAddress[String] : +# 35| v35_6500(void) = Call[String] : func:r35_6499, this:r35_6497 +# 35| mu35_6501(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6502(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6497 +# 35| r35_6503(glval) = VariableAddress[x464] : +# 35| r35_6504(glval) = FunctionAddress[~String] : +# 35| v35_6505(void) = Call[~String] : func:r35_6504, this:r35_6503 +# 35| mu35_6506(unknown) = ^CallSideEffect : ~m? +# 35| v35_6507(void) = ^IndirectReadSideEffect[-1] : &:r35_6503, ~m? +# 35| mu35_6508(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6503 +# 35| r35_6509(bool) = Constant[0] : +# 35| v35_6510(void) = ConditionalBranch : r35_6509 #-----| False -> Block 465 #-----| True -> Block 1026 -# 1414| Block 465 -# 1414| r1414_1(glval) = VariableAddress[x465] : -# 1414| mu1414_2(String) = Uninitialized[x465] : &:r1414_1 -# 1414| r1414_3(glval) = FunctionAddress[String] : -# 1414| v1414_4(void) = Call[String] : func:r1414_3, this:r1414_1 -# 1414| mu1414_5(unknown) = ^CallSideEffect : ~m? -# 1414| mu1414_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1414_1 -# 1415| r1415_1(glval) = VariableAddress[x465] : -# 1415| r1415_2(glval) = FunctionAddress[~String] : -# 1415| v1415_3(void) = Call[~String] : func:r1415_2, this:r1415_1 -# 1415| mu1415_4(unknown) = ^CallSideEffect : ~m? -# 1415| v1415_5(void) = ^IndirectReadSideEffect[-1] : &:r1415_1, ~m? -# 1415| mu1415_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1415_1 -# 1415| r1415_7(bool) = Constant[0] : -# 1415| v1415_8(void) = ConditionalBranch : r1415_7 +# 35| Block 465 +# 35| r35_6511(glval) = VariableAddress[x465] : +# 35| mu35_6512(String) = Uninitialized[x465] : &:r35_6511 +# 35| r35_6513(glval) = FunctionAddress[String] : +# 35| v35_6514(void) = Call[String] : func:r35_6513, this:r35_6511 +# 35| mu35_6515(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6516(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6511 +# 35| r35_6517(glval) = VariableAddress[x465] : +# 35| r35_6518(glval) = FunctionAddress[~String] : +# 35| v35_6519(void) = Call[~String] : func:r35_6518, this:r35_6517 +# 35| mu35_6520(unknown) = ^CallSideEffect : ~m? +# 35| v35_6521(void) = ^IndirectReadSideEffect[-1] : &:r35_6517, ~m? +# 35| mu35_6522(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6517 +# 35| r35_6523(bool) = Constant[0] : +# 35| v35_6524(void) = ConditionalBranch : r35_6523 #-----| False -> Block 466 #-----| True -> Block 1026 -# 1417| Block 466 -# 1417| r1417_1(glval) = VariableAddress[x466] : -# 1417| mu1417_2(String) = Uninitialized[x466] : &:r1417_1 -# 1417| r1417_3(glval) = FunctionAddress[String] : -# 1417| v1417_4(void) = Call[String] : func:r1417_3, this:r1417_1 -# 1417| mu1417_5(unknown) = ^CallSideEffect : ~m? -# 1417| mu1417_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1417_1 -# 1418| r1418_1(glval) = VariableAddress[x466] : -# 1418| r1418_2(glval) = FunctionAddress[~String] : -# 1418| v1418_3(void) = Call[~String] : func:r1418_2, this:r1418_1 -# 1418| mu1418_4(unknown) = ^CallSideEffect : ~m? -# 1418| v1418_5(void) = ^IndirectReadSideEffect[-1] : &:r1418_1, ~m? -# 1418| mu1418_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1418_1 -# 1418| r1418_7(bool) = Constant[0] : -# 1418| v1418_8(void) = ConditionalBranch : r1418_7 +# 35| Block 466 +# 35| r35_6525(glval) = VariableAddress[x466] : +# 35| mu35_6526(String) = Uninitialized[x466] : &:r35_6525 +# 35| r35_6527(glval) = FunctionAddress[String] : +# 35| v35_6528(void) = Call[String] : func:r35_6527, this:r35_6525 +# 35| mu35_6529(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6530(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6525 +# 35| r35_6531(glval) = VariableAddress[x466] : +# 35| r35_6532(glval) = FunctionAddress[~String] : +# 35| v35_6533(void) = Call[~String] : func:r35_6532, this:r35_6531 +# 35| mu35_6534(unknown) = ^CallSideEffect : ~m? +# 35| v35_6535(void) = ^IndirectReadSideEffect[-1] : &:r35_6531, ~m? +# 35| mu35_6536(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6531 +# 35| r35_6537(bool) = Constant[0] : +# 35| v35_6538(void) = ConditionalBranch : r35_6537 #-----| False -> Block 467 #-----| True -> Block 1026 -# 1420| Block 467 -# 1420| r1420_1(glval) = VariableAddress[x467] : -# 1420| mu1420_2(String) = Uninitialized[x467] : &:r1420_1 -# 1420| r1420_3(glval) = FunctionAddress[String] : -# 1420| v1420_4(void) = Call[String] : func:r1420_3, this:r1420_1 -# 1420| mu1420_5(unknown) = ^CallSideEffect : ~m? -# 1420| mu1420_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1420_1 -# 1421| r1421_1(glval) = VariableAddress[x467] : -# 1421| r1421_2(glval) = FunctionAddress[~String] : -# 1421| v1421_3(void) = Call[~String] : func:r1421_2, this:r1421_1 -# 1421| mu1421_4(unknown) = ^CallSideEffect : ~m? -# 1421| v1421_5(void) = ^IndirectReadSideEffect[-1] : &:r1421_1, ~m? -# 1421| mu1421_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_1 -# 1421| r1421_7(bool) = Constant[0] : -# 1421| v1421_8(void) = ConditionalBranch : r1421_7 +# 35| Block 467 +# 35| r35_6539(glval) = VariableAddress[x467] : +# 35| mu35_6540(String) = Uninitialized[x467] : &:r35_6539 +# 35| r35_6541(glval) = FunctionAddress[String] : +# 35| v35_6542(void) = Call[String] : func:r35_6541, this:r35_6539 +# 35| mu35_6543(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6544(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6539 +# 35| r35_6545(glval) = VariableAddress[x467] : +# 35| r35_6546(glval) = FunctionAddress[~String] : +# 35| v35_6547(void) = Call[~String] : func:r35_6546, this:r35_6545 +# 35| mu35_6548(unknown) = ^CallSideEffect : ~m? +# 35| v35_6549(void) = ^IndirectReadSideEffect[-1] : &:r35_6545, ~m? +# 35| mu35_6550(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6545 +# 35| r35_6551(bool) = Constant[0] : +# 35| v35_6552(void) = ConditionalBranch : r35_6551 #-----| False -> Block 468 #-----| True -> Block 1026 -# 1423| Block 468 -# 1423| r1423_1(glval) = VariableAddress[x468] : -# 1423| mu1423_2(String) = Uninitialized[x468] : &:r1423_1 -# 1423| r1423_3(glval) = FunctionAddress[String] : -# 1423| v1423_4(void) = Call[String] : func:r1423_3, this:r1423_1 -# 1423| mu1423_5(unknown) = ^CallSideEffect : ~m? -# 1423| mu1423_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1423_1 -# 1424| r1424_1(glval) = VariableAddress[x468] : -# 1424| r1424_2(glval) = FunctionAddress[~String] : -# 1424| v1424_3(void) = Call[~String] : func:r1424_2, this:r1424_1 -# 1424| mu1424_4(unknown) = ^CallSideEffect : ~m? -# 1424| v1424_5(void) = ^IndirectReadSideEffect[-1] : &:r1424_1, ~m? -# 1424| mu1424_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1424_1 -# 1424| r1424_7(bool) = Constant[0] : -# 1424| v1424_8(void) = ConditionalBranch : r1424_7 +# 35| Block 468 +# 35| r35_6553(glval) = VariableAddress[x468] : +# 35| mu35_6554(String) = Uninitialized[x468] : &:r35_6553 +# 35| r35_6555(glval) = FunctionAddress[String] : +# 35| v35_6556(void) = Call[String] : func:r35_6555, this:r35_6553 +# 35| mu35_6557(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6558(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6553 +# 35| r35_6559(glval) = VariableAddress[x468] : +# 35| r35_6560(glval) = FunctionAddress[~String] : +# 35| v35_6561(void) = Call[~String] : func:r35_6560, this:r35_6559 +# 35| mu35_6562(unknown) = ^CallSideEffect : ~m? +# 35| v35_6563(void) = ^IndirectReadSideEffect[-1] : &:r35_6559, ~m? +# 35| mu35_6564(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6559 +# 35| r35_6565(bool) = Constant[0] : +# 35| v35_6566(void) = ConditionalBranch : r35_6565 #-----| False -> Block 469 #-----| True -> Block 1026 -# 1426| Block 469 -# 1426| r1426_1(glval) = VariableAddress[x469] : -# 1426| mu1426_2(String) = Uninitialized[x469] : &:r1426_1 -# 1426| r1426_3(glval) = FunctionAddress[String] : -# 1426| v1426_4(void) = Call[String] : func:r1426_3, this:r1426_1 -# 1426| mu1426_5(unknown) = ^CallSideEffect : ~m? -# 1426| mu1426_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_1 -# 1427| r1427_1(glval) = VariableAddress[x469] : -# 1427| r1427_2(glval) = FunctionAddress[~String] : -# 1427| v1427_3(void) = Call[~String] : func:r1427_2, this:r1427_1 -# 1427| mu1427_4(unknown) = ^CallSideEffect : ~m? -# 1427| v1427_5(void) = ^IndirectReadSideEffect[-1] : &:r1427_1, ~m? -# 1427| mu1427_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1427_1 -# 1427| r1427_7(bool) = Constant[0] : -# 1427| v1427_8(void) = ConditionalBranch : r1427_7 +# 35| Block 469 +# 35| r35_6567(glval) = VariableAddress[x469] : +# 35| mu35_6568(String) = Uninitialized[x469] : &:r35_6567 +# 35| r35_6569(glval) = FunctionAddress[String] : +# 35| v35_6570(void) = Call[String] : func:r35_6569, this:r35_6567 +# 35| mu35_6571(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6572(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6567 +# 35| r35_6573(glval) = VariableAddress[x469] : +# 35| r35_6574(glval) = FunctionAddress[~String] : +# 35| v35_6575(void) = Call[~String] : func:r35_6574, this:r35_6573 +# 35| mu35_6576(unknown) = ^CallSideEffect : ~m? +# 35| v35_6577(void) = ^IndirectReadSideEffect[-1] : &:r35_6573, ~m? +# 35| mu35_6578(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6573 +# 35| r35_6579(bool) = Constant[0] : +# 35| v35_6580(void) = ConditionalBranch : r35_6579 #-----| False -> Block 470 #-----| True -> Block 1026 -# 1429| Block 470 -# 1429| r1429_1(glval) = VariableAddress[x470] : -# 1429| mu1429_2(String) = Uninitialized[x470] : &:r1429_1 -# 1429| r1429_3(glval) = FunctionAddress[String] : -# 1429| v1429_4(void) = Call[String] : func:r1429_3, this:r1429_1 -# 1429| mu1429_5(unknown) = ^CallSideEffect : ~m? -# 1429| mu1429_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1429_1 -# 1430| r1430_1(glval) = VariableAddress[x470] : -# 1430| r1430_2(glval) = FunctionAddress[~String] : -# 1430| v1430_3(void) = Call[~String] : func:r1430_2, this:r1430_1 -# 1430| mu1430_4(unknown) = ^CallSideEffect : ~m? -# 1430| v1430_5(void) = ^IndirectReadSideEffect[-1] : &:r1430_1, ~m? -# 1430| mu1430_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1430_1 -# 1430| r1430_7(bool) = Constant[0] : -# 1430| v1430_8(void) = ConditionalBranch : r1430_7 +# 35| Block 470 +# 35| r35_6581(glval) = VariableAddress[x470] : +# 35| mu35_6582(String) = Uninitialized[x470] : &:r35_6581 +# 35| r35_6583(glval) = FunctionAddress[String] : +# 35| v35_6584(void) = Call[String] : func:r35_6583, this:r35_6581 +# 35| mu35_6585(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6586(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6581 +# 35| r35_6587(glval) = VariableAddress[x470] : +# 35| r35_6588(glval) = FunctionAddress[~String] : +# 35| v35_6589(void) = Call[~String] : func:r35_6588, this:r35_6587 +# 35| mu35_6590(unknown) = ^CallSideEffect : ~m? +# 35| v35_6591(void) = ^IndirectReadSideEffect[-1] : &:r35_6587, ~m? +# 35| mu35_6592(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6587 +# 35| r35_6593(bool) = Constant[0] : +# 35| v35_6594(void) = ConditionalBranch : r35_6593 #-----| False -> Block 471 #-----| True -> Block 1026 -# 1432| Block 471 -# 1432| r1432_1(glval) = VariableAddress[x471] : -# 1432| mu1432_2(String) = Uninitialized[x471] : &:r1432_1 -# 1432| r1432_3(glval) = FunctionAddress[String] : -# 1432| v1432_4(void) = Call[String] : func:r1432_3, this:r1432_1 -# 1432| mu1432_5(unknown) = ^CallSideEffect : ~m? -# 1432| mu1432_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1432_1 -# 1433| r1433_1(glval) = VariableAddress[x471] : -# 1433| r1433_2(glval) = FunctionAddress[~String] : -# 1433| v1433_3(void) = Call[~String] : func:r1433_2, this:r1433_1 -# 1433| mu1433_4(unknown) = ^CallSideEffect : ~m? -# 1433| v1433_5(void) = ^IndirectReadSideEffect[-1] : &:r1433_1, ~m? -# 1433| mu1433_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1433_1 -# 1433| r1433_7(bool) = Constant[0] : -# 1433| v1433_8(void) = ConditionalBranch : r1433_7 +# 35| Block 471 +# 35| r35_6595(glval) = VariableAddress[x471] : +# 35| mu35_6596(String) = Uninitialized[x471] : &:r35_6595 +# 35| r35_6597(glval) = FunctionAddress[String] : +# 35| v35_6598(void) = Call[String] : func:r35_6597, this:r35_6595 +# 35| mu35_6599(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6600(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6595 +# 35| r35_6601(glval) = VariableAddress[x471] : +# 35| r35_6602(glval) = FunctionAddress[~String] : +# 35| v35_6603(void) = Call[~String] : func:r35_6602, this:r35_6601 +# 35| mu35_6604(unknown) = ^CallSideEffect : ~m? +# 35| v35_6605(void) = ^IndirectReadSideEffect[-1] : &:r35_6601, ~m? +# 35| mu35_6606(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6601 +# 35| r35_6607(bool) = Constant[0] : +# 35| v35_6608(void) = ConditionalBranch : r35_6607 #-----| False -> Block 472 #-----| True -> Block 1026 -# 1435| Block 472 -# 1435| r1435_1(glval) = VariableAddress[x472] : -# 1435| mu1435_2(String) = Uninitialized[x472] : &:r1435_1 -# 1435| r1435_3(glval) = FunctionAddress[String] : -# 1435| v1435_4(void) = Call[String] : func:r1435_3, this:r1435_1 -# 1435| mu1435_5(unknown) = ^CallSideEffect : ~m? -# 1435| mu1435_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1435_1 -# 1436| r1436_1(glval) = VariableAddress[x472] : -# 1436| r1436_2(glval) = FunctionAddress[~String] : -# 1436| v1436_3(void) = Call[~String] : func:r1436_2, this:r1436_1 -# 1436| mu1436_4(unknown) = ^CallSideEffect : ~m? -# 1436| v1436_5(void) = ^IndirectReadSideEffect[-1] : &:r1436_1, ~m? -# 1436| mu1436_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1436_1 -# 1436| r1436_7(bool) = Constant[0] : -# 1436| v1436_8(void) = ConditionalBranch : r1436_7 +# 35| Block 472 +# 35| r35_6609(glval) = VariableAddress[x472] : +# 35| mu35_6610(String) = Uninitialized[x472] : &:r35_6609 +# 35| r35_6611(glval) = FunctionAddress[String] : +# 35| v35_6612(void) = Call[String] : func:r35_6611, this:r35_6609 +# 35| mu35_6613(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6614(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6609 +# 35| r35_6615(glval) = VariableAddress[x472] : +# 35| r35_6616(glval) = FunctionAddress[~String] : +# 35| v35_6617(void) = Call[~String] : func:r35_6616, this:r35_6615 +# 35| mu35_6618(unknown) = ^CallSideEffect : ~m? +# 35| v35_6619(void) = ^IndirectReadSideEffect[-1] : &:r35_6615, ~m? +# 35| mu35_6620(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6615 +# 35| r35_6621(bool) = Constant[0] : +# 35| v35_6622(void) = ConditionalBranch : r35_6621 #-----| False -> Block 473 #-----| True -> Block 1026 -# 1438| Block 473 -# 1438| r1438_1(glval) = VariableAddress[x473] : -# 1438| mu1438_2(String) = Uninitialized[x473] : &:r1438_1 -# 1438| r1438_3(glval) = FunctionAddress[String] : -# 1438| v1438_4(void) = Call[String] : func:r1438_3, this:r1438_1 -# 1438| mu1438_5(unknown) = ^CallSideEffect : ~m? -# 1438| mu1438_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1438_1 -# 1439| r1439_1(glval) = VariableAddress[x473] : -# 1439| r1439_2(glval) = FunctionAddress[~String] : -# 1439| v1439_3(void) = Call[~String] : func:r1439_2, this:r1439_1 -# 1439| mu1439_4(unknown) = ^CallSideEffect : ~m? -# 1439| v1439_5(void) = ^IndirectReadSideEffect[-1] : &:r1439_1, ~m? -# 1439| mu1439_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1439_1 -# 1439| r1439_7(bool) = Constant[0] : -# 1439| v1439_8(void) = ConditionalBranch : r1439_7 +# 35| Block 473 +# 35| r35_6623(glval) = VariableAddress[x473] : +# 35| mu35_6624(String) = Uninitialized[x473] : &:r35_6623 +# 35| r35_6625(glval) = FunctionAddress[String] : +# 35| v35_6626(void) = Call[String] : func:r35_6625, this:r35_6623 +# 35| mu35_6627(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6628(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6623 +# 35| r35_6629(glval) = VariableAddress[x473] : +# 35| r35_6630(glval) = FunctionAddress[~String] : +# 35| v35_6631(void) = Call[~String] : func:r35_6630, this:r35_6629 +# 35| mu35_6632(unknown) = ^CallSideEffect : ~m? +# 35| v35_6633(void) = ^IndirectReadSideEffect[-1] : &:r35_6629, ~m? +# 35| mu35_6634(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6629 +# 35| r35_6635(bool) = Constant[0] : +# 35| v35_6636(void) = ConditionalBranch : r35_6635 #-----| False -> Block 474 #-----| True -> Block 1026 -# 1441| Block 474 -# 1441| r1441_1(glval) = VariableAddress[x474] : -# 1441| mu1441_2(String) = Uninitialized[x474] : &:r1441_1 -# 1441| r1441_3(glval) = FunctionAddress[String] : -# 1441| v1441_4(void) = Call[String] : func:r1441_3, this:r1441_1 -# 1441| mu1441_5(unknown) = ^CallSideEffect : ~m? -# 1441| mu1441_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1441_1 -# 1442| r1442_1(glval) = VariableAddress[x474] : -# 1442| r1442_2(glval) = FunctionAddress[~String] : -# 1442| v1442_3(void) = Call[~String] : func:r1442_2, this:r1442_1 -# 1442| mu1442_4(unknown) = ^CallSideEffect : ~m? -# 1442| v1442_5(void) = ^IndirectReadSideEffect[-1] : &:r1442_1, ~m? -# 1442| mu1442_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1442_1 -# 1442| r1442_7(bool) = Constant[0] : -# 1442| v1442_8(void) = ConditionalBranch : r1442_7 +# 35| Block 474 +# 35| r35_6637(glval) = VariableAddress[x474] : +# 35| mu35_6638(String) = Uninitialized[x474] : &:r35_6637 +# 35| r35_6639(glval) = FunctionAddress[String] : +# 35| v35_6640(void) = Call[String] : func:r35_6639, this:r35_6637 +# 35| mu35_6641(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6642(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6637 +# 35| r35_6643(glval) = VariableAddress[x474] : +# 35| r35_6644(glval) = FunctionAddress[~String] : +# 35| v35_6645(void) = Call[~String] : func:r35_6644, this:r35_6643 +# 35| mu35_6646(unknown) = ^CallSideEffect : ~m? +# 35| v35_6647(void) = ^IndirectReadSideEffect[-1] : &:r35_6643, ~m? +# 35| mu35_6648(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6643 +# 35| r35_6649(bool) = Constant[0] : +# 35| v35_6650(void) = ConditionalBranch : r35_6649 #-----| False -> Block 475 #-----| True -> Block 1026 -# 1444| Block 475 -# 1444| r1444_1(glval) = VariableAddress[x475] : -# 1444| mu1444_2(String) = Uninitialized[x475] : &:r1444_1 -# 1444| r1444_3(glval) = FunctionAddress[String] : -# 1444| v1444_4(void) = Call[String] : func:r1444_3, this:r1444_1 -# 1444| mu1444_5(unknown) = ^CallSideEffect : ~m? -# 1444| mu1444_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1444_1 -# 1445| r1445_1(glval) = VariableAddress[x475] : -# 1445| r1445_2(glval) = FunctionAddress[~String] : -# 1445| v1445_3(void) = Call[~String] : func:r1445_2, this:r1445_1 -# 1445| mu1445_4(unknown) = ^CallSideEffect : ~m? -# 1445| v1445_5(void) = ^IndirectReadSideEffect[-1] : &:r1445_1, ~m? -# 1445| mu1445_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1445_1 -# 1445| r1445_7(bool) = Constant[0] : -# 1445| v1445_8(void) = ConditionalBranch : r1445_7 +# 35| Block 475 +# 35| r35_6651(glval) = VariableAddress[x475] : +# 35| mu35_6652(String) = Uninitialized[x475] : &:r35_6651 +# 35| r35_6653(glval) = FunctionAddress[String] : +# 35| v35_6654(void) = Call[String] : func:r35_6653, this:r35_6651 +# 35| mu35_6655(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6656(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6651 +# 35| r35_6657(glval) = VariableAddress[x475] : +# 35| r35_6658(glval) = FunctionAddress[~String] : +# 35| v35_6659(void) = Call[~String] : func:r35_6658, this:r35_6657 +# 35| mu35_6660(unknown) = ^CallSideEffect : ~m? +# 35| v35_6661(void) = ^IndirectReadSideEffect[-1] : &:r35_6657, ~m? +# 35| mu35_6662(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6657 +# 35| r35_6663(bool) = Constant[0] : +# 35| v35_6664(void) = ConditionalBranch : r35_6663 #-----| False -> Block 476 #-----| True -> Block 1026 -# 1447| Block 476 -# 1447| r1447_1(glval) = VariableAddress[x476] : -# 1447| mu1447_2(String) = Uninitialized[x476] : &:r1447_1 -# 1447| r1447_3(glval) = FunctionAddress[String] : -# 1447| v1447_4(void) = Call[String] : func:r1447_3, this:r1447_1 -# 1447| mu1447_5(unknown) = ^CallSideEffect : ~m? -# 1447| mu1447_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1447_1 -# 1448| r1448_1(glval) = VariableAddress[x476] : -# 1448| r1448_2(glval) = FunctionAddress[~String] : -# 1448| v1448_3(void) = Call[~String] : func:r1448_2, this:r1448_1 -# 1448| mu1448_4(unknown) = ^CallSideEffect : ~m? -# 1448| v1448_5(void) = ^IndirectReadSideEffect[-1] : &:r1448_1, ~m? -# 1448| mu1448_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1448_1 -# 1448| r1448_7(bool) = Constant[0] : -# 1448| v1448_8(void) = ConditionalBranch : r1448_7 +# 35| Block 476 +# 35| r35_6665(glval) = VariableAddress[x476] : +# 35| mu35_6666(String) = Uninitialized[x476] : &:r35_6665 +# 35| r35_6667(glval) = FunctionAddress[String] : +# 35| v35_6668(void) = Call[String] : func:r35_6667, this:r35_6665 +# 35| mu35_6669(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6670(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6665 +# 35| r35_6671(glval) = VariableAddress[x476] : +# 35| r35_6672(glval) = FunctionAddress[~String] : +# 35| v35_6673(void) = Call[~String] : func:r35_6672, this:r35_6671 +# 35| mu35_6674(unknown) = ^CallSideEffect : ~m? +# 35| v35_6675(void) = ^IndirectReadSideEffect[-1] : &:r35_6671, ~m? +# 35| mu35_6676(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6671 +# 35| r35_6677(bool) = Constant[0] : +# 35| v35_6678(void) = ConditionalBranch : r35_6677 #-----| False -> Block 477 #-----| True -> Block 1026 -# 1450| Block 477 -# 1450| r1450_1(glval) = VariableAddress[x477] : -# 1450| mu1450_2(String) = Uninitialized[x477] : &:r1450_1 -# 1450| r1450_3(glval) = FunctionAddress[String] : -# 1450| v1450_4(void) = Call[String] : func:r1450_3, this:r1450_1 -# 1450| mu1450_5(unknown) = ^CallSideEffect : ~m? -# 1450| mu1450_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1450_1 -# 1451| r1451_1(glval) = VariableAddress[x477] : -# 1451| r1451_2(glval) = FunctionAddress[~String] : -# 1451| v1451_3(void) = Call[~String] : func:r1451_2, this:r1451_1 -# 1451| mu1451_4(unknown) = ^CallSideEffect : ~m? -# 1451| v1451_5(void) = ^IndirectReadSideEffect[-1] : &:r1451_1, ~m? -# 1451| mu1451_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1451_1 -# 1451| r1451_7(bool) = Constant[0] : -# 1451| v1451_8(void) = ConditionalBranch : r1451_7 +# 35| Block 477 +# 35| r35_6679(glval) = VariableAddress[x477] : +# 35| mu35_6680(String) = Uninitialized[x477] : &:r35_6679 +# 35| r35_6681(glval) = FunctionAddress[String] : +# 35| v35_6682(void) = Call[String] : func:r35_6681, this:r35_6679 +# 35| mu35_6683(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6684(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6679 +# 35| r35_6685(glval) = VariableAddress[x477] : +# 35| r35_6686(glval) = FunctionAddress[~String] : +# 35| v35_6687(void) = Call[~String] : func:r35_6686, this:r35_6685 +# 35| mu35_6688(unknown) = ^CallSideEffect : ~m? +# 35| v35_6689(void) = ^IndirectReadSideEffect[-1] : &:r35_6685, ~m? +# 35| mu35_6690(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6685 +# 35| r35_6691(bool) = Constant[0] : +# 35| v35_6692(void) = ConditionalBranch : r35_6691 #-----| False -> Block 478 #-----| True -> Block 1026 -# 1453| Block 478 -# 1453| r1453_1(glval) = VariableAddress[x478] : -# 1453| mu1453_2(String) = Uninitialized[x478] : &:r1453_1 -# 1453| r1453_3(glval) = FunctionAddress[String] : -# 1453| v1453_4(void) = Call[String] : func:r1453_3, this:r1453_1 -# 1453| mu1453_5(unknown) = ^CallSideEffect : ~m? -# 1453| mu1453_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1453_1 -# 1454| r1454_1(glval) = VariableAddress[x478] : -# 1454| r1454_2(glval) = FunctionAddress[~String] : -# 1454| v1454_3(void) = Call[~String] : func:r1454_2, this:r1454_1 -# 1454| mu1454_4(unknown) = ^CallSideEffect : ~m? -# 1454| v1454_5(void) = ^IndirectReadSideEffect[-1] : &:r1454_1, ~m? -# 1454| mu1454_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1454_1 -# 1454| r1454_7(bool) = Constant[0] : -# 1454| v1454_8(void) = ConditionalBranch : r1454_7 +# 35| Block 478 +# 35| r35_6693(glval) = VariableAddress[x478] : +# 35| mu35_6694(String) = Uninitialized[x478] : &:r35_6693 +# 35| r35_6695(glval) = FunctionAddress[String] : +# 35| v35_6696(void) = Call[String] : func:r35_6695, this:r35_6693 +# 35| mu35_6697(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6698(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6693 +# 35| r35_6699(glval) = VariableAddress[x478] : +# 35| r35_6700(glval) = FunctionAddress[~String] : +# 35| v35_6701(void) = Call[~String] : func:r35_6700, this:r35_6699 +# 35| mu35_6702(unknown) = ^CallSideEffect : ~m? +# 35| v35_6703(void) = ^IndirectReadSideEffect[-1] : &:r35_6699, ~m? +# 35| mu35_6704(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6699 +# 35| r35_6705(bool) = Constant[0] : +# 35| v35_6706(void) = ConditionalBranch : r35_6705 #-----| False -> Block 479 #-----| True -> Block 1026 -# 1456| Block 479 -# 1456| r1456_1(glval) = VariableAddress[x479] : -# 1456| mu1456_2(String) = Uninitialized[x479] : &:r1456_1 -# 1456| r1456_3(glval) = FunctionAddress[String] : -# 1456| v1456_4(void) = Call[String] : func:r1456_3, this:r1456_1 -# 1456| mu1456_5(unknown) = ^CallSideEffect : ~m? -# 1456| mu1456_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1456_1 -# 1457| r1457_1(glval) = VariableAddress[x479] : -# 1457| r1457_2(glval) = FunctionAddress[~String] : -# 1457| v1457_3(void) = Call[~String] : func:r1457_2, this:r1457_1 -# 1457| mu1457_4(unknown) = ^CallSideEffect : ~m? -# 1457| v1457_5(void) = ^IndirectReadSideEffect[-1] : &:r1457_1, ~m? -# 1457| mu1457_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1457_1 -# 1457| r1457_7(bool) = Constant[0] : -# 1457| v1457_8(void) = ConditionalBranch : r1457_7 +# 35| Block 479 +# 35| r35_6707(glval) = VariableAddress[x479] : +# 35| mu35_6708(String) = Uninitialized[x479] : &:r35_6707 +# 35| r35_6709(glval) = FunctionAddress[String] : +# 35| v35_6710(void) = Call[String] : func:r35_6709, this:r35_6707 +# 35| mu35_6711(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6712(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6707 +# 35| r35_6713(glval) = VariableAddress[x479] : +# 35| r35_6714(glval) = FunctionAddress[~String] : +# 35| v35_6715(void) = Call[~String] : func:r35_6714, this:r35_6713 +# 35| mu35_6716(unknown) = ^CallSideEffect : ~m? +# 35| v35_6717(void) = ^IndirectReadSideEffect[-1] : &:r35_6713, ~m? +# 35| mu35_6718(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6713 +# 35| r35_6719(bool) = Constant[0] : +# 35| v35_6720(void) = ConditionalBranch : r35_6719 #-----| False -> Block 480 #-----| True -> Block 1026 -# 1459| Block 480 -# 1459| r1459_1(glval) = VariableAddress[x480] : -# 1459| mu1459_2(String) = Uninitialized[x480] : &:r1459_1 -# 1459| r1459_3(glval) = FunctionAddress[String] : -# 1459| v1459_4(void) = Call[String] : func:r1459_3, this:r1459_1 -# 1459| mu1459_5(unknown) = ^CallSideEffect : ~m? -# 1459| mu1459_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1459_1 -# 1460| r1460_1(glval) = VariableAddress[x480] : -# 1460| r1460_2(glval) = FunctionAddress[~String] : -# 1460| v1460_3(void) = Call[~String] : func:r1460_2, this:r1460_1 -# 1460| mu1460_4(unknown) = ^CallSideEffect : ~m? -# 1460| v1460_5(void) = ^IndirectReadSideEffect[-1] : &:r1460_1, ~m? -# 1460| mu1460_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1460_1 -# 1460| r1460_7(bool) = Constant[0] : -# 1460| v1460_8(void) = ConditionalBranch : r1460_7 +# 35| Block 480 +# 35| r35_6721(glval) = VariableAddress[x480] : +# 35| mu35_6722(String) = Uninitialized[x480] : &:r35_6721 +# 35| r35_6723(glval) = FunctionAddress[String] : +# 35| v35_6724(void) = Call[String] : func:r35_6723, this:r35_6721 +# 35| mu35_6725(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6726(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6721 +# 35| r35_6727(glval) = VariableAddress[x480] : +# 35| r35_6728(glval) = FunctionAddress[~String] : +# 35| v35_6729(void) = Call[~String] : func:r35_6728, this:r35_6727 +# 35| mu35_6730(unknown) = ^CallSideEffect : ~m? +# 35| v35_6731(void) = ^IndirectReadSideEffect[-1] : &:r35_6727, ~m? +# 35| mu35_6732(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6727 +# 35| r35_6733(bool) = Constant[0] : +# 35| v35_6734(void) = ConditionalBranch : r35_6733 #-----| False -> Block 481 #-----| True -> Block 1026 -# 1462| Block 481 -# 1462| r1462_1(glval) = VariableAddress[x481] : -# 1462| mu1462_2(String) = Uninitialized[x481] : &:r1462_1 -# 1462| r1462_3(glval) = FunctionAddress[String] : -# 1462| v1462_4(void) = Call[String] : func:r1462_3, this:r1462_1 -# 1462| mu1462_5(unknown) = ^CallSideEffect : ~m? -# 1462| mu1462_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1462_1 -# 1463| r1463_1(glval) = VariableAddress[x481] : -# 1463| r1463_2(glval) = FunctionAddress[~String] : -# 1463| v1463_3(void) = Call[~String] : func:r1463_2, this:r1463_1 -# 1463| mu1463_4(unknown) = ^CallSideEffect : ~m? -# 1463| v1463_5(void) = ^IndirectReadSideEffect[-1] : &:r1463_1, ~m? -# 1463| mu1463_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1463_1 -# 1463| r1463_7(bool) = Constant[0] : -# 1463| v1463_8(void) = ConditionalBranch : r1463_7 +# 35| Block 481 +# 35| r35_6735(glval) = VariableAddress[x481] : +# 35| mu35_6736(String) = Uninitialized[x481] : &:r35_6735 +# 35| r35_6737(glval) = FunctionAddress[String] : +# 35| v35_6738(void) = Call[String] : func:r35_6737, this:r35_6735 +# 35| mu35_6739(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6740(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6735 +# 35| r35_6741(glval) = VariableAddress[x481] : +# 35| r35_6742(glval) = FunctionAddress[~String] : +# 35| v35_6743(void) = Call[~String] : func:r35_6742, this:r35_6741 +# 35| mu35_6744(unknown) = ^CallSideEffect : ~m? +# 35| v35_6745(void) = ^IndirectReadSideEffect[-1] : &:r35_6741, ~m? +# 35| mu35_6746(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6741 +# 35| r35_6747(bool) = Constant[0] : +# 35| v35_6748(void) = ConditionalBranch : r35_6747 #-----| False -> Block 482 #-----| True -> Block 1026 -# 1465| Block 482 -# 1465| r1465_1(glval) = VariableAddress[x482] : -# 1465| mu1465_2(String) = Uninitialized[x482] : &:r1465_1 -# 1465| r1465_3(glval) = FunctionAddress[String] : -# 1465| v1465_4(void) = Call[String] : func:r1465_3, this:r1465_1 -# 1465| mu1465_5(unknown) = ^CallSideEffect : ~m? -# 1465| mu1465_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1465_1 -# 1466| r1466_1(glval) = VariableAddress[x482] : -# 1466| r1466_2(glval) = FunctionAddress[~String] : -# 1466| v1466_3(void) = Call[~String] : func:r1466_2, this:r1466_1 -# 1466| mu1466_4(unknown) = ^CallSideEffect : ~m? -# 1466| v1466_5(void) = ^IndirectReadSideEffect[-1] : &:r1466_1, ~m? -# 1466| mu1466_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1466_1 -# 1466| r1466_7(bool) = Constant[0] : -# 1466| v1466_8(void) = ConditionalBranch : r1466_7 +# 35| Block 482 +# 35| r35_6749(glval) = VariableAddress[x482] : +# 35| mu35_6750(String) = Uninitialized[x482] : &:r35_6749 +# 35| r35_6751(glval) = FunctionAddress[String] : +# 35| v35_6752(void) = Call[String] : func:r35_6751, this:r35_6749 +# 35| mu35_6753(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6754(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6749 +# 35| r35_6755(glval) = VariableAddress[x482] : +# 35| r35_6756(glval) = FunctionAddress[~String] : +# 35| v35_6757(void) = Call[~String] : func:r35_6756, this:r35_6755 +# 35| mu35_6758(unknown) = ^CallSideEffect : ~m? +# 35| v35_6759(void) = ^IndirectReadSideEffect[-1] : &:r35_6755, ~m? +# 35| mu35_6760(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6755 +# 35| r35_6761(bool) = Constant[0] : +# 35| v35_6762(void) = ConditionalBranch : r35_6761 #-----| False -> Block 483 #-----| True -> Block 1026 -# 1468| Block 483 -# 1468| r1468_1(glval) = VariableAddress[x483] : -# 1468| mu1468_2(String) = Uninitialized[x483] : &:r1468_1 -# 1468| r1468_3(glval) = FunctionAddress[String] : -# 1468| v1468_4(void) = Call[String] : func:r1468_3, this:r1468_1 -# 1468| mu1468_5(unknown) = ^CallSideEffect : ~m? -# 1468| mu1468_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1468_1 -# 1469| r1469_1(glval) = VariableAddress[x483] : -# 1469| r1469_2(glval) = FunctionAddress[~String] : -# 1469| v1469_3(void) = Call[~String] : func:r1469_2, this:r1469_1 -# 1469| mu1469_4(unknown) = ^CallSideEffect : ~m? -# 1469| v1469_5(void) = ^IndirectReadSideEffect[-1] : &:r1469_1, ~m? -# 1469| mu1469_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1469_1 -# 1469| r1469_7(bool) = Constant[0] : -# 1469| v1469_8(void) = ConditionalBranch : r1469_7 +# 35| Block 483 +# 35| r35_6763(glval) = VariableAddress[x483] : +# 35| mu35_6764(String) = Uninitialized[x483] : &:r35_6763 +# 35| r35_6765(glval) = FunctionAddress[String] : +# 35| v35_6766(void) = Call[String] : func:r35_6765, this:r35_6763 +# 35| mu35_6767(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6768(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6763 +# 35| r35_6769(glval) = VariableAddress[x483] : +# 35| r35_6770(glval) = FunctionAddress[~String] : +# 35| v35_6771(void) = Call[~String] : func:r35_6770, this:r35_6769 +# 35| mu35_6772(unknown) = ^CallSideEffect : ~m? +# 35| v35_6773(void) = ^IndirectReadSideEffect[-1] : &:r35_6769, ~m? +# 35| mu35_6774(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6769 +# 35| r35_6775(bool) = Constant[0] : +# 35| v35_6776(void) = ConditionalBranch : r35_6775 #-----| False -> Block 484 #-----| True -> Block 1026 -# 1471| Block 484 -# 1471| r1471_1(glval) = VariableAddress[x484] : -# 1471| mu1471_2(String) = Uninitialized[x484] : &:r1471_1 -# 1471| r1471_3(glval) = FunctionAddress[String] : -# 1471| v1471_4(void) = Call[String] : func:r1471_3, this:r1471_1 -# 1471| mu1471_5(unknown) = ^CallSideEffect : ~m? -# 1471| mu1471_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1471_1 -# 1472| r1472_1(glval) = VariableAddress[x484] : -# 1472| r1472_2(glval) = FunctionAddress[~String] : -# 1472| v1472_3(void) = Call[~String] : func:r1472_2, this:r1472_1 -# 1472| mu1472_4(unknown) = ^CallSideEffect : ~m? -# 1472| v1472_5(void) = ^IndirectReadSideEffect[-1] : &:r1472_1, ~m? -# 1472| mu1472_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1472_1 -# 1472| r1472_7(bool) = Constant[0] : -# 1472| v1472_8(void) = ConditionalBranch : r1472_7 +# 35| Block 484 +# 35| r35_6777(glval) = VariableAddress[x484] : +# 35| mu35_6778(String) = Uninitialized[x484] : &:r35_6777 +# 35| r35_6779(glval) = FunctionAddress[String] : +# 35| v35_6780(void) = Call[String] : func:r35_6779, this:r35_6777 +# 35| mu35_6781(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6782(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6777 +# 35| r35_6783(glval) = VariableAddress[x484] : +# 35| r35_6784(glval) = FunctionAddress[~String] : +# 35| v35_6785(void) = Call[~String] : func:r35_6784, this:r35_6783 +# 35| mu35_6786(unknown) = ^CallSideEffect : ~m? +# 35| v35_6787(void) = ^IndirectReadSideEffect[-1] : &:r35_6783, ~m? +# 35| mu35_6788(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6783 +# 35| r35_6789(bool) = Constant[0] : +# 35| v35_6790(void) = ConditionalBranch : r35_6789 #-----| False -> Block 485 #-----| True -> Block 1026 -# 1474| Block 485 -# 1474| r1474_1(glval) = VariableAddress[x485] : -# 1474| mu1474_2(String) = Uninitialized[x485] : &:r1474_1 -# 1474| r1474_3(glval) = FunctionAddress[String] : -# 1474| v1474_4(void) = Call[String] : func:r1474_3, this:r1474_1 -# 1474| mu1474_5(unknown) = ^CallSideEffect : ~m? -# 1474| mu1474_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1474_1 -# 1475| r1475_1(glval) = VariableAddress[x485] : -# 1475| r1475_2(glval) = FunctionAddress[~String] : -# 1475| v1475_3(void) = Call[~String] : func:r1475_2, this:r1475_1 -# 1475| mu1475_4(unknown) = ^CallSideEffect : ~m? -# 1475| v1475_5(void) = ^IndirectReadSideEffect[-1] : &:r1475_1, ~m? -# 1475| mu1475_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1475_1 -# 1475| r1475_7(bool) = Constant[0] : -# 1475| v1475_8(void) = ConditionalBranch : r1475_7 +# 35| Block 485 +# 35| r35_6791(glval) = VariableAddress[x485] : +# 35| mu35_6792(String) = Uninitialized[x485] : &:r35_6791 +# 35| r35_6793(glval) = FunctionAddress[String] : +# 35| v35_6794(void) = Call[String] : func:r35_6793, this:r35_6791 +# 35| mu35_6795(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6796(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6791 +# 35| r35_6797(glval) = VariableAddress[x485] : +# 35| r35_6798(glval) = FunctionAddress[~String] : +# 35| v35_6799(void) = Call[~String] : func:r35_6798, this:r35_6797 +# 35| mu35_6800(unknown) = ^CallSideEffect : ~m? +# 35| v35_6801(void) = ^IndirectReadSideEffect[-1] : &:r35_6797, ~m? +# 35| mu35_6802(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6797 +# 35| r35_6803(bool) = Constant[0] : +# 35| v35_6804(void) = ConditionalBranch : r35_6803 #-----| False -> Block 486 #-----| True -> Block 1026 -# 1477| Block 486 -# 1477| r1477_1(glval) = VariableAddress[x486] : -# 1477| mu1477_2(String) = Uninitialized[x486] : &:r1477_1 -# 1477| r1477_3(glval) = FunctionAddress[String] : -# 1477| v1477_4(void) = Call[String] : func:r1477_3, this:r1477_1 -# 1477| mu1477_5(unknown) = ^CallSideEffect : ~m? -# 1477| mu1477_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1477_1 -# 1478| r1478_1(glval) = VariableAddress[x486] : -# 1478| r1478_2(glval) = FunctionAddress[~String] : -# 1478| v1478_3(void) = Call[~String] : func:r1478_2, this:r1478_1 -# 1478| mu1478_4(unknown) = ^CallSideEffect : ~m? -# 1478| v1478_5(void) = ^IndirectReadSideEffect[-1] : &:r1478_1, ~m? -# 1478| mu1478_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1478_1 -# 1478| r1478_7(bool) = Constant[0] : -# 1478| v1478_8(void) = ConditionalBranch : r1478_7 +# 35| Block 486 +# 35| r35_6805(glval) = VariableAddress[x486] : +# 35| mu35_6806(String) = Uninitialized[x486] : &:r35_6805 +# 35| r35_6807(glval) = FunctionAddress[String] : +# 35| v35_6808(void) = Call[String] : func:r35_6807, this:r35_6805 +# 35| mu35_6809(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6810(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6805 +# 35| r35_6811(glval) = VariableAddress[x486] : +# 35| r35_6812(glval) = FunctionAddress[~String] : +# 35| v35_6813(void) = Call[~String] : func:r35_6812, this:r35_6811 +# 35| mu35_6814(unknown) = ^CallSideEffect : ~m? +# 35| v35_6815(void) = ^IndirectReadSideEffect[-1] : &:r35_6811, ~m? +# 35| mu35_6816(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6811 +# 35| r35_6817(bool) = Constant[0] : +# 35| v35_6818(void) = ConditionalBranch : r35_6817 #-----| False -> Block 487 #-----| True -> Block 1026 -# 1480| Block 487 -# 1480| r1480_1(glval) = VariableAddress[x487] : -# 1480| mu1480_2(String) = Uninitialized[x487] : &:r1480_1 -# 1480| r1480_3(glval) = FunctionAddress[String] : -# 1480| v1480_4(void) = Call[String] : func:r1480_3, this:r1480_1 -# 1480| mu1480_5(unknown) = ^CallSideEffect : ~m? -# 1480| mu1480_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1480_1 -# 1481| r1481_1(glval) = VariableAddress[x487] : -# 1481| r1481_2(glval) = FunctionAddress[~String] : -# 1481| v1481_3(void) = Call[~String] : func:r1481_2, this:r1481_1 -# 1481| mu1481_4(unknown) = ^CallSideEffect : ~m? -# 1481| v1481_5(void) = ^IndirectReadSideEffect[-1] : &:r1481_1, ~m? -# 1481| mu1481_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1481_1 -# 1481| r1481_7(bool) = Constant[0] : -# 1481| v1481_8(void) = ConditionalBranch : r1481_7 +# 35| Block 487 +# 35| r35_6819(glval) = VariableAddress[x487] : +# 35| mu35_6820(String) = Uninitialized[x487] : &:r35_6819 +# 35| r35_6821(glval) = FunctionAddress[String] : +# 35| v35_6822(void) = Call[String] : func:r35_6821, this:r35_6819 +# 35| mu35_6823(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6824(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6819 +# 35| r35_6825(glval) = VariableAddress[x487] : +# 35| r35_6826(glval) = FunctionAddress[~String] : +# 35| v35_6827(void) = Call[~String] : func:r35_6826, this:r35_6825 +# 35| mu35_6828(unknown) = ^CallSideEffect : ~m? +# 35| v35_6829(void) = ^IndirectReadSideEffect[-1] : &:r35_6825, ~m? +# 35| mu35_6830(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6825 +# 35| r35_6831(bool) = Constant[0] : +# 35| v35_6832(void) = ConditionalBranch : r35_6831 #-----| False -> Block 488 #-----| True -> Block 1026 -# 1483| Block 488 -# 1483| r1483_1(glval) = VariableAddress[x488] : -# 1483| mu1483_2(String) = Uninitialized[x488] : &:r1483_1 -# 1483| r1483_3(glval) = FunctionAddress[String] : -# 1483| v1483_4(void) = Call[String] : func:r1483_3, this:r1483_1 -# 1483| mu1483_5(unknown) = ^CallSideEffect : ~m? -# 1483| mu1483_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1483_1 -# 1484| r1484_1(glval) = VariableAddress[x488] : -# 1484| r1484_2(glval) = FunctionAddress[~String] : -# 1484| v1484_3(void) = Call[~String] : func:r1484_2, this:r1484_1 -# 1484| mu1484_4(unknown) = ^CallSideEffect : ~m? -# 1484| v1484_5(void) = ^IndirectReadSideEffect[-1] : &:r1484_1, ~m? -# 1484| mu1484_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1484_1 -# 1484| r1484_7(bool) = Constant[0] : -# 1484| v1484_8(void) = ConditionalBranch : r1484_7 +# 35| Block 488 +# 35| r35_6833(glval) = VariableAddress[x488] : +# 35| mu35_6834(String) = Uninitialized[x488] : &:r35_6833 +# 35| r35_6835(glval) = FunctionAddress[String] : +# 35| v35_6836(void) = Call[String] : func:r35_6835, this:r35_6833 +# 35| mu35_6837(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6838(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6833 +# 35| r35_6839(glval) = VariableAddress[x488] : +# 35| r35_6840(glval) = FunctionAddress[~String] : +# 35| v35_6841(void) = Call[~String] : func:r35_6840, this:r35_6839 +# 35| mu35_6842(unknown) = ^CallSideEffect : ~m? +# 35| v35_6843(void) = ^IndirectReadSideEffect[-1] : &:r35_6839, ~m? +# 35| mu35_6844(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6839 +# 35| r35_6845(bool) = Constant[0] : +# 35| v35_6846(void) = ConditionalBranch : r35_6845 #-----| False -> Block 489 #-----| True -> Block 1026 -# 1486| Block 489 -# 1486| r1486_1(glval) = VariableAddress[x489] : -# 1486| mu1486_2(String) = Uninitialized[x489] : &:r1486_1 -# 1486| r1486_3(glval) = FunctionAddress[String] : -# 1486| v1486_4(void) = Call[String] : func:r1486_3, this:r1486_1 -# 1486| mu1486_5(unknown) = ^CallSideEffect : ~m? -# 1486| mu1486_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1486_1 -# 1487| r1487_1(glval) = VariableAddress[x489] : -# 1487| r1487_2(glval) = FunctionAddress[~String] : -# 1487| v1487_3(void) = Call[~String] : func:r1487_2, this:r1487_1 -# 1487| mu1487_4(unknown) = ^CallSideEffect : ~m? -# 1487| v1487_5(void) = ^IndirectReadSideEffect[-1] : &:r1487_1, ~m? -# 1487| mu1487_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1487_1 -# 1487| r1487_7(bool) = Constant[0] : -# 1487| v1487_8(void) = ConditionalBranch : r1487_7 +# 35| Block 489 +# 35| r35_6847(glval) = VariableAddress[x489] : +# 35| mu35_6848(String) = Uninitialized[x489] : &:r35_6847 +# 35| r35_6849(glval) = FunctionAddress[String] : +# 35| v35_6850(void) = Call[String] : func:r35_6849, this:r35_6847 +# 35| mu35_6851(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6852(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6847 +# 35| r35_6853(glval) = VariableAddress[x489] : +# 35| r35_6854(glval) = FunctionAddress[~String] : +# 35| v35_6855(void) = Call[~String] : func:r35_6854, this:r35_6853 +# 35| mu35_6856(unknown) = ^CallSideEffect : ~m? +# 35| v35_6857(void) = ^IndirectReadSideEffect[-1] : &:r35_6853, ~m? +# 35| mu35_6858(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6853 +# 35| r35_6859(bool) = Constant[0] : +# 35| v35_6860(void) = ConditionalBranch : r35_6859 #-----| False -> Block 490 #-----| True -> Block 1026 -# 1489| Block 490 -# 1489| r1489_1(glval) = VariableAddress[x490] : -# 1489| mu1489_2(String) = Uninitialized[x490] : &:r1489_1 -# 1489| r1489_3(glval) = FunctionAddress[String] : -# 1489| v1489_4(void) = Call[String] : func:r1489_3, this:r1489_1 -# 1489| mu1489_5(unknown) = ^CallSideEffect : ~m? -# 1489| mu1489_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1489_1 -# 1490| r1490_1(glval) = VariableAddress[x490] : -# 1490| r1490_2(glval) = FunctionAddress[~String] : -# 1490| v1490_3(void) = Call[~String] : func:r1490_2, this:r1490_1 -# 1490| mu1490_4(unknown) = ^CallSideEffect : ~m? -# 1490| v1490_5(void) = ^IndirectReadSideEffect[-1] : &:r1490_1, ~m? -# 1490| mu1490_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1490_1 -# 1490| r1490_7(bool) = Constant[0] : -# 1490| v1490_8(void) = ConditionalBranch : r1490_7 +# 35| Block 490 +# 35| r35_6861(glval) = VariableAddress[x490] : +# 35| mu35_6862(String) = Uninitialized[x490] : &:r35_6861 +# 35| r35_6863(glval) = FunctionAddress[String] : +# 35| v35_6864(void) = Call[String] : func:r35_6863, this:r35_6861 +# 35| mu35_6865(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6866(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6861 +# 35| r35_6867(glval) = VariableAddress[x490] : +# 35| r35_6868(glval) = FunctionAddress[~String] : +# 35| v35_6869(void) = Call[~String] : func:r35_6868, this:r35_6867 +# 35| mu35_6870(unknown) = ^CallSideEffect : ~m? +# 35| v35_6871(void) = ^IndirectReadSideEffect[-1] : &:r35_6867, ~m? +# 35| mu35_6872(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6867 +# 35| r35_6873(bool) = Constant[0] : +# 35| v35_6874(void) = ConditionalBranch : r35_6873 #-----| False -> Block 491 #-----| True -> Block 1026 -# 1492| Block 491 -# 1492| r1492_1(glval) = VariableAddress[x491] : -# 1492| mu1492_2(String) = Uninitialized[x491] : &:r1492_1 -# 1492| r1492_3(glval) = FunctionAddress[String] : -# 1492| v1492_4(void) = Call[String] : func:r1492_3, this:r1492_1 -# 1492| mu1492_5(unknown) = ^CallSideEffect : ~m? -# 1492| mu1492_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1492_1 -# 1493| r1493_1(glval) = VariableAddress[x491] : -# 1493| r1493_2(glval) = FunctionAddress[~String] : -# 1493| v1493_3(void) = Call[~String] : func:r1493_2, this:r1493_1 -# 1493| mu1493_4(unknown) = ^CallSideEffect : ~m? -# 1493| v1493_5(void) = ^IndirectReadSideEffect[-1] : &:r1493_1, ~m? -# 1493| mu1493_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1493_1 -# 1493| r1493_7(bool) = Constant[0] : -# 1493| v1493_8(void) = ConditionalBranch : r1493_7 +# 35| Block 491 +# 35| r35_6875(glval) = VariableAddress[x491] : +# 35| mu35_6876(String) = Uninitialized[x491] : &:r35_6875 +# 35| r35_6877(glval) = FunctionAddress[String] : +# 35| v35_6878(void) = Call[String] : func:r35_6877, this:r35_6875 +# 35| mu35_6879(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6880(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6875 +# 35| r35_6881(glval) = VariableAddress[x491] : +# 35| r35_6882(glval) = FunctionAddress[~String] : +# 35| v35_6883(void) = Call[~String] : func:r35_6882, this:r35_6881 +# 35| mu35_6884(unknown) = ^CallSideEffect : ~m? +# 35| v35_6885(void) = ^IndirectReadSideEffect[-1] : &:r35_6881, ~m? +# 35| mu35_6886(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6881 +# 35| r35_6887(bool) = Constant[0] : +# 35| v35_6888(void) = ConditionalBranch : r35_6887 #-----| False -> Block 492 #-----| True -> Block 1026 -# 1495| Block 492 -# 1495| r1495_1(glval) = VariableAddress[x492] : -# 1495| mu1495_2(String) = Uninitialized[x492] : &:r1495_1 -# 1495| r1495_3(glval) = FunctionAddress[String] : -# 1495| v1495_4(void) = Call[String] : func:r1495_3, this:r1495_1 -# 1495| mu1495_5(unknown) = ^CallSideEffect : ~m? -# 1495| mu1495_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1495_1 -# 1496| r1496_1(glval) = VariableAddress[x492] : -# 1496| r1496_2(glval) = FunctionAddress[~String] : -# 1496| v1496_3(void) = Call[~String] : func:r1496_2, this:r1496_1 -# 1496| mu1496_4(unknown) = ^CallSideEffect : ~m? -# 1496| v1496_5(void) = ^IndirectReadSideEffect[-1] : &:r1496_1, ~m? -# 1496| mu1496_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1496_1 -# 1496| r1496_7(bool) = Constant[0] : -# 1496| v1496_8(void) = ConditionalBranch : r1496_7 +# 35| Block 492 +# 35| r35_6889(glval) = VariableAddress[x492] : +# 35| mu35_6890(String) = Uninitialized[x492] : &:r35_6889 +# 35| r35_6891(glval) = FunctionAddress[String] : +# 35| v35_6892(void) = Call[String] : func:r35_6891, this:r35_6889 +# 35| mu35_6893(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6894(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6889 +# 35| r35_6895(glval) = VariableAddress[x492] : +# 35| r35_6896(glval) = FunctionAddress[~String] : +# 35| v35_6897(void) = Call[~String] : func:r35_6896, this:r35_6895 +# 35| mu35_6898(unknown) = ^CallSideEffect : ~m? +# 35| v35_6899(void) = ^IndirectReadSideEffect[-1] : &:r35_6895, ~m? +# 35| mu35_6900(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6895 +# 35| r35_6901(bool) = Constant[0] : +# 35| v35_6902(void) = ConditionalBranch : r35_6901 #-----| False -> Block 493 #-----| True -> Block 1026 -# 1498| Block 493 -# 1498| r1498_1(glval) = VariableAddress[x493] : -# 1498| mu1498_2(String) = Uninitialized[x493] : &:r1498_1 -# 1498| r1498_3(glval) = FunctionAddress[String] : -# 1498| v1498_4(void) = Call[String] : func:r1498_3, this:r1498_1 -# 1498| mu1498_5(unknown) = ^CallSideEffect : ~m? -# 1498| mu1498_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1498_1 -# 1499| r1499_1(glval) = VariableAddress[x493] : -# 1499| r1499_2(glval) = FunctionAddress[~String] : -# 1499| v1499_3(void) = Call[~String] : func:r1499_2, this:r1499_1 -# 1499| mu1499_4(unknown) = ^CallSideEffect : ~m? -# 1499| v1499_5(void) = ^IndirectReadSideEffect[-1] : &:r1499_1, ~m? -# 1499| mu1499_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1499_1 -# 1499| r1499_7(bool) = Constant[0] : -# 1499| v1499_8(void) = ConditionalBranch : r1499_7 +# 35| Block 493 +# 35| r35_6903(glval) = VariableAddress[x493] : +# 35| mu35_6904(String) = Uninitialized[x493] : &:r35_6903 +# 35| r35_6905(glval) = FunctionAddress[String] : +# 35| v35_6906(void) = Call[String] : func:r35_6905, this:r35_6903 +# 35| mu35_6907(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6908(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6903 +# 35| r35_6909(glval) = VariableAddress[x493] : +# 35| r35_6910(glval) = FunctionAddress[~String] : +# 35| v35_6911(void) = Call[~String] : func:r35_6910, this:r35_6909 +# 35| mu35_6912(unknown) = ^CallSideEffect : ~m? +# 35| v35_6913(void) = ^IndirectReadSideEffect[-1] : &:r35_6909, ~m? +# 35| mu35_6914(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6909 +# 35| r35_6915(bool) = Constant[0] : +# 35| v35_6916(void) = ConditionalBranch : r35_6915 #-----| False -> Block 494 #-----| True -> Block 1026 -# 1501| Block 494 -# 1501| r1501_1(glval) = VariableAddress[x494] : -# 1501| mu1501_2(String) = Uninitialized[x494] : &:r1501_1 -# 1501| r1501_3(glval) = FunctionAddress[String] : -# 1501| v1501_4(void) = Call[String] : func:r1501_3, this:r1501_1 -# 1501| mu1501_5(unknown) = ^CallSideEffect : ~m? -# 1501| mu1501_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1501_1 -# 1502| r1502_1(glval) = VariableAddress[x494] : -# 1502| r1502_2(glval) = FunctionAddress[~String] : -# 1502| v1502_3(void) = Call[~String] : func:r1502_2, this:r1502_1 -# 1502| mu1502_4(unknown) = ^CallSideEffect : ~m? -# 1502| v1502_5(void) = ^IndirectReadSideEffect[-1] : &:r1502_1, ~m? -# 1502| mu1502_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1502_1 -# 1502| r1502_7(bool) = Constant[0] : -# 1502| v1502_8(void) = ConditionalBranch : r1502_7 +# 35| Block 494 +# 35| r35_6917(glval) = VariableAddress[x494] : +# 35| mu35_6918(String) = Uninitialized[x494] : &:r35_6917 +# 35| r35_6919(glval) = FunctionAddress[String] : +# 35| v35_6920(void) = Call[String] : func:r35_6919, this:r35_6917 +# 35| mu35_6921(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6922(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6917 +# 35| r35_6923(glval) = VariableAddress[x494] : +# 35| r35_6924(glval) = FunctionAddress[~String] : +# 35| v35_6925(void) = Call[~String] : func:r35_6924, this:r35_6923 +# 35| mu35_6926(unknown) = ^CallSideEffect : ~m? +# 35| v35_6927(void) = ^IndirectReadSideEffect[-1] : &:r35_6923, ~m? +# 35| mu35_6928(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6923 +# 35| r35_6929(bool) = Constant[0] : +# 35| v35_6930(void) = ConditionalBranch : r35_6929 #-----| False -> Block 495 #-----| True -> Block 1026 -# 1504| Block 495 -# 1504| r1504_1(glval) = VariableAddress[x495] : -# 1504| mu1504_2(String) = Uninitialized[x495] : &:r1504_1 -# 1504| r1504_3(glval) = FunctionAddress[String] : -# 1504| v1504_4(void) = Call[String] : func:r1504_3, this:r1504_1 -# 1504| mu1504_5(unknown) = ^CallSideEffect : ~m? -# 1504| mu1504_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1504_1 -# 1505| r1505_1(glval) = VariableAddress[x495] : -# 1505| r1505_2(glval) = FunctionAddress[~String] : -# 1505| v1505_3(void) = Call[~String] : func:r1505_2, this:r1505_1 -# 1505| mu1505_4(unknown) = ^CallSideEffect : ~m? -# 1505| v1505_5(void) = ^IndirectReadSideEffect[-1] : &:r1505_1, ~m? -# 1505| mu1505_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1505_1 -# 1505| r1505_7(bool) = Constant[0] : -# 1505| v1505_8(void) = ConditionalBranch : r1505_7 +# 35| Block 495 +# 35| r35_6931(glval) = VariableAddress[x495] : +# 35| mu35_6932(String) = Uninitialized[x495] : &:r35_6931 +# 35| r35_6933(glval) = FunctionAddress[String] : +# 35| v35_6934(void) = Call[String] : func:r35_6933, this:r35_6931 +# 35| mu35_6935(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6936(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6931 +# 35| r35_6937(glval) = VariableAddress[x495] : +# 35| r35_6938(glval) = FunctionAddress[~String] : +# 35| v35_6939(void) = Call[~String] : func:r35_6938, this:r35_6937 +# 35| mu35_6940(unknown) = ^CallSideEffect : ~m? +# 35| v35_6941(void) = ^IndirectReadSideEffect[-1] : &:r35_6937, ~m? +# 35| mu35_6942(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6937 +# 35| r35_6943(bool) = Constant[0] : +# 35| v35_6944(void) = ConditionalBranch : r35_6943 #-----| False -> Block 496 #-----| True -> Block 1026 -# 1507| Block 496 -# 1507| r1507_1(glval) = VariableAddress[x496] : -# 1507| mu1507_2(String) = Uninitialized[x496] : &:r1507_1 -# 1507| r1507_3(glval) = FunctionAddress[String] : -# 1507| v1507_4(void) = Call[String] : func:r1507_3, this:r1507_1 -# 1507| mu1507_5(unknown) = ^CallSideEffect : ~m? -# 1507| mu1507_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1507_1 -# 1508| r1508_1(glval) = VariableAddress[x496] : -# 1508| r1508_2(glval) = FunctionAddress[~String] : -# 1508| v1508_3(void) = Call[~String] : func:r1508_2, this:r1508_1 -# 1508| mu1508_4(unknown) = ^CallSideEffect : ~m? -# 1508| v1508_5(void) = ^IndirectReadSideEffect[-1] : &:r1508_1, ~m? -# 1508| mu1508_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1508_1 -# 1508| r1508_7(bool) = Constant[0] : -# 1508| v1508_8(void) = ConditionalBranch : r1508_7 +# 35| Block 496 +# 35| r35_6945(glval) = VariableAddress[x496] : +# 35| mu35_6946(String) = Uninitialized[x496] : &:r35_6945 +# 35| r35_6947(glval) = FunctionAddress[String] : +# 35| v35_6948(void) = Call[String] : func:r35_6947, this:r35_6945 +# 35| mu35_6949(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6950(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6945 +# 35| r35_6951(glval) = VariableAddress[x496] : +# 35| r35_6952(glval) = FunctionAddress[~String] : +# 35| v35_6953(void) = Call[~String] : func:r35_6952, this:r35_6951 +# 35| mu35_6954(unknown) = ^CallSideEffect : ~m? +# 35| v35_6955(void) = ^IndirectReadSideEffect[-1] : &:r35_6951, ~m? +# 35| mu35_6956(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6951 +# 35| r35_6957(bool) = Constant[0] : +# 35| v35_6958(void) = ConditionalBranch : r35_6957 #-----| False -> Block 497 #-----| True -> Block 1026 -# 1510| Block 497 -# 1510| r1510_1(glval) = VariableAddress[x497] : -# 1510| mu1510_2(String) = Uninitialized[x497] : &:r1510_1 -# 1510| r1510_3(glval) = FunctionAddress[String] : -# 1510| v1510_4(void) = Call[String] : func:r1510_3, this:r1510_1 -# 1510| mu1510_5(unknown) = ^CallSideEffect : ~m? -# 1510| mu1510_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1510_1 -# 1511| r1511_1(glval) = VariableAddress[x497] : -# 1511| r1511_2(glval) = FunctionAddress[~String] : -# 1511| v1511_3(void) = Call[~String] : func:r1511_2, this:r1511_1 -# 1511| mu1511_4(unknown) = ^CallSideEffect : ~m? -# 1511| v1511_5(void) = ^IndirectReadSideEffect[-1] : &:r1511_1, ~m? -# 1511| mu1511_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1511_1 -# 1511| r1511_7(bool) = Constant[0] : -# 1511| v1511_8(void) = ConditionalBranch : r1511_7 +# 35| Block 497 +# 35| r35_6959(glval) = VariableAddress[x497] : +# 35| mu35_6960(String) = Uninitialized[x497] : &:r35_6959 +# 35| r35_6961(glval) = FunctionAddress[String] : +# 35| v35_6962(void) = Call[String] : func:r35_6961, this:r35_6959 +# 35| mu35_6963(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6964(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6959 +# 35| r35_6965(glval) = VariableAddress[x497] : +# 35| r35_6966(glval) = FunctionAddress[~String] : +# 35| v35_6967(void) = Call[~String] : func:r35_6966, this:r35_6965 +# 35| mu35_6968(unknown) = ^CallSideEffect : ~m? +# 35| v35_6969(void) = ^IndirectReadSideEffect[-1] : &:r35_6965, ~m? +# 35| mu35_6970(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6965 +# 35| r35_6971(bool) = Constant[0] : +# 35| v35_6972(void) = ConditionalBranch : r35_6971 #-----| False -> Block 498 #-----| True -> Block 1026 -# 1513| Block 498 -# 1513| r1513_1(glval) = VariableAddress[x498] : -# 1513| mu1513_2(String) = Uninitialized[x498] : &:r1513_1 -# 1513| r1513_3(glval) = FunctionAddress[String] : -# 1513| v1513_4(void) = Call[String] : func:r1513_3, this:r1513_1 -# 1513| mu1513_5(unknown) = ^CallSideEffect : ~m? -# 1513| mu1513_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1513_1 -# 1514| r1514_1(glval) = VariableAddress[x498] : -# 1514| r1514_2(glval) = FunctionAddress[~String] : -# 1514| v1514_3(void) = Call[~String] : func:r1514_2, this:r1514_1 -# 1514| mu1514_4(unknown) = ^CallSideEffect : ~m? -# 1514| v1514_5(void) = ^IndirectReadSideEffect[-1] : &:r1514_1, ~m? -# 1514| mu1514_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1514_1 -# 1514| r1514_7(bool) = Constant[0] : -# 1514| v1514_8(void) = ConditionalBranch : r1514_7 +# 35| Block 498 +# 35| r35_6973(glval) = VariableAddress[x498] : +# 35| mu35_6974(String) = Uninitialized[x498] : &:r35_6973 +# 35| r35_6975(glval) = FunctionAddress[String] : +# 35| v35_6976(void) = Call[String] : func:r35_6975, this:r35_6973 +# 35| mu35_6977(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6978(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6973 +# 35| r35_6979(glval) = VariableAddress[x498] : +# 35| r35_6980(glval) = FunctionAddress[~String] : +# 35| v35_6981(void) = Call[~String] : func:r35_6980, this:r35_6979 +# 35| mu35_6982(unknown) = ^CallSideEffect : ~m? +# 35| v35_6983(void) = ^IndirectReadSideEffect[-1] : &:r35_6979, ~m? +# 35| mu35_6984(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6979 +# 35| r35_6985(bool) = Constant[0] : +# 35| v35_6986(void) = ConditionalBranch : r35_6985 #-----| False -> Block 499 #-----| True -> Block 1026 -# 1516| Block 499 -# 1516| r1516_1(glval) = VariableAddress[x499] : -# 1516| mu1516_2(String) = Uninitialized[x499] : &:r1516_1 -# 1516| r1516_3(glval) = FunctionAddress[String] : -# 1516| v1516_4(void) = Call[String] : func:r1516_3, this:r1516_1 -# 1516| mu1516_5(unknown) = ^CallSideEffect : ~m? -# 1516| mu1516_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1516_1 -# 1517| r1517_1(glval) = VariableAddress[x499] : -# 1517| r1517_2(glval) = FunctionAddress[~String] : -# 1517| v1517_3(void) = Call[~String] : func:r1517_2, this:r1517_1 -# 1517| mu1517_4(unknown) = ^CallSideEffect : ~m? -# 1517| v1517_5(void) = ^IndirectReadSideEffect[-1] : &:r1517_1, ~m? -# 1517| mu1517_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1517_1 -# 1517| r1517_7(bool) = Constant[0] : -# 1517| v1517_8(void) = ConditionalBranch : r1517_7 +# 35| Block 499 +# 35| r35_6987(glval) = VariableAddress[x499] : +# 35| mu35_6988(String) = Uninitialized[x499] : &:r35_6987 +# 35| r35_6989(glval) = FunctionAddress[String] : +# 35| v35_6990(void) = Call[String] : func:r35_6989, this:r35_6987 +# 35| mu35_6991(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6992(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6987 +# 35| r35_6993(glval) = VariableAddress[x499] : +# 35| r35_6994(glval) = FunctionAddress[~String] : +# 35| v35_6995(void) = Call[~String] : func:r35_6994, this:r35_6993 +# 35| mu35_6996(unknown) = ^CallSideEffect : ~m? +# 35| v35_6997(void) = ^IndirectReadSideEffect[-1] : &:r35_6993, ~m? +# 35| mu35_6998(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6993 +# 35| r35_6999(bool) = Constant[0] : +# 35| v35_7000(void) = ConditionalBranch : r35_6999 #-----| False -> Block 500 #-----| True -> Block 1026 -# 1519| Block 500 -# 1519| r1519_1(glval) = VariableAddress[x500] : -# 1519| mu1519_2(String) = Uninitialized[x500] : &:r1519_1 -# 1519| r1519_3(glval) = FunctionAddress[String] : -# 1519| v1519_4(void) = Call[String] : func:r1519_3, this:r1519_1 -# 1519| mu1519_5(unknown) = ^CallSideEffect : ~m? -# 1519| mu1519_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1519_1 -# 1520| r1520_1(glval) = VariableAddress[x500] : -# 1520| r1520_2(glval) = FunctionAddress[~String] : -# 1520| v1520_3(void) = Call[~String] : func:r1520_2, this:r1520_1 -# 1520| mu1520_4(unknown) = ^CallSideEffect : ~m? -# 1520| v1520_5(void) = ^IndirectReadSideEffect[-1] : &:r1520_1, ~m? -# 1520| mu1520_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1520_1 -# 1520| r1520_7(bool) = Constant[0] : -# 1520| v1520_8(void) = ConditionalBranch : r1520_7 +# 35| Block 500 +# 35| r35_7001(glval) = VariableAddress[x500] : +# 35| mu35_7002(String) = Uninitialized[x500] : &:r35_7001 +# 35| r35_7003(glval) = FunctionAddress[String] : +# 35| v35_7004(void) = Call[String] : func:r35_7003, this:r35_7001 +# 35| mu35_7005(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7006(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7001 +# 35| r35_7007(glval) = VariableAddress[x500] : +# 35| r35_7008(glval) = FunctionAddress[~String] : +# 35| v35_7009(void) = Call[~String] : func:r35_7008, this:r35_7007 +# 35| mu35_7010(unknown) = ^CallSideEffect : ~m? +# 35| v35_7011(void) = ^IndirectReadSideEffect[-1] : &:r35_7007, ~m? +# 35| mu35_7012(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7007 +# 35| r35_7013(bool) = Constant[0] : +# 35| v35_7014(void) = ConditionalBranch : r35_7013 #-----| False -> Block 501 #-----| True -> Block 1026 -# 1522| Block 501 -# 1522| r1522_1(glval) = VariableAddress[x501] : -# 1522| mu1522_2(String) = Uninitialized[x501] : &:r1522_1 -# 1522| r1522_3(glval) = FunctionAddress[String] : -# 1522| v1522_4(void) = Call[String] : func:r1522_3, this:r1522_1 -# 1522| mu1522_5(unknown) = ^CallSideEffect : ~m? -# 1522| mu1522_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1522_1 -# 1523| r1523_1(glval) = VariableAddress[x501] : -# 1523| r1523_2(glval) = FunctionAddress[~String] : -# 1523| v1523_3(void) = Call[~String] : func:r1523_2, this:r1523_1 -# 1523| mu1523_4(unknown) = ^CallSideEffect : ~m? -# 1523| v1523_5(void) = ^IndirectReadSideEffect[-1] : &:r1523_1, ~m? -# 1523| mu1523_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1523_1 -# 1523| r1523_7(bool) = Constant[0] : -# 1523| v1523_8(void) = ConditionalBranch : r1523_7 +# 35| Block 501 +# 35| r35_7015(glval) = VariableAddress[x501] : +# 35| mu35_7016(String) = Uninitialized[x501] : &:r35_7015 +# 35| r35_7017(glval) = FunctionAddress[String] : +# 35| v35_7018(void) = Call[String] : func:r35_7017, this:r35_7015 +# 35| mu35_7019(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7020(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7015 +# 35| r35_7021(glval) = VariableAddress[x501] : +# 35| r35_7022(glval) = FunctionAddress[~String] : +# 35| v35_7023(void) = Call[~String] : func:r35_7022, this:r35_7021 +# 35| mu35_7024(unknown) = ^CallSideEffect : ~m? +# 35| v35_7025(void) = ^IndirectReadSideEffect[-1] : &:r35_7021, ~m? +# 35| mu35_7026(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7021 +# 35| r35_7027(bool) = Constant[0] : +# 35| v35_7028(void) = ConditionalBranch : r35_7027 #-----| False -> Block 502 #-----| True -> Block 1026 -# 1525| Block 502 -# 1525| r1525_1(glval) = VariableAddress[x502] : -# 1525| mu1525_2(String) = Uninitialized[x502] : &:r1525_1 -# 1525| r1525_3(glval) = FunctionAddress[String] : -# 1525| v1525_4(void) = Call[String] : func:r1525_3, this:r1525_1 -# 1525| mu1525_5(unknown) = ^CallSideEffect : ~m? -# 1525| mu1525_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1525_1 -# 1526| r1526_1(glval) = VariableAddress[x502] : -# 1526| r1526_2(glval) = FunctionAddress[~String] : -# 1526| v1526_3(void) = Call[~String] : func:r1526_2, this:r1526_1 -# 1526| mu1526_4(unknown) = ^CallSideEffect : ~m? -# 1526| v1526_5(void) = ^IndirectReadSideEffect[-1] : &:r1526_1, ~m? -# 1526| mu1526_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1526_1 -# 1526| r1526_7(bool) = Constant[0] : -# 1526| v1526_8(void) = ConditionalBranch : r1526_7 +# 35| Block 502 +# 35| r35_7029(glval) = VariableAddress[x502] : +# 35| mu35_7030(String) = Uninitialized[x502] : &:r35_7029 +# 35| r35_7031(glval) = FunctionAddress[String] : +# 35| v35_7032(void) = Call[String] : func:r35_7031, this:r35_7029 +# 35| mu35_7033(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7034(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7029 +# 35| r35_7035(glval) = VariableAddress[x502] : +# 35| r35_7036(glval) = FunctionAddress[~String] : +# 35| v35_7037(void) = Call[~String] : func:r35_7036, this:r35_7035 +# 35| mu35_7038(unknown) = ^CallSideEffect : ~m? +# 35| v35_7039(void) = ^IndirectReadSideEffect[-1] : &:r35_7035, ~m? +# 35| mu35_7040(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7035 +# 35| r35_7041(bool) = Constant[0] : +# 35| v35_7042(void) = ConditionalBranch : r35_7041 #-----| False -> Block 503 #-----| True -> Block 1026 -# 1528| Block 503 -# 1528| r1528_1(glval) = VariableAddress[x503] : -# 1528| mu1528_2(String) = Uninitialized[x503] : &:r1528_1 -# 1528| r1528_3(glval) = FunctionAddress[String] : -# 1528| v1528_4(void) = Call[String] : func:r1528_3, this:r1528_1 -# 1528| mu1528_5(unknown) = ^CallSideEffect : ~m? -# 1528| mu1528_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1528_1 -# 1529| r1529_1(glval) = VariableAddress[x503] : -# 1529| r1529_2(glval) = FunctionAddress[~String] : -# 1529| v1529_3(void) = Call[~String] : func:r1529_2, this:r1529_1 -# 1529| mu1529_4(unknown) = ^CallSideEffect : ~m? -# 1529| v1529_5(void) = ^IndirectReadSideEffect[-1] : &:r1529_1, ~m? -# 1529| mu1529_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1529_1 -# 1529| r1529_7(bool) = Constant[0] : -# 1529| v1529_8(void) = ConditionalBranch : r1529_7 +# 35| Block 503 +# 35| r35_7043(glval) = VariableAddress[x503] : +# 35| mu35_7044(String) = Uninitialized[x503] : &:r35_7043 +# 35| r35_7045(glval) = FunctionAddress[String] : +# 35| v35_7046(void) = Call[String] : func:r35_7045, this:r35_7043 +# 35| mu35_7047(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7048(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7043 +# 35| r35_7049(glval) = VariableAddress[x503] : +# 35| r35_7050(glval) = FunctionAddress[~String] : +# 35| v35_7051(void) = Call[~String] : func:r35_7050, this:r35_7049 +# 35| mu35_7052(unknown) = ^CallSideEffect : ~m? +# 35| v35_7053(void) = ^IndirectReadSideEffect[-1] : &:r35_7049, ~m? +# 35| mu35_7054(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7049 +# 35| r35_7055(bool) = Constant[0] : +# 35| v35_7056(void) = ConditionalBranch : r35_7055 #-----| False -> Block 504 #-----| True -> Block 1026 -# 1531| Block 504 -# 1531| r1531_1(glval) = VariableAddress[x504] : -# 1531| mu1531_2(String) = Uninitialized[x504] : &:r1531_1 -# 1531| r1531_3(glval) = FunctionAddress[String] : -# 1531| v1531_4(void) = Call[String] : func:r1531_3, this:r1531_1 -# 1531| mu1531_5(unknown) = ^CallSideEffect : ~m? -# 1531| mu1531_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1531_1 -# 1532| r1532_1(glval) = VariableAddress[x504] : -# 1532| r1532_2(glval) = FunctionAddress[~String] : -# 1532| v1532_3(void) = Call[~String] : func:r1532_2, this:r1532_1 -# 1532| mu1532_4(unknown) = ^CallSideEffect : ~m? -# 1532| v1532_5(void) = ^IndirectReadSideEffect[-1] : &:r1532_1, ~m? -# 1532| mu1532_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1532_1 -# 1532| r1532_7(bool) = Constant[0] : -# 1532| v1532_8(void) = ConditionalBranch : r1532_7 +# 35| Block 504 +# 35| r35_7057(glval) = VariableAddress[x504] : +# 35| mu35_7058(String) = Uninitialized[x504] : &:r35_7057 +# 35| r35_7059(glval) = FunctionAddress[String] : +# 35| v35_7060(void) = Call[String] : func:r35_7059, this:r35_7057 +# 35| mu35_7061(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7062(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7057 +# 35| r35_7063(glval) = VariableAddress[x504] : +# 35| r35_7064(glval) = FunctionAddress[~String] : +# 35| v35_7065(void) = Call[~String] : func:r35_7064, this:r35_7063 +# 35| mu35_7066(unknown) = ^CallSideEffect : ~m? +# 35| v35_7067(void) = ^IndirectReadSideEffect[-1] : &:r35_7063, ~m? +# 35| mu35_7068(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7063 +# 35| r35_7069(bool) = Constant[0] : +# 35| v35_7070(void) = ConditionalBranch : r35_7069 #-----| False -> Block 505 #-----| True -> Block 1026 -# 1534| Block 505 -# 1534| r1534_1(glval) = VariableAddress[x505] : -# 1534| mu1534_2(String) = Uninitialized[x505] : &:r1534_1 -# 1534| r1534_3(glval) = FunctionAddress[String] : -# 1534| v1534_4(void) = Call[String] : func:r1534_3, this:r1534_1 -# 1534| mu1534_5(unknown) = ^CallSideEffect : ~m? -# 1534| mu1534_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1534_1 -# 1535| r1535_1(glval) = VariableAddress[x505] : -# 1535| r1535_2(glval) = FunctionAddress[~String] : -# 1535| v1535_3(void) = Call[~String] : func:r1535_2, this:r1535_1 -# 1535| mu1535_4(unknown) = ^CallSideEffect : ~m? -# 1535| v1535_5(void) = ^IndirectReadSideEffect[-1] : &:r1535_1, ~m? -# 1535| mu1535_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1535_1 -# 1535| r1535_7(bool) = Constant[0] : -# 1535| v1535_8(void) = ConditionalBranch : r1535_7 +# 35| Block 505 +# 35| r35_7071(glval) = VariableAddress[x505] : +# 35| mu35_7072(String) = Uninitialized[x505] : &:r35_7071 +# 35| r35_7073(glval) = FunctionAddress[String] : +# 35| v35_7074(void) = Call[String] : func:r35_7073, this:r35_7071 +# 35| mu35_7075(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7076(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7071 +# 35| r35_7077(glval) = VariableAddress[x505] : +# 35| r35_7078(glval) = FunctionAddress[~String] : +# 35| v35_7079(void) = Call[~String] : func:r35_7078, this:r35_7077 +# 35| mu35_7080(unknown) = ^CallSideEffect : ~m? +# 35| v35_7081(void) = ^IndirectReadSideEffect[-1] : &:r35_7077, ~m? +# 35| mu35_7082(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7077 +# 35| r35_7083(bool) = Constant[0] : +# 35| v35_7084(void) = ConditionalBranch : r35_7083 #-----| False -> Block 506 #-----| True -> Block 1026 -# 1537| Block 506 -# 1537| r1537_1(glval) = VariableAddress[x506] : -# 1537| mu1537_2(String) = Uninitialized[x506] : &:r1537_1 -# 1537| r1537_3(glval) = FunctionAddress[String] : -# 1537| v1537_4(void) = Call[String] : func:r1537_3, this:r1537_1 -# 1537| mu1537_5(unknown) = ^CallSideEffect : ~m? -# 1537| mu1537_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1537_1 -# 1538| r1538_1(glval) = VariableAddress[x506] : -# 1538| r1538_2(glval) = FunctionAddress[~String] : -# 1538| v1538_3(void) = Call[~String] : func:r1538_2, this:r1538_1 -# 1538| mu1538_4(unknown) = ^CallSideEffect : ~m? -# 1538| v1538_5(void) = ^IndirectReadSideEffect[-1] : &:r1538_1, ~m? -# 1538| mu1538_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1538_1 -# 1538| r1538_7(bool) = Constant[0] : -# 1538| v1538_8(void) = ConditionalBranch : r1538_7 +# 35| Block 506 +# 35| r35_7085(glval) = VariableAddress[x506] : +# 35| mu35_7086(String) = Uninitialized[x506] : &:r35_7085 +# 35| r35_7087(glval) = FunctionAddress[String] : +# 35| v35_7088(void) = Call[String] : func:r35_7087, this:r35_7085 +# 35| mu35_7089(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7090(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7085 +# 35| r35_7091(glval) = VariableAddress[x506] : +# 35| r35_7092(glval) = FunctionAddress[~String] : +# 35| v35_7093(void) = Call[~String] : func:r35_7092, this:r35_7091 +# 35| mu35_7094(unknown) = ^CallSideEffect : ~m? +# 35| v35_7095(void) = ^IndirectReadSideEffect[-1] : &:r35_7091, ~m? +# 35| mu35_7096(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7091 +# 35| r35_7097(bool) = Constant[0] : +# 35| v35_7098(void) = ConditionalBranch : r35_7097 #-----| False -> Block 507 #-----| True -> Block 1026 -# 1540| Block 507 -# 1540| r1540_1(glval) = VariableAddress[x507] : -# 1540| mu1540_2(String) = Uninitialized[x507] : &:r1540_1 -# 1540| r1540_3(glval) = FunctionAddress[String] : -# 1540| v1540_4(void) = Call[String] : func:r1540_3, this:r1540_1 -# 1540| mu1540_5(unknown) = ^CallSideEffect : ~m? -# 1540| mu1540_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1540_1 -# 1541| r1541_1(glval) = VariableAddress[x507] : -# 1541| r1541_2(glval) = FunctionAddress[~String] : -# 1541| v1541_3(void) = Call[~String] : func:r1541_2, this:r1541_1 -# 1541| mu1541_4(unknown) = ^CallSideEffect : ~m? -# 1541| v1541_5(void) = ^IndirectReadSideEffect[-1] : &:r1541_1, ~m? -# 1541| mu1541_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1541_1 -# 1541| r1541_7(bool) = Constant[0] : -# 1541| v1541_8(void) = ConditionalBranch : r1541_7 +# 35| Block 507 +# 35| r35_7099(glval) = VariableAddress[x507] : +# 35| mu35_7100(String) = Uninitialized[x507] : &:r35_7099 +# 35| r35_7101(glval) = FunctionAddress[String] : +# 35| v35_7102(void) = Call[String] : func:r35_7101, this:r35_7099 +# 35| mu35_7103(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7099 +# 35| r35_7105(glval) = VariableAddress[x507] : +# 35| r35_7106(glval) = FunctionAddress[~String] : +# 35| v35_7107(void) = Call[~String] : func:r35_7106, this:r35_7105 +# 35| mu35_7108(unknown) = ^CallSideEffect : ~m? +# 35| v35_7109(void) = ^IndirectReadSideEffect[-1] : &:r35_7105, ~m? +# 35| mu35_7110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7105 +# 35| r35_7111(bool) = Constant[0] : +# 35| v35_7112(void) = ConditionalBranch : r35_7111 #-----| False -> Block 508 #-----| True -> Block 1026 -# 1543| Block 508 -# 1543| r1543_1(glval) = VariableAddress[x508] : -# 1543| mu1543_2(String) = Uninitialized[x508] : &:r1543_1 -# 1543| r1543_3(glval) = FunctionAddress[String] : -# 1543| v1543_4(void) = Call[String] : func:r1543_3, this:r1543_1 -# 1543| mu1543_5(unknown) = ^CallSideEffect : ~m? -# 1543| mu1543_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1543_1 -# 1544| r1544_1(glval) = VariableAddress[x508] : -# 1544| r1544_2(glval) = FunctionAddress[~String] : -# 1544| v1544_3(void) = Call[~String] : func:r1544_2, this:r1544_1 -# 1544| mu1544_4(unknown) = ^CallSideEffect : ~m? -# 1544| v1544_5(void) = ^IndirectReadSideEffect[-1] : &:r1544_1, ~m? -# 1544| mu1544_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1544_1 -# 1544| r1544_7(bool) = Constant[0] : -# 1544| v1544_8(void) = ConditionalBranch : r1544_7 +# 35| Block 508 +# 35| r35_7113(glval) = VariableAddress[x508] : +# 35| mu35_7114(String) = Uninitialized[x508] : &:r35_7113 +# 35| r35_7115(glval) = FunctionAddress[String] : +# 35| v35_7116(void) = Call[String] : func:r35_7115, this:r35_7113 +# 35| mu35_7117(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7113 +# 35| r35_7119(glval) = VariableAddress[x508] : +# 35| r35_7120(glval) = FunctionAddress[~String] : +# 35| v35_7121(void) = Call[~String] : func:r35_7120, this:r35_7119 +# 35| mu35_7122(unknown) = ^CallSideEffect : ~m? +# 35| v35_7123(void) = ^IndirectReadSideEffect[-1] : &:r35_7119, ~m? +# 35| mu35_7124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7119 +# 35| r35_7125(bool) = Constant[0] : +# 35| v35_7126(void) = ConditionalBranch : r35_7125 #-----| False -> Block 509 #-----| True -> Block 1026 -# 1546| Block 509 -# 1546| r1546_1(glval) = VariableAddress[x509] : -# 1546| mu1546_2(String) = Uninitialized[x509] : &:r1546_1 -# 1546| r1546_3(glval) = FunctionAddress[String] : -# 1546| v1546_4(void) = Call[String] : func:r1546_3, this:r1546_1 -# 1546| mu1546_5(unknown) = ^CallSideEffect : ~m? -# 1546| mu1546_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1546_1 -# 1547| r1547_1(glval) = VariableAddress[x509] : -# 1547| r1547_2(glval) = FunctionAddress[~String] : -# 1547| v1547_3(void) = Call[~String] : func:r1547_2, this:r1547_1 -# 1547| mu1547_4(unknown) = ^CallSideEffect : ~m? -# 1547| v1547_5(void) = ^IndirectReadSideEffect[-1] : &:r1547_1, ~m? -# 1547| mu1547_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1547_1 -# 1547| r1547_7(bool) = Constant[0] : -# 1547| v1547_8(void) = ConditionalBranch : r1547_7 +# 35| Block 509 +# 35| r35_7127(glval) = VariableAddress[x509] : +# 35| mu35_7128(String) = Uninitialized[x509] : &:r35_7127 +# 35| r35_7129(glval) = FunctionAddress[String] : +# 35| v35_7130(void) = Call[String] : func:r35_7129, this:r35_7127 +# 35| mu35_7131(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7127 +# 35| r35_7133(glval) = VariableAddress[x509] : +# 35| r35_7134(glval) = FunctionAddress[~String] : +# 35| v35_7135(void) = Call[~String] : func:r35_7134, this:r35_7133 +# 35| mu35_7136(unknown) = ^CallSideEffect : ~m? +# 35| v35_7137(void) = ^IndirectReadSideEffect[-1] : &:r35_7133, ~m? +# 35| mu35_7138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7133 +# 35| r35_7139(bool) = Constant[0] : +# 35| v35_7140(void) = ConditionalBranch : r35_7139 #-----| False -> Block 510 #-----| True -> Block 1026 -# 1549| Block 510 -# 1549| r1549_1(glval) = VariableAddress[x510] : -# 1549| mu1549_2(String) = Uninitialized[x510] : &:r1549_1 -# 1549| r1549_3(glval) = FunctionAddress[String] : -# 1549| v1549_4(void) = Call[String] : func:r1549_3, this:r1549_1 -# 1549| mu1549_5(unknown) = ^CallSideEffect : ~m? -# 1549| mu1549_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1549_1 -# 1550| r1550_1(glval) = VariableAddress[x510] : -# 1550| r1550_2(glval) = FunctionAddress[~String] : -# 1550| v1550_3(void) = Call[~String] : func:r1550_2, this:r1550_1 -# 1550| mu1550_4(unknown) = ^CallSideEffect : ~m? -# 1550| v1550_5(void) = ^IndirectReadSideEffect[-1] : &:r1550_1, ~m? -# 1550| mu1550_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1550_1 -# 1550| r1550_7(bool) = Constant[0] : -# 1550| v1550_8(void) = ConditionalBranch : r1550_7 +# 35| Block 510 +# 35| r35_7141(glval) = VariableAddress[x510] : +# 35| mu35_7142(String) = Uninitialized[x510] : &:r35_7141 +# 35| r35_7143(glval) = FunctionAddress[String] : +# 35| v35_7144(void) = Call[String] : func:r35_7143, this:r35_7141 +# 35| mu35_7145(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7141 +# 35| r35_7147(glval) = VariableAddress[x510] : +# 35| r35_7148(glval) = FunctionAddress[~String] : +# 35| v35_7149(void) = Call[~String] : func:r35_7148, this:r35_7147 +# 35| mu35_7150(unknown) = ^CallSideEffect : ~m? +# 35| v35_7151(void) = ^IndirectReadSideEffect[-1] : &:r35_7147, ~m? +# 35| mu35_7152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7147 +# 35| r35_7153(bool) = Constant[0] : +# 35| v35_7154(void) = ConditionalBranch : r35_7153 #-----| False -> Block 511 #-----| True -> Block 1026 -# 1552| Block 511 -# 1552| r1552_1(glval) = VariableAddress[x511] : -# 1552| mu1552_2(String) = Uninitialized[x511] : &:r1552_1 -# 1552| r1552_3(glval) = FunctionAddress[String] : -# 1552| v1552_4(void) = Call[String] : func:r1552_3, this:r1552_1 -# 1552| mu1552_5(unknown) = ^CallSideEffect : ~m? -# 1552| mu1552_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1552_1 -# 1553| r1553_1(glval) = VariableAddress[x511] : -# 1553| r1553_2(glval) = FunctionAddress[~String] : -# 1553| v1553_3(void) = Call[~String] : func:r1553_2, this:r1553_1 -# 1553| mu1553_4(unknown) = ^CallSideEffect : ~m? -# 1553| v1553_5(void) = ^IndirectReadSideEffect[-1] : &:r1553_1, ~m? -# 1553| mu1553_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1553_1 -# 1553| r1553_7(bool) = Constant[0] : -# 1553| v1553_8(void) = ConditionalBranch : r1553_7 +# 35| Block 511 +# 35| r35_7155(glval) = VariableAddress[x511] : +# 35| mu35_7156(String) = Uninitialized[x511] : &:r35_7155 +# 35| r35_7157(glval) = FunctionAddress[String] : +# 35| v35_7158(void) = Call[String] : func:r35_7157, this:r35_7155 +# 35| mu35_7159(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7155 +# 35| r35_7161(glval) = VariableAddress[x511] : +# 35| r35_7162(glval) = FunctionAddress[~String] : +# 35| v35_7163(void) = Call[~String] : func:r35_7162, this:r35_7161 +# 35| mu35_7164(unknown) = ^CallSideEffect : ~m? +# 35| v35_7165(void) = ^IndirectReadSideEffect[-1] : &:r35_7161, ~m? +# 35| mu35_7166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7161 +# 35| r35_7167(bool) = Constant[0] : +# 35| v35_7168(void) = ConditionalBranch : r35_7167 #-----| False -> Block 512 #-----| True -> Block 1026 -# 1555| Block 512 -# 1555| r1555_1(glval) = VariableAddress[x512] : -# 1555| mu1555_2(String) = Uninitialized[x512] : &:r1555_1 -# 1555| r1555_3(glval) = FunctionAddress[String] : -# 1555| v1555_4(void) = Call[String] : func:r1555_3, this:r1555_1 -# 1555| mu1555_5(unknown) = ^CallSideEffect : ~m? -# 1555| mu1555_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1555_1 -# 1556| r1556_1(glval) = VariableAddress[x512] : -# 1556| r1556_2(glval) = FunctionAddress[~String] : -# 1556| v1556_3(void) = Call[~String] : func:r1556_2, this:r1556_1 -# 1556| mu1556_4(unknown) = ^CallSideEffect : ~m? -# 1556| v1556_5(void) = ^IndirectReadSideEffect[-1] : &:r1556_1, ~m? -# 1556| mu1556_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1556_1 -# 1556| r1556_7(bool) = Constant[0] : -# 1556| v1556_8(void) = ConditionalBranch : r1556_7 +# 35| Block 512 +# 35| r35_7169(glval) = VariableAddress[x512] : +# 35| mu35_7170(String) = Uninitialized[x512] : &:r35_7169 +# 35| r35_7171(glval) = FunctionAddress[String] : +# 35| v35_7172(void) = Call[String] : func:r35_7171, this:r35_7169 +# 35| mu35_7173(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7169 +# 35| r35_7175(glval) = VariableAddress[x512] : +# 35| r35_7176(glval) = FunctionAddress[~String] : +# 35| v35_7177(void) = Call[~String] : func:r35_7176, this:r35_7175 +# 35| mu35_7178(unknown) = ^CallSideEffect : ~m? +# 35| v35_7179(void) = ^IndirectReadSideEffect[-1] : &:r35_7175, ~m? +# 35| mu35_7180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7175 +# 35| r35_7181(bool) = Constant[0] : +# 35| v35_7182(void) = ConditionalBranch : r35_7181 #-----| False -> Block 513 #-----| True -> Block 1026 -# 1558| Block 513 -# 1558| r1558_1(glval) = VariableAddress[x513] : -# 1558| mu1558_2(String) = Uninitialized[x513] : &:r1558_1 -# 1558| r1558_3(glval) = FunctionAddress[String] : -# 1558| v1558_4(void) = Call[String] : func:r1558_3, this:r1558_1 -# 1558| mu1558_5(unknown) = ^CallSideEffect : ~m? -# 1558| mu1558_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1558_1 -# 1559| r1559_1(glval) = VariableAddress[x513] : -# 1559| r1559_2(glval) = FunctionAddress[~String] : -# 1559| v1559_3(void) = Call[~String] : func:r1559_2, this:r1559_1 -# 1559| mu1559_4(unknown) = ^CallSideEffect : ~m? -# 1559| v1559_5(void) = ^IndirectReadSideEffect[-1] : &:r1559_1, ~m? -# 1559| mu1559_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1559_1 -# 1559| r1559_7(bool) = Constant[0] : -# 1559| v1559_8(void) = ConditionalBranch : r1559_7 +# 35| Block 513 +# 35| r35_7183(glval) = VariableAddress[x513] : +# 35| mu35_7184(String) = Uninitialized[x513] : &:r35_7183 +# 35| r35_7185(glval) = FunctionAddress[String] : +# 35| v35_7186(void) = Call[String] : func:r35_7185, this:r35_7183 +# 35| mu35_7187(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7183 +# 35| r35_7189(glval) = VariableAddress[x513] : +# 35| r35_7190(glval) = FunctionAddress[~String] : +# 35| v35_7191(void) = Call[~String] : func:r35_7190, this:r35_7189 +# 35| mu35_7192(unknown) = ^CallSideEffect : ~m? +# 35| v35_7193(void) = ^IndirectReadSideEffect[-1] : &:r35_7189, ~m? +# 35| mu35_7194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7189 +# 35| r35_7195(bool) = Constant[0] : +# 35| v35_7196(void) = ConditionalBranch : r35_7195 #-----| False -> Block 514 #-----| True -> Block 1026 -# 1561| Block 514 -# 1561| r1561_1(glval) = VariableAddress[x514] : -# 1561| mu1561_2(String) = Uninitialized[x514] : &:r1561_1 -# 1561| r1561_3(glval) = FunctionAddress[String] : -# 1561| v1561_4(void) = Call[String] : func:r1561_3, this:r1561_1 -# 1561| mu1561_5(unknown) = ^CallSideEffect : ~m? -# 1561| mu1561_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1561_1 -# 1562| r1562_1(glval) = VariableAddress[x514] : -# 1562| r1562_2(glval) = FunctionAddress[~String] : -# 1562| v1562_3(void) = Call[~String] : func:r1562_2, this:r1562_1 -# 1562| mu1562_4(unknown) = ^CallSideEffect : ~m? -# 1562| v1562_5(void) = ^IndirectReadSideEffect[-1] : &:r1562_1, ~m? -# 1562| mu1562_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1562_1 -# 1562| r1562_7(bool) = Constant[0] : -# 1562| v1562_8(void) = ConditionalBranch : r1562_7 +# 35| Block 514 +# 35| r35_7197(glval) = VariableAddress[x514] : +# 35| mu35_7198(String) = Uninitialized[x514] : &:r35_7197 +# 35| r35_7199(glval) = FunctionAddress[String] : +# 35| v35_7200(void) = Call[String] : func:r35_7199, this:r35_7197 +# 35| mu35_7201(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7197 +# 35| r35_7203(glval) = VariableAddress[x514] : +# 35| r35_7204(glval) = FunctionAddress[~String] : +# 35| v35_7205(void) = Call[~String] : func:r35_7204, this:r35_7203 +# 35| mu35_7206(unknown) = ^CallSideEffect : ~m? +# 35| v35_7207(void) = ^IndirectReadSideEffect[-1] : &:r35_7203, ~m? +# 35| mu35_7208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7203 +# 35| r35_7209(bool) = Constant[0] : +# 35| v35_7210(void) = ConditionalBranch : r35_7209 #-----| False -> Block 515 #-----| True -> Block 1026 -# 1564| Block 515 -# 1564| r1564_1(glval) = VariableAddress[x515] : -# 1564| mu1564_2(String) = Uninitialized[x515] : &:r1564_1 -# 1564| r1564_3(glval) = FunctionAddress[String] : -# 1564| v1564_4(void) = Call[String] : func:r1564_3, this:r1564_1 -# 1564| mu1564_5(unknown) = ^CallSideEffect : ~m? -# 1564| mu1564_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1564_1 -# 1565| r1565_1(glval) = VariableAddress[x515] : -# 1565| r1565_2(glval) = FunctionAddress[~String] : -# 1565| v1565_3(void) = Call[~String] : func:r1565_2, this:r1565_1 -# 1565| mu1565_4(unknown) = ^CallSideEffect : ~m? -# 1565| v1565_5(void) = ^IndirectReadSideEffect[-1] : &:r1565_1, ~m? -# 1565| mu1565_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1565_1 -# 1565| r1565_7(bool) = Constant[0] : -# 1565| v1565_8(void) = ConditionalBranch : r1565_7 +# 35| Block 515 +# 35| r35_7211(glval) = VariableAddress[x515] : +# 35| mu35_7212(String) = Uninitialized[x515] : &:r35_7211 +# 35| r35_7213(glval) = FunctionAddress[String] : +# 35| v35_7214(void) = Call[String] : func:r35_7213, this:r35_7211 +# 35| mu35_7215(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7211 +# 35| r35_7217(glval) = VariableAddress[x515] : +# 35| r35_7218(glval) = FunctionAddress[~String] : +# 35| v35_7219(void) = Call[~String] : func:r35_7218, this:r35_7217 +# 35| mu35_7220(unknown) = ^CallSideEffect : ~m? +# 35| v35_7221(void) = ^IndirectReadSideEffect[-1] : &:r35_7217, ~m? +# 35| mu35_7222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7217 +# 35| r35_7223(bool) = Constant[0] : +# 35| v35_7224(void) = ConditionalBranch : r35_7223 #-----| False -> Block 516 #-----| True -> Block 1026 -# 1567| Block 516 -# 1567| r1567_1(glval) = VariableAddress[x516] : -# 1567| mu1567_2(String) = Uninitialized[x516] : &:r1567_1 -# 1567| r1567_3(glval) = FunctionAddress[String] : -# 1567| v1567_4(void) = Call[String] : func:r1567_3, this:r1567_1 -# 1567| mu1567_5(unknown) = ^CallSideEffect : ~m? -# 1567| mu1567_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1567_1 -# 1568| r1568_1(glval) = VariableAddress[x516] : -# 1568| r1568_2(glval) = FunctionAddress[~String] : -# 1568| v1568_3(void) = Call[~String] : func:r1568_2, this:r1568_1 -# 1568| mu1568_4(unknown) = ^CallSideEffect : ~m? -# 1568| v1568_5(void) = ^IndirectReadSideEffect[-1] : &:r1568_1, ~m? -# 1568| mu1568_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1568_1 -# 1568| r1568_7(bool) = Constant[0] : -# 1568| v1568_8(void) = ConditionalBranch : r1568_7 +# 35| Block 516 +# 35| r35_7225(glval) = VariableAddress[x516] : +# 35| mu35_7226(String) = Uninitialized[x516] : &:r35_7225 +# 35| r35_7227(glval) = FunctionAddress[String] : +# 35| v35_7228(void) = Call[String] : func:r35_7227, this:r35_7225 +# 35| mu35_7229(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7225 +# 35| r35_7231(glval) = VariableAddress[x516] : +# 35| r35_7232(glval) = FunctionAddress[~String] : +# 35| v35_7233(void) = Call[~String] : func:r35_7232, this:r35_7231 +# 35| mu35_7234(unknown) = ^CallSideEffect : ~m? +# 35| v35_7235(void) = ^IndirectReadSideEffect[-1] : &:r35_7231, ~m? +# 35| mu35_7236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7231 +# 35| r35_7237(bool) = Constant[0] : +# 35| v35_7238(void) = ConditionalBranch : r35_7237 #-----| False -> Block 517 #-----| True -> Block 1026 -# 1570| Block 517 -# 1570| r1570_1(glval) = VariableAddress[x517] : -# 1570| mu1570_2(String) = Uninitialized[x517] : &:r1570_1 -# 1570| r1570_3(glval) = FunctionAddress[String] : -# 1570| v1570_4(void) = Call[String] : func:r1570_3, this:r1570_1 -# 1570| mu1570_5(unknown) = ^CallSideEffect : ~m? -# 1570| mu1570_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1570_1 -# 1571| r1571_1(glval) = VariableAddress[x517] : -# 1571| r1571_2(glval) = FunctionAddress[~String] : -# 1571| v1571_3(void) = Call[~String] : func:r1571_2, this:r1571_1 -# 1571| mu1571_4(unknown) = ^CallSideEffect : ~m? -# 1571| v1571_5(void) = ^IndirectReadSideEffect[-1] : &:r1571_1, ~m? -# 1571| mu1571_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1571_1 -# 1571| r1571_7(bool) = Constant[0] : -# 1571| v1571_8(void) = ConditionalBranch : r1571_7 +# 35| Block 517 +# 35| r35_7239(glval) = VariableAddress[x517] : +# 35| mu35_7240(String) = Uninitialized[x517] : &:r35_7239 +# 35| r35_7241(glval) = FunctionAddress[String] : +# 35| v35_7242(void) = Call[String] : func:r35_7241, this:r35_7239 +# 35| mu35_7243(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7239 +# 35| r35_7245(glval) = VariableAddress[x517] : +# 35| r35_7246(glval) = FunctionAddress[~String] : +# 35| v35_7247(void) = Call[~String] : func:r35_7246, this:r35_7245 +# 35| mu35_7248(unknown) = ^CallSideEffect : ~m? +# 35| v35_7249(void) = ^IndirectReadSideEffect[-1] : &:r35_7245, ~m? +# 35| mu35_7250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7245 +# 35| r35_7251(bool) = Constant[0] : +# 35| v35_7252(void) = ConditionalBranch : r35_7251 #-----| False -> Block 518 #-----| True -> Block 1026 -# 1573| Block 518 -# 1573| r1573_1(glval) = VariableAddress[x518] : -# 1573| mu1573_2(String) = Uninitialized[x518] : &:r1573_1 -# 1573| r1573_3(glval) = FunctionAddress[String] : -# 1573| v1573_4(void) = Call[String] : func:r1573_3, this:r1573_1 -# 1573| mu1573_5(unknown) = ^CallSideEffect : ~m? -# 1573| mu1573_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1573_1 -# 1574| r1574_1(glval) = VariableAddress[x518] : -# 1574| r1574_2(glval) = FunctionAddress[~String] : -# 1574| v1574_3(void) = Call[~String] : func:r1574_2, this:r1574_1 -# 1574| mu1574_4(unknown) = ^CallSideEffect : ~m? -# 1574| v1574_5(void) = ^IndirectReadSideEffect[-1] : &:r1574_1, ~m? -# 1574| mu1574_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1574_1 -# 1574| r1574_7(bool) = Constant[0] : -# 1574| v1574_8(void) = ConditionalBranch : r1574_7 +# 35| Block 518 +# 35| r35_7253(glval) = VariableAddress[x518] : +# 35| mu35_7254(String) = Uninitialized[x518] : &:r35_7253 +# 35| r35_7255(glval) = FunctionAddress[String] : +# 35| v35_7256(void) = Call[String] : func:r35_7255, this:r35_7253 +# 35| mu35_7257(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7253 +# 35| r35_7259(glval) = VariableAddress[x518] : +# 35| r35_7260(glval) = FunctionAddress[~String] : +# 35| v35_7261(void) = Call[~String] : func:r35_7260, this:r35_7259 +# 35| mu35_7262(unknown) = ^CallSideEffect : ~m? +# 35| v35_7263(void) = ^IndirectReadSideEffect[-1] : &:r35_7259, ~m? +# 35| mu35_7264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7259 +# 35| r35_7265(bool) = Constant[0] : +# 35| v35_7266(void) = ConditionalBranch : r35_7265 #-----| False -> Block 519 #-----| True -> Block 1026 -# 1576| Block 519 -# 1576| r1576_1(glval) = VariableAddress[x519] : -# 1576| mu1576_2(String) = Uninitialized[x519] : &:r1576_1 -# 1576| r1576_3(glval) = FunctionAddress[String] : -# 1576| v1576_4(void) = Call[String] : func:r1576_3, this:r1576_1 -# 1576| mu1576_5(unknown) = ^CallSideEffect : ~m? -# 1576| mu1576_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1576_1 -# 1577| r1577_1(glval) = VariableAddress[x519] : -# 1577| r1577_2(glval) = FunctionAddress[~String] : -# 1577| v1577_3(void) = Call[~String] : func:r1577_2, this:r1577_1 -# 1577| mu1577_4(unknown) = ^CallSideEffect : ~m? -# 1577| v1577_5(void) = ^IndirectReadSideEffect[-1] : &:r1577_1, ~m? -# 1577| mu1577_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1577_1 -# 1577| r1577_7(bool) = Constant[0] : -# 1577| v1577_8(void) = ConditionalBranch : r1577_7 +# 35| Block 519 +# 35| r35_7267(glval) = VariableAddress[x519] : +# 35| mu35_7268(String) = Uninitialized[x519] : &:r35_7267 +# 35| r35_7269(glval) = FunctionAddress[String] : +# 35| v35_7270(void) = Call[String] : func:r35_7269, this:r35_7267 +# 35| mu35_7271(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7267 +# 35| r35_7273(glval) = VariableAddress[x519] : +# 35| r35_7274(glval) = FunctionAddress[~String] : +# 35| v35_7275(void) = Call[~String] : func:r35_7274, this:r35_7273 +# 35| mu35_7276(unknown) = ^CallSideEffect : ~m? +# 35| v35_7277(void) = ^IndirectReadSideEffect[-1] : &:r35_7273, ~m? +# 35| mu35_7278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7273 +# 35| r35_7279(bool) = Constant[0] : +# 35| v35_7280(void) = ConditionalBranch : r35_7279 #-----| False -> Block 520 #-----| True -> Block 1026 -# 1579| Block 520 -# 1579| r1579_1(glval) = VariableAddress[x520] : -# 1579| mu1579_2(String) = Uninitialized[x520] : &:r1579_1 -# 1579| r1579_3(glval) = FunctionAddress[String] : -# 1579| v1579_4(void) = Call[String] : func:r1579_3, this:r1579_1 -# 1579| mu1579_5(unknown) = ^CallSideEffect : ~m? -# 1579| mu1579_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1579_1 -# 1580| r1580_1(glval) = VariableAddress[x520] : -# 1580| r1580_2(glval) = FunctionAddress[~String] : -# 1580| v1580_3(void) = Call[~String] : func:r1580_2, this:r1580_1 -# 1580| mu1580_4(unknown) = ^CallSideEffect : ~m? -# 1580| v1580_5(void) = ^IndirectReadSideEffect[-1] : &:r1580_1, ~m? -# 1580| mu1580_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1580_1 -# 1580| r1580_7(bool) = Constant[0] : -# 1580| v1580_8(void) = ConditionalBranch : r1580_7 +# 35| Block 520 +# 35| r35_7281(glval) = VariableAddress[x520] : +# 35| mu35_7282(String) = Uninitialized[x520] : &:r35_7281 +# 35| r35_7283(glval) = FunctionAddress[String] : +# 35| v35_7284(void) = Call[String] : func:r35_7283, this:r35_7281 +# 35| mu35_7285(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7281 +# 35| r35_7287(glval) = VariableAddress[x520] : +# 35| r35_7288(glval) = FunctionAddress[~String] : +# 35| v35_7289(void) = Call[~String] : func:r35_7288, this:r35_7287 +# 35| mu35_7290(unknown) = ^CallSideEffect : ~m? +# 35| v35_7291(void) = ^IndirectReadSideEffect[-1] : &:r35_7287, ~m? +# 35| mu35_7292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7287 +# 35| r35_7293(bool) = Constant[0] : +# 35| v35_7294(void) = ConditionalBranch : r35_7293 #-----| False -> Block 521 #-----| True -> Block 1026 -# 1582| Block 521 -# 1582| r1582_1(glval) = VariableAddress[x521] : -# 1582| mu1582_2(String) = Uninitialized[x521] : &:r1582_1 -# 1582| r1582_3(glval) = FunctionAddress[String] : -# 1582| v1582_4(void) = Call[String] : func:r1582_3, this:r1582_1 -# 1582| mu1582_5(unknown) = ^CallSideEffect : ~m? -# 1582| mu1582_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1582_1 -# 1583| r1583_1(glval) = VariableAddress[x521] : -# 1583| r1583_2(glval) = FunctionAddress[~String] : -# 1583| v1583_3(void) = Call[~String] : func:r1583_2, this:r1583_1 -# 1583| mu1583_4(unknown) = ^CallSideEffect : ~m? -# 1583| v1583_5(void) = ^IndirectReadSideEffect[-1] : &:r1583_1, ~m? -# 1583| mu1583_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1583_1 -# 1583| r1583_7(bool) = Constant[0] : -# 1583| v1583_8(void) = ConditionalBranch : r1583_7 +# 35| Block 521 +# 35| r35_7295(glval) = VariableAddress[x521] : +# 35| mu35_7296(String) = Uninitialized[x521] : &:r35_7295 +# 35| r35_7297(glval) = FunctionAddress[String] : +# 35| v35_7298(void) = Call[String] : func:r35_7297, this:r35_7295 +# 35| mu35_7299(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7295 +# 35| r35_7301(glval) = VariableAddress[x521] : +# 35| r35_7302(glval) = FunctionAddress[~String] : +# 35| v35_7303(void) = Call[~String] : func:r35_7302, this:r35_7301 +# 35| mu35_7304(unknown) = ^CallSideEffect : ~m? +# 35| v35_7305(void) = ^IndirectReadSideEffect[-1] : &:r35_7301, ~m? +# 35| mu35_7306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7301 +# 35| r35_7307(bool) = Constant[0] : +# 35| v35_7308(void) = ConditionalBranch : r35_7307 #-----| False -> Block 522 #-----| True -> Block 1026 -# 1585| Block 522 -# 1585| r1585_1(glval) = VariableAddress[x522] : -# 1585| mu1585_2(String) = Uninitialized[x522] : &:r1585_1 -# 1585| r1585_3(glval) = FunctionAddress[String] : -# 1585| v1585_4(void) = Call[String] : func:r1585_3, this:r1585_1 -# 1585| mu1585_5(unknown) = ^CallSideEffect : ~m? -# 1585| mu1585_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1585_1 -# 1586| r1586_1(glval) = VariableAddress[x522] : -# 1586| r1586_2(glval) = FunctionAddress[~String] : -# 1586| v1586_3(void) = Call[~String] : func:r1586_2, this:r1586_1 -# 1586| mu1586_4(unknown) = ^CallSideEffect : ~m? -# 1586| v1586_5(void) = ^IndirectReadSideEffect[-1] : &:r1586_1, ~m? -# 1586| mu1586_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1586_1 -# 1586| r1586_7(bool) = Constant[0] : -# 1586| v1586_8(void) = ConditionalBranch : r1586_7 +# 35| Block 522 +# 35| r35_7309(glval) = VariableAddress[x522] : +# 35| mu35_7310(String) = Uninitialized[x522] : &:r35_7309 +# 35| r35_7311(glval) = FunctionAddress[String] : +# 35| v35_7312(void) = Call[String] : func:r35_7311, this:r35_7309 +# 35| mu35_7313(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7309 +# 35| r35_7315(glval) = VariableAddress[x522] : +# 35| r35_7316(glval) = FunctionAddress[~String] : +# 35| v35_7317(void) = Call[~String] : func:r35_7316, this:r35_7315 +# 35| mu35_7318(unknown) = ^CallSideEffect : ~m? +# 35| v35_7319(void) = ^IndirectReadSideEffect[-1] : &:r35_7315, ~m? +# 35| mu35_7320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7315 +# 35| r35_7321(bool) = Constant[0] : +# 35| v35_7322(void) = ConditionalBranch : r35_7321 #-----| False -> Block 523 #-----| True -> Block 1026 -# 1588| Block 523 -# 1588| r1588_1(glval) = VariableAddress[x523] : -# 1588| mu1588_2(String) = Uninitialized[x523] : &:r1588_1 -# 1588| r1588_3(glval) = FunctionAddress[String] : -# 1588| v1588_4(void) = Call[String] : func:r1588_3, this:r1588_1 -# 1588| mu1588_5(unknown) = ^CallSideEffect : ~m? -# 1588| mu1588_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1588_1 -# 1589| r1589_1(glval) = VariableAddress[x523] : -# 1589| r1589_2(glval) = FunctionAddress[~String] : -# 1589| v1589_3(void) = Call[~String] : func:r1589_2, this:r1589_1 -# 1589| mu1589_4(unknown) = ^CallSideEffect : ~m? -# 1589| v1589_5(void) = ^IndirectReadSideEffect[-1] : &:r1589_1, ~m? -# 1589| mu1589_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1589_1 -# 1589| r1589_7(bool) = Constant[0] : -# 1589| v1589_8(void) = ConditionalBranch : r1589_7 +# 35| Block 523 +# 35| r35_7323(glval) = VariableAddress[x523] : +# 35| mu35_7324(String) = Uninitialized[x523] : &:r35_7323 +# 35| r35_7325(glval) = FunctionAddress[String] : +# 35| v35_7326(void) = Call[String] : func:r35_7325, this:r35_7323 +# 35| mu35_7327(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7323 +# 35| r35_7329(glval) = VariableAddress[x523] : +# 35| r35_7330(glval) = FunctionAddress[~String] : +# 35| v35_7331(void) = Call[~String] : func:r35_7330, this:r35_7329 +# 35| mu35_7332(unknown) = ^CallSideEffect : ~m? +# 35| v35_7333(void) = ^IndirectReadSideEffect[-1] : &:r35_7329, ~m? +# 35| mu35_7334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7329 +# 35| r35_7335(bool) = Constant[0] : +# 35| v35_7336(void) = ConditionalBranch : r35_7335 #-----| False -> Block 524 #-----| True -> Block 1026 -# 1591| Block 524 -# 1591| r1591_1(glval) = VariableAddress[x524] : -# 1591| mu1591_2(String) = Uninitialized[x524] : &:r1591_1 -# 1591| r1591_3(glval) = FunctionAddress[String] : -# 1591| v1591_4(void) = Call[String] : func:r1591_3, this:r1591_1 -# 1591| mu1591_5(unknown) = ^CallSideEffect : ~m? -# 1591| mu1591_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1591_1 -# 1592| r1592_1(glval) = VariableAddress[x524] : -# 1592| r1592_2(glval) = FunctionAddress[~String] : -# 1592| v1592_3(void) = Call[~String] : func:r1592_2, this:r1592_1 -# 1592| mu1592_4(unknown) = ^CallSideEffect : ~m? -# 1592| v1592_5(void) = ^IndirectReadSideEffect[-1] : &:r1592_1, ~m? -# 1592| mu1592_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1592_1 -# 1592| r1592_7(bool) = Constant[0] : -# 1592| v1592_8(void) = ConditionalBranch : r1592_7 +# 35| Block 524 +# 35| r35_7337(glval) = VariableAddress[x524] : +# 35| mu35_7338(String) = Uninitialized[x524] : &:r35_7337 +# 35| r35_7339(glval) = FunctionAddress[String] : +# 35| v35_7340(void) = Call[String] : func:r35_7339, this:r35_7337 +# 35| mu35_7341(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7337 +# 35| r35_7343(glval) = VariableAddress[x524] : +# 35| r35_7344(glval) = FunctionAddress[~String] : +# 35| v35_7345(void) = Call[~String] : func:r35_7344, this:r35_7343 +# 35| mu35_7346(unknown) = ^CallSideEffect : ~m? +# 35| v35_7347(void) = ^IndirectReadSideEffect[-1] : &:r35_7343, ~m? +# 35| mu35_7348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7343 +# 35| r35_7349(bool) = Constant[0] : +# 35| v35_7350(void) = ConditionalBranch : r35_7349 #-----| False -> Block 525 #-----| True -> Block 1026 -# 1594| Block 525 -# 1594| r1594_1(glval) = VariableAddress[x525] : -# 1594| mu1594_2(String) = Uninitialized[x525] : &:r1594_1 -# 1594| r1594_3(glval) = FunctionAddress[String] : -# 1594| v1594_4(void) = Call[String] : func:r1594_3, this:r1594_1 -# 1594| mu1594_5(unknown) = ^CallSideEffect : ~m? -# 1594| mu1594_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1594_1 -# 1595| r1595_1(glval) = VariableAddress[x525] : -# 1595| r1595_2(glval) = FunctionAddress[~String] : -# 1595| v1595_3(void) = Call[~String] : func:r1595_2, this:r1595_1 -# 1595| mu1595_4(unknown) = ^CallSideEffect : ~m? -# 1595| v1595_5(void) = ^IndirectReadSideEffect[-1] : &:r1595_1, ~m? -# 1595| mu1595_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1595_1 -# 1595| r1595_7(bool) = Constant[0] : -# 1595| v1595_8(void) = ConditionalBranch : r1595_7 +# 35| Block 525 +# 35| r35_7351(glval) = VariableAddress[x525] : +# 35| mu35_7352(String) = Uninitialized[x525] : &:r35_7351 +# 35| r35_7353(glval) = FunctionAddress[String] : +# 35| v35_7354(void) = Call[String] : func:r35_7353, this:r35_7351 +# 35| mu35_7355(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7356(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7351 +# 35| r35_7357(glval) = VariableAddress[x525] : +# 35| r35_7358(glval) = FunctionAddress[~String] : +# 35| v35_7359(void) = Call[~String] : func:r35_7358, this:r35_7357 +# 35| mu35_7360(unknown) = ^CallSideEffect : ~m? +# 35| v35_7361(void) = ^IndirectReadSideEffect[-1] : &:r35_7357, ~m? +# 35| mu35_7362(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7357 +# 35| r35_7363(bool) = Constant[0] : +# 35| v35_7364(void) = ConditionalBranch : r35_7363 #-----| False -> Block 526 #-----| True -> Block 1026 -# 1597| Block 526 -# 1597| r1597_1(glval) = VariableAddress[x526] : -# 1597| mu1597_2(String) = Uninitialized[x526] : &:r1597_1 -# 1597| r1597_3(glval) = FunctionAddress[String] : -# 1597| v1597_4(void) = Call[String] : func:r1597_3, this:r1597_1 -# 1597| mu1597_5(unknown) = ^CallSideEffect : ~m? -# 1597| mu1597_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1597_1 -# 1598| r1598_1(glval) = VariableAddress[x526] : -# 1598| r1598_2(glval) = FunctionAddress[~String] : -# 1598| v1598_3(void) = Call[~String] : func:r1598_2, this:r1598_1 -# 1598| mu1598_4(unknown) = ^CallSideEffect : ~m? -# 1598| v1598_5(void) = ^IndirectReadSideEffect[-1] : &:r1598_1, ~m? -# 1598| mu1598_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1598_1 -# 1598| r1598_7(bool) = Constant[0] : -# 1598| v1598_8(void) = ConditionalBranch : r1598_7 +# 35| Block 526 +# 35| r35_7365(glval) = VariableAddress[x526] : +# 35| mu35_7366(String) = Uninitialized[x526] : &:r35_7365 +# 35| r35_7367(glval) = FunctionAddress[String] : +# 35| v35_7368(void) = Call[String] : func:r35_7367, this:r35_7365 +# 35| mu35_7369(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7370(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7365 +# 35| r35_7371(glval) = VariableAddress[x526] : +# 35| r35_7372(glval) = FunctionAddress[~String] : +# 35| v35_7373(void) = Call[~String] : func:r35_7372, this:r35_7371 +# 35| mu35_7374(unknown) = ^CallSideEffect : ~m? +# 35| v35_7375(void) = ^IndirectReadSideEffect[-1] : &:r35_7371, ~m? +# 35| mu35_7376(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7371 +# 35| r35_7377(bool) = Constant[0] : +# 35| v35_7378(void) = ConditionalBranch : r35_7377 #-----| False -> Block 527 #-----| True -> Block 1026 -# 1600| Block 527 -# 1600| r1600_1(glval) = VariableAddress[x527] : -# 1600| mu1600_2(String) = Uninitialized[x527] : &:r1600_1 -# 1600| r1600_3(glval) = FunctionAddress[String] : -# 1600| v1600_4(void) = Call[String] : func:r1600_3, this:r1600_1 -# 1600| mu1600_5(unknown) = ^CallSideEffect : ~m? -# 1600| mu1600_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1600_1 -# 1601| r1601_1(glval) = VariableAddress[x527] : -# 1601| r1601_2(glval) = FunctionAddress[~String] : -# 1601| v1601_3(void) = Call[~String] : func:r1601_2, this:r1601_1 -# 1601| mu1601_4(unknown) = ^CallSideEffect : ~m? -# 1601| v1601_5(void) = ^IndirectReadSideEffect[-1] : &:r1601_1, ~m? -# 1601| mu1601_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1601_1 -# 1601| r1601_7(bool) = Constant[0] : -# 1601| v1601_8(void) = ConditionalBranch : r1601_7 +# 35| Block 527 +# 35| r35_7379(glval) = VariableAddress[x527] : +# 35| mu35_7380(String) = Uninitialized[x527] : &:r35_7379 +# 35| r35_7381(glval) = FunctionAddress[String] : +# 35| v35_7382(void) = Call[String] : func:r35_7381, this:r35_7379 +# 35| mu35_7383(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7384(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7379 +# 35| r35_7385(glval) = VariableAddress[x527] : +# 35| r35_7386(glval) = FunctionAddress[~String] : +# 35| v35_7387(void) = Call[~String] : func:r35_7386, this:r35_7385 +# 35| mu35_7388(unknown) = ^CallSideEffect : ~m? +# 35| v35_7389(void) = ^IndirectReadSideEffect[-1] : &:r35_7385, ~m? +# 35| mu35_7390(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7385 +# 35| r35_7391(bool) = Constant[0] : +# 35| v35_7392(void) = ConditionalBranch : r35_7391 #-----| False -> Block 528 #-----| True -> Block 1026 -# 1603| Block 528 -# 1603| r1603_1(glval) = VariableAddress[x528] : -# 1603| mu1603_2(String) = Uninitialized[x528] : &:r1603_1 -# 1603| r1603_3(glval) = FunctionAddress[String] : -# 1603| v1603_4(void) = Call[String] : func:r1603_3, this:r1603_1 -# 1603| mu1603_5(unknown) = ^CallSideEffect : ~m? -# 1603| mu1603_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1603_1 -# 1604| r1604_1(glval) = VariableAddress[x528] : -# 1604| r1604_2(glval) = FunctionAddress[~String] : -# 1604| v1604_3(void) = Call[~String] : func:r1604_2, this:r1604_1 -# 1604| mu1604_4(unknown) = ^CallSideEffect : ~m? -# 1604| v1604_5(void) = ^IndirectReadSideEffect[-1] : &:r1604_1, ~m? -# 1604| mu1604_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1604_1 -# 1604| r1604_7(bool) = Constant[0] : -# 1604| v1604_8(void) = ConditionalBranch : r1604_7 +# 35| Block 528 +# 35| r35_7393(glval) = VariableAddress[x528] : +# 35| mu35_7394(String) = Uninitialized[x528] : &:r35_7393 +# 35| r35_7395(glval) = FunctionAddress[String] : +# 35| v35_7396(void) = Call[String] : func:r35_7395, this:r35_7393 +# 35| mu35_7397(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7398(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7393 +# 35| r35_7399(glval) = VariableAddress[x528] : +# 35| r35_7400(glval) = FunctionAddress[~String] : +# 35| v35_7401(void) = Call[~String] : func:r35_7400, this:r35_7399 +# 35| mu35_7402(unknown) = ^CallSideEffect : ~m? +# 35| v35_7403(void) = ^IndirectReadSideEffect[-1] : &:r35_7399, ~m? +# 35| mu35_7404(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7399 +# 35| r35_7405(bool) = Constant[0] : +# 35| v35_7406(void) = ConditionalBranch : r35_7405 #-----| False -> Block 529 #-----| True -> Block 1026 -# 1606| Block 529 -# 1606| r1606_1(glval) = VariableAddress[x529] : -# 1606| mu1606_2(String) = Uninitialized[x529] : &:r1606_1 -# 1606| r1606_3(glval) = FunctionAddress[String] : -# 1606| v1606_4(void) = Call[String] : func:r1606_3, this:r1606_1 -# 1606| mu1606_5(unknown) = ^CallSideEffect : ~m? -# 1606| mu1606_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1606_1 -# 1607| r1607_1(glval) = VariableAddress[x529] : -# 1607| r1607_2(glval) = FunctionAddress[~String] : -# 1607| v1607_3(void) = Call[~String] : func:r1607_2, this:r1607_1 -# 1607| mu1607_4(unknown) = ^CallSideEffect : ~m? -# 1607| v1607_5(void) = ^IndirectReadSideEffect[-1] : &:r1607_1, ~m? -# 1607| mu1607_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1607_1 -# 1607| r1607_7(bool) = Constant[0] : -# 1607| v1607_8(void) = ConditionalBranch : r1607_7 +# 35| Block 529 +# 35| r35_7407(glval) = VariableAddress[x529] : +# 35| mu35_7408(String) = Uninitialized[x529] : &:r35_7407 +# 35| r35_7409(glval) = FunctionAddress[String] : +# 35| v35_7410(void) = Call[String] : func:r35_7409, this:r35_7407 +# 35| mu35_7411(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7412(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7407 +# 35| r35_7413(glval) = VariableAddress[x529] : +# 35| r35_7414(glval) = FunctionAddress[~String] : +# 35| v35_7415(void) = Call[~String] : func:r35_7414, this:r35_7413 +# 35| mu35_7416(unknown) = ^CallSideEffect : ~m? +# 35| v35_7417(void) = ^IndirectReadSideEffect[-1] : &:r35_7413, ~m? +# 35| mu35_7418(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7413 +# 35| r35_7419(bool) = Constant[0] : +# 35| v35_7420(void) = ConditionalBranch : r35_7419 #-----| False -> Block 530 #-----| True -> Block 1026 -# 1609| Block 530 -# 1609| r1609_1(glval) = VariableAddress[x530] : -# 1609| mu1609_2(String) = Uninitialized[x530] : &:r1609_1 -# 1609| r1609_3(glval) = FunctionAddress[String] : -# 1609| v1609_4(void) = Call[String] : func:r1609_3, this:r1609_1 -# 1609| mu1609_5(unknown) = ^CallSideEffect : ~m? -# 1609| mu1609_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1609_1 -# 1610| r1610_1(glval) = VariableAddress[x530] : -# 1610| r1610_2(glval) = FunctionAddress[~String] : -# 1610| v1610_3(void) = Call[~String] : func:r1610_2, this:r1610_1 -# 1610| mu1610_4(unknown) = ^CallSideEffect : ~m? -# 1610| v1610_5(void) = ^IndirectReadSideEffect[-1] : &:r1610_1, ~m? -# 1610| mu1610_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1610_1 -# 1610| r1610_7(bool) = Constant[0] : -# 1610| v1610_8(void) = ConditionalBranch : r1610_7 +# 35| Block 530 +# 35| r35_7421(glval) = VariableAddress[x530] : +# 35| mu35_7422(String) = Uninitialized[x530] : &:r35_7421 +# 35| r35_7423(glval) = FunctionAddress[String] : +# 35| v35_7424(void) = Call[String] : func:r35_7423, this:r35_7421 +# 35| mu35_7425(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7426(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7421 +# 35| r35_7427(glval) = VariableAddress[x530] : +# 35| r35_7428(glval) = FunctionAddress[~String] : +# 35| v35_7429(void) = Call[~String] : func:r35_7428, this:r35_7427 +# 35| mu35_7430(unknown) = ^CallSideEffect : ~m? +# 35| v35_7431(void) = ^IndirectReadSideEffect[-1] : &:r35_7427, ~m? +# 35| mu35_7432(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7427 +# 35| r35_7433(bool) = Constant[0] : +# 35| v35_7434(void) = ConditionalBranch : r35_7433 #-----| False -> Block 531 #-----| True -> Block 1026 -# 1612| Block 531 -# 1612| r1612_1(glval) = VariableAddress[x531] : -# 1612| mu1612_2(String) = Uninitialized[x531] : &:r1612_1 -# 1612| r1612_3(glval) = FunctionAddress[String] : -# 1612| v1612_4(void) = Call[String] : func:r1612_3, this:r1612_1 -# 1612| mu1612_5(unknown) = ^CallSideEffect : ~m? -# 1612| mu1612_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1612_1 -# 1613| r1613_1(glval) = VariableAddress[x531] : -# 1613| r1613_2(glval) = FunctionAddress[~String] : -# 1613| v1613_3(void) = Call[~String] : func:r1613_2, this:r1613_1 -# 1613| mu1613_4(unknown) = ^CallSideEffect : ~m? -# 1613| v1613_5(void) = ^IndirectReadSideEffect[-1] : &:r1613_1, ~m? -# 1613| mu1613_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1613_1 -# 1613| r1613_7(bool) = Constant[0] : -# 1613| v1613_8(void) = ConditionalBranch : r1613_7 +# 35| Block 531 +# 35| r35_7435(glval) = VariableAddress[x531] : +# 35| mu35_7436(String) = Uninitialized[x531] : &:r35_7435 +# 35| r35_7437(glval) = FunctionAddress[String] : +# 35| v35_7438(void) = Call[String] : func:r35_7437, this:r35_7435 +# 35| mu35_7439(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7440(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7435 +# 35| r35_7441(glval) = VariableAddress[x531] : +# 35| r35_7442(glval) = FunctionAddress[~String] : +# 35| v35_7443(void) = Call[~String] : func:r35_7442, this:r35_7441 +# 35| mu35_7444(unknown) = ^CallSideEffect : ~m? +# 35| v35_7445(void) = ^IndirectReadSideEffect[-1] : &:r35_7441, ~m? +# 35| mu35_7446(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7441 +# 35| r35_7447(bool) = Constant[0] : +# 35| v35_7448(void) = ConditionalBranch : r35_7447 #-----| False -> Block 532 #-----| True -> Block 1026 -# 1615| Block 532 -# 1615| r1615_1(glval) = VariableAddress[x532] : -# 1615| mu1615_2(String) = Uninitialized[x532] : &:r1615_1 -# 1615| r1615_3(glval) = FunctionAddress[String] : -# 1615| v1615_4(void) = Call[String] : func:r1615_3, this:r1615_1 -# 1615| mu1615_5(unknown) = ^CallSideEffect : ~m? -# 1615| mu1615_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1615_1 -# 1616| r1616_1(glval) = VariableAddress[x532] : -# 1616| r1616_2(glval) = FunctionAddress[~String] : -# 1616| v1616_3(void) = Call[~String] : func:r1616_2, this:r1616_1 -# 1616| mu1616_4(unknown) = ^CallSideEffect : ~m? -# 1616| v1616_5(void) = ^IndirectReadSideEffect[-1] : &:r1616_1, ~m? -# 1616| mu1616_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1616_1 -# 1616| r1616_7(bool) = Constant[0] : -# 1616| v1616_8(void) = ConditionalBranch : r1616_7 +# 35| Block 532 +# 35| r35_7449(glval) = VariableAddress[x532] : +# 35| mu35_7450(String) = Uninitialized[x532] : &:r35_7449 +# 35| r35_7451(glval) = FunctionAddress[String] : +# 35| v35_7452(void) = Call[String] : func:r35_7451, this:r35_7449 +# 35| mu35_7453(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7454(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7449 +# 35| r35_7455(glval) = VariableAddress[x532] : +# 35| r35_7456(glval) = FunctionAddress[~String] : +# 35| v35_7457(void) = Call[~String] : func:r35_7456, this:r35_7455 +# 35| mu35_7458(unknown) = ^CallSideEffect : ~m? +# 35| v35_7459(void) = ^IndirectReadSideEffect[-1] : &:r35_7455, ~m? +# 35| mu35_7460(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7455 +# 35| r35_7461(bool) = Constant[0] : +# 35| v35_7462(void) = ConditionalBranch : r35_7461 #-----| False -> Block 533 #-----| True -> Block 1026 -# 1618| Block 533 -# 1618| r1618_1(glval) = VariableAddress[x533] : -# 1618| mu1618_2(String) = Uninitialized[x533] : &:r1618_1 -# 1618| r1618_3(glval) = FunctionAddress[String] : -# 1618| v1618_4(void) = Call[String] : func:r1618_3, this:r1618_1 -# 1618| mu1618_5(unknown) = ^CallSideEffect : ~m? -# 1618| mu1618_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1618_1 -# 1619| r1619_1(glval) = VariableAddress[x533] : -# 1619| r1619_2(glval) = FunctionAddress[~String] : -# 1619| v1619_3(void) = Call[~String] : func:r1619_2, this:r1619_1 -# 1619| mu1619_4(unknown) = ^CallSideEffect : ~m? -# 1619| v1619_5(void) = ^IndirectReadSideEffect[-1] : &:r1619_1, ~m? -# 1619| mu1619_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1619_1 -# 1619| r1619_7(bool) = Constant[0] : -# 1619| v1619_8(void) = ConditionalBranch : r1619_7 +# 35| Block 533 +# 35| r35_7463(glval) = VariableAddress[x533] : +# 35| mu35_7464(String) = Uninitialized[x533] : &:r35_7463 +# 35| r35_7465(glval) = FunctionAddress[String] : +# 35| v35_7466(void) = Call[String] : func:r35_7465, this:r35_7463 +# 35| mu35_7467(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7468(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7463 +# 35| r35_7469(glval) = VariableAddress[x533] : +# 35| r35_7470(glval) = FunctionAddress[~String] : +# 35| v35_7471(void) = Call[~String] : func:r35_7470, this:r35_7469 +# 35| mu35_7472(unknown) = ^CallSideEffect : ~m? +# 35| v35_7473(void) = ^IndirectReadSideEffect[-1] : &:r35_7469, ~m? +# 35| mu35_7474(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7469 +# 35| r35_7475(bool) = Constant[0] : +# 35| v35_7476(void) = ConditionalBranch : r35_7475 #-----| False -> Block 534 #-----| True -> Block 1026 -# 1621| Block 534 -# 1621| r1621_1(glval) = VariableAddress[x534] : -# 1621| mu1621_2(String) = Uninitialized[x534] : &:r1621_1 -# 1621| r1621_3(glval) = FunctionAddress[String] : -# 1621| v1621_4(void) = Call[String] : func:r1621_3, this:r1621_1 -# 1621| mu1621_5(unknown) = ^CallSideEffect : ~m? -# 1621| mu1621_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1621_1 -# 1622| r1622_1(glval) = VariableAddress[x534] : -# 1622| r1622_2(glval) = FunctionAddress[~String] : -# 1622| v1622_3(void) = Call[~String] : func:r1622_2, this:r1622_1 -# 1622| mu1622_4(unknown) = ^CallSideEffect : ~m? -# 1622| v1622_5(void) = ^IndirectReadSideEffect[-1] : &:r1622_1, ~m? -# 1622| mu1622_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1622_1 -# 1622| r1622_7(bool) = Constant[0] : -# 1622| v1622_8(void) = ConditionalBranch : r1622_7 +# 35| Block 534 +# 35| r35_7477(glval) = VariableAddress[x534] : +# 35| mu35_7478(String) = Uninitialized[x534] : &:r35_7477 +# 35| r35_7479(glval) = FunctionAddress[String] : +# 35| v35_7480(void) = Call[String] : func:r35_7479, this:r35_7477 +# 35| mu35_7481(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7482(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7477 +# 35| r35_7483(glval) = VariableAddress[x534] : +# 35| r35_7484(glval) = FunctionAddress[~String] : +# 35| v35_7485(void) = Call[~String] : func:r35_7484, this:r35_7483 +# 35| mu35_7486(unknown) = ^CallSideEffect : ~m? +# 35| v35_7487(void) = ^IndirectReadSideEffect[-1] : &:r35_7483, ~m? +# 35| mu35_7488(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7483 +# 35| r35_7489(bool) = Constant[0] : +# 35| v35_7490(void) = ConditionalBranch : r35_7489 #-----| False -> Block 535 #-----| True -> Block 1026 -# 1624| Block 535 -# 1624| r1624_1(glval) = VariableAddress[x535] : -# 1624| mu1624_2(String) = Uninitialized[x535] : &:r1624_1 -# 1624| r1624_3(glval) = FunctionAddress[String] : -# 1624| v1624_4(void) = Call[String] : func:r1624_3, this:r1624_1 -# 1624| mu1624_5(unknown) = ^CallSideEffect : ~m? -# 1624| mu1624_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1624_1 -# 1625| r1625_1(glval) = VariableAddress[x535] : -# 1625| r1625_2(glval) = FunctionAddress[~String] : -# 1625| v1625_3(void) = Call[~String] : func:r1625_2, this:r1625_1 -# 1625| mu1625_4(unknown) = ^CallSideEffect : ~m? -# 1625| v1625_5(void) = ^IndirectReadSideEffect[-1] : &:r1625_1, ~m? -# 1625| mu1625_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1625_1 -# 1625| r1625_7(bool) = Constant[0] : -# 1625| v1625_8(void) = ConditionalBranch : r1625_7 +# 35| Block 535 +# 35| r35_7491(glval) = VariableAddress[x535] : +# 35| mu35_7492(String) = Uninitialized[x535] : &:r35_7491 +# 35| r35_7493(glval) = FunctionAddress[String] : +# 35| v35_7494(void) = Call[String] : func:r35_7493, this:r35_7491 +# 35| mu35_7495(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7496(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7491 +# 35| r35_7497(glval) = VariableAddress[x535] : +# 35| r35_7498(glval) = FunctionAddress[~String] : +# 35| v35_7499(void) = Call[~String] : func:r35_7498, this:r35_7497 +# 35| mu35_7500(unknown) = ^CallSideEffect : ~m? +# 35| v35_7501(void) = ^IndirectReadSideEffect[-1] : &:r35_7497, ~m? +# 35| mu35_7502(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7497 +# 35| r35_7503(bool) = Constant[0] : +# 35| v35_7504(void) = ConditionalBranch : r35_7503 #-----| False -> Block 536 #-----| True -> Block 1026 -# 1627| Block 536 -# 1627| r1627_1(glval) = VariableAddress[x536] : -# 1627| mu1627_2(String) = Uninitialized[x536] : &:r1627_1 -# 1627| r1627_3(glval) = FunctionAddress[String] : -# 1627| v1627_4(void) = Call[String] : func:r1627_3, this:r1627_1 -# 1627| mu1627_5(unknown) = ^CallSideEffect : ~m? -# 1627| mu1627_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1627_1 -# 1628| r1628_1(glval) = VariableAddress[x536] : -# 1628| r1628_2(glval) = FunctionAddress[~String] : -# 1628| v1628_3(void) = Call[~String] : func:r1628_2, this:r1628_1 -# 1628| mu1628_4(unknown) = ^CallSideEffect : ~m? -# 1628| v1628_5(void) = ^IndirectReadSideEffect[-1] : &:r1628_1, ~m? -# 1628| mu1628_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1628_1 -# 1628| r1628_7(bool) = Constant[0] : -# 1628| v1628_8(void) = ConditionalBranch : r1628_7 +# 35| Block 536 +# 35| r35_7505(glval) = VariableAddress[x536] : +# 35| mu35_7506(String) = Uninitialized[x536] : &:r35_7505 +# 35| r35_7507(glval) = FunctionAddress[String] : +# 35| v35_7508(void) = Call[String] : func:r35_7507, this:r35_7505 +# 35| mu35_7509(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7510(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7505 +# 35| r35_7511(glval) = VariableAddress[x536] : +# 35| r35_7512(glval) = FunctionAddress[~String] : +# 35| v35_7513(void) = Call[~String] : func:r35_7512, this:r35_7511 +# 35| mu35_7514(unknown) = ^CallSideEffect : ~m? +# 35| v35_7515(void) = ^IndirectReadSideEffect[-1] : &:r35_7511, ~m? +# 35| mu35_7516(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7511 +# 35| r35_7517(bool) = Constant[0] : +# 35| v35_7518(void) = ConditionalBranch : r35_7517 #-----| False -> Block 537 #-----| True -> Block 1026 -# 1630| Block 537 -# 1630| r1630_1(glval) = VariableAddress[x537] : -# 1630| mu1630_2(String) = Uninitialized[x537] : &:r1630_1 -# 1630| r1630_3(glval) = FunctionAddress[String] : -# 1630| v1630_4(void) = Call[String] : func:r1630_3, this:r1630_1 -# 1630| mu1630_5(unknown) = ^CallSideEffect : ~m? -# 1630| mu1630_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1630_1 -# 1631| r1631_1(glval) = VariableAddress[x537] : -# 1631| r1631_2(glval) = FunctionAddress[~String] : -# 1631| v1631_3(void) = Call[~String] : func:r1631_2, this:r1631_1 -# 1631| mu1631_4(unknown) = ^CallSideEffect : ~m? -# 1631| v1631_5(void) = ^IndirectReadSideEffect[-1] : &:r1631_1, ~m? -# 1631| mu1631_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1631_1 -# 1631| r1631_7(bool) = Constant[0] : -# 1631| v1631_8(void) = ConditionalBranch : r1631_7 +# 35| Block 537 +# 35| r35_7519(glval) = VariableAddress[x537] : +# 35| mu35_7520(String) = Uninitialized[x537] : &:r35_7519 +# 35| r35_7521(glval) = FunctionAddress[String] : +# 35| v35_7522(void) = Call[String] : func:r35_7521, this:r35_7519 +# 35| mu35_7523(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7524(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7519 +# 35| r35_7525(glval) = VariableAddress[x537] : +# 35| r35_7526(glval) = FunctionAddress[~String] : +# 35| v35_7527(void) = Call[~String] : func:r35_7526, this:r35_7525 +# 35| mu35_7528(unknown) = ^CallSideEffect : ~m? +# 35| v35_7529(void) = ^IndirectReadSideEffect[-1] : &:r35_7525, ~m? +# 35| mu35_7530(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7525 +# 35| r35_7531(bool) = Constant[0] : +# 35| v35_7532(void) = ConditionalBranch : r35_7531 #-----| False -> Block 538 #-----| True -> Block 1026 -# 1633| Block 538 -# 1633| r1633_1(glval) = VariableAddress[x538] : -# 1633| mu1633_2(String) = Uninitialized[x538] : &:r1633_1 -# 1633| r1633_3(glval) = FunctionAddress[String] : -# 1633| v1633_4(void) = Call[String] : func:r1633_3, this:r1633_1 -# 1633| mu1633_5(unknown) = ^CallSideEffect : ~m? -# 1633| mu1633_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1633_1 -# 1634| r1634_1(glval) = VariableAddress[x538] : -# 1634| r1634_2(glval) = FunctionAddress[~String] : -# 1634| v1634_3(void) = Call[~String] : func:r1634_2, this:r1634_1 -# 1634| mu1634_4(unknown) = ^CallSideEffect : ~m? -# 1634| v1634_5(void) = ^IndirectReadSideEffect[-1] : &:r1634_1, ~m? -# 1634| mu1634_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1634_1 -# 1634| r1634_7(bool) = Constant[0] : -# 1634| v1634_8(void) = ConditionalBranch : r1634_7 +# 35| Block 538 +# 35| r35_7533(glval) = VariableAddress[x538] : +# 35| mu35_7534(String) = Uninitialized[x538] : &:r35_7533 +# 35| r35_7535(glval) = FunctionAddress[String] : +# 35| v35_7536(void) = Call[String] : func:r35_7535, this:r35_7533 +# 35| mu35_7537(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7538(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7533 +# 35| r35_7539(glval) = VariableAddress[x538] : +# 35| r35_7540(glval) = FunctionAddress[~String] : +# 35| v35_7541(void) = Call[~String] : func:r35_7540, this:r35_7539 +# 35| mu35_7542(unknown) = ^CallSideEffect : ~m? +# 35| v35_7543(void) = ^IndirectReadSideEffect[-1] : &:r35_7539, ~m? +# 35| mu35_7544(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7539 +# 35| r35_7545(bool) = Constant[0] : +# 35| v35_7546(void) = ConditionalBranch : r35_7545 #-----| False -> Block 539 #-----| True -> Block 1026 -# 1636| Block 539 -# 1636| r1636_1(glval) = VariableAddress[x539] : -# 1636| mu1636_2(String) = Uninitialized[x539] : &:r1636_1 -# 1636| r1636_3(glval) = FunctionAddress[String] : -# 1636| v1636_4(void) = Call[String] : func:r1636_3, this:r1636_1 -# 1636| mu1636_5(unknown) = ^CallSideEffect : ~m? -# 1636| mu1636_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1636_1 -# 1637| r1637_1(glval) = VariableAddress[x539] : -# 1637| r1637_2(glval) = FunctionAddress[~String] : -# 1637| v1637_3(void) = Call[~String] : func:r1637_2, this:r1637_1 -# 1637| mu1637_4(unknown) = ^CallSideEffect : ~m? -# 1637| v1637_5(void) = ^IndirectReadSideEffect[-1] : &:r1637_1, ~m? -# 1637| mu1637_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1637_1 -# 1637| r1637_7(bool) = Constant[0] : -# 1637| v1637_8(void) = ConditionalBranch : r1637_7 +# 35| Block 539 +# 35| r35_7547(glval) = VariableAddress[x539] : +# 35| mu35_7548(String) = Uninitialized[x539] : &:r35_7547 +# 35| r35_7549(glval) = FunctionAddress[String] : +# 35| v35_7550(void) = Call[String] : func:r35_7549, this:r35_7547 +# 35| mu35_7551(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7552(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7547 +# 35| r35_7553(glval) = VariableAddress[x539] : +# 35| r35_7554(glval) = FunctionAddress[~String] : +# 35| v35_7555(void) = Call[~String] : func:r35_7554, this:r35_7553 +# 35| mu35_7556(unknown) = ^CallSideEffect : ~m? +# 35| v35_7557(void) = ^IndirectReadSideEffect[-1] : &:r35_7553, ~m? +# 35| mu35_7558(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7553 +# 35| r35_7559(bool) = Constant[0] : +# 35| v35_7560(void) = ConditionalBranch : r35_7559 #-----| False -> Block 540 #-----| True -> Block 1026 -# 1639| Block 540 -# 1639| r1639_1(glval) = VariableAddress[x540] : -# 1639| mu1639_2(String) = Uninitialized[x540] : &:r1639_1 -# 1639| r1639_3(glval) = FunctionAddress[String] : -# 1639| v1639_4(void) = Call[String] : func:r1639_3, this:r1639_1 -# 1639| mu1639_5(unknown) = ^CallSideEffect : ~m? -# 1639| mu1639_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1639_1 -# 1640| r1640_1(glval) = VariableAddress[x540] : -# 1640| r1640_2(glval) = FunctionAddress[~String] : -# 1640| v1640_3(void) = Call[~String] : func:r1640_2, this:r1640_1 -# 1640| mu1640_4(unknown) = ^CallSideEffect : ~m? -# 1640| v1640_5(void) = ^IndirectReadSideEffect[-1] : &:r1640_1, ~m? -# 1640| mu1640_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1640_1 -# 1640| r1640_7(bool) = Constant[0] : -# 1640| v1640_8(void) = ConditionalBranch : r1640_7 +# 35| Block 540 +# 35| r35_7561(glval) = VariableAddress[x540] : +# 35| mu35_7562(String) = Uninitialized[x540] : &:r35_7561 +# 35| r35_7563(glval) = FunctionAddress[String] : +# 35| v35_7564(void) = Call[String] : func:r35_7563, this:r35_7561 +# 35| mu35_7565(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7566(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7561 +# 35| r35_7567(glval) = VariableAddress[x540] : +# 35| r35_7568(glval) = FunctionAddress[~String] : +# 35| v35_7569(void) = Call[~String] : func:r35_7568, this:r35_7567 +# 35| mu35_7570(unknown) = ^CallSideEffect : ~m? +# 35| v35_7571(void) = ^IndirectReadSideEffect[-1] : &:r35_7567, ~m? +# 35| mu35_7572(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7567 +# 35| r35_7573(bool) = Constant[0] : +# 35| v35_7574(void) = ConditionalBranch : r35_7573 #-----| False -> Block 541 #-----| True -> Block 1026 -# 1642| Block 541 -# 1642| r1642_1(glval) = VariableAddress[x541] : -# 1642| mu1642_2(String) = Uninitialized[x541] : &:r1642_1 -# 1642| r1642_3(glval) = FunctionAddress[String] : -# 1642| v1642_4(void) = Call[String] : func:r1642_3, this:r1642_1 -# 1642| mu1642_5(unknown) = ^CallSideEffect : ~m? -# 1642| mu1642_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1642_1 -# 1643| r1643_1(glval) = VariableAddress[x541] : -# 1643| r1643_2(glval) = FunctionAddress[~String] : -# 1643| v1643_3(void) = Call[~String] : func:r1643_2, this:r1643_1 -# 1643| mu1643_4(unknown) = ^CallSideEffect : ~m? -# 1643| v1643_5(void) = ^IndirectReadSideEffect[-1] : &:r1643_1, ~m? -# 1643| mu1643_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1643_1 -# 1643| r1643_7(bool) = Constant[0] : -# 1643| v1643_8(void) = ConditionalBranch : r1643_7 +# 35| Block 541 +# 35| r35_7575(glval) = VariableAddress[x541] : +# 35| mu35_7576(String) = Uninitialized[x541] : &:r35_7575 +# 35| r35_7577(glval) = FunctionAddress[String] : +# 35| v35_7578(void) = Call[String] : func:r35_7577, this:r35_7575 +# 35| mu35_7579(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7580(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7575 +# 35| r35_7581(glval) = VariableAddress[x541] : +# 35| r35_7582(glval) = FunctionAddress[~String] : +# 35| v35_7583(void) = Call[~String] : func:r35_7582, this:r35_7581 +# 35| mu35_7584(unknown) = ^CallSideEffect : ~m? +# 35| v35_7585(void) = ^IndirectReadSideEffect[-1] : &:r35_7581, ~m? +# 35| mu35_7586(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7581 +# 35| r35_7587(bool) = Constant[0] : +# 35| v35_7588(void) = ConditionalBranch : r35_7587 #-----| False -> Block 542 #-----| True -> Block 1026 -# 1645| Block 542 -# 1645| r1645_1(glval) = VariableAddress[x542] : -# 1645| mu1645_2(String) = Uninitialized[x542] : &:r1645_1 -# 1645| r1645_3(glval) = FunctionAddress[String] : -# 1645| v1645_4(void) = Call[String] : func:r1645_3, this:r1645_1 -# 1645| mu1645_5(unknown) = ^CallSideEffect : ~m? -# 1645| mu1645_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1645_1 -# 1646| r1646_1(glval) = VariableAddress[x542] : -# 1646| r1646_2(glval) = FunctionAddress[~String] : -# 1646| v1646_3(void) = Call[~String] : func:r1646_2, this:r1646_1 -# 1646| mu1646_4(unknown) = ^CallSideEffect : ~m? -# 1646| v1646_5(void) = ^IndirectReadSideEffect[-1] : &:r1646_1, ~m? -# 1646| mu1646_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1646_1 -# 1646| r1646_7(bool) = Constant[0] : -# 1646| v1646_8(void) = ConditionalBranch : r1646_7 +# 35| Block 542 +# 35| r35_7589(glval) = VariableAddress[x542] : +# 35| mu35_7590(String) = Uninitialized[x542] : &:r35_7589 +# 35| r35_7591(glval) = FunctionAddress[String] : +# 35| v35_7592(void) = Call[String] : func:r35_7591, this:r35_7589 +# 35| mu35_7593(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7594(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7589 +# 35| r35_7595(glval) = VariableAddress[x542] : +# 35| r35_7596(glval) = FunctionAddress[~String] : +# 35| v35_7597(void) = Call[~String] : func:r35_7596, this:r35_7595 +# 35| mu35_7598(unknown) = ^CallSideEffect : ~m? +# 35| v35_7599(void) = ^IndirectReadSideEffect[-1] : &:r35_7595, ~m? +# 35| mu35_7600(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7595 +# 35| r35_7601(bool) = Constant[0] : +# 35| v35_7602(void) = ConditionalBranch : r35_7601 #-----| False -> Block 543 #-----| True -> Block 1026 -# 1648| Block 543 -# 1648| r1648_1(glval) = VariableAddress[x543] : -# 1648| mu1648_2(String) = Uninitialized[x543] : &:r1648_1 -# 1648| r1648_3(glval) = FunctionAddress[String] : -# 1648| v1648_4(void) = Call[String] : func:r1648_3, this:r1648_1 -# 1648| mu1648_5(unknown) = ^CallSideEffect : ~m? -# 1648| mu1648_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1648_1 -# 1649| r1649_1(glval) = VariableAddress[x543] : -# 1649| r1649_2(glval) = FunctionAddress[~String] : -# 1649| v1649_3(void) = Call[~String] : func:r1649_2, this:r1649_1 -# 1649| mu1649_4(unknown) = ^CallSideEffect : ~m? -# 1649| v1649_5(void) = ^IndirectReadSideEffect[-1] : &:r1649_1, ~m? -# 1649| mu1649_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1649_1 -# 1649| r1649_7(bool) = Constant[0] : -# 1649| v1649_8(void) = ConditionalBranch : r1649_7 +# 35| Block 543 +# 35| r35_7603(glval) = VariableAddress[x543] : +# 35| mu35_7604(String) = Uninitialized[x543] : &:r35_7603 +# 35| r35_7605(glval) = FunctionAddress[String] : +# 35| v35_7606(void) = Call[String] : func:r35_7605, this:r35_7603 +# 35| mu35_7607(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7608(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7603 +# 35| r35_7609(glval) = VariableAddress[x543] : +# 35| r35_7610(glval) = FunctionAddress[~String] : +# 35| v35_7611(void) = Call[~String] : func:r35_7610, this:r35_7609 +# 35| mu35_7612(unknown) = ^CallSideEffect : ~m? +# 35| v35_7613(void) = ^IndirectReadSideEffect[-1] : &:r35_7609, ~m? +# 35| mu35_7614(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7609 +# 35| r35_7615(bool) = Constant[0] : +# 35| v35_7616(void) = ConditionalBranch : r35_7615 #-----| False -> Block 544 #-----| True -> Block 1026 -# 1651| Block 544 -# 1651| r1651_1(glval) = VariableAddress[x544] : -# 1651| mu1651_2(String) = Uninitialized[x544] : &:r1651_1 -# 1651| r1651_3(glval) = FunctionAddress[String] : -# 1651| v1651_4(void) = Call[String] : func:r1651_3, this:r1651_1 -# 1651| mu1651_5(unknown) = ^CallSideEffect : ~m? -# 1651| mu1651_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1651_1 -# 1652| r1652_1(glval) = VariableAddress[x544] : -# 1652| r1652_2(glval) = FunctionAddress[~String] : -# 1652| v1652_3(void) = Call[~String] : func:r1652_2, this:r1652_1 -# 1652| mu1652_4(unknown) = ^CallSideEffect : ~m? -# 1652| v1652_5(void) = ^IndirectReadSideEffect[-1] : &:r1652_1, ~m? -# 1652| mu1652_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1652_1 -# 1652| r1652_7(bool) = Constant[0] : -# 1652| v1652_8(void) = ConditionalBranch : r1652_7 +# 35| Block 544 +# 35| r35_7617(glval) = VariableAddress[x544] : +# 35| mu35_7618(String) = Uninitialized[x544] : &:r35_7617 +# 35| r35_7619(glval) = FunctionAddress[String] : +# 35| v35_7620(void) = Call[String] : func:r35_7619, this:r35_7617 +# 35| mu35_7621(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7622(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7617 +# 35| r35_7623(glval) = VariableAddress[x544] : +# 35| r35_7624(glval) = FunctionAddress[~String] : +# 35| v35_7625(void) = Call[~String] : func:r35_7624, this:r35_7623 +# 35| mu35_7626(unknown) = ^CallSideEffect : ~m? +# 35| v35_7627(void) = ^IndirectReadSideEffect[-1] : &:r35_7623, ~m? +# 35| mu35_7628(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7623 +# 35| r35_7629(bool) = Constant[0] : +# 35| v35_7630(void) = ConditionalBranch : r35_7629 #-----| False -> Block 545 #-----| True -> Block 1026 -# 1654| Block 545 -# 1654| r1654_1(glval) = VariableAddress[x545] : -# 1654| mu1654_2(String) = Uninitialized[x545] : &:r1654_1 -# 1654| r1654_3(glval) = FunctionAddress[String] : -# 1654| v1654_4(void) = Call[String] : func:r1654_3, this:r1654_1 -# 1654| mu1654_5(unknown) = ^CallSideEffect : ~m? -# 1654| mu1654_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1654_1 -# 1655| r1655_1(glval) = VariableAddress[x545] : -# 1655| r1655_2(glval) = FunctionAddress[~String] : -# 1655| v1655_3(void) = Call[~String] : func:r1655_2, this:r1655_1 -# 1655| mu1655_4(unknown) = ^CallSideEffect : ~m? -# 1655| v1655_5(void) = ^IndirectReadSideEffect[-1] : &:r1655_1, ~m? -# 1655| mu1655_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1655_1 -# 1655| r1655_7(bool) = Constant[0] : -# 1655| v1655_8(void) = ConditionalBranch : r1655_7 +# 35| Block 545 +# 35| r35_7631(glval) = VariableAddress[x545] : +# 35| mu35_7632(String) = Uninitialized[x545] : &:r35_7631 +# 35| r35_7633(glval) = FunctionAddress[String] : +# 35| v35_7634(void) = Call[String] : func:r35_7633, this:r35_7631 +# 35| mu35_7635(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7636(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7631 +# 35| r35_7637(glval) = VariableAddress[x545] : +# 35| r35_7638(glval) = FunctionAddress[~String] : +# 35| v35_7639(void) = Call[~String] : func:r35_7638, this:r35_7637 +# 35| mu35_7640(unknown) = ^CallSideEffect : ~m? +# 35| v35_7641(void) = ^IndirectReadSideEffect[-1] : &:r35_7637, ~m? +# 35| mu35_7642(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7637 +# 35| r35_7643(bool) = Constant[0] : +# 35| v35_7644(void) = ConditionalBranch : r35_7643 #-----| False -> Block 546 #-----| True -> Block 1026 -# 1657| Block 546 -# 1657| r1657_1(glval) = VariableAddress[x546] : -# 1657| mu1657_2(String) = Uninitialized[x546] : &:r1657_1 -# 1657| r1657_3(glval) = FunctionAddress[String] : -# 1657| v1657_4(void) = Call[String] : func:r1657_3, this:r1657_1 -# 1657| mu1657_5(unknown) = ^CallSideEffect : ~m? -# 1657| mu1657_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1657_1 -# 1658| r1658_1(glval) = VariableAddress[x546] : -# 1658| r1658_2(glval) = FunctionAddress[~String] : -# 1658| v1658_3(void) = Call[~String] : func:r1658_2, this:r1658_1 -# 1658| mu1658_4(unknown) = ^CallSideEffect : ~m? -# 1658| v1658_5(void) = ^IndirectReadSideEffect[-1] : &:r1658_1, ~m? -# 1658| mu1658_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1658_1 -# 1658| r1658_7(bool) = Constant[0] : -# 1658| v1658_8(void) = ConditionalBranch : r1658_7 +# 35| Block 546 +# 35| r35_7645(glval) = VariableAddress[x546] : +# 35| mu35_7646(String) = Uninitialized[x546] : &:r35_7645 +# 35| r35_7647(glval) = FunctionAddress[String] : +# 35| v35_7648(void) = Call[String] : func:r35_7647, this:r35_7645 +# 35| mu35_7649(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7650(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7645 +# 35| r35_7651(glval) = VariableAddress[x546] : +# 35| r35_7652(glval) = FunctionAddress[~String] : +# 35| v35_7653(void) = Call[~String] : func:r35_7652, this:r35_7651 +# 35| mu35_7654(unknown) = ^CallSideEffect : ~m? +# 35| v35_7655(void) = ^IndirectReadSideEffect[-1] : &:r35_7651, ~m? +# 35| mu35_7656(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7651 +# 35| r35_7657(bool) = Constant[0] : +# 35| v35_7658(void) = ConditionalBranch : r35_7657 #-----| False -> Block 547 #-----| True -> Block 1026 -# 1660| Block 547 -# 1660| r1660_1(glval) = VariableAddress[x547] : -# 1660| mu1660_2(String) = Uninitialized[x547] : &:r1660_1 -# 1660| r1660_3(glval) = FunctionAddress[String] : -# 1660| v1660_4(void) = Call[String] : func:r1660_3, this:r1660_1 -# 1660| mu1660_5(unknown) = ^CallSideEffect : ~m? -# 1660| mu1660_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1660_1 -# 1661| r1661_1(glval) = VariableAddress[x547] : -# 1661| r1661_2(glval) = FunctionAddress[~String] : -# 1661| v1661_3(void) = Call[~String] : func:r1661_2, this:r1661_1 -# 1661| mu1661_4(unknown) = ^CallSideEffect : ~m? -# 1661| v1661_5(void) = ^IndirectReadSideEffect[-1] : &:r1661_1, ~m? -# 1661| mu1661_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1661_1 -# 1661| r1661_7(bool) = Constant[0] : -# 1661| v1661_8(void) = ConditionalBranch : r1661_7 +# 35| Block 547 +# 35| r35_7659(glval) = VariableAddress[x547] : +# 35| mu35_7660(String) = Uninitialized[x547] : &:r35_7659 +# 35| r35_7661(glval) = FunctionAddress[String] : +# 35| v35_7662(void) = Call[String] : func:r35_7661, this:r35_7659 +# 35| mu35_7663(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7664(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7659 +# 35| r35_7665(glval) = VariableAddress[x547] : +# 35| r35_7666(glval) = FunctionAddress[~String] : +# 35| v35_7667(void) = Call[~String] : func:r35_7666, this:r35_7665 +# 35| mu35_7668(unknown) = ^CallSideEffect : ~m? +# 35| v35_7669(void) = ^IndirectReadSideEffect[-1] : &:r35_7665, ~m? +# 35| mu35_7670(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7665 +# 35| r35_7671(bool) = Constant[0] : +# 35| v35_7672(void) = ConditionalBranch : r35_7671 #-----| False -> Block 548 #-----| True -> Block 1026 -# 1663| Block 548 -# 1663| r1663_1(glval) = VariableAddress[x548] : -# 1663| mu1663_2(String) = Uninitialized[x548] : &:r1663_1 -# 1663| r1663_3(glval) = FunctionAddress[String] : -# 1663| v1663_4(void) = Call[String] : func:r1663_3, this:r1663_1 -# 1663| mu1663_5(unknown) = ^CallSideEffect : ~m? -# 1663| mu1663_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1663_1 -# 1664| r1664_1(glval) = VariableAddress[x548] : -# 1664| r1664_2(glval) = FunctionAddress[~String] : -# 1664| v1664_3(void) = Call[~String] : func:r1664_2, this:r1664_1 -# 1664| mu1664_4(unknown) = ^CallSideEffect : ~m? -# 1664| v1664_5(void) = ^IndirectReadSideEffect[-1] : &:r1664_1, ~m? -# 1664| mu1664_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1664_1 -# 1664| r1664_7(bool) = Constant[0] : -# 1664| v1664_8(void) = ConditionalBranch : r1664_7 +# 35| Block 548 +# 35| r35_7673(glval) = VariableAddress[x548] : +# 35| mu35_7674(String) = Uninitialized[x548] : &:r35_7673 +# 35| r35_7675(glval) = FunctionAddress[String] : +# 35| v35_7676(void) = Call[String] : func:r35_7675, this:r35_7673 +# 35| mu35_7677(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7678(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7673 +# 35| r35_7679(glval) = VariableAddress[x548] : +# 35| r35_7680(glval) = FunctionAddress[~String] : +# 35| v35_7681(void) = Call[~String] : func:r35_7680, this:r35_7679 +# 35| mu35_7682(unknown) = ^CallSideEffect : ~m? +# 35| v35_7683(void) = ^IndirectReadSideEffect[-1] : &:r35_7679, ~m? +# 35| mu35_7684(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7679 +# 35| r35_7685(bool) = Constant[0] : +# 35| v35_7686(void) = ConditionalBranch : r35_7685 #-----| False -> Block 549 #-----| True -> Block 1026 -# 1666| Block 549 -# 1666| r1666_1(glval) = VariableAddress[x549] : -# 1666| mu1666_2(String) = Uninitialized[x549] : &:r1666_1 -# 1666| r1666_3(glval) = FunctionAddress[String] : -# 1666| v1666_4(void) = Call[String] : func:r1666_3, this:r1666_1 -# 1666| mu1666_5(unknown) = ^CallSideEffect : ~m? -# 1666| mu1666_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1666_1 -# 1667| r1667_1(glval) = VariableAddress[x549] : -# 1667| r1667_2(glval) = FunctionAddress[~String] : -# 1667| v1667_3(void) = Call[~String] : func:r1667_2, this:r1667_1 -# 1667| mu1667_4(unknown) = ^CallSideEffect : ~m? -# 1667| v1667_5(void) = ^IndirectReadSideEffect[-1] : &:r1667_1, ~m? -# 1667| mu1667_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1667_1 -# 1667| r1667_7(bool) = Constant[0] : -# 1667| v1667_8(void) = ConditionalBranch : r1667_7 +# 35| Block 549 +# 35| r35_7687(glval) = VariableAddress[x549] : +# 35| mu35_7688(String) = Uninitialized[x549] : &:r35_7687 +# 35| r35_7689(glval) = FunctionAddress[String] : +# 35| v35_7690(void) = Call[String] : func:r35_7689, this:r35_7687 +# 35| mu35_7691(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7692(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7687 +# 35| r35_7693(glval) = VariableAddress[x549] : +# 35| r35_7694(glval) = FunctionAddress[~String] : +# 35| v35_7695(void) = Call[~String] : func:r35_7694, this:r35_7693 +# 35| mu35_7696(unknown) = ^CallSideEffect : ~m? +# 35| v35_7697(void) = ^IndirectReadSideEffect[-1] : &:r35_7693, ~m? +# 35| mu35_7698(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7693 +# 35| r35_7699(bool) = Constant[0] : +# 35| v35_7700(void) = ConditionalBranch : r35_7699 #-----| False -> Block 550 #-----| True -> Block 1026 -# 1669| Block 550 -# 1669| r1669_1(glval) = VariableAddress[x550] : -# 1669| mu1669_2(String) = Uninitialized[x550] : &:r1669_1 -# 1669| r1669_3(glval) = FunctionAddress[String] : -# 1669| v1669_4(void) = Call[String] : func:r1669_3, this:r1669_1 -# 1669| mu1669_5(unknown) = ^CallSideEffect : ~m? -# 1669| mu1669_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1669_1 -# 1670| r1670_1(glval) = VariableAddress[x550] : -# 1670| r1670_2(glval) = FunctionAddress[~String] : -# 1670| v1670_3(void) = Call[~String] : func:r1670_2, this:r1670_1 -# 1670| mu1670_4(unknown) = ^CallSideEffect : ~m? -# 1670| v1670_5(void) = ^IndirectReadSideEffect[-1] : &:r1670_1, ~m? -# 1670| mu1670_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1670_1 -# 1670| r1670_7(bool) = Constant[0] : -# 1670| v1670_8(void) = ConditionalBranch : r1670_7 +# 35| Block 550 +# 35| r35_7701(glval) = VariableAddress[x550] : +# 35| mu35_7702(String) = Uninitialized[x550] : &:r35_7701 +# 35| r35_7703(glval) = FunctionAddress[String] : +# 35| v35_7704(void) = Call[String] : func:r35_7703, this:r35_7701 +# 35| mu35_7705(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7706(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7701 +# 35| r35_7707(glval) = VariableAddress[x550] : +# 35| r35_7708(glval) = FunctionAddress[~String] : +# 35| v35_7709(void) = Call[~String] : func:r35_7708, this:r35_7707 +# 35| mu35_7710(unknown) = ^CallSideEffect : ~m? +# 35| v35_7711(void) = ^IndirectReadSideEffect[-1] : &:r35_7707, ~m? +# 35| mu35_7712(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7707 +# 35| r35_7713(bool) = Constant[0] : +# 35| v35_7714(void) = ConditionalBranch : r35_7713 #-----| False -> Block 551 #-----| True -> Block 1026 -# 1672| Block 551 -# 1672| r1672_1(glval) = VariableAddress[x551] : -# 1672| mu1672_2(String) = Uninitialized[x551] : &:r1672_1 -# 1672| r1672_3(glval) = FunctionAddress[String] : -# 1672| v1672_4(void) = Call[String] : func:r1672_3, this:r1672_1 -# 1672| mu1672_5(unknown) = ^CallSideEffect : ~m? -# 1672| mu1672_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1672_1 -# 1673| r1673_1(glval) = VariableAddress[x551] : -# 1673| r1673_2(glval) = FunctionAddress[~String] : -# 1673| v1673_3(void) = Call[~String] : func:r1673_2, this:r1673_1 -# 1673| mu1673_4(unknown) = ^CallSideEffect : ~m? -# 1673| v1673_5(void) = ^IndirectReadSideEffect[-1] : &:r1673_1, ~m? -# 1673| mu1673_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1673_1 -# 1673| r1673_7(bool) = Constant[0] : -# 1673| v1673_8(void) = ConditionalBranch : r1673_7 +# 35| Block 551 +# 35| r35_7715(glval) = VariableAddress[x551] : +# 35| mu35_7716(String) = Uninitialized[x551] : &:r35_7715 +# 35| r35_7717(glval) = FunctionAddress[String] : +# 35| v35_7718(void) = Call[String] : func:r35_7717, this:r35_7715 +# 35| mu35_7719(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7720(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7715 +# 35| r35_7721(glval) = VariableAddress[x551] : +# 35| r35_7722(glval) = FunctionAddress[~String] : +# 35| v35_7723(void) = Call[~String] : func:r35_7722, this:r35_7721 +# 35| mu35_7724(unknown) = ^CallSideEffect : ~m? +# 35| v35_7725(void) = ^IndirectReadSideEffect[-1] : &:r35_7721, ~m? +# 35| mu35_7726(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7721 +# 35| r35_7727(bool) = Constant[0] : +# 35| v35_7728(void) = ConditionalBranch : r35_7727 #-----| False -> Block 552 #-----| True -> Block 1026 -# 1675| Block 552 -# 1675| r1675_1(glval) = VariableAddress[x552] : -# 1675| mu1675_2(String) = Uninitialized[x552] : &:r1675_1 -# 1675| r1675_3(glval) = FunctionAddress[String] : -# 1675| v1675_4(void) = Call[String] : func:r1675_3, this:r1675_1 -# 1675| mu1675_5(unknown) = ^CallSideEffect : ~m? -# 1675| mu1675_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1675_1 -# 1676| r1676_1(glval) = VariableAddress[x552] : -# 1676| r1676_2(glval) = FunctionAddress[~String] : -# 1676| v1676_3(void) = Call[~String] : func:r1676_2, this:r1676_1 -# 1676| mu1676_4(unknown) = ^CallSideEffect : ~m? -# 1676| v1676_5(void) = ^IndirectReadSideEffect[-1] : &:r1676_1, ~m? -# 1676| mu1676_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1676_1 -# 1676| r1676_7(bool) = Constant[0] : -# 1676| v1676_8(void) = ConditionalBranch : r1676_7 +# 35| Block 552 +# 35| r35_7729(glval) = VariableAddress[x552] : +# 35| mu35_7730(String) = Uninitialized[x552] : &:r35_7729 +# 35| r35_7731(glval) = FunctionAddress[String] : +# 35| v35_7732(void) = Call[String] : func:r35_7731, this:r35_7729 +# 35| mu35_7733(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7734(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7729 +# 35| r35_7735(glval) = VariableAddress[x552] : +# 35| r35_7736(glval) = FunctionAddress[~String] : +# 35| v35_7737(void) = Call[~String] : func:r35_7736, this:r35_7735 +# 35| mu35_7738(unknown) = ^CallSideEffect : ~m? +# 35| v35_7739(void) = ^IndirectReadSideEffect[-1] : &:r35_7735, ~m? +# 35| mu35_7740(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7735 +# 35| r35_7741(bool) = Constant[0] : +# 35| v35_7742(void) = ConditionalBranch : r35_7741 #-----| False -> Block 553 #-----| True -> Block 1026 -# 1678| Block 553 -# 1678| r1678_1(glval) = VariableAddress[x553] : -# 1678| mu1678_2(String) = Uninitialized[x553] : &:r1678_1 -# 1678| r1678_3(glval) = FunctionAddress[String] : -# 1678| v1678_4(void) = Call[String] : func:r1678_3, this:r1678_1 -# 1678| mu1678_5(unknown) = ^CallSideEffect : ~m? -# 1678| mu1678_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1678_1 -# 1679| r1679_1(glval) = VariableAddress[x553] : -# 1679| r1679_2(glval) = FunctionAddress[~String] : -# 1679| v1679_3(void) = Call[~String] : func:r1679_2, this:r1679_1 -# 1679| mu1679_4(unknown) = ^CallSideEffect : ~m? -# 1679| v1679_5(void) = ^IndirectReadSideEffect[-1] : &:r1679_1, ~m? -# 1679| mu1679_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1679_1 -# 1679| r1679_7(bool) = Constant[0] : -# 1679| v1679_8(void) = ConditionalBranch : r1679_7 +# 35| Block 553 +# 35| r35_7743(glval) = VariableAddress[x553] : +# 35| mu35_7744(String) = Uninitialized[x553] : &:r35_7743 +# 35| r35_7745(glval) = FunctionAddress[String] : +# 35| v35_7746(void) = Call[String] : func:r35_7745, this:r35_7743 +# 35| mu35_7747(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7748(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7743 +# 35| r35_7749(glval) = VariableAddress[x553] : +# 35| r35_7750(glval) = FunctionAddress[~String] : +# 35| v35_7751(void) = Call[~String] : func:r35_7750, this:r35_7749 +# 35| mu35_7752(unknown) = ^CallSideEffect : ~m? +# 35| v35_7753(void) = ^IndirectReadSideEffect[-1] : &:r35_7749, ~m? +# 35| mu35_7754(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7749 +# 35| r35_7755(bool) = Constant[0] : +# 35| v35_7756(void) = ConditionalBranch : r35_7755 #-----| False -> Block 554 #-----| True -> Block 1026 -# 1681| Block 554 -# 1681| r1681_1(glval) = VariableAddress[x554] : -# 1681| mu1681_2(String) = Uninitialized[x554] : &:r1681_1 -# 1681| r1681_3(glval) = FunctionAddress[String] : -# 1681| v1681_4(void) = Call[String] : func:r1681_3, this:r1681_1 -# 1681| mu1681_5(unknown) = ^CallSideEffect : ~m? -# 1681| mu1681_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1681_1 -# 1682| r1682_1(glval) = VariableAddress[x554] : -# 1682| r1682_2(glval) = FunctionAddress[~String] : -# 1682| v1682_3(void) = Call[~String] : func:r1682_2, this:r1682_1 -# 1682| mu1682_4(unknown) = ^CallSideEffect : ~m? -# 1682| v1682_5(void) = ^IndirectReadSideEffect[-1] : &:r1682_1, ~m? -# 1682| mu1682_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1682_1 -# 1682| r1682_7(bool) = Constant[0] : -# 1682| v1682_8(void) = ConditionalBranch : r1682_7 +# 35| Block 554 +# 35| r35_7757(glval) = VariableAddress[x554] : +# 35| mu35_7758(String) = Uninitialized[x554] : &:r35_7757 +# 35| r35_7759(glval) = FunctionAddress[String] : +# 35| v35_7760(void) = Call[String] : func:r35_7759, this:r35_7757 +# 35| mu35_7761(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7762(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7757 +# 35| r35_7763(glval) = VariableAddress[x554] : +# 35| r35_7764(glval) = FunctionAddress[~String] : +# 35| v35_7765(void) = Call[~String] : func:r35_7764, this:r35_7763 +# 35| mu35_7766(unknown) = ^CallSideEffect : ~m? +# 35| v35_7767(void) = ^IndirectReadSideEffect[-1] : &:r35_7763, ~m? +# 35| mu35_7768(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7763 +# 35| r35_7769(bool) = Constant[0] : +# 35| v35_7770(void) = ConditionalBranch : r35_7769 #-----| False -> Block 555 #-----| True -> Block 1026 -# 1684| Block 555 -# 1684| r1684_1(glval) = VariableAddress[x555] : -# 1684| mu1684_2(String) = Uninitialized[x555] : &:r1684_1 -# 1684| r1684_3(glval) = FunctionAddress[String] : -# 1684| v1684_4(void) = Call[String] : func:r1684_3, this:r1684_1 -# 1684| mu1684_5(unknown) = ^CallSideEffect : ~m? -# 1684| mu1684_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1684_1 -# 1685| r1685_1(glval) = VariableAddress[x555] : -# 1685| r1685_2(glval) = FunctionAddress[~String] : -# 1685| v1685_3(void) = Call[~String] : func:r1685_2, this:r1685_1 -# 1685| mu1685_4(unknown) = ^CallSideEffect : ~m? -# 1685| v1685_5(void) = ^IndirectReadSideEffect[-1] : &:r1685_1, ~m? -# 1685| mu1685_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1685_1 -# 1685| r1685_7(bool) = Constant[0] : -# 1685| v1685_8(void) = ConditionalBranch : r1685_7 +# 35| Block 555 +# 35| r35_7771(glval) = VariableAddress[x555] : +# 35| mu35_7772(String) = Uninitialized[x555] : &:r35_7771 +# 35| r35_7773(glval) = FunctionAddress[String] : +# 35| v35_7774(void) = Call[String] : func:r35_7773, this:r35_7771 +# 35| mu35_7775(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7776(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7771 +# 35| r35_7777(glval) = VariableAddress[x555] : +# 35| r35_7778(glval) = FunctionAddress[~String] : +# 35| v35_7779(void) = Call[~String] : func:r35_7778, this:r35_7777 +# 35| mu35_7780(unknown) = ^CallSideEffect : ~m? +# 35| v35_7781(void) = ^IndirectReadSideEffect[-1] : &:r35_7777, ~m? +# 35| mu35_7782(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7777 +# 35| r35_7783(bool) = Constant[0] : +# 35| v35_7784(void) = ConditionalBranch : r35_7783 #-----| False -> Block 556 #-----| True -> Block 1026 -# 1687| Block 556 -# 1687| r1687_1(glval) = VariableAddress[x556] : -# 1687| mu1687_2(String) = Uninitialized[x556] : &:r1687_1 -# 1687| r1687_3(glval) = FunctionAddress[String] : -# 1687| v1687_4(void) = Call[String] : func:r1687_3, this:r1687_1 -# 1687| mu1687_5(unknown) = ^CallSideEffect : ~m? -# 1687| mu1687_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1687_1 -# 1688| r1688_1(glval) = VariableAddress[x556] : -# 1688| r1688_2(glval) = FunctionAddress[~String] : -# 1688| v1688_3(void) = Call[~String] : func:r1688_2, this:r1688_1 -# 1688| mu1688_4(unknown) = ^CallSideEffect : ~m? -# 1688| v1688_5(void) = ^IndirectReadSideEffect[-1] : &:r1688_1, ~m? -# 1688| mu1688_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1688_1 -# 1688| r1688_7(bool) = Constant[0] : -# 1688| v1688_8(void) = ConditionalBranch : r1688_7 +# 35| Block 556 +# 35| r35_7785(glval) = VariableAddress[x556] : +# 35| mu35_7786(String) = Uninitialized[x556] : &:r35_7785 +# 35| r35_7787(glval) = FunctionAddress[String] : +# 35| v35_7788(void) = Call[String] : func:r35_7787, this:r35_7785 +# 35| mu35_7789(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7790(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7785 +# 35| r35_7791(glval) = VariableAddress[x556] : +# 35| r35_7792(glval) = FunctionAddress[~String] : +# 35| v35_7793(void) = Call[~String] : func:r35_7792, this:r35_7791 +# 35| mu35_7794(unknown) = ^CallSideEffect : ~m? +# 35| v35_7795(void) = ^IndirectReadSideEffect[-1] : &:r35_7791, ~m? +# 35| mu35_7796(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7791 +# 35| r35_7797(bool) = Constant[0] : +# 35| v35_7798(void) = ConditionalBranch : r35_7797 #-----| False -> Block 557 #-----| True -> Block 1026 -# 1690| Block 557 -# 1690| r1690_1(glval) = VariableAddress[x557] : -# 1690| mu1690_2(String) = Uninitialized[x557] : &:r1690_1 -# 1690| r1690_3(glval) = FunctionAddress[String] : -# 1690| v1690_4(void) = Call[String] : func:r1690_3, this:r1690_1 -# 1690| mu1690_5(unknown) = ^CallSideEffect : ~m? -# 1690| mu1690_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1690_1 -# 1691| r1691_1(glval) = VariableAddress[x557] : -# 1691| r1691_2(glval) = FunctionAddress[~String] : -# 1691| v1691_3(void) = Call[~String] : func:r1691_2, this:r1691_1 -# 1691| mu1691_4(unknown) = ^CallSideEffect : ~m? -# 1691| v1691_5(void) = ^IndirectReadSideEffect[-1] : &:r1691_1, ~m? -# 1691| mu1691_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1691_1 -# 1691| r1691_7(bool) = Constant[0] : -# 1691| v1691_8(void) = ConditionalBranch : r1691_7 +# 35| Block 557 +# 35| r35_7799(glval) = VariableAddress[x557] : +# 35| mu35_7800(String) = Uninitialized[x557] : &:r35_7799 +# 35| r35_7801(glval) = FunctionAddress[String] : +# 35| v35_7802(void) = Call[String] : func:r35_7801, this:r35_7799 +# 35| mu35_7803(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7804(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7799 +# 35| r35_7805(glval) = VariableAddress[x557] : +# 35| r35_7806(glval) = FunctionAddress[~String] : +# 35| v35_7807(void) = Call[~String] : func:r35_7806, this:r35_7805 +# 35| mu35_7808(unknown) = ^CallSideEffect : ~m? +# 35| v35_7809(void) = ^IndirectReadSideEffect[-1] : &:r35_7805, ~m? +# 35| mu35_7810(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7805 +# 35| r35_7811(bool) = Constant[0] : +# 35| v35_7812(void) = ConditionalBranch : r35_7811 #-----| False -> Block 558 #-----| True -> Block 1026 -# 1693| Block 558 -# 1693| r1693_1(glval) = VariableAddress[x558] : -# 1693| mu1693_2(String) = Uninitialized[x558] : &:r1693_1 -# 1693| r1693_3(glval) = FunctionAddress[String] : -# 1693| v1693_4(void) = Call[String] : func:r1693_3, this:r1693_1 -# 1693| mu1693_5(unknown) = ^CallSideEffect : ~m? -# 1693| mu1693_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1693_1 -# 1694| r1694_1(glval) = VariableAddress[x558] : -# 1694| r1694_2(glval) = FunctionAddress[~String] : -# 1694| v1694_3(void) = Call[~String] : func:r1694_2, this:r1694_1 -# 1694| mu1694_4(unknown) = ^CallSideEffect : ~m? -# 1694| v1694_5(void) = ^IndirectReadSideEffect[-1] : &:r1694_1, ~m? -# 1694| mu1694_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1694_1 -# 1694| r1694_7(bool) = Constant[0] : -# 1694| v1694_8(void) = ConditionalBranch : r1694_7 +# 35| Block 558 +# 35| r35_7813(glval) = VariableAddress[x558] : +# 35| mu35_7814(String) = Uninitialized[x558] : &:r35_7813 +# 35| r35_7815(glval) = FunctionAddress[String] : +# 35| v35_7816(void) = Call[String] : func:r35_7815, this:r35_7813 +# 35| mu35_7817(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7818(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7813 +# 35| r35_7819(glval) = VariableAddress[x558] : +# 35| r35_7820(glval) = FunctionAddress[~String] : +# 35| v35_7821(void) = Call[~String] : func:r35_7820, this:r35_7819 +# 35| mu35_7822(unknown) = ^CallSideEffect : ~m? +# 35| v35_7823(void) = ^IndirectReadSideEffect[-1] : &:r35_7819, ~m? +# 35| mu35_7824(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7819 +# 35| r35_7825(bool) = Constant[0] : +# 35| v35_7826(void) = ConditionalBranch : r35_7825 #-----| False -> Block 559 #-----| True -> Block 1026 -# 1696| Block 559 -# 1696| r1696_1(glval) = VariableAddress[x559] : -# 1696| mu1696_2(String) = Uninitialized[x559] : &:r1696_1 -# 1696| r1696_3(glval) = FunctionAddress[String] : -# 1696| v1696_4(void) = Call[String] : func:r1696_3, this:r1696_1 -# 1696| mu1696_5(unknown) = ^CallSideEffect : ~m? -# 1696| mu1696_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1696_1 -# 1697| r1697_1(glval) = VariableAddress[x559] : -# 1697| r1697_2(glval) = FunctionAddress[~String] : -# 1697| v1697_3(void) = Call[~String] : func:r1697_2, this:r1697_1 -# 1697| mu1697_4(unknown) = ^CallSideEffect : ~m? -# 1697| v1697_5(void) = ^IndirectReadSideEffect[-1] : &:r1697_1, ~m? -# 1697| mu1697_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1697_1 -# 1697| r1697_7(bool) = Constant[0] : -# 1697| v1697_8(void) = ConditionalBranch : r1697_7 +# 35| Block 559 +# 35| r35_7827(glval) = VariableAddress[x559] : +# 35| mu35_7828(String) = Uninitialized[x559] : &:r35_7827 +# 35| r35_7829(glval) = FunctionAddress[String] : +# 35| v35_7830(void) = Call[String] : func:r35_7829, this:r35_7827 +# 35| mu35_7831(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7832(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7827 +# 35| r35_7833(glval) = VariableAddress[x559] : +# 35| r35_7834(glval) = FunctionAddress[~String] : +# 35| v35_7835(void) = Call[~String] : func:r35_7834, this:r35_7833 +# 35| mu35_7836(unknown) = ^CallSideEffect : ~m? +# 35| v35_7837(void) = ^IndirectReadSideEffect[-1] : &:r35_7833, ~m? +# 35| mu35_7838(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7833 +# 35| r35_7839(bool) = Constant[0] : +# 35| v35_7840(void) = ConditionalBranch : r35_7839 #-----| False -> Block 560 #-----| True -> Block 1026 -# 1699| Block 560 -# 1699| r1699_1(glval) = VariableAddress[x560] : -# 1699| mu1699_2(String) = Uninitialized[x560] : &:r1699_1 -# 1699| r1699_3(glval) = FunctionAddress[String] : -# 1699| v1699_4(void) = Call[String] : func:r1699_3, this:r1699_1 -# 1699| mu1699_5(unknown) = ^CallSideEffect : ~m? -# 1699| mu1699_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1699_1 -# 1700| r1700_1(glval) = VariableAddress[x560] : -# 1700| r1700_2(glval) = FunctionAddress[~String] : -# 1700| v1700_3(void) = Call[~String] : func:r1700_2, this:r1700_1 -# 1700| mu1700_4(unknown) = ^CallSideEffect : ~m? -# 1700| v1700_5(void) = ^IndirectReadSideEffect[-1] : &:r1700_1, ~m? -# 1700| mu1700_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1700_1 -# 1700| r1700_7(bool) = Constant[0] : -# 1700| v1700_8(void) = ConditionalBranch : r1700_7 +# 35| Block 560 +# 35| r35_7841(glval) = VariableAddress[x560] : +# 35| mu35_7842(String) = Uninitialized[x560] : &:r35_7841 +# 35| r35_7843(glval) = FunctionAddress[String] : +# 35| v35_7844(void) = Call[String] : func:r35_7843, this:r35_7841 +# 35| mu35_7845(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7846(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7841 +# 35| r35_7847(glval) = VariableAddress[x560] : +# 35| r35_7848(glval) = FunctionAddress[~String] : +# 35| v35_7849(void) = Call[~String] : func:r35_7848, this:r35_7847 +# 35| mu35_7850(unknown) = ^CallSideEffect : ~m? +# 35| v35_7851(void) = ^IndirectReadSideEffect[-1] : &:r35_7847, ~m? +# 35| mu35_7852(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7847 +# 35| r35_7853(bool) = Constant[0] : +# 35| v35_7854(void) = ConditionalBranch : r35_7853 #-----| False -> Block 561 #-----| True -> Block 1026 -# 1702| Block 561 -# 1702| r1702_1(glval) = VariableAddress[x561] : -# 1702| mu1702_2(String) = Uninitialized[x561] : &:r1702_1 -# 1702| r1702_3(glval) = FunctionAddress[String] : -# 1702| v1702_4(void) = Call[String] : func:r1702_3, this:r1702_1 -# 1702| mu1702_5(unknown) = ^CallSideEffect : ~m? -# 1702| mu1702_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1702_1 -# 1703| r1703_1(glval) = VariableAddress[x561] : -# 1703| r1703_2(glval) = FunctionAddress[~String] : -# 1703| v1703_3(void) = Call[~String] : func:r1703_2, this:r1703_1 -# 1703| mu1703_4(unknown) = ^CallSideEffect : ~m? -# 1703| v1703_5(void) = ^IndirectReadSideEffect[-1] : &:r1703_1, ~m? -# 1703| mu1703_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1703_1 -# 1703| r1703_7(bool) = Constant[0] : -# 1703| v1703_8(void) = ConditionalBranch : r1703_7 +# 35| Block 561 +# 35| r35_7855(glval) = VariableAddress[x561] : +# 35| mu35_7856(String) = Uninitialized[x561] : &:r35_7855 +# 35| r35_7857(glval) = FunctionAddress[String] : +# 35| v35_7858(void) = Call[String] : func:r35_7857, this:r35_7855 +# 35| mu35_7859(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7860(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7855 +# 35| r35_7861(glval) = VariableAddress[x561] : +# 35| r35_7862(glval) = FunctionAddress[~String] : +# 35| v35_7863(void) = Call[~String] : func:r35_7862, this:r35_7861 +# 35| mu35_7864(unknown) = ^CallSideEffect : ~m? +# 35| v35_7865(void) = ^IndirectReadSideEffect[-1] : &:r35_7861, ~m? +# 35| mu35_7866(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7861 +# 35| r35_7867(bool) = Constant[0] : +# 35| v35_7868(void) = ConditionalBranch : r35_7867 #-----| False -> Block 562 #-----| True -> Block 1026 -# 1705| Block 562 -# 1705| r1705_1(glval) = VariableAddress[x562] : -# 1705| mu1705_2(String) = Uninitialized[x562] : &:r1705_1 -# 1705| r1705_3(glval) = FunctionAddress[String] : -# 1705| v1705_4(void) = Call[String] : func:r1705_3, this:r1705_1 -# 1705| mu1705_5(unknown) = ^CallSideEffect : ~m? -# 1705| mu1705_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1705_1 -# 1706| r1706_1(glval) = VariableAddress[x562] : -# 1706| r1706_2(glval) = FunctionAddress[~String] : -# 1706| v1706_3(void) = Call[~String] : func:r1706_2, this:r1706_1 -# 1706| mu1706_4(unknown) = ^CallSideEffect : ~m? -# 1706| v1706_5(void) = ^IndirectReadSideEffect[-1] : &:r1706_1, ~m? -# 1706| mu1706_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1706_1 -# 1706| r1706_7(bool) = Constant[0] : -# 1706| v1706_8(void) = ConditionalBranch : r1706_7 +# 35| Block 562 +# 35| r35_7869(glval) = VariableAddress[x562] : +# 35| mu35_7870(String) = Uninitialized[x562] : &:r35_7869 +# 35| r35_7871(glval) = FunctionAddress[String] : +# 35| v35_7872(void) = Call[String] : func:r35_7871, this:r35_7869 +# 35| mu35_7873(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7874(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7869 +# 35| r35_7875(glval) = VariableAddress[x562] : +# 35| r35_7876(glval) = FunctionAddress[~String] : +# 35| v35_7877(void) = Call[~String] : func:r35_7876, this:r35_7875 +# 35| mu35_7878(unknown) = ^CallSideEffect : ~m? +# 35| v35_7879(void) = ^IndirectReadSideEffect[-1] : &:r35_7875, ~m? +# 35| mu35_7880(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7875 +# 35| r35_7881(bool) = Constant[0] : +# 35| v35_7882(void) = ConditionalBranch : r35_7881 #-----| False -> Block 563 #-----| True -> Block 1026 -# 1708| Block 563 -# 1708| r1708_1(glval) = VariableAddress[x563] : -# 1708| mu1708_2(String) = Uninitialized[x563] : &:r1708_1 -# 1708| r1708_3(glval) = FunctionAddress[String] : -# 1708| v1708_4(void) = Call[String] : func:r1708_3, this:r1708_1 -# 1708| mu1708_5(unknown) = ^CallSideEffect : ~m? -# 1708| mu1708_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1708_1 -# 1709| r1709_1(glval) = VariableAddress[x563] : -# 1709| r1709_2(glval) = FunctionAddress[~String] : -# 1709| v1709_3(void) = Call[~String] : func:r1709_2, this:r1709_1 -# 1709| mu1709_4(unknown) = ^CallSideEffect : ~m? -# 1709| v1709_5(void) = ^IndirectReadSideEffect[-1] : &:r1709_1, ~m? -# 1709| mu1709_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1709_1 -# 1709| r1709_7(bool) = Constant[0] : -# 1709| v1709_8(void) = ConditionalBranch : r1709_7 +# 35| Block 563 +# 35| r35_7883(glval) = VariableAddress[x563] : +# 35| mu35_7884(String) = Uninitialized[x563] : &:r35_7883 +# 35| r35_7885(glval) = FunctionAddress[String] : +# 35| v35_7886(void) = Call[String] : func:r35_7885, this:r35_7883 +# 35| mu35_7887(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7888(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7883 +# 35| r35_7889(glval) = VariableAddress[x563] : +# 35| r35_7890(glval) = FunctionAddress[~String] : +# 35| v35_7891(void) = Call[~String] : func:r35_7890, this:r35_7889 +# 35| mu35_7892(unknown) = ^CallSideEffect : ~m? +# 35| v35_7893(void) = ^IndirectReadSideEffect[-1] : &:r35_7889, ~m? +# 35| mu35_7894(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7889 +# 35| r35_7895(bool) = Constant[0] : +# 35| v35_7896(void) = ConditionalBranch : r35_7895 #-----| False -> Block 564 #-----| True -> Block 1026 -# 1711| Block 564 -# 1711| r1711_1(glval) = VariableAddress[x564] : -# 1711| mu1711_2(String) = Uninitialized[x564] : &:r1711_1 -# 1711| r1711_3(glval) = FunctionAddress[String] : -# 1711| v1711_4(void) = Call[String] : func:r1711_3, this:r1711_1 -# 1711| mu1711_5(unknown) = ^CallSideEffect : ~m? -# 1711| mu1711_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1711_1 -# 1712| r1712_1(glval) = VariableAddress[x564] : -# 1712| r1712_2(glval) = FunctionAddress[~String] : -# 1712| v1712_3(void) = Call[~String] : func:r1712_2, this:r1712_1 -# 1712| mu1712_4(unknown) = ^CallSideEffect : ~m? -# 1712| v1712_5(void) = ^IndirectReadSideEffect[-1] : &:r1712_1, ~m? -# 1712| mu1712_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1712_1 -# 1712| r1712_7(bool) = Constant[0] : -# 1712| v1712_8(void) = ConditionalBranch : r1712_7 +# 35| Block 564 +# 35| r35_7897(glval) = VariableAddress[x564] : +# 35| mu35_7898(String) = Uninitialized[x564] : &:r35_7897 +# 35| r35_7899(glval) = FunctionAddress[String] : +# 35| v35_7900(void) = Call[String] : func:r35_7899, this:r35_7897 +# 35| mu35_7901(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7902(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7897 +# 35| r35_7903(glval) = VariableAddress[x564] : +# 35| r35_7904(glval) = FunctionAddress[~String] : +# 35| v35_7905(void) = Call[~String] : func:r35_7904, this:r35_7903 +# 35| mu35_7906(unknown) = ^CallSideEffect : ~m? +# 35| v35_7907(void) = ^IndirectReadSideEffect[-1] : &:r35_7903, ~m? +# 35| mu35_7908(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7903 +# 35| r35_7909(bool) = Constant[0] : +# 35| v35_7910(void) = ConditionalBranch : r35_7909 #-----| False -> Block 565 #-----| True -> Block 1026 -# 1714| Block 565 -# 1714| r1714_1(glval) = VariableAddress[x565] : -# 1714| mu1714_2(String) = Uninitialized[x565] : &:r1714_1 -# 1714| r1714_3(glval) = FunctionAddress[String] : -# 1714| v1714_4(void) = Call[String] : func:r1714_3, this:r1714_1 -# 1714| mu1714_5(unknown) = ^CallSideEffect : ~m? -# 1714| mu1714_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1714_1 -# 1715| r1715_1(glval) = VariableAddress[x565] : -# 1715| r1715_2(glval) = FunctionAddress[~String] : -# 1715| v1715_3(void) = Call[~String] : func:r1715_2, this:r1715_1 -# 1715| mu1715_4(unknown) = ^CallSideEffect : ~m? -# 1715| v1715_5(void) = ^IndirectReadSideEffect[-1] : &:r1715_1, ~m? -# 1715| mu1715_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1715_1 -# 1715| r1715_7(bool) = Constant[0] : -# 1715| v1715_8(void) = ConditionalBranch : r1715_7 +# 35| Block 565 +# 35| r35_7911(glval) = VariableAddress[x565] : +# 35| mu35_7912(String) = Uninitialized[x565] : &:r35_7911 +# 35| r35_7913(glval) = FunctionAddress[String] : +# 35| v35_7914(void) = Call[String] : func:r35_7913, this:r35_7911 +# 35| mu35_7915(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7916(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7911 +# 35| r35_7917(glval) = VariableAddress[x565] : +# 35| r35_7918(glval) = FunctionAddress[~String] : +# 35| v35_7919(void) = Call[~String] : func:r35_7918, this:r35_7917 +# 35| mu35_7920(unknown) = ^CallSideEffect : ~m? +# 35| v35_7921(void) = ^IndirectReadSideEffect[-1] : &:r35_7917, ~m? +# 35| mu35_7922(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7917 +# 35| r35_7923(bool) = Constant[0] : +# 35| v35_7924(void) = ConditionalBranch : r35_7923 #-----| False -> Block 566 #-----| True -> Block 1026 -# 1717| Block 566 -# 1717| r1717_1(glval) = VariableAddress[x566] : -# 1717| mu1717_2(String) = Uninitialized[x566] : &:r1717_1 -# 1717| r1717_3(glval) = FunctionAddress[String] : -# 1717| v1717_4(void) = Call[String] : func:r1717_3, this:r1717_1 -# 1717| mu1717_5(unknown) = ^CallSideEffect : ~m? -# 1717| mu1717_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1717_1 -# 1718| r1718_1(glval) = VariableAddress[x566] : -# 1718| r1718_2(glval) = FunctionAddress[~String] : -# 1718| v1718_3(void) = Call[~String] : func:r1718_2, this:r1718_1 -# 1718| mu1718_4(unknown) = ^CallSideEffect : ~m? -# 1718| v1718_5(void) = ^IndirectReadSideEffect[-1] : &:r1718_1, ~m? -# 1718| mu1718_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1718_1 -# 1718| r1718_7(bool) = Constant[0] : -# 1718| v1718_8(void) = ConditionalBranch : r1718_7 +# 35| Block 566 +# 35| r35_7925(glval) = VariableAddress[x566] : +# 35| mu35_7926(String) = Uninitialized[x566] : &:r35_7925 +# 35| r35_7927(glval) = FunctionAddress[String] : +# 35| v35_7928(void) = Call[String] : func:r35_7927, this:r35_7925 +# 35| mu35_7929(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7930(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7925 +# 35| r35_7931(glval) = VariableAddress[x566] : +# 35| r35_7932(glval) = FunctionAddress[~String] : +# 35| v35_7933(void) = Call[~String] : func:r35_7932, this:r35_7931 +# 35| mu35_7934(unknown) = ^CallSideEffect : ~m? +# 35| v35_7935(void) = ^IndirectReadSideEffect[-1] : &:r35_7931, ~m? +# 35| mu35_7936(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7931 +# 35| r35_7937(bool) = Constant[0] : +# 35| v35_7938(void) = ConditionalBranch : r35_7937 #-----| False -> Block 567 #-----| True -> Block 1026 -# 1720| Block 567 -# 1720| r1720_1(glval) = VariableAddress[x567] : -# 1720| mu1720_2(String) = Uninitialized[x567] : &:r1720_1 -# 1720| r1720_3(glval) = FunctionAddress[String] : -# 1720| v1720_4(void) = Call[String] : func:r1720_3, this:r1720_1 -# 1720| mu1720_5(unknown) = ^CallSideEffect : ~m? -# 1720| mu1720_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1720_1 -# 1721| r1721_1(glval) = VariableAddress[x567] : -# 1721| r1721_2(glval) = FunctionAddress[~String] : -# 1721| v1721_3(void) = Call[~String] : func:r1721_2, this:r1721_1 -# 1721| mu1721_4(unknown) = ^CallSideEffect : ~m? -# 1721| v1721_5(void) = ^IndirectReadSideEffect[-1] : &:r1721_1, ~m? -# 1721| mu1721_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1721_1 -# 1721| r1721_7(bool) = Constant[0] : -# 1721| v1721_8(void) = ConditionalBranch : r1721_7 +# 35| Block 567 +# 35| r35_7939(glval) = VariableAddress[x567] : +# 35| mu35_7940(String) = Uninitialized[x567] : &:r35_7939 +# 35| r35_7941(glval) = FunctionAddress[String] : +# 35| v35_7942(void) = Call[String] : func:r35_7941, this:r35_7939 +# 35| mu35_7943(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7944(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7939 +# 35| r35_7945(glval) = VariableAddress[x567] : +# 35| r35_7946(glval) = FunctionAddress[~String] : +# 35| v35_7947(void) = Call[~String] : func:r35_7946, this:r35_7945 +# 35| mu35_7948(unknown) = ^CallSideEffect : ~m? +# 35| v35_7949(void) = ^IndirectReadSideEffect[-1] : &:r35_7945, ~m? +# 35| mu35_7950(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7945 +# 35| r35_7951(bool) = Constant[0] : +# 35| v35_7952(void) = ConditionalBranch : r35_7951 #-----| False -> Block 568 #-----| True -> Block 1026 -# 1723| Block 568 -# 1723| r1723_1(glval) = VariableAddress[x568] : -# 1723| mu1723_2(String) = Uninitialized[x568] : &:r1723_1 -# 1723| r1723_3(glval) = FunctionAddress[String] : -# 1723| v1723_4(void) = Call[String] : func:r1723_3, this:r1723_1 -# 1723| mu1723_5(unknown) = ^CallSideEffect : ~m? -# 1723| mu1723_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1723_1 -# 1724| r1724_1(glval) = VariableAddress[x568] : -# 1724| r1724_2(glval) = FunctionAddress[~String] : -# 1724| v1724_3(void) = Call[~String] : func:r1724_2, this:r1724_1 -# 1724| mu1724_4(unknown) = ^CallSideEffect : ~m? -# 1724| v1724_5(void) = ^IndirectReadSideEffect[-1] : &:r1724_1, ~m? -# 1724| mu1724_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1724_1 -# 1724| r1724_7(bool) = Constant[0] : -# 1724| v1724_8(void) = ConditionalBranch : r1724_7 +# 35| Block 568 +# 35| r35_7953(glval) = VariableAddress[x568] : +# 35| mu35_7954(String) = Uninitialized[x568] : &:r35_7953 +# 35| r35_7955(glval) = FunctionAddress[String] : +# 35| v35_7956(void) = Call[String] : func:r35_7955, this:r35_7953 +# 35| mu35_7957(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7958(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7953 +# 35| r35_7959(glval) = VariableAddress[x568] : +# 35| r35_7960(glval) = FunctionAddress[~String] : +# 35| v35_7961(void) = Call[~String] : func:r35_7960, this:r35_7959 +# 35| mu35_7962(unknown) = ^CallSideEffect : ~m? +# 35| v35_7963(void) = ^IndirectReadSideEffect[-1] : &:r35_7959, ~m? +# 35| mu35_7964(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7959 +# 35| r35_7965(bool) = Constant[0] : +# 35| v35_7966(void) = ConditionalBranch : r35_7965 #-----| False -> Block 569 #-----| True -> Block 1026 -# 1726| Block 569 -# 1726| r1726_1(glval) = VariableAddress[x569] : -# 1726| mu1726_2(String) = Uninitialized[x569] : &:r1726_1 -# 1726| r1726_3(glval) = FunctionAddress[String] : -# 1726| v1726_4(void) = Call[String] : func:r1726_3, this:r1726_1 -# 1726| mu1726_5(unknown) = ^CallSideEffect : ~m? -# 1726| mu1726_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1726_1 -# 1727| r1727_1(glval) = VariableAddress[x569] : -# 1727| r1727_2(glval) = FunctionAddress[~String] : -# 1727| v1727_3(void) = Call[~String] : func:r1727_2, this:r1727_1 -# 1727| mu1727_4(unknown) = ^CallSideEffect : ~m? -# 1727| v1727_5(void) = ^IndirectReadSideEffect[-1] : &:r1727_1, ~m? -# 1727| mu1727_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1727_1 -# 1727| r1727_7(bool) = Constant[0] : -# 1727| v1727_8(void) = ConditionalBranch : r1727_7 +# 35| Block 569 +# 35| r35_7967(glval) = VariableAddress[x569] : +# 35| mu35_7968(String) = Uninitialized[x569] : &:r35_7967 +# 35| r35_7969(glval) = FunctionAddress[String] : +# 35| v35_7970(void) = Call[String] : func:r35_7969, this:r35_7967 +# 35| mu35_7971(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7972(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7967 +# 35| r35_7973(glval) = VariableAddress[x569] : +# 35| r35_7974(glval) = FunctionAddress[~String] : +# 35| v35_7975(void) = Call[~String] : func:r35_7974, this:r35_7973 +# 35| mu35_7976(unknown) = ^CallSideEffect : ~m? +# 35| v35_7977(void) = ^IndirectReadSideEffect[-1] : &:r35_7973, ~m? +# 35| mu35_7978(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7973 +# 35| r35_7979(bool) = Constant[0] : +# 35| v35_7980(void) = ConditionalBranch : r35_7979 #-----| False -> Block 570 #-----| True -> Block 1026 -# 1729| Block 570 -# 1729| r1729_1(glval) = VariableAddress[x570] : -# 1729| mu1729_2(String) = Uninitialized[x570] : &:r1729_1 -# 1729| r1729_3(glval) = FunctionAddress[String] : -# 1729| v1729_4(void) = Call[String] : func:r1729_3, this:r1729_1 -# 1729| mu1729_5(unknown) = ^CallSideEffect : ~m? -# 1729| mu1729_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1729_1 -# 1730| r1730_1(glval) = VariableAddress[x570] : -# 1730| r1730_2(glval) = FunctionAddress[~String] : -# 1730| v1730_3(void) = Call[~String] : func:r1730_2, this:r1730_1 -# 1730| mu1730_4(unknown) = ^CallSideEffect : ~m? -# 1730| v1730_5(void) = ^IndirectReadSideEffect[-1] : &:r1730_1, ~m? -# 1730| mu1730_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1730_1 -# 1730| r1730_7(bool) = Constant[0] : -# 1730| v1730_8(void) = ConditionalBranch : r1730_7 +# 35| Block 570 +# 35| r35_7981(glval) = VariableAddress[x570] : +# 35| mu35_7982(String) = Uninitialized[x570] : &:r35_7981 +# 35| r35_7983(glval) = FunctionAddress[String] : +# 35| v35_7984(void) = Call[String] : func:r35_7983, this:r35_7981 +# 35| mu35_7985(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7986(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7981 +# 35| r35_7987(glval) = VariableAddress[x570] : +# 35| r35_7988(glval) = FunctionAddress[~String] : +# 35| v35_7989(void) = Call[~String] : func:r35_7988, this:r35_7987 +# 35| mu35_7990(unknown) = ^CallSideEffect : ~m? +# 35| v35_7991(void) = ^IndirectReadSideEffect[-1] : &:r35_7987, ~m? +# 35| mu35_7992(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7987 +# 35| r35_7993(bool) = Constant[0] : +# 35| v35_7994(void) = ConditionalBranch : r35_7993 #-----| False -> Block 571 #-----| True -> Block 1026 -# 1732| Block 571 -# 1732| r1732_1(glval) = VariableAddress[x571] : -# 1732| mu1732_2(String) = Uninitialized[x571] : &:r1732_1 -# 1732| r1732_3(glval) = FunctionAddress[String] : -# 1732| v1732_4(void) = Call[String] : func:r1732_3, this:r1732_1 -# 1732| mu1732_5(unknown) = ^CallSideEffect : ~m? -# 1732| mu1732_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1732_1 -# 1733| r1733_1(glval) = VariableAddress[x571] : -# 1733| r1733_2(glval) = FunctionAddress[~String] : -# 1733| v1733_3(void) = Call[~String] : func:r1733_2, this:r1733_1 -# 1733| mu1733_4(unknown) = ^CallSideEffect : ~m? -# 1733| v1733_5(void) = ^IndirectReadSideEffect[-1] : &:r1733_1, ~m? -# 1733| mu1733_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1733_1 -# 1733| r1733_7(bool) = Constant[0] : -# 1733| v1733_8(void) = ConditionalBranch : r1733_7 +# 35| Block 571 +# 35| r35_7995(glval) = VariableAddress[x571] : +# 35| mu35_7996(String) = Uninitialized[x571] : &:r35_7995 +# 35| r35_7997(glval) = FunctionAddress[String] : +# 35| v35_7998(void) = Call[String] : func:r35_7997, this:r35_7995 +# 35| mu35_7999(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8000(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7995 +# 35| r35_8001(glval) = VariableAddress[x571] : +# 35| r35_8002(glval) = FunctionAddress[~String] : +# 35| v35_8003(void) = Call[~String] : func:r35_8002, this:r35_8001 +# 35| mu35_8004(unknown) = ^CallSideEffect : ~m? +# 35| v35_8005(void) = ^IndirectReadSideEffect[-1] : &:r35_8001, ~m? +# 35| mu35_8006(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8001 +# 35| r35_8007(bool) = Constant[0] : +# 35| v35_8008(void) = ConditionalBranch : r35_8007 #-----| False -> Block 572 #-----| True -> Block 1026 -# 1735| Block 572 -# 1735| r1735_1(glval) = VariableAddress[x572] : -# 1735| mu1735_2(String) = Uninitialized[x572] : &:r1735_1 -# 1735| r1735_3(glval) = FunctionAddress[String] : -# 1735| v1735_4(void) = Call[String] : func:r1735_3, this:r1735_1 -# 1735| mu1735_5(unknown) = ^CallSideEffect : ~m? -# 1735| mu1735_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1735_1 -# 1736| r1736_1(glval) = VariableAddress[x572] : -# 1736| r1736_2(glval) = FunctionAddress[~String] : -# 1736| v1736_3(void) = Call[~String] : func:r1736_2, this:r1736_1 -# 1736| mu1736_4(unknown) = ^CallSideEffect : ~m? -# 1736| v1736_5(void) = ^IndirectReadSideEffect[-1] : &:r1736_1, ~m? -# 1736| mu1736_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1736_1 -# 1736| r1736_7(bool) = Constant[0] : -# 1736| v1736_8(void) = ConditionalBranch : r1736_7 +# 35| Block 572 +# 35| r35_8009(glval) = VariableAddress[x572] : +# 35| mu35_8010(String) = Uninitialized[x572] : &:r35_8009 +# 35| r35_8011(glval) = FunctionAddress[String] : +# 35| v35_8012(void) = Call[String] : func:r35_8011, this:r35_8009 +# 35| mu35_8013(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8014(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8009 +# 35| r35_8015(glval) = VariableAddress[x572] : +# 35| r35_8016(glval) = FunctionAddress[~String] : +# 35| v35_8017(void) = Call[~String] : func:r35_8016, this:r35_8015 +# 35| mu35_8018(unknown) = ^CallSideEffect : ~m? +# 35| v35_8019(void) = ^IndirectReadSideEffect[-1] : &:r35_8015, ~m? +# 35| mu35_8020(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8015 +# 35| r35_8021(bool) = Constant[0] : +# 35| v35_8022(void) = ConditionalBranch : r35_8021 #-----| False -> Block 573 #-----| True -> Block 1026 -# 1738| Block 573 -# 1738| r1738_1(glval) = VariableAddress[x573] : -# 1738| mu1738_2(String) = Uninitialized[x573] : &:r1738_1 -# 1738| r1738_3(glval) = FunctionAddress[String] : -# 1738| v1738_4(void) = Call[String] : func:r1738_3, this:r1738_1 -# 1738| mu1738_5(unknown) = ^CallSideEffect : ~m? -# 1738| mu1738_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1738_1 -# 1739| r1739_1(glval) = VariableAddress[x573] : -# 1739| r1739_2(glval) = FunctionAddress[~String] : -# 1739| v1739_3(void) = Call[~String] : func:r1739_2, this:r1739_1 -# 1739| mu1739_4(unknown) = ^CallSideEffect : ~m? -# 1739| v1739_5(void) = ^IndirectReadSideEffect[-1] : &:r1739_1, ~m? -# 1739| mu1739_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1739_1 -# 1739| r1739_7(bool) = Constant[0] : -# 1739| v1739_8(void) = ConditionalBranch : r1739_7 +# 35| Block 573 +# 35| r35_8023(glval) = VariableAddress[x573] : +# 35| mu35_8024(String) = Uninitialized[x573] : &:r35_8023 +# 35| r35_8025(glval) = FunctionAddress[String] : +# 35| v35_8026(void) = Call[String] : func:r35_8025, this:r35_8023 +# 35| mu35_8027(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8028(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8023 +# 35| r35_8029(glval) = VariableAddress[x573] : +# 35| r35_8030(glval) = FunctionAddress[~String] : +# 35| v35_8031(void) = Call[~String] : func:r35_8030, this:r35_8029 +# 35| mu35_8032(unknown) = ^CallSideEffect : ~m? +# 35| v35_8033(void) = ^IndirectReadSideEffect[-1] : &:r35_8029, ~m? +# 35| mu35_8034(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8029 +# 35| r35_8035(bool) = Constant[0] : +# 35| v35_8036(void) = ConditionalBranch : r35_8035 #-----| False -> Block 574 #-----| True -> Block 1026 -# 1741| Block 574 -# 1741| r1741_1(glval) = VariableAddress[x574] : -# 1741| mu1741_2(String) = Uninitialized[x574] : &:r1741_1 -# 1741| r1741_3(glval) = FunctionAddress[String] : -# 1741| v1741_4(void) = Call[String] : func:r1741_3, this:r1741_1 -# 1741| mu1741_5(unknown) = ^CallSideEffect : ~m? -# 1741| mu1741_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1741_1 -# 1742| r1742_1(glval) = VariableAddress[x574] : -# 1742| r1742_2(glval) = FunctionAddress[~String] : -# 1742| v1742_3(void) = Call[~String] : func:r1742_2, this:r1742_1 -# 1742| mu1742_4(unknown) = ^CallSideEffect : ~m? -# 1742| v1742_5(void) = ^IndirectReadSideEffect[-1] : &:r1742_1, ~m? -# 1742| mu1742_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1742_1 -# 1742| r1742_7(bool) = Constant[0] : -# 1742| v1742_8(void) = ConditionalBranch : r1742_7 +# 35| Block 574 +# 35| r35_8037(glval) = VariableAddress[x574] : +# 35| mu35_8038(String) = Uninitialized[x574] : &:r35_8037 +# 35| r35_8039(glval) = FunctionAddress[String] : +# 35| v35_8040(void) = Call[String] : func:r35_8039, this:r35_8037 +# 35| mu35_8041(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8042(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8037 +# 35| r35_8043(glval) = VariableAddress[x574] : +# 35| r35_8044(glval) = FunctionAddress[~String] : +# 35| v35_8045(void) = Call[~String] : func:r35_8044, this:r35_8043 +# 35| mu35_8046(unknown) = ^CallSideEffect : ~m? +# 35| v35_8047(void) = ^IndirectReadSideEffect[-1] : &:r35_8043, ~m? +# 35| mu35_8048(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8043 +# 35| r35_8049(bool) = Constant[0] : +# 35| v35_8050(void) = ConditionalBranch : r35_8049 #-----| False -> Block 575 #-----| True -> Block 1026 -# 1744| Block 575 -# 1744| r1744_1(glval) = VariableAddress[x575] : -# 1744| mu1744_2(String) = Uninitialized[x575] : &:r1744_1 -# 1744| r1744_3(glval) = FunctionAddress[String] : -# 1744| v1744_4(void) = Call[String] : func:r1744_3, this:r1744_1 -# 1744| mu1744_5(unknown) = ^CallSideEffect : ~m? -# 1744| mu1744_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1744_1 -# 1745| r1745_1(glval) = VariableAddress[x575] : -# 1745| r1745_2(glval) = FunctionAddress[~String] : -# 1745| v1745_3(void) = Call[~String] : func:r1745_2, this:r1745_1 -# 1745| mu1745_4(unknown) = ^CallSideEffect : ~m? -# 1745| v1745_5(void) = ^IndirectReadSideEffect[-1] : &:r1745_1, ~m? -# 1745| mu1745_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1745_1 -# 1745| r1745_7(bool) = Constant[0] : -# 1745| v1745_8(void) = ConditionalBranch : r1745_7 +# 35| Block 575 +# 35| r35_8051(glval) = VariableAddress[x575] : +# 35| mu35_8052(String) = Uninitialized[x575] : &:r35_8051 +# 35| r35_8053(glval) = FunctionAddress[String] : +# 35| v35_8054(void) = Call[String] : func:r35_8053, this:r35_8051 +# 35| mu35_8055(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8056(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8051 +# 35| r35_8057(glval) = VariableAddress[x575] : +# 35| r35_8058(glval) = FunctionAddress[~String] : +# 35| v35_8059(void) = Call[~String] : func:r35_8058, this:r35_8057 +# 35| mu35_8060(unknown) = ^CallSideEffect : ~m? +# 35| v35_8061(void) = ^IndirectReadSideEffect[-1] : &:r35_8057, ~m? +# 35| mu35_8062(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8057 +# 35| r35_8063(bool) = Constant[0] : +# 35| v35_8064(void) = ConditionalBranch : r35_8063 #-----| False -> Block 576 #-----| True -> Block 1026 -# 1747| Block 576 -# 1747| r1747_1(glval) = VariableAddress[x576] : -# 1747| mu1747_2(String) = Uninitialized[x576] : &:r1747_1 -# 1747| r1747_3(glval) = FunctionAddress[String] : -# 1747| v1747_4(void) = Call[String] : func:r1747_3, this:r1747_1 -# 1747| mu1747_5(unknown) = ^CallSideEffect : ~m? -# 1747| mu1747_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1747_1 -# 1748| r1748_1(glval) = VariableAddress[x576] : -# 1748| r1748_2(glval) = FunctionAddress[~String] : -# 1748| v1748_3(void) = Call[~String] : func:r1748_2, this:r1748_1 -# 1748| mu1748_4(unknown) = ^CallSideEffect : ~m? -# 1748| v1748_5(void) = ^IndirectReadSideEffect[-1] : &:r1748_1, ~m? -# 1748| mu1748_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1748_1 -# 1748| r1748_7(bool) = Constant[0] : -# 1748| v1748_8(void) = ConditionalBranch : r1748_7 +# 35| Block 576 +# 35| r35_8065(glval) = VariableAddress[x576] : +# 35| mu35_8066(String) = Uninitialized[x576] : &:r35_8065 +# 35| r35_8067(glval) = FunctionAddress[String] : +# 35| v35_8068(void) = Call[String] : func:r35_8067, this:r35_8065 +# 35| mu35_8069(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8070(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8065 +# 35| r35_8071(glval) = VariableAddress[x576] : +# 35| r35_8072(glval) = FunctionAddress[~String] : +# 35| v35_8073(void) = Call[~String] : func:r35_8072, this:r35_8071 +# 35| mu35_8074(unknown) = ^CallSideEffect : ~m? +# 35| v35_8075(void) = ^IndirectReadSideEffect[-1] : &:r35_8071, ~m? +# 35| mu35_8076(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8071 +# 35| r35_8077(bool) = Constant[0] : +# 35| v35_8078(void) = ConditionalBranch : r35_8077 #-----| False -> Block 577 #-----| True -> Block 1026 -# 1750| Block 577 -# 1750| r1750_1(glval) = VariableAddress[x577] : -# 1750| mu1750_2(String) = Uninitialized[x577] : &:r1750_1 -# 1750| r1750_3(glval) = FunctionAddress[String] : -# 1750| v1750_4(void) = Call[String] : func:r1750_3, this:r1750_1 -# 1750| mu1750_5(unknown) = ^CallSideEffect : ~m? -# 1750| mu1750_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1750_1 -# 1751| r1751_1(glval) = VariableAddress[x577] : -# 1751| r1751_2(glval) = FunctionAddress[~String] : -# 1751| v1751_3(void) = Call[~String] : func:r1751_2, this:r1751_1 -# 1751| mu1751_4(unknown) = ^CallSideEffect : ~m? -# 1751| v1751_5(void) = ^IndirectReadSideEffect[-1] : &:r1751_1, ~m? -# 1751| mu1751_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1751_1 -# 1751| r1751_7(bool) = Constant[0] : -# 1751| v1751_8(void) = ConditionalBranch : r1751_7 +# 35| Block 577 +# 35| r35_8079(glval) = VariableAddress[x577] : +# 35| mu35_8080(String) = Uninitialized[x577] : &:r35_8079 +# 35| r35_8081(glval) = FunctionAddress[String] : +# 35| v35_8082(void) = Call[String] : func:r35_8081, this:r35_8079 +# 35| mu35_8083(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8084(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8079 +# 35| r35_8085(glval) = VariableAddress[x577] : +# 35| r35_8086(glval) = FunctionAddress[~String] : +# 35| v35_8087(void) = Call[~String] : func:r35_8086, this:r35_8085 +# 35| mu35_8088(unknown) = ^CallSideEffect : ~m? +# 35| v35_8089(void) = ^IndirectReadSideEffect[-1] : &:r35_8085, ~m? +# 35| mu35_8090(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8085 +# 35| r35_8091(bool) = Constant[0] : +# 35| v35_8092(void) = ConditionalBranch : r35_8091 #-----| False -> Block 578 #-----| True -> Block 1026 -# 1753| Block 578 -# 1753| r1753_1(glval) = VariableAddress[x578] : -# 1753| mu1753_2(String) = Uninitialized[x578] : &:r1753_1 -# 1753| r1753_3(glval) = FunctionAddress[String] : -# 1753| v1753_4(void) = Call[String] : func:r1753_3, this:r1753_1 -# 1753| mu1753_5(unknown) = ^CallSideEffect : ~m? -# 1753| mu1753_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1753_1 -# 1754| r1754_1(glval) = VariableAddress[x578] : -# 1754| r1754_2(glval) = FunctionAddress[~String] : -# 1754| v1754_3(void) = Call[~String] : func:r1754_2, this:r1754_1 -# 1754| mu1754_4(unknown) = ^CallSideEffect : ~m? -# 1754| v1754_5(void) = ^IndirectReadSideEffect[-1] : &:r1754_1, ~m? -# 1754| mu1754_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1754_1 -# 1754| r1754_7(bool) = Constant[0] : -# 1754| v1754_8(void) = ConditionalBranch : r1754_7 +# 35| Block 578 +# 35| r35_8093(glval) = VariableAddress[x578] : +# 35| mu35_8094(String) = Uninitialized[x578] : &:r35_8093 +# 35| r35_8095(glval) = FunctionAddress[String] : +# 35| v35_8096(void) = Call[String] : func:r35_8095, this:r35_8093 +# 35| mu35_8097(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8098(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8093 +# 35| r35_8099(glval) = VariableAddress[x578] : +# 35| r35_8100(glval) = FunctionAddress[~String] : +# 35| v35_8101(void) = Call[~String] : func:r35_8100, this:r35_8099 +# 35| mu35_8102(unknown) = ^CallSideEffect : ~m? +# 35| v35_8103(void) = ^IndirectReadSideEffect[-1] : &:r35_8099, ~m? +# 35| mu35_8104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8099 +# 35| r35_8105(bool) = Constant[0] : +# 35| v35_8106(void) = ConditionalBranch : r35_8105 #-----| False -> Block 579 #-----| True -> Block 1026 -# 1756| Block 579 -# 1756| r1756_1(glval) = VariableAddress[x579] : -# 1756| mu1756_2(String) = Uninitialized[x579] : &:r1756_1 -# 1756| r1756_3(glval) = FunctionAddress[String] : -# 1756| v1756_4(void) = Call[String] : func:r1756_3, this:r1756_1 -# 1756| mu1756_5(unknown) = ^CallSideEffect : ~m? -# 1756| mu1756_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1756_1 -# 1757| r1757_1(glval) = VariableAddress[x579] : -# 1757| r1757_2(glval) = FunctionAddress[~String] : -# 1757| v1757_3(void) = Call[~String] : func:r1757_2, this:r1757_1 -# 1757| mu1757_4(unknown) = ^CallSideEffect : ~m? -# 1757| v1757_5(void) = ^IndirectReadSideEffect[-1] : &:r1757_1, ~m? -# 1757| mu1757_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1757_1 -# 1757| r1757_7(bool) = Constant[0] : -# 1757| v1757_8(void) = ConditionalBranch : r1757_7 +# 35| Block 579 +# 35| r35_8107(glval) = VariableAddress[x579] : +# 35| mu35_8108(String) = Uninitialized[x579] : &:r35_8107 +# 35| r35_8109(glval) = FunctionAddress[String] : +# 35| v35_8110(void) = Call[String] : func:r35_8109, this:r35_8107 +# 35| mu35_8111(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8112(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8107 +# 35| r35_8113(glval) = VariableAddress[x579] : +# 35| r35_8114(glval) = FunctionAddress[~String] : +# 35| v35_8115(void) = Call[~String] : func:r35_8114, this:r35_8113 +# 35| mu35_8116(unknown) = ^CallSideEffect : ~m? +# 35| v35_8117(void) = ^IndirectReadSideEffect[-1] : &:r35_8113, ~m? +# 35| mu35_8118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8113 +# 35| r35_8119(bool) = Constant[0] : +# 35| v35_8120(void) = ConditionalBranch : r35_8119 #-----| False -> Block 580 #-----| True -> Block 1026 -# 1759| Block 580 -# 1759| r1759_1(glval) = VariableAddress[x580] : -# 1759| mu1759_2(String) = Uninitialized[x580] : &:r1759_1 -# 1759| r1759_3(glval) = FunctionAddress[String] : -# 1759| v1759_4(void) = Call[String] : func:r1759_3, this:r1759_1 -# 1759| mu1759_5(unknown) = ^CallSideEffect : ~m? -# 1759| mu1759_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1759_1 -# 1760| r1760_1(glval) = VariableAddress[x580] : -# 1760| r1760_2(glval) = FunctionAddress[~String] : -# 1760| v1760_3(void) = Call[~String] : func:r1760_2, this:r1760_1 -# 1760| mu1760_4(unknown) = ^CallSideEffect : ~m? -# 1760| v1760_5(void) = ^IndirectReadSideEffect[-1] : &:r1760_1, ~m? -# 1760| mu1760_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1760_1 -# 1760| r1760_7(bool) = Constant[0] : -# 1760| v1760_8(void) = ConditionalBranch : r1760_7 +# 35| Block 580 +# 35| r35_8121(glval) = VariableAddress[x580] : +# 35| mu35_8122(String) = Uninitialized[x580] : &:r35_8121 +# 35| r35_8123(glval) = FunctionAddress[String] : +# 35| v35_8124(void) = Call[String] : func:r35_8123, this:r35_8121 +# 35| mu35_8125(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8126(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8121 +# 35| r35_8127(glval) = VariableAddress[x580] : +# 35| r35_8128(glval) = FunctionAddress[~String] : +# 35| v35_8129(void) = Call[~String] : func:r35_8128, this:r35_8127 +# 35| mu35_8130(unknown) = ^CallSideEffect : ~m? +# 35| v35_8131(void) = ^IndirectReadSideEffect[-1] : &:r35_8127, ~m? +# 35| mu35_8132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8127 +# 35| r35_8133(bool) = Constant[0] : +# 35| v35_8134(void) = ConditionalBranch : r35_8133 #-----| False -> Block 581 #-----| True -> Block 1026 -# 1762| Block 581 -# 1762| r1762_1(glval) = VariableAddress[x581] : -# 1762| mu1762_2(String) = Uninitialized[x581] : &:r1762_1 -# 1762| r1762_3(glval) = FunctionAddress[String] : -# 1762| v1762_4(void) = Call[String] : func:r1762_3, this:r1762_1 -# 1762| mu1762_5(unknown) = ^CallSideEffect : ~m? -# 1762| mu1762_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1762_1 -# 1763| r1763_1(glval) = VariableAddress[x581] : -# 1763| r1763_2(glval) = FunctionAddress[~String] : -# 1763| v1763_3(void) = Call[~String] : func:r1763_2, this:r1763_1 -# 1763| mu1763_4(unknown) = ^CallSideEffect : ~m? -# 1763| v1763_5(void) = ^IndirectReadSideEffect[-1] : &:r1763_1, ~m? -# 1763| mu1763_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1763_1 -# 1763| r1763_7(bool) = Constant[0] : -# 1763| v1763_8(void) = ConditionalBranch : r1763_7 +# 35| Block 581 +# 35| r35_8135(glval) = VariableAddress[x581] : +# 35| mu35_8136(String) = Uninitialized[x581] : &:r35_8135 +# 35| r35_8137(glval) = FunctionAddress[String] : +# 35| v35_8138(void) = Call[String] : func:r35_8137, this:r35_8135 +# 35| mu35_8139(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8140(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8135 +# 35| r35_8141(glval) = VariableAddress[x581] : +# 35| r35_8142(glval) = FunctionAddress[~String] : +# 35| v35_8143(void) = Call[~String] : func:r35_8142, this:r35_8141 +# 35| mu35_8144(unknown) = ^CallSideEffect : ~m? +# 35| v35_8145(void) = ^IndirectReadSideEffect[-1] : &:r35_8141, ~m? +# 35| mu35_8146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8141 +# 35| r35_8147(bool) = Constant[0] : +# 35| v35_8148(void) = ConditionalBranch : r35_8147 #-----| False -> Block 582 #-----| True -> Block 1026 -# 1765| Block 582 -# 1765| r1765_1(glval) = VariableAddress[x582] : -# 1765| mu1765_2(String) = Uninitialized[x582] : &:r1765_1 -# 1765| r1765_3(glval) = FunctionAddress[String] : -# 1765| v1765_4(void) = Call[String] : func:r1765_3, this:r1765_1 -# 1765| mu1765_5(unknown) = ^CallSideEffect : ~m? -# 1765| mu1765_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1765_1 -# 1766| r1766_1(glval) = VariableAddress[x582] : -# 1766| r1766_2(glval) = FunctionAddress[~String] : -# 1766| v1766_3(void) = Call[~String] : func:r1766_2, this:r1766_1 -# 1766| mu1766_4(unknown) = ^CallSideEffect : ~m? -# 1766| v1766_5(void) = ^IndirectReadSideEffect[-1] : &:r1766_1, ~m? -# 1766| mu1766_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1766_1 -# 1766| r1766_7(bool) = Constant[0] : -# 1766| v1766_8(void) = ConditionalBranch : r1766_7 +# 35| Block 582 +# 35| r35_8149(glval) = VariableAddress[x582] : +# 35| mu35_8150(String) = Uninitialized[x582] : &:r35_8149 +# 35| r35_8151(glval) = FunctionAddress[String] : +# 35| v35_8152(void) = Call[String] : func:r35_8151, this:r35_8149 +# 35| mu35_8153(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8154(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8149 +# 35| r35_8155(glval) = VariableAddress[x582] : +# 35| r35_8156(glval) = FunctionAddress[~String] : +# 35| v35_8157(void) = Call[~String] : func:r35_8156, this:r35_8155 +# 35| mu35_8158(unknown) = ^CallSideEffect : ~m? +# 35| v35_8159(void) = ^IndirectReadSideEffect[-1] : &:r35_8155, ~m? +# 35| mu35_8160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8155 +# 35| r35_8161(bool) = Constant[0] : +# 35| v35_8162(void) = ConditionalBranch : r35_8161 #-----| False -> Block 583 #-----| True -> Block 1026 -# 1768| Block 583 -# 1768| r1768_1(glval) = VariableAddress[x583] : -# 1768| mu1768_2(String) = Uninitialized[x583] : &:r1768_1 -# 1768| r1768_3(glval) = FunctionAddress[String] : -# 1768| v1768_4(void) = Call[String] : func:r1768_3, this:r1768_1 -# 1768| mu1768_5(unknown) = ^CallSideEffect : ~m? -# 1768| mu1768_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1768_1 -# 1769| r1769_1(glval) = VariableAddress[x583] : -# 1769| r1769_2(glval) = FunctionAddress[~String] : -# 1769| v1769_3(void) = Call[~String] : func:r1769_2, this:r1769_1 -# 1769| mu1769_4(unknown) = ^CallSideEffect : ~m? -# 1769| v1769_5(void) = ^IndirectReadSideEffect[-1] : &:r1769_1, ~m? -# 1769| mu1769_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1769_1 -# 1769| r1769_7(bool) = Constant[0] : -# 1769| v1769_8(void) = ConditionalBranch : r1769_7 +# 35| Block 583 +# 35| r35_8163(glval) = VariableAddress[x583] : +# 35| mu35_8164(String) = Uninitialized[x583] : &:r35_8163 +# 35| r35_8165(glval) = FunctionAddress[String] : +# 35| v35_8166(void) = Call[String] : func:r35_8165, this:r35_8163 +# 35| mu35_8167(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8168(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8163 +# 35| r35_8169(glval) = VariableAddress[x583] : +# 35| r35_8170(glval) = FunctionAddress[~String] : +# 35| v35_8171(void) = Call[~String] : func:r35_8170, this:r35_8169 +# 35| mu35_8172(unknown) = ^CallSideEffect : ~m? +# 35| v35_8173(void) = ^IndirectReadSideEffect[-1] : &:r35_8169, ~m? +# 35| mu35_8174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8169 +# 35| r35_8175(bool) = Constant[0] : +# 35| v35_8176(void) = ConditionalBranch : r35_8175 #-----| False -> Block 584 #-----| True -> Block 1026 -# 1771| Block 584 -# 1771| r1771_1(glval) = VariableAddress[x584] : -# 1771| mu1771_2(String) = Uninitialized[x584] : &:r1771_1 -# 1771| r1771_3(glval) = FunctionAddress[String] : -# 1771| v1771_4(void) = Call[String] : func:r1771_3, this:r1771_1 -# 1771| mu1771_5(unknown) = ^CallSideEffect : ~m? -# 1771| mu1771_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1771_1 -# 1772| r1772_1(glval) = VariableAddress[x584] : -# 1772| r1772_2(glval) = FunctionAddress[~String] : -# 1772| v1772_3(void) = Call[~String] : func:r1772_2, this:r1772_1 -# 1772| mu1772_4(unknown) = ^CallSideEffect : ~m? -# 1772| v1772_5(void) = ^IndirectReadSideEffect[-1] : &:r1772_1, ~m? -# 1772| mu1772_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1772_1 -# 1772| r1772_7(bool) = Constant[0] : -# 1772| v1772_8(void) = ConditionalBranch : r1772_7 +# 35| Block 584 +# 35| r35_8177(glval) = VariableAddress[x584] : +# 35| mu35_8178(String) = Uninitialized[x584] : &:r35_8177 +# 35| r35_8179(glval) = FunctionAddress[String] : +# 35| v35_8180(void) = Call[String] : func:r35_8179, this:r35_8177 +# 35| mu35_8181(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8182(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8177 +# 35| r35_8183(glval) = VariableAddress[x584] : +# 35| r35_8184(glval) = FunctionAddress[~String] : +# 35| v35_8185(void) = Call[~String] : func:r35_8184, this:r35_8183 +# 35| mu35_8186(unknown) = ^CallSideEffect : ~m? +# 35| v35_8187(void) = ^IndirectReadSideEffect[-1] : &:r35_8183, ~m? +# 35| mu35_8188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8183 +# 35| r35_8189(bool) = Constant[0] : +# 35| v35_8190(void) = ConditionalBranch : r35_8189 #-----| False -> Block 585 #-----| True -> Block 1026 -# 1774| Block 585 -# 1774| r1774_1(glval) = VariableAddress[x585] : -# 1774| mu1774_2(String) = Uninitialized[x585] : &:r1774_1 -# 1774| r1774_3(glval) = FunctionAddress[String] : -# 1774| v1774_4(void) = Call[String] : func:r1774_3, this:r1774_1 -# 1774| mu1774_5(unknown) = ^CallSideEffect : ~m? -# 1774| mu1774_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1774_1 -# 1775| r1775_1(glval) = VariableAddress[x585] : -# 1775| r1775_2(glval) = FunctionAddress[~String] : -# 1775| v1775_3(void) = Call[~String] : func:r1775_2, this:r1775_1 -# 1775| mu1775_4(unknown) = ^CallSideEffect : ~m? -# 1775| v1775_5(void) = ^IndirectReadSideEffect[-1] : &:r1775_1, ~m? -# 1775| mu1775_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1775_1 -# 1775| r1775_7(bool) = Constant[0] : -# 1775| v1775_8(void) = ConditionalBranch : r1775_7 +# 35| Block 585 +# 35| r35_8191(glval) = VariableAddress[x585] : +# 35| mu35_8192(String) = Uninitialized[x585] : &:r35_8191 +# 35| r35_8193(glval) = FunctionAddress[String] : +# 35| v35_8194(void) = Call[String] : func:r35_8193, this:r35_8191 +# 35| mu35_8195(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8196(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8191 +# 35| r35_8197(glval) = VariableAddress[x585] : +# 35| r35_8198(glval) = FunctionAddress[~String] : +# 35| v35_8199(void) = Call[~String] : func:r35_8198, this:r35_8197 +# 35| mu35_8200(unknown) = ^CallSideEffect : ~m? +# 35| v35_8201(void) = ^IndirectReadSideEffect[-1] : &:r35_8197, ~m? +# 35| mu35_8202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8197 +# 35| r35_8203(bool) = Constant[0] : +# 35| v35_8204(void) = ConditionalBranch : r35_8203 #-----| False -> Block 586 #-----| True -> Block 1026 -# 1777| Block 586 -# 1777| r1777_1(glval) = VariableAddress[x586] : -# 1777| mu1777_2(String) = Uninitialized[x586] : &:r1777_1 -# 1777| r1777_3(glval) = FunctionAddress[String] : -# 1777| v1777_4(void) = Call[String] : func:r1777_3, this:r1777_1 -# 1777| mu1777_5(unknown) = ^CallSideEffect : ~m? -# 1777| mu1777_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1777_1 -# 1778| r1778_1(glval) = VariableAddress[x586] : -# 1778| r1778_2(glval) = FunctionAddress[~String] : -# 1778| v1778_3(void) = Call[~String] : func:r1778_2, this:r1778_1 -# 1778| mu1778_4(unknown) = ^CallSideEffect : ~m? -# 1778| v1778_5(void) = ^IndirectReadSideEffect[-1] : &:r1778_1, ~m? -# 1778| mu1778_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1778_1 -# 1778| r1778_7(bool) = Constant[0] : -# 1778| v1778_8(void) = ConditionalBranch : r1778_7 +# 35| Block 586 +# 35| r35_8205(glval) = VariableAddress[x586] : +# 35| mu35_8206(String) = Uninitialized[x586] : &:r35_8205 +# 35| r35_8207(glval) = FunctionAddress[String] : +# 35| v35_8208(void) = Call[String] : func:r35_8207, this:r35_8205 +# 35| mu35_8209(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8210(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8205 +# 35| r35_8211(glval) = VariableAddress[x586] : +# 35| r35_8212(glval) = FunctionAddress[~String] : +# 35| v35_8213(void) = Call[~String] : func:r35_8212, this:r35_8211 +# 35| mu35_8214(unknown) = ^CallSideEffect : ~m? +# 35| v35_8215(void) = ^IndirectReadSideEffect[-1] : &:r35_8211, ~m? +# 35| mu35_8216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8211 +# 35| r35_8217(bool) = Constant[0] : +# 35| v35_8218(void) = ConditionalBranch : r35_8217 #-----| False -> Block 587 #-----| True -> Block 1026 -# 1780| Block 587 -# 1780| r1780_1(glval) = VariableAddress[x587] : -# 1780| mu1780_2(String) = Uninitialized[x587] : &:r1780_1 -# 1780| r1780_3(glval) = FunctionAddress[String] : -# 1780| v1780_4(void) = Call[String] : func:r1780_3, this:r1780_1 -# 1780| mu1780_5(unknown) = ^CallSideEffect : ~m? -# 1780| mu1780_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1780_1 -# 1781| r1781_1(glval) = VariableAddress[x587] : -# 1781| r1781_2(glval) = FunctionAddress[~String] : -# 1781| v1781_3(void) = Call[~String] : func:r1781_2, this:r1781_1 -# 1781| mu1781_4(unknown) = ^CallSideEffect : ~m? -# 1781| v1781_5(void) = ^IndirectReadSideEffect[-1] : &:r1781_1, ~m? -# 1781| mu1781_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1781_1 -# 1781| r1781_7(bool) = Constant[0] : -# 1781| v1781_8(void) = ConditionalBranch : r1781_7 +# 35| Block 587 +# 35| r35_8219(glval) = VariableAddress[x587] : +# 35| mu35_8220(String) = Uninitialized[x587] : &:r35_8219 +# 35| r35_8221(glval) = FunctionAddress[String] : +# 35| v35_8222(void) = Call[String] : func:r35_8221, this:r35_8219 +# 35| mu35_8223(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8224(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8219 +# 35| r35_8225(glval) = VariableAddress[x587] : +# 35| r35_8226(glval) = FunctionAddress[~String] : +# 35| v35_8227(void) = Call[~String] : func:r35_8226, this:r35_8225 +# 35| mu35_8228(unknown) = ^CallSideEffect : ~m? +# 35| v35_8229(void) = ^IndirectReadSideEffect[-1] : &:r35_8225, ~m? +# 35| mu35_8230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8225 +# 35| r35_8231(bool) = Constant[0] : +# 35| v35_8232(void) = ConditionalBranch : r35_8231 #-----| False -> Block 588 #-----| True -> Block 1026 -# 1783| Block 588 -# 1783| r1783_1(glval) = VariableAddress[x588] : -# 1783| mu1783_2(String) = Uninitialized[x588] : &:r1783_1 -# 1783| r1783_3(glval) = FunctionAddress[String] : -# 1783| v1783_4(void) = Call[String] : func:r1783_3, this:r1783_1 -# 1783| mu1783_5(unknown) = ^CallSideEffect : ~m? -# 1783| mu1783_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1783_1 -# 1784| r1784_1(glval) = VariableAddress[x588] : -# 1784| r1784_2(glval) = FunctionAddress[~String] : -# 1784| v1784_3(void) = Call[~String] : func:r1784_2, this:r1784_1 -# 1784| mu1784_4(unknown) = ^CallSideEffect : ~m? -# 1784| v1784_5(void) = ^IndirectReadSideEffect[-1] : &:r1784_1, ~m? -# 1784| mu1784_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1784_1 -# 1784| r1784_7(bool) = Constant[0] : -# 1784| v1784_8(void) = ConditionalBranch : r1784_7 +# 35| Block 588 +# 35| r35_8233(glval) = VariableAddress[x588] : +# 35| mu35_8234(String) = Uninitialized[x588] : &:r35_8233 +# 35| r35_8235(glval) = FunctionAddress[String] : +# 35| v35_8236(void) = Call[String] : func:r35_8235, this:r35_8233 +# 35| mu35_8237(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8238(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8233 +# 35| r35_8239(glval) = VariableAddress[x588] : +# 35| r35_8240(glval) = FunctionAddress[~String] : +# 35| v35_8241(void) = Call[~String] : func:r35_8240, this:r35_8239 +# 35| mu35_8242(unknown) = ^CallSideEffect : ~m? +# 35| v35_8243(void) = ^IndirectReadSideEffect[-1] : &:r35_8239, ~m? +# 35| mu35_8244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8239 +# 35| r35_8245(bool) = Constant[0] : +# 35| v35_8246(void) = ConditionalBranch : r35_8245 #-----| False -> Block 589 #-----| True -> Block 1026 -# 1786| Block 589 -# 1786| r1786_1(glval) = VariableAddress[x589] : -# 1786| mu1786_2(String) = Uninitialized[x589] : &:r1786_1 -# 1786| r1786_3(glval) = FunctionAddress[String] : -# 1786| v1786_4(void) = Call[String] : func:r1786_3, this:r1786_1 -# 1786| mu1786_5(unknown) = ^CallSideEffect : ~m? -# 1786| mu1786_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1786_1 -# 1787| r1787_1(glval) = VariableAddress[x589] : -# 1787| r1787_2(glval) = FunctionAddress[~String] : -# 1787| v1787_3(void) = Call[~String] : func:r1787_2, this:r1787_1 -# 1787| mu1787_4(unknown) = ^CallSideEffect : ~m? -# 1787| v1787_5(void) = ^IndirectReadSideEffect[-1] : &:r1787_1, ~m? -# 1787| mu1787_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1787_1 -# 1787| r1787_7(bool) = Constant[0] : -# 1787| v1787_8(void) = ConditionalBranch : r1787_7 +# 35| Block 589 +# 35| r35_8247(glval) = VariableAddress[x589] : +# 35| mu35_8248(String) = Uninitialized[x589] : &:r35_8247 +# 35| r35_8249(glval) = FunctionAddress[String] : +# 35| v35_8250(void) = Call[String] : func:r35_8249, this:r35_8247 +# 35| mu35_8251(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8252(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8247 +# 35| r35_8253(glval) = VariableAddress[x589] : +# 35| r35_8254(glval) = FunctionAddress[~String] : +# 35| v35_8255(void) = Call[~String] : func:r35_8254, this:r35_8253 +# 35| mu35_8256(unknown) = ^CallSideEffect : ~m? +# 35| v35_8257(void) = ^IndirectReadSideEffect[-1] : &:r35_8253, ~m? +# 35| mu35_8258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8253 +# 35| r35_8259(bool) = Constant[0] : +# 35| v35_8260(void) = ConditionalBranch : r35_8259 #-----| False -> Block 590 #-----| True -> Block 1026 -# 1789| Block 590 -# 1789| r1789_1(glval) = VariableAddress[x590] : -# 1789| mu1789_2(String) = Uninitialized[x590] : &:r1789_1 -# 1789| r1789_3(glval) = FunctionAddress[String] : -# 1789| v1789_4(void) = Call[String] : func:r1789_3, this:r1789_1 -# 1789| mu1789_5(unknown) = ^CallSideEffect : ~m? -# 1789| mu1789_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1789_1 -# 1790| r1790_1(glval) = VariableAddress[x590] : -# 1790| r1790_2(glval) = FunctionAddress[~String] : -# 1790| v1790_3(void) = Call[~String] : func:r1790_2, this:r1790_1 -# 1790| mu1790_4(unknown) = ^CallSideEffect : ~m? -# 1790| v1790_5(void) = ^IndirectReadSideEffect[-1] : &:r1790_1, ~m? -# 1790| mu1790_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1790_1 -# 1790| r1790_7(bool) = Constant[0] : -# 1790| v1790_8(void) = ConditionalBranch : r1790_7 +# 35| Block 590 +# 35| r35_8261(glval) = VariableAddress[x590] : +# 35| mu35_8262(String) = Uninitialized[x590] : &:r35_8261 +# 35| r35_8263(glval) = FunctionAddress[String] : +# 35| v35_8264(void) = Call[String] : func:r35_8263, this:r35_8261 +# 35| mu35_8265(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8266(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8261 +# 35| r35_8267(glval) = VariableAddress[x590] : +# 35| r35_8268(glval) = FunctionAddress[~String] : +# 35| v35_8269(void) = Call[~String] : func:r35_8268, this:r35_8267 +# 35| mu35_8270(unknown) = ^CallSideEffect : ~m? +# 35| v35_8271(void) = ^IndirectReadSideEffect[-1] : &:r35_8267, ~m? +# 35| mu35_8272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8267 +# 35| r35_8273(bool) = Constant[0] : +# 35| v35_8274(void) = ConditionalBranch : r35_8273 #-----| False -> Block 591 #-----| True -> Block 1026 -# 1792| Block 591 -# 1792| r1792_1(glval) = VariableAddress[x591] : -# 1792| mu1792_2(String) = Uninitialized[x591] : &:r1792_1 -# 1792| r1792_3(glval) = FunctionAddress[String] : -# 1792| v1792_4(void) = Call[String] : func:r1792_3, this:r1792_1 -# 1792| mu1792_5(unknown) = ^CallSideEffect : ~m? -# 1792| mu1792_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1792_1 -# 1793| r1793_1(glval) = VariableAddress[x591] : -# 1793| r1793_2(glval) = FunctionAddress[~String] : -# 1793| v1793_3(void) = Call[~String] : func:r1793_2, this:r1793_1 -# 1793| mu1793_4(unknown) = ^CallSideEffect : ~m? -# 1793| v1793_5(void) = ^IndirectReadSideEffect[-1] : &:r1793_1, ~m? -# 1793| mu1793_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1793_1 -# 1793| r1793_7(bool) = Constant[0] : -# 1793| v1793_8(void) = ConditionalBranch : r1793_7 +# 35| Block 591 +# 35| r35_8275(glval) = VariableAddress[x591] : +# 35| mu35_8276(String) = Uninitialized[x591] : &:r35_8275 +# 35| r35_8277(glval) = FunctionAddress[String] : +# 35| v35_8278(void) = Call[String] : func:r35_8277, this:r35_8275 +# 35| mu35_8279(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8280(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8275 +# 35| r35_8281(glval) = VariableAddress[x591] : +# 35| r35_8282(glval) = FunctionAddress[~String] : +# 35| v35_8283(void) = Call[~String] : func:r35_8282, this:r35_8281 +# 35| mu35_8284(unknown) = ^CallSideEffect : ~m? +# 35| v35_8285(void) = ^IndirectReadSideEffect[-1] : &:r35_8281, ~m? +# 35| mu35_8286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8281 +# 35| r35_8287(bool) = Constant[0] : +# 35| v35_8288(void) = ConditionalBranch : r35_8287 #-----| False -> Block 592 #-----| True -> Block 1026 -# 1795| Block 592 -# 1795| r1795_1(glval) = VariableAddress[x592] : -# 1795| mu1795_2(String) = Uninitialized[x592] : &:r1795_1 -# 1795| r1795_3(glval) = FunctionAddress[String] : -# 1795| v1795_4(void) = Call[String] : func:r1795_3, this:r1795_1 -# 1795| mu1795_5(unknown) = ^CallSideEffect : ~m? -# 1795| mu1795_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1795_1 -# 1796| r1796_1(glval) = VariableAddress[x592] : -# 1796| r1796_2(glval) = FunctionAddress[~String] : -# 1796| v1796_3(void) = Call[~String] : func:r1796_2, this:r1796_1 -# 1796| mu1796_4(unknown) = ^CallSideEffect : ~m? -# 1796| v1796_5(void) = ^IndirectReadSideEffect[-1] : &:r1796_1, ~m? -# 1796| mu1796_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1796_1 -# 1796| r1796_7(bool) = Constant[0] : -# 1796| v1796_8(void) = ConditionalBranch : r1796_7 +# 35| Block 592 +# 35| r35_8289(glval) = VariableAddress[x592] : +# 35| mu35_8290(String) = Uninitialized[x592] : &:r35_8289 +# 35| r35_8291(glval) = FunctionAddress[String] : +# 35| v35_8292(void) = Call[String] : func:r35_8291, this:r35_8289 +# 35| mu35_8293(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8294(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8289 +# 35| r35_8295(glval) = VariableAddress[x592] : +# 35| r35_8296(glval) = FunctionAddress[~String] : +# 35| v35_8297(void) = Call[~String] : func:r35_8296, this:r35_8295 +# 35| mu35_8298(unknown) = ^CallSideEffect : ~m? +# 35| v35_8299(void) = ^IndirectReadSideEffect[-1] : &:r35_8295, ~m? +# 35| mu35_8300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8295 +# 35| r35_8301(bool) = Constant[0] : +# 35| v35_8302(void) = ConditionalBranch : r35_8301 #-----| False -> Block 593 #-----| True -> Block 1026 -# 1798| Block 593 -# 1798| r1798_1(glval) = VariableAddress[x593] : -# 1798| mu1798_2(String) = Uninitialized[x593] : &:r1798_1 -# 1798| r1798_3(glval) = FunctionAddress[String] : -# 1798| v1798_4(void) = Call[String] : func:r1798_3, this:r1798_1 -# 1798| mu1798_5(unknown) = ^CallSideEffect : ~m? -# 1798| mu1798_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1798_1 -# 1799| r1799_1(glval) = VariableAddress[x593] : -# 1799| r1799_2(glval) = FunctionAddress[~String] : -# 1799| v1799_3(void) = Call[~String] : func:r1799_2, this:r1799_1 -# 1799| mu1799_4(unknown) = ^CallSideEffect : ~m? -# 1799| v1799_5(void) = ^IndirectReadSideEffect[-1] : &:r1799_1, ~m? -# 1799| mu1799_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1799_1 -# 1799| r1799_7(bool) = Constant[0] : -# 1799| v1799_8(void) = ConditionalBranch : r1799_7 +# 35| Block 593 +# 35| r35_8303(glval) = VariableAddress[x593] : +# 35| mu35_8304(String) = Uninitialized[x593] : &:r35_8303 +# 35| r35_8305(glval) = FunctionAddress[String] : +# 35| v35_8306(void) = Call[String] : func:r35_8305, this:r35_8303 +# 35| mu35_8307(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8308(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8303 +# 35| r35_8309(glval) = VariableAddress[x593] : +# 35| r35_8310(glval) = FunctionAddress[~String] : +# 35| v35_8311(void) = Call[~String] : func:r35_8310, this:r35_8309 +# 35| mu35_8312(unknown) = ^CallSideEffect : ~m? +# 35| v35_8313(void) = ^IndirectReadSideEffect[-1] : &:r35_8309, ~m? +# 35| mu35_8314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8309 +# 35| r35_8315(bool) = Constant[0] : +# 35| v35_8316(void) = ConditionalBranch : r35_8315 #-----| False -> Block 594 #-----| True -> Block 1026 -# 1801| Block 594 -# 1801| r1801_1(glval) = VariableAddress[x594] : -# 1801| mu1801_2(String) = Uninitialized[x594] : &:r1801_1 -# 1801| r1801_3(glval) = FunctionAddress[String] : -# 1801| v1801_4(void) = Call[String] : func:r1801_3, this:r1801_1 -# 1801| mu1801_5(unknown) = ^CallSideEffect : ~m? -# 1801| mu1801_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1801_1 -# 1802| r1802_1(glval) = VariableAddress[x594] : -# 1802| r1802_2(glval) = FunctionAddress[~String] : -# 1802| v1802_3(void) = Call[~String] : func:r1802_2, this:r1802_1 -# 1802| mu1802_4(unknown) = ^CallSideEffect : ~m? -# 1802| v1802_5(void) = ^IndirectReadSideEffect[-1] : &:r1802_1, ~m? -# 1802| mu1802_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1802_1 -# 1802| r1802_7(bool) = Constant[0] : -# 1802| v1802_8(void) = ConditionalBranch : r1802_7 +# 35| Block 594 +# 35| r35_8317(glval) = VariableAddress[x594] : +# 35| mu35_8318(String) = Uninitialized[x594] : &:r35_8317 +# 35| r35_8319(glval) = FunctionAddress[String] : +# 35| v35_8320(void) = Call[String] : func:r35_8319, this:r35_8317 +# 35| mu35_8321(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8322(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8317 +# 35| r35_8323(glval) = VariableAddress[x594] : +# 35| r35_8324(glval) = FunctionAddress[~String] : +# 35| v35_8325(void) = Call[~String] : func:r35_8324, this:r35_8323 +# 35| mu35_8326(unknown) = ^CallSideEffect : ~m? +# 35| v35_8327(void) = ^IndirectReadSideEffect[-1] : &:r35_8323, ~m? +# 35| mu35_8328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8323 +# 35| r35_8329(bool) = Constant[0] : +# 35| v35_8330(void) = ConditionalBranch : r35_8329 #-----| False -> Block 595 #-----| True -> Block 1026 -# 1804| Block 595 -# 1804| r1804_1(glval) = VariableAddress[x595] : -# 1804| mu1804_2(String) = Uninitialized[x595] : &:r1804_1 -# 1804| r1804_3(glval) = FunctionAddress[String] : -# 1804| v1804_4(void) = Call[String] : func:r1804_3, this:r1804_1 -# 1804| mu1804_5(unknown) = ^CallSideEffect : ~m? -# 1804| mu1804_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1804_1 -# 1805| r1805_1(glval) = VariableAddress[x595] : -# 1805| r1805_2(glval) = FunctionAddress[~String] : -# 1805| v1805_3(void) = Call[~String] : func:r1805_2, this:r1805_1 -# 1805| mu1805_4(unknown) = ^CallSideEffect : ~m? -# 1805| v1805_5(void) = ^IndirectReadSideEffect[-1] : &:r1805_1, ~m? -# 1805| mu1805_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1805_1 -# 1805| r1805_7(bool) = Constant[0] : -# 1805| v1805_8(void) = ConditionalBranch : r1805_7 +# 35| Block 595 +# 35| r35_8331(glval) = VariableAddress[x595] : +# 35| mu35_8332(String) = Uninitialized[x595] : &:r35_8331 +# 35| r35_8333(glval) = FunctionAddress[String] : +# 35| v35_8334(void) = Call[String] : func:r35_8333, this:r35_8331 +# 35| mu35_8335(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8336(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8331 +# 35| r35_8337(glval) = VariableAddress[x595] : +# 35| r35_8338(glval) = FunctionAddress[~String] : +# 35| v35_8339(void) = Call[~String] : func:r35_8338, this:r35_8337 +# 35| mu35_8340(unknown) = ^CallSideEffect : ~m? +# 35| v35_8341(void) = ^IndirectReadSideEffect[-1] : &:r35_8337, ~m? +# 35| mu35_8342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8337 +# 35| r35_8343(bool) = Constant[0] : +# 35| v35_8344(void) = ConditionalBranch : r35_8343 #-----| False -> Block 596 #-----| True -> Block 1026 -# 1807| Block 596 -# 1807| r1807_1(glval) = VariableAddress[x596] : -# 1807| mu1807_2(String) = Uninitialized[x596] : &:r1807_1 -# 1807| r1807_3(glval) = FunctionAddress[String] : -# 1807| v1807_4(void) = Call[String] : func:r1807_3, this:r1807_1 -# 1807| mu1807_5(unknown) = ^CallSideEffect : ~m? -# 1807| mu1807_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1807_1 -# 1808| r1808_1(glval) = VariableAddress[x596] : -# 1808| r1808_2(glval) = FunctionAddress[~String] : -# 1808| v1808_3(void) = Call[~String] : func:r1808_2, this:r1808_1 -# 1808| mu1808_4(unknown) = ^CallSideEffect : ~m? -# 1808| v1808_5(void) = ^IndirectReadSideEffect[-1] : &:r1808_1, ~m? -# 1808| mu1808_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1808_1 -# 1808| r1808_7(bool) = Constant[0] : -# 1808| v1808_8(void) = ConditionalBranch : r1808_7 +# 35| Block 596 +# 35| r35_8345(glval) = VariableAddress[x596] : +# 35| mu35_8346(String) = Uninitialized[x596] : &:r35_8345 +# 35| r35_8347(glval) = FunctionAddress[String] : +# 35| v35_8348(void) = Call[String] : func:r35_8347, this:r35_8345 +# 35| mu35_8349(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8350(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8345 +# 35| r35_8351(glval) = VariableAddress[x596] : +# 35| r35_8352(glval) = FunctionAddress[~String] : +# 35| v35_8353(void) = Call[~String] : func:r35_8352, this:r35_8351 +# 35| mu35_8354(unknown) = ^CallSideEffect : ~m? +# 35| v35_8355(void) = ^IndirectReadSideEffect[-1] : &:r35_8351, ~m? +# 35| mu35_8356(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8351 +# 35| r35_8357(bool) = Constant[0] : +# 35| v35_8358(void) = ConditionalBranch : r35_8357 #-----| False -> Block 597 #-----| True -> Block 1026 -# 1810| Block 597 -# 1810| r1810_1(glval) = VariableAddress[x597] : -# 1810| mu1810_2(String) = Uninitialized[x597] : &:r1810_1 -# 1810| r1810_3(glval) = FunctionAddress[String] : -# 1810| v1810_4(void) = Call[String] : func:r1810_3, this:r1810_1 -# 1810| mu1810_5(unknown) = ^CallSideEffect : ~m? -# 1810| mu1810_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1810_1 -# 1811| r1811_1(glval) = VariableAddress[x597] : -# 1811| r1811_2(glval) = FunctionAddress[~String] : -# 1811| v1811_3(void) = Call[~String] : func:r1811_2, this:r1811_1 -# 1811| mu1811_4(unknown) = ^CallSideEffect : ~m? -# 1811| v1811_5(void) = ^IndirectReadSideEffect[-1] : &:r1811_1, ~m? -# 1811| mu1811_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1811_1 -# 1811| r1811_7(bool) = Constant[0] : -# 1811| v1811_8(void) = ConditionalBranch : r1811_7 +# 35| Block 597 +# 35| r35_8359(glval) = VariableAddress[x597] : +# 35| mu35_8360(String) = Uninitialized[x597] : &:r35_8359 +# 35| r35_8361(glval) = FunctionAddress[String] : +# 35| v35_8362(void) = Call[String] : func:r35_8361, this:r35_8359 +# 35| mu35_8363(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8364(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8359 +# 35| r35_8365(glval) = VariableAddress[x597] : +# 35| r35_8366(glval) = FunctionAddress[~String] : +# 35| v35_8367(void) = Call[~String] : func:r35_8366, this:r35_8365 +# 35| mu35_8368(unknown) = ^CallSideEffect : ~m? +# 35| v35_8369(void) = ^IndirectReadSideEffect[-1] : &:r35_8365, ~m? +# 35| mu35_8370(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8365 +# 35| r35_8371(bool) = Constant[0] : +# 35| v35_8372(void) = ConditionalBranch : r35_8371 #-----| False -> Block 598 #-----| True -> Block 1026 -# 1813| Block 598 -# 1813| r1813_1(glval) = VariableAddress[x598] : -# 1813| mu1813_2(String) = Uninitialized[x598] : &:r1813_1 -# 1813| r1813_3(glval) = FunctionAddress[String] : -# 1813| v1813_4(void) = Call[String] : func:r1813_3, this:r1813_1 -# 1813| mu1813_5(unknown) = ^CallSideEffect : ~m? -# 1813| mu1813_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1813_1 -# 1814| r1814_1(glval) = VariableAddress[x598] : -# 1814| r1814_2(glval) = FunctionAddress[~String] : -# 1814| v1814_3(void) = Call[~String] : func:r1814_2, this:r1814_1 -# 1814| mu1814_4(unknown) = ^CallSideEffect : ~m? -# 1814| v1814_5(void) = ^IndirectReadSideEffect[-1] : &:r1814_1, ~m? -# 1814| mu1814_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1814_1 -# 1814| r1814_7(bool) = Constant[0] : -# 1814| v1814_8(void) = ConditionalBranch : r1814_7 +# 35| Block 598 +# 35| r35_8373(glval) = VariableAddress[x598] : +# 35| mu35_8374(String) = Uninitialized[x598] : &:r35_8373 +# 35| r35_8375(glval) = FunctionAddress[String] : +# 35| v35_8376(void) = Call[String] : func:r35_8375, this:r35_8373 +# 35| mu35_8377(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8378(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8373 +# 35| r35_8379(glval) = VariableAddress[x598] : +# 35| r35_8380(glval) = FunctionAddress[~String] : +# 35| v35_8381(void) = Call[~String] : func:r35_8380, this:r35_8379 +# 35| mu35_8382(unknown) = ^CallSideEffect : ~m? +# 35| v35_8383(void) = ^IndirectReadSideEffect[-1] : &:r35_8379, ~m? +# 35| mu35_8384(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8379 +# 35| r35_8385(bool) = Constant[0] : +# 35| v35_8386(void) = ConditionalBranch : r35_8385 #-----| False -> Block 599 #-----| True -> Block 1026 -# 1816| Block 599 -# 1816| r1816_1(glval) = VariableAddress[x599] : -# 1816| mu1816_2(String) = Uninitialized[x599] : &:r1816_1 -# 1816| r1816_3(glval) = FunctionAddress[String] : -# 1816| v1816_4(void) = Call[String] : func:r1816_3, this:r1816_1 -# 1816| mu1816_5(unknown) = ^CallSideEffect : ~m? -# 1816| mu1816_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1816_1 -# 1817| r1817_1(glval) = VariableAddress[x599] : -# 1817| r1817_2(glval) = FunctionAddress[~String] : -# 1817| v1817_3(void) = Call[~String] : func:r1817_2, this:r1817_1 -# 1817| mu1817_4(unknown) = ^CallSideEffect : ~m? -# 1817| v1817_5(void) = ^IndirectReadSideEffect[-1] : &:r1817_1, ~m? -# 1817| mu1817_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1817_1 -# 1817| r1817_7(bool) = Constant[0] : -# 1817| v1817_8(void) = ConditionalBranch : r1817_7 +# 35| Block 599 +# 35| r35_8387(glval) = VariableAddress[x599] : +# 35| mu35_8388(String) = Uninitialized[x599] : &:r35_8387 +# 35| r35_8389(glval) = FunctionAddress[String] : +# 35| v35_8390(void) = Call[String] : func:r35_8389, this:r35_8387 +# 35| mu35_8391(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8392(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8387 +# 35| r35_8393(glval) = VariableAddress[x599] : +# 35| r35_8394(glval) = FunctionAddress[~String] : +# 35| v35_8395(void) = Call[~String] : func:r35_8394, this:r35_8393 +# 35| mu35_8396(unknown) = ^CallSideEffect : ~m? +# 35| v35_8397(void) = ^IndirectReadSideEffect[-1] : &:r35_8393, ~m? +# 35| mu35_8398(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8393 +# 35| r35_8399(bool) = Constant[0] : +# 35| v35_8400(void) = ConditionalBranch : r35_8399 #-----| False -> Block 600 #-----| True -> Block 1026 -# 1819| Block 600 -# 1819| r1819_1(glval) = VariableAddress[x600] : -# 1819| mu1819_2(String) = Uninitialized[x600] : &:r1819_1 -# 1819| r1819_3(glval) = FunctionAddress[String] : -# 1819| v1819_4(void) = Call[String] : func:r1819_3, this:r1819_1 -# 1819| mu1819_5(unknown) = ^CallSideEffect : ~m? -# 1819| mu1819_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1819_1 -# 1820| r1820_1(glval) = VariableAddress[x600] : -# 1820| r1820_2(glval) = FunctionAddress[~String] : -# 1820| v1820_3(void) = Call[~String] : func:r1820_2, this:r1820_1 -# 1820| mu1820_4(unknown) = ^CallSideEffect : ~m? -# 1820| v1820_5(void) = ^IndirectReadSideEffect[-1] : &:r1820_1, ~m? -# 1820| mu1820_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1820_1 -# 1820| r1820_7(bool) = Constant[0] : -# 1820| v1820_8(void) = ConditionalBranch : r1820_7 +# 35| Block 600 +# 35| r35_8401(glval) = VariableAddress[x600] : +# 35| mu35_8402(String) = Uninitialized[x600] : &:r35_8401 +# 35| r35_8403(glval) = FunctionAddress[String] : +# 35| v35_8404(void) = Call[String] : func:r35_8403, this:r35_8401 +# 35| mu35_8405(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8406(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8401 +# 35| r35_8407(glval) = VariableAddress[x600] : +# 35| r35_8408(glval) = FunctionAddress[~String] : +# 35| v35_8409(void) = Call[~String] : func:r35_8408, this:r35_8407 +# 35| mu35_8410(unknown) = ^CallSideEffect : ~m? +# 35| v35_8411(void) = ^IndirectReadSideEffect[-1] : &:r35_8407, ~m? +# 35| mu35_8412(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8407 +# 35| r35_8413(bool) = Constant[0] : +# 35| v35_8414(void) = ConditionalBranch : r35_8413 #-----| False -> Block 601 #-----| True -> Block 1026 -# 1822| Block 601 -# 1822| r1822_1(glval) = VariableAddress[x601] : -# 1822| mu1822_2(String) = Uninitialized[x601] : &:r1822_1 -# 1822| r1822_3(glval) = FunctionAddress[String] : -# 1822| v1822_4(void) = Call[String] : func:r1822_3, this:r1822_1 -# 1822| mu1822_5(unknown) = ^CallSideEffect : ~m? -# 1822| mu1822_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1822_1 -# 1823| r1823_1(glval) = VariableAddress[x601] : -# 1823| r1823_2(glval) = FunctionAddress[~String] : -# 1823| v1823_3(void) = Call[~String] : func:r1823_2, this:r1823_1 -# 1823| mu1823_4(unknown) = ^CallSideEffect : ~m? -# 1823| v1823_5(void) = ^IndirectReadSideEffect[-1] : &:r1823_1, ~m? -# 1823| mu1823_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1823_1 -# 1823| r1823_7(bool) = Constant[0] : -# 1823| v1823_8(void) = ConditionalBranch : r1823_7 +# 35| Block 601 +# 35| r35_8415(glval) = VariableAddress[x601] : +# 35| mu35_8416(String) = Uninitialized[x601] : &:r35_8415 +# 35| r35_8417(glval) = FunctionAddress[String] : +# 35| v35_8418(void) = Call[String] : func:r35_8417, this:r35_8415 +# 35| mu35_8419(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8420(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8415 +# 35| r35_8421(glval) = VariableAddress[x601] : +# 35| r35_8422(glval) = FunctionAddress[~String] : +# 35| v35_8423(void) = Call[~String] : func:r35_8422, this:r35_8421 +# 35| mu35_8424(unknown) = ^CallSideEffect : ~m? +# 35| v35_8425(void) = ^IndirectReadSideEffect[-1] : &:r35_8421, ~m? +# 35| mu35_8426(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8421 +# 35| r35_8427(bool) = Constant[0] : +# 35| v35_8428(void) = ConditionalBranch : r35_8427 #-----| False -> Block 602 #-----| True -> Block 1026 -# 1825| Block 602 -# 1825| r1825_1(glval) = VariableAddress[x602] : -# 1825| mu1825_2(String) = Uninitialized[x602] : &:r1825_1 -# 1825| r1825_3(glval) = FunctionAddress[String] : -# 1825| v1825_4(void) = Call[String] : func:r1825_3, this:r1825_1 -# 1825| mu1825_5(unknown) = ^CallSideEffect : ~m? -# 1825| mu1825_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1825_1 -# 1826| r1826_1(glval) = VariableAddress[x602] : -# 1826| r1826_2(glval) = FunctionAddress[~String] : -# 1826| v1826_3(void) = Call[~String] : func:r1826_2, this:r1826_1 -# 1826| mu1826_4(unknown) = ^CallSideEffect : ~m? -# 1826| v1826_5(void) = ^IndirectReadSideEffect[-1] : &:r1826_1, ~m? -# 1826| mu1826_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1826_1 -# 1826| r1826_7(bool) = Constant[0] : -# 1826| v1826_8(void) = ConditionalBranch : r1826_7 +# 35| Block 602 +# 35| r35_8429(glval) = VariableAddress[x602] : +# 35| mu35_8430(String) = Uninitialized[x602] : &:r35_8429 +# 35| r35_8431(glval) = FunctionAddress[String] : +# 35| v35_8432(void) = Call[String] : func:r35_8431, this:r35_8429 +# 35| mu35_8433(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8434(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8429 +# 35| r35_8435(glval) = VariableAddress[x602] : +# 35| r35_8436(glval) = FunctionAddress[~String] : +# 35| v35_8437(void) = Call[~String] : func:r35_8436, this:r35_8435 +# 35| mu35_8438(unknown) = ^CallSideEffect : ~m? +# 35| v35_8439(void) = ^IndirectReadSideEffect[-1] : &:r35_8435, ~m? +# 35| mu35_8440(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8435 +# 35| r35_8441(bool) = Constant[0] : +# 35| v35_8442(void) = ConditionalBranch : r35_8441 #-----| False -> Block 603 #-----| True -> Block 1026 -# 1828| Block 603 -# 1828| r1828_1(glval) = VariableAddress[x603] : -# 1828| mu1828_2(String) = Uninitialized[x603] : &:r1828_1 -# 1828| r1828_3(glval) = FunctionAddress[String] : -# 1828| v1828_4(void) = Call[String] : func:r1828_3, this:r1828_1 -# 1828| mu1828_5(unknown) = ^CallSideEffect : ~m? -# 1828| mu1828_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1828_1 -# 1829| r1829_1(glval) = VariableAddress[x603] : -# 1829| r1829_2(glval) = FunctionAddress[~String] : -# 1829| v1829_3(void) = Call[~String] : func:r1829_2, this:r1829_1 -# 1829| mu1829_4(unknown) = ^CallSideEffect : ~m? -# 1829| v1829_5(void) = ^IndirectReadSideEffect[-1] : &:r1829_1, ~m? -# 1829| mu1829_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1829_1 -# 1829| r1829_7(bool) = Constant[0] : -# 1829| v1829_8(void) = ConditionalBranch : r1829_7 +# 35| Block 603 +# 35| r35_8443(glval) = VariableAddress[x603] : +# 35| mu35_8444(String) = Uninitialized[x603] : &:r35_8443 +# 35| r35_8445(glval) = FunctionAddress[String] : +# 35| v35_8446(void) = Call[String] : func:r35_8445, this:r35_8443 +# 35| mu35_8447(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8448(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8443 +# 35| r35_8449(glval) = VariableAddress[x603] : +# 35| r35_8450(glval) = FunctionAddress[~String] : +# 35| v35_8451(void) = Call[~String] : func:r35_8450, this:r35_8449 +# 35| mu35_8452(unknown) = ^CallSideEffect : ~m? +# 35| v35_8453(void) = ^IndirectReadSideEffect[-1] : &:r35_8449, ~m? +# 35| mu35_8454(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8449 +# 35| r35_8455(bool) = Constant[0] : +# 35| v35_8456(void) = ConditionalBranch : r35_8455 #-----| False -> Block 604 #-----| True -> Block 1026 -# 1831| Block 604 -# 1831| r1831_1(glval) = VariableAddress[x604] : -# 1831| mu1831_2(String) = Uninitialized[x604] : &:r1831_1 -# 1831| r1831_3(glval) = FunctionAddress[String] : -# 1831| v1831_4(void) = Call[String] : func:r1831_3, this:r1831_1 -# 1831| mu1831_5(unknown) = ^CallSideEffect : ~m? -# 1831| mu1831_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1831_1 -# 1832| r1832_1(glval) = VariableAddress[x604] : -# 1832| r1832_2(glval) = FunctionAddress[~String] : -# 1832| v1832_3(void) = Call[~String] : func:r1832_2, this:r1832_1 -# 1832| mu1832_4(unknown) = ^CallSideEffect : ~m? -# 1832| v1832_5(void) = ^IndirectReadSideEffect[-1] : &:r1832_1, ~m? -# 1832| mu1832_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1832_1 -# 1832| r1832_7(bool) = Constant[0] : -# 1832| v1832_8(void) = ConditionalBranch : r1832_7 +# 35| Block 604 +# 35| r35_8457(glval) = VariableAddress[x604] : +# 35| mu35_8458(String) = Uninitialized[x604] : &:r35_8457 +# 35| r35_8459(glval) = FunctionAddress[String] : +# 35| v35_8460(void) = Call[String] : func:r35_8459, this:r35_8457 +# 35| mu35_8461(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8462(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8457 +# 35| r35_8463(glval) = VariableAddress[x604] : +# 35| r35_8464(glval) = FunctionAddress[~String] : +# 35| v35_8465(void) = Call[~String] : func:r35_8464, this:r35_8463 +# 35| mu35_8466(unknown) = ^CallSideEffect : ~m? +# 35| v35_8467(void) = ^IndirectReadSideEffect[-1] : &:r35_8463, ~m? +# 35| mu35_8468(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8463 +# 35| r35_8469(bool) = Constant[0] : +# 35| v35_8470(void) = ConditionalBranch : r35_8469 #-----| False -> Block 605 #-----| True -> Block 1026 -# 1834| Block 605 -# 1834| r1834_1(glval) = VariableAddress[x605] : -# 1834| mu1834_2(String) = Uninitialized[x605] : &:r1834_1 -# 1834| r1834_3(glval) = FunctionAddress[String] : -# 1834| v1834_4(void) = Call[String] : func:r1834_3, this:r1834_1 -# 1834| mu1834_5(unknown) = ^CallSideEffect : ~m? -# 1834| mu1834_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1834_1 -# 1835| r1835_1(glval) = VariableAddress[x605] : -# 1835| r1835_2(glval) = FunctionAddress[~String] : -# 1835| v1835_3(void) = Call[~String] : func:r1835_2, this:r1835_1 -# 1835| mu1835_4(unknown) = ^CallSideEffect : ~m? -# 1835| v1835_5(void) = ^IndirectReadSideEffect[-1] : &:r1835_1, ~m? -# 1835| mu1835_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1835_1 -# 1835| r1835_7(bool) = Constant[0] : -# 1835| v1835_8(void) = ConditionalBranch : r1835_7 +# 35| Block 605 +# 35| r35_8471(glval) = VariableAddress[x605] : +# 35| mu35_8472(String) = Uninitialized[x605] : &:r35_8471 +# 35| r35_8473(glval) = FunctionAddress[String] : +# 35| v35_8474(void) = Call[String] : func:r35_8473, this:r35_8471 +# 35| mu35_8475(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8476(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8471 +# 35| r35_8477(glval) = VariableAddress[x605] : +# 35| r35_8478(glval) = FunctionAddress[~String] : +# 35| v35_8479(void) = Call[~String] : func:r35_8478, this:r35_8477 +# 35| mu35_8480(unknown) = ^CallSideEffect : ~m? +# 35| v35_8481(void) = ^IndirectReadSideEffect[-1] : &:r35_8477, ~m? +# 35| mu35_8482(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8477 +# 35| r35_8483(bool) = Constant[0] : +# 35| v35_8484(void) = ConditionalBranch : r35_8483 #-----| False -> Block 606 #-----| True -> Block 1026 -# 1837| Block 606 -# 1837| r1837_1(glval) = VariableAddress[x606] : -# 1837| mu1837_2(String) = Uninitialized[x606] : &:r1837_1 -# 1837| r1837_3(glval) = FunctionAddress[String] : -# 1837| v1837_4(void) = Call[String] : func:r1837_3, this:r1837_1 -# 1837| mu1837_5(unknown) = ^CallSideEffect : ~m? -# 1837| mu1837_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1837_1 -# 1838| r1838_1(glval) = VariableAddress[x606] : -# 1838| r1838_2(glval) = FunctionAddress[~String] : -# 1838| v1838_3(void) = Call[~String] : func:r1838_2, this:r1838_1 -# 1838| mu1838_4(unknown) = ^CallSideEffect : ~m? -# 1838| v1838_5(void) = ^IndirectReadSideEffect[-1] : &:r1838_1, ~m? -# 1838| mu1838_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1838_1 -# 1838| r1838_7(bool) = Constant[0] : -# 1838| v1838_8(void) = ConditionalBranch : r1838_7 +# 35| Block 606 +# 35| r35_8485(glval) = VariableAddress[x606] : +# 35| mu35_8486(String) = Uninitialized[x606] : &:r35_8485 +# 35| r35_8487(glval) = FunctionAddress[String] : +# 35| v35_8488(void) = Call[String] : func:r35_8487, this:r35_8485 +# 35| mu35_8489(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8490(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8485 +# 35| r35_8491(glval) = VariableAddress[x606] : +# 35| r35_8492(glval) = FunctionAddress[~String] : +# 35| v35_8493(void) = Call[~String] : func:r35_8492, this:r35_8491 +# 35| mu35_8494(unknown) = ^CallSideEffect : ~m? +# 35| v35_8495(void) = ^IndirectReadSideEffect[-1] : &:r35_8491, ~m? +# 35| mu35_8496(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8491 +# 35| r35_8497(bool) = Constant[0] : +# 35| v35_8498(void) = ConditionalBranch : r35_8497 #-----| False -> Block 607 #-----| True -> Block 1026 -# 1840| Block 607 -# 1840| r1840_1(glval) = VariableAddress[x607] : -# 1840| mu1840_2(String) = Uninitialized[x607] : &:r1840_1 -# 1840| r1840_3(glval) = FunctionAddress[String] : -# 1840| v1840_4(void) = Call[String] : func:r1840_3, this:r1840_1 -# 1840| mu1840_5(unknown) = ^CallSideEffect : ~m? -# 1840| mu1840_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1840_1 -# 1841| r1841_1(glval) = VariableAddress[x607] : -# 1841| r1841_2(glval) = FunctionAddress[~String] : -# 1841| v1841_3(void) = Call[~String] : func:r1841_2, this:r1841_1 -# 1841| mu1841_4(unknown) = ^CallSideEffect : ~m? -# 1841| v1841_5(void) = ^IndirectReadSideEffect[-1] : &:r1841_1, ~m? -# 1841| mu1841_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1841_1 -# 1841| r1841_7(bool) = Constant[0] : -# 1841| v1841_8(void) = ConditionalBranch : r1841_7 +# 35| Block 607 +# 35| r35_8499(glval) = VariableAddress[x607] : +# 35| mu35_8500(String) = Uninitialized[x607] : &:r35_8499 +# 35| r35_8501(glval) = FunctionAddress[String] : +# 35| v35_8502(void) = Call[String] : func:r35_8501, this:r35_8499 +# 35| mu35_8503(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8504(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8499 +# 35| r35_8505(glval) = VariableAddress[x607] : +# 35| r35_8506(glval) = FunctionAddress[~String] : +# 35| v35_8507(void) = Call[~String] : func:r35_8506, this:r35_8505 +# 35| mu35_8508(unknown) = ^CallSideEffect : ~m? +# 35| v35_8509(void) = ^IndirectReadSideEffect[-1] : &:r35_8505, ~m? +# 35| mu35_8510(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8505 +# 35| r35_8511(bool) = Constant[0] : +# 35| v35_8512(void) = ConditionalBranch : r35_8511 #-----| False -> Block 608 #-----| True -> Block 1026 -# 1843| Block 608 -# 1843| r1843_1(glval) = VariableAddress[x608] : -# 1843| mu1843_2(String) = Uninitialized[x608] : &:r1843_1 -# 1843| r1843_3(glval) = FunctionAddress[String] : -# 1843| v1843_4(void) = Call[String] : func:r1843_3, this:r1843_1 -# 1843| mu1843_5(unknown) = ^CallSideEffect : ~m? -# 1843| mu1843_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1843_1 -# 1844| r1844_1(glval) = VariableAddress[x608] : -# 1844| r1844_2(glval) = FunctionAddress[~String] : -# 1844| v1844_3(void) = Call[~String] : func:r1844_2, this:r1844_1 -# 1844| mu1844_4(unknown) = ^CallSideEffect : ~m? -# 1844| v1844_5(void) = ^IndirectReadSideEffect[-1] : &:r1844_1, ~m? -# 1844| mu1844_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1844_1 -# 1844| r1844_7(bool) = Constant[0] : -# 1844| v1844_8(void) = ConditionalBranch : r1844_7 +# 35| Block 608 +# 35| r35_8513(glval) = VariableAddress[x608] : +# 35| mu35_8514(String) = Uninitialized[x608] : &:r35_8513 +# 35| r35_8515(glval) = FunctionAddress[String] : +# 35| v35_8516(void) = Call[String] : func:r35_8515, this:r35_8513 +# 35| mu35_8517(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8518(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8513 +# 35| r35_8519(glval) = VariableAddress[x608] : +# 35| r35_8520(glval) = FunctionAddress[~String] : +# 35| v35_8521(void) = Call[~String] : func:r35_8520, this:r35_8519 +# 35| mu35_8522(unknown) = ^CallSideEffect : ~m? +# 35| v35_8523(void) = ^IndirectReadSideEffect[-1] : &:r35_8519, ~m? +# 35| mu35_8524(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8519 +# 35| r35_8525(bool) = Constant[0] : +# 35| v35_8526(void) = ConditionalBranch : r35_8525 #-----| False -> Block 609 #-----| True -> Block 1026 -# 1846| Block 609 -# 1846| r1846_1(glval) = VariableAddress[x609] : -# 1846| mu1846_2(String) = Uninitialized[x609] : &:r1846_1 -# 1846| r1846_3(glval) = FunctionAddress[String] : -# 1846| v1846_4(void) = Call[String] : func:r1846_3, this:r1846_1 -# 1846| mu1846_5(unknown) = ^CallSideEffect : ~m? -# 1846| mu1846_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1846_1 -# 1847| r1847_1(glval) = VariableAddress[x609] : -# 1847| r1847_2(glval) = FunctionAddress[~String] : -# 1847| v1847_3(void) = Call[~String] : func:r1847_2, this:r1847_1 -# 1847| mu1847_4(unknown) = ^CallSideEffect : ~m? -# 1847| v1847_5(void) = ^IndirectReadSideEffect[-1] : &:r1847_1, ~m? -# 1847| mu1847_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1847_1 -# 1847| r1847_7(bool) = Constant[0] : -# 1847| v1847_8(void) = ConditionalBranch : r1847_7 +# 35| Block 609 +# 35| r35_8527(glval) = VariableAddress[x609] : +# 35| mu35_8528(String) = Uninitialized[x609] : &:r35_8527 +# 35| r35_8529(glval) = FunctionAddress[String] : +# 35| v35_8530(void) = Call[String] : func:r35_8529, this:r35_8527 +# 35| mu35_8531(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8532(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8527 +# 35| r35_8533(glval) = VariableAddress[x609] : +# 35| r35_8534(glval) = FunctionAddress[~String] : +# 35| v35_8535(void) = Call[~String] : func:r35_8534, this:r35_8533 +# 35| mu35_8536(unknown) = ^CallSideEffect : ~m? +# 35| v35_8537(void) = ^IndirectReadSideEffect[-1] : &:r35_8533, ~m? +# 35| mu35_8538(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8533 +# 35| r35_8539(bool) = Constant[0] : +# 35| v35_8540(void) = ConditionalBranch : r35_8539 #-----| False -> Block 610 #-----| True -> Block 1026 -# 1849| Block 610 -# 1849| r1849_1(glval) = VariableAddress[x610] : -# 1849| mu1849_2(String) = Uninitialized[x610] : &:r1849_1 -# 1849| r1849_3(glval) = FunctionAddress[String] : -# 1849| v1849_4(void) = Call[String] : func:r1849_3, this:r1849_1 -# 1849| mu1849_5(unknown) = ^CallSideEffect : ~m? -# 1849| mu1849_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1849_1 -# 1850| r1850_1(glval) = VariableAddress[x610] : -# 1850| r1850_2(glval) = FunctionAddress[~String] : -# 1850| v1850_3(void) = Call[~String] : func:r1850_2, this:r1850_1 -# 1850| mu1850_4(unknown) = ^CallSideEffect : ~m? -# 1850| v1850_5(void) = ^IndirectReadSideEffect[-1] : &:r1850_1, ~m? -# 1850| mu1850_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1850_1 -# 1850| r1850_7(bool) = Constant[0] : -# 1850| v1850_8(void) = ConditionalBranch : r1850_7 +# 35| Block 610 +# 35| r35_8541(glval) = VariableAddress[x610] : +# 35| mu35_8542(String) = Uninitialized[x610] : &:r35_8541 +# 35| r35_8543(glval) = FunctionAddress[String] : +# 35| v35_8544(void) = Call[String] : func:r35_8543, this:r35_8541 +# 35| mu35_8545(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8546(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8541 +# 35| r35_8547(glval) = VariableAddress[x610] : +# 35| r35_8548(glval) = FunctionAddress[~String] : +# 35| v35_8549(void) = Call[~String] : func:r35_8548, this:r35_8547 +# 35| mu35_8550(unknown) = ^CallSideEffect : ~m? +# 35| v35_8551(void) = ^IndirectReadSideEffect[-1] : &:r35_8547, ~m? +# 35| mu35_8552(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8547 +# 35| r35_8553(bool) = Constant[0] : +# 35| v35_8554(void) = ConditionalBranch : r35_8553 #-----| False -> Block 611 #-----| True -> Block 1026 -# 1852| Block 611 -# 1852| r1852_1(glval) = VariableAddress[x611] : -# 1852| mu1852_2(String) = Uninitialized[x611] : &:r1852_1 -# 1852| r1852_3(glval) = FunctionAddress[String] : -# 1852| v1852_4(void) = Call[String] : func:r1852_3, this:r1852_1 -# 1852| mu1852_5(unknown) = ^CallSideEffect : ~m? -# 1852| mu1852_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1852_1 -# 1853| r1853_1(glval) = VariableAddress[x611] : -# 1853| r1853_2(glval) = FunctionAddress[~String] : -# 1853| v1853_3(void) = Call[~String] : func:r1853_2, this:r1853_1 -# 1853| mu1853_4(unknown) = ^CallSideEffect : ~m? -# 1853| v1853_5(void) = ^IndirectReadSideEffect[-1] : &:r1853_1, ~m? -# 1853| mu1853_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1853_1 -# 1853| r1853_7(bool) = Constant[0] : -# 1853| v1853_8(void) = ConditionalBranch : r1853_7 +# 35| Block 611 +# 35| r35_8555(glval) = VariableAddress[x611] : +# 35| mu35_8556(String) = Uninitialized[x611] : &:r35_8555 +# 35| r35_8557(glval) = FunctionAddress[String] : +# 35| v35_8558(void) = Call[String] : func:r35_8557, this:r35_8555 +# 35| mu35_8559(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8560(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8555 +# 35| r35_8561(glval) = VariableAddress[x611] : +# 35| r35_8562(glval) = FunctionAddress[~String] : +# 35| v35_8563(void) = Call[~String] : func:r35_8562, this:r35_8561 +# 35| mu35_8564(unknown) = ^CallSideEffect : ~m? +# 35| v35_8565(void) = ^IndirectReadSideEffect[-1] : &:r35_8561, ~m? +# 35| mu35_8566(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8561 +# 35| r35_8567(bool) = Constant[0] : +# 35| v35_8568(void) = ConditionalBranch : r35_8567 #-----| False -> Block 612 #-----| True -> Block 1026 -# 1855| Block 612 -# 1855| r1855_1(glval) = VariableAddress[x612] : -# 1855| mu1855_2(String) = Uninitialized[x612] : &:r1855_1 -# 1855| r1855_3(glval) = FunctionAddress[String] : -# 1855| v1855_4(void) = Call[String] : func:r1855_3, this:r1855_1 -# 1855| mu1855_5(unknown) = ^CallSideEffect : ~m? -# 1855| mu1855_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1855_1 -# 1856| r1856_1(glval) = VariableAddress[x612] : -# 1856| r1856_2(glval) = FunctionAddress[~String] : -# 1856| v1856_3(void) = Call[~String] : func:r1856_2, this:r1856_1 -# 1856| mu1856_4(unknown) = ^CallSideEffect : ~m? -# 1856| v1856_5(void) = ^IndirectReadSideEffect[-1] : &:r1856_1, ~m? -# 1856| mu1856_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1856_1 -# 1856| r1856_7(bool) = Constant[0] : -# 1856| v1856_8(void) = ConditionalBranch : r1856_7 +# 35| Block 612 +# 35| r35_8569(glval) = VariableAddress[x612] : +# 35| mu35_8570(String) = Uninitialized[x612] : &:r35_8569 +# 35| r35_8571(glval) = FunctionAddress[String] : +# 35| v35_8572(void) = Call[String] : func:r35_8571, this:r35_8569 +# 35| mu35_8573(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8574(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8569 +# 35| r35_8575(glval) = VariableAddress[x612] : +# 35| r35_8576(glval) = FunctionAddress[~String] : +# 35| v35_8577(void) = Call[~String] : func:r35_8576, this:r35_8575 +# 35| mu35_8578(unknown) = ^CallSideEffect : ~m? +# 35| v35_8579(void) = ^IndirectReadSideEffect[-1] : &:r35_8575, ~m? +# 35| mu35_8580(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8575 +# 35| r35_8581(bool) = Constant[0] : +# 35| v35_8582(void) = ConditionalBranch : r35_8581 #-----| False -> Block 613 #-----| True -> Block 1026 -# 1858| Block 613 -# 1858| r1858_1(glval) = VariableAddress[x613] : -# 1858| mu1858_2(String) = Uninitialized[x613] : &:r1858_1 -# 1858| r1858_3(glval) = FunctionAddress[String] : -# 1858| v1858_4(void) = Call[String] : func:r1858_3, this:r1858_1 -# 1858| mu1858_5(unknown) = ^CallSideEffect : ~m? -# 1858| mu1858_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1858_1 -# 1859| r1859_1(glval) = VariableAddress[x613] : -# 1859| r1859_2(glval) = FunctionAddress[~String] : -# 1859| v1859_3(void) = Call[~String] : func:r1859_2, this:r1859_1 -# 1859| mu1859_4(unknown) = ^CallSideEffect : ~m? -# 1859| v1859_5(void) = ^IndirectReadSideEffect[-1] : &:r1859_1, ~m? -# 1859| mu1859_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1859_1 -# 1859| r1859_7(bool) = Constant[0] : -# 1859| v1859_8(void) = ConditionalBranch : r1859_7 +# 35| Block 613 +# 35| r35_8583(glval) = VariableAddress[x613] : +# 35| mu35_8584(String) = Uninitialized[x613] : &:r35_8583 +# 35| r35_8585(glval) = FunctionAddress[String] : +# 35| v35_8586(void) = Call[String] : func:r35_8585, this:r35_8583 +# 35| mu35_8587(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8588(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8583 +# 35| r35_8589(glval) = VariableAddress[x613] : +# 35| r35_8590(glval) = FunctionAddress[~String] : +# 35| v35_8591(void) = Call[~String] : func:r35_8590, this:r35_8589 +# 35| mu35_8592(unknown) = ^CallSideEffect : ~m? +# 35| v35_8593(void) = ^IndirectReadSideEffect[-1] : &:r35_8589, ~m? +# 35| mu35_8594(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8589 +# 35| r35_8595(bool) = Constant[0] : +# 35| v35_8596(void) = ConditionalBranch : r35_8595 #-----| False -> Block 614 #-----| True -> Block 1026 -# 1861| Block 614 -# 1861| r1861_1(glval) = VariableAddress[x614] : -# 1861| mu1861_2(String) = Uninitialized[x614] : &:r1861_1 -# 1861| r1861_3(glval) = FunctionAddress[String] : -# 1861| v1861_4(void) = Call[String] : func:r1861_3, this:r1861_1 -# 1861| mu1861_5(unknown) = ^CallSideEffect : ~m? -# 1861| mu1861_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1861_1 -# 1862| r1862_1(glval) = VariableAddress[x614] : -# 1862| r1862_2(glval) = FunctionAddress[~String] : -# 1862| v1862_3(void) = Call[~String] : func:r1862_2, this:r1862_1 -# 1862| mu1862_4(unknown) = ^CallSideEffect : ~m? -# 1862| v1862_5(void) = ^IndirectReadSideEffect[-1] : &:r1862_1, ~m? -# 1862| mu1862_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1862_1 -# 1862| r1862_7(bool) = Constant[0] : -# 1862| v1862_8(void) = ConditionalBranch : r1862_7 +# 35| Block 614 +# 35| r35_8597(glval) = VariableAddress[x614] : +# 35| mu35_8598(String) = Uninitialized[x614] : &:r35_8597 +# 35| r35_8599(glval) = FunctionAddress[String] : +# 35| v35_8600(void) = Call[String] : func:r35_8599, this:r35_8597 +# 35| mu35_8601(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8602(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8597 +# 35| r35_8603(glval) = VariableAddress[x614] : +# 35| r35_8604(glval) = FunctionAddress[~String] : +# 35| v35_8605(void) = Call[~String] : func:r35_8604, this:r35_8603 +# 35| mu35_8606(unknown) = ^CallSideEffect : ~m? +# 35| v35_8607(void) = ^IndirectReadSideEffect[-1] : &:r35_8603, ~m? +# 35| mu35_8608(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8603 +# 35| r35_8609(bool) = Constant[0] : +# 35| v35_8610(void) = ConditionalBranch : r35_8609 #-----| False -> Block 615 #-----| True -> Block 1026 -# 1864| Block 615 -# 1864| r1864_1(glval) = VariableAddress[x615] : -# 1864| mu1864_2(String) = Uninitialized[x615] : &:r1864_1 -# 1864| r1864_3(glval) = FunctionAddress[String] : -# 1864| v1864_4(void) = Call[String] : func:r1864_3, this:r1864_1 -# 1864| mu1864_5(unknown) = ^CallSideEffect : ~m? -# 1864| mu1864_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1864_1 -# 1865| r1865_1(glval) = VariableAddress[x615] : -# 1865| r1865_2(glval) = FunctionAddress[~String] : -# 1865| v1865_3(void) = Call[~String] : func:r1865_2, this:r1865_1 -# 1865| mu1865_4(unknown) = ^CallSideEffect : ~m? -# 1865| v1865_5(void) = ^IndirectReadSideEffect[-1] : &:r1865_1, ~m? -# 1865| mu1865_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1865_1 -# 1865| r1865_7(bool) = Constant[0] : -# 1865| v1865_8(void) = ConditionalBranch : r1865_7 +# 35| Block 615 +# 35| r35_8611(glval) = VariableAddress[x615] : +# 35| mu35_8612(String) = Uninitialized[x615] : &:r35_8611 +# 35| r35_8613(glval) = FunctionAddress[String] : +# 35| v35_8614(void) = Call[String] : func:r35_8613, this:r35_8611 +# 35| mu35_8615(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8616(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8611 +# 35| r35_8617(glval) = VariableAddress[x615] : +# 35| r35_8618(glval) = FunctionAddress[~String] : +# 35| v35_8619(void) = Call[~String] : func:r35_8618, this:r35_8617 +# 35| mu35_8620(unknown) = ^CallSideEffect : ~m? +# 35| v35_8621(void) = ^IndirectReadSideEffect[-1] : &:r35_8617, ~m? +# 35| mu35_8622(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8617 +# 35| r35_8623(bool) = Constant[0] : +# 35| v35_8624(void) = ConditionalBranch : r35_8623 #-----| False -> Block 616 #-----| True -> Block 1026 -# 1867| Block 616 -# 1867| r1867_1(glval) = VariableAddress[x616] : -# 1867| mu1867_2(String) = Uninitialized[x616] : &:r1867_1 -# 1867| r1867_3(glval) = FunctionAddress[String] : -# 1867| v1867_4(void) = Call[String] : func:r1867_3, this:r1867_1 -# 1867| mu1867_5(unknown) = ^CallSideEffect : ~m? -# 1867| mu1867_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1867_1 -# 1868| r1868_1(glval) = VariableAddress[x616] : -# 1868| r1868_2(glval) = FunctionAddress[~String] : -# 1868| v1868_3(void) = Call[~String] : func:r1868_2, this:r1868_1 -# 1868| mu1868_4(unknown) = ^CallSideEffect : ~m? -# 1868| v1868_5(void) = ^IndirectReadSideEffect[-1] : &:r1868_1, ~m? -# 1868| mu1868_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1868_1 -# 1868| r1868_7(bool) = Constant[0] : -# 1868| v1868_8(void) = ConditionalBranch : r1868_7 +# 35| Block 616 +# 35| r35_8625(glval) = VariableAddress[x616] : +# 35| mu35_8626(String) = Uninitialized[x616] : &:r35_8625 +# 35| r35_8627(glval) = FunctionAddress[String] : +# 35| v35_8628(void) = Call[String] : func:r35_8627, this:r35_8625 +# 35| mu35_8629(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8630(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8625 +# 35| r35_8631(glval) = VariableAddress[x616] : +# 35| r35_8632(glval) = FunctionAddress[~String] : +# 35| v35_8633(void) = Call[~String] : func:r35_8632, this:r35_8631 +# 35| mu35_8634(unknown) = ^CallSideEffect : ~m? +# 35| v35_8635(void) = ^IndirectReadSideEffect[-1] : &:r35_8631, ~m? +# 35| mu35_8636(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8631 +# 35| r35_8637(bool) = Constant[0] : +# 35| v35_8638(void) = ConditionalBranch : r35_8637 #-----| False -> Block 617 #-----| True -> Block 1026 -# 1870| Block 617 -# 1870| r1870_1(glval) = VariableAddress[x617] : -# 1870| mu1870_2(String) = Uninitialized[x617] : &:r1870_1 -# 1870| r1870_3(glval) = FunctionAddress[String] : -# 1870| v1870_4(void) = Call[String] : func:r1870_3, this:r1870_1 -# 1870| mu1870_5(unknown) = ^CallSideEffect : ~m? -# 1870| mu1870_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1870_1 -# 1871| r1871_1(glval) = VariableAddress[x617] : -# 1871| r1871_2(glval) = FunctionAddress[~String] : -# 1871| v1871_3(void) = Call[~String] : func:r1871_2, this:r1871_1 -# 1871| mu1871_4(unknown) = ^CallSideEffect : ~m? -# 1871| v1871_5(void) = ^IndirectReadSideEffect[-1] : &:r1871_1, ~m? -# 1871| mu1871_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1871_1 -# 1871| r1871_7(bool) = Constant[0] : -# 1871| v1871_8(void) = ConditionalBranch : r1871_7 +# 35| Block 617 +# 35| r35_8639(glval) = VariableAddress[x617] : +# 35| mu35_8640(String) = Uninitialized[x617] : &:r35_8639 +# 35| r35_8641(glval) = FunctionAddress[String] : +# 35| v35_8642(void) = Call[String] : func:r35_8641, this:r35_8639 +# 35| mu35_8643(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8644(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8639 +# 35| r35_8645(glval) = VariableAddress[x617] : +# 35| r35_8646(glval) = FunctionAddress[~String] : +# 35| v35_8647(void) = Call[~String] : func:r35_8646, this:r35_8645 +# 35| mu35_8648(unknown) = ^CallSideEffect : ~m? +# 35| v35_8649(void) = ^IndirectReadSideEffect[-1] : &:r35_8645, ~m? +# 35| mu35_8650(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8645 +# 35| r35_8651(bool) = Constant[0] : +# 35| v35_8652(void) = ConditionalBranch : r35_8651 #-----| False -> Block 618 #-----| True -> Block 1026 -# 1873| Block 618 -# 1873| r1873_1(glval) = VariableAddress[x618] : -# 1873| mu1873_2(String) = Uninitialized[x618] : &:r1873_1 -# 1873| r1873_3(glval) = FunctionAddress[String] : -# 1873| v1873_4(void) = Call[String] : func:r1873_3, this:r1873_1 -# 1873| mu1873_5(unknown) = ^CallSideEffect : ~m? -# 1873| mu1873_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1873_1 -# 1874| r1874_1(glval) = VariableAddress[x618] : -# 1874| r1874_2(glval) = FunctionAddress[~String] : -# 1874| v1874_3(void) = Call[~String] : func:r1874_2, this:r1874_1 -# 1874| mu1874_4(unknown) = ^CallSideEffect : ~m? -# 1874| v1874_5(void) = ^IndirectReadSideEffect[-1] : &:r1874_1, ~m? -# 1874| mu1874_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1874_1 -# 1874| r1874_7(bool) = Constant[0] : -# 1874| v1874_8(void) = ConditionalBranch : r1874_7 +# 35| Block 618 +# 35| r35_8653(glval) = VariableAddress[x618] : +# 35| mu35_8654(String) = Uninitialized[x618] : &:r35_8653 +# 35| r35_8655(glval) = FunctionAddress[String] : +# 35| v35_8656(void) = Call[String] : func:r35_8655, this:r35_8653 +# 35| mu35_8657(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8658(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8653 +# 35| r35_8659(glval) = VariableAddress[x618] : +# 35| r35_8660(glval) = FunctionAddress[~String] : +# 35| v35_8661(void) = Call[~String] : func:r35_8660, this:r35_8659 +# 35| mu35_8662(unknown) = ^CallSideEffect : ~m? +# 35| v35_8663(void) = ^IndirectReadSideEffect[-1] : &:r35_8659, ~m? +# 35| mu35_8664(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8659 +# 35| r35_8665(bool) = Constant[0] : +# 35| v35_8666(void) = ConditionalBranch : r35_8665 #-----| False -> Block 619 #-----| True -> Block 1026 -# 1876| Block 619 -# 1876| r1876_1(glval) = VariableAddress[x619] : -# 1876| mu1876_2(String) = Uninitialized[x619] : &:r1876_1 -# 1876| r1876_3(glval) = FunctionAddress[String] : -# 1876| v1876_4(void) = Call[String] : func:r1876_3, this:r1876_1 -# 1876| mu1876_5(unknown) = ^CallSideEffect : ~m? -# 1876| mu1876_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1876_1 -# 1877| r1877_1(glval) = VariableAddress[x619] : -# 1877| r1877_2(glval) = FunctionAddress[~String] : -# 1877| v1877_3(void) = Call[~String] : func:r1877_2, this:r1877_1 -# 1877| mu1877_4(unknown) = ^CallSideEffect : ~m? -# 1877| v1877_5(void) = ^IndirectReadSideEffect[-1] : &:r1877_1, ~m? -# 1877| mu1877_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1877_1 -# 1877| r1877_7(bool) = Constant[0] : -# 1877| v1877_8(void) = ConditionalBranch : r1877_7 +# 35| Block 619 +# 35| r35_8667(glval) = VariableAddress[x619] : +# 35| mu35_8668(String) = Uninitialized[x619] : &:r35_8667 +# 35| r35_8669(glval) = FunctionAddress[String] : +# 35| v35_8670(void) = Call[String] : func:r35_8669, this:r35_8667 +# 35| mu35_8671(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8672(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8667 +# 35| r35_8673(glval) = VariableAddress[x619] : +# 35| r35_8674(glval) = FunctionAddress[~String] : +# 35| v35_8675(void) = Call[~String] : func:r35_8674, this:r35_8673 +# 35| mu35_8676(unknown) = ^CallSideEffect : ~m? +# 35| v35_8677(void) = ^IndirectReadSideEffect[-1] : &:r35_8673, ~m? +# 35| mu35_8678(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8673 +# 35| r35_8679(bool) = Constant[0] : +# 35| v35_8680(void) = ConditionalBranch : r35_8679 #-----| False -> Block 620 #-----| True -> Block 1026 -# 1879| Block 620 -# 1879| r1879_1(glval) = VariableAddress[x620] : -# 1879| mu1879_2(String) = Uninitialized[x620] : &:r1879_1 -# 1879| r1879_3(glval) = FunctionAddress[String] : -# 1879| v1879_4(void) = Call[String] : func:r1879_3, this:r1879_1 -# 1879| mu1879_5(unknown) = ^CallSideEffect : ~m? -# 1879| mu1879_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1879_1 -# 1880| r1880_1(glval) = VariableAddress[x620] : -# 1880| r1880_2(glval) = FunctionAddress[~String] : -# 1880| v1880_3(void) = Call[~String] : func:r1880_2, this:r1880_1 -# 1880| mu1880_4(unknown) = ^CallSideEffect : ~m? -# 1880| v1880_5(void) = ^IndirectReadSideEffect[-1] : &:r1880_1, ~m? -# 1880| mu1880_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1880_1 -# 1880| r1880_7(bool) = Constant[0] : -# 1880| v1880_8(void) = ConditionalBranch : r1880_7 +# 35| Block 620 +# 35| r35_8681(glval) = VariableAddress[x620] : +# 35| mu35_8682(String) = Uninitialized[x620] : &:r35_8681 +# 35| r35_8683(glval) = FunctionAddress[String] : +# 35| v35_8684(void) = Call[String] : func:r35_8683, this:r35_8681 +# 35| mu35_8685(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8686(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8681 +# 35| r35_8687(glval) = VariableAddress[x620] : +# 35| r35_8688(glval) = FunctionAddress[~String] : +# 35| v35_8689(void) = Call[~String] : func:r35_8688, this:r35_8687 +# 35| mu35_8690(unknown) = ^CallSideEffect : ~m? +# 35| v35_8691(void) = ^IndirectReadSideEffect[-1] : &:r35_8687, ~m? +# 35| mu35_8692(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8687 +# 35| r35_8693(bool) = Constant[0] : +# 35| v35_8694(void) = ConditionalBranch : r35_8693 #-----| False -> Block 621 #-----| True -> Block 1026 -# 1882| Block 621 -# 1882| r1882_1(glval) = VariableAddress[x621] : -# 1882| mu1882_2(String) = Uninitialized[x621] : &:r1882_1 -# 1882| r1882_3(glval) = FunctionAddress[String] : -# 1882| v1882_4(void) = Call[String] : func:r1882_3, this:r1882_1 -# 1882| mu1882_5(unknown) = ^CallSideEffect : ~m? -# 1882| mu1882_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1882_1 -# 1883| r1883_1(glval) = VariableAddress[x621] : -# 1883| r1883_2(glval) = FunctionAddress[~String] : -# 1883| v1883_3(void) = Call[~String] : func:r1883_2, this:r1883_1 -# 1883| mu1883_4(unknown) = ^CallSideEffect : ~m? -# 1883| v1883_5(void) = ^IndirectReadSideEffect[-1] : &:r1883_1, ~m? -# 1883| mu1883_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1883_1 -# 1883| r1883_7(bool) = Constant[0] : -# 1883| v1883_8(void) = ConditionalBranch : r1883_7 +# 35| Block 621 +# 35| r35_8695(glval) = VariableAddress[x621] : +# 35| mu35_8696(String) = Uninitialized[x621] : &:r35_8695 +# 35| r35_8697(glval) = FunctionAddress[String] : +# 35| v35_8698(void) = Call[String] : func:r35_8697, this:r35_8695 +# 35| mu35_8699(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8700(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8695 +# 35| r35_8701(glval) = VariableAddress[x621] : +# 35| r35_8702(glval) = FunctionAddress[~String] : +# 35| v35_8703(void) = Call[~String] : func:r35_8702, this:r35_8701 +# 35| mu35_8704(unknown) = ^CallSideEffect : ~m? +# 35| v35_8705(void) = ^IndirectReadSideEffect[-1] : &:r35_8701, ~m? +# 35| mu35_8706(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8701 +# 35| r35_8707(bool) = Constant[0] : +# 35| v35_8708(void) = ConditionalBranch : r35_8707 #-----| False -> Block 622 #-----| True -> Block 1026 -# 1885| Block 622 -# 1885| r1885_1(glval) = VariableAddress[x622] : -# 1885| mu1885_2(String) = Uninitialized[x622] : &:r1885_1 -# 1885| r1885_3(glval) = FunctionAddress[String] : -# 1885| v1885_4(void) = Call[String] : func:r1885_3, this:r1885_1 -# 1885| mu1885_5(unknown) = ^CallSideEffect : ~m? -# 1885| mu1885_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1885_1 -# 1886| r1886_1(glval) = VariableAddress[x622] : -# 1886| r1886_2(glval) = FunctionAddress[~String] : -# 1886| v1886_3(void) = Call[~String] : func:r1886_2, this:r1886_1 -# 1886| mu1886_4(unknown) = ^CallSideEffect : ~m? -# 1886| v1886_5(void) = ^IndirectReadSideEffect[-1] : &:r1886_1, ~m? -# 1886| mu1886_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1886_1 -# 1886| r1886_7(bool) = Constant[0] : -# 1886| v1886_8(void) = ConditionalBranch : r1886_7 +# 35| Block 622 +# 35| r35_8709(glval) = VariableAddress[x622] : +# 35| mu35_8710(String) = Uninitialized[x622] : &:r35_8709 +# 35| r35_8711(glval) = FunctionAddress[String] : +# 35| v35_8712(void) = Call[String] : func:r35_8711, this:r35_8709 +# 35| mu35_8713(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8714(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8709 +# 35| r35_8715(glval) = VariableAddress[x622] : +# 35| r35_8716(glval) = FunctionAddress[~String] : +# 35| v35_8717(void) = Call[~String] : func:r35_8716, this:r35_8715 +# 35| mu35_8718(unknown) = ^CallSideEffect : ~m? +# 35| v35_8719(void) = ^IndirectReadSideEffect[-1] : &:r35_8715, ~m? +# 35| mu35_8720(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8715 +# 35| r35_8721(bool) = Constant[0] : +# 35| v35_8722(void) = ConditionalBranch : r35_8721 #-----| False -> Block 623 #-----| True -> Block 1026 -# 1888| Block 623 -# 1888| r1888_1(glval) = VariableAddress[x623] : -# 1888| mu1888_2(String) = Uninitialized[x623] : &:r1888_1 -# 1888| r1888_3(glval) = FunctionAddress[String] : -# 1888| v1888_4(void) = Call[String] : func:r1888_3, this:r1888_1 -# 1888| mu1888_5(unknown) = ^CallSideEffect : ~m? -# 1888| mu1888_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1888_1 -# 1889| r1889_1(glval) = VariableAddress[x623] : -# 1889| r1889_2(glval) = FunctionAddress[~String] : -# 1889| v1889_3(void) = Call[~String] : func:r1889_2, this:r1889_1 -# 1889| mu1889_4(unknown) = ^CallSideEffect : ~m? -# 1889| v1889_5(void) = ^IndirectReadSideEffect[-1] : &:r1889_1, ~m? -# 1889| mu1889_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1889_1 -# 1889| r1889_7(bool) = Constant[0] : -# 1889| v1889_8(void) = ConditionalBranch : r1889_7 +# 35| Block 623 +# 35| r35_8723(glval) = VariableAddress[x623] : +# 35| mu35_8724(String) = Uninitialized[x623] : &:r35_8723 +# 35| r35_8725(glval) = FunctionAddress[String] : +# 35| v35_8726(void) = Call[String] : func:r35_8725, this:r35_8723 +# 35| mu35_8727(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8728(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8723 +# 35| r35_8729(glval) = VariableAddress[x623] : +# 35| r35_8730(glval) = FunctionAddress[~String] : +# 35| v35_8731(void) = Call[~String] : func:r35_8730, this:r35_8729 +# 35| mu35_8732(unknown) = ^CallSideEffect : ~m? +# 35| v35_8733(void) = ^IndirectReadSideEffect[-1] : &:r35_8729, ~m? +# 35| mu35_8734(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8729 +# 35| r35_8735(bool) = Constant[0] : +# 35| v35_8736(void) = ConditionalBranch : r35_8735 #-----| False -> Block 624 #-----| True -> Block 1026 -# 1891| Block 624 -# 1891| r1891_1(glval) = VariableAddress[x624] : -# 1891| mu1891_2(String) = Uninitialized[x624] : &:r1891_1 -# 1891| r1891_3(glval) = FunctionAddress[String] : -# 1891| v1891_4(void) = Call[String] : func:r1891_3, this:r1891_1 -# 1891| mu1891_5(unknown) = ^CallSideEffect : ~m? -# 1891| mu1891_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1891_1 -# 1892| r1892_1(glval) = VariableAddress[x624] : -# 1892| r1892_2(glval) = FunctionAddress[~String] : -# 1892| v1892_3(void) = Call[~String] : func:r1892_2, this:r1892_1 -# 1892| mu1892_4(unknown) = ^CallSideEffect : ~m? -# 1892| v1892_5(void) = ^IndirectReadSideEffect[-1] : &:r1892_1, ~m? -# 1892| mu1892_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1892_1 -# 1892| r1892_7(bool) = Constant[0] : -# 1892| v1892_8(void) = ConditionalBranch : r1892_7 +# 35| Block 624 +# 35| r35_8737(glval) = VariableAddress[x624] : +# 35| mu35_8738(String) = Uninitialized[x624] : &:r35_8737 +# 35| r35_8739(glval) = FunctionAddress[String] : +# 35| v35_8740(void) = Call[String] : func:r35_8739, this:r35_8737 +# 35| mu35_8741(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8742(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8737 +# 35| r35_8743(glval) = VariableAddress[x624] : +# 35| r35_8744(glval) = FunctionAddress[~String] : +# 35| v35_8745(void) = Call[~String] : func:r35_8744, this:r35_8743 +# 35| mu35_8746(unknown) = ^CallSideEffect : ~m? +# 35| v35_8747(void) = ^IndirectReadSideEffect[-1] : &:r35_8743, ~m? +# 35| mu35_8748(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8743 +# 35| r35_8749(bool) = Constant[0] : +# 35| v35_8750(void) = ConditionalBranch : r35_8749 #-----| False -> Block 625 #-----| True -> Block 1026 -# 1894| Block 625 -# 1894| r1894_1(glval) = VariableAddress[x625] : -# 1894| mu1894_2(String) = Uninitialized[x625] : &:r1894_1 -# 1894| r1894_3(glval) = FunctionAddress[String] : -# 1894| v1894_4(void) = Call[String] : func:r1894_3, this:r1894_1 -# 1894| mu1894_5(unknown) = ^CallSideEffect : ~m? -# 1894| mu1894_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1894_1 -# 1895| r1895_1(glval) = VariableAddress[x625] : -# 1895| r1895_2(glval) = FunctionAddress[~String] : -# 1895| v1895_3(void) = Call[~String] : func:r1895_2, this:r1895_1 -# 1895| mu1895_4(unknown) = ^CallSideEffect : ~m? -# 1895| v1895_5(void) = ^IndirectReadSideEffect[-1] : &:r1895_1, ~m? -# 1895| mu1895_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1895_1 -# 1895| r1895_7(bool) = Constant[0] : -# 1895| v1895_8(void) = ConditionalBranch : r1895_7 +# 35| Block 625 +# 35| r35_8751(glval) = VariableAddress[x625] : +# 35| mu35_8752(String) = Uninitialized[x625] : &:r35_8751 +# 35| r35_8753(glval) = FunctionAddress[String] : +# 35| v35_8754(void) = Call[String] : func:r35_8753, this:r35_8751 +# 35| mu35_8755(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8756(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8751 +# 35| r35_8757(glval) = VariableAddress[x625] : +# 35| r35_8758(glval) = FunctionAddress[~String] : +# 35| v35_8759(void) = Call[~String] : func:r35_8758, this:r35_8757 +# 35| mu35_8760(unknown) = ^CallSideEffect : ~m? +# 35| v35_8761(void) = ^IndirectReadSideEffect[-1] : &:r35_8757, ~m? +# 35| mu35_8762(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8757 +# 35| r35_8763(bool) = Constant[0] : +# 35| v35_8764(void) = ConditionalBranch : r35_8763 #-----| False -> Block 626 #-----| True -> Block 1026 -# 1897| Block 626 -# 1897| r1897_1(glval) = VariableAddress[x626] : -# 1897| mu1897_2(String) = Uninitialized[x626] : &:r1897_1 -# 1897| r1897_3(glval) = FunctionAddress[String] : -# 1897| v1897_4(void) = Call[String] : func:r1897_3, this:r1897_1 -# 1897| mu1897_5(unknown) = ^CallSideEffect : ~m? -# 1897| mu1897_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1897_1 -# 1898| r1898_1(glval) = VariableAddress[x626] : -# 1898| r1898_2(glval) = FunctionAddress[~String] : -# 1898| v1898_3(void) = Call[~String] : func:r1898_2, this:r1898_1 -# 1898| mu1898_4(unknown) = ^CallSideEffect : ~m? -# 1898| v1898_5(void) = ^IndirectReadSideEffect[-1] : &:r1898_1, ~m? -# 1898| mu1898_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1898_1 -# 1898| r1898_7(bool) = Constant[0] : -# 1898| v1898_8(void) = ConditionalBranch : r1898_7 +# 35| Block 626 +# 35| r35_8765(glval) = VariableAddress[x626] : +# 35| mu35_8766(String) = Uninitialized[x626] : &:r35_8765 +# 35| r35_8767(glval) = FunctionAddress[String] : +# 35| v35_8768(void) = Call[String] : func:r35_8767, this:r35_8765 +# 35| mu35_8769(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8770(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8765 +# 35| r35_8771(glval) = VariableAddress[x626] : +# 35| r35_8772(glval) = FunctionAddress[~String] : +# 35| v35_8773(void) = Call[~String] : func:r35_8772, this:r35_8771 +# 35| mu35_8774(unknown) = ^CallSideEffect : ~m? +# 35| v35_8775(void) = ^IndirectReadSideEffect[-1] : &:r35_8771, ~m? +# 35| mu35_8776(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8771 +# 35| r35_8777(bool) = Constant[0] : +# 35| v35_8778(void) = ConditionalBranch : r35_8777 #-----| False -> Block 627 #-----| True -> Block 1026 -# 1900| Block 627 -# 1900| r1900_1(glval) = VariableAddress[x627] : -# 1900| mu1900_2(String) = Uninitialized[x627] : &:r1900_1 -# 1900| r1900_3(glval) = FunctionAddress[String] : -# 1900| v1900_4(void) = Call[String] : func:r1900_3, this:r1900_1 -# 1900| mu1900_5(unknown) = ^CallSideEffect : ~m? -# 1900| mu1900_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1900_1 -# 1901| r1901_1(glval) = VariableAddress[x627] : -# 1901| r1901_2(glval) = FunctionAddress[~String] : -# 1901| v1901_3(void) = Call[~String] : func:r1901_2, this:r1901_1 -# 1901| mu1901_4(unknown) = ^CallSideEffect : ~m? -# 1901| v1901_5(void) = ^IndirectReadSideEffect[-1] : &:r1901_1, ~m? -# 1901| mu1901_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1901_1 -# 1901| r1901_7(bool) = Constant[0] : -# 1901| v1901_8(void) = ConditionalBranch : r1901_7 +# 35| Block 627 +# 35| r35_8779(glval) = VariableAddress[x627] : +# 35| mu35_8780(String) = Uninitialized[x627] : &:r35_8779 +# 35| r35_8781(glval) = FunctionAddress[String] : +# 35| v35_8782(void) = Call[String] : func:r35_8781, this:r35_8779 +# 35| mu35_8783(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8784(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8779 +# 35| r35_8785(glval) = VariableAddress[x627] : +# 35| r35_8786(glval) = FunctionAddress[~String] : +# 35| v35_8787(void) = Call[~String] : func:r35_8786, this:r35_8785 +# 35| mu35_8788(unknown) = ^CallSideEffect : ~m? +# 35| v35_8789(void) = ^IndirectReadSideEffect[-1] : &:r35_8785, ~m? +# 35| mu35_8790(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8785 +# 35| r35_8791(bool) = Constant[0] : +# 35| v35_8792(void) = ConditionalBranch : r35_8791 #-----| False -> Block 628 #-----| True -> Block 1026 -# 1903| Block 628 -# 1903| r1903_1(glval) = VariableAddress[x628] : -# 1903| mu1903_2(String) = Uninitialized[x628] : &:r1903_1 -# 1903| r1903_3(glval) = FunctionAddress[String] : -# 1903| v1903_4(void) = Call[String] : func:r1903_3, this:r1903_1 -# 1903| mu1903_5(unknown) = ^CallSideEffect : ~m? -# 1903| mu1903_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1903_1 -# 1904| r1904_1(glval) = VariableAddress[x628] : -# 1904| r1904_2(glval) = FunctionAddress[~String] : -# 1904| v1904_3(void) = Call[~String] : func:r1904_2, this:r1904_1 -# 1904| mu1904_4(unknown) = ^CallSideEffect : ~m? -# 1904| v1904_5(void) = ^IndirectReadSideEffect[-1] : &:r1904_1, ~m? -# 1904| mu1904_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1904_1 -# 1904| r1904_7(bool) = Constant[0] : -# 1904| v1904_8(void) = ConditionalBranch : r1904_7 +# 35| Block 628 +# 35| r35_8793(glval) = VariableAddress[x628] : +# 35| mu35_8794(String) = Uninitialized[x628] : &:r35_8793 +# 35| r35_8795(glval) = FunctionAddress[String] : +# 35| v35_8796(void) = Call[String] : func:r35_8795, this:r35_8793 +# 35| mu35_8797(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8798(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8793 +# 35| r35_8799(glval) = VariableAddress[x628] : +# 35| r35_8800(glval) = FunctionAddress[~String] : +# 35| v35_8801(void) = Call[~String] : func:r35_8800, this:r35_8799 +# 35| mu35_8802(unknown) = ^CallSideEffect : ~m? +# 35| v35_8803(void) = ^IndirectReadSideEffect[-1] : &:r35_8799, ~m? +# 35| mu35_8804(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8799 +# 35| r35_8805(bool) = Constant[0] : +# 35| v35_8806(void) = ConditionalBranch : r35_8805 #-----| False -> Block 629 #-----| True -> Block 1026 -# 1906| Block 629 -# 1906| r1906_1(glval) = VariableAddress[x629] : -# 1906| mu1906_2(String) = Uninitialized[x629] : &:r1906_1 -# 1906| r1906_3(glval) = FunctionAddress[String] : -# 1906| v1906_4(void) = Call[String] : func:r1906_3, this:r1906_1 -# 1906| mu1906_5(unknown) = ^CallSideEffect : ~m? -# 1906| mu1906_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1906_1 -# 1907| r1907_1(glval) = VariableAddress[x629] : -# 1907| r1907_2(glval) = FunctionAddress[~String] : -# 1907| v1907_3(void) = Call[~String] : func:r1907_2, this:r1907_1 -# 1907| mu1907_4(unknown) = ^CallSideEffect : ~m? -# 1907| v1907_5(void) = ^IndirectReadSideEffect[-1] : &:r1907_1, ~m? -# 1907| mu1907_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1907_1 -# 1907| r1907_7(bool) = Constant[0] : -# 1907| v1907_8(void) = ConditionalBranch : r1907_7 +# 35| Block 629 +# 35| r35_8807(glval) = VariableAddress[x629] : +# 35| mu35_8808(String) = Uninitialized[x629] : &:r35_8807 +# 35| r35_8809(glval) = FunctionAddress[String] : +# 35| v35_8810(void) = Call[String] : func:r35_8809, this:r35_8807 +# 35| mu35_8811(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8812(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8807 +# 35| r35_8813(glval) = VariableAddress[x629] : +# 35| r35_8814(glval) = FunctionAddress[~String] : +# 35| v35_8815(void) = Call[~String] : func:r35_8814, this:r35_8813 +# 35| mu35_8816(unknown) = ^CallSideEffect : ~m? +# 35| v35_8817(void) = ^IndirectReadSideEffect[-1] : &:r35_8813, ~m? +# 35| mu35_8818(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8813 +# 35| r35_8819(bool) = Constant[0] : +# 35| v35_8820(void) = ConditionalBranch : r35_8819 #-----| False -> Block 630 #-----| True -> Block 1026 -# 1909| Block 630 -# 1909| r1909_1(glval) = VariableAddress[x630] : -# 1909| mu1909_2(String) = Uninitialized[x630] : &:r1909_1 -# 1909| r1909_3(glval) = FunctionAddress[String] : -# 1909| v1909_4(void) = Call[String] : func:r1909_3, this:r1909_1 -# 1909| mu1909_5(unknown) = ^CallSideEffect : ~m? -# 1909| mu1909_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1909_1 -# 1910| r1910_1(glval) = VariableAddress[x630] : -# 1910| r1910_2(glval) = FunctionAddress[~String] : -# 1910| v1910_3(void) = Call[~String] : func:r1910_2, this:r1910_1 -# 1910| mu1910_4(unknown) = ^CallSideEffect : ~m? -# 1910| v1910_5(void) = ^IndirectReadSideEffect[-1] : &:r1910_1, ~m? -# 1910| mu1910_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1910_1 -# 1910| r1910_7(bool) = Constant[0] : -# 1910| v1910_8(void) = ConditionalBranch : r1910_7 +# 35| Block 630 +# 35| r35_8821(glval) = VariableAddress[x630] : +# 35| mu35_8822(String) = Uninitialized[x630] : &:r35_8821 +# 35| r35_8823(glval) = FunctionAddress[String] : +# 35| v35_8824(void) = Call[String] : func:r35_8823, this:r35_8821 +# 35| mu35_8825(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8826(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8821 +# 35| r35_8827(glval) = VariableAddress[x630] : +# 35| r35_8828(glval) = FunctionAddress[~String] : +# 35| v35_8829(void) = Call[~String] : func:r35_8828, this:r35_8827 +# 35| mu35_8830(unknown) = ^CallSideEffect : ~m? +# 35| v35_8831(void) = ^IndirectReadSideEffect[-1] : &:r35_8827, ~m? +# 35| mu35_8832(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8827 +# 35| r35_8833(bool) = Constant[0] : +# 35| v35_8834(void) = ConditionalBranch : r35_8833 #-----| False -> Block 631 #-----| True -> Block 1026 -# 1912| Block 631 -# 1912| r1912_1(glval) = VariableAddress[x631] : -# 1912| mu1912_2(String) = Uninitialized[x631] : &:r1912_1 -# 1912| r1912_3(glval) = FunctionAddress[String] : -# 1912| v1912_4(void) = Call[String] : func:r1912_3, this:r1912_1 -# 1912| mu1912_5(unknown) = ^CallSideEffect : ~m? -# 1912| mu1912_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1912_1 -# 1913| r1913_1(glval) = VariableAddress[x631] : -# 1913| r1913_2(glval) = FunctionAddress[~String] : -# 1913| v1913_3(void) = Call[~String] : func:r1913_2, this:r1913_1 -# 1913| mu1913_4(unknown) = ^CallSideEffect : ~m? -# 1913| v1913_5(void) = ^IndirectReadSideEffect[-1] : &:r1913_1, ~m? -# 1913| mu1913_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1913_1 -# 1913| r1913_7(bool) = Constant[0] : -# 1913| v1913_8(void) = ConditionalBranch : r1913_7 +# 35| Block 631 +# 35| r35_8835(glval) = VariableAddress[x631] : +# 35| mu35_8836(String) = Uninitialized[x631] : &:r35_8835 +# 35| r35_8837(glval) = FunctionAddress[String] : +# 35| v35_8838(void) = Call[String] : func:r35_8837, this:r35_8835 +# 35| mu35_8839(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8840(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8835 +# 35| r35_8841(glval) = VariableAddress[x631] : +# 35| r35_8842(glval) = FunctionAddress[~String] : +# 35| v35_8843(void) = Call[~String] : func:r35_8842, this:r35_8841 +# 35| mu35_8844(unknown) = ^CallSideEffect : ~m? +# 35| v35_8845(void) = ^IndirectReadSideEffect[-1] : &:r35_8841, ~m? +# 35| mu35_8846(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8841 +# 35| r35_8847(bool) = Constant[0] : +# 35| v35_8848(void) = ConditionalBranch : r35_8847 #-----| False -> Block 632 #-----| True -> Block 1026 -# 1915| Block 632 -# 1915| r1915_1(glval) = VariableAddress[x632] : -# 1915| mu1915_2(String) = Uninitialized[x632] : &:r1915_1 -# 1915| r1915_3(glval) = FunctionAddress[String] : -# 1915| v1915_4(void) = Call[String] : func:r1915_3, this:r1915_1 -# 1915| mu1915_5(unknown) = ^CallSideEffect : ~m? -# 1915| mu1915_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1915_1 -# 1916| r1916_1(glval) = VariableAddress[x632] : -# 1916| r1916_2(glval) = FunctionAddress[~String] : -# 1916| v1916_3(void) = Call[~String] : func:r1916_2, this:r1916_1 -# 1916| mu1916_4(unknown) = ^CallSideEffect : ~m? -# 1916| v1916_5(void) = ^IndirectReadSideEffect[-1] : &:r1916_1, ~m? -# 1916| mu1916_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1916_1 -# 1916| r1916_7(bool) = Constant[0] : -# 1916| v1916_8(void) = ConditionalBranch : r1916_7 +# 35| Block 632 +# 35| r35_8849(glval) = VariableAddress[x632] : +# 35| mu35_8850(String) = Uninitialized[x632] : &:r35_8849 +# 35| r35_8851(glval) = FunctionAddress[String] : +# 35| v35_8852(void) = Call[String] : func:r35_8851, this:r35_8849 +# 35| mu35_8853(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8854(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8849 +# 35| r35_8855(glval) = VariableAddress[x632] : +# 35| r35_8856(glval) = FunctionAddress[~String] : +# 35| v35_8857(void) = Call[~String] : func:r35_8856, this:r35_8855 +# 35| mu35_8858(unknown) = ^CallSideEffect : ~m? +# 35| v35_8859(void) = ^IndirectReadSideEffect[-1] : &:r35_8855, ~m? +# 35| mu35_8860(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8855 +# 35| r35_8861(bool) = Constant[0] : +# 35| v35_8862(void) = ConditionalBranch : r35_8861 #-----| False -> Block 633 #-----| True -> Block 1026 -# 1918| Block 633 -# 1918| r1918_1(glval) = VariableAddress[x633] : -# 1918| mu1918_2(String) = Uninitialized[x633] : &:r1918_1 -# 1918| r1918_3(glval) = FunctionAddress[String] : -# 1918| v1918_4(void) = Call[String] : func:r1918_3, this:r1918_1 -# 1918| mu1918_5(unknown) = ^CallSideEffect : ~m? -# 1918| mu1918_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1918_1 -# 1919| r1919_1(glval) = VariableAddress[x633] : -# 1919| r1919_2(glval) = FunctionAddress[~String] : -# 1919| v1919_3(void) = Call[~String] : func:r1919_2, this:r1919_1 -# 1919| mu1919_4(unknown) = ^CallSideEffect : ~m? -# 1919| v1919_5(void) = ^IndirectReadSideEffect[-1] : &:r1919_1, ~m? -# 1919| mu1919_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1919_1 -# 1919| r1919_7(bool) = Constant[0] : -# 1919| v1919_8(void) = ConditionalBranch : r1919_7 +# 35| Block 633 +# 35| r35_8863(glval) = VariableAddress[x633] : +# 35| mu35_8864(String) = Uninitialized[x633] : &:r35_8863 +# 35| r35_8865(glval) = FunctionAddress[String] : +# 35| v35_8866(void) = Call[String] : func:r35_8865, this:r35_8863 +# 35| mu35_8867(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8868(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8863 +# 35| r35_8869(glval) = VariableAddress[x633] : +# 35| r35_8870(glval) = FunctionAddress[~String] : +# 35| v35_8871(void) = Call[~String] : func:r35_8870, this:r35_8869 +# 35| mu35_8872(unknown) = ^CallSideEffect : ~m? +# 35| v35_8873(void) = ^IndirectReadSideEffect[-1] : &:r35_8869, ~m? +# 35| mu35_8874(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8869 +# 35| r35_8875(bool) = Constant[0] : +# 35| v35_8876(void) = ConditionalBranch : r35_8875 #-----| False -> Block 634 #-----| True -> Block 1026 -# 1921| Block 634 -# 1921| r1921_1(glval) = VariableAddress[x634] : -# 1921| mu1921_2(String) = Uninitialized[x634] : &:r1921_1 -# 1921| r1921_3(glval) = FunctionAddress[String] : -# 1921| v1921_4(void) = Call[String] : func:r1921_3, this:r1921_1 -# 1921| mu1921_5(unknown) = ^CallSideEffect : ~m? -# 1921| mu1921_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1921_1 -# 1922| r1922_1(glval) = VariableAddress[x634] : -# 1922| r1922_2(glval) = FunctionAddress[~String] : -# 1922| v1922_3(void) = Call[~String] : func:r1922_2, this:r1922_1 -# 1922| mu1922_4(unknown) = ^CallSideEffect : ~m? -# 1922| v1922_5(void) = ^IndirectReadSideEffect[-1] : &:r1922_1, ~m? -# 1922| mu1922_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1922_1 -# 1922| r1922_7(bool) = Constant[0] : -# 1922| v1922_8(void) = ConditionalBranch : r1922_7 +# 35| Block 634 +# 35| r35_8877(glval) = VariableAddress[x634] : +# 35| mu35_8878(String) = Uninitialized[x634] : &:r35_8877 +# 35| r35_8879(glval) = FunctionAddress[String] : +# 35| v35_8880(void) = Call[String] : func:r35_8879, this:r35_8877 +# 35| mu35_8881(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8882(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8877 +# 35| r35_8883(glval) = VariableAddress[x634] : +# 35| r35_8884(glval) = FunctionAddress[~String] : +# 35| v35_8885(void) = Call[~String] : func:r35_8884, this:r35_8883 +# 35| mu35_8886(unknown) = ^CallSideEffect : ~m? +# 35| v35_8887(void) = ^IndirectReadSideEffect[-1] : &:r35_8883, ~m? +# 35| mu35_8888(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8883 +# 35| r35_8889(bool) = Constant[0] : +# 35| v35_8890(void) = ConditionalBranch : r35_8889 #-----| False -> Block 635 #-----| True -> Block 1026 -# 1924| Block 635 -# 1924| r1924_1(glval) = VariableAddress[x635] : -# 1924| mu1924_2(String) = Uninitialized[x635] : &:r1924_1 -# 1924| r1924_3(glval) = FunctionAddress[String] : -# 1924| v1924_4(void) = Call[String] : func:r1924_3, this:r1924_1 -# 1924| mu1924_5(unknown) = ^CallSideEffect : ~m? -# 1924| mu1924_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1924_1 -# 1925| r1925_1(glval) = VariableAddress[x635] : -# 1925| r1925_2(glval) = FunctionAddress[~String] : -# 1925| v1925_3(void) = Call[~String] : func:r1925_2, this:r1925_1 -# 1925| mu1925_4(unknown) = ^CallSideEffect : ~m? -# 1925| v1925_5(void) = ^IndirectReadSideEffect[-1] : &:r1925_1, ~m? -# 1925| mu1925_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1925_1 -# 1925| r1925_7(bool) = Constant[0] : -# 1925| v1925_8(void) = ConditionalBranch : r1925_7 +# 35| Block 635 +# 35| r35_8891(glval) = VariableAddress[x635] : +# 35| mu35_8892(String) = Uninitialized[x635] : &:r35_8891 +# 35| r35_8893(glval) = FunctionAddress[String] : +# 35| v35_8894(void) = Call[String] : func:r35_8893, this:r35_8891 +# 35| mu35_8895(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8896(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8891 +# 35| r35_8897(glval) = VariableAddress[x635] : +# 35| r35_8898(glval) = FunctionAddress[~String] : +# 35| v35_8899(void) = Call[~String] : func:r35_8898, this:r35_8897 +# 35| mu35_8900(unknown) = ^CallSideEffect : ~m? +# 35| v35_8901(void) = ^IndirectReadSideEffect[-1] : &:r35_8897, ~m? +# 35| mu35_8902(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8897 +# 35| r35_8903(bool) = Constant[0] : +# 35| v35_8904(void) = ConditionalBranch : r35_8903 #-----| False -> Block 636 #-----| True -> Block 1026 -# 1927| Block 636 -# 1927| r1927_1(glval) = VariableAddress[x636] : -# 1927| mu1927_2(String) = Uninitialized[x636] : &:r1927_1 -# 1927| r1927_3(glval) = FunctionAddress[String] : -# 1927| v1927_4(void) = Call[String] : func:r1927_3, this:r1927_1 -# 1927| mu1927_5(unknown) = ^CallSideEffect : ~m? -# 1927| mu1927_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1927_1 -# 1928| r1928_1(glval) = VariableAddress[x636] : -# 1928| r1928_2(glval) = FunctionAddress[~String] : -# 1928| v1928_3(void) = Call[~String] : func:r1928_2, this:r1928_1 -# 1928| mu1928_4(unknown) = ^CallSideEffect : ~m? -# 1928| v1928_5(void) = ^IndirectReadSideEffect[-1] : &:r1928_1, ~m? -# 1928| mu1928_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1928_1 -# 1928| r1928_7(bool) = Constant[0] : -# 1928| v1928_8(void) = ConditionalBranch : r1928_7 +# 35| Block 636 +# 35| r35_8905(glval) = VariableAddress[x636] : +# 35| mu35_8906(String) = Uninitialized[x636] : &:r35_8905 +# 35| r35_8907(glval) = FunctionAddress[String] : +# 35| v35_8908(void) = Call[String] : func:r35_8907, this:r35_8905 +# 35| mu35_8909(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8910(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8905 +# 35| r35_8911(glval) = VariableAddress[x636] : +# 35| r35_8912(glval) = FunctionAddress[~String] : +# 35| v35_8913(void) = Call[~String] : func:r35_8912, this:r35_8911 +# 35| mu35_8914(unknown) = ^CallSideEffect : ~m? +# 35| v35_8915(void) = ^IndirectReadSideEffect[-1] : &:r35_8911, ~m? +# 35| mu35_8916(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8911 +# 35| r35_8917(bool) = Constant[0] : +# 35| v35_8918(void) = ConditionalBranch : r35_8917 #-----| False -> Block 637 #-----| True -> Block 1026 -# 1930| Block 637 -# 1930| r1930_1(glval) = VariableAddress[x637] : -# 1930| mu1930_2(String) = Uninitialized[x637] : &:r1930_1 -# 1930| r1930_3(glval) = FunctionAddress[String] : -# 1930| v1930_4(void) = Call[String] : func:r1930_3, this:r1930_1 -# 1930| mu1930_5(unknown) = ^CallSideEffect : ~m? -# 1930| mu1930_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1930_1 -# 1931| r1931_1(glval) = VariableAddress[x637] : -# 1931| r1931_2(glval) = FunctionAddress[~String] : -# 1931| v1931_3(void) = Call[~String] : func:r1931_2, this:r1931_1 -# 1931| mu1931_4(unknown) = ^CallSideEffect : ~m? -# 1931| v1931_5(void) = ^IndirectReadSideEffect[-1] : &:r1931_1, ~m? -# 1931| mu1931_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1931_1 -# 1931| r1931_7(bool) = Constant[0] : -# 1931| v1931_8(void) = ConditionalBranch : r1931_7 +# 35| Block 637 +# 35| r35_8919(glval) = VariableAddress[x637] : +# 35| mu35_8920(String) = Uninitialized[x637] : &:r35_8919 +# 35| r35_8921(glval) = FunctionAddress[String] : +# 35| v35_8922(void) = Call[String] : func:r35_8921, this:r35_8919 +# 35| mu35_8923(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8924(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8919 +# 35| r35_8925(glval) = VariableAddress[x637] : +# 35| r35_8926(glval) = FunctionAddress[~String] : +# 35| v35_8927(void) = Call[~String] : func:r35_8926, this:r35_8925 +# 35| mu35_8928(unknown) = ^CallSideEffect : ~m? +# 35| v35_8929(void) = ^IndirectReadSideEffect[-1] : &:r35_8925, ~m? +# 35| mu35_8930(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8925 +# 35| r35_8931(bool) = Constant[0] : +# 35| v35_8932(void) = ConditionalBranch : r35_8931 #-----| False -> Block 638 #-----| True -> Block 1026 -# 1933| Block 638 -# 1933| r1933_1(glval) = VariableAddress[x638] : -# 1933| mu1933_2(String) = Uninitialized[x638] : &:r1933_1 -# 1933| r1933_3(glval) = FunctionAddress[String] : -# 1933| v1933_4(void) = Call[String] : func:r1933_3, this:r1933_1 -# 1933| mu1933_5(unknown) = ^CallSideEffect : ~m? -# 1933| mu1933_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1933_1 -# 1934| r1934_1(glval) = VariableAddress[x638] : -# 1934| r1934_2(glval) = FunctionAddress[~String] : -# 1934| v1934_3(void) = Call[~String] : func:r1934_2, this:r1934_1 -# 1934| mu1934_4(unknown) = ^CallSideEffect : ~m? -# 1934| v1934_5(void) = ^IndirectReadSideEffect[-1] : &:r1934_1, ~m? -# 1934| mu1934_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1934_1 -# 1934| r1934_7(bool) = Constant[0] : -# 1934| v1934_8(void) = ConditionalBranch : r1934_7 +# 35| Block 638 +# 35| r35_8933(glval) = VariableAddress[x638] : +# 35| mu35_8934(String) = Uninitialized[x638] : &:r35_8933 +# 35| r35_8935(glval) = FunctionAddress[String] : +# 35| v35_8936(void) = Call[String] : func:r35_8935, this:r35_8933 +# 35| mu35_8937(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8938(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8933 +# 35| r35_8939(glval) = VariableAddress[x638] : +# 35| r35_8940(glval) = FunctionAddress[~String] : +# 35| v35_8941(void) = Call[~String] : func:r35_8940, this:r35_8939 +# 35| mu35_8942(unknown) = ^CallSideEffect : ~m? +# 35| v35_8943(void) = ^IndirectReadSideEffect[-1] : &:r35_8939, ~m? +# 35| mu35_8944(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8939 +# 35| r35_8945(bool) = Constant[0] : +# 35| v35_8946(void) = ConditionalBranch : r35_8945 #-----| False -> Block 639 #-----| True -> Block 1026 -# 1936| Block 639 -# 1936| r1936_1(glval) = VariableAddress[x639] : -# 1936| mu1936_2(String) = Uninitialized[x639] : &:r1936_1 -# 1936| r1936_3(glval) = FunctionAddress[String] : -# 1936| v1936_4(void) = Call[String] : func:r1936_3, this:r1936_1 -# 1936| mu1936_5(unknown) = ^CallSideEffect : ~m? -# 1936| mu1936_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1936_1 -# 1937| r1937_1(glval) = VariableAddress[x639] : -# 1937| r1937_2(glval) = FunctionAddress[~String] : -# 1937| v1937_3(void) = Call[~String] : func:r1937_2, this:r1937_1 -# 1937| mu1937_4(unknown) = ^CallSideEffect : ~m? -# 1937| v1937_5(void) = ^IndirectReadSideEffect[-1] : &:r1937_1, ~m? -# 1937| mu1937_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1937_1 -# 1937| r1937_7(bool) = Constant[0] : -# 1937| v1937_8(void) = ConditionalBranch : r1937_7 +# 35| Block 639 +# 35| r35_8947(glval) = VariableAddress[x639] : +# 35| mu35_8948(String) = Uninitialized[x639] : &:r35_8947 +# 35| r35_8949(glval) = FunctionAddress[String] : +# 35| v35_8950(void) = Call[String] : func:r35_8949, this:r35_8947 +# 35| mu35_8951(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8952(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8947 +# 35| r35_8953(glval) = VariableAddress[x639] : +# 35| r35_8954(glval) = FunctionAddress[~String] : +# 35| v35_8955(void) = Call[~String] : func:r35_8954, this:r35_8953 +# 35| mu35_8956(unknown) = ^CallSideEffect : ~m? +# 35| v35_8957(void) = ^IndirectReadSideEffect[-1] : &:r35_8953, ~m? +# 35| mu35_8958(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8953 +# 35| r35_8959(bool) = Constant[0] : +# 35| v35_8960(void) = ConditionalBranch : r35_8959 #-----| False -> Block 640 #-----| True -> Block 1026 -# 1939| Block 640 -# 1939| r1939_1(glval) = VariableAddress[x640] : -# 1939| mu1939_2(String) = Uninitialized[x640] : &:r1939_1 -# 1939| r1939_3(glval) = FunctionAddress[String] : -# 1939| v1939_4(void) = Call[String] : func:r1939_3, this:r1939_1 -# 1939| mu1939_5(unknown) = ^CallSideEffect : ~m? -# 1939| mu1939_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1939_1 -# 1940| r1940_1(glval) = VariableAddress[x640] : -# 1940| r1940_2(glval) = FunctionAddress[~String] : -# 1940| v1940_3(void) = Call[~String] : func:r1940_2, this:r1940_1 -# 1940| mu1940_4(unknown) = ^CallSideEffect : ~m? -# 1940| v1940_5(void) = ^IndirectReadSideEffect[-1] : &:r1940_1, ~m? -# 1940| mu1940_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1940_1 -# 1940| r1940_7(bool) = Constant[0] : -# 1940| v1940_8(void) = ConditionalBranch : r1940_7 +# 35| Block 640 +# 35| r35_8961(glval) = VariableAddress[x640] : +# 35| mu35_8962(String) = Uninitialized[x640] : &:r35_8961 +# 35| r35_8963(glval) = FunctionAddress[String] : +# 35| v35_8964(void) = Call[String] : func:r35_8963, this:r35_8961 +# 35| mu35_8965(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8966(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8961 +# 35| r35_8967(glval) = VariableAddress[x640] : +# 35| r35_8968(glval) = FunctionAddress[~String] : +# 35| v35_8969(void) = Call[~String] : func:r35_8968, this:r35_8967 +# 35| mu35_8970(unknown) = ^CallSideEffect : ~m? +# 35| v35_8971(void) = ^IndirectReadSideEffect[-1] : &:r35_8967, ~m? +# 35| mu35_8972(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8967 +# 35| r35_8973(bool) = Constant[0] : +# 35| v35_8974(void) = ConditionalBranch : r35_8973 #-----| False -> Block 641 #-----| True -> Block 1026 -# 1942| Block 641 -# 1942| r1942_1(glval) = VariableAddress[x641] : -# 1942| mu1942_2(String) = Uninitialized[x641] : &:r1942_1 -# 1942| r1942_3(glval) = FunctionAddress[String] : -# 1942| v1942_4(void) = Call[String] : func:r1942_3, this:r1942_1 -# 1942| mu1942_5(unknown) = ^CallSideEffect : ~m? -# 1942| mu1942_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1942_1 -# 1943| r1943_1(glval) = VariableAddress[x641] : -# 1943| r1943_2(glval) = FunctionAddress[~String] : -# 1943| v1943_3(void) = Call[~String] : func:r1943_2, this:r1943_1 -# 1943| mu1943_4(unknown) = ^CallSideEffect : ~m? -# 1943| v1943_5(void) = ^IndirectReadSideEffect[-1] : &:r1943_1, ~m? -# 1943| mu1943_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1943_1 -# 1943| r1943_7(bool) = Constant[0] : -# 1943| v1943_8(void) = ConditionalBranch : r1943_7 +# 35| Block 641 +# 35| r35_8975(glval) = VariableAddress[x641] : +# 35| mu35_8976(String) = Uninitialized[x641] : &:r35_8975 +# 35| r35_8977(glval) = FunctionAddress[String] : +# 35| v35_8978(void) = Call[String] : func:r35_8977, this:r35_8975 +# 35| mu35_8979(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8980(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8975 +# 35| r35_8981(glval) = VariableAddress[x641] : +# 35| r35_8982(glval) = FunctionAddress[~String] : +# 35| v35_8983(void) = Call[~String] : func:r35_8982, this:r35_8981 +# 35| mu35_8984(unknown) = ^CallSideEffect : ~m? +# 35| v35_8985(void) = ^IndirectReadSideEffect[-1] : &:r35_8981, ~m? +# 35| mu35_8986(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8981 +# 35| r35_8987(bool) = Constant[0] : +# 35| v35_8988(void) = ConditionalBranch : r35_8987 #-----| False -> Block 642 #-----| True -> Block 1026 -# 1945| Block 642 -# 1945| r1945_1(glval) = VariableAddress[x642] : -# 1945| mu1945_2(String) = Uninitialized[x642] : &:r1945_1 -# 1945| r1945_3(glval) = FunctionAddress[String] : -# 1945| v1945_4(void) = Call[String] : func:r1945_3, this:r1945_1 -# 1945| mu1945_5(unknown) = ^CallSideEffect : ~m? -# 1945| mu1945_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1945_1 -# 1946| r1946_1(glval) = VariableAddress[x642] : -# 1946| r1946_2(glval) = FunctionAddress[~String] : -# 1946| v1946_3(void) = Call[~String] : func:r1946_2, this:r1946_1 -# 1946| mu1946_4(unknown) = ^CallSideEffect : ~m? -# 1946| v1946_5(void) = ^IndirectReadSideEffect[-1] : &:r1946_1, ~m? -# 1946| mu1946_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1946_1 -# 1946| r1946_7(bool) = Constant[0] : -# 1946| v1946_8(void) = ConditionalBranch : r1946_7 +# 35| Block 642 +# 35| r35_8989(glval) = VariableAddress[x642] : +# 35| mu35_8990(String) = Uninitialized[x642] : &:r35_8989 +# 35| r35_8991(glval) = FunctionAddress[String] : +# 35| v35_8992(void) = Call[String] : func:r35_8991, this:r35_8989 +# 35| mu35_8993(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8994(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8989 +# 35| r35_8995(glval) = VariableAddress[x642] : +# 35| r35_8996(glval) = FunctionAddress[~String] : +# 35| v35_8997(void) = Call[~String] : func:r35_8996, this:r35_8995 +# 35| mu35_8998(unknown) = ^CallSideEffect : ~m? +# 35| v35_8999(void) = ^IndirectReadSideEffect[-1] : &:r35_8995, ~m? +# 35| mu35_9000(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8995 +# 35| r35_9001(bool) = Constant[0] : +# 35| v35_9002(void) = ConditionalBranch : r35_9001 #-----| False -> Block 643 #-----| True -> Block 1026 -# 1948| Block 643 -# 1948| r1948_1(glval) = VariableAddress[x643] : -# 1948| mu1948_2(String) = Uninitialized[x643] : &:r1948_1 -# 1948| r1948_3(glval) = FunctionAddress[String] : -# 1948| v1948_4(void) = Call[String] : func:r1948_3, this:r1948_1 -# 1948| mu1948_5(unknown) = ^CallSideEffect : ~m? -# 1948| mu1948_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1948_1 -# 1949| r1949_1(glval) = VariableAddress[x643] : -# 1949| r1949_2(glval) = FunctionAddress[~String] : -# 1949| v1949_3(void) = Call[~String] : func:r1949_2, this:r1949_1 -# 1949| mu1949_4(unknown) = ^CallSideEffect : ~m? -# 1949| v1949_5(void) = ^IndirectReadSideEffect[-1] : &:r1949_1, ~m? -# 1949| mu1949_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1949_1 -# 1949| r1949_7(bool) = Constant[0] : -# 1949| v1949_8(void) = ConditionalBranch : r1949_7 +# 35| Block 643 +# 35| r35_9003(glval) = VariableAddress[x643] : +# 35| mu35_9004(String) = Uninitialized[x643] : &:r35_9003 +# 35| r35_9005(glval) = FunctionAddress[String] : +# 35| v35_9006(void) = Call[String] : func:r35_9005, this:r35_9003 +# 35| mu35_9007(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9008(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9003 +# 35| r35_9009(glval) = VariableAddress[x643] : +# 35| r35_9010(glval) = FunctionAddress[~String] : +# 35| v35_9011(void) = Call[~String] : func:r35_9010, this:r35_9009 +# 35| mu35_9012(unknown) = ^CallSideEffect : ~m? +# 35| v35_9013(void) = ^IndirectReadSideEffect[-1] : &:r35_9009, ~m? +# 35| mu35_9014(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9009 +# 35| r35_9015(bool) = Constant[0] : +# 35| v35_9016(void) = ConditionalBranch : r35_9015 #-----| False -> Block 644 #-----| True -> Block 1026 -# 1951| Block 644 -# 1951| r1951_1(glval) = VariableAddress[x644] : -# 1951| mu1951_2(String) = Uninitialized[x644] : &:r1951_1 -# 1951| r1951_3(glval) = FunctionAddress[String] : -# 1951| v1951_4(void) = Call[String] : func:r1951_3, this:r1951_1 -# 1951| mu1951_5(unknown) = ^CallSideEffect : ~m? -# 1951| mu1951_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1951_1 -# 1952| r1952_1(glval) = VariableAddress[x644] : -# 1952| r1952_2(glval) = FunctionAddress[~String] : -# 1952| v1952_3(void) = Call[~String] : func:r1952_2, this:r1952_1 -# 1952| mu1952_4(unknown) = ^CallSideEffect : ~m? -# 1952| v1952_5(void) = ^IndirectReadSideEffect[-1] : &:r1952_1, ~m? -# 1952| mu1952_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1952_1 -# 1952| r1952_7(bool) = Constant[0] : -# 1952| v1952_8(void) = ConditionalBranch : r1952_7 +# 35| Block 644 +# 35| r35_9017(glval) = VariableAddress[x644] : +# 35| mu35_9018(String) = Uninitialized[x644] : &:r35_9017 +# 35| r35_9019(glval) = FunctionAddress[String] : +# 35| v35_9020(void) = Call[String] : func:r35_9019, this:r35_9017 +# 35| mu35_9021(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9022(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9017 +# 35| r35_9023(glval) = VariableAddress[x644] : +# 35| r35_9024(glval) = FunctionAddress[~String] : +# 35| v35_9025(void) = Call[~String] : func:r35_9024, this:r35_9023 +# 35| mu35_9026(unknown) = ^CallSideEffect : ~m? +# 35| v35_9027(void) = ^IndirectReadSideEffect[-1] : &:r35_9023, ~m? +# 35| mu35_9028(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9023 +# 35| r35_9029(bool) = Constant[0] : +# 35| v35_9030(void) = ConditionalBranch : r35_9029 #-----| False -> Block 645 #-----| True -> Block 1026 -# 1954| Block 645 -# 1954| r1954_1(glval) = VariableAddress[x645] : -# 1954| mu1954_2(String) = Uninitialized[x645] : &:r1954_1 -# 1954| r1954_3(glval) = FunctionAddress[String] : -# 1954| v1954_4(void) = Call[String] : func:r1954_3, this:r1954_1 -# 1954| mu1954_5(unknown) = ^CallSideEffect : ~m? -# 1954| mu1954_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1954_1 -# 1955| r1955_1(glval) = VariableAddress[x645] : -# 1955| r1955_2(glval) = FunctionAddress[~String] : -# 1955| v1955_3(void) = Call[~String] : func:r1955_2, this:r1955_1 -# 1955| mu1955_4(unknown) = ^CallSideEffect : ~m? -# 1955| v1955_5(void) = ^IndirectReadSideEffect[-1] : &:r1955_1, ~m? -# 1955| mu1955_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1955_1 -# 1955| r1955_7(bool) = Constant[0] : -# 1955| v1955_8(void) = ConditionalBranch : r1955_7 +# 35| Block 645 +# 35| r35_9031(glval) = VariableAddress[x645] : +# 35| mu35_9032(String) = Uninitialized[x645] : &:r35_9031 +# 35| r35_9033(glval) = FunctionAddress[String] : +# 35| v35_9034(void) = Call[String] : func:r35_9033, this:r35_9031 +# 35| mu35_9035(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9036(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9031 +# 35| r35_9037(glval) = VariableAddress[x645] : +# 35| r35_9038(glval) = FunctionAddress[~String] : +# 35| v35_9039(void) = Call[~String] : func:r35_9038, this:r35_9037 +# 35| mu35_9040(unknown) = ^CallSideEffect : ~m? +# 35| v35_9041(void) = ^IndirectReadSideEffect[-1] : &:r35_9037, ~m? +# 35| mu35_9042(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9037 +# 35| r35_9043(bool) = Constant[0] : +# 35| v35_9044(void) = ConditionalBranch : r35_9043 #-----| False -> Block 646 #-----| True -> Block 1026 -# 1957| Block 646 -# 1957| r1957_1(glval) = VariableAddress[x646] : -# 1957| mu1957_2(String) = Uninitialized[x646] : &:r1957_1 -# 1957| r1957_3(glval) = FunctionAddress[String] : -# 1957| v1957_4(void) = Call[String] : func:r1957_3, this:r1957_1 -# 1957| mu1957_5(unknown) = ^CallSideEffect : ~m? -# 1957| mu1957_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1957_1 -# 1958| r1958_1(glval) = VariableAddress[x646] : -# 1958| r1958_2(glval) = FunctionAddress[~String] : -# 1958| v1958_3(void) = Call[~String] : func:r1958_2, this:r1958_1 -# 1958| mu1958_4(unknown) = ^CallSideEffect : ~m? -# 1958| v1958_5(void) = ^IndirectReadSideEffect[-1] : &:r1958_1, ~m? -# 1958| mu1958_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1958_1 -# 1958| r1958_7(bool) = Constant[0] : -# 1958| v1958_8(void) = ConditionalBranch : r1958_7 +# 35| Block 646 +# 35| r35_9045(glval) = VariableAddress[x646] : +# 35| mu35_9046(String) = Uninitialized[x646] : &:r35_9045 +# 35| r35_9047(glval) = FunctionAddress[String] : +# 35| v35_9048(void) = Call[String] : func:r35_9047, this:r35_9045 +# 35| mu35_9049(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9050(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9045 +# 35| r35_9051(glval) = VariableAddress[x646] : +# 35| r35_9052(glval) = FunctionAddress[~String] : +# 35| v35_9053(void) = Call[~String] : func:r35_9052, this:r35_9051 +# 35| mu35_9054(unknown) = ^CallSideEffect : ~m? +# 35| v35_9055(void) = ^IndirectReadSideEffect[-1] : &:r35_9051, ~m? +# 35| mu35_9056(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9051 +# 35| r35_9057(bool) = Constant[0] : +# 35| v35_9058(void) = ConditionalBranch : r35_9057 #-----| False -> Block 647 #-----| True -> Block 1026 -# 1960| Block 647 -# 1960| r1960_1(glval) = VariableAddress[x647] : -# 1960| mu1960_2(String) = Uninitialized[x647] : &:r1960_1 -# 1960| r1960_3(glval) = FunctionAddress[String] : -# 1960| v1960_4(void) = Call[String] : func:r1960_3, this:r1960_1 -# 1960| mu1960_5(unknown) = ^CallSideEffect : ~m? -# 1960| mu1960_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1960_1 -# 1961| r1961_1(glval) = VariableAddress[x647] : -# 1961| r1961_2(glval) = FunctionAddress[~String] : -# 1961| v1961_3(void) = Call[~String] : func:r1961_2, this:r1961_1 -# 1961| mu1961_4(unknown) = ^CallSideEffect : ~m? -# 1961| v1961_5(void) = ^IndirectReadSideEffect[-1] : &:r1961_1, ~m? -# 1961| mu1961_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1961_1 -# 1961| r1961_7(bool) = Constant[0] : -# 1961| v1961_8(void) = ConditionalBranch : r1961_7 +# 35| Block 647 +# 35| r35_9059(glval) = VariableAddress[x647] : +# 35| mu35_9060(String) = Uninitialized[x647] : &:r35_9059 +# 35| r35_9061(glval) = FunctionAddress[String] : +# 35| v35_9062(void) = Call[String] : func:r35_9061, this:r35_9059 +# 35| mu35_9063(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9064(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9059 +# 35| r35_9065(glval) = VariableAddress[x647] : +# 35| r35_9066(glval) = FunctionAddress[~String] : +# 35| v35_9067(void) = Call[~String] : func:r35_9066, this:r35_9065 +# 35| mu35_9068(unknown) = ^CallSideEffect : ~m? +# 35| v35_9069(void) = ^IndirectReadSideEffect[-1] : &:r35_9065, ~m? +# 35| mu35_9070(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9065 +# 35| r35_9071(bool) = Constant[0] : +# 35| v35_9072(void) = ConditionalBranch : r35_9071 #-----| False -> Block 648 #-----| True -> Block 1026 -# 1963| Block 648 -# 1963| r1963_1(glval) = VariableAddress[x648] : -# 1963| mu1963_2(String) = Uninitialized[x648] : &:r1963_1 -# 1963| r1963_3(glval) = FunctionAddress[String] : -# 1963| v1963_4(void) = Call[String] : func:r1963_3, this:r1963_1 -# 1963| mu1963_5(unknown) = ^CallSideEffect : ~m? -# 1963| mu1963_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1963_1 -# 1964| r1964_1(glval) = VariableAddress[x648] : -# 1964| r1964_2(glval) = FunctionAddress[~String] : -# 1964| v1964_3(void) = Call[~String] : func:r1964_2, this:r1964_1 -# 1964| mu1964_4(unknown) = ^CallSideEffect : ~m? -# 1964| v1964_5(void) = ^IndirectReadSideEffect[-1] : &:r1964_1, ~m? -# 1964| mu1964_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1964_1 -# 1964| r1964_7(bool) = Constant[0] : -# 1964| v1964_8(void) = ConditionalBranch : r1964_7 +# 35| Block 648 +# 35| r35_9073(glval) = VariableAddress[x648] : +# 35| mu35_9074(String) = Uninitialized[x648] : &:r35_9073 +# 35| r35_9075(glval) = FunctionAddress[String] : +# 35| v35_9076(void) = Call[String] : func:r35_9075, this:r35_9073 +# 35| mu35_9077(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9078(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9073 +# 35| r35_9079(glval) = VariableAddress[x648] : +# 35| r35_9080(glval) = FunctionAddress[~String] : +# 35| v35_9081(void) = Call[~String] : func:r35_9080, this:r35_9079 +# 35| mu35_9082(unknown) = ^CallSideEffect : ~m? +# 35| v35_9083(void) = ^IndirectReadSideEffect[-1] : &:r35_9079, ~m? +# 35| mu35_9084(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9079 +# 35| r35_9085(bool) = Constant[0] : +# 35| v35_9086(void) = ConditionalBranch : r35_9085 #-----| False -> Block 649 #-----| True -> Block 1026 -# 1966| Block 649 -# 1966| r1966_1(glval) = VariableAddress[x649] : -# 1966| mu1966_2(String) = Uninitialized[x649] : &:r1966_1 -# 1966| r1966_3(glval) = FunctionAddress[String] : -# 1966| v1966_4(void) = Call[String] : func:r1966_3, this:r1966_1 -# 1966| mu1966_5(unknown) = ^CallSideEffect : ~m? -# 1966| mu1966_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1966_1 -# 1967| r1967_1(glval) = VariableAddress[x649] : -# 1967| r1967_2(glval) = FunctionAddress[~String] : -# 1967| v1967_3(void) = Call[~String] : func:r1967_2, this:r1967_1 -# 1967| mu1967_4(unknown) = ^CallSideEffect : ~m? -# 1967| v1967_5(void) = ^IndirectReadSideEffect[-1] : &:r1967_1, ~m? -# 1967| mu1967_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1967_1 -# 1967| r1967_7(bool) = Constant[0] : -# 1967| v1967_8(void) = ConditionalBranch : r1967_7 +# 35| Block 649 +# 35| r35_9087(glval) = VariableAddress[x649] : +# 35| mu35_9088(String) = Uninitialized[x649] : &:r35_9087 +# 35| r35_9089(glval) = FunctionAddress[String] : +# 35| v35_9090(void) = Call[String] : func:r35_9089, this:r35_9087 +# 35| mu35_9091(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9092(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9087 +# 35| r35_9093(glval) = VariableAddress[x649] : +# 35| r35_9094(glval) = FunctionAddress[~String] : +# 35| v35_9095(void) = Call[~String] : func:r35_9094, this:r35_9093 +# 35| mu35_9096(unknown) = ^CallSideEffect : ~m? +# 35| v35_9097(void) = ^IndirectReadSideEffect[-1] : &:r35_9093, ~m? +# 35| mu35_9098(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9093 +# 35| r35_9099(bool) = Constant[0] : +# 35| v35_9100(void) = ConditionalBranch : r35_9099 #-----| False -> Block 650 #-----| True -> Block 1026 -# 1969| Block 650 -# 1969| r1969_1(glval) = VariableAddress[x650] : -# 1969| mu1969_2(String) = Uninitialized[x650] : &:r1969_1 -# 1969| r1969_3(glval) = FunctionAddress[String] : -# 1969| v1969_4(void) = Call[String] : func:r1969_3, this:r1969_1 -# 1969| mu1969_5(unknown) = ^CallSideEffect : ~m? -# 1969| mu1969_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1969_1 -# 1970| r1970_1(glval) = VariableAddress[x650] : -# 1970| r1970_2(glval) = FunctionAddress[~String] : -# 1970| v1970_3(void) = Call[~String] : func:r1970_2, this:r1970_1 -# 1970| mu1970_4(unknown) = ^CallSideEffect : ~m? -# 1970| v1970_5(void) = ^IndirectReadSideEffect[-1] : &:r1970_1, ~m? -# 1970| mu1970_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1970_1 -# 1970| r1970_7(bool) = Constant[0] : -# 1970| v1970_8(void) = ConditionalBranch : r1970_7 +# 35| Block 650 +# 35| r35_9101(glval) = VariableAddress[x650] : +# 35| mu35_9102(String) = Uninitialized[x650] : &:r35_9101 +# 35| r35_9103(glval) = FunctionAddress[String] : +# 35| v35_9104(void) = Call[String] : func:r35_9103, this:r35_9101 +# 35| mu35_9105(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9106(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9101 +# 35| r35_9107(glval) = VariableAddress[x650] : +# 35| r35_9108(glval) = FunctionAddress[~String] : +# 35| v35_9109(void) = Call[~String] : func:r35_9108, this:r35_9107 +# 35| mu35_9110(unknown) = ^CallSideEffect : ~m? +# 35| v35_9111(void) = ^IndirectReadSideEffect[-1] : &:r35_9107, ~m? +# 35| mu35_9112(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9107 +# 35| r35_9113(bool) = Constant[0] : +# 35| v35_9114(void) = ConditionalBranch : r35_9113 #-----| False -> Block 651 #-----| True -> Block 1026 -# 1972| Block 651 -# 1972| r1972_1(glval) = VariableAddress[x651] : -# 1972| mu1972_2(String) = Uninitialized[x651] : &:r1972_1 -# 1972| r1972_3(glval) = FunctionAddress[String] : -# 1972| v1972_4(void) = Call[String] : func:r1972_3, this:r1972_1 -# 1972| mu1972_5(unknown) = ^CallSideEffect : ~m? -# 1972| mu1972_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1972_1 -# 1973| r1973_1(glval) = VariableAddress[x651] : -# 1973| r1973_2(glval) = FunctionAddress[~String] : -# 1973| v1973_3(void) = Call[~String] : func:r1973_2, this:r1973_1 -# 1973| mu1973_4(unknown) = ^CallSideEffect : ~m? -# 1973| v1973_5(void) = ^IndirectReadSideEffect[-1] : &:r1973_1, ~m? -# 1973| mu1973_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1973_1 -# 1973| r1973_7(bool) = Constant[0] : -# 1973| v1973_8(void) = ConditionalBranch : r1973_7 +# 35| Block 651 +# 35| r35_9115(glval) = VariableAddress[x651] : +# 35| mu35_9116(String) = Uninitialized[x651] : &:r35_9115 +# 35| r35_9117(glval) = FunctionAddress[String] : +# 35| v35_9118(void) = Call[String] : func:r35_9117, this:r35_9115 +# 35| mu35_9119(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9120(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9115 +# 35| r35_9121(glval) = VariableAddress[x651] : +# 35| r35_9122(glval) = FunctionAddress[~String] : +# 35| v35_9123(void) = Call[~String] : func:r35_9122, this:r35_9121 +# 35| mu35_9124(unknown) = ^CallSideEffect : ~m? +# 35| v35_9125(void) = ^IndirectReadSideEffect[-1] : &:r35_9121, ~m? +# 35| mu35_9126(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9121 +# 35| r35_9127(bool) = Constant[0] : +# 35| v35_9128(void) = ConditionalBranch : r35_9127 #-----| False -> Block 652 #-----| True -> Block 1026 -# 1975| Block 652 -# 1975| r1975_1(glval) = VariableAddress[x652] : -# 1975| mu1975_2(String) = Uninitialized[x652] : &:r1975_1 -# 1975| r1975_3(glval) = FunctionAddress[String] : -# 1975| v1975_4(void) = Call[String] : func:r1975_3, this:r1975_1 -# 1975| mu1975_5(unknown) = ^CallSideEffect : ~m? -# 1975| mu1975_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1975_1 -# 1976| r1976_1(glval) = VariableAddress[x652] : -# 1976| r1976_2(glval) = FunctionAddress[~String] : -# 1976| v1976_3(void) = Call[~String] : func:r1976_2, this:r1976_1 -# 1976| mu1976_4(unknown) = ^CallSideEffect : ~m? -# 1976| v1976_5(void) = ^IndirectReadSideEffect[-1] : &:r1976_1, ~m? -# 1976| mu1976_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1976_1 -# 1976| r1976_7(bool) = Constant[0] : -# 1976| v1976_8(void) = ConditionalBranch : r1976_7 +# 35| Block 652 +# 35| r35_9129(glval) = VariableAddress[x652] : +# 35| mu35_9130(String) = Uninitialized[x652] : &:r35_9129 +# 35| r35_9131(glval) = FunctionAddress[String] : +# 35| v35_9132(void) = Call[String] : func:r35_9131, this:r35_9129 +# 35| mu35_9133(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9134(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9129 +# 35| r35_9135(glval) = VariableAddress[x652] : +# 35| r35_9136(glval) = FunctionAddress[~String] : +# 35| v35_9137(void) = Call[~String] : func:r35_9136, this:r35_9135 +# 35| mu35_9138(unknown) = ^CallSideEffect : ~m? +# 35| v35_9139(void) = ^IndirectReadSideEffect[-1] : &:r35_9135, ~m? +# 35| mu35_9140(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9135 +# 35| r35_9141(bool) = Constant[0] : +# 35| v35_9142(void) = ConditionalBranch : r35_9141 #-----| False -> Block 653 #-----| True -> Block 1026 -# 1978| Block 653 -# 1978| r1978_1(glval) = VariableAddress[x653] : -# 1978| mu1978_2(String) = Uninitialized[x653] : &:r1978_1 -# 1978| r1978_3(glval) = FunctionAddress[String] : -# 1978| v1978_4(void) = Call[String] : func:r1978_3, this:r1978_1 -# 1978| mu1978_5(unknown) = ^CallSideEffect : ~m? -# 1978| mu1978_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1978_1 -# 1979| r1979_1(glval) = VariableAddress[x653] : -# 1979| r1979_2(glval) = FunctionAddress[~String] : -# 1979| v1979_3(void) = Call[~String] : func:r1979_2, this:r1979_1 -# 1979| mu1979_4(unknown) = ^CallSideEffect : ~m? -# 1979| v1979_5(void) = ^IndirectReadSideEffect[-1] : &:r1979_1, ~m? -# 1979| mu1979_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1979_1 -# 1979| r1979_7(bool) = Constant[0] : -# 1979| v1979_8(void) = ConditionalBranch : r1979_7 +# 35| Block 653 +# 35| r35_9143(glval) = VariableAddress[x653] : +# 35| mu35_9144(String) = Uninitialized[x653] : &:r35_9143 +# 35| r35_9145(glval) = FunctionAddress[String] : +# 35| v35_9146(void) = Call[String] : func:r35_9145, this:r35_9143 +# 35| mu35_9147(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9148(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9143 +# 35| r35_9149(glval) = VariableAddress[x653] : +# 35| r35_9150(glval) = FunctionAddress[~String] : +# 35| v35_9151(void) = Call[~String] : func:r35_9150, this:r35_9149 +# 35| mu35_9152(unknown) = ^CallSideEffect : ~m? +# 35| v35_9153(void) = ^IndirectReadSideEffect[-1] : &:r35_9149, ~m? +# 35| mu35_9154(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9149 +# 35| r35_9155(bool) = Constant[0] : +# 35| v35_9156(void) = ConditionalBranch : r35_9155 #-----| False -> Block 654 #-----| True -> Block 1026 -# 1981| Block 654 -# 1981| r1981_1(glval) = VariableAddress[x654] : -# 1981| mu1981_2(String) = Uninitialized[x654] : &:r1981_1 -# 1981| r1981_3(glval) = FunctionAddress[String] : -# 1981| v1981_4(void) = Call[String] : func:r1981_3, this:r1981_1 -# 1981| mu1981_5(unknown) = ^CallSideEffect : ~m? -# 1981| mu1981_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1981_1 -# 1982| r1982_1(glval) = VariableAddress[x654] : -# 1982| r1982_2(glval) = FunctionAddress[~String] : -# 1982| v1982_3(void) = Call[~String] : func:r1982_2, this:r1982_1 -# 1982| mu1982_4(unknown) = ^CallSideEffect : ~m? -# 1982| v1982_5(void) = ^IndirectReadSideEffect[-1] : &:r1982_1, ~m? -# 1982| mu1982_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1982_1 -# 1982| r1982_7(bool) = Constant[0] : -# 1982| v1982_8(void) = ConditionalBranch : r1982_7 +# 35| Block 654 +# 35| r35_9157(glval) = VariableAddress[x654] : +# 35| mu35_9158(String) = Uninitialized[x654] : &:r35_9157 +# 35| r35_9159(glval) = FunctionAddress[String] : +# 35| v35_9160(void) = Call[String] : func:r35_9159, this:r35_9157 +# 35| mu35_9161(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9162(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9157 +# 35| r35_9163(glval) = VariableAddress[x654] : +# 35| r35_9164(glval) = FunctionAddress[~String] : +# 35| v35_9165(void) = Call[~String] : func:r35_9164, this:r35_9163 +# 35| mu35_9166(unknown) = ^CallSideEffect : ~m? +# 35| v35_9167(void) = ^IndirectReadSideEffect[-1] : &:r35_9163, ~m? +# 35| mu35_9168(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9163 +# 35| r35_9169(bool) = Constant[0] : +# 35| v35_9170(void) = ConditionalBranch : r35_9169 #-----| False -> Block 655 #-----| True -> Block 1026 -# 1984| Block 655 -# 1984| r1984_1(glval) = VariableAddress[x655] : -# 1984| mu1984_2(String) = Uninitialized[x655] : &:r1984_1 -# 1984| r1984_3(glval) = FunctionAddress[String] : -# 1984| v1984_4(void) = Call[String] : func:r1984_3, this:r1984_1 -# 1984| mu1984_5(unknown) = ^CallSideEffect : ~m? -# 1984| mu1984_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1984_1 -# 1985| r1985_1(glval) = VariableAddress[x655] : -# 1985| r1985_2(glval) = FunctionAddress[~String] : -# 1985| v1985_3(void) = Call[~String] : func:r1985_2, this:r1985_1 -# 1985| mu1985_4(unknown) = ^CallSideEffect : ~m? -# 1985| v1985_5(void) = ^IndirectReadSideEffect[-1] : &:r1985_1, ~m? -# 1985| mu1985_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1985_1 -# 1985| r1985_7(bool) = Constant[0] : -# 1985| v1985_8(void) = ConditionalBranch : r1985_7 +# 35| Block 655 +# 35| r35_9171(glval) = VariableAddress[x655] : +# 35| mu35_9172(String) = Uninitialized[x655] : &:r35_9171 +# 35| r35_9173(glval) = FunctionAddress[String] : +# 35| v35_9174(void) = Call[String] : func:r35_9173, this:r35_9171 +# 35| mu35_9175(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9176(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9171 +# 35| r35_9177(glval) = VariableAddress[x655] : +# 35| r35_9178(glval) = FunctionAddress[~String] : +# 35| v35_9179(void) = Call[~String] : func:r35_9178, this:r35_9177 +# 35| mu35_9180(unknown) = ^CallSideEffect : ~m? +# 35| v35_9181(void) = ^IndirectReadSideEffect[-1] : &:r35_9177, ~m? +# 35| mu35_9182(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9177 +# 35| r35_9183(bool) = Constant[0] : +# 35| v35_9184(void) = ConditionalBranch : r35_9183 #-----| False -> Block 656 #-----| True -> Block 1026 -# 1987| Block 656 -# 1987| r1987_1(glval) = VariableAddress[x656] : -# 1987| mu1987_2(String) = Uninitialized[x656] : &:r1987_1 -# 1987| r1987_3(glval) = FunctionAddress[String] : -# 1987| v1987_4(void) = Call[String] : func:r1987_3, this:r1987_1 -# 1987| mu1987_5(unknown) = ^CallSideEffect : ~m? -# 1987| mu1987_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1987_1 -# 1988| r1988_1(glval) = VariableAddress[x656] : -# 1988| r1988_2(glval) = FunctionAddress[~String] : -# 1988| v1988_3(void) = Call[~String] : func:r1988_2, this:r1988_1 -# 1988| mu1988_4(unknown) = ^CallSideEffect : ~m? -# 1988| v1988_5(void) = ^IndirectReadSideEffect[-1] : &:r1988_1, ~m? -# 1988| mu1988_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1988_1 -# 1988| r1988_7(bool) = Constant[0] : -# 1988| v1988_8(void) = ConditionalBranch : r1988_7 +# 35| Block 656 +# 35| r35_9185(glval) = VariableAddress[x656] : +# 35| mu35_9186(String) = Uninitialized[x656] : &:r35_9185 +# 35| r35_9187(glval) = FunctionAddress[String] : +# 35| v35_9188(void) = Call[String] : func:r35_9187, this:r35_9185 +# 35| mu35_9189(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9190(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9185 +# 35| r35_9191(glval) = VariableAddress[x656] : +# 35| r35_9192(glval) = FunctionAddress[~String] : +# 35| v35_9193(void) = Call[~String] : func:r35_9192, this:r35_9191 +# 35| mu35_9194(unknown) = ^CallSideEffect : ~m? +# 35| v35_9195(void) = ^IndirectReadSideEffect[-1] : &:r35_9191, ~m? +# 35| mu35_9196(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9191 +# 35| r35_9197(bool) = Constant[0] : +# 35| v35_9198(void) = ConditionalBranch : r35_9197 #-----| False -> Block 657 #-----| True -> Block 1026 -# 1990| Block 657 -# 1990| r1990_1(glval) = VariableAddress[x657] : -# 1990| mu1990_2(String) = Uninitialized[x657] : &:r1990_1 -# 1990| r1990_3(glval) = FunctionAddress[String] : -# 1990| v1990_4(void) = Call[String] : func:r1990_3, this:r1990_1 -# 1990| mu1990_5(unknown) = ^CallSideEffect : ~m? -# 1990| mu1990_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1990_1 -# 1991| r1991_1(glval) = VariableAddress[x657] : -# 1991| r1991_2(glval) = FunctionAddress[~String] : -# 1991| v1991_3(void) = Call[~String] : func:r1991_2, this:r1991_1 -# 1991| mu1991_4(unknown) = ^CallSideEffect : ~m? -# 1991| v1991_5(void) = ^IndirectReadSideEffect[-1] : &:r1991_1, ~m? -# 1991| mu1991_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1991_1 -# 1991| r1991_7(bool) = Constant[0] : -# 1991| v1991_8(void) = ConditionalBranch : r1991_7 +# 35| Block 657 +# 35| r35_9199(glval) = VariableAddress[x657] : +# 35| mu35_9200(String) = Uninitialized[x657] : &:r35_9199 +# 35| r35_9201(glval) = FunctionAddress[String] : +# 35| v35_9202(void) = Call[String] : func:r35_9201, this:r35_9199 +# 35| mu35_9203(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9204(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9199 +# 35| r35_9205(glval) = VariableAddress[x657] : +# 35| r35_9206(glval) = FunctionAddress[~String] : +# 35| v35_9207(void) = Call[~String] : func:r35_9206, this:r35_9205 +# 35| mu35_9208(unknown) = ^CallSideEffect : ~m? +# 35| v35_9209(void) = ^IndirectReadSideEffect[-1] : &:r35_9205, ~m? +# 35| mu35_9210(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9205 +# 35| r35_9211(bool) = Constant[0] : +# 35| v35_9212(void) = ConditionalBranch : r35_9211 #-----| False -> Block 658 #-----| True -> Block 1026 -# 1993| Block 658 -# 1993| r1993_1(glval) = VariableAddress[x658] : -# 1993| mu1993_2(String) = Uninitialized[x658] : &:r1993_1 -# 1993| r1993_3(glval) = FunctionAddress[String] : -# 1993| v1993_4(void) = Call[String] : func:r1993_3, this:r1993_1 -# 1993| mu1993_5(unknown) = ^CallSideEffect : ~m? -# 1993| mu1993_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1993_1 -# 1994| r1994_1(glval) = VariableAddress[x658] : -# 1994| r1994_2(glval) = FunctionAddress[~String] : -# 1994| v1994_3(void) = Call[~String] : func:r1994_2, this:r1994_1 -# 1994| mu1994_4(unknown) = ^CallSideEffect : ~m? -# 1994| v1994_5(void) = ^IndirectReadSideEffect[-1] : &:r1994_1, ~m? -# 1994| mu1994_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1994_1 -# 1994| r1994_7(bool) = Constant[0] : -# 1994| v1994_8(void) = ConditionalBranch : r1994_7 +# 35| Block 658 +# 35| r35_9213(glval) = VariableAddress[x658] : +# 35| mu35_9214(String) = Uninitialized[x658] : &:r35_9213 +# 35| r35_9215(glval) = FunctionAddress[String] : +# 35| v35_9216(void) = Call[String] : func:r35_9215, this:r35_9213 +# 35| mu35_9217(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9218(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9213 +# 35| r35_9219(glval) = VariableAddress[x658] : +# 35| r35_9220(glval) = FunctionAddress[~String] : +# 35| v35_9221(void) = Call[~String] : func:r35_9220, this:r35_9219 +# 35| mu35_9222(unknown) = ^CallSideEffect : ~m? +# 35| v35_9223(void) = ^IndirectReadSideEffect[-1] : &:r35_9219, ~m? +# 35| mu35_9224(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9219 +# 35| r35_9225(bool) = Constant[0] : +# 35| v35_9226(void) = ConditionalBranch : r35_9225 #-----| False -> Block 659 #-----| True -> Block 1026 -# 1996| Block 659 -# 1996| r1996_1(glval) = VariableAddress[x659] : -# 1996| mu1996_2(String) = Uninitialized[x659] : &:r1996_1 -# 1996| r1996_3(glval) = FunctionAddress[String] : -# 1996| v1996_4(void) = Call[String] : func:r1996_3, this:r1996_1 -# 1996| mu1996_5(unknown) = ^CallSideEffect : ~m? -# 1996| mu1996_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1996_1 -# 1997| r1997_1(glval) = VariableAddress[x659] : -# 1997| r1997_2(glval) = FunctionAddress[~String] : -# 1997| v1997_3(void) = Call[~String] : func:r1997_2, this:r1997_1 -# 1997| mu1997_4(unknown) = ^CallSideEffect : ~m? -# 1997| v1997_5(void) = ^IndirectReadSideEffect[-1] : &:r1997_1, ~m? -# 1997| mu1997_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1997_1 -# 1997| r1997_7(bool) = Constant[0] : -# 1997| v1997_8(void) = ConditionalBranch : r1997_7 +# 35| Block 659 +# 35| r35_9227(glval) = VariableAddress[x659] : +# 35| mu35_9228(String) = Uninitialized[x659] : &:r35_9227 +# 35| r35_9229(glval) = FunctionAddress[String] : +# 35| v35_9230(void) = Call[String] : func:r35_9229, this:r35_9227 +# 35| mu35_9231(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9232(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9227 +# 35| r35_9233(glval) = VariableAddress[x659] : +# 35| r35_9234(glval) = FunctionAddress[~String] : +# 35| v35_9235(void) = Call[~String] : func:r35_9234, this:r35_9233 +# 35| mu35_9236(unknown) = ^CallSideEffect : ~m? +# 35| v35_9237(void) = ^IndirectReadSideEffect[-1] : &:r35_9233, ~m? +# 35| mu35_9238(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9233 +# 35| r35_9239(bool) = Constant[0] : +# 35| v35_9240(void) = ConditionalBranch : r35_9239 #-----| False -> Block 660 #-----| True -> Block 1026 -# 1999| Block 660 -# 1999| r1999_1(glval) = VariableAddress[x660] : -# 1999| mu1999_2(String) = Uninitialized[x660] : &:r1999_1 -# 1999| r1999_3(glval) = FunctionAddress[String] : -# 1999| v1999_4(void) = Call[String] : func:r1999_3, this:r1999_1 -# 1999| mu1999_5(unknown) = ^CallSideEffect : ~m? -# 1999| mu1999_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1999_1 -# 2000| r2000_1(glval) = VariableAddress[x660] : -# 2000| r2000_2(glval) = FunctionAddress[~String] : -# 2000| v2000_3(void) = Call[~String] : func:r2000_2, this:r2000_1 -# 2000| mu2000_4(unknown) = ^CallSideEffect : ~m? -# 2000| v2000_5(void) = ^IndirectReadSideEffect[-1] : &:r2000_1, ~m? -# 2000| mu2000_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2000_1 -# 2000| r2000_7(bool) = Constant[0] : -# 2000| v2000_8(void) = ConditionalBranch : r2000_7 +# 35| Block 660 +# 35| r35_9241(glval) = VariableAddress[x660] : +# 35| mu35_9242(String) = Uninitialized[x660] : &:r35_9241 +# 35| r35_9243(glval) = FunctionAddress[String] : +# 35| v35_9244(void) = Call[String] : func:r35_9243, this:r35_9241 +# 35| mu35_9245(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9246(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9241 +# 35| r35_9247(glval) = VariableAddress[x660] : +# 35| r35_9248(glval) = FunctionAddress[~String] : +# 35| v35_9249(void) = Call[~String] : func:r35_9248, this:r35_9247 +# 35| mu35_9250(unknown) = ^CallSideEffect : ~m? +# 35| v35_9251(void) = ^IndirectReadSideEffect[-1] : &:r35_9247, ~m? +# 35| mu35_9252(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9247 +# 35| r35_9253(bool) = Constant[0] : +# 35| v35_9254(void) = ConditionalBranch : r35_9253 #-----| False -> Block 661 #-----| True -> Block 1026 -# 2002| Block 661 -# 2002| r2002_1(glval) = VariableAddress[x661] : -# 2002| mu2002_2(String) = Uninitialized[x661] : &:r2002_1 -# 2002| r2002_3(glval) = FunctionAddress[String] : -# 2002| v2002_4(void) = Call[String] : func:r2002_3, this:r2002_1 -# 2002| mu2002_5(unknown) = ^CallSideEffect : ~m? -# 2002| mu2002_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2002_1 -# 2003| r2003_1(glval) = VariableAddress[x661] : -# 2003| r2003_2(glval) = FunctionAddress[~String] : -# 2003| v2003_3(void) = Call[~String] : func:r2003_2, this:r2003_1 -# 2003| mu2003_4(unknown) = ^CallSideEffect : ~m? -# 2003| v2003_5(void) = ^IndirectReadSideEffect[-1] : &:r2003_1, ~m? -# 2003| mu2003_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2003_1 -# 2003| r2003_7(bool) = Constant[0] : -# 2003| v2003_8(void) = ConditionalBranch : r2003_7 +# 35| Block 661 +# 35| r35_9255(glval) = VariableAddress[x661] : +# 35| mu35_9256(String) = Uninitialized[x661] : &:r35_9255 +# 35| r35_9257(glval) = FunctionAddress[String] : +# 35| v35_9258(void) = Call[String] : func:r35_9257, this:r35_9255 +# 35| mu35_9259(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9260(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9255 +# 35| r35_9261(glval) = VariableAddress[x661] : +# 35| r35_9262(glval) = FunctionAddress[~String] : +# 35| v35_9263(void) = Call[~String] : func:r35_9262, this:r35_9261 +# 35| mu35_9264(unknown) = ^CallSideEffect : ~m? +# 35| v35_9265(void) = ^IndirectReadSideEffect[-1] : &:r35_9261, ~m? +# 35| mu35_9266(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9261 +# 35| r35_9267(bool) = Constant[0] : +# 35| v35_9268(void) = ConditionalBranch : r35_9267 #-----| False -> Block 662 #-----| True -> Block 1026 -# 2005| Block 662 -# 2005| r2005_1(glval) = VariableAddress[x662] : -# 2005| mu2005_2(String) = Uninitialized[x662] : &:r2005_1 -# 2005| r2005_3(glval) = FunctionAddress[String] : -# 2005| v2005_4(void) = Call[String] : func:r2005_3, this:r2005_1 -# 2005| mu2005_5(unknown) = ^CallSideEffect : ~m? -# 2005| mu2005_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2005_1 -# 2006| r2006_1(glval) = VariableAddress[x662] : -# 2006| r2006_2(glval) = FunctionAddress[~String] : -# 2006| v2006_3(void) = Call[~String] : func:r2006_2, this:r2006_1 -# 2006| mu2006_4(unknown) = ^CallSideEffect : ~m? -# 2006| v2006_5(void) = ^IndirectReadSideEffect[-1] : &:r2006_1, ~m? -# 2006| mu2006_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2006_1 -# 2006| r2006_7(bool) = Constant[0] : -# 2006| v2006_8(void) = ConditionalBranch : r2006_7 +# 35| Block 662 +# 35| r35_9269(glval) = VariableAddress[x662] : +# 35| mu35_9270(String) = Uninitialized[x662] : &:r35_9269 +# 35| r35_9271(glval) = FunctionAddress[String] : +# 35| v35_9272(void) = Call[String] : func:r35_9271, this:r35_9269 +# 35| mu35_9273(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9274(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9269 +# 35| r35_9275(glval) = VariableAddress[x662] : +# 35| r35_9276(glval) = FunctionAddress[~String] : +# 35| v35_9277(void) = Call[~String] : func:r35_9276, this:r35_9275 +# 35| mu35_9278(unknown) = ^CallSideEffect : ~m? +# 35| v35_9279(void) = ^IndirectReadSideEffect[-1] : &:r35_9275, ~m? +# 35| mu35_9280(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9275 +# 35| r35_9281(bool) = Constant[0] : +# 35| v35_9282(void) = ConditionalBranch : r35_9281 #-----| False -> Block 663 #-----| True -> Block 1026 -# 2008| Block 663 -# 2008| r2008_1(glval) = VariableAddress[x663] : -# 2008| mu2008_2(String) = Uninitialized[x663] : &:r2008_1 -# 2008| r2008_3(glval) = FunctionAddress[String] : -# 2008| v2008_4(void) = Call[String] : func:r2008_3, this:r2008_1 -# 2008| mu2008_5(unknown) = ^CallSideEffect : ~m? -# 2008| mu2008_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2008_1 -# 2009| r2009_1(glval) = VariableAddress[x663] : -# 2009| r2009_2(glval) = FunctionAddress[~String] : -# 2009| v2009_3(void) = Call[~String] : func:r2009_2, this:r2009_1 -# 2009| mu2009_4(unknown) = ^CallSideEffect : ~m? -# 2009| v2009_5(void) = ^IndirectReadSideEffect[-1] : &:r2009_1, ~m? -# 2009| mu2009_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2009_1 -# 2009| r2009_7(bool) = Constant[0] : -# 2009| v2009_8(void) = ConditionalBranch : r2009_7 +# 35| Block 663 +# 35| r35_9283(glval) = VariableAddress[x663] : +# 35| mu35_9284(String) = Uninitialized[x663] : &:r35_9283 +# 35| r35_9285(glval) = FunctionAddress[String] : +# 35| v35_9286(void) = Call[String] : func:r35_9285, this:r35_9283 +# 35| mu35_9287(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9288(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9283 +# 35| r35_9289(glval) = VariableAddress[x663] : +# 35| r35_9290(glval) = FunctionAddress[~String] : +# 35| v35_9291(void) = Call[~String] : func:r35_9290, this:r35_9289 +# 35| mu35_9292(unknown) = ^CallSideEffect : ~m? +# 35| v35_9293(void) = ^IndirectReadSideEffect[-1] : &:r35_9289, ~m? +# 35| mu35_9294(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9289 +# 35| r35_9295(bool) = Constant[0] : +# 35| v35_9296(void) = ConditionalBranch : r35_9295 #-----| False -> Block 664 #-----| True -> Block 1026 -# 2011| Block 664 -# 2011| r2011_1(glval) = VariableAddress[x664] : -# 2011| mu2011_2(String) = Uninitialized[x664] : &:r2011_1 -# 2011| r2011_3(glval) = FunctionAddress[String] : -# 2011| v2011_4(void) = Call[String] : func:r2011_3, this:r2011_1 -# 2011| mu2011_5(unknown) = ^CallSideEffect : ~m? -# 2011| mu2011_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2011_1 -# 2012| r2012_1(glval) = VariableAddress[x664] : -# 2012| r2012_2(glval) = FunctionAddress[~String] : -# 2012| v2012_3(void) = Call[~String] : func:r2012_2, this:r2012_1 -# 2012| mu2012_4(unknown) = ^CallSideEffect : ~m? -# 2012| v2012_5(void) = ^IndirectReadSideEffect[-1] : &:r2012_1, ~m? -# 2012| mu2012_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2012_1 -# 2012| r2012_7(bool) = Constant[0] : -# 2012| v2012_8(void) = ConditionalBranch : r2012_7 +# 35| Block 664 +# 35| r35_9297(glval) = VariableAddress[x664] : +# 35| mu35_9298(String) = Uninitialized[x664] : &:r35_9297 +# 35| r35_9299(glval) = FunctionAddress[String] : +# 35| v35_9300(void) = Call[String] : func:r35_9299, this:r35_9297 +# 35| mu35_9301(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9302(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9297 +# 35| r35_9303(glval) = VariableAddress[x664] : +# 35| r35_9304(glval) = FunctionAddress[~String] : +# 35| v35_9305(void) = Call[~String] : func:r35_9304, this:r35_9303 +# 35| mu35_9306(unknown) = ^CallSideEffect : ~m? +# 35| v35_9307(void) = ^IndirectReadSideEffect[-1] : &:r35_9303, ~m? +# 35| mu35_9308(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9303 +# 35| r35_9309(bool) = Constant[0] : +# 35| v35_9310(void) = ConditionalBranch : r35_9309 #-----| False -> Block 665 #-----| True -> Block 1026 -# 2014| Block 665 -# 2014| r2014_1(glval) = VariableAddress[x665] : -# 2014| mu2014_2(String) = Uninitialized[x665] : &:r2014_1 -# 2014| r2014_3(glval) = FunctionAddress[String] : -# 2014| v2014_4(void) = Call[String] : func:r2014_3, this:r2014_1 -# 2014| mu2014_5(unknown) = ^CallSideEffect : ~m? -# 2014| mu2014_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2014_1 -# 2015| r2015_1(glval) = VariableAddress[x665] : -# 2015| r2015_2(glval) = FunctionAddress[~String] : -# 2015| v2015_3(void) = Call[~String] : func:r2015_2, this:r2015_1 -# 2015| mu2015_4(unknown) = ^CallSideEffect : ~m? -# 2015| v2015_5(void) = ^IndirectReadSideEffect[-1] : &:r2015_1, ~m? -# 2015| mu2015_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2015_1 -# 2015| r2015_7(bool) = Constant[0] : -# 2015| v2015_8(void) = ConditionalBranch : r2015_7 +# 35| Block 665 +# 35| r35_9311(glval) = VariableAddress[x665] : +# 35| mu35_9312(String) = Uninitialized[x665] : &:r35_9311 +# 35| r35_9313(glval) = FunctionAddress[String] : +# 35| v35_9314(void) = Call[String] : func:r35_9313, this:r35_9311 +# 35| mu35_9315(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9316(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9311 +# 35| r35_9317(glval) = VariableAddress[x665] : +# 35| r35_9318(glval) = FunctionAddress[~String] : +# 35| v35_9319(void) = Call[~String] : func:r35_9318, this:r35_9317 +# 35| mu35_9320(unknown) = ^CallSideEffect : ~m? +# 35| v35_9321(void) = ^IndirectReadSideEffect[-1] : &:r35_9317, ~m? +# 35| mu35_9322(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9317 +# 35| r35_9323(bool) = Constant[0] : +# 35| v35_9324(void) = ConditionalBranch : r35_9323 #-----| False -> Block 666 #-----| True -> Block 1026 -# 2017| Block 666 -# 2017| r2017_1(glval) = VariableAddress[x666] : -# 2017| mu2017_2(String) = Uninitialized[x666] : &:r2017_1 -# 2017| r2017_3(glval) = FunctionAddress[String] : -# 2017| v2017_4(void) = Call[String] : func:r2017_3, this:r2017_1 -# 2017| mu2017_5(unknown) = ^CallSideEffect : ~m? -# 2017| mu2017_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2017_1 -# 2018| r2018_1(glval) = VariableAddress[x666] : -# 2018| r2018_2(glval) = FunctionAddress[~String] : -# 2018| v2018_3(void) = Call[~String] : func:r2018_2, this:r2018_1 -# 2018| mu2018_4(unknown) = ^CallSideEffect : ~m? -# 2018| v2018_5(void) = ^IndirectReadSideEffect[-1] : &:r2018_1, ~m? -# 2018| mu2018_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2018_1 -# 2018| r2018_7(bool) = Constant[0] : -# 2018| v2018_8(void) = ConditionalBranch : r2018_7 +# 35| Block 666 +# 35| r35_9325(glval) = VariableAddress[x666] : +# 35| mu35_9326(String) = Uninitialized[x666] : &:r35_9325 +# 35| r35_9327(glval) = FunctionAddress[String] : +# 35| v35_9328(void) = Call[String] : func:r35_9327, this:r35_9325 +# 35| mu35_9329(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9330(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9325 +# 35| r35_9331(glval) = VariableAddress[x666] : +# 35| r35_9332(glval) = FunctionAddress[~String] : +# 35| v35_9333(void) = Call[~String] : func:r35_9332, this:r35_9331 +# 35| mu35_9334(unknown) = ^CallSideEffect : ~m? +# 35| v35_9335(void) = ^IndirectReadSideEffect[-1] : &:r35_9331, ~m? +# 35| mu35_9336(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9331 +# 35| r35_9337(bool) = Constant[0] : +# 35| v35_9338(void) = ConditionalBranch : r35_9337 #-----| False -> Block 667 #-----| True -> Block 1026 -# 2020| Block 667 -# 2020| r2020_1(glval) = VariableAddress[x667] : -# 2020| mu2020_2(String) = Uninitialized[x667] : &:r2020_1 -# 2020| r2020_3(glval) = FunctionAddress[String] : -# 2020| v2020_4(void) = Call[String] : func:r2020_3, this:r2020_1 -# 2020| mu2020_5(unknown) = ^CallSideEffect : ~m? -# 2020| mu2020_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2020_1 -# 2021| r2021_1(glval) = VariableAddress[x667] : -# 2021| r2021_2(glval) = FunctionAddress[~String] : -# 2021| v2021_3(void) = Call[~String] : func:r2021_2, this:r2021_1 -# 2021| mu2021_4(unknown) = ^CallSideEffect : ~m? -# 2021| v2021_5(void) = ^IndirectReadSideEffect[-1] : &:r2021_1, ~m? -# 2021| mu2021_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2021_1 -# 2021| r2021_7(bool) = Constant[0] : -# 2021| v2021_8(void) = ConditionalBranch : r2021_7 +# 35| Block 667 +# 35| r35_9339(glval) = VariableAddress[x667] : +# 35| mu35_9340(String) = Uninitialized[x667] : &:r35_9339 +# 35| r35_9341(glval) = FunctionAddress[String] : +# 35| v35_9342(void) = Call[String] : func:r35_9341, this:r35_9339 +# 35| mu35_9343(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9344(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9339 +# 35| r35_9345(glval) = VariableAddress[x667] : +# 35| r35_9346(glval) = FunctionAddress[~String] : +# 35| v35_9347(void) = Call[~String] : func:r35_9346, this:r35_9345 +# 35| mu35_9348(unknown) = ^CallSideEffect : ~m? +# 35| v35_9349(void) = ^IndirectReadSideEffect[-1] : &:r35_9345, ~m? +# 35| mu35_9350(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9345 +# 35| r35_9351(bool) = Constant[0] : +# 35| v35_9352(void) = ConditionalBranch : r35_9351 #-----| False -> Block 668 #-----| True -> Block 1026 -# 2023| Block 668 -# 2023| r2023_1(glval) = VariableAddress[x668] : -# 2023| mu2023_2(String) = Uninitialized[x668] : &:r2023_1 -# 2023| r2023_3(glval) = FunctionAddress[String] : -# 2023| v2023_4(void) = Call[String] : func:r2023_3, this:r2023_1 -# 2023| mu2023_5(unknown) = ^CallSideEffect : ~m? -# 2023| mu2023_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2023_1 -# 2024| r2024_1(glval) = VariableAddress[x668] : -# 2024| r2024_2(glval) = FunctionAddress[~String] : -# 2024| v2024_3(void) = Call[~String] : func:r2024_2, this:r2024_1 -# 2024| mu2024_4(unknown) = ^CallSideEffect : ~m? -# 2024| v2024_5(void) = ^IndirectReadSideEffect[-1] : &:r2024_1, ~m? -# 2024| mu2024_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2024_1 -# 2024| r2024_7(bool) = Constant[0] : -# 2024| v2024_8(void) = ConditionalBranch : r2024_7 +# 35| Block 668 +# 35| r35_9353(glval) = VariableAddress[x668] : +# 35| mu35_9354(String) = Uninitialized[x668] : &:r35_9353 +# 35| r35_9355(glval) = FunctionAddress[String] : +# 35| v35_9356(void) = Call[String] : func:r35_9355, this:r35_9353 +# 35| mu35_9357(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9358(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9353 +# 35| r35_9359(glval) = VariableAddress[x668] : +# 35| r35_9360(glval) = FunctionAddress[~String] : +# 35| v35_9361(void) = Call[~String] : func:r35_9360, this:r35_9359 +# 35| mu35_9362(unknown) = ^CallSideEffect : ~m? +# 35| v35_9363(void) = ^IndirectReadSideEffect[-1] : &:r35_9359, ~m? +# 35| mu35_9364(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9359 +# 35| r35_9365(bool) = Constant[0] : +# 35| v35_9366(void) = ConditionalBranch : r35_9365 #-----| False -> Block 669 #-----| True -> Block 1026 -# 2026| Block 669 -# 2026| r2026_1(glval) = VariableAddress[x669] : -# 2026| mu2026_2(String) = Uninitialized[x669] : &:r2026_1 -# 2026| r2026_3(glval) = FunctionAddress[String] : -# 2026| v2026_4(void) = Call[String] : func:r2026_3, this:r2026_1 -# 2026| mu2026_5(unknown) = ^CallSideEffect : ~m? -# 2026| mu2026_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2026_1 -# 2027| r2027_1(glval) = VariableAddress[x669] : -# 2027| r2027_2(glval) = FunctionAddress[~String] : -# 2027| v2027_3(void) = Call[~String] : func:r2027_2, this:r2027_1 -# 2027| mu2027_4(unknown) = ^CallSideEffect : ~m? -# 2027| v2027_5(void) = ^IndirectReadSideEffect[-1] : &:r2027_1, ~m? -# 2027| mu2027_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2027_1 -# 2027| r2027_7(bool) = Constant[0] : -# 2027| v2027_8(void) = ConditionalBranch : r2027_7 +# 35| Block 669 +# 35| r35_9367(glval) = VariableAddress[x669] : +# 35| mu35_9368(String) = Uninitialized[x669] : &:r35_9367 +# 35| r35_9369(glval) = FunctionAddress[String] : +# 35| v35_9370(void) = Call[String] : func:r35_9369, this:r35_9367 +# 35| mu35_9371(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9372(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9367 +# 35| r35_9373(glval) = VariableAddress[x669] : +# 35| r35_9374(glval) = FunctionAddress[~String] : +# 35| v35_9375(void) = Call[~String] : func:r35_9374, this:r35_9373 +# 35| mu35_9376(unknown) = ^CallSideEffect : ~m? +# 35| v35_9377(void) = ^IndirectReadSideEffect[-1] : &:r35_9373, ~m? +# 35| mu35_9378(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9373 +# 35| r35_9379(bool) = Constant[0] : +# 35| v35_9380(void) = ConditionalBranch : r35_9379 #-----| False -> Block 670 #-----| True -> Block 1026 -# 2029| Block 670 -# 2029| r2029_1(glval) = VariableAddress[x670] : -# 2029| mu2029_2(String) = Uninitialized[x670] : &:r2029_1 -# 2029| r2029_3(glval) = FunctionAddress[String] : -# 2029| v2029_4(void) = Call[String] : func:r2029_3, this:r2029_1 -# 2029| mu2029_5(unknown) = ^CallSideEffect : ~m? -# 2029| mu2029_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2029_1 -# 2030| r2030_1(glval) = VariableAddress[x670] : -# 2030| r2030_2(glval) = FunctionAddress[~String] : -# 2030| v2030_3(void) = Call[~String] : func:r2030_2, this:r2030_1 -# 2030| mu2030_4(unknown) = ^CallSideEffect : ~m? -# 2030| v2030_5(void) = ^IndirectReadSideEffect[-1] : &:r2030_1, ~m? -# 2030| mu2030_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2030_1 -# 2030| r2030_7(bool) = Constant[0] : -# 2030| v2030_8(void) = ConditionalBranch : r2030_7 +# 35| Block 670 +# 35| r35_9381(glval) = VariableAddress[x670] : +# 35| mu35_9382(String) = Uninitialized[x670] : &:r35_9381 +# 35| r35_9383(glval) = FunctionAddress[String] : +# 35| v35_9384(void) = Call[String] : func:r35_9383, this:r35_9381 +# 35| mu35_9385(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9386(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9381 +# 35| r35_9387(glval) = VariableAddress[x670] : +# 35| r35_9388(glval) = FunctionAddress[~String] : +# 35| v35_9389(void) = Call[~String] : func:r35_9388, this:r35_9387 +# 35| mu35_9390(unknown) = ^CallSideEffect : ~m? +# 35| v35_9391(void) = ^IndirectReadSideEffect[-1] : &:r35_9387, ~m? +# 35| mu35_9392(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9387 +# 35| r35_9393(bool) = Constant[0] : +# 35| v35_9394(void) = ConditionalBranch : r35_9393 #-----| False -> Block 671 #-----| True -> Block 1026 -# 2032| Block 671 -# 2032| r2032_1(glval) = VariableAddress[x671] : -# 2032| mu2032_2(String) = Uninitialized[x671] : &:r2032_1 -# 2032| r2032_3(glval) = FunctionAddress[String] : -# 2032| v2032_4(void) = Call[String] : func:r2032_3, this:r2032_1 -# 2032| mu2032_5(unknown) = ^CallSideEffect : ~m? -# 2032| mu2032_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2032_1 -# 2033| r2033_1(glval) = VariableAddress[x671] : -# 2033| r2033_2(glval) = FunctionAddress[~String] : -# 2033| v2033_3(void) = Call[~String] : func:r2033_2, this:r2033_1 -# 2033| mu2033_4(unknown) = ^CallSideEffect : ~m? -# 2033| v2033_5(void) = ^IndirectReadSideEffect[-1] : &:r2033_1, ~m? -# 2033| mu2033_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2033_1 -# 2033| r2033_7(bool) = Constant[0] : -# 2033| v2033_8(void) = ConditionalBranch : r2033_7 +# 35| Block 671 +# 35| r35_9395(glval) = VariableAddress[x671] : +# 35| mu35_9396(String) = Uninitialized[x671] : &:r35_9395 +# 35| r35_9397(glval) = FunctionAddress[String] : +# 35| v35_9398(void) = Call[String] : func:r35_9397, this:r35_9395 +# 35| mu35_9399(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9400(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9395 +# 35| r35_9401(glval) = VariableAddress[x671] : +# 35| r35_9402(glval) = FunctionAddress[~String] : +# 35| v35_9403(void) = Call[~String] : func:r35_9402, this:r35_9401 +# 35| mu35_9404(unknown) = ^CallSideEffect : ~m? +# 35| v35_9405(void) = ^IndirectReadSideEffect[-1] : &:r35_9401, ~m? +# 35| mu35_9406(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9401 +# 35| r35_9407(bool) = Constant[0] : +# 35| v35_9408(void) = ConditionalBranch : r35_9407 #-----| False -> Block 672 #-----| True -> Block 1026 -# 2035| Block 672 -# 2035| r2035_1(glval) = VariableAddress[x672] : -# 2035| mu2035_2(String) = Uninitialized[x672] : &:r2035_1 -# 2035| r2035_3(glval) = FunctionAddress[String] : -# 2035| v2035_4(void) = Call[String] : func:r2035_3, this:r2035_1 -# 2035| mu2035_5(unknown) = ^CallSideEffect : ~m? -# 2035| mu2035_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2035_1 -# 2036| r2036_1(glval) = VariableAddress[x672] : -# 2036| r2036_2(glval) = FunctionAddress[~String] : -# 2036| v2036_3(void) = Call[~String] : func:r2036_2, this:r2036_1 -# 2036| mu2036_4(unknown) = ^CallSideEffect : ~m? -# 2036| v2036_5(void) = ^IndirectReadSideEffect[-1] : &:r2036_1, ~m? -# 2036| mu2036_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2036_1 -# 2036| r2036_7(bool) = Constant[0] : -# 2036| v2036_8(void) = ConditionalBranch : r2036_7 +# 35| Block 672 +# 35| r35_9409(glval) = VariableAddress[x672] : +# 35| mu35_9410(String) = Uninitialized[x672] : &:r35_9409 +# 35| r35_9411(glval) = FunctionAddress[String] : +# 35| v35_9412(void) = Call[String] : func:r35_9411, this:r35_9409 +# 35| mu35_9413(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9414(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9409 +# 35| r35_9415(glval) = VariableAddress[x672] : +# 35| r35_9416(glval) = FunctionAddress[~String] : +# 35| v35_9417(void) = Call[~String] : func:r35_9416, this:r35_9415 +# 35| mu35_9418(unknown) = ^CallSideEffect : ~m? +# 35| v35_9419(void) = ^IndirectReadSideEffect[-1] : &:r35_9415, ~m? +# 35| mu35_9420(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9415 +# 35| r35_9421(bool) = Constant[0] : +# 35| v35_9422(void) = ConditionalBranch : r35_9421 #-----| False -> Block 673 #-----| True -> Block 1026 -# 2038| Block 673 -# 2038| r2038_1(glval) = VariableAddress[x673] : -# 2038| mu2038_2(String) = Uninitialized[x673] : &:r2038_1 -# 2038| r2038_3(glval) = FunctionAddress[String] : -# 2038| v2038_4(void) = Call[String] : func:r2038_3, this:r2038_1 -# 2038| mu2038_5(unknown) = ^CallSideEffect : ~m? -# 2038| mu2038_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2038_1 -# 2039| r2039_1(glval) = VariableAddress[x673] : -# 2039| r2039_2(glval) = FunctionAddress[~String] : -# 2039| v2039_3(void) = Call[~String] : func:r2039_2, this:r2039_1 -# 2039| mu2039_4(unknown) = ^CallSideEffect : ~m? -# 2039| v2039_5(void) = ^IndirectReadSideEffect[-1] : &:r2039_1, ~m? -# 2039| mu2039_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2039_1 -# 2039| r2039_7(bool) = Constant[0] : -# 2039| v2039_8(void) = ConditionalBranch : r2039_7 +# 35| Block 673 +# 35| r35_9423(glval) = VariableAddress[x673] : +# 35| mu35_9424(String) = Uninitialized[x673] : &:r35_9423 +# 35| r35_9425(glval) = FunctionAddress[String] : +# 35| v35_9426(void) = Call[String] : func:r35_9425, this:r35_9423 +# 35| mu35_9427(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9428(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9423 +# 35| r35_9429(glval) = VariableAddress[x673] : +# 35| r35_9430(glval) = FunctionAddress[~String] : +# 35| v35_9431(void) = Call[~String] : func:r35_9430, this:r35_9429 +# 35| mu35_9432(unknown) = ^CallSideEffect : ~m? +# 35| v35_9433(void) = ^IndirectReadSideEffect[-1] : &:r35_9429, ~m? +# 35| mu35_9434(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9429 +# 35| r35_9435(bool) = Constant[0] : +# 35| v35_9436(void) = ConditionalBranch : r35_9435 #-----| False -> Block 674 #-----| True -> Block 1026 -# 2041| Block 674 -# 2041| r2041_1(glval) = VariableAddress[x674] : -# 2041| mu2041_2(String) = Uninitialized[x674] : &:r2041_1 -# 2041| r2041_3(glval) = FunctionAddress[String] : -# 2041| v2041_4(void) = Call[String] : func:r2041_3, this:r2041_1 -# 2041| mu2041_5(unknown) = ^CallSideEffect : ~m? -# 2041| mu2041_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2041_1 -# 2042| r2042_1(glval) = VariableAddress[x674] : -# 2042| r2042_2(glval) = FunctionAddress[~String] : -# 2042| v2042_3(void) = Call[~String] : func:r2042_2, this:r2042_1 -# 2042| mu2042_4(unknown) = ^CallSideEffect : ~m? -# 2042| v2042_5(void) = ^IndirectReadSideEffect[-1] : &:r2042_1, ~m? -# 2042| mu2042_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2042_1 -# 2042| r2042_7(bool) = Constant[0] : -# 2042| v2042_8(void) = ConditionalBranch : r2042_7 +# 35| Block 674 +# 35| r35_9437(glval) = VariableAddress[x674] : +# 35| mu35_9438(String) = Uninitialized[x674] : &:r35_9437 +# 35| r35_9439(glval) = FunctionAddress[String] : +# 35| v35_9440(void) = Call[String] : func:r35_9439, this:r35_9437 +# 35| mu35_9441(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9442(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9437 +# 35| r35_9443(glval) = VariableAddress[x674] : +# 35| r35_9444(glval) = FunctionAddress[~String] : +# 35| v35_9445(void) = Call[~String] : func:r35_9444, this:r35_9443 +# 35| mu35_9446(unknown) = ^CallSideEffect : ~m? +# 35| v35_9447(void) = ^IndirectReadSideEffect[-1] : &:r35_9443, ~m? +# 35| mu35_9448(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9443 +# 35| r35_9449(bool) = Constant[0] : +# 35| v35_9450(void) = ConditionalBranch : r35_9449 #-----| False -> Block 675 #-----| True -> Block 1026 -# 2044| Block 675 -# 2044| r2044_1(glval) = VariableAddress[x675] : -# 2044| mu2044_2(String) = Uninitialized[x675] : &:r2044_1 -# 2044| r2044_3(glval) = FunctionAddress[String] : -# 2044| v2044_4(void) = Call[String] : func:r2044_3, this:r2044_1 -# 2044| mu2044_5(unknown) = ^CallSideEffect : ~m? -# 2044| mu2044_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2044_1 -# 2045| r2045_1(glval) = VariableAddress[x675] : -# 2045| r2045_2(glval) = FunctionAddress[~String] : -# 2045| v2045_3(void) = Call[~String] : func:r2045_2, this:r2045_1 -# 2045| mu2045_4(unknown) = ^CallSideEffect : ~m? -# 2045| v2045_5(void) = ^IndirectReadSideEffect[-1] : &:r2045_1, ~m? -# 2045| mu2045_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2045_1 -# 2045| r2045_7(bool) = Constant[0] : -# 2045| v2045_8(void) = ConditionalBranch : r2045_7 +# 35| Block 675 +# 35| r35_9451(glval) = VariableAddress[x675] : +# 35| mu35_9452(String) = Uninitialized[x675] : &:r35_9451 +# 35| r35_9453(glval) = FunctionAddress[String] : +# 35| v35_9454(void) = Call[String] : func:r35_9453, this:r35_9451 +# 35| mu35_9455(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9456(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9451 +# 35| r35_9457(glval) = VariableAddress[x675] : +# 35| r35_9458(glval) = FunctionAddress[~String] : +# 35| v35_9459(void) = Call[~String] : func:r35_9458, this:r35_9457 +# 35| mu35_9460(unknown) = ^CallSideEffect : ~m? +# 35| v35_9461(void) = ^IndirectReadSideEffect[-1] : &:r35_9457, ~m? +# 35| mu35_9462(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9457 +# 35| r35_9463(bool) = Constant[0] : +# 35| v35_9464(void) = ConditionalBranch : r35_9463 #-----| False -> Block 676 #-----| True -> Block 1026 -# 2047| Block 676 -# 2047| r2047_1(glval) = VariableAddress[x676] : -# 2047| mu2047_2(String) = Uninitialized[x676] : &:r2047_1 -# 2047| r2047_3(glval) = FunctionAddress[String] : -# 2047| v2047_4(void) = Call[String] : func:r2047_3, this:r2047_1 -# 2047| mu2047_5(unknown) = ^CallSideEffect : ~m? -# 2047| mu2047_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2047_1 -# 2048| r2048_1(glval) = VariableAddress[x676] : -# 2048| r2048_2(glval) = FunctionAddress[~String] : -# 2048| v2048_3(void) = Call[~String] : func:r2048_2, this:r2048_1 -# 2048| mu2048_4(unknown) = ^CallSideEffect : ~m? -# 2048| v2048_5(void) = ^IndirectReadSideEffect[-1] : &:r2048_1, ~m? -# 2048| mu2048_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2048_1 -# 2048| r2048_7(bool) = Constant[0] : -# 2048| v2048_8(void) = ConditionalBranch : r2048_7 +# 35| Block 676 +# 35| r35_9465(glval) = VariableAddress[x676] : +# 35| mu35_9466(String) = Uninitialized[x676] : &:r35_9465 +# 35| r35_9467(glval) = FunctionAddress[String] : +# 35| v35_9468(void) = Call[String] : func:r35_9467, this:r35_9465 +# 35| mu35_9469(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9470(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9465 +# 35| r35_9471(glval) = VariableAddress[x676] : +# 35| r35_9472(glval) = FunctionAddress[~String] : +# 35| v35_9473(void) = Call[~String] : func:r35_9472, this:r35_9471 +# 35| mu35_9474(unknown) = ^CallSideEffect : ~m? +# 35| v35_9475(void) = ^IndirectReadSideEffect[-1] : &:r35_9471, ~m? +# 35| mu35_9476(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9471 +# 35| r35_9477(bool) = Constant[0] : +# 35| v35_9478(void) = ConditionalBranch : r35_9477 #-----| False -> Block 677 #-----| True -> Block 1026 -# 2050| Block 677 -# 2050| r2050_1(glval) = VariableAddress[x677] : -# 2050| mu2050_2(String) = Uninitialized[x677] : &:r2050_1 -# 2050| r2050_3(glval) = FunctionAddress[String] : -# 2050| v2050_4(void) = Call[String] : func:r2050_3, this:r2050_1 -# 2050| mu2050_5(unknown) = ^CallSideEffect : ~m? -# 2050| mu2050_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2050_1 -# 2051| r2051_1(glval) = VariableAddress[x677] : -# 2051| r2051_2(glval) = FunctionAddress[~String] : -# 2051| v2051_3(void) = Call[~String] : func:r2051_2, this:r2051_1 -# 2051| mu2051_4(unknown) = ^CallSideEffect : ~m? -# 2051| v2051_5(void) = ^IndirectReadSideEffect[-1] : &:r2051_1, ~m? -# 2051| mu2051_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2051_1 -# 2051| r2051_7(bool) = Constant[0] : -# 2051| v2051_8(void) = ConditionalBranch : r2051_7 +# 35| Block 677 +# 35| r35_9479(glval) = VariableAddress[x677] : +# 35| mu35_9480(String) = Uninitialized[x677] : &:r35_9479 +# 35| r35_9481(glval) = FunctionAddress[String] : +# 35| v35_9482(void) = Call[String] : func:r35_9481, this:r35_9479 +# 35| mu35_9483(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9484(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9479 +# 35| r35_9485(glval) = VariableAddress[x677] : +# 35| r35_9486(glval) = FunctionAddress[~String] : +# 35| v35_9487(void) = Call[~String] : func:r35_9486, this:r35_9485 +# 35| mu35_9488(unknown) = ^CallSideEffect : ~m? +# 35| v35_9489(void) = ^IndirectReadSideEffect[-1] : &:r35_9485, ~m? +# 35| mu35_9490(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9485 +# 35| r35_9491(bool) = Constant[0] : +# 35| v35_9492(void) = ConditionalBranch : r35_9491 #-----| False -> Block 678 #-----| True -> Block 1026 -# 2053| Block 678 -# 2053| r2053_1(glval) = VariableAddress[x678] : -# 2053| mu2053_2(String) = Uninitialized[x678] : &:r2053_1 -# 2053| r2053_3(glval) = FunctionAddress[String] : -# 2053| v2053_4(void) = Call[String] : func:r2053_3, this:r2053_1 -# 2053| mu2053_5(unknown) = ^CallSideEffect : ~m? -# 2053| mu2053_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2053_1 -# 2054| r2054_1(glval) = VariableAddress[x678] : -# 2054| r2054_2(glval) = FunctionAddress[~String] : -# 2054| v2054_3(void) = Call[~String] : func:r2054_2, this:r2054_1 -# 2054| mu2054_4(unknown) = ^CallSideEffect : ~m? -# 2054| v2054_5(void) = ^IndirectReadSideEffect[-1] : &:r2054_1, ~m? -# 2054| mu2054_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2054_1 -# 2054| r2054_7(bool) = Constant[0] : -# 2054| v2054_8(void) = ConditionalBranch : r2054_7 +# 35| Block 678 +# 35| r35_9493(glval) = VariableAddress[x678] : +# 35| mu35_9494(String) = Uninitialized[x678] : &:r35_9493 +# 35| r35_9495(glval) = FunctionAddress[String] : +# 35| v35_9496(void) = Call[String] : func:r35_9495, this:r35_9493 +# 35| mu35_9497(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9498(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9493 +# 35| r35_9499(glval) = VariableAddress[x678] : +# 35| r35_9500(glval) = FunctionAddress[~String] : +# 35| v35_9501(void) = Call[~String] : func:r35_9500, this:r35_9499 +# 35| mu35_9502(unknown) = ^CallSideEffect : ~m? +# 35| v35_9503(void) = ^IndirectReadSideEffect[-1] : &:r35_9499, ~m? +# 35| mu35_9504(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9499 +# 35| r35_9505(bool) = Constant[0] : +# 35| v35_9506(void) = ConditionalBranch : r35_9505 #-----| False -> Block 679 #-----| True -> Block 1026 -# 2056| Block 679 -# 2056| r2056_1(glval) = VariableAddress[x679] : -# 2056| mu2056_2(String) = Uninitialized[x679] : &:r2056_1 -# 2056| r2056_3(glval) = FunctionAddress[String] : -# 2056| v2056_4(void) = Call[String] : func:r2056_3, this:r2056_1 -# 2056| mu2056_5(unknown) = ^CallSideEffect : ~m? -# 2056| mu2056_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2056_1 -# 2057| r2057_1(glval) = VariableAddress[x679] : -# 2057| r2057_2(glval) = FunctionAddress[~String] : -# 2057| v2057_3(void) = Call[~String] : func:r2057_2, this:r2057_1 -# 2057| mu2057_4(unknown) = ^CallSideEffect : ~m? -# 2057| v2057_5(void) = ^IndirectReadSideEffect[-1] : &:r2057_1, ~m? -# 2057| mu2057_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2057_1 -# 2057| r2057_7(bool) = Constant[0] : -# 2057| v2057_8(void) = ConditionalBranch : r2057_7 +# 35| Block 679 +# 35| r35_9507(glval) = VariableAddress[x679] : +# 35| mu35_9508(String) = Uninitialized[x679] : &:r35_9507 +# 35| r35_9509(glval) = FunctionAddress[String] : +# 35| v35_9510(void) = Call[String] : func:r35_9509, this:r35_9507 +# 35| mu35_9511(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9512(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9507 +# 35| r35_9513(glval) = VariableAddress[x679] : +# 35| r35_9514(glval) = FunctionAddress[~String] : +# 35| v35_9515(void) = Call[~String] : func:r35_9514, this:r35_9513 +# 35| mu35_9516(unknown) = ^CallSideEffect : ~m? +# 35| v35_9517(void) = ^IndirectReadSideEffect[-1] : &:r35_9513, ~m? +# 35| mu35_9518(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9513 +# 35| r35_9519(bool) = Constant[0] : +# 35| v35_9520(void) = ConditionalBranch : r35_9519 #-----| False -> Block 680 #-----| True -> Block 1026 -# 2059| Block 680 -# 2059| r2059_1(glval) = VariableAddress[x680] : -# 2059| mu2059_2(String) = Uninitialized[x680] : &:r2059_1 -# 2059| r2059_3(glval) = FunctionAddress[String] : -# 2059| v2059_4(void) = Call[String] : func:r2059_3, this:r2059_1 -# 2059| mu2059_5(unknown) = ^CallSideEffect : ~m? -# 2059| mu2059_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2059_1 -# 2060| r2060_1(glval) = VariableAddress[x680] : -# 2060| r2060_2(glval) = FunctionAddress[~String] : -# 2060| v2060_3(void) = Call[~String] : func:r2060_2, this:r2060_1 -# 2060| mu2060_4(unknown) = ^CallSideEffect : ~m? -# 2060| v2060_5(void) = ^IndirectReadSideEffect[-1] : &:r2060_1, ~m? -# 2060| mu2060_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2060_1 -# 2060| r2060_7(bool) = Constant[0] : -# 2060| v2060_8(void) = ConditionalBranch : r2060_7 +# 35| Block 680 +# 35| r35_9521(glval) = VariableAddress[x680] : +# 35| mu35_9522(String) = Uninitialized[x680] : &:r35_9521 +# 35| r35_9523(glval) = FunctionAddress[String] : +# 35| v35_9524(void) = Call[String] : func:r35_9523, this:r35_9521 +# 35| mu35_9525(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9526(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9521 +# 35| r35_9527(glval) = VariableAddress[x680] : +# 35| r35_9528(glval) = FunctionAddress[~String] : +# 35| v35_9529(void) = Call[~String] : func:r35_9528, this:r35_9527 +# 35| mu35_9530(unknown) = ^CallSideEffect : ~m? +# 35| v35_9531(void) = ^IndirectReadSideEffect[-1] : &:r35_9527, ~m? +# 35| mu35_9532(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9527 +# 35| r35_9533(bool) = Constant[0] : +# 35| v35_9534(void) = ConditionalBranch : r35_9533 #-----| False -> Block 681 #-----| True -> Block 1026 -# 2062| Block 681 -# 2062| r2062_1(glval) = VariableAddress[x681] : -# 2062| mu2062_2(String) = Uninitialized[x681] : &:r2062_1 -# 2062| r2062_3(glval) = FunctionAddress[String] : -# 2062| v2062_4(void) = Call[String] : func:r2062_3, this:r2062_1 -# 2062| mu2062_5(unknown) = ^CallSideEffect : ~m? -# 2062| mu2062_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2062_1 -# 2063| r2063_1(glval) = VariableAddress[x681] : -# 2063| r2063_2(glval) = FunctionAddress[~String] : -# 2063| v2063_3(void) = Call[~String] : func:r2063_2, this:r2063_1 -# 2063| mu2063_4(unknown) = ^CallSideEffect : ~m? -# 2063| v2063_5(void) = ^IndirectReadSideEffect[-1] : &:r2063_1, ~m? -# 2063| mu2063_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2063_1 -# 2063| r2063_7(bool) = Constant[0] : -# 2063| v2063_8(void) = ConditionalBranch : r2063_7 +# 35| Block 681 +# 35| r35_9535(glval) = VariableAddress[x681] : +# 35| mu35_9536(String) = Uninitialized[x681] : &:r35_9535 +# 35| r35_9537(glval) = FunctionAddress[String] : +# 35| v35_9538(void) = Call[String] : func:r35_9537, this:r35_9535 +# 35| mu35_9539(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9540(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9535 +# 35| r35_9541(glval) = VariableAddress[x681] : +# 35| r35_9542(glval) = FunctionAddress[~String] : +# 35| v35_9543(void) = Call[~String] : func:r35_9542, this:r35_9541 +# 35| mu35_9544(unknown) = ^CallSideEffect : ~m? +# 35| v35_9545(void) = ^IndirectReadSideEffect[-1] : &:r35_9541, ~m? +# 35| mu35_9546(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9541 +# 35| r35_9547(bool) = Constant[0] : +# 35| v35_9548(void) = ConditionalBranch : r35_9547 #-----| False -> Block 682 #-----| True -> Block 1026 -# 2065| Block 682 -# 2065| r2065_1(glval) = VariableAddress[x682] : -# 2065| mu2065_2(String) = Uninitialized[x682] : &:r2065_1 -# 2065| r2065_3(glval) = FunctionAddress[String] : -# 2065| v2065_4(void) = Call[String] : func:r2065_3, this:r2065_1 -# 2065| mu2065_5(unknown) = ^CallSideEffect : ~m? -# 2065| mu2065_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2065_1 -# 2066| r2066_1(glval) = VariableAddress[x682] : -# 2066| r2066_2(glval) = FunctionAddress[~String] : -# 2066| v2066_3(void) = Call[~String] : func:r2066_2, this:r2066_1 -# 2066| mu2066_4(unknown) = ^CallSideEffect : ~m? -# 2066| v2066_5(void) = ^IndirectReadSideEffect[-1] : &:r2066_1, ~m? -# 2066| mu2066_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2066_1 -# 2066| r2066_7(bool) = Constant[0] : -# 2066| v2066_8(void) = ConditionalBranch : r2066_7 +# 35| Block 682 +# 35| r35_9549(glval) = VariableAddress[x682] : +# 35| mu35_9550(String) = Uninitialized[x682] : &:r35_9549 +# 35| r35_9551(glval) = FunctionAddress[String] : +# 35| v35_9552(void) = Call[String] : func:r35_9551, this:r35_9549 +# 35| mu35_9553(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9554(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9549 +# 35| r35_9555(glval) = VariableAddress[x682] : +# 35| r35_9556(glval) = FunctionAddress[~String] : +# 35| v35_9557(void) = Call[~String] : func:r35_9556, this:r35_9555 +# 35| mu35_9558(unknown) = ^CallSideEffect : ~m? +# 35| v35_9559(void) = ^IndirectReadSideEffect[-1] : &:r35_9555, ~m? +# 35| mu35_9560(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9555 +# 35| r35_9561(bool) = Constant[0] : +# 35| v35_9562(void) = ConditionalBranch : r35_9561 #-----| False -> Block 683 #-----| True -> Block 1026 -# 2068| Block 683 -# 2068| r2068_1(glval) = VariableAddress[x683] : -# 2068| mu2068_2(String) = Uninitialized[x683] : &:r2068_1 -# 2068| r2068_3(glval) = FunctionAddress[String] : -# 2068| v2068_4(void) = Call[String] : func:r2068_3, this:r2068_1 -# 2068| mu2068_5(unknown) = ^CallSideEffect : ~m? -# 2068| mu2068_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2068_1 -# 2069| r2069_1(glval) = VariableAddress[x683] : -# 2069| r2069_2(glval) = FunctionAddress[~String] : -# 2069| v2069_3(void) = Call[~String] : func:r2069_2, this:r2069_1 -# 2069| mu2069_4(unknown) = ^CallSideEffect : ~m? -# 2069| v2069_5(void) = ^IndirectReadSideEffect[-1] : &:r2069_1, ~m? -# 2069| mu2069_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2069_1 -# 2069| r2069_7(bool) = Constant[0] : -# 2069| v2069_8(void) = ConditionalBranch : r2069_7 +# 35| Block 683 +# 35| r35_9563(glval) = VariableAddress[x683] : +# 35| mu35_9564(String) = Uninitialized[x683] : &:r35_9563 +# 35| r35_9565(glval) = FunctionAddress[String] : +# 35| v35_9566(void) = Call[String] : func:r35_9565, this:r35_9563 +# 35| mu35_9567(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9568(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9563 +# 35| r35_9569(glval) = VariableAddress[x683] : +# 35| r35_9570(glval) = FunctionAddress[~String] : +# 35| v35_9571(void) = Call[~String] : func:r35_9570, this:r35_9569 +# 35| mu35_9572(unknown) = ^CallSideEffect : ~m? +# 35| v35_9573(void) = ^IndirectReadSideEffect[-1] : &:r35_9569, ~m? +# 35| mu35_9574(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9569 +# 35| r35_9575(bool) = Constant[0] : +# 35| v35_9576(void) = ConditionalBranch : r35_9575 #-----| False -> Block 684 #-----| True -> Block 1026 -# 2071| Block 684 -# 2071| r2071_1(glval) = VariableAddress[x684] : -# 2071| mu2071_2(String) = Uninitialized[x684] : &:r2071_1 -# 2071| r2071_3(glval) = FunctionAddress[String] : -# 2071| v2071_4(void) = Call[String] : func:r2071_3, this:r2071_1 -# 2071| mu2071_5(unknown) = ^CallSideEffect : ~m? -# 2071| mu2071_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2071_1 -# 2072| r2072_1(glval) = VariableAddress[x684] : -# 2072| r2072_2(glval) = FunctionAddress[~String] : -# 2072| v2072_3(void) = Call[~String] : func:r2072_2, this:r2072_1 -# 2072| mu2072_4(unknown) = ^CallSideEffect : ~m? -# 2072| v2072_5(void) = ^IndirectReadSideEffect[-1] : &:r2072_1, ~m? -# 2072| mu2072_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2072_1 -# 2072| r2072_7(bool) = Constant[0] : -# 2072| v2072_8(void) = ConditionalBranch : r2072_7 +# 35| Block 684 +# 35| r35_9577(glval) = VariableAddress[x684] : +# 35| mu35_9578(String) = Uninitialized[x684] : &:r35_9577 +# 35| r35_9579(glval) = FunctionAddress[String] : +# 35| v35_9580(void) = Call[String] : func:r35_9579, this:r35_9577 +# 35| mu35_9581(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9582(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9577 +# 35| r35_9583(glval) = VariableAddress[x684] : +# 35| r35_9584(glval) = FunctionAddress[~String] : +# 35| v35_9585(void) = Call[~String] : func:r35_9584, this:r35_9583 +# 35| mu35_9586(unknown) = ^CallSideEffect : ~m? +# 35| v35_9587(void) = ^IndirectReadSideEffect[-1] : &:r35_9583, ~m? +# 35| mu35_9588(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9583 +# 35| r35_9589(bool) = Constant[0] : +# 35| v35_9590(void) = ConditionalBranch : r35_9589 #-----| False -> Block 685 #-----| True -> Block 1026 -# 2074| Block 685 -# 2074| r2074_1(glval) = VariableAddress[x685] : -# 2074| mu2074_2(String) = Uninitialized[x685] : &:r2074_1 -# 2074| r2074_3(glval) = FunctionAddress[String] : -# 2074| v2074_4(void) = Call[String] : func:r2074_3, this:r2074_1 -# 2074| mu2074_5(unknown) = ^CallSideEffect : ~m? -# 2074| mu2074_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2074_1 -# 2075| r2075_1(glval) = VariableAddress[x685] : -# 2075| r2075_2(glval) = FunctionAddress[~String] : -# 2075| v2075_3(void) = Call[~String] : func:r2075_2, this:r2075_1 -# 2075| mu2075_4(unknown) = ^CallSideEffect : ~m? -# 2075| v2075_5(void) = ^IndirectReadSideEffect[-1] : &:r2075_1, ~m? -# 2075| mu2075_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2075_1 -# 2075| r2075_7(bool) = Constant[0] : -# 2075| v2075_8(void) = ConditionalBranch : r2075_7 +# 35| Block 685 +# 35| r35_9591(glval) = VariableAddress[x685] : +# 35| mu35_9592(String) = Uninitialized[x685] : &:r35_9591 +# 35| r35_9593(glval) = FunctionAddress[String] : +# 35| v35_9594(void) = Call[String] : func:r35_9593, this:r35_9591 +# 35| mu35_9595(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9596(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9591 +# 35| r35_9597(glval) = VariableAddress[x685] : +# 35| r35_9598(glval) = FunctionAddress[~String] : +# 35| v35_9599(void) = Call[~String] : func:r35_9598, this:r35_9597 +# 35| mu35_9600(unknown) = ^CallSideEffect : ~m? +# 35| v35_9601(void) = ^IndirectReadSideEffect[-1] : &:r35_9597, ~m? +# 35| mu35_9602(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9597 +# 35| r35_9603(bool) = Constant[0] : +# 35| v35_9604(void) = ConditionalBranch : r35_9603 #-----| False -> Block 686 #-----| True -> Block 1026 -# 2077| Block 686 -# 2077| r2077_1(glval) = VariableAddress[x686] : -# 2077| mu2077_2(String) = Uninitialized[x686] : &:r2077_1 -# 2077| r2077_3(glval) = FunctionAddress[String] : -# 2077| v2077_4(void) = Call[String] : func:r2077_3, this:r2077_1 -# 2077| mu2077_5(unknown) = ^CallSideEffect : ~m? -# 2077| mu2077_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2077_1 -# 2078| r2078_1(glval) = VariableAddress[x686] : -# 2078| r2078_2(glval) = FunctionAddress[~String] : -# 2078| v2078_3(void) = Call[~String] : func:r2078_2, this:r2078_1 -# 2078| mu2078_4(unknown) = ^CallSideEffect : ~m? -# 2078| v2078_5(void) = ^IndirectReadSideEffect[-1] : &:r2078_1, ~m? -# 2078| mu2078_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2078_1 -# 2078| r2078_7(bool) = Constant[0] : -# 2078| v2078_8(void) = ConditionalBranch : r2078_7 +# 35| Block 686 +# 35| r35_9605(glval) = VariableAddress[x686] : +# 35| mu35_9606(String) = Uninitialized[x686] : &:r35_9605 +# 35| r35_9607(glval) = FunctionAddress[String] : +# 35| v35_9608(void) = Call[String] : func:r35_9607, this:r35_9605 +# 35| mu35_9609(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9610(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9605 +# 35| r35_9611(glval) = VariableAddress[x686] : +# 35| r35_9612(glval) = FunctionAddress[~String] : +# 35| v35_9613(void) = Call[~String] : func:r35_9612, this:r35_9611 +# 35| mu35_9614(unknown) = ^CallSideEffect : ~m? +# 35| v35_9615(void) = ^IndirectReadSideEffect[-1] : &:r35_9611, ~m? +# 35| mu35_9616(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9611 +# 35| r35_9617(bool) = Constant[0] : +# 35| v35_9618(void) = ConditionalBranch : r35_9617 #-----| False -> Block 687 #-----| True -> Block 1026 -# 2080| Block 687 -# 2080| r2080_1(glval) = VariableAddress[x687] : -# 2080| mu2080_2(String) = Uninitialized[x687] : &:r2080_1 -# 2080| r2080_3(glval) = FunctionAddress[String] : -# 2080| v2080_4(void) = Call[String] : func:r2080_3, this:r2080_1 -# 2080| mu2080_5(unknown) = ^CallSideEffect : ~m? -# 2080| mu2080_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2080_1 -# 2081| r2081_1(glval) = VariableAddress[x687] : -# 2081| r2081_2(glval) = FunctionAddress[~String] : -# 2081| v2081_3(void) = Call[~String] : func:r2081_2, this:r2081_1 -# 2081| mu2081_4(unknown) = ^CallSideEffect : ~m? -# 2081| v2081_5(void) = ^IndirectReadSideEffect[-1] : &:r2081_1, ~m? -# 2081| mu2081_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2081_1 -# 2081| r2081_7(bool) = Constant[0] : -# 2081| v2081_8(void) = ConditionalBranch : r2081_7 +# 35| Block 687 +# 35| r35_9619(glval) = VariableAddress[x687] : +# 35| mu35_9620(String) = Uninitialized[x687] : &:r35_9619 +# 35| r35_9621(glval) = FunctionAddress[String] : +# 35| v35_9622(void) = Call[String] : func:r35_9621, this:r35_9619 +# 35| mu35_9623(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9624(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9619 +# 35| r35_9625(glval) = VariableAddress[x687] : +# 35| r35_9626(glval) = FunctionAddress[~String] : +# 35| v35_9627(void) = Call[~String] : func:r35_9626, this:r35_9625 +# 35| mu35_9628(unknown) = ^CallSideEffect : ~m? +# 35| v35_9629(void) = ^IndirectReadSideEffect[-1] : &:r35_9625, ~m? +# 35| mu35_9630(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9625 +# 35| r35_9631(bool) = Constant[0] : +# 35| v35_9632(void) = ConditionalBranch : r35_9631 #-----| False -> Block 688 #-----| True -> Block 1026 -# 2083| Block 688 -# 2083| r2083_1(glval) = VariableAddress[x688] : -# 2083| mu2083_2(String) = Uninitialized[x688] : &:r2083_1 -# 2083| r2083_3(glval) = FunctionAddress[String] : -# 2083| v2083_4(void) = Call[String] : func:r2083_3, this:r2083_1 -# 2083| mu2083_5(unknown) = ^CallSideEffect : ~m? -# 2083| mu2083_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2083_1 -# 2084| r2084_1(glval) = VariableAddress[x688] : -# 2084| r2084_2(glval) = FunctionAddress[~String] : -# 2084| v2084_3(void) = Call[~String] : func:r2084_2, this:r2084_1 -# 2084| mu2084_4(unknown) = ^CallSideEffect : ~m? -# 2084| v2084_5(void) = ^IndirectReadSideEffect[-1] : &:r2084_1, ~m? -# 2084| mu2084_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2084_1 -# 2084| r2084_7(bool) = Constant[0] : -# 2084| v2084_8(void) = ConditionalBranch : r2084_7 +# 35| Block 688 +# 35| r35_9633(glval) = VariableAddress[x688] : +# 35| mu35_9634(String) = Uninitialized[x688] : &:r35_9633 +# 35| r35_9635(glval) = FunctionAddress[String] : +# 35| v35_9636(void) = Call[String] : func:r35_9635, this:r35_9633 +# 35| mu35_9637(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9638(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9633 +# 35| r35_9639(glval) = VariableAddress[x688] : +# 35| r35_9640(glval) = FunctionAddress[~String] : +# 35| v35_9641(void) = Call[~String] : func:r35_9640, this:r35_9639 +# 35| mu35_9642(unknown) = ^CallSideEffect : ~m? +# 35| v35_9643(void) = ^IndirectReadSideEffect[-1] : &:r35_9639, ~m? +# 35| mu35_9644(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9639 +# 35| r35_9645(bool) = Constant[0] : +# 35| v35_9646(void) = ConditionalBranch : r35_9645 #-----| False -> Block 689 #-----| True -> Block 1026 -# 2086| Block 689 -# 2086| r2086_1(glval) = VariableAddress[x689] : -# 2086| mu2086_2(String) = Uninitialized[x689] : &:r2086_1 -# 2086| r2086_3(glval) = FunctionAddress[String] : -# 2086| v2086_4(void) = Call[String] : func:r2086_3, this:r2086_1 -# 2086| mu2086_5(unknown) = ^CallSideEffect : ~m? -# 2086| mu2086_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2086_1 -# 2087| r2087_1(glval) = VariableAddress[x689] : -# 2087| r2087_2(glval) = FunctionAddress[~String] : -# 2087| v2087_3(void) = Call[~String] : func:r2087_2, this:r2087_1 -# 2087| mu2087_4(unknown) = ^CallSideEffect : ~m? -# 2087| v2087_5(void) = ^IndirectReadSideEffect[-1] : &:r2087_1, ~m? -# 2087| mu2087_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2087_1 -# 2087| r2087_7(bool) = Constant[0] : -# 2087| v2087_8(void) = ConditionalBranch : r2087_7 +# 35| Block 689 +# 35| r35_9647(glval) = VariableAddress[x689] : +# 35| mu35_9648(String) = Uninitialized[x689] : &:r35_9647 +# 35| r35_9649(glval) = FunctionAddress[String] : +# 35| v35_9650(void) = Call[String] : func:r35_9649, this:r35_9647 +# 35| mu35_9651(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9652(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9647 +# 35| r35_9653(glval) = VariableAddress[x689] : +# 35| r35_9654(glval) = FunctionAddress[~String] : +# 35| v35_9655(void) = Call[~String] : func:r35_9654, this:r35_9653 +# 35| mu35_9656(unknown) = ^CallSideEffect : ~m? +# 35| v35_9657(void) = ^IndirectReadSideEffect[-1] : &:r35_9653, ~m? +# 35| mu35_9658(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9653 +# 35| r35_9659(bool) = Constant[0] : +# 35| v35_9660(void) = ConditionalBranch : r35_9659 #-----| False -> Block 690 #-----| True -> Block 1026 -# 2089| Block 690 -# 2089| r2089_1(glval) = VariableAddress[x690] : -# 2089| mu2089_2(String) = Uninitialized[x690] : &:r2089_1 -# 2089| r2089_3(glval) = FunctionAddress[String] : -# 2089| v2089_4(void) = Call[String] : func:r2089_3, this:r2089_1 -# 2089| mu2089_5(unknown) = ^CallSideEffect : ~m? -# 2089| mu2089_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2089_1 -# 2090| r2090_1(glval) = VariableAddress[x690] : -# 2090| r2090_2(glval) = FunctionAddress[~String] : -# 2090| v2090_3(void) = Call[~String] : func:r2090_2, this:r2090_1 -# 2090| mu2090_4(unknown) = ^CallSideEffect : ~m? -# 2090| v2090_5(void) = ^IndirectReadSideEffect[-1] : &:r2090_1, ~m? -# 2090| mu2090_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2090_1 -# 2090| r2090_7(bool) = Constant[0] : -# 2090| v2090_8(void) = ConditionalBranch : r2090_7 +# 35| Block 690 +# 35| r35_9661(glval) = VariableAddress[x690] : +# 35| mu35_9662(String) = Uninitialized[x690] : &:r35_9661 +# 35| r35_9663(glval) = FunctionAddress[String] : +# 35| v35_9664(void) = Call[String] : func:r35_9663, this:r35_9661 +# 35| mu35_9665(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9666(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9661 +# 35| r35_9667(glval) = VariableAddress[x690] : +# 35| r35_9668(glval) = FunctionAddress[~String] : +# 35| v35_9669(void) = Call[~String] : func:r35_9668, this:r35_9667 +# 35| mu35_9670(unknown) = ^CallSideEffect : ~m? +# 35| v35_9671(void) = ^IndirectReadSideEffect[-1] : &:r35_9667, ~m? +# 35| mu35_9672(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9667 +# 35| r35_9673(bool) = Constant[0] : +# 35| v35_9674(void) = ConditionalBranch : r35_9673 #-----| False -> Block 691 #-----| True -> Block 1026 -# 2092| Block 691 -# 2092| r2092_1(glval) = VariableAddress[x691] : -# 2092| mu2092_2(String) = Uninitialized[x691] : &:r2092_1 -# 2092| r2092_3(glval) = FunctionAddress[String] : -# 2092| v2092_4(void) = Call[String] : func:r2092_3, this:r2092_1 -# 2092| mu2092_5(unknown) = ^CallSideEffect : ~m? -# 2092| mu2092_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2092_1 -# 2093| r2093_1(glval) = VariableAddress[x691] : -# 2093| r2093_2(glval) = FunctionAddress[~String] : -# 2093| v2093_3(void) = Call[~String] : func:r2093_2, this:r2093_1 -# 2093| mu2093_4(unknown) = ^CallSideEffect : ~m? -# 2093| v2093_5(void) = ^IndirectReadSideEffect[-1] : &:r2093_1, ~m? -# 2093| mu2093_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2093_1 -# 2093| r2093_7(bool) = Constant[0] : -# 2093| v2093_8(void) = ConditionalBranch : r2093_7 +# 35| Block 691 +# 35| r35_9675(glval) = VariableAddress[x691] : +# 35| mu35_9676(String) = Uninitialized[x691] : &:r35_9675 +# 35| r35_9677(glval) = FunctionAddress[String] : +# 35| v35_9678(void) = Call[String] : func:r35_9677, this:r35_9675 +# 35| mu35_9679(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9680(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9675 +# 35| r35_9681(glval) = VariableAddress[x691] : +# 35| r35_9682(glval) = FunctionAddress[~String] : +# 35| v35_9683(void) = Call[~String] : func:r35_9682, this:r35_9681 +# 35| mu35_9684(unknown) = ^CallSideEffect : ~m? +# 35| v35_9685(void) = ^IndirectReadSideEffect[-1] : &:r35_9681, ~m? +# 35| mu35_9686(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9681 +# 35| r35_9687(bool) = Constant[0] : +# 35| v35_9688(void) = ConditionalBranch : r35_9687 #-----| False -> Block 692 #-----| True -> Block 1026 -# 2095| Block 692 -# 2095| r2095_1(glval) = VariableAddress[x692] : -# 2095| mu2095_2(String) = Uninitialized[x692] : &:r2095_1 -# 2095| r2095_3(glval) = FunctionAddress[String] : -# 2095| v2095_4(void) = Call[String] : func:r2095_3, this:r2095_1 -# 2095| mu2095_5(unknown) = ^CallSideEffect : ~m? -# 2095| mu2095_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2095_1 -# 2096| r2096_1(glval) = VariableAddress[x692] : -# 2096| r2096_2(glval) = FunctionAddress[~String] : -# 2096| v2096_3(void) = Call[~String] : func:r2096_2, this:r2096_1 -# 2096| mu2096_4(unknown) = ^CallSideEffect : ~m? -# 2096| v2096_5(void) = ^IndirectReadSideEffect[-1] : &:r2096_1, ~m? -# 2096| mu2096_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2096_1 -# 2096| r2096_7(bool) = Constant[0] : -# 2096| v2096_8(void) = ConditionalBranch : r2096_7 +# 35| Block 692 +# 35| r35_9689(glval) = VariableAddress[x692] : +# 35| mu35_9690(String) = Uninitialized[x692] : &:r35_9689 +# 35| r35_9691(glval) = FunctionAddress[String] : +# 35| v35_9692(void) = Call[String] : func:r35_9691, this:r35_9689 +# 35| mu35_9693(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9694(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9689 +# 35| r35_9695(glval) = VariableAddress[x692] : +# 35| r35_9696(glval) = FunctionAddress[~String] : +# 35| v35_9697(void) = Call[~String] : func:r35_9696, this:r35_9695 +# 35| mu35_9698(unknown) = ^CallSideEffect : ~m? +# 35| v35_9699(void) = ^IndirectReadSideEffect[-1] : &:r35_9695, ~m? +# 35| mu35_9700(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9695 +# 35| r35_9701(bool) = Constant[0] : +# 35| v35_9702(void) = ConditionalBranch : r35_9701 #-----| False -> Block 693 #-----| True -> Block 1026 -# 2098| Block 693 -# 2098| r2098_1(glval) = VariableAddress[x693] : -# 2098| mu2098_2(String) = Uninitialized[x693] : &:r2098_1 -# 2098| r2098_3(glval) = FunctionAddress[String] : -# 2098| v2098_4(void) = Call[String] : func:r2098_3, this:r2098_1 -# 2098| mu2098_5(unknown) = ^CallSideEffect : ~m? -# 2098| mu2098_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2098_1 -# 2099| r2099_1(glval) = VariableAddress[x693] : -# 2099| r2099_2(glval) = FunctionAddress[~String] : -# 2099| v2099_3(void) = Call[~String] : func:r2099_2, this:r2099_1 -# 2099| mu2099_4(unknown) = ^CallSideEffect : ~m? -# 2099| v2099_5(void) = ^IndirectReadSideEffect[-1] : &:r2099_1, ~m? -# 2099| mu2099_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2099_1 -# 2099| r2099_7(bool) = Constant[0] : -# 2099| v2099_8(void) = ConditionalBranch : r2099_7 +# 35| Block 693 +# 35| r35_9703(glval) = VariableAddress[x693] : +# 35| mu35_9704(String) = Uninitialized[x693] : &:r35_9703 +# 35| r35_9705(glval) = FunctionAddress[String] : +# 35| v35_9706(void) = Call[String] : func:r35_9705, this:r35_9703 +# 35| mu35_9707(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9708(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9703 +# 35| r35_9709(glval) = VariableAddress[x693] : +# 35| r35_9710(glval) = FunctionAddress[~String] : +# 35| v35_9711(void) = Call[~String] : func:r35_9710, this:r35_9709 +# 35| mu35_9712(unknown) = ^CallSideEffect : ~m? +# 35| v35_9713(void) = ^IndirectReadSideEffect[-1] : &:r35_9709, ~m? +# 35| mu35_9714(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9709 +# 35| r35_9715(bool) = Constant[0] : +# 35| v35_9716(void) = ConditionalBranch : r35_9715 #-----| False -> Block 694 #-----| True -> Block 1026 -# 2101| Block 694 -# 2101| r2101_1(glval) = VariableAddress[x694] : -# 2101| mu2101_2(String) = Uninitialized[x694] : &:r2101_1 -# 2101| r2101_3(glval) = FunctionAddress[String] : -# 2101| v2101_4(void) = Call[String] : func:r2101_3, this:r2101_1 -# 2101| mu2101_5(unknown) = ^CallSideEffect : ~m? -# 2101| mu2101_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2101_1 -# 2102| r2102_1(glval) = VariableAddress[x694] : -# 2102| r2102_2(glval) = FunctionAddress[~String] : -# 2102| v2102_3(void) = Call[~String] : func:r2102_2, this:r2102_1 -# 2102| mu2102_4(unknown) = ^CallSideEffect : ~m? -# 2102| v2102_5(void) = ^IndirectReadSideEffect[-1] : &:r2102_1, ~m? -# 2102| mu2102_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2102_1 -# 2102| r2102_7(bool) = Constant[0] : -# 2102| v2102_8(void) = ConditionalBranch : r2102_7 +# 35| Block 694 +# 35| r35_9717(glval) = VariableAddress[x694] : +# 35| mu35_9718(String) = Uninitialized[x694] : &:r35_9717 +# 35| r35_9719(glval) = FunctionAddress[String] : +# 35| v35_9720(void) = Call[String] : func:r35_9719, this:r35_9717 +# 35| mu35_9721(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9722(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9717 +# 35| r35_9723(glval) = VariableAddress[x694] : +# 35| r35_9724(glval) = FunctionAddress[~String] : +# 35| v35_9725(void) = Call[~String] : func:r35_9724, this:r35_9723 +# 35| mu35_9726(unknown) = ^CallSideEffect : ~m? +# 35| v35_9727(void) = ^IndirectReadSideEffect[-1] : &:r35_9723, ~m? +# 35| mu35_9728(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9723 +# 35| r35_9729(bool) = Constant[0] : +# 35| v35_9730(void) = ConditionalBranch : r35_9729 #-----| False -> Block 695 #-----| True -> Block 1026 -# 2104| Block 695 -# 2104| r2104_1(glval) = VariableAddress[x695] : -# 2104| mu2104_2(String) = Uninitialized[x695] : &:r2104_1 -# 2104| r2104_3(glval) = FunctionAddress[String] : -# 2104| v2104_4(void) = Call[String] : func:r2104_3, this:r2104_1 -# 2104| mu2104_5(unknown) = ^CallSideEffect : ~m? -# 2104| mu2104_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2104_1 -# 2105| r2105_1(glval) = VariableAddress[x695] : -# 2105| r2105_2(glval) = FunctionAddress[~String] : -# 2105| v2105_3(void) = Call[~String] : func:r2105_2, this:r2105_1 -# 2105| mu2105_4(unknown) = ^CallSideEffect : ~m? -# 2105| v2105_5(void) = ^IndirectReadSideEffect[-1] : &:r2105_1, ~m? -# 2105| mu2105_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2105_1 -# 2105| r2105_7(bool) = Constant[0] : -# 2105| v2105_8(void) = ConditionalBranch : r2105_7 +# 35| Block 695 +# 35| r35_9731(glval) = VariableAddress[x695] : +# 35| mu35_9732(String) = Uninitialized[x695] : &:r35_9731 +# 35| r35_9733(glval) = FunctionAddress[String] : +# 35| v35_9734(void) = Call[String] : func:r35_9733, this:r35_9731 +# 35| mu35_9735(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9736(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9731 +# 35| r35_9737(glval) = VariableAddress[x695] : +# 35| r35_9738(glval) = FunctionAddress[~String] : +# 35| v35_9739(void) = Call[~String] : func:r35_9738, this:r35_9737 +# 35| mu35_9740(unknown) = ^CallSideEffect : ~m? +# 35| v35_9741(void) = ^IndirectReadSideEffect[-1] : &:r35_9737, ~m? +# 35| mu35_9742(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9737 +# 35| r35_9743(bool) = Constant[0] : +# 35| v35_9744(void) = ConditionalBranch : r35_9743 #-----| False -> Block 696 #-----| True -> Block 1026 -# 2107| Block 696 -# 2107| r2107_1(glval) = VariableAddress[x696] : -# 2107| mu2107_2(String) = Uninitialized[x696] : &:r2107_1 -# 2107| r2107_3(glval) = FunctionAddress[String] : -# 2107| v2107_4(void) = Call[String] : func:r2107_3, this:r2107_1 -# 2107| mu2107_5(unknown) = ^CallSideEffect : ~m? -# 2107| mu2107_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2107_1 -# 2108| r2108_1(glval) = VariableAddress[x696] : -# 2108| r2108_2(glval) = FunctionAddress[~String] : -# 2108| v2108_3(void) = Call[~String] : func:r2108_2, this:r2108_1 -# 2108| mu2108_4(unknown) = ^CallSideEffect : ~m? -# 2108| v2108_5(void) = ^IndirectReadSideEffect[-1] : &:r2108_1, ~m? -# 2108| mu2108_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2108_1 -# 2108| r2108_7(bool) = Constant[0] : -# 2108| v2108_8(void) = ConditionalBranch : r2108_7 +# 35| Block 696 +# 35| r35_9745(glval) = VariableAddress[x696] : +# 35| mu35_9746(String) = Uninitialized[x696] : &:r35_9745 +# 35| r35_9747(glval) = FunctionAddress[String] : +# 35| v35_9748(void) = Call[String] : func:r35_9747, this:r35_9745 +# 35| mu35_9749(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9750(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9745 +# 35| r35_9751(glval) = VariableAddress[x696] : +# 35| r35_9752(glval) = FunctionAddress[~String] : +# 35| v35_9753(void) = Call[~String] : func:r35_9752, this:r35_9751 +# 35| mu35_9754(unknown) = ^CallSideEffect : ~m? +# 35| v35_9755(void) = ^IndirectReadSideEffect[-1] : &:r35_9751, ~m? +# 35| mu35_9756(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9751 +# 35| r35_9757(bool) = Constant[0] : +# 35| v35_9758(void) = ConditionalBranch : r35_9757 #-----| False -> Block 697 #-----| True -> Block 1026 -# 2110| Block 697 -# 2110| r2110_1(glval) = VariableAddress[x697] : -# 2110| mu2110_2(String) = Uninitialized[x697] : &:r2110_1 -# 2110| r2110_3(glval) = FunctionAddress[String] : -# 2110| v2110_4(void) = Call[String] : func:r2110_3, this:r2110_1 -# 2110| mu2110_5(unknown) = ^CallSideEffect : ~m? -# 2110| mu2110_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2110_1 -# 2111| r2111_1(glval) = VariableAddress[x697] : -# 2111| r2111_2(glval) = FunctionAddress[~String] : -# 2111| v2111_3(void) = Call[~String] : func:r2111_2, this:r2111_1 -# 2111| mu2111_4(unknown) = ^CallSideEffect : ~m? -# 2111| v2111_5(void) = ^IndirectReadSideEffect[-1] : &:r2111_1, ~m? -# 2111| mu2111_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2111_1 -# 2111| r2111_7(bool) = Constant[0] : -# 2111| v2111_8(void) = ConditionalBranch : r2111_7 +# 35| Block 697 +# 35| r35_9759(glval) = VariableAddress[x697] : +# 35| mu35_9760(String) = Uninitialized[x697] : &:r35_9759 +# 35| r35_9761(glval) = FunctionAddress[String] : +# 35| v35_9762(void) = Call[String] : func:r35_9761, this:r35_9759 +# 35| mu35_9763(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9764(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9759 +# 35| r35_9765(glval) = VariableAddress[x697] : +# 35| r35_9766(glval) = FunctionAddress[~String] : +# 35| v35_9767(void) = Call[~String] : func:r35_9766, this:r35_9765 +# 35| mu35_9768(unknown) = ^CallSideEffect : ~m? +# 35| v35_9769(void) = ^IndirectReadSideEffect[-1] : &:r35_9765, ~m? +# 35| mu35_9770(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9765 +# 35| r35_9771(bool) = Constant[0] : +# 35| v35_9772(void) = ConditionalBranch : r35_9771 #-----| False -> Block 698 #-----| True -> Block 1026 -# 2113| Block 698 -# 2113| r2113_1(glval) = VariableAddress[x698] : -# 2113| mu2113_2(String) = Uninitialized[x698] : &:r2113_1 -# 2113| r2113_3(glval) = FunctionAddress[String] : -# 2113| v2113_4(void) = Call[String] : func:r2113_3, this:r2113_1 -# 2113| mu2113_5(unknown) = ^CallSideEffect : ~m? -# 2113| mu2113_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2113_1 -# 2114| r2114_1(glval) = VariableAddress[x698] : -# 2114| r2114_2(glval) = FunctionAddress[~String] : -# 2114| v2114_3(void) = Call[~String] : func:r2114_2, this:r2114_1 -# 2114| mu2114_4(unknown) = ^CallSideEffect : ~m? -# 2114| v2114_5(void) = ^IndirectReadSideEffect[-1] : &:r2114_1, ~m? -# 2114| mu2114_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2114_1 -# 2114| r2114_7(bool) = Constant[0] : -# 2114| v2114_8(void) = ConditionalBranch : r2114_7 +# 35| Block 698 +# 35| r35_9773(glval) = VariableAddress[x698] : +# 35| mu35_9774(String) = Uninitialized[x698] : &:r35_9773 +# 35| r35_9775(glval) = FunctionAddress[String] : +# 35| v35_9776(void) = Call[String] : func:r35_9775, this:r35_9773 +# 35| mu35_9777(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9778(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9773 +# 35| r35_9779(glval) = VariableAddress[x698] : +# 35| r35_9780(glval) = FunctionAddress[~String] : +# 35| v35_9781(void) = Call[~String] : func:r35_9780, this:r35_9779 +# 35| mu35_9782(unknown) = ^CallSideEffect : ~m? +# 35| v35_9783(void) = ^IndirectReadSideEffect[-1] : &:r35_9779, ~m? +# 35| mu35_9784(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9779 +# 35| r35_9785(bool) = Constant[0] : +# 35| v35_9786(void) = ConditionalBranch : r35_9785 #-----| False -> Block 699 #-----| True -> Block 1026 -# 2116| Block 699 -# 2116| r2116_1(glval) = VariableAddress[x699] : -# 2116| mu2116_2(String) = Uninitialized[x699] : &:r2116_1 -# 2116| r2116_3(glval) = FunctionAddress[String] : -# 2116| v2116_4(void) = Call[String] : func:r2116_3, this:r2116_1 -# 2116| mu2116_5(unknown) = ^CallSideEffect : ~m? -# 2116| mu2116_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2116_1 -# 2117| r2117_1(glval) = VariableAddress[x699] : -# 2117| r2117_2(glval) = FunctionAddress[~String] : -# 2117| v2117_3(void) = Call[~String] : func:r2117_2, this:r2117_1 -# 2117| mu2117_4(unknown) = ^CallSideEffect : ~m? -# 2117| v2117_5(void) = ^IndirectReadSideEffect[-1] : &:r2117_1, ~m? -# 2117| mu2117_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2117_1 -# 2117| r2117_7(bool) = Constant[0] : -# 2117| v2117_8(void) = ConditionalBranch : r2117_7 +# 35| Block 699 +# 35| r35_9787(glval) = VariableAddress[x699] : +# 35| mu35_9788(String) = Uninitialized[x699] : &:r35_9787 +# 35| r35_9789(glval) = FunctionAddress[String] : +# 35| v35_9790(void) = Call[String] : func:r35_9789, this:r35_9787 +# 35| mu35_9791(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9792(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9787 +# 35| r35_9793(glval) = VariableAddress[x699] : +# 35| r35_9794(glval) = FunctionAddress[~String] : +# 35| v35_9795(void) = Call[~String] : func:r35_9794, this:r35_9793 +# 35| mu35_9796(unknown) = ^CallSideEffect : ~m? +# 35| v35_9797(void) = ^IndirectReadSideEffect[-1] : &:r35_9793, ~m? +# 35| mu35_9798(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9793 +# 35| r35_9799(bool) = Constant[0] : +# 35| v35_9800(void) = ConditionalBranch : r35_9799 #-----| False -> Block 700 #-----| True -> Block 1026 -# 2119| Block 700 -# 2119| r2119_1(glval) = VariableAddress[x700] : -# 2119| mu2119_2(String) = Uninitialized[x700] : &:r2119_1 -# 2119| r2119_3(glval) = FunctionAddress[String] : -# 2119| v2119_4(void) = Call[String] : func:r2119_3, this:r2119_1 -# 2119| mu2119_5(unknown) = ^CallSideEffect : ~m? -# 2119| mu2119_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2119_1 -# 2120| r2120_1(glval) = VariableAddress[x700] : -# 2120| r2120_2(glval) = FunctionAddress[~String] : -# 2120| v2120_3(void) = Call[~String] : func:r2120_2, this:r2120_1 -# 2120| mu2120_4(unknown) = ^CallSideEffect : ~m? -# 2120| v2120_5(void) = ^IndirectReadSideEffect[-1] : &:r2120_1, ~m? -# 2120| mu2120_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2120_1 -# 2120| r2120_7(bool) = Constant[0] : -# 2120| v2120_8(void) = ConditionalBranch : r2120_7 +# 35| Block 700 +# 35| r35_9801(glval) = VariableAddress[x700] : +# 35| mu35_9802(String) = Uninitialized[x700] : &:r35_9801 +# 35| r35_9803(glval) = FunctionAddress[String] : +# 35| v35_9804(void) = Call[String] : func:r35_9803, this:r35_9801 +# 35| mu35_9805(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9806(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9801 +# 35| r35_9807(glval) = VariableAddress[x700] : +# 35| r35_9808(glval) = FunctionAddress[~String] : +# 35| v35_9809(void) = Call[~String] : func:r35_9808, this:r35_9807 +# 35| mu35_9810(unknown) = ^CallSideEffect : ~m? +# 35| v35_9811(void) = ^IndirectReadSideEffect[-1] : &:r35_9807, ~m? +# 35| mu35_9812(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9807 +# 35| r35_9813(bool) = Constant[0] : +# 35| v35_9814(void) = ConditionalBranch : r35_9813 #-----| False -> Block 701 #-----| True -> Block 1026 -# 2122| Block 701 -# 2122| r2122_1(glval) = VariableAddress[x701] : -# 2122| mu2122_2(String) = Uninitialized[x701] : &:r2122_1 -# 2122| r2122_3(glval) = FunctionAddress[String] : -# 2122| v2122_4(void) = Call[String] : func:r2122_3, this:r2122_1 -# 2122| mu2122_5(unknown) = ^CallSideEffect : ~m? -# 2122| mu2122_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2122_1 -# 2123| r2123_1(glval) = VariableAddress[x701] : -# 2123| r2123_2(glval) = FunctionAddress[~String] : -# 2123| v2123_3(void) = Call[~String] : func:r2123_2, this:r2123_1 -# 2123| mu2123_4(unknown) = ^CallSideEffect : ~m? -# 2123| v2123_5(void) = ^IndirectReadSideEffect[-1] : &:r2123_1, ~m? -# 2123| mu2123_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2123_1 -# 2123| r2123_7(bool) = Constant[0] : -# 2123| v2123_8(void) = ConditionalBranch : r2123_7 +# 35| Block 701 +# 35| r35_9815(glval) = VariableAddress[x701] : +# 35| mu35_9816(String) = Uninitialized[x701] : &:r35_9815 +# 35| r35_9817(glval) = FunctionAddress[String] : +# 35| v35_9818(void) = Call[String] : func:r35_9817, this:r35_9815 +# 35| mu35_9819(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9820(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9815 +# 35| r35_9821(glval) = VariableAddress[x701] : +# 35| r35_9822(glval) = FunctionAddress[~String] : +# 35| v35_9823(void) = Call[~String] : func:r35_9822, this:r35_9821 +# 35| mu35_9824(unknown) = ^CallSideEffect : ~m? +# 35| v35_9825(void) = ^IndirectReadSideEffect[-1] : &:r35_9821, ~m? +# 35| mu35_9826(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9821 +# 35| r35_9827(bool) = Constant[0] : +# 35| v35_9828(void) = ConditionalBranch : r35_9827 #-----| False -> Block 702 #-----| True -> Block 1026 -# 2125| Block 702 -# 2125| r2125_1(glval) = VariableAddress[x702] : -# 2125| mu2125_2(String) = Uninitialized[x702] : &:r2125_1 -# 2125| r2125_3(glval) = FunctionAddress[String] : -# 2125| v2125_4(void) = Call[String] : func:r2125_3, this:r2125_1 -# 2125| mu2125_5(unknown) = ^CallSideEffect : ~m? -# 2125| mu2125_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2125_1 -# 2126| r2126_1(glval) = VariableAddress[x702] : -# 2126| r2126_2(glval) = FunctionAddress[~String] : -# 2126| v2126_3(void) = Call[~String] : func:r2126_2, this:r2126_1 -# 2126| mu2126_4(unknown) = ^CallSideEffect : ~m? -# 2126| v2126_5(void) = ^IndirectReadSideEffect[-1] : &:r2126_1, ~m? -# 2126| mu2126_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2126_1 -# 2126| r2126_7(bool) = Constant[0] : -# 2126| v2126_8(void) = ConditionalBranch : r2126_7 +# 35| Block 702 +# 35| r35_9829(glval) = VariableAddress[x702] : +# 35| mu35_9830(String) = Uninitialized[x702] : &:r35_9829 +# 35| r35_9831(glval) = FunctionAddress[String] : +# 35| v35_9832(void) = Call[String] : func:r35_9831, this:r35_9829 +# 35| mu35_9833(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9834(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9829 +# 35| r35_9835(glval) = VariableAddress[x702] : +# 35| r35_9836(glval) = FunctionAddress[~String] : +# 35| v35_9837(void) = Call[~String] : func:r35_9836, this:r35_9835 +# 35| mu35_9838(unknown) = ^CallSideEffect : ~m? +# 35| v35_9839(void) = ^IndirectReadSideEffect[-1] : &:r35_9835, ~m? +# 35| mu35_9840(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9835 +# 35| r35_9841(bool) = Constant[0] : +# 35| v35_9842(void) = ConditionalBranch : r35_9841 #-----| False -> Block 703 #-----| True -> Block 1026 -# 2128| Block 703 -# 2128| r2128_1(glval) = VariableAddress[x703] : -# 2128| mu2128_2(String) = Uninitialized[x703] : &:r2128_1 -# 2128| r2128_3(glval) = FunctionAddress[String] : -# 2128| v2128_4(void) = Call[String] : func:r2128_3, this:r2128_1 -# 2128| mu2128_5(unknown) = ^CallSideEffect : ~m? -# 2128| mu2128_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2128_1 -# 2129| r2129_1(glval) = VariableAddress[x703] : -# 2129| r2129_2(glval) = FunctionAddress[~String] : -# 2129| v2129_3(void) = Call[~String] : func:r2129_2, this:r2129_1 -# 2129| mu2129_4(unknown) = ^CallSideEffect : ~m? -# 2129| v2129_5(void) = ^IndirectReadSideEffect[-1] : &:r2129_1, ~m? -# 2129| mu2129_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2129_1 -# 2129| r2129_7(bool) = Constant[0] : -# 2129| v2129_8(void) = ConditionalBranch : r2129_7 +# 35| Block 703 +# 35| r35_9843(glval) = VariableAddress[x703] : +# 35| mu35_9844(String) = Uninitialized[x703] : &:r35_9843 +# 35| r35_9845(glval) = FunctionAddress[String] : +# 35| v35_9846(void) = Call[String] : func:r35_9845, this:r35_9843 +# 35| mu35_9847(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9848(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9843 +# 35| r35_9849(glval) = VariableAddress[x703] : +# 35| r35_9850(glval) = FunctionAddress[~String] : +# 35| v35_9851(void) = Call[~String] : func:r35_9850, this:r35_9849 +# 35| mu35_9852(unknown) = ^CallSideEffect : ~m? +# 35| v35_9853(void) = ^IndirectReadSideEffect[-1] : &:r35_9849, ~m? +# 35| mu35_9854(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9849 +# 35| r35_9855(bool) = Constant[0] : +# 35| v35_9856(void) = ConditionalBranch : r35_9855 #-----| False -> Block 704 #-----| True -> Block 1026 -# 2131| Block 704 -# 2131| r2131_1(glval) = VariableAddress[x704] : -# 2131| mu2131_2(String) = Uninitialized[x704] : &:r2131_1 -# 2131| r2131_3(glval) = FunctionAddress[String] : -# 2131| v2131_4(void) = Call[String] : func:r2131_3, this:r2131_1 -# 2131| mu2131_5(unknown) = ^CallSideEffect : ~m? -# 2131| mu2131_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2131_1 -# 2132| r2132_1(glval) = VariableAddress[x704] : -# 2132| r2132_2(glval) = FunctionAddress[~String] : -# 2132| v2132_3(void) = Call[~String] : func:r2132_2, this:r2132_1 -# 2132| mu2132_4(unknown) = ^CallSideEffect : ~m? -# 2132| v2132_5(void) = ^IndirectReadSideEffect[-1] : &:r2132_1, ~m? -# 2132| mu2132_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2132_1 -# 2132| r2132_7(bool) = Constant[0] : -# 2132| v2132_8(void) = ConditionalBranch : r2132_7 +# 35| Block 704 +# 35| r35_9857(glval) = VariableAddress[x704] : +# 35| mu35_9858(String) = Uninitialized[x704] : &:r35_9857 +# 35| r35_9859(glval) = FunctionAddress[String] : +# 35| v35_9860(void) = Call[String] : func:r35_9859, this:r35_9857 +# 35| mu35_9861(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9862(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9857 +# 35| r35_9863(glval) = VariableAddress[x704] : +# 35| r35_9864(glval) = FunctionAddress[~String] : +# 35| v35_9865(void) = Call[~String] : func:r35_9864, this:r35_9863 +# 35| mu35_9866(unknown) = ^CallSideEffect : ~m? +# 35| v35_9867(void) = ^IndirectReadSideEffect[-1] : &:r35_9863, ~m? +# 35| mu35_9868(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9863 +# 35| r35_9869(bool) = Constant[0] : +# 35| v35_9870(void) = ConditionalBranch : r35_9869 #-----| False -> Block 705 #-----| True -> Block 1026 -# 2134| Block 705 -# 2134| r2134_1(glval) = VariableAddress[x705] : -# 2134| mu2134_2(String) = Uninitialized[x705] : &:r2134_1 -# 2134| r2134_3(glval) = FunctionAddress[String] : -# 2134| v2134_4(void) = Call[String] : func:r2134_3, this:r2134_1 -# 2134| mu2134_5(unknown) = ^CallSideEffect : ~m? -# 2134| mu2134_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2134_1 -# 2135| r2135_1(glval) = VariableAddress[x705] : -# 2135| r2135_2(glval) = FunctionAddress[~String] : -# 2135| v2135_3(void) = Call[~String] : func:r2135_2, this:r2135_1 -# 2135| mu2135_4(unknown) = ^CallSideEffect : ~m? -# 2135| v2135_5(void) = ^IndirectReadSideEffect[-1] : &:r2135_1, ~m? -# 2135| mu2135_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2135_1 -# 2135| r2135_7(bool) = Constant[0] : -# 2135| v2135_8(void) = ConditionalBranch : r2135_7 +# 35| Block 705 +# 35| r35_9871(glval) = VariableAddress[x705] : +# 35| mu35_9872(String) = Uninitialized[x705] : &:r35_9871 +# 35| r35_9873(glval) = FunctionAddress[String] : +# 35| v35_9874(void) = Call[String] : func:r35_9873, this:r35_9871 +# 35| mu35_9875(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9876(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9871 +# 35| r35_9877(glval) = VariableAddress[x705] : +# 35| r35_9878(glval) = FunctionAddress[~String] : +# 35| v35_9879(void) = Call[~String] : func:r35_9878, this:r35_9877 +# 35| mu35_9880(unknown) = ^CallSideEffect : ~m? +# 35| v35_9881(void) = ^IndirectReadSideEffect[-1] : &:r35_9877, ~m? +# 35| mu35_9882(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9877 +# 35| r35_9883(bool) = Constant[0] : +# 35| v35_9884(void) = ConditionalBranch : r35_9883 #-----| False -> Block 706 #-----| True -> Block 1026 -# 2137| Block 706 -# 2137| r2137_1(glval) = VariableAddress[x706] : -# 2137| mu2137_2(String) = Uninitialized[x706] : &:r2137_1 -# 2137| r2137_3(glval) = FunctionAddress[String] : -# 2137| v2137_4(void) = Call[String] : func:r2137_3, this:r2137_1 -# 2137| mu2137_5(unknown) = ^CallSideEffect : ~m? -# 2137| mu2137_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2137_1 -# 2138| r2138_1(glval) = VariableAddress[x706] : -# 2138| r2138_2(glval) = FunctionAddress[~String] : -# 2138| v2138_3(void) = Call[~String] : func:r2138_2, this:r2138_1 -# 2138| mu2138_4(unknown) = ^CallSideEffect : ~m? -# 2138| v2138_5(void) = ^IndirectReadSideEffect[-1] : &:r2138_1, ~m? -# 2138| mu2138_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2138_1 -# 2138| r2138_7(bool) = Constant[0] : -# 2138| v2138_8(void) = ConditionalBranch : r2138_7 +# 35| Block 706 +# 35| r35_9885(glval) = VariableAddress[x706] : +# 35| mu35_9886(String) = Uninitialized[x706] : &:r35_9885 +# 35| r35_9887(glval) = FunctionAddress[String] : +# 35| v35_9888(void) = Call[String] : func:r35_9887, this:r35_9885 +# 35| mu35_9889(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9890(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9885 +# 35| r35_9891(glval) = VariableAddress[x706] : +# 35| r35_9892(glval) = FunctionAddress[~String] : +# 35| v35_9893(void) = Call[~String] : func:r35_9892, this:r35_9891 +# 35| mu35_9894(unknown) = ^CallSideEffect : ~m? +# 35| v35_9895(void) = ^IndirectReadSideEffect[-1] : &:r35_9891, ~m? +# 35| mu35_9896(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9891 +# 35| r35_9897(bool) = Constant[0] : +# 35| v35_9898(void) = ConditionalBranch : r35_9897 #-----| False -> Block 707 #-----| True -> Block 1026 -# 2140| Block 707 -# 2140| r2140_1(glval) = VariableAddress[x707] : -# 2140| mu2140_2(String) = Uninitialized[x707] : &:r2140_1 -# 2140| r2140_3(glval) = FunctionAddress[String] : -# 2140| v2140_4(void) = Call[String] : func:r2140_3, this:r2140_1 -# 2140| mu2140_5(unknown) = ^CallSideEffect : ~m? -# 2140| mu2140_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2140_1 -# 2141| r2141_1(glval) = VariableAddress[x707] : -# 2141| r2141_2(glval) = FunctionAddress[~String] : -# 2141| v2141_3(void) = Call[~String] : func:r2141_2, this:r2141_1 -# 2141| mu2141_4(unknown) = ^CallSideEffect : ~m? -# 2141| v2141_5(void) = ^IndirectReadSideEffect[-1] : &:r2141_1, ~m? -# 2141| mu2141_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2141_1 -# 2141| r2141_7(bool) = Constant[0] : -# 2141| v2141_8(void) = ConditionalBranch : r2141_7 +# 35| Block 707 +# 35| r35_9899(glval) = VariableAddress[x707] : +# 35| mu35_9900(String) = Uninitialized[x707] : &:r35_9899 +# 35| r35_9901(glval) = FunctionAddress[String] : +# 35| v35_9902(void) = Call[String] : func:r35_9901, this:r35_9899 +# 35| mu35_9903(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9904(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9899 +# 35| r35_9905(glval) = VariableAddress[x707] : +# 35| r35_9906(glval) = FunctionAddress[~String] : +# 35| v35_9907(void) = Call[~String] : func:r35_9906, this:r35_9905 +# 35| mu35_9908(unknown) = ^CallSideEffect : ~m? +# 35| v35_9909(void) = ^IndirectReadSideEffect[-1] : &:r35_9905, ~m? +# 35| mu35_9910(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9905 +# 35| r35_9911(bool) = Constant[0] : +# 35| v35_9912(void) = ConditionalBranch : r35_9911 #-----| False -> Block 708 #-----| True -> Block 1026 -# 2143| Block 708 -# 2143| r2143_1(glval) = VariableAddress[x708] : -# 2143| mu2143_2(String) = Uninitialized[x708] : &:r2143_1 -# 2143| r2143_3(glval) = FunctionAddress[String] : -# 2143| v2143_4(void) = Call[String] : func:r2143_3, this:r2143_1 -# 2143| mu2143_5(unknown) = ^CallSideEffect : ~m? -# 2143| mu2143_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2143_1 -# 2144| r2144_1(glval) = VariableAddress[x708] : -# 2144| r2144_2(glval) = FunctionAddress[~String] : -# 2144| v2144_3(void) = Call[~String] : func:r2144_2, this:r2144_1 -# 2144| mu2144_4(unknown) = ^CallSideEffect : ~m? -# 2144| v2144_5(void) = ^IndirectReadSideEffect[-1] : &:r2144_1, ~m? -# 2144| mu2144_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2144_1 -# 2144| r2144_7(bool) = Constant[0] : -# 2144| v2144_8(void) = ConditionalBranch : r2144_7 +# 35| Block 708 +# 35| r35_9913(glval) = VariableAddress[x708] : +# 35| mu35_9914(String) = Uninitialized[x708] : &:r35_9913 +# 35| r35_9915(glval) = FunctionAddress[String] : +# 35| v35_9916(void) = Call[String] : func:r35_9915, this:r35_9913 +# 35| mu35_9917(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9918(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9913 +# 35| r35_9919(glval) = VariableAddress[x708] : +# 35| r35_9920(glval) = FunctionAddress[~String] : +# 35| v35_9921(void) = Call[~String] : func:r35_9920, this:r35_9919 +# 35| mu35_9922(unknown) = ^CallSideEffect : ~m? +# 35| v35_9923(void) = ^IndirectReadSideEffect[-1] : &:r35_9919, ~m? +# 35| mu35_9924(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9919 +# 35| r35_9925(bool) = Constant[0] : +# 35| v35_9926(void) = ConditionalBranch : r35_9925 #-----| False -> Block 709 #-----| True -> Block 1026 -# 2146| Block 709 -# 2146| r2146_1(glval) = VariableAddress[x709] : -# 2146| mu2146_2(String) = Uninitialized[x709] : &:r2146_1 -# 2146| r2146_3(glval) = FunctionAddress[String] : -# 2146| v2146_4(void) = Call[String] : func:r2146_3, this:r2146_1 -# 2146| mu2146_5(unknown) = ^CallSideEffect : ~m? -# 2146| mu2146_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2146_1 -# 2147| r2147_1(glval) = VariableAddress[x709] : -# 2147| r2147_2(glval) = FunctionAddress[~String] : -# 2147| v2147_3(void) = Call[~String] : func:r2147_2, this:r2147_1 -# 2147| mu2147_4(unknown) = ^CallSideEffect : ~m? -# 2147| v2147_5(void) = ^IndirectReadSideEffect[-1] : &:r2147_1, ~m? -# 2147| mu2147_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2147_1 -# 2147| r2147_7(bool) = Constant[0] : -# 2147| v2147_8(void) = ConditionalBranch : r2147_7 +# 35| Block 709 +# 35| r35_9927(glval) = VariableAddress[x709] : +# 35| mu35_9928(String) = Uninitialized[x709] : &:r35_9927 +# 35| r35_9929(glval) = FunctionAddress[String] : +# 35| v35_9930(void) = Call[String] : func:r35_9929, this:r35_9927 +# 35| mu35_9931(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9932(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9927 +# 35| r35_9933(glval) = VariableAddress[x709] : +# 35| r35_9934(glval) = FunctionAddress[~String] : +# 35| v35_9935(void) = Call[~String] : func:r35_9934, this:r35_9933 +# 35| mu35_9936(unknown) = ^CallSideEffect : ~m? +# 35| v35_9937(void) = ^IndirectReadSideEffect[-1] : &:r35_9933, ~m? +# 35| mu35_9938(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9933 +# 35| r35_9939(bool) = Constant[0] : +# 35| v35_9940(void) = ConditionalBranch : r35_9939 #-----| False -> Block 710 #-----| True -> Block 1026 -# 2149| Block 710 -# 2149| r2149_1(glval) = VariableAddress[x710] : -# 2149| mu2149_2(String) = Uninitialized[x710] : &:r2149_1 -# 2149| r2149_3(glval) = FunctionAddress[String] : -# 2149| v2149_4(void) = Call[String] : func:r2149_3, this:r2149_1 -# 2149| mu2149_5(unknown) = ^CallSideEffect : ~m? -# 2149| mu2149_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2149_1 -# 2150| r2150_1(glval) = VariableAddress[x710] : -# 2150| r2150_2(glval) = FunctionAddress[~String] : -# 2150| v2150_3(void) = Call[~String] : func:r2150_2, this:r2150_1 -# 2150| mu2150_4(unknown) = ^CallSideEffect : ~m? -# 2150| v2150_5(void) = ^IndirectReadSideEffect[-1] : &:r2150_1, ~m? -# 2150| mu2150_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2150_1 -# 2150| r2150_7(bool) = Constant[0] : -# 2150| v2150_8(void) = ConditionalBranch : r2150_7 +# 35| Block 710 +# 35| r35_9941(glval) = VariableAddress[x710] : +# 35| mu35_9942(String) = Uninitialized[x710] : &:r35_9941 +# 35| r35_9943(glval) = FunctionAddress[String] : +# 35| v35_9944(void) = Call[String] : func:r35_9943, this:r35_9941 +# 35| mu35_9945(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9946(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9941 +# 35| r35_9947(glval) = VariableAddress[x710] : +# 35| r35_9948(glval) = FunctionAddress[~String] : +# 35| v35_9949(void) = Call[~String] : func:r35_9948, this:r35_9947 +# 35| mu35_9950(unknown) = ^CallSideEffect : ~m? +# 35| v35_9951(void) = ^IndirectReadSideEffect[-1] : &:r35_9947, ~m? +# 35| mu35_9952(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9947 +# 35| r35_9953(bool) = Constant[0] : +# 35| v35_9954(void) = ConditionalBranch : r35_9953 #-----| False -> Block 711 #-----| True -> Block 1026 -# 2152| Block 711 -# 2152| r2152_1(glval) = VariableAddress[x711] : -# 2152| mu2152_2(String) = Uninitialized[x711] : &:r2152_1 -# 2152| r2152_3(glval) = FunctionAddress[String] : -# 2152| v2152_4(void) = Call[String] : func:r2152_3, this:r2152_1 -# 2152| mu2152_5(unknown) = ^CallSideEffect : ~m? -# 2152| mu2152_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2152_1 -# 2153| r2153_1(glval) = VariableAddress[x711] : -# 2153| r2153_2(glval) = FunctionAddress[~String] : -# 2153| v2153_3(void) = Call[~String] : func:r2153_2, this:r2153_1 -# 2153| mu2153_4(unknown) = ^CallSideEffect : ~m? -# 2153| v2153_5(void) = ^IndirectReadSideEffect[-1] : &:r2153_1, ~m? -# 2153| mu2153_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2153_1 -# 2153| r2153_7(bool) = Constant[0] : -# 2153| v2153_8(void) = ConditionalBranch : r2153_7 +# 35| Block 711 +# 35| r35_9955(glval) = VariableAddress[x711] : +# 35| mu35_9956(String) = Uninitialized[x711] : &:r35_9955 +# 35| r35_9957(glval) = FunctionAddress[String] : +# 35| v35_9958(void) = Call[String] : func:r35_9957, this:r35_9955 +# 35| mu35_9959(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9960(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9955 +# 35| r35_9961(glval) = VariableAddress[x711] : +# 35| r35_9962(glval) = FunctionAddress[~String] : +# 35| v35_9963(void) = Call[~String] : func:r35_9962, this:r35_9961 +# 35| mu35_9964(unknown) = ^CallSideEffect : ~m? +# 35| v35_9965(void) = ^IndirectReadSideEffect[-1] : &:r35_9961, ~m? +# 35| mu35_9966(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9961 +# 35| r35_9967(bool) = Constant[0] : +# 35| v35_9968(void) = ConditionalBranch : r35_9967 #-----| False -> Block 712 #-----| True -> Block 1026 -# 2155| Block 712 -# 2155| r2155_1(glval) = VariableAddress[x712] : -# 2155| mu2155_2(String) = Uninitialized[x712] : &:r2155_1 -# 2155| r2155_3(glval) = FunctionAddress[String] : -# 2155| v2155_4(void) = Call[String] : func:r2155_3, this:r2155_1 -# 2155| mu2155_5(unknown) = ^CallSideEffect : ~m? -# 2155| mu2155_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2155_1 -# 2156| r2156_1(glval) = VariableAddress[x712] : -# 2156| r2156_2(glval) = FunctionAddress[~String] : -# 2156| v2156_3(void) = Call[~String] : func:r2156_2, this:r2156_1 -# 2156| mu2156_4(unknown) = ^CallSideEffect : ~m? -# 2156| v2156_5(void) = ^IndirectReadSideEffect[-1] : &:r2156_1, ~m? -# 2156| mu2156_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2156_1 -# 2156| r2156_7(bool) = Constant[0] : -# 2156| v2156_8(void) = ConditionalBranch : r2156_7 +# 35| Block 712 +# 35| r35_9969(glval) = VariableAddress[x712] : +# 35| mu35_9970(String) = Uninitialized[x712] : &:r35_9969 +# 35| r35_9971(glval) = FunctionAddress[String] : +# 35| v35_9972(void) = Call[String] : func:r35_9971, this:r35_9969 +# 35| mu35_9973(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9974(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9969 +# 35| r35_9975(glval) = VariableAddress[x712] : +# 35| r35_9976(glval) = FunctionAddress[~String] : +# 35| v35_9977(void) = Call[~String] : func:r35_9976, this:r35_9975 +# 35| mu35_9978(unknown) = ^CallSideEffect : ~m? +# 35| v35_9979(void) = ^IndirectReadSideEffect[-1] : &:r35_9975, ~m? +# 35| mu35_9980(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9975 +# 35| r35_9981(bool) = Constant[0] : +# 35| v35_9982(void) = ConditionalBranch : r35_9981 #-----| False -> Block 713 #-----| True -> Block 1026 -# 2158| Block 713 -# 2158| r2158_1(glval) = VariableAddress[x713] : -# 2158| mu2158_2(String) = Uninitialized[x713] : &:r2158_1 -# 2158| r2158_3(glval) = FunctionAddress[String] : -# 2158| v2158_4(void) = Call[String] : func:r2158_3, this:r2158_1 -# 2158| mu2158_5(unknown) = ^CallSideEffect : ~m? -# 2158| mu2158_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2158_1 -# 2159| r2159_1(glval) = VariableAddress[x713] : -# 2159| r2159_2(glval) = FunctionAddress[~String] : -# 2159| v2159_3(void) = Call[~String] : func:r2159_2, this:r2159_1 -# 2159| mu2159_4(unknown) = ^CallSideEffect : ~m? -# 2159| v2159_5(void) = ^IndirectReadSideEffect[-1] : &:r2159_1, ~m? -# 2159| mu2159_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2159_1 -# 2159| r2159_7(bool) = Constant[0] : -# 2159| v2159_8(void) = ConditionalBranch : r2159_7 +# 35| Block 713 +# 35| r35_9983(glval) = VariableAddress[x713] : +# 35| mu35_9984(String) = Uninitialized[x713] : &:r35_9983 +# 35| r35_9985(glval) = FunctionAddress[String] : +# 35| v35_9986(void) = Call[String] : func:r35_9985, this:r35_9983 +# 35| mu35_9987(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9988(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9983 +# 35| r35_9989(glval) = VariableAddress[x713] : +# 35| r35_9990(glval) = FunctionAddress[~String] : +# 35| v35_9991(void) = Call[~String] : func:r35_9990, this:r35_9989 +# 35| mu35_9992(unknown) = ^CallSideEffect : ~m? +# 35| v35_9993(void) = ^IndirectReadSideEffect[-1] : &:r35_9989, ~m? +# 35| mu35_9994(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9989 +# 35| r35_9995(bool) = Constant[0] : +# 35| v35_9996(void) = ConditionalBranch : r35_9995 #-----| False -> Block 714 #-----| True -> Block 1026 -# 2161| Block 714 -# 2161| r2161_1(glval) = VariableAddress[x714] : -# 2161| mu2161_2(String) = Uninitialized[x714] : &:r2161_1 -# 2161| r2161_3(glval) = FunctionAddress[String] : -# 2161| v2161_4(void) = Call[String] : func:r2161_3, this:r2161_1 -# 2161| mu2161_5(unknown) = ^CallSideEffect : ~m? -# 2161| mu2161_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2161_1 -# 2162| r2162_1(glval) = VariableAddress[x714] : -# 2162| r2162_2(glval) = FunctionAddress[~String] : -# 2162| v2162_3(void) = Call[~String] : func:r2162_2, this:r2162_1 -# 2162| mu2162_4(unknown) = ^CallSideEffect : ~m? -# 2162| v2162_5(void) = ^IndirectReadSideEffect[-1] : &:r2162_1, ~m? -# 2162| mu2162_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2162_1 -# 2162| r2162_7(bool) = Constant[0] : -# 2162| v2162_8(void) = ConditionalBranch : r2162_7 +# 35| Block 714 +# 35| r35_9997(glval) = VariableAddress[x714] : +# 35| mu35_9998(String) = Uninitialized[x714] : &:r35_9997 +# 35| r35_9999(glval) = FunctionAddress[String] : +# 35| v35_10000(void) = Call[String] : func:r35_9999, this:r35_9997 +# 35| mu35_10001(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10002(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9997 +# 35| r35_10003(glval) = VariableAddress[x714] : +# 35| r35_10004(glval) = FunctionAddress[~String] : +# 35| v35_10005(void) = Call[~String] : func:r35_10004, this:r35_10003 +# 35| mu35_10006(unknown) = ^CallSideEffect : ~m? +# 35| v35_10007(void) = ^IndirectReadSideEffect[-1] : &:r35_10003, ~m? +# 35| mu35_10008(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10003 +# 35| r35_10009(bool) = Constant[0] : +# 35| v35_10010(void) = ConditionalBranch : r35_10009 #-----| False -> Block 715 #-----| True -> Block 1026 -# 2164| Block 715 -# 2164| r2164_1(glval) = VariableAddress[x715] : -# 2164| mu2164_2(String) = Uninitialized[x715] : &:r2164_1 -# 2164| r2164_3(glval) = FunctionAddress[String] : -# 2164| v2164_4(void) = Call[String] : func:r2164_3, this:r2164_1 -# 2164| mu2164_5(unknown) = ^CallSideEffect : ~m? -# 2164| mu2164_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2164_1 -# 2165| r2165_1(glval) = VariableAddress[x715] : -# 2165| r2165_2(glval) = FunctionAddress[~String] : -# 2165| v2165_3(void) = Call[~String] : func:r2165_2, this:r2165_1 -# 2165| mu2165_4(unknown) = ^CallSideEffect : ~m? -# 2165| v2165_5(void) = ^IndirectReadSideEffect[-1] : &:r2165_1, ~m? -# 2165| mu2165_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2165_1 -# 2165| r2165_7(bool) = Constant[0] : -# 2165| v2165_8(void) = ConditionalBranch : r2165_7 +# 35| Block 715 +# 35| r35_10011(glval) = VariableAddress[x715] : +# 35| mu35_10012(String) = Uninitialized[x715] : &:r35_10011 +# 35| r35_10013(glval) = FunctionAddress[String] : +# 35| v35_10014(void) = Call[String] : func:r35_10013, this:r35_10011 +# 35| mu35_10015(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10016(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10011 +# 35| r35_10017(glval) = VariableAddress[x715] : +# 35| r35_10018(glval) = FunctionAddress[~String] : +# 35| v35_10019(void) = Call[~String] : func:r35_10018, this:r35_10017 +# 35| mu35_10020(unknown) = ^CallSideEffect : ~m? +# 35| v35_10021(void) = ^IndirectReadSideEffect[-1] : &:r35_10017, ~m? +# 35| mu35_10022(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10017 +# 35| r35_10023(bool) = Constant[0] : +# 35| v35_10024(void) = ConditionalBranch : r35_10023 #-----| False -> Block 716 #-----| True -> Block 1026 -# 2167| Block 716 -# 2167| r2167_1(glval) = VariableAddress[x716] : -# 2167| mu2167_2(String) = Uninitialized[x716] : &:r2167_1 -# 2167| r2167_3(glval) = FunctionAddress[String] : -# 2167| v2167_4(void) = Call[String] : func:r2167_3, this:r2167_1 -# 2167| mu2167_5(unknown) = ^CallSideEffect : ~m? -# 2167| mu2167_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2167_1 -# 2168| r2168_1(glval) = VariableAddress[x716] : -# 2168| r2168_2(glval) = FunctionAddress[~String] : -# 2168| v2168_3(void) = Call[~String] : func:r2168_2, this:r2168_1 -# 2168| mu2168_4(unknown) = ^CallSideEffect : ~m? -# 2168| v2168_5(void) = ^IndirectReadSideEffect[-1] : &:r2168_1, ~m? -# 2168| mu2168_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2168_1 -# 2168| r2168_7(bool) = Constant[0] : -# 2168| v2168_8(void) = ConditionalBranch : r2168_7 +# 35| Block 716 +# 35| r35_10025(glval) = VariableAddress[x716] : +# 35| mu35_10026(String) = Uninitialized[x716] : &:r35_10025 +# 35| r35_10027(glval) = FunctionAddress[String] : +# 35| v35_10028(void) = Call[String] : func:r35_10027, this:r35_10025 +# 35| mu35_10029(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10030(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10025 +# 35| r35_10031(glval) = VariableAddress[x716] : +# 35| r35_10032(glval) = FunctionAddress[~String] : +# 35| v35_10033(void) = Call[~String] : func:r35_10032, this:r35_10031 +# 35| mu35_10034(unknown) = ^CallSideEffect : ~m? +# 35| v35_10035(void) = ^IndirectReadSideEffect[-1] : &:r35_10031, ~m? +# 35| mu35_10036(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10031 +# 35| r35_10037(bool) = Constant[0] : +# 35| v35_10038(void) = ConditionalBranch : r35_10037 #-----| False -> Block 717 #-----| True -> Block 1026 -# 2170| Block 717 -# 2170| r2170_1(glval) = VariableAddress[x717] : -# 2170| mu2170_2(String) = Uninitialized[x717] : &:r2170_1 -# 2170| r2170_3(glval) = FunctionAddress[String] : -# 2170| v2170_4(void) = Call[String] : func:r2170_3, this:r2170_1 -# 2170| mu2170_5(unknown) = ^CallSideEffect : ~m? -# 2170| mu2170_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2170_1 -# 2171| r2171_1(glval) = VariableAddress[x717] : -# 2171| r2171_2(glval) = FunctionAddress[~String] : -# 2171| v2171_3(void) = Call[~String] : func:r2171_2, this:r2171_1 -# 2171| mu2171_4(unknown) = ^CallSideEffect : ~m? -# 2171| v2171_5(void) = ^IndirectReadSideEffect[-1] : &:r2171_1, ~m? -# 2171| mu2171_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2171_1 -# 2171| r2171_7(bool) = Constant[0] : -# 2171| v2171_8(void) = ConditionalBranch : r2171_7 +# 35| Block 717 +# 35| r35_10039(glval) = VariableAddress[x717] : +# 35| mu35_10040(String) = Uninitialized[x717] : &:r35_10039 +# 35| r35_10041(glval) = FunctionAddress[String] : +# 35| v35_10042(void) = Call[String] : func:r35_10041, this:r35_10039 +# 35| mu35_10043(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10044(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10039 +# 35| r35_10045(glval) = VariableAddress[x717] : +# 35| r35_10046(glval) = FunctionAddress[~String] : +# 35| v35_10047(void) = Call[~String] : func:r35_10046, this:r35_10045 +# 35| mu35_10048(unknown) = ^CallSideEffect : ~m? +# 35| v35_10049(void) = ^IndirectReadSideEffect[-1] : &:r35_10045, ~m? +# 35| mu35_10050(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10045 +# 35| r35_10051(bool) = Constant[0] : +# 35| v35_10052(void) = ConditionalBranch : r35_10051 #-----| False -> Block 718 #-----| True -> Block 1026 -# 2173| Block 718 -# 2173| r2173_1(glval) = VariableAddress[x718] : -# 2173| mu2173_2(String) = Uninitialized[x718] : &:r2173_1 -# 2173| r2173_3(glval) = FunctionAddress[String] : -# 2173| v2173_4(void) = Call[String] : func:r2173_3, this:r2173_1 -# 2173| mu2173_5(unknown) = ^CallSideEffect : ~m? -# 2173| mu2173_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2173_1 -# 2174| r2174_1(glval) = VariableAddress[x718] : -# 2174| r2174_2(glval) = FunctionAddress[~String] : -# 2174| v2174_3(void) = Call[~String] : func:r2174_2, this:r2174_1 -# 2174| mu2174_4(unknown) = ^CallSideEffect : ~m? -# 2174| v2174_5(void) = ^IndirectReadSideEffect[-1] : &:r2174_1, ~m? -# 2174| mu2174_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2174_1 -# 2174| r2174_7(bool) = Constant[0] : -# 2174| v2174_8(void) = ConditionalBranch : r2174_7 +# 35| Block 718 +# 35| r35_10053(glval) = VariableAddress[x718] : +# 35| mu35_10054(String) = Uninitialized[x718] : &:r35_10053 +# 35| r35_10055(glval) = FunctionAddress[String] : +# 35| v35_10056(void) = Call[String] : func:r35_10055, this:r35_10053 +# 35| mu35_10057(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10058(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10053 +# 35| r35_10059(glval) = VariableAddress[x718] : +# 35| r35_10060(glval) = FunctionAddress[~String] : +# 35| v35_10061(void) = Call[~String] : func:r35_10060, this:r35_10059 +# 35| mu35_10062(unknown) = ^CallSideEffect : ~m? +# 35| v35_10063(void) = ^IndirectReadSideEffect[-1] : &:r35_10059, ~m? +# 35| mu35_10064(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10059 +# 35| r35_10065(bool) = Constant[0] : +# 35| v35_10066(void) = ConditionalBranch : r35_10065 #-----| False -> Block 719 #-----| True -> Block 1026 -# 2176| Block 719 -# 2176| r2176_1(glval) = VariableAddress[x719] : -# 2176| mu2176_2(String) = Uninitialized[x719] : &:r2176_1 -# 2176| r2176_3(glval) = FunctionAddress[String] : -# 2176| v2176_4(void) = Call[String] : func:r2176_3, this:r2176_1 -# 2176| mu2176_5(unknown) = ^CallSideEffect : ~m? -# 2176| mu2176_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2176_1 -# 2177| r2177_1(glval) = VariableAddress[x719] : -# 2177| r2177_2(glval) = FunctionAddress[~String] : -# 2177| v2177_3(void) = Call[~String] : func:r2177_2, this:r2177_1 -# 2177| mu2177_4(unknown) = ^CallSideEffect : ~m? -# 2177| v2177_5(void) = ^IndirectReadSideEffect[-1] : &:r2177_1, ~m? -# 2177| mu2177_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2177_1 -# 2177| r2177_7(bool) = Constant[0] : -# 2177| v2177_8(void) = ConditionalBranch : r2177_7 +# 35| Block 719 +# 35| r35_10067(glval) = VariableAddress[x719] : +# 35| mu35_10068(String) = Uninitialized[x719] : &:r35_10067 +# 35| r35_10069(glval) = FunctionAddress[String] : +# 35| v35_10070(void) = Call[String] : func:r35_10069, this:r35_10067 +# 35| mu35_10071(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10072(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10067 +# 35| r35_10073(glval) = VariableAddress[x719] : +# 35| r35_10074(glval) = FunctionAddress[~String] : +# 35| v35_10075(void) = Call[~String] : func:r35_10074, this:r35_10073 +# 35| mu35_10076(unknown) = ^CallSideEffect : ~m? +# 35| v35_10077(void) = ^IndirectReadSideEffect[-1] : &:r35_10073, ~m? +# 35| mu35_10078(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10073 +# 35| r35_10079(bool) = Constant[0] : +# 35| v35_10080(void) = ConditionalBranch : r35_10079 #-----| False -> Block 720 #-----| True -> Block 1026 -# 2179| Block 720 -# 2179| r2179_1(glval) = VariableAddress[x720] : -# 2179| mu2179_2(String) = Uninitialized[x720] : &:r2179_1 -# 2179| r2179_3(glval) = FunctionAddress[String] : -# 2179| v2179_4(void) = Call[String] : func:r2179_3, this:r2179_1 -# 2179| mu2179_5(unknown) = ^CallSideEffect : ~m? -# 2179| mu2179_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2179_1 -# 2180| r2180_1(glval) = VariableAddress[x720] : -# 2180| r2180_2(glval) = FunctionAddress[~String] : -# 2180| v2180_3(void) = Call[~String] : func:r2180_2, this:r2180_1 -# 2180| mu2180_4(unknown) = ^CallSideEffect : ~m? -# 2180| v2180_5(void) = ^IndirectReadSideEffect[-1] : &:r2180_1, ~m? -# 2180| mu2180_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2180_1 -# 2180| r2180_7(bool) = Constant[0] : -# 2180| v2180_8(void) = ConditionalBranch : r2180_7 +# 35| Block 720 +# 35| r35_10081(glval) = VariableAddress[x720] : +# 35| mu35_10082(String) = Uninitialized[x720] : &:r35_10081 +# 35| r35_10083(glval) = FunctionAddress[String] : +# 35| v35_10084(void) = Call[String] : func:r35_10083, this:r35_10081 +# 35| mu35_10085(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10086(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10081 +# 35| r35_10087(glval) = VariableAddress[x720] : +# 35| r35_10088(glval) = FunctionAddress[~String] : +# 35| v35_10089(void) = Call[~String] : func:r35_10088, this:r35_10087 +# 35| mu35_10090(unknown) = ^CallSideEffect : ~m? +# 35| v35_10091(void) = ^IndirectReadSideEffect[-1] : &:r35_10087, ~m? +# 35| mu35_10092(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10087 +# 35| r35_10093(bool) = Constant[0] : +# 35| v35_10094(void) = ConditionalBranch : r35_10093 #-----| False -> Block 721 #-----| True -> Block 1026 -# 2182| Block 721 -# 2182| r2182_1(glval) = VariableAddress[x721] : -# 2182| mu2182_2(String) = Uninitialized[x721] : &:r2182_1 -# 2182| r2182_3(glval) = FunctionAddress[String] : -# 2182| v2182_4(void) = Call[String] : func:r2182_3, this:r2182_1 -# 2182| mu2182_5(unknown) = ^CallSideEffect : ~m? -# 2182| mu2182_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2182_1 -# 2183| r2183_1(glval) = VariableAddress[x721] : -# 2183| r2183_2(glval) = FunctionAddress[~String] : -# 2183| v2183_3(void) = Call[~String] : func:r2183_2, this:r2183_1 -# 2183| mu2183_4(unknown) = ^CallSideEffect : ~m? -# 2183| v2183_5(void) = ^IndirectReadSideEffect[-1] : &:r2183_1, ~m? -# 2183| mu2183_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2183_1 -# 2183| r2183_7(bool) = Constant[0] : -# 2183| v2183_8(void) = ConditionalBranch : r2183_7 +# 35| Block 721 +# 35| r35_10095(glval) = VariableAddress[x721] : +# 35| mu35_10096(String) = Uninitialized[x721] : &:r35_10095 +# 35| r35_10097(glval) = FunctionAddress[String] : +# 35| v35_10098(void) = Call[String] : func:r35_10097, this:r35_10095 +# 35| mu35_10099(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10100(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10095 +# 35| r35_10101(glval) = VariableAddress[x721] : +# 35| r35_10102(glval) = FunctionAddress[~String] : +# 35| v35_10103(void) = Call[~String] : func:r35_10102, this:r35_10101 +# 35| mu35_10104(unknown) = ^CallSideEffect : ~m? +# 35| v35_10105(void) = ^IndirectReadSideEffect[-1] : &:r35_10101, ~m? +# 35| mu35_10106(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10101 +# 35| r35_10107(bool) = Constant[0] : +# 35| v35_10108(void) = ConditionalBranch : r35_10107 #-----| False -> Block 722 #-----| True -> Block 1026 -# 2185| Block 722 -# 2185| r2185_1(glval) = VariableAddress[x722] : -# 2185| mu2185_2(String) = Uninitialized[x722] : &:r2185_1 -# 2185| r2185_3(glval) = FunctionAddress[String] : -# 2185| v2185_4(void) = Call[String] : func:r2185_3, this:r2185_1 -# 2185| mu2185_5(unknown) = ^CallSideEffect : ~m? -# 2185| mu2185_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2185_1 -# 2186| r2186_1(glval) = VariableAddress[x722] : -# 2186| r2186_2(glval) = FunctionAddress[~String] : -# 2186| v2186_3(void) = Call[~String] : func:r2186_2, this:r2186_1 -# 2186| mu2186_4(unknown) = ^CallSideEffect : ~m? -# 2186| v2186_5(void) = ^IndirectReadSideEffect[-1] : &:r2186_1, ~m? -# 2186| mu2186_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2186_1 -# 2186| r2186_7(bool) = Constant[0] : -# 2186| v2186_8(void) = ConditionalBranch : r2186_7 +# 35| Block 722 +# 35| r35_10109(glval) = VariableAddress[x722] : +# 35| mu35_10110(String) = Uninitialized[x722] : &:r35_10109 +# 35| r35_10111(glval) = FunctionAddress[String] : +# 35| v35_10112(void) = Call[String] : func:r35_10111, this:r35_10109 +# 35| mu35_10113(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10114(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10109 +# 35| r35_10115(glval) = VariableAddress[x722] : +# 35| r35_10116(glval) = FunctionAddress[~String] : +# 35| v35_10117(void) = Call[~String] : func:r35_10116, this:r35_10115 +# 35| mu35_10118(unknown) = ^CallSideEffect : ~m? +# 35| v35_10119(void) = ^IndirectReadSideEffect[-1] : &:r35_10115, ~m? +# 35| mu35_10120(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10115 +# 35| r35_10121(bool) = Constant[0] : +# 35| v35_10122(void) = ConditionalBranch : r35_10121 #-----| False -> Block 723 #-----| True -> Block 1026 -# 2188| Block 723 -# 2188| r2188_1(glval) = VariableAddress[x723] : -# 2188| mu2188_2(String) = Uninitialized[x723] : &:r2188_1 -# 2188| r2188_3(glval) = FunctionAddress[String] : -# 2188| v2188_4(void) = Call[String] : func:r2188_3, this:r2188_1 -# 2188| mu2188_5(unknown) = ^CallSideEffect : ~m? -# 2188| mu2188_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2188_1 -# 2189| r2189_1(glval) = VariableAddress[x723] : -# 2189| r2189_2(glval) = FunctionAddress[~String] : -# 2189| v2189_3(void) = Call[~String] : func:r2189_2, this:r2189_1 -# 2189| mu2189_4(unknown) = ^CallSideEffect : ~m? -# 2189| v2189_5(void) = ^IndirectReadSideEffect[-1] : &:r2189_1, ~m? -# 2189| mu2189_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2189_1 -# 2189| r2189_7(bool) = Constant[0] : -# 2189| v2189_8(void) = ConditionalBranch : r2189_7 +# 35| Block 723 +# 35| r35_10123(glval) = VariableAddress[x723] : +# 35| mu35_10124(String) = Uninitialized[x723] : &:r35_10123 +# 35| r35_10125(glval) = FunctionAddress[String] : +# 35| v35_10126(void) = Call[String] : func:r35_10125, this:r35_10123 +# 35| mu35_10127(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10128(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10123 +# 35| r35_10129(glval) = VariableAddress[x723] : +# 35| r35_10130(glval) = FunctionAddress[~String] : +# 35| v35_10131(void) = Call[~String] : func:r35_10130, this:r35_10129 +# 35| mu35_10132(unknown) = ^CallSideEffect : ~m? +# 35| v35_10133(void) = ^IndirectReadSideEffect[-1] : &:r35_10129, ~m? +# 35| mu35_10134(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10129 +# 35| r35_10135(bool) = Constant[0] : +# 35| v35_10136(void) = ConditionalBranch : r35_10135 #-----| False -> Block 724 #-----| True -> Block 1026 -# 2191| Block 724 -# 2191| r2191_1(glval) = VariableAddress[x724] : -# 2191| mu2191_2(String) = Uninitialized[x724] : &:r2191_1 -# 2191| r2191_3(glval) = FunctionAddress[String] : -# 2191| v2191_4(void) = Call[String] : func:r2191_3, this:r2191_1 -# 2191| mu2191_5(unknown) = ^CallSideEffect : ~m? -# 2191| mu2191_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2191_1 -# 2192| r2192_1(glval) = VariableAddress[x724] : -# 2192| r2192_2(glval) = FunctionAddress[~String] : -# 2192| v2192_3(void) = Call[~String] : func:r2192_2, this:r2192_1 -# 2192| mu2192_4(unknown) = ^CallSideEffect : ~m? -# 2192| v2192_5(void) = ^IndirectReadSideEffect[-1] : &:r2192_1, ~m? -# 2192| mu2192_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2192_1 -# 2192| r2192_7(bool) = Constant[0] : -# 2192| v2192_8(void) = ConditionalBranch : r2192_7 +# 35| Block 724 +# 35| r35_10137(glval) = VariableAddress[x724] : +# 35| mu35_10138(String) = Uninitialized[x724] : &:r35_10137 +# 35| r35_10139(glval) = FunctionAddress[String] : +# 35| v35_10140(void) = Call[String] : func:r35_10139, this:r35_10137 +# 35| mu35_10141(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10142(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10137 +# 35| r35_10143(glval) = VariableAddress[x724] : +# 35| r35_10144(glval) = FunctionAddress[~String] : +# 35| v35_10145(void) = Call[~String] : func:r35_10144, this:r35_10143 +# 35| mu35_10146(unknown) = ^CallSideEffect : ~m? +# 35| v35_10147(void) = ^IndirectReadSideEffect[-1] : &:r35_10143, ~m? +# 35| mu35_10148(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10143 +# 35| r35_10149(bool) = Constant[0] : +# 35| v35_10150(void) = ConditionalBranch : r35_10149 #-----| False -> Block 725 #-----| True -> Block 1026 -# 2194| Block 725 -# 2194| r2194_1(glval) = VariableAddress[x725] : -# 2194| mu2194_2(String) = Uninitialized[x725] : &:r2194_1 -# 2194| r2194_3(glval) = FunctionAddress[String] : -# 2194| v2194_4(void) = Call[String] : func:r2194_3, this:r2194_1 -# 2194| mu2194_5(unknown) = ^CallSideEffect : ~m? -# 2194| mu2194_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2194_1 -# 2195| r2195_1(glval) = VariableAddress[x725] : -# 2195| r2195_2(glval) = FunctionAddress[~String] : -# 2195| v2195_3(void) = Call[~String] : func:r2195_2, this:r2195_1 -# 2195| mu2195_4(unknown) = ^CallSideEffect : ~m? -# 2195| v2195_5(void) = ^IndirectReadSideEffect[-1] : &:r2195_1, ~m? -# 2195| mu2195_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2195_1 -# 2195| r2195_7(bool) = Constant[0] : -# 2195| v2195_8(void) = ConditionalBranch : r2195_7 +# 35| Block 725 +# 35| r35_10151(glval) = VariableAddress[x725] : +# 35| mu35_10152(String) = Uninitialized[x725] : &:r35_10151 +# 35| r35_10153(glval) = FunctionAddress[String] : +# 35| v35_10154(void) = Call[String] : func:r35_10153, this:r35_10151 +# 35| mu35_10155(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10156(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10151 +# 35| r35_10157(glval) = VariableAddress[x725] : +# 35| r35_10158(glval) = FunctionAddress[~String] : +# 35| v35_10159(void) = Call[~String] : func:r35_10158, this:r35_10157 +# 35| mu35_10160(unknown) = ^CallSideEffect : ~m? +# 35| v35_10161(void) = ^IndirectReadSideEffect[-1] : &:r35_10157, ~m? +# 35| mu35_10162(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10157 +# 35| r35_10163(bool) = Constant[0] : +# 35| v35_10164(void) = ConditionalBranch : r35_10163 #-----| False -> Block 726 #-----| True -> Block 1026 -# 2197| Block 726 -# 2197| r2197_1(glval) = VariableAddress[x726] : -# 2197| mu2197_2(String) = Uninitialized[x726] : &:r2197_1 -# 2197| r2197_3(glval) = FunctionAddress[String] : -# 2197| v2197_4(void) = Call[String] : func:r2197_3, this:r2197_1 -# 2197| mu2197_5(unknown) = ^CallSideEffect : ~m? -# 2197| mu2197_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2197_1 -# 2198| r2198_1(glval) = VariableAddress[x726] : -# 2198| r2198_2(glval) = FunctionAddress[~String] : -# 2198| v2198_3(void) = Call[~String] : func:r2198_2, this:r2198_1 -# 2198| mu2198_4(unknown) = ^CallSideEffect : ~m? -# 2198| v2198_5(void) = ^IndirectReadSideEffect[-1] : &:r2198_1, ~m? -# 2198| mu2198_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2198_1 -# 2198| r2198_7(bool) = Constant[0] : -# 2198| v2198_8(void) = ConditionalBranch : r2198_7 +# 35| Block 726 +# 35| r35_10165(glval) = VariableAddress[x726] : +# 35| mu35_10166(String) = Uninitialized[x726] : &:r35_10165 +# 35| r35_10167(glval) = FunctionAddress[String] : +# 35| v35_10168(void) = Call[String] : func:r35_10167, this:r35_10165 +# 35| mu35_10169(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10170(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10165 +# 35| r35_10171(glval) = VariableAddress[x726] : +# 35| r35_10172(glval) = FunctionAddress[~String] : +# 35| v35_10173(void) = Call[~String] : func:r35_10172, this:r35_10171 +# 35| mu35_10174(unknown) = ^CallSideEffect : ~m? +# 35| v35_10175(void) = ^IndirectReadSideEffect[-1] : &:r35_10171, ~m? +# 35| mu35_10176(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10171 +# 35| r35_10177(bool) = Constant[0] : +# 35| v35_10178(void) = ConditionalBranch : r35_10177 #-----| False -> Block 727 #-----| True -> Block 1026 -# 2200| Block 727 -# 2200| r2200_1(glval) = VariableAddress[x727] : -# 2200| mu2200_2(String) = Uninitialized[x727] : &:r2200_1 -# 2200| r2200_3(glval) = FunctionAddress[String] : -# 2200| v2200_4(void) = Call[String] : func:r2200_3, this:r2200_1 -# 2200| mu2200_5(unknown) = ^CallSideEffect : ~m? -# 2200| mu2200_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 -# 2201| r2201_1(glval) = VariableAddress[x727] : -# 2201| r2201_2(glval) = FunctionAddress[~String] : -# 2201| v2201_3(void) = Call[~String] : func:r2201_2, this:r2201_1 -# 2201| mu2201_4(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_5(void) = ^IndirectReadSideEffect[-1] : &:r2201_1, ~m? -# 2201| mu2201_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2201_1 -# 2201| r2201_7(bool) = Constant[0] : -# 2201| v2201_8(void) = ConditionalBranch : r2201_7 +# 35| Block 727 +# 35| r35_10179(glval) = VariableAddress[x727] : +# 35| mu35_10180(String) = Uninitialized[x727] : &:r35_10179 +# 35| r35_10181(glval) = FunctionAddress[String] : +# 35| v35_10182(void) = Call[String] : func:r35_10181, this:r35_10179 +# 35| mu35_10183(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10184(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10179 +# 35| r35_10185(glval) = VariableAddress[x727] : +# 35| r35_10186(glval) = FunctionAddress[~String] : +# 35| v35_10187(void) = Call[~String] : func:r35_10186, this:r35_10185 +# 35| mu35_10188(unknown) = ^CallSideEffect : ~m? +# 35| v35_10189(void) = ^IndirectReadSideEffect[-1] : &:r35_10185, ~m? +# 35| mu35_10190(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10185 +# 35| r35_10191(bool) = Constant[0] : +# 35| v35_10192(void) = ConditionalBranch : r35_10191 #-----| False -> Block 728 #-----| True -> Block 1026 -# 2203| Block 728 -# 2203| r2203_1(glval) = VariableAddress[x728] : -# 2203| mu2203_2(String) = Uninitialized[x728] : &:r2203_1 -# 2203| r2203_3(glval) = FunctionAddress[String] : -# 2203| v2203_4(void) = Call[String] : func:r2203_3, this:r2203_1 -# 2203| mu2203_5(unknown) = ^CallSideEffect : ~m? -# 2203| mu2203_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2203_1 -# 2204| r2204_1(glval) = VariableAddress[x728] : -# 2204| r2204_2(glval) = FunctionAddress[~String] : -# 2204| v2204_3(void) = Call[~String] : func:r2204_2, this:r2204_1 -# 2204| mu2204_4(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_5(void) = ^IndirectReadSideEffect[-1] : &:r2204_1, ~m? -# 2204| mu2204_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 -# 2204| r2204_7(bool) = Constant[0] : -# 2204| v2204_8(void) = ConditionalBranch : r2204_7 +# 35| Block 728 +# 35| r35_10193(glval) = VariableAddress[x728] : +# 35| mu35_10194(String) = Uninitialized[x728] : &:r35_10193 +# 35| r35_10195(glval) = FunctionAddress[String] : +# 35| v35_10196(void) = Call[String] : func:r35_10195, this:r35_10193 +# 35| mu35_10197(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10198(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10193 +# 35| r35_10199(glval) = VariableAddress[x728] : +# 35| r35_10200(glval) = FunctionAddress[~String] : +# 35| v35_10201(void) = Call[~String] : func:r35_10200, this:r35_10199 +# 35| mu35_10202(unknown) = ^CallSideEffect : ~m? +# 35| v35_10203(void) = ^IndirectReadSideEffect[-1] : &:r35_10199, ~m? +# 35| mu35_10204(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10199 +# 35| r35_10205(bool) = Constant[0] : +# 35| v35_10206(void) = ConditionalBranch : r35_10205 #-----| False -> Block 729 #-----| True -> Block 1026 -# 2206| Block 729 -# 2206| r2206_1(glval) = VariableAddress[x729] : -# 2206| mu2206_2(String) = Uninitialized[x729] : &:r2206_1 -# 2206| r2206_3(glval) = FunctionAddress[String] : -# 2206| v2206_4(void) = Call[String] : func:r2206_3, this:r2206_1 -# 2206| mu2206_5(unknown) = ^CallSideEffect : ~m? -# 2206| mu2206_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 -# 2207| r2207_1(glval) = VariableAddress[x729] : -# 2207| r2207_2(glval) = FunctionAddress[~String] : -# 2207| v2207_3(void) = Call[~String] : func:r2207_2, this:r2207_1 -# 2207| mu2207_4(unknown) = ^CallSideEffect : ~m? -# 2207| v2207_5(void) = ^IndirectReadSideEffect[-1] : &:r2207_1, ~m? -# 2207| mu2207_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2207_1 -# 2207| r2207_7(bool) = Constant[0] : -# 2207| v2207_8(void) = ConditionalBranch : r2207_7 +# 35| Block 729 +# 35| r35_10207(glval) = VariableAddress[x729] : +# 35| mu35_10208(String) = Uninitialized[x729] : &:r35_10207 +# 35| r35_10209(glval) = FunctionAddress[String] : +# 35| v35_10210(void) = Call[String] : func:r35_10209, this:r35_10207 +# 35| mu35_10211(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10212(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10207 +# 35| r35_10213(glval) = VariableAddress[x729] : +# 35| r35_10214(glval) = FunctionAddress[~String] : +# 35| v35_10215(void) = Call[~String] : func:r35_10214, this:r35_10213 +# 35| mu35_10216(unknown) = ^CallSideEffect : ~m? +# 35| v35_10217(void) = ^IndirectReadSideEffect[-1] : &:r35_10213, ~m? +# 35| mu35_10218(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10213 +# 35| r35_10219(bool) = Constant[0] : +# 35| v35_10220(void) = ConditionalBranch : r35_10219 #-----| False -> Block 730 #-----| True -> Block 1026 -# 2209| Block 730 -# 2209| r2209_1(glval) = VariableAddress[x730] : -# 2209| mu2209_2(String) = Uninitialized[x730] : &:r2209_1 -# 2209| r2209_3(glval) = FunctionAddress[String] : -# 2209| v2209_4(void) = Call[String] : func:r2209_3, this:r2209_1 -# 2209| mu2209_5(unknown) = ^CallSideEffect : ~m? -# 2209| mu2209_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2209_1 -# 2210| r2210_1(glval) = VariableAddress[x730] : -# 2210| r2210_2(glval) = FunctionAddress[~String] : -# 2210| v2210_3(void) = Call[~String] : func:r2210_2, this:r2210_1 -# 2210| mu2210_4(unknown) = ^CallSideEffect : ~m? -# 2210| v2210_5(void) = ^IndirectReadSideEffect[-1] : &:r2210_1, ~m? -# 2210| mu2210_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 -# 2210| r2210_7(bool) = Constant[0] : -# 2210| v2210_8(void) = ConditionalBranch : r2210_7 +# 35| Block 730 +# 35| r35_10221(glval) = VariableAddress[x730] : +# 35| mu35_10222(String) = Uninitialized[x730] : &:r35_10221 +# 35| r35_10223(glval) = FunctionAddress[String] : +# 35| v35_10224(void) = Call[String] : func:r35_10223, this:r35_10221 +# 35| mu35_10225(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10226(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10221 +# 35| r35_10227(glval) = VariableAddress[x730] : +# 35| r35_10228(glval) = FunctionAddress[~String] : +# 35| v35_10229(void) = Call[~String] : func:r35_10228, this:r35_10227 +# 35| mu35_10230(unknown) = ^CallSideEffect : ~m? +# 35| v35_10231(void) = ^IndirectReadSideEffect[-1] : &:r35_10227, ~m? +# 35| mu35_10232(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10227 +# 35| r35_10233(bool) = Constant[0] : +# 35| v35_10234(void) = ConditionalBranch : r35_10233 #-----| False -> Block 731 #-----| True -> Block 1026 -# 2212| Block 731 -# 2212| r2212_1(glval) = VariableAddress[x731] : -# 2212| mu2212_2(String) = Uninitialized[x731] : &:r2212_1 -# 2212| r2212_3(glval) = FunctionAddress[String] : -# 2212| v2212_4(void) = Call[String] : func:r2212_3, this:r2212_1 -# 2212| mu2212_5(unknown) = ^CallSideEffect : ~m? -# 2212| mu2212_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2212_1 -# 2213| r2213_1(glval) = VariableAddress[x731] : -# 2213| r2213_2(glval) = FunctionAddress[~String] : -# 2213| v2213_3(void) = Call[~String] : func:r2213_2, this:r2213_1 -# 2213| mu2213_4(unknown) = ^CallSideEffect : ~m? -# 2213| v2213_5(void) = ^IndirectReadSideEffect[-1] : &:r2213_1, ~m? -# 2213| mu2213_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2213_1 -# 2213| r2213_7(bool) = Constant[0] : -# 2213| v2213_8(void) = ConditionalBranch : r2213_7 +# 35| Block 731 +# 35| r35_10235(glval) = VariableAddress[x731] : +# 35| mu35_10236(String) = Uninitialized[x731] : &:r35_10235 +# 35| r35_10237(glval) = FunctionAddress[String] : +# 35| v35_10238(void) = Call[String] : func:r35_10237, this:r35_10235 +# 35| mu35_10239(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10240(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10235 +# 35| r35_10241(glval) = VariableAddress[x731] : +# 35| r35_10242(glval) = FunctionAddress[~String] : +# 35| v35_10243(void) = Call[~String] : func:r35_10242, this:r35_10241 +# 35| mu35_10244(unknown) = ^CallSideEffect : ~m? +# 35| v35_10245(void) = ^IndirectReadSideEffect[-1] : &:r35_10241, ~m? +# 35| mu35_10246(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10241 +# 35| r35_10247(bool) = Constant[0] : +# 35| v35_10248(void) = ConditionalBranch : r35_10247 #-----| False -> Block 732 #-----| True -> Block 1026 -# 2215| Block 732 -# 2215| r2215_1(glval) = VariableAddress[x732] : -# 2215| mu2215_2(String) = Uninitialized[x732] : &:r2215_1 -# 2215| r2215_3(glval) = FunctionAddress[String] : -# 2215| v2215_4(void) = Call[String] : func:r2215_3, this:r2215_1 -# 2215| mu2215_5(unknown) = ^CallSideEffect : ~m? -# 2215| mu2215_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 -# 2216| r2216_1(glval) = VariableAddress[x732] : -# 2216| r2216_2(glval) = FunctionAddress[~String] : -# 2216| v2216_3(void) = Call[~String] : func:r2216_2, this:r2216_1 -# 2216| mu2216_4(unknown) = ^CallSideEffect : ~m? -# 2216| v2216_5(void) = ^IndirectReadSideEffect[-1] : &:r2216_1, ~m? -# 2216| mu2216_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 -# 2216| r2216_7(bool) = Constant[0] : -# 2216| v2216_8(void) = ConditionalBranch : r2216_7 +# 35| Block 732 +# 35| r35_10249(glval) = VariableAddress[x732] : +# 35| mu35_10250(String) = Uninitialized[x732] : &:r35_10249 +# 35| r35_10251(glval) = FunctionAddress[String] : +# 35| v35_10252(void) = Call[String] : func:r35_10251, this:r35_10249 +# 35| mu35_10253(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10254(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10249 +# 35| r35_10255(glval) = VariableAddress[x732] : +# 35| r35_10256(glval) = FunctionAddress[~String] : +# 35| v35_10257(void) = Call[~String] : func:r35_10256, this:r35_10255 +# 35| mu35_10258(unknown) = ^CallSideEffect : ~m? +# 35| v35_10259(void) = ^IndirectReadSideEffect[-1] : &:r35_10255, ~m? +# 35| mu35_10260(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10255 +# 35| r35_10261(bool) = Constant[0] : +# 35| v35_10262(void) = ConditionalBranch : r35_10261 #-----| False -> Block 733 #-----| True -> Block 1026 -# 2218| Block 733 -# 2218| r2218_1(glval) = VariableAddress[x733] : -# 2218| mu2218_2(String) = Uninitialized[x733] : &:r2218_1 -# 2218| r2218_3(glval) = FunctionAddress[String] : -# 2218| v2218_4(void) = Call[String] : func:r2218_3, this:r2218_1 -# 2218| mu2218_5(unknown) = ^CallSideEffect : ~m? -# 2218| mu2218_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 -# 2219| r2219_1(glval) = VariableAddress[x733] : -# 2219| r2219_2(glval) = FunctionAddress[~String] : -# 2219| v2219_3(void) = Call[~String] : func:r2219_2, this:r2219_1 -# 2219| mu2219_4(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_5(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, ~m? -# 2219| mu2219_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 -# 2219| r2219_7(bool) = Constant[0] : -# 2219| v2219_8(void) = ConditionalBranch : r2219_7 +# 35| Block 733 +# 35| r35_10263(glval) = VariableAddress[x733] : +# 35| mu35_10264(String) = Uninitialized[x733] : &:r35_10263 +# 35| r35_10265(glval) = FunctionAddress[String] : +# 35| v35_10266(void) = Call[String] : func:r35_10265, this:r35_10263 +# 35| mu35_10267(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10268(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10263 +# 35| r35_10269(glval) = VariableAddress[x733] : +# 35| r35_10270(glval) = FunctionAddress[~String] : +# 35| v35_10271(void) = Call[~String] : func:r35_10270, this:r35_10269 +# 35| mu35_10272(unknown) = ^CallSideEffect : ~m? +# 35| v35_10273(void) = ^IndirectReadSideEffect[-1] : &:r35_10269, ~m? +# 35| mu35_10274(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10269 +# 35| r35_10275(bool) = Constant[0] : +# 35| v35_10276(void) = ConditionalBranch : r35_10275 #-----| False -> Block 734 #-----| True -> Block 1026 -# 2221| Block 734 -# 2221| r2221_1(glval) = VariableAddress[x734] : -# 2221| mu2221_2(String) = Uninitialized[x734] : &:r2221_1 -# 2221| r2221_3(glval) = FunctionAddress[String] : -# 2221| v2221_4(void) = Call[String] : func:r2221_3, this:r2221_1 -# 2221| mu2221_5(unknown) = ^CallSideEffect : ~m? -# 2221| mu2221_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2221_1 -# 2222| r2222_1(glval) = VariableAddress[x734] : -# 2222| r2222_2(glval) = FunctionAddress[~String] : -# 2222| v2222_3(void) = Call[~String] : func:r2222_2, this:r2222_1 -# 2222| mu2222_4(unknown) = ^CallSideEffect : ~m? -# 2222| v2222_5(void) = ^IndirectReadSideEffect[-1] : &:r2222_1, ~m? -# 2222| mu2222_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2222_1 -# 2222| r2222_7(bool) = Constant[0] : -# 2222| v2222_8(void) = ConditionalBranch : r2222_7 +# 35| Block 734 +# 35| r35_10277(glval) = VariableAddress[x734] : +# 35| mu35_10278(String) = Uninitialized[x734] : &:r35_10277 +# 35| r35_10279(glval) = FunctionAddress[String] : +# 35| v35_10280(void) = Call[String] : func:r35_10279, this:r35_10277 +# 35| mu35_10281(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10282(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10277 +# 35| r35_10283(glval) = VariableAddress[x734] : +# 35| r35_10284(glval) = FunctionAddress[~String] : +# 35| v35_10285(void) = Call[~String] : func:r35_10284, this:r35_10283 +# 35| mu35_10286(unknown) = ^CallSideEffect : ~m? +# 35| v35_10287(void) = ^IndirectReadSideEffect[-1] : &:r35_10283, ~m? +# 35| mu35_10288(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10283 +# 35| r35_10289(bool) = Constant[0] : +# 35| v35_10290(void) = ConditionalBranch : r35_10289 #-----| False -> Block 735 #-----| True -> Block 1026 -# 2224| Block 735 -# 2224| r2224_1(glval) = VariableAddress[x735] : -# 2224| mu2224_2(String) = Uninitialized[x735] : &:r2224_1 -# 2224| r2224_3(glval) = FunctionAddress[String] : -# 2224| v2224_4(void) = Call[String] : func:r2224_3, this:r2224_1 -# 2224| mu2224_5(unknown) = ^CallSideEffect : ~m? -# 2224| mu2224_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2224_1 -# 2225| r2225_1(glval) = VariableAddress[x735] : -# 2225| r2225_2(glval) = FunctionAddress[~String] : -# 2225| v2225_3(void) = Call[~String] : func:r2225_2, this:r2225_1 -# 2225| mu2225_4(unknown) = ^CallSideEffect : ~m? -# 2225| v2225_5(void) = ^IndirectReadSideEffect[-1] : &:r2225_1, ~m? -# 2225| mu2225_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2225_1 -# 2225| r2225_7(bool) = Constant[0] : -# 2225| v2225_8(void) = ConditionalBranch : r2225_7 +# 35| Block 735 +# 35| r35_10291(glval) = VariableAddress[x735] : +# 35| mu35_10292(String) = Uninitialized[x735] : &:r35_10291 +# 35| r35_10293(glval) = FunctionAddress[String] : +# 35| v35_10294(void) = Call[String] : func:r35_10293, this:r35_10291 +# 35| mu35_10295(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10296(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10291 +# 35| r35_10297(glval) = VariableAddress[x735] : +# 35| r35_10298(glval) = FunctionAddress[~String] : +# 35| v35_10299(void) = Call[~String] : func:r35_10298, this:r35_10297 +# 35| mu35_10300(unknown) = ^CallSideEffect : ~m? +# 35| v35_10301(void) = ^IndirectReadSideEffect[-1] : &:r35_10297, ~m? +# 35| mu35_10302(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10297 +# 35| r35_10303(bool) = Constant[0] : +# 35| v35_10304(void) = ConditionalBranch : r35_10303 #-----| False -> Block 736 #-----| True -> Block 1026 -# 2227| Block 736 -# 2227| r2227_1(glval) = VariableAddress[x736] : -# 2227| mu2227_2(String) = Uninitialized[x736] : &:r2227_1 -# 2227| r2227_3(glval) = FunctionAddress[String] : -# 2227| v2227_4(void) = Call[String] : func:r2227_3, this:r2227_1 -# 2227| mu2227_5(unknown) = ^CallSideEffect : ~m? -# 2227| mu2227_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2227_1 -# 2228| r2228_1(glval) = VariableAddress[x736] : -# 2228| r2228_2(glval) = FunctionAddress[~String] : -# 2228| v2228_3(void) = Call[~String] : func:r2228_2, this:r2228_1 -# 2228| mu2228_4(unknown) = ^CallSideEffect : ~m? -# 2228| v2228_5(void) = ^IndirectReadSideEffect[-1] : &:r2228_1, ~m? -# 2228| mu2228_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2228_1 -# 2228| r2228_7(bool) = Constant[0] : -# 2228| v2228_8(void) = ConditionalBranch : r2228_7 +# 35| Block 736 +# 35| r35_10305(glval) = VariableAddress[x736] : +# 35| mu35_10306(String) = Uninitialized[x736] : &:r35_10305 +# 35| r35_10307(glval) = FunctionAddress[String] : +# 35| v35_10308(void) = Call[String] : func:r35_10307, this:r35_10305 +# 35| mu35_10309(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10310(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10305 +# 35| r35_10311(glval) = VariableAddress[x736] : +# 35| r35_10312(glval) = FunctionAddress[~String] : +# 35| v35_10313(void) = Call[~String] : func:r35_10312, this:r35_10311 +# 35| mu35_10314(unknown) = ^CallSideEffect : ~m? +# 35| v35_10315(void) = ^IndirectReadSideEffect[-1] : &:r35_10311, ~m? +# 35| mu35_10316(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10311 +# 35| r35_10317(bool) = Constant[0] : +# 35| v35_10318(void) = ConditionalBranch : r35_10317 #-----| False -> Block 737 #-----| True -> Block 1026 -# 2230| Block 737 -# 2230| r2230_1(glval) = VariableAddress[x737] : -# 2230| mu2230_2(String) = Uninitialized[x737] : &:r2230_1 -# 2230| r2230_3(glval) = FunctionAddress[String] : -# 2230| v2230_4(void) = Call[String] : func:r2230_3, this:r2230_1 -# 2230| mu2230_5(unknown) = ^CallSideEffect : ~m? -# 2230| mu2230_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2230_1 -# 2231| r2231_1(glval) = VariableAddress[x737] : -# 2231| r2231_2(glval) = FunctionAddress[~String] : -# 2231| v2231_3(void) = Call[~String] : func:r2231_2, this:r2231_1 -# 2231| mu2231_4(unknown) = ^CallSideEffect : ~m? -# 2231| v2231_5(void) = ^IndirectReadSideEffect[-1] : &:r2231_1, ~m? -# 2231| mu2231_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2231_1 -# 2231| r2231_7(bool) = Constant[0] : -# 2231| v2231_8(void) = ConditionalBranch : r2231_7 +# 35| Block 737 +# 35| r35_10319(glval) = VariableAddress[x737] : +# 35| mu35_10320(String) = Uninitialized[x737] : &:r35_10319 +# 35| r35_10321(glval) = FunctionAddress[String] : +# 35| v35_10322(void) = Call[String] : func:r35_10321, this:r35_10319 +# 35| mu35_10323(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10324(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10319 +# 35| r35_10325(glval) = VariableAddress[x737] : +# 35| r35_10326(glval) = FunctionAddress[~String] : +# 35| v35_10327(void) = Call[~String] : func:r35_10326, this:r35_10325 +# 35| mu35_10328(unknown) = ^CallSideEffect : ~m? +# 35| v35_10329(void) = ^IndirectReadSideEffect[-1] : &:r35_10325, ~m? +# 35| mu35_10330(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10325 +# 35| r35_10331(bool) = Constant[0] : +# 35| v35_10332(void) = ConditionalBranch : r35_10331 #-----| False -> Block 738 #-----| True -> Block 1026 -# 2233| Block 738 -# 2233| r2233_1(glval) = VariableAddress[x738] : -# 2233| mu2233_2(String) = Uninitialized[x738] : &:r2233_1 -# 2233| r2233_3(glval) = FunctionAddress[String] : -# 2233| v2233_4(void) = Call[String] : func:r2233_3, this:r2233_1 -# 2233| mu2233_5(unknown) = ^CallSideEffect : ~m? -# 2233| mu2233_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 -# 2234| r2234_1(glval) = VariableAddress[x738] : -# 2234| r2234_2(glval) = FunctionAddress[~String] : -# 2234| v2234_3(void) = Call[~String] : func:r2234_2, this:r2234_1 -# 2234| mu2234_4(unknown) = ^CallSideEffect : ~m? -# 2234| v2234_5(void) = ^IndirectReadSideEffect[-1] : &:r2234_1, ~m? -# 2234| mu2234_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1 -# 2234| r2234_7(bool) = Constant[0] : -# 2234| v2234_8(void) = ConditionalBranch : r2234_7 +# 35| Block 738 +# 35| r35_10333(glval) = VariableAddress[x738] : +# 35| mu35_10334(String) = Uninitialized[x738] : &:r35_10333 +# 35| r35_10335(glval) = FunctionAddress[String] : +# 35| v35_10336(void) = Call[String] : func:r35_10335, this:r35_10333 +# 35| mu35_10337(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10338(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10333 +# 35| r35_10339(glval) = VariableAddress[x738] : +# 35| r35_10340(glval) = FunctionAddress[~String] : +# 35| v35_10341(void) = Call[~String] : func:r35_10340, this:r35_10339 +# 35| mu35_10342(unknown) = ^CallSideEffect : ~m? +# 35| v35_10343(void) = ^IndirectReadSideEffect[-1] : &:r35_10339, ~m? +# 35| mu35_10344(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10339 +# 35| r35_10345(bool) = Constant[0] : +# 35| v35_10346(void) = ConditionalBranch : r35_10345 #-----| False -> Block 739 #-----| True -> Block 1026 -# 2236| Block 739 -# 2236| r2236_1(glval) = VariableAddress[x739] : -# 2236| mu2236_2(String) = Uninitialized[x739] : &:r2236_1 -# 2236| r2236_3(glval) = FunctionAddress[String] : -# 2236| v2236_4(void) = Call[String] : func:r2236_3, this:r2236_1 -# 2236| mu2236_5(unknown) = ^CallSideEffect : ~m? -# 2236| mu2236_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2236_1 -# 2237| r2237_1(glval) = VariableAddress[x739] : -# 2237| r2237_2(glval) = FunctionAddress[~String] : -# 2237| v2237_3(void) = Call[~String] : func:r2237_2, this:r2237_1 -# 2237| mu2237_4(unknown) = ^CallSideEffect : ~m? -# 2237| v2237_5(void) = ^IndirectReadSideEffect[-1] : &:r2237_1, ~m? -# 2237| mu2237_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2237_1 -# 2237| r2237_7(bool) = Constant[0] : -# 2237| v2237_8(void) = ConditionalBranch : r2237_7 +# 35| Block 739 +# 35| r35_10347(glval) = VariableAddress[x739] : +# 35| mu35_10348(String) = Uninitialized[x739] : &:r35_10347 +# 35| r35_10349(glval) = FunctionAddress[String] : +# 35| v35_10350(void) = Call[String] : func:r35_10349, this:r35_10347 +# 35| mu35_10351(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10352(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10347 +# 35| r35_10353(glval) = VariableAddress[x739] : +# 35| r35_10354(glval) = FunctionAddress[~String] : +# 35| v35_10355(void) = Call[~String] : func:r35_10354, this:r35_10353 +# 35| mu35_10356(unknown) = ^CallSideEffect : ~m? +# 35| v35_10357(void) = ^IndirectReadSideEffect[-1] : &:r35_10353, ~m? +# 35| mu35_10358(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10353 +# 35| r35_10359(bool) = Constant[0] : +# 35| v35_10360(void) = ConditionalBranch : r35_10359 #-----| False -> Block 740 #-----| True -> Block 1026 -# 2239| Block 740 -# 2239| r2239_1(glval) = VariableAddress[x740] : -# 2239| mu2239_2(String) = Uninitialized[x740] : &:r2239_1 -# 2239| r2239_3(glval) = FunctionAddress[String] : -# 2239| v2239_4(void) = Call[String] : func:r2239_3, this:r2239_1 -# 2239| mu2239_5(unknown) = ^CallSideEffect : ~m? -# 2239| mu2239_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2239_1 -# 2240| r2240_1(glval) = VariableAddress[x740] : -# 2240| r2240_2(glval) = FunctionAddress[~String] : -# 2240| v2240_3(void) = Call[~String] : func:r2240_2, this:r2240_1 -# 2240| mu2240_4(unknown) = ^CallSideEffect : ~m? -# 2240| v2240_5(void) = ^IndirectReadSideEffect[-1] : &:r2240_1, ~m? -# 2240| mu2240_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2240_1 -# 2240| r2240_7(bool) = Constant[0] : -# 2240| v2240_8(void) = ConditionalBranch : r2240_7 +# 35| Block 740 +# 35| r35_10361(glval) = VariableAddress[x740] : +# 35| mu35_10362(String) = Uninitialized[x740] : &:r35_10361 +# 35| r35_10363(glval) = FunctionAddress[String] : +# 35| v35_10364(void) = Call[String] : func:r35_10363, this:r35_10361 +# 35| mu35_10365(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10366(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10361 +# 35| r35_10367(glval) = VariableAddress[x740] : +# 35| r35_10368(glval) = FunctionAddress[~String] : +# 35| v35_10369(void) = Call[~String] : func:r35_10368, this:r35_10367 +# 35| mu35_10370(unknown) = ^CallSideEffect : ~m? +# 35| v35_10371(void) = ^IndirectReadSideEffect[-1] : &:r35_10367, ~m? +# 35| mu35_10372(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10367 +# 35| r35_10373(bool) = Constant[0] : +# 35| v35_10374(void) = ConditionalBranch : r35_10373 #-----| False -> Block 741 #-----| True -> Block 1026 -# 2242| Block 741 -# 2242| r2242_1(glval) = VariableAddress[x741] : -# 2242| mu2242_2(String) = Uninitialized[x741] : &:r2242_1 -# 2242| r2242_3(glval) = FunctionAddress[String] : -# 2242| v2242_4(void) = Call[String] : func:r2242_3, this:r2242_1 -# 2242| mu2242_5(unknown) = ^CallSideEffect : ~m? -# 2242| mu2242_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2242_1 -# 2243| r2243_1(glval) = VariableAddress[x741] : -# 2243| r2243_2(glval) = FunctionAddress[~String] : -# 2243| v2243_3(void) = Call[~String] : func:r2243_2, this:r2243_1 -# 2243| mu2243_4(unknown) = ^CallSideEffect : ~m? -# 2243| v2243_5(void) = ^IndirectReadSideEffect[-1] : &:r2243_1, ~m? -# 2243| mu2243_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2243_1 -# 2243| r2243_7(bool) = Constant[0] : -# 2243| v2243_8(void) = ConditionalBranch : r2243_7 +# 35| Block 741 +# 35| r35_10375(glval) = VariableAddress[x741] : +# 35| mu35_10376(String) = Uninitialized[x741] : &:r35_10375 +# 35| r35_10377(glval) = FunctionAddress[String] : +# 35| v35_10378(void) = Call[String] : func:r35_10377, this:r35_10375 +# 35| mu35_10379(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10380(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10375 +# 35| r35_10381(glval) = VariableAddress[x741] : +# 35| r35_10382(glval) = FunctionAddress[~String] : +# 35| v35_10383(void) = Call[~String] : func:r35_10382, this:r35_10381 +# 35| mu35_10384(unknown) = ^CallSideEffect : ~m? +# 35| v35_10385(void) = ^IndirectReadSideEffect[-1] : &:r35_10381, ~m? +# 35| mu35_10386(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10381 +# 35| r35_10387(bool) = Constant[0] : +# 35| v35_10388(void) = ConditionalBranch : r35_10387 #-----| False -> Block 742 #-----| True -> Block 1026 -# 2245| Block 742 -# 2245| r2245_1(glval) = VariableAddress[x742] : -# 2245| mu2245_2(String) = Uninitialized[x742] : &:r2245_1 -# 2245| r2245_3(glval) = FunctionAddress[String] : -# 2245| v2245_4(void) = Call[String] : func:r2245_3, this:r2245_1 -# 2245| mu2245_5(unknown) = ^CallSideEffect : ~m? -# 2245| mu2245_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2245_1 -# 2246| r2246_1(glval) = VariableAddress[x742] : -# 2246| r2246_2(glval) = FunctionAddress[~String] : -# 2246| v2246_3(void) = Call[~String] : func:r2246_2, this:r2246_1 -# 2246| mu2246_4(unknown) = ^CallSideEffect : ~m? -# 2246| v2246_5(void) = ^IndirectReadSideEffect[-1] : &:r2246_1, ~m? -# 2246| mu2246_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2246_1 -# 2246| r2246_7(bool) = Constant[0] : -# 2246| v2246_8(void) = ConditionalBranch : r2246_7 +# 35| Block 742 +# 35| r35_10389(glval) = VariableAddress[x742] : +# 35| mu35_10390(String) = Uninitialized[x742] : &:r35_10389 +# 35| r35_10391(glval) = FunctionAddress[String] : +# 35| v35_10392(void) = Call[String] : func:r35_10391, this:r35_10389 +# 35| mu35_10393(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10394(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10389 +# 35| r35_10395(glval) = VariableAddress[x742] : +# 35| r35_10396(glval) = FunctionAddress[~String] : +# 35| v35_10397(void) = Call[~String] : func:r35_10396, this:r35_10395 +# 35| mu35_10398(unknown) = ^CallSideEffect : ~m? +# 35| v35_10399(void) = ^IndirectReadSideEffect[-1] : &:r35_10395, ~m? +# 35| mu35_10400(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10395 +# 35| r35_10401(bool) = Constant[0] : +# 35| v35_10402(void) = ConditionalBranch : r35_10401 #-----| False -> Block 743 #-----| True -> Block 1026 -# 2248| Block 743 -# 2248| r2248_1(glval) = VariableAddress[x743] : -# 2248| mu2248_2(String) = Uninitialized[x743] : &:r2248_1 -# 2248| r2248_3(glval) = FunctionAddress[String] : -# 2248| v2248_4(void) = Call[String] : func:r2248_3, this:r2248_1 -# 2248| mu2248_5(unknown) = ^CallSideEffect : ~m? -# 2248| mu2248_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2248_1 -# 2249| r2249_1(glval) = VariableAddress[x743] : -# 2249| r2249_2(glval) = FunctionAddress[~String] : -# 2249| v2249_3(void) = Call[~String] : func:r2249_2, this:r2249_1 -# 2249| mu2249_4(unknown) = ^CallSideEffect : ~m? -# 2249| v2249_5(void) = ^IndirectReadSideEffect[-1] : &:r2249_1, ~m? -# 2249| mu2249_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2249_1 -# 2249| r2249_7(bool) = Constant[0] : -# 2249| v2249_8(void) = ConditionalBranch : r2249_7 +# 35| Block 743 +# 35| r35_10403(glval) = VariableAddress[x743] : +# 35| mu35_10404(String) = Uninitialized[x743] : &:r35_10403 +# 35| r35_10405(glval) = FunctionAddress[String] : +# 35| v35_10406(void) = Call[String] : func:r35_10405, this:r35_10403 +# 35| mu35_10407(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10408(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10403 +# 35| r35_10409(glval) = VariableAddress[x743] : +# 35| r35_10410(glval) = FunctionAddress[~String] : +# 35| v35_10411(void) = Call[~String] : func:r35_10410, this:r35_10409 +# 35| mu35_10412(unknown) = ^CallSideEffect : ~m? +# 35| v35_10413(void) = ^IndirectReadSideEffect[-1] : &:r35_10409, ~m? +# 35| mu35_10414(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10409 +# 35| r35_10415(bool) = Constant[0] : +# 35| v35_10416(void) = ConditionalBranch : r35_10415 #-----| False -> Block 744 #-----| True -> Block 1026 -# 2251| Block 744 -# 2251| r2251_1(glval) = VariableAddress[x744] : -# 2251| mu2251_2(String) = Uninitialized[x744] : &:r2251_1 -# 2251| r2251_3(glval) = FunctionAddress[String] : -# 2251| v2251_4(void) = Call[String] : func:r2251_3, this:r2251_1 -# 2251| mu2251_5(unknown) = ^CallSideEffect : ~m? -# 2251| mu2251_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2251_1 -# 2252| r2252_1(glval) = VariableAddress[x744] : -# 2252| r2252_2(glval) = FunctionAddress[~String] : -# 2252| v2252_3(void) = Call[~String] : func:r2252_2, this:r2252_1 -# 2252| mu2252_4(unknown) = ^CallSideEffect : ~m? -# 2252| v2252_5(void) = ^IndirectReadSideEffect[-1] : &:r2252_1, ~m? -# 2252| mu2252_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2252_1 -# 2252| r2252_7(bool) = Constant[0] : -# 2252| v2252_8(void) = ConditionalBranch : r2252_7 +# 35| Block 744 +# 35| r35_10417(glval) = VariableAddress[x744] : +# 35| mu35_10418(String) = Uninitialized[x744] : &:r35_10417 +# 35| r35_10419(glval) = FunctionAddress[String] : +# 35| v35_10420(void) = Call[String] : func:r35_10419, this:r35_10417 +# 35| mu35_10421(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10422(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10417 +# 35| r35_10423(glval) = VariableAddress[x744] : +# 35| r35_10424(glval) = FunctionAddress[~String] : +# 35| v35_10425(void) = Call[~String] : func:r35_10424, this:r35_10423 +# 35| mu35_10426(unknown) = ^CallSideEffect : ~m? +# 35| v35_10427(void) = ^IndirectReadSideEffect[-1] : &:r35_10423, ~m? +# 35| mu35_10428(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10423 +# 35| r35_10429(bool) = Constant[0] : +# 35| v35_10430(void) = ConditionalBranch : r35_10429 #-----| False -> Block 745 #-----| True -> Block 1026 -# 2254| Block 745 -# 2254| r2254_1(glval) = VariableAddress[x745] : -# 2254| mu2254_2(String) = Uninitialized[x745] : &:r2254_1 -# 2254| r2254_3(glval) = FunctionAddress[String] : -# 2254| v2254_4(void) = Call[String] : func:r2254_3, this:r2254_1 -# 2254| mu2254_5(unknown) = ^CallSideEffect : ~m? -# 2254| mu2254_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2254_1 -# 2255| r2255_1(glval) = VariableAddress[x745] : -# 2255| r2255_2(glval) = FunctionAddress[~String] : -# 2255| v2255_3(void) = Call[~String] : func:r2255_2, this:r2255_1 -# 2255| mu2255_4(unknown) = ^CallSideEffect : ~m? -# 2255| v2255_5(void) = ^IndirectReadSideEffect[-1] : &:r2255_1, ~m? -# 2255| mu2255_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2255_1 -# 2255| r2255_7(bool) = Constant[0] : -# 2255| v2255_8(void) = ConditionalBranch : r2255_7 +# 35| Block 745 +# 35| r35_10431(glval) = VariableAddress[x745] : +# 35| mu35_10432(String) = Uninitialized[x745] : &:r35_10431 +# 35| r35_10433(glval) = FunctionAddress[String] : +# 35| v35_10434(void) = Call[String] : func:r35_10433, this:r35_10431 +# 35| mu35_10435(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10436(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10431 +# 35| r35_10437(glval) = VariableAddress[x745] : +# 35| r35_10438(glval) = FunctionAddress[~String] : +# 35| v35_10439(void) = Call[~String] : func:r35_10438, this:r35_10437 +# 35| mu35_10440(unknown) = ^CallSideEffect : ~m? +# 35| v35_10441(void) = ^IndirectReadSideEffect[-1] : &:r35_10437, ~m? +# 35| mu35_10442(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10437 +# 35| r35_10443(bool) = Constant[0] : +# 35| v35_10444(void) = ConditionalBranch : r35_10443 #-----| False -> Block 746 #-----| True -> Block 1026 -# 2257| Block 746 -# 2257| r2257_1(glval) = VariableAddress[x746] : -# 2257| mu2257_2(String) = Uninitialized[x746] : &:r2257_1 -# 2257| r2257_3(glval) = FunctionAddress[String] : -# 2257| v2257_4(void) = Call[String] : func:r2257_3, this:r2257_1 -# 2257| mu2257_5(unknown) = ^CallSideEffect : ~m? -# 2257| mu2257_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2257_1 -# 2258| r2258_1(glval) = VariableAddress[x746] : -# 2258| r2258_2(glval) = FunctionAddress[~String] : -# 2258| v2258_3(void) = Call[~String] : func:r2258_2, this:r2258_1 -# 2258| mu2258_4(unknown) = ^CallSideEffect : ~m? -# 2258| v2258_5(void) = ^IndirectReadSideEffect[-1] : &:r2258_1, ~m? -# 2258| mu2258_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2258_1 -# 2258| r2258_7(bool) = Constant[0] : -# 2258| v2258_8(void) = ConditionalBranch : r2258_7 +# 35| Block 746 +# 35| r35_10445(glval) = VariableAddress[x746] : +# 35| mu35_10446(String) = Uninitialized[x746] : &:r35_10445 +# 35| r35_10447(glval) = FunctionAddress[String] : +# 35| v35_10448(void) = Call[String] : func:r35_10447, this:r35_10445 +# 35| mu35_10449(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10450(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10445 +# 35| r35_10451(glval) = VariableAddress[x746] : +# 35| r35_10452(glval) = FunctionAddress[~String] : +# 35| v35_10453(void) = Call[~String] : func:r35_10452, this:r35_10451 +# 35| mu35_10454(unknown) = ^CallSideEffect : ~m? +# 35| v35_10455(void) = ^IndirectReadSideEffect[-1] : &:r35_10451, ~m? +# 35| mu35_10456(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10451 +# 35| r35_10457(bool) = Constant[0] : +# 35| v35_10458(void) = ConditionalBranch : r35_10457 #-----| False -> Block 747 #-----| True -> Block 1026 -# 2260| Block 747 -# 2260| r2260_1(glval) = VariableAddress[x747] : -# 2260| mu2260_2(String) = Uninitialized[x747] : &:r2260_1 -# 2260| r2260_3(glval) = FunctionAddress[String] : -# 2260| v2260_4(void) = Call[String] : func:r2260_3, this:r2260_1 -# 2260| mu2260_5(unknown) = ^CallSideEffect : ~m? -# 2260| mu2260_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2260_1 -# 2261| r2261_1(glval) = VariableAddress[x747] : -# 2261| r2261_2(glval) = FunctionAddress[~String] : -# 2261| v2261_3(void) = Call[~String] : func:r2261_2, this:r2261_1 -# 2261| mu2261_4(unknown) = ^CallSideEffect : ~m? -# 2261| v2261_5(void) = ^IndirectReadSideEffect[-1] : &:r2261_1, ~m? -# 2261| mu2261_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2261_1 -# 2261| r2261_7(bool) = Constant[0] : -# 2261| v2261_8(void) = ConditionalBranch : r2261_7 +# 35| Block 747 +# 35| r35_10459(glval) = VariableAddress[x747] : +# 35| mu35_10460(String) = Uninitialized[x747] : &:r35_10459 +# 35| r35_10461(glval) = FunctionAddress[String] : +# 35| v35_10462(void) = Call[String] : func:r35_10461, this:r35_10459 +# 35| mu35_10463(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10464(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10459 +# 35| r35_10465(glval) = VariableAddress[x747] : +# 35| r35_10466(glval) = FunctionAddress[~String] : +# 35| v35_10467(void) = Call[~String] : func:r35_10466, this:r35_10465 +# 35| mu35_10468(unknown) = ^CallSideEffect : ~m? +# 35| v35_10469(void) = ^IndirectReadSideEffect[-1] : &:r35_10465, ~m? +# 35| mu35_10470(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10465 +# 35| r35_10471(bool) = Constant[0] : +# 35| v35_10472(void) = ConditionalBranch : r35_10471 #-----| False -> Block 748 #-----| True -> Block 1026 -# 2263| Block 748 -# 2263| r2263_1(glval) = VariableAddress[x748] : -# 2263| mu2263_2(String) = Uninitialized[x748] : &:r2263_1 -# 2263| r2263_3(glval) = FunctionAddress[String] : -# 2263| v2263_4(void) = Call[String] : func:r2263_3, this:r2263_1 -# 2263| mu2263_5(unknown) = ^CallSideEffect : ~m? -# 2263| mu2263_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2263_1 -# 2264| r2264_1(glval) = VariableAddress[x748] : -# 2264| r2264_2(glval) = FunctionAddress[~String] : -# 2264| v2264_3(void) = Call[~String] : func:r2264_2, this:r2264_1 -# 2264| mu2264_4(unknown) = ^CallSideEffect : ~m? -# 2264| v2264_5(void) = ^IndirectReadSideEffect[-1] : &:r2264_1, ~m? -# 2264| mu2264_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2264_1 -# 2264| r2264_7(bool) = Constant[0] : -# 2264| v2264_8(void) = ConditionalBranch : r2264_7 +# 35| Block 748 +# 35| r35_10473(glval) = VariableAddress[x748] : +# 35| mu35_10474(String) = Uninitialized[x748] : &:r35_10473 +# 35| r35_10475(glval) = FunctionAddress[String] : +# 35| v35_10476(void) = Call[String] : func:r35_10475, this:r35_10473 +# 35| mu35_10477(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10478(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10473 +# 35| r35_10479(glval) = VariableAddress[x748] : +# 35| r35_10480(glval) = FunctionAddress[~String] : +# 35| v35_10481(void) = Call[~String] : func:r35_10480, this:r35_10479 +# 35| mu35_10482(unknown) = ^CallSideEffect : ~m? +# 35| v35_10483(void) = ^IndirectReadSideEffect[-1] : &:r35_10479, ~m? +# 35| mu35_10484(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10479 +# 35| r35_10485(bool) = Constant[0] : +# 35| v35_10486(void) = ConditionalBranch : r35_10485 #-----| False -> Block 749 #-----| True -> Block 1026 -# 2266| Block 749 -# 2266| r2266_1(glval) = VariableAddress[x749] : -# 2266| mu2266_2(String) = Uninitialized[x749] : &:r2266_1 -# 2266| r2266_3(glval) = FunctionAddress[String] : -# 2266| v2266_4(void) = Call[String] : func:r2266_3, this:r2266_1 -# 2266| mu2266_5(unknown) = ^CallSideEffect : ~m? -# 2266| mu2266_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_1 -# 2267| r2267_1(glval) = VariableAddress[x749] : -# 2267| r2267_2(glval) = FunctionAddress[~String] : -# 2267| v2267_3(void) = Call[~String] : func:r2267_2, this:r2267_1 -# 2267| mu2267_4(unknown) = ^CallSideEffect : ~m? -# 2267| v2267_5(void) = ^IndirectReadSideEffect[-1] : &:r2267_1, ~m? -# 2267| mu2267_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2267_1 -# 2267| r2267_7(bool) = Constant[0] : -# 2267| v2267_8(void) = ConditionalBranch : r2267_7 +# 35| Block 749 +# 35| r35_10487(glval) = VariableAddress[x749] : +# 35| mu35_10488(String) = Uninitialized[x749] : &:r35_10487 +# 35| r35_10489(glval) = FunctionAddress[String] : +# 35| v35_10490(void) = Call[String] : func:r35_10489, this:r35_10487 +# 35| mu35_10491(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10492(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10487 +# 35| r35_10493(glval) = VariableAddress[x749] : +# 35| r35_10494(glval) = FunctionAddress[~String] : +# 35| v35_10495(void) = Call[~String] : func:r35_10494, this:r35_10493 +# 35| mu35_10496(unknown) = ^CallSideEffect : ~m? +# 35| v35_10497(void) = ^IndirectReadSideEffect[-1] : &:r35_10493, ~m? +# 35| mu35_10498(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10493 +# 35| r35_10499(bool) = Constant[0] : +# 35| v35_10500(void) = ConditionalBranch : r35_10499 #-----| False -> Block 750 #-----| True -> Block 1026 -# 2269| Block 750 -# 2269| r2269_1(glval) = VariableAddress[x750] : -# 2269| mu2269_2(String) = Uninitialized[x750] : &:r2269_1 -# 2269| r2269_3(glval) = FunctionAddress[String] : -# 2269| v2269_4(void) = Call[String] : func:r2269_3, this:r2269_1 -# 2269| mu2269_5(unknown) = ^CallSideEffect : ~m? -# 2269| mu2269_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2269_1 -# 2270| r2270_1(glval) = VariableAddress[x750] : -# 2270| r2270_2(glval) = FunctionAddress[~String] : -# 2270| v2270_3(void) = Call[~String] : func:r2270_2, this:r2270_1 -# 2270| mu2270_4(unknown) = ^CallSideEffect : ~m? -# 2270| v2270_5(void) = ^IndirectReadSideEffect[-1] : &:r2270_1, ~m? -# 2270| mu2270_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2270_1 -# 2270| r2270_7(bool) = Constant[0] : -# 2270| v2270_8(void) = ConditionalBranch : r2270_7 +# 35| Block 750 +# 35| r35_10501(glval) = VariableAddress[x750] : +# 35| mu35_10502(String) = Uninitialized[x750] : &:r35_10501 +# 35| r35_10503(glval) = FunctionAddress[String] : +# 35| v35_10504(void) = Call[String] : func:r35_10503, this:r35_10501 +# 35| mu35_10505(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10506(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10501 +# 35| r35_10507(glval) = VariableAddress[x750] : +# 35| r35_10508(glval) = FunctionAddress[~String] : +# 35| v35_10509(void) = Call[~String] : func:r35_10508, this:r35_10507 +# 35| mu35_10510(unknown) = ^CallSideEffect : ~m? +# 35| v35_10511(void) = ^IndirectReadSideEffect[-1] : &:r35_10507, ~m? +# 35| mu35_10512(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10507 +# 35| r35_10513(bool) = Constant[0] : +# 35| v35_10514(void) = ConditionalBranch : r35_10513 #-----| False -> Block 751 #-----| True -> Block 1026 -# 2272| Block 751 -# 2272| r2272_1(glval) = VariableAddress[x751] : -# 2272| mu2272_2(String) = Uninitialized[x751] : &:r2272_1 -# 2272| r2272_3(glval) = FunctionAddress[String] : -# 2272| v2272_4(void) = Call[String] : func:r2272_3, this:r2272_1 -# 2272| mu2272_5(unknown) = ^CallSideEffect : ~m? -# 2272| mu2272_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2272_1 -# 2273| r2273_1(glval) = VariableAddress[x751] : -# 2273| r2273_2(glval) = FunctionAddress[~String] : -# 2273| v2273_3(void) = Call[~String] : func:r2273_2, this:r2273_1 -# 2273| mu2273_4(unknown) = ^CallSideEffect : ~m? -# 2273| v2273_5(void) = ^IndirectReadSideEffect[-1] : &:r2273_1, ~m? -# 2273| mu2273_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2273_1 -# 2273| r2273_7(bool) = Constant[0] : -# 2273| v2273_8(void) = ConditionalBranch : r2273_7 +# 35| Block 751 +# 35| r35_10515(glval) = VariableAddress[x751] : +# 35| mu35_10516(String) = Uninitialized[x751] : &:r35_10515 +# 35| r35_10517(glval) = FunctionAddress[String] : +# 35| v35_10518(void) = Call[String] : func:r35_10517, this:r35_10515 +# 35| mu35_10519(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10520(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10515 +# 35| r35_10521(glval) = VariableAddress[x751] : +# 35| r35_10522(glval) = FunctionAddress[~String] : +# 35| v35_10523(void) = Call[~String] : func:r35_10522, this:r35_10521 +# 35| mu35_10524(unknown) = ^CallSideEffect : ~m? +# 35| v35_10525(void) = ^IndirectReadSideEffect[-1] : &:r35_10521, ~m? +# 35| mu35_10526(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10521 +# 35| r35_10527(bool) = Constant[0] : +# 35| v35_10528(void) = ConditionalBranch : r35_10527 #-----| False -> Block 752 #-----| True -> Block 1026 -# 2275| Block 752 -# 2275| r2275_1(glval) = VariableAddress[x752] : -# 2275| mu2275_2(String) = Uninitialized[x752] : &:r2275_1 -# 2275| r2275_3(glval) = FunctionAddress[String] : -# 2275| v2275_4(void) = Call[String] : func:r2275_3, this:r2275_1 -# 2275| mu2275_5(unknown) = ^CallSideEffect : ~m? -# 2275| mu2275_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2275_1 -# 2276| r2276_1(glval) = VariableAddress[x752] : -# 2276| r2276_2(glval) = FunctionAddress[~String] : -# 2276| v2276_3(void) = Call[~String] : func:r2276_2, this:r2276_1 -# 2276| mu2276_4(unknown) = ^CallSideEffect : ~m? -# 2276| v2276_5(void) = ^IndirectReadSideEffect[-1] : &:r2276_1, ~m? -# 2276| mu2276_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2276_1 -# 2276| r2276_7(bool) = Constant[0] : -# 2276| v2276_8(void) = ConditionalBranch : r2276_7 +# 35| Block 752 +# 35| r35_10529(glval) = VariableAddress[x752] : +# 35| mu35_10530(String) = Uninitialized[x752] : &:r35_10529 +# 35| r35_10531(glval) = FunctionAddress[String] : +# 35| v35_10532(void) = Call[String] : func:r35_10531, this:r35_10529 +# 35| mu35_10533(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10534(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10529 +# 35| r35_10535(glval) = VariableAddress[x752] : +# 35| r35_10536(glval) = FunctionAddress[~String] : +# 35| v35_10537(void) = Call[~String] : func:r35_10536, this:r35_10535 +# 35| mu35_10538(unknown) = ^CallSideEffect : ~m? +# 35| v35_10539(void) = ^IndirectReadSideEffect[-1] : &:r35_10535, ~m? +# 35| mu35_10540(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10535 +# 35| r35_10541(bool) = Constant[0] : +# 35| v35_10542(void) = ConditionalBranch : r35_10541 #-----| False -> Block 753 #-----| True -> Block 1026 -# 2278| Block 753 -# 2278| r2278_1(glval) = VariableAddress[x753] : -# 2278| mu2278_2(String) = Uninitialized[x753] : &:r2278_1 -# 2278| r2278_3(glval) = FunctionAddress[String] : -# 2278| v2278_4(void) = Call[String] : func:r2278_3, this:r2278_1 -# 2278| mu2278_5(unknown) = ^CallSideEffect : ~m? -# 2278| mu2278_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2278_1 -# 2279| r2279_1(glval) = VariableAddress[x753] : -# 2279| r2279_2(glval) = FunctionAddress[~String] : -# 2279| v2279_3(void) = Call[~String] : func:r2279_2, this:r2279_1 -# 2279| mu2279_4(unknown) = ^CallSideEffect : ~m? -# 2279| v2279_5(void) = ^IndirectReadSideEffect[-1] : &:r2279_1, ~m? -# 2279| mu2279_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2279_1 -# 2279| r2279_7(bool) = Constant[0] : -# 2279| v2279_8(void) = ConditionalBranch : r2279_7 +# 35| Block 753 +# 35| r35_10543(glval) = VariableAddress[x753] : +# 35| mu35_10544(String) = Uninitialized[x753] : &:r35_10543 +# 35| r35_10545(glval) = FunctionAddress[String] : +# 35| v35_10546(void) = Call[String] : func:r35_10545, this:r35_10543 +# 35| mu35_10547(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10548(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10543 +# 35| r35_10549(glval) = VariableAddress[x753] : +# 35| r35_10550(glval) = FunctionAddress[~String] : +# 35| v35_10551(void) = Call[~String] : func:r35_10550, this:r35_10549 +# 35| mu35_10552(unknown) = ^CallSideEffect : ~m? +# 35| v35_10553(void) = ^IndirectReadSideEffect[-1] : &:r35_10549, ~m? +# 35| mu35_10554(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10549 +# 35| r35_10555(bool) = Constant[0] : +# 35| v35_10556(void) = ConditionalBranch : r35_10555 #-----| False -> Block 754 #-----| True -> Block 1026 -# 2281| Block 754 -# 2281| r2281_1(glval) = VariableAddress[x754] : -# 2281| mu2281_2(String) = Uninitialized[x754] : &:r2281_1 -# 2281| r2281_3(glval) = FunctionAddress[String] : -# 2281| v2281_4(void) = Call[String] : func:r2281_3, this:r2281_1 -# 2281| mu2281_5(unknown) = ^CallSideEffect : ~m? -# 2281| mu2281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 -# 2282| r2282_1(glval) = VariableAddress[x754] : -# 2282| r2282_2(glval) = FunctionAddress[~String] : -# 2282| v2282_3(void) = Call[~String] : func:r2282_2, this:r2282_1 -# 2282| mu2282_4(unknown) = ^CallSideEffect : ~m? -# 2282| v2282_5(void) = ^IndirectReadSideEffect[-1] : &:r2282_1, ~m? -# 2282| mu2282_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 -# 2282| r2282_7(bool) = Constant[0] : -# 2282| v2282_8(void) = ConditionalBranch : r2282_7 +# 35| Block 754 +# 35| r35_10557(glval) = VariableAddress[x754] : +# 35| mu35_10558(String) = Uninitialized[x754] : &:r35_10557 +# 35| r35_10559(glval) = FunctionAddress[String] : +# 35| v35_10560(void) = Call[String] : func:r35_10559, this:r35_10557 +# 35| mu35_10561(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10562(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10557 +# 35| r35_10563(glval) = VariableAddress[x754] : +# 35| r35_10564(glval) = FunctionAddress[~String] : +# 35| v35_10565(void) = Call[~String] : func:r35_10564, this:r35_10563 +# 35| mu35_10566(unknown) = ^CallSideEffect : ~m? +# 35| v35_10567(void) = ^IndirectReadSideEffect[-1] : &:r35_10563, ~m? +# 35| mu35_10568(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10563 +# 35| r35_10569(bool) = Constant[0] : +# 35| v35_10570(void) = ConditionalBranch : r35_10569 #-----| False -> Block 755 #-----| True -> Block 1026 -# 2284| Block 755 -# 2284| r2284_1(glval) = VariableAddress[x755] : -# 2284| mu2284_2(String) = Uninitialized[x755] : &:r2284_1 -# 2284| r2284_3(glval) = FunctionAddress[String] : -# 2284| v2284_4(void) = Call[String] : func:r2284_3, this:r2284_1 -# 2284| mu2284_5(unknown) = ^CallSideEffect : ~m? -# 2284| mu2284_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2284_1 -# 2285| r2285_1(glval) = VariableAddress[x755] : -# 2285| r2285_2(glval) = FunctionAddress[~String] : -# 2285| v2285_3(void) = Call[~String] : func:r2285_2, this:r2285_1 -# 2285| mu2285_4(unknown) = ^CallSideEffect : ~m? -# 2285| v2285_5(void) = ^IndirectReadSideEffect[-1] : &:r2285_1, ~m? -# 2285| mu2285_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_1 -# 2285| r2285_7(bool) = Constant[0] : -# 2285| v2285_8(void) = ConditionalBranch : r2285_7 +# 35| Block 755 +# 35| r35_10571(glval) = VariableAddress[x755] : +# 35| mu35_10572(String) = Uninitialized[x755] : &:r35_10571 +# 35| r35_10573(glval) = FunctionAddress[String] : +# 35| v35_10574(void) = Call[String] : func:r35_10573, this:r35_10571 +# 35| mu35_10575(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10576(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10571 +# 35| r35_10577(glval) = VariableAddress[x755] : +# 35| r35_10578(glval) = FunctionAddress[~String] : +# 35| v35_10579(void) = Call[~String] : func:r35_10578, this:r35_10577 +# 35| mu35_10580(unknown) = ^CallSideEffect : ~m? +# 35| v35_10581(void) = ^IndirectReadSideEffect[-1] : &:r35_10577, ~m? +# 35| mu35_10582(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10577 +# 35| r35_10583(bool) = Constant[0] : +# 35| v35_10584(void) = ConditionalBranch : r35_10583 #-----| False -> Block 756 #-----| True -> Block 1026 -# 2287| Block 756 -# 2287| r2287_1(glval) = VariableAddress[x756] : -# 2287| mu2287_2(String) = Uninitialized[x756] : &:r2287_1 -# 2287| r2287_3(glval) = FunctionAddress[String] : -# 2287| v2287_4(void) = Call[String] : func:r2287_3, this:r2287_1 -# 2287| mu2287_5(unknown) = ^CallSideEffect : ~m? -# 2287| mu2287_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2287_1 -# 2288| r2288_1(glval) = VariableAddress[x756] : -# 2288| r2288_2(glval) = FunctionAddress[~String] : -# 2288| v2288_3(void) = Call[~String] : func:r2288_2, this:r2288_1 -# 2288| mu2288_4(unknown) = ^CallSideEffect : ~m? -# 2288| v2288_5(void) = ^IndirectReadSideEffect[-1] : &:r2288_1, ~m? -# 2288| mu2288_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2288_1 -# 2288| r2288_7(bool) = Constant[0] : -# 2288| v2288_8(void) = ConditionalBranch : r2288_7 +# 35| Block 756 +# 35| r35_10585(glval) = VariableAddress[x756] : +# 35| mu35_10586(String) = Uninitialized[x756] : &:r35_10585 +# 35| r35_10587(glval) = FunctionAddress[String] : +# 35| v35_10588(void) = Call[String] : func:r35_10587, this:r35_10585 +# 35| mu35_10589(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10590(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10585 +# 35| r35_10591(glval) = VariableAddress[x756] : +# 35| r35_10592(glval) = FunctionAddress[~String] : +# 35| v35_10593(void) = Call[~String] : func:r35_10592, this:r35_10591 +# 35| mu35_10594(unknown) = ^CallSideEffect : ~m? +# 35| v35_10595(void) = ^IndirectReadSideEffect[-1] : &:r35_10591, ~m? +# 35| mu35_10596(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10591 +# 35| r35_10597(bool) = Constant[0] : +# 35| v35_10598(void) = ConditionalBranch : r35_10597 #-----| False -> Block 757 #-----| True -> Block 1026 -# 2290| Block 757 -# 2290| r2290_1(glval) = VariableAddress[x757] : -# 2290| mu2290_2(String) = Uninitialized[x757] : &:r2290_1 -# 2290| r2290_3(glval) = FunctionAddress[String] : -# 2290| v2290_4(void) = Call[String] : func:r2290_3, this:r2290_1 -# 2290| mu2290_5(unknown) = ^CallSideEffect : ~m? -# 2290| mu2290_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2290_1 -# 2291| r2291_1(glval) = VariableAddress[x757] : -# 2291| r2291_2(glval) = FunctionAddress[~String] : -# 2291| v2291_3(void) = Call[~String] : func:r2291_2, this:r2291_1 -# 2291| mu2291_4(unknown) = ^CallSideEffect : ~m? -# 2291| v2291_5(void) = ^IndirectReadSideEffect[-1] : &:r2291_1, ~m? -# 2291| mu2291_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2291_1 -# 2291| r2291_7(bool) = Constant[0] : -# 2291| v2291_8(void) = ConditionalBranch : r2291_7 +# 35| Block 757 +# 35| r35_10599(glval) = VariableAddress[x757] : +# 35| mu35_10600(String) = Uninitialized[x757] : &:r35_10599 +# 35| r35_10601(glval) = FunctionAddress[String] : +# 35| v35_10602(void) = Call[String] : func:r35_10601, this:r35_10599 +# 35| mu35_10603(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10604(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10599 +# 35| r35_10605(glval) = VariableAddress[x757] : +# 35| r35_10606(glval) = FunctionAddress[~String] : +# 35| v35_10607(void) = Call[~String] : func:r35_10606, this:r35_10605 +# 35| mu35_10608(unknown) = ^CallSideEffect : ~m? +# 35| v35_10609(void) = ^IndirectReadSideEffect[-1] : &:r35_10605, ~m? +# 35| mu35_10610(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10605 +# 35| r35_10611(bool) = Constant[0] : +# 35| v35_10612(void) = ConditionalBranch : r35_10611 #-----| False -> Block 758 #-----| True -> Block 1026 -# 2293| Block 758 -# 2293| r2293_1(glval) = VariableAddress[x758] : -# 2293| mu2293_2(String) = Uninitialized[x758] : &:r2293_1 -# 2293| r2293_3(glval) = FunctionAddress[String] : -# 2293| v2293_4(void) = Call[String] : func:r2293_3, this:r2293_1 -# 2293| mu2293_5(unknown) = ^CallSideEffect : ~m? -# 2293| mu2293_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_1 -# 2294| r2294_1(glval) = VariableAddress[x758] : -# 2294| r2294_2(glval) = FunctionAddress[~String] : -# 2294| v2294_3(void) = Call[~String] : func:r2294_2, this:r2294_1 -# 2294| mu2294_4(unknown) = ^CallSideEffect : ~m? -# 2294| v2294_5(void) = ^IndirectReadSideEffect[-1] : &:r2294_1, ~m? -# 2294| mu2294_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 -# 2294| r2294_7(bool) = Constant[0] : -# 2294| v2294_8(void) = ConditionalBranch : r2294_7 +# 35| Block 758 +# 35| r35_10613(glval) = VariableAddress[x758] : +# 35| mu35_10614(String) = Uninitialized[x758] : &:r35_10613 +# 35| r35_10615(glval) = FunctionAddress[String] : +# 35| v35_10616(void) = Call[String] : func:r35_10615, this:r35_10613 +# 35| mu35_10617(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10618(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10613 +# 35| r35_10619(glval) = VariableAddress[x758] : +# 35| r35_10620(glval) = FunctionAddress[~String] : +# 35| v35_10621(void) = Call[~String] : func:r35_10620, this:r35_10619 +# 35| mu35_10622(unknown) = ^CallSideEffect : ~m? +# 35| v35_10623(void) = ^IndirectReadSideEffect[-1] : &:r35_10619, ~m? +# 35| mu35_10624(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10619 +# 35| r35_10625(bool) = Constant[0] : +# 35| v35_10626(void) = ConditionalBranch : r35_10625 #-----| False -> Block 759 #-----| True -> Block 1026 -# 2296| Block 759 -# 2296| r2296_1(glval) = VariableAddress[x759] : -# 2296| mu2296_2(String) = Uninitialized[x759] : &:r2296_1 -# 2296| r2296_3(glval) = FunctionAddress[String] : -# 2296| v2296_4(void) = Call[String] : func:r2296_3, this:r2296_1 -# 2296| mu2296_5(unknown) = ^CallSideEffect : ~m? -# 2296| mu2296_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2296_1 -# 2297| r2297_1(glval) = VariableAddress[x759] : -# 2297| r2297_2(glval) = FunctionAddress[~String] : -# 2297| v2297_3(void) = Call[~String] : func:r2297_2, this:r2297_1 -# 2297| mu2297_4(unknown) = ^CallSideEffect : ~m? -# 2297| v2297_5(void) = ^IndirectReadSideEffect[-1] : &:r2297_1, ~m? -# 2297| mu2297_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 -# 2297| r2297_7(bool) = Constant[0] : -# 2297| v2297_8(void) = ConditionalBranch : r2297_7 +# 35| Block 759 +# 35| r35_10627(glval) = VariableAddress[x759] : +# 35| mu35_10628(String) = Uninitialized[x759] : &:r35_10627 +# 35| r35_10629(glval) = FunctionAddress[String] : +# 35| v35_10630(void) = Call[String] : func:r35_10629, this:r35_10627 +# 35| mu35_10631(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10632(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10627 +# 35| r35_10633(glval) = VariableAddress[x759] : +# 35| r35_10634(glval) = FunctionAddress[~String] : +# 35| v35_10635(void) = Call[~String] : func:r35_10634, this:r35_10633 +# 35| mu35_10636(unknown) = ^CallSideEffect : ~m? +# 35| v35_10637(void) = ^IndirectReadSideEffect[-1] : &:r35_10633, ~m? +# 35| mu35_10638(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10633 +# 35| r35_10639(bool) = Constant[0] : +# 35| v35_10640(void) = ConditionalBranch : r35_10639 #-----| False -> Block 760 #-----| True -> Block 1026 -# 2299| Block 760 -# 2299| r2299_1(glval) = VariableAddress[x760] : -# 2299| mu2299_2(String) = Uninitialized[x760] : &:r2299_1 -# 2299| r2299_3(glval) = FunctionAddress[String] : -# 2299| v2299_4(void) = Call[String] : func:r2299_3, this:r2299_1 -# 2299| mu2299_5(unknown) = ^CallSideEffect : ~m? -# 2299| mu2299_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_1 -# 2300| r2300_1(glval) = VariableAddress[x760] : -# 2300| r2300_2(glval) = FunctionAddress[~String] : -# 2300| v2300_3(void) = Call[~String] : func:r2300_2, this:r2300_1 -# 2300| mu2300_4(unknown) = ^CallSideEffect : ~m? -# 2300| v2300_5(void) = ^IndirectReadSideEffect[-1] : &:r2300_1, ~m? -# 2300| mu2300_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2300_1 -# 2300| r2300_7(bool) = Constant[0] : -# 2300| v2300_8(void) = ConditionalBranch : r2300_7 +# 35| Block 760 +# 35| r35_10641(glval) = VariableAddress[x760] : +# 35| mu35_10642(String) = Uninitialized[x760] : &:r35_10641 +# 35| r35_10643(glval) = FunctionAddress[String] : +# 35| v35_10644(void) = Call[String] : func:r35_10643, this:r35_10641 +# 35| mu35_10645(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10646(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10641 +# 35| r35_10647(glval) = VariableAddress[x760] : +# 35| r35_10648(glval) = FunctionAddress[~String] : +# 35| v35_10649(void) = Call[~String] : func:r35_10648, this:r35_10647 +# 35| mu35_10650(unknown) = ^CallSideEffect : ~m? +# 35| v35_10651(void) = ^IndirectReadSideEffect[-1] : &:r35_10647, ~m? +# 35| mu35_10652(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10647 +# 35| r35_10653(bool) = Constant[0] : +# 35| v35_10654(void) = ConditionalBranch : r35_10653 #-----| False -> Block 761 #-----| True -> Block 1026 -# 2302| Block 761 -# 2302| r2302_1(glval) = VariableAddress[x761] : -# 2302| mu2302_2(String) = Uninitialized[x761] : &:r2302_1 -# 2302| r2302_3(glval) = FunctionAddress[String] : -# 2302| v2302_4(void) = Call[String] : func:r2302_3, this:r2302_1 -# 2302| mu2302_5(unknown) = ^CallSideEffect : ~m? -# 2302| mu2302_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2302_1 -# 2303| r2303_1(glval) = VariableAddress[x761] : -# 2303| r2303_2(glval) = FunctionAddress[~String] : -# 2303| v2303_3(void) = Call[~String] : func:r2303_2, this:r2303_1 -# 2303| mu2303_4(unknown) = ^CallSideEffect : ~m? -# 2303| v2303_5(void) = ^IndirectReadSideEffect[-1] : &:r2303_1, ~m? -# 2303| mu2303_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_1 -# 2303| r2303_7(bool) = Constant[0] : -# 2303| v2303_8(void) = ConditionalBranch : r2303_7 +# 35| Block 761 +# 35| r35_10655(glval) = VariableAddress[x761] : +# 35| mu35_10656(String) = Uninitialized[x761] : &:r35_10655 +# 35| r35_10657(glval) = FunctionAddress[String] : +# 35| v35_10658(void) = Call[String] : func:r35_10657, this:r35_10655 +# 35| mu35_10659(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10660(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10655 +# 35| r35_10661(glval) = VariableAddress[x761] : +# 35| r35_10662(glval) = FunctionAddress[~String] : +# 35| v35_10663(void) = Call[~String] : func:r35_10662, this:r35_10661 +# 35| mu35_10664(unknown) = ^CallSideEffect : ~m? +# 35| v35_10665(void) = ^IndirectReadSideEffect[-1] : &:r35_10661, ~m? +# 35| mu35_10666(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10661 +# 35| r35_10667(bool) = Constant[0] : +# 35| v35_10668(void) = ConditionalBranch : r35_10667 #-----| False -> Block 762 #-----| True -> Block 1026 -# 2305| Block 762 -# 2305| r2305_1(glval) = VariableAddress[x762] : -# 2305| mu2305_2(String) = Uninitialized[x762] : &:r2305_1 -# 2305| r2305_3(glval) = FunctionAddress[String] : -# 2305| v2305_4(void) = Call[String] : func:r2305_3, this:r2305_1 -# 2305| mu2305_5(unknown) = ^CallSideEffect : ~m? -# 2305| mu2305_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2305_1 -# 2306| r2306_1(glval) = VariableAddress[x762] : -# 2306| r2306_2(glval) = FunctionAddress[~String] : -# 2306| v2306_3(void) = Call[~String] : func:r2306_2, this:r2306_1 -# 2306| mu2306_4(unknown) = ^CallSideEffect : ~m? -# 2306| v2306_5(void) = ^IndirectReadSideEffect[-1] : &:r2306_1, ~m? -# 2306| mu2306_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_1 -# 2306| r2306_7(bool) = Constant[0] : -# 2306| v2306_8(void) = ConditionalBranch : r2306_7 +# 35| Block 762 +# 35| r35_10669(glval) = VariableAddress[x762] : +# 35| mu35_10670(String) = Uninitialized[x762] : &:r35_10669 +# 35| r35_10671(glval) = FunctionAddress[String] : +# 35| v35_10672(void) = Call[String] : func:r35_10671, this:r35_10669 +# 35| mu35_10673(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10674(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10669 +# 35| r35_10675(glval) = VariableAddress[x762] : +# 35| r35_10676(glval) = FunctionAddress[~String] : +# 35| v35_10677(void) = Call[~String] : func:r35_10676, this:r35_10675 +# 35| mu35_10678(unknown) = ^CallSideEffect : ~m? +# 35| v35_10679(void) = ^IndirectReadSideEffect[-1] : &:r35_10675, ~m? +# 35| mu35_10680(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10675 +# 35| r35_10681(bool) = Constant[0] : +# 35| v35_10682(void) = ConditionalBranch : r35_10681 #-----| False -> Block 763 #-----| True -> Block 1026 -# 2308| Block 763 -# 2308| r2308_1(glval) = VariableAddress[x763] : -# 2308| mu2308_2(String) = Uninitialized[x763] : &:r2308_1 -# 2308| r2308_3(glval) = FunctionAddress[String] : -# 2308| v2308_4(void) = Call[String] : func:r2308_3, this:r2308_1 -# 2308| mu2308_5(unknown) = ^CallSideEffect : ~m? -# 2308| mu2308_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_1 -# 2309| r2309_1(glval) = VariableAddress[x763] : -# 2309| r2309_2(glval) = FunctionAddress[~String] : -# 2309| v2309_3(void) = Call[~String] : func:r2309_2, this:r2309_1 -# 2309| mu2309_4(unknown) = ^CallSideEffect : ~m? -# 2309| v2309_5(void) = ^IndirectReadSideEffect[-1] : &:r2309_1, ~m? -# 2309| mu2309_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2309_1 -# 2309| r2309_7(bool) = Constant[0] : -# 2309| v2309_8(void) = ConditionalBranch : r2309_7 +# 35| Block 763 +# 35| r35_10683(glval) = VariableAddress[x763] : +# 35| mu35_10684(String) = Uninitialized[x763] : &:r35_10683 +# 35| r35_10685(glval) = FunctionAddress[String] : +# 35| v35_10686(void) = Call[String] : func:r35_10685, this:r35_10683 +# 35| mu35_10687(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10688(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10683 +# 35| r35_10689(glval) = VariableAddress[x763] : +# 35| r35_10690(glval) = FunctionAddress[~String] : +# 35| v35_10691(void) = Call[~String] : func:r35_10690, this:r35_10689 +# 35| mu35_10692(unknown) = ^CallSideEffect : ~m? +# 35| v35_10693(void) = ^IndirectReadSideEffect[-1] : &:r35_10689, ~m? +# 35| mu35_10694(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10689 +# 35| r35_10695(bool) = Constant[0] : +# 35| v35_10696(void) = ConditionalBranch : r35_10695 #-----| False -> Block 764 #-----| True -> Block 1026 -# 2311| Block 764 -# 2311| r2311_1(glval) = VariableAddress[x764] : -# 2311| mu2311_2(String) = Uninitialized[x764] : &:r2311_1 -# 2311| r2311_3(glval) = FunctionAddress[String] : -# 2311| v2311_4(void) = Call[String] : func:r2311_3, this:r2311_1 -# 2311| mu2311_5(unknown) = ^CallSideEffect : ~m? -# 2311| mu2311_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_1 -# 2312| r2312_1(glval) = VariableAddress[x764] : -# 2312| r2312_2(glval) = FunctionAddress[~String] : -# 2312| v2312_3(void) = Call[~String] : func:r2312_2, this:r2312_1 -# 2312| mu2312_4(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_5(void) = ^IndirectReadSideEffect[-1] : &:r2312_1, ~m? -# 2312| mu2312_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_1 -# 2312| r2312_7(bool) = Constant[0] : -# 2312| v2312_8(void) = ConditionalBranch : r2312_7 +# 35| Block 764 +# 35| r35_10697(glval) = VariableAddress[x764] : +# 35| mu35_10698(String) = Uninitialized[x764] : &:r35_10697 +# 35| r35_10699(glval) = FunctionAddress[String] : +# 35| v35_10700(void) = Call[String] : func:r35_10699, this:r35_10697 +# 35| mu35_10701(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10702(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10697 +# 35| r35_10703(glval) = VariableAddress[x764] : +# 35| r35_10704(glval) = FunctionAddress[~String] : +# 35| v35_10705(void) = Call[~String] : func:r35_10704, this:r35_10703 +# 35| mu35_10706(unknown) = ^CallSideEffect : ~m? +# 35| v35_10707(void) = ^IndirectReadSideEffect[-1] : &:r35_10703, ~m? +# 35| mu35_10708(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10703 +# 35| r35_10709(bool) = Constant[0] : +# 35| v35_10710(void) = ConditionalBranch : r35_10709 #-----| False -> Block 765 #-----| True -> Block 1026 -# 2314| Block 765 -# 2314| r2314_1(glval) = VariableAddress[x765] : -# 2314| mu2314_2(String) = Uninitialized[x765] : &:r2314_1 -# 2314| r2314_3(glval) = FunctionAddress[String] : -# 2314| v2314_4(void) = Call[String] : func:r2314_3, this:r2314_1 -# 2314| mu2314_5(unknown) = ^CallSideEffect : ~m? -# 2314| mu2314_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_1 -# 2315| r2315_1(glval) = VariableAddress[x765] : -# 2315| r2315_2(glval) = FunctionAddress[~String] : -# 2315| v2315_3(void) = Call[~String] : func:r2315_2, this:r2315_1 -# 2315| mu2315_4(unknown) = ^CallSideEffect : ~m? -# 2315| v2315_5(void) = ^IndirectReadSideEffect[-1] : &:r2315_1, ~m? -# 2315| mu2315_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2315_1 -# 2315| r2315_7(bool) = Constant[0] : -# 2315| v2315_8(void) = ConditionalBranch : r2315_7 +# 35| Block 765 +# 35| r35_10711(glval) = VariableAddress[x765] : +# 35| mu35_10712(String) = Uninitialized[x765] : &:r35_10711 +# 35| r35_10713(glval) = FunctionAddress[String] : +# 35| v35_10714(void) = Call[String] : func:r35_10713, this:r35_10711 +# 35| mu35_10715(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10716(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10711 +# 35| r35_10717(glval) = VariableAddress[x765] : +# 35| r35_10718(glval) = FunctionAddress[~String] : +# 35| v35_10719(void) = Call[~String] : func:r35_10718, this:r35_10717 +# 35| mu35_10720(unknown) = ^CallSideEffect : ~m? +# 35| v35_10721(void) = ^IndirectReadSideEffect[-1] : &:r35_10717, ~m? +# 35| mu35_10722(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10717 +# 35| r35_10723(bool) = Constant[0] : +# 35| v35_10724(void) = ConditionalBranch : r35_10723 #-----| False -> Block 766 #-----| True -> Block 1026 -# 2317| Block 766 -# 2317| r2317_1(glval) = VariableAddress[x766] : -# 2317| mu2317_2(String) = Uninitialized[x766] : &:r2317_1 -# 2317| r2317_3(glval) = FunctionAddress[String] : -# 2317| v2317_4(void) = Call[String] : func:r2317_3, this:r2317_1 -# 2317| mu2317_5(unknown) = ^CallSideEffect : ~m? -# 2317| mu2317_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2317_1 -# 2318| r2318_1(glval) = VariableAddress[x766] : -# 2318| r2318_2(glval) = FunctionAddress[~String] : -# 2318| v2318_3(void) = Call[~String] : func:r2318_2, this:r2318_1 -# 2318| mu2318_4(unknown) = ^CallSideEffect : ~m? -# 2318| v2318_5(void) = ^IndirectReadSideEffect[-1] : &:r2318_1, ~m? -# 2318| mu2318_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2318_1 -# 2318| r2318_7(bool) = Constant[0] : -# 2318| v2318_8(void) = ConditionalBranch : r2318_7 +# 35| Block 766 +# 35| r35_10725(glval) = VariableAddress[x766] : +# 35| mu35_10726(String) = Uninitialized[x766] : &:r35_10725 +# 35| r35_10727(glval) = FunctionAddress[String] : +# 35| v35_10728(void) = Call[String] : func:r35_10727, this:r35_10725 +# 35| mu35_10729(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10730(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10725 +# 35| r35_10731(glval) = VariableAddress[x766] : +# 35| r35_10732(glval) = FunctionAddress[~String] : +# 35| v35_10733(void) = Call[~String] : func:r35_10732, this:r35_10731 +# 35| mu35_10734(unknown) = ^CallSideEffect : ~m? +# 35| v35_10735(void) = ^IndirectReadSideEffect[-1] : &:r35_10731, ~m? +# 35| mu35_10736(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10731 +# 35| r35_10737(bool) = Constant[0] : +# 35| v35_10738(void) = ConditionalBranch : r35_10737 #-----| False -> Block 767 #-----| True -> Block 1026 -# 2320| Block 767 -# 2320| r2320_1(glval) = VariableAddress[x767] : -# 2320| mu2320_2(String) = Uninitialized[x767] : &:r2320_1 -# 2320| r2320_3(glval) = FunctionAddress[String] : -# 2320| v2320_4(void) = Call[String] : func:r2320_3, this:r2320_1 -# 2320| mu2320_5(unknown) = ^CallSideEffect : ~m? -# 2320| mu2320_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2320_1 -# 2321| r2321_1(glval) = VariableAddress[x767] : -# 2321| r2321_2(glval) = FunctionAddress[~String] : -# 2321| v2321_3(void) = Call[~String] : func:r2321_2, this:r2321_1 -# 2321| mu2321_4(unknown) = ^CallSideEffect : ~m? -# 2321| v2321_5(void) = ^IndirectReadSideEffect[-1] : &:r2321_1, ~m? -# 2321| mu2321_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2321_1 -# 2321| r2321_7(bool) = Constant[0] : -# 2321| v2321_8(void) = ConditionalBranch : r2321_7 +# 35| Block 767 +# 35| r35_10739(glval) = VariableAddress[x767] : +# 35| mu35_10740(String) = Uninitialized[x767] : &:r35_10739 +# 35| r35_10741(glval) = FunctionAddress[String] : +# 35| v35_10742(void) = Call[String] : func:r35_10741, this:r35_10739 +# 35| mu35_10743(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10744(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10739 +# 35| r35_10745(glval) = VariableAddress[x767] : +# 35| r35_10746(glval) = FunctionAddress[~String] : +# 35| v35_10747(void) = Call[~String] : func:r35_10746, this:r35_10745 +# 35| mu35_10748(unknown) = ^CallSideEffect : ~m? +# 35| v35_10749(void) = ^IndirectReadSideEffect[-1] : &:r35_10745, ~m? +# 35| mu35_10750(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10745 +# 35| r35_10751(bool) = Constant[0] : +# 35| v35_10752(void) = ConditionalBranch : r35_10751 #-----| False -> Block 768 #-----| True -> Block 1026 -# 2323| Block 768 -# 2323| r2323_1(glval) = VariableAddress[x768] : -# 2323| mu2323_2(String) = Uninitialized[x768] : &:r2323_1 -# 2323| r2323_3(glval) = FunctionAddress[String] : -# 2323| v2323_4(void) = Call[String] : func:r2323_3, this:r2323_1 -# 2323| mu2323_5(unknown) = ^CallSideEffect : ~m? -# 2323| mu2323_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2323_1 -# 2324| r2324_1(glval) = VariableAddress[x768] : -# 2324| r2324_2(glval) = FunctionAddress[~String] : -# 2324| v2324_3(void) = Call[~String] : func:r2324_2, this:r2324_1 -# 2324| mu2324_4(unknown) = ^CallSideEffect : ~m? -# 2324| v2324_5(void) = ^IndirectReadSideEffect[-1] : &:r2324_1, ~m? -# 2324| mu2324_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2324_1 -# 2324| r2324_7(bool) = Constant[0] : -# 2324| v2324_8(void) = ConditionalBranch : r2324_7 +# 35| Block 768 +# 35| r35_10753(glval) = VariableAddress[x768] : +# 35| mu35_10754(String) = Uninitialized[x768] : &:r35_10753 +# 35| r35_10755(glval) = FunctionAddress[String] : +# 35| v35_10756(void) = Call[String] : func:r35_10755, this:r35_10753 +# 35| mu35_10757(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10758(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10753 +# 35| r35_10759(glval) = VariableAddress[x768] : +# 35| r35_10760(glval) = FunctionAddress[~String] : +# 35| v35_10761(void) = Call[~String] : func:r35_10760, this:r35_10759 +# 35| mu35_10762(unknown) = ^CallSideEffect : ~m? +# 35| v35_10763(void) = ^IndirectReadSideEffect[-1] : &:r35_10759, ~m? +# 35| mu35_10764(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10759 +# 35| r35_10765(bool) = Constant[0] : +# 35| v35_10766(void) = ConditionalBranch : r35_10765 #-----| False -> Block 769 #-----| True -> Block 1026 -# 2326| Block 769 -# 2326| r2326_1(glval) = VariableAddress[x769] : -# 2326| mu2326_2(String) = Uninitialized[x769] : &:r2326_1 -# 2326| r2326_3(glval) = FunctionAddress[String] : -# 2326| v2326_4(void) = Call[String] : func:r2326_3, this:r2326_1 -# 2326| mu2326_5(unknown) = ^CallSideEffect : ~m? -# 2326| mu2326_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2326_1 -# 2327| r2327_1(glval) = VariableAddress[x769] : -# 2327| r2327_2(glval) = FunctionAddress[~String] : -# 2327| v2327_3(void) = Call[~String] : func:r2327_2, this:r2327_1 -# 2327| mu2327_4(unknown) = ^CallSideEffect : ~m? -# 2327| v2327_5(void) = ^IndirectReadSideEffect[-1] : &:r2327_1, ~m? -# 2327| mu2327_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2327_1 -# 2327| r2327_7(bool) = Constant[0] : -# 2327| v2327_8(void) = ConditionalBranch : r2327_7 +# 35| Block 769 +# 35| r35_10767(glval) = VariableAddress[x769] : +# 35| mu35_10768(String) = Uninitialized[x769] : &:r35_10767 +# 35| r35_10769(glval) = FunctionAddress[String] : +# 35| v35_10770(void) = Call[String] : func:r35_10769, this:r35_10767 +# 35| mu35_10771(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10772(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10767 +# 35| r35_10773(glval) = VariableAddress[x769] : +# 35| r35_10774(glval) = FunctionAddress[~String] : +# 35| v35_10775(void) = Call[~String] : func:r35_10774, this:r35_10773 +# 35| mu35_10776(unknown) = ^CallSideEffect : ~m? +# 35| v35_10777(void) = ^IndirectReadSideEffect[-1] : &:r35_10773, ~m? +# 35| mu35_10778(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10773 +# 35| r35_10779(bool) = Constant[0] : +# 35| v35_10780(void) = ConditionalBranch : r35_10779 #-----| False -> Block 770 #-----| True -> Block 1026 -# 2329| Block 770 -# 2329| r2329_1(glval) = VariableAddress[x770] : -# 2329| mu2329_2(String) = Uninitialized[x770] : &:r2329_1 -# 2329| r2329_3(glval) = FunctionAddress[String] : -# 2329| v2329_4(void) = Call[String] : func:r2329_3, this:r2329_1 -# 2329| mu2329_5(unknown) = ^CallSideEffect : ~m? -# 2329| mu2329_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2329_1 -# 2330| r2330_1(glval) = VariableAddress[x770] : -# 2330| r2330_2(glval) = FunctionAddress[~String] : -# 2330| v2330_3(void) = Call[~String] : func:r2330_2, this:r2330_1 -# 2330| mu2330_4(unknown) = ^CallSideEffect : ~m? -# 2330| v2330_5(void) = ^IndirectReadSideEffect[-1] : &:r2330_1, ~m? -# 2330| mu2330_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2330_1 -# 2330| r2330_7(bool) = Constant[0] : -# 2330| v2330_8(void) = ConditionalBranch : r2330_7 +# 35| Block 770 +# 35| r35_10781(glval) = VariableAddress[x770] : +# 35| mu35_10782(String) = Uninitialized[x770] : &:r35_10781 +# 35| r35_10783(glval) = FunctionAddress[String] : +# 35| v35_10784(void) = Call[String] : func:r35_10783, this:r35_10781 +# 35| mu35_10785(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10786(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10781 +# 35| r35_10787(glval) = VariableAddress[x770] : +# 35| r35_10788(glval) = FunctionAddress[~String] : +# 35| v35_10789(void) = Call[~String] : func:r35_10788, this:r35_10787 +# 35| mu35_10790(unknown) = ^CallSideEffect : ~m? +# 35| v35_10791(void) = ^IndirectReadSideEffect[-1] : &:r35_10787, ~m? +# 35| mu35_10792(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10787 +# 35| r35_10793(bool) = Constant[0] : +# 35| v35_10794(void) = ConditionalBranch : r35_10793 #-----| False -> Block 771 #-----| True -> Block 1026 -# 2332| Block 771 -# 2332| r2332_1(glval) = VariableAddress[x771] : -# 2332| mu2332_2(String) = Uninitialized[x771] : &:r2332_1 -# 2332| r2332_3(glval) = FunctionAddress[String] : -# 2332| v2332_4(void) = Call[String] : func:r2332_3, this:r2332_1 -# 2332| mu2332_5(unknown) = ^CallSideEffect : ~m? -# 2332| mu2332_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2332_1 -# 2333| r2333_1(glval) = VariableAddress[x771] : -# 2333| r2333_2(glval) = FunctionAddress[~String] : -# 2333| v2333_3(void) = Call[~String] : func:r2333_2, this:r2333_1 -# 2333| mu2333_4(unknown) = ^CallSideEffect : ~m? -# 2333| v2333_5(void) = ^IndirectReadSideEffect[-1] : &:r2333_1, ~m? -# 2333| mu2333_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2333_1 -# 2333| r2333_7(bool) = Constant[0] : -# 2333| v2333_8(void) = ConditionalBranch : r2333_7 +# 35| Block 771 +# 35| r35_10795(glval) = VariableAddress[x771] : +# 35| mu35_10796(String) = Uninitialized[x771] : &:r35_10795 +# 35| r35_10797(glval) = FunctionAddress[String] : +# 35| v35_10798(void) = Call[String] : func:r35_10797, this:r35_10795 +# 35| mu35_10799(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10800(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10795 +# 35| r35_10801(glval) = VariableAddress[x771] : +# 35| r35_10802(glval) = FunctionAddress[~String] : +# 35| v35_10803(void) = Call[~String] : func:r35_10802, this:r35_10801 +# 35| mu35_10804(unknown) = ^CallSideEffect : ~m? +# 35| v35_10805(void) = ^IndirectReadSideEffect[-1] : &:r35_10801, ~m? +# 35| mu35_10806(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10801 +# 35| r35_10807(bool) = Constant[0] : +# 35| v35_10808(void) = ConditionalBranch : r35_10807 #-----| False -> Block 772 #-----| True -> Block 1026 -# 2335| Block 772 -# 2335| r2335_1(glval) = VariableAddress[x772] : -# 2335| mu2335_2(String) = Uninitialized[x772] : &:r2335_1 -# 2335| r2335_3(glval) = FunctionAddress[String] : -# 2335| v2335_4(void) = Call[String] : func:r2335_3, this:r2335_1 -# 2335| mu2335_5(unknown) = ^CallSideEffect : ~m? -# 2335| mu2335_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2335_1 -# 2336| r2336_1(glval) = VariableAddress[x772] : -# 2336| r2336_2(glval) = FunctionAddress[~String] : -# 2336| v2336_3(void) = Call[~String] : func:r2336_2, this:r2336_1 -# 2336| mu2336_4(unknown) = ^CallSideEffect : ~m? -# 2336| v2336_5(void) = ^IndirectReadSideEffect[-1] : &:r2336_1, ~m? -# 2336| mu2336_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 -# 2336| r2336_7(bool) = Constant[0] : -# 2336| v2336_8(void) = ConditionalBranch : r2336_7 +# 35| Block 772 +# 35| r35_10809(glval) = VariableAddress[x772] : +# 35| mu35_10810(String) = Uninitialized[x772] : &:r35_10809 +# 35| r35_10811(glval) = FunctionAddress[String] : +# 35| v35_10812(void) = Call[String] : func:r35_10811, this:r35_10809 +# 35| mu35_10813(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10814(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10809 +# 35| r35_10815(glval) = VariableAddress[x772] : +# 35| r35_10816(glval) = FunctionAddress[~String] : +# 35| v35_10817(void) = Call[~String] : func:r35_10816, this:r35_10815 +# 35| mu35_10818(unknown) = ^CallSideEffect : ~m? +# 35| v35_10819(void) = ^IndirectReadSideEffect[-1] : &:r35_10815, ~m? +# 35| mu35_10820(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10815 +# 35| r35_10821(bool) = Constant[0] : +# 35| v35_10822(void) = ConditionalBranch : r35_10821 #-----| False -> Block 773 #-----| True -> Block 1026 -# 2338| Block 773 -# 2338| r2338_1(glval) = VariableAddress[x773] : -# 2338| mu2338_2(String) = Uninitialized[x773] : &:r2338_1 -# 2338| r2338_3(glval) = FunctionAddress[String] : -# 2338| v2338_4(void) = Call[String] : func:r2338_3, this:r2338_1 -# 2338| mu2338_5(unknown) = ^CallSideEffect : ~m? -# 2338| mu2338_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2338_1 -# 2339| r2339_1(glval) = VariableAddress[x773] : -# 2339| r2339_2(glval) = FunctionAddress[~String] : -# 2339| v2339_3(void) = Call[~String] : func:r2339_2, this:r2339_1 -# 2339| mu2339_4(unknown) = ^CallSideEffect : ~m? -# 2339| v2339_5(void) = ^IndirectReadSideEffect[-1] : &:r2339_1, ~m? -# 2339| mu2339_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2339_1 -# 2339| r2339_7(bool) = Constant[0] : -# 2339| v2339_8(void) = ConditionalBranch : r2339_7 +# 35| Block 773 +# 35| r35_10823(glval) = VariableAddress[x773] : +# 35| mu35_10824(String) = Uninitialized[x773] : &:r35_10823 +# 35| r35_10825(glval) = FunctionAddress[String] : +# 35| v35_10826(void) = Call[String] : func:r35_10825, this:r35_10823 +# 35| mu35_10827(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10828(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10823 +# 35| r35_10829(glval) = VariableAddress[x773] : +# 35| r35_10830(glval) = FunctionAddress[~String] : +# 35| v35_10831(void) = Call[~String] : func:r35_10830, this:r35_10829 +# 35| mu35_10832(unknown) = ^CallSideEffect : ~m? +# 35| v35_10833(void) = ^IndirectReadSideEffect[-1] : &:r35_10829, ~m? +# 35| mu35_10834(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10829 +# 35| r35_10835(bool) = Constant[0] : +# 35| v35_10836(void) = ConditionalBranch : r35_10835 #-----| False -> Block 774 #-----| True -> Block 1026 -# 2341| Block 774 -# 2341| r2341_1(glval) = VariableAddress[x774] : -# 2341| mu2341_2(String) = Uninitialized[x774] : &:r2341_1 -# 2341| r2341_3(glval) = FunctionAddress[String] : -# 2341| v2341_4(void) = Call[String] : func:r2341_3, this:r2341_1 -# 2341| mu2341_5(unknown) = ^CallSideEffect : ~m? -# 2341| mu2341_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2341_1 -# 2342| r2342_1(glval) = VariableAddress[x774] : -# 2342| r2342_2(glval) = FunctionAddress[~String] : -# 2342| v2342_3(void) = Call[~String] : func:r2342_2, this:r2342_1 -# 2342| mu2342_4(unknown) = ^CallSideEffect : ~m? -# 2342| v2342_5(void) = ^IndirectReadSideEffect[-1] : &:r2342_1, ~m? -# 2342| mu2342_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2342_1 -# 2342| r2342_7(bool) = Constant[0] : -# 2342| v2342_8(void) = ConditionalBranch : r2342_7 +# 35| Block 774 +# 35| r35_10837(glval) = VariableAddress[x774] : +# 35| mu35_10838(String) = Uninitialized[x774] : &:r35_10837 +# 35| r35_10839(glval) = FunctionAddress[String] : +# 35| v35_10840(void) = Call[String] : func:r35_10839, this:r35_10837 +# 35| mu35_10841(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10842(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10837 +# 35| r35_10843(glval) = VariableAddress[x774] : +# 35| r35_10844(glval) = FunctionAddress[~String] : +# 35| v35_10845(void) = Call[~String] : func:r35_10844, this:r35_10843 +# 35| mu35_10846(unknown) = ^CallSideEffect : ~m? +# 35| v35_10847(void) = ^IndirectReadSideEffect[-1] : &:r35_10843, ~m? +# 35| mu35_10848(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10843 +# 35| r35_10849(bool) = Constant[0] : +# 35| v35_10850(void) = ConditionalBranch : r35_10849 #-----| False -> Block 775 #-----| True -> Block 1026 -# 2344| Block 775 -# 2344| r2344_1(glval) = VariableAddress[x775] : -# 2344| mu2344_2(String) = Uninitialized[x775] : &:r2344_1 -# 2344| r2344_3(glval) = FunctionAddress[String] : -# 2344| v2344_4(void) = Call[String] : func:r2344_3, this:r2344_1 -# 2344| mu2344_5(unknown) = ^CallSideEffect : ~m? -# 2344| mu2344_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2344_1 -# 2345| r2345_1(glval) = VariableAddress[x775] : -# 2345| r2345_2(glval) = FunctionAddress[~String] : -# 2345| v2345_3(void) = Call[~String] : func:r2345_2, this:r2345_1 -# 2345| mu2345_4(unknown) = ^CallSideEffect : ~m? -# 2345| v2345_5(void) = ^IndirectReadSideEffect[-1] : &:r2345_1, ~m? -# 2345| mu2345_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2345_1 -# 2345| r2345_7(bool) = Constant[0] : -# 2345| v2345_8(void) = ConditionalBranch : r2345_7 +# 35| Block 775 +# 35| r35_10851(glval) = VariableAddress[x775] : +# 35| mu35_10852(String) = Uninitialized[x775] : &:r35_10851 +# 35| r35_10853(glval) = FunctionAddress[String] : +# 35| v35_10854(void) = Call[String] : func:r35_10853, this:r35_10851 +# 35| mu35_10855(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10856(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10851 +# 35| r35_10857(glval) = VariableAddress[x775] : +# 35| r35_10858(glval) = FunctionAddress[~String] : +# 35| v35_10859(void) = Call[~String] : func:r35_10858, this:r35_10857 +# 35| mu35_10860(unknown) = ^CallSideEffect : ~m? +# 35| v35_10861(void) = ^IndirectReadSideEffect[-1] : &:r35_10857, ~m? +# 35| mu35_10862(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10857 +# 35| r35_10863(bool) = Constant[0] : +# 35| v35_10864(void) = ConditionalBranch : r35_10863 #-----| False -> Block 776 #-----| True -> Block 1026 -# 2347| Block 776 -# 2347| r2347_1(glval) = VariableAddress[x776] : -# 2347| mu2347_2(String) = Uninitialized[x776] : &:r2347_1 -# 2347| r2347_3(glval) = FunctionAddress[String] : -# 2347| v2347_4(void) = Call[String] : func:r2347_3, this:r2347_1 -# 2347| mu2347_5(unknown) = ^CallSideEffect : ~m? -# 2347| mu2347_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2347_1 -# 2348| r2348_1(glval) = VariableAddress[x776] : -# 2348| r2348_2(glval) = FunctionAddress[~String] : -# 2348| v2348_3(void) = Call[~String] : func:r2348_2, this:r2348_1 -# 2348| mu2348_4(unknown) = ^CallSideEffect : ~m? -# 2348| v2348_5(void) = ^IndirectReadSideEffect[-1] : &:r2348_1, ~m? -# 2348| mu2348_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2348_1 -# 2348| r2348_7(bool) = Constant[0] : -# 2348| v2348_8(void) = ConditionalBranch : r2348_7 +# 35| Block 776 +# 35| r35_10865(glval) = VariableAddress[x776] : +# 35| mu35_10866(String) = Uninitialized[x776] : &:r35_10865 +# 35| r35_10867(glval) = FunctionAddress[String] : +# 35| v35_10868(void) = Call[String] : func:r35_10867, this:r35_10865 +# 35| mu35_10869(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10870(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10865 +# 35| r35_10871(glval) = VariableAddress[x776] : +# 35| r35_10872(glval) = FunctionAddress[~String] : +# 35| v35_10873(void) = Call[~String] : func:r35_10872, this:r35_10871 +# 35| mu35_10874(unknown) = ^CallSideEffect : ~m? +# 35| v35_10875(void) = ^IndirectReadSideEffect[-1] : &:r35_10871, ~m? +# 35| mu35_10876(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10871 +# 35| r35_10877(bool) = Constant[0] : +# 35| v35_10878(void) = ConditionalBranch : r35_10877 #-----| False -> Block 777 #-----| True -> Block 1026 -# 2350| Block 777 -# 2350| r2350_1(glval) = VariableAddress[x777] : -# 2350| mu2350_2(String) = Uninitialized[x777] : &:r2350_1 -# 2350| r2350_3(glval) = FunctionAddress[String] : -# 2350| v2350_4(void) = Call[String] : func:r2350_3, this:r2350_1 -# 2350| mu2350_5(unknown) = ^CallSideEffect : ~m? -# 2350| mu2350_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2350_1 -# 2351| r2351_1(glval) = VariableAddress[x777] : -# 2351| r2351_2(glval) = FunctionAddress[~String] : -# 2351| v2351_3(void) = Call[~String] : func:r2351_2, this:r2351_1 -# 2351| mu2351_4(unknown) = ^CallSideEffect : ~m? -# 2351| v2351_5(void) = ^IndirectReadSideEffect[-1] : &:r2351_1, ~m? -# 2351| mu2351_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 -# 2351| r2351_7(bool) = Constant[0] : -# 2351| v2351_8(void) = ConditionalBranch : r2351_7 +# 35| Block 777 +# 35| r35_10879(glval) = VariableAddress[x777] : +# 35| mu35_10880(String) = Uninitialized[x777] : &:r35_10879 +# 35| r35_10881(glval) = FunctionAddress[String] : +# 35| v35_10882(void) = Call[String] : func:r35_10881, this:r35_10879 +# 35| mu35_10883(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10884(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10879 +# 35| r35_10885(glval) = VariableAddress[x777] : +# 35| r35_10886(glval) = FunctionAddress[~String] : +# 35| v35_10887(void) = Call[~String] : func:r35_10886, this:r35_10885 +# 35| mu35_10888(unknown) = ^CallSideEffect : ~m? +# 35| v35_10889(void) = ^IndirectReadSideEffect[-1] : &:r35_10885, ~m? +# 35| mu35_10890(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10885 +# 35| r35_10891(bool) = Constant[0] : +# 35| v35_10892(void) = ConditionalBranch : r35_10891 #-----| False -> Block 778 #-----| True -> Block 1026 -# 2353| Block 778 -# 2353| r2353_1(glval) = VariableAddress[x778] : -# 2353| mu2353_2(String) = Uninitialized[x778] : &:r2353_1 -# 2353| r2353_3(glval) = FunctionAddress[String] : -# 2353| v2353_4(void) = Call[String] : func:r2353_3, this:r2353_1 -# 2353| mu2353_5(unknown) = ^CallSideEffect : ~m? -# 2353| mu2353_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2353_1 -# 2354| r2354_1(glval) = VariableAddress[x778] : -# 2354| r2354_2(glval) = FunctionAddress[~String] : -# 2354| v2354_3(void) = Call[~String] : func:r2354_2, this:r2354_1 -# 2354| mu2354_4(unknown) = ^CallSideEffect : ~m? -# 2354| v2354_5(void) = ^IndirectReadSideEffect[-1] : &:r2354_1, ~m? -# 2354| mu2354_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2354_1 -# 2354| r2354_7(bool) = Constant[0] : -# 2354| v2354_8(void) = ConditionalBranch : r2354_7 +# 35| Block 778 +# 35| r35_10893(glval) = VariableAddress[x778] : +# 35| mu35_10894(String) = Uninitialized[x778] : &:r35_10893 +# 35| r35_10895(glval) = FunctionAddress[String] : +# 35| v35_10896(void) = Call[String] : func:r35_10895, this:r35_10893 +# 35| mu35_10897(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10898(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10893 +# 35| r35_10899(glval) = VariableAddress[x778] : +# 35| r35_10900(glval) = FunctionAddress[~String] : +# 35| v35_10901(void) = Call[~String] : func:r35_10900, this:r35_10899 +# 35| mu35_10902(unknown) = ^CallSideEffect : ~m? +# 35| v35_10903(void) = ^IndirectReadSideEffect[-1] : &:r35_10899, ~m? +# 35| mu35_10904(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10899 +# 35| r35_10905(bool) = Constant[0] : +# 35| v35_10906(void) = ConditionalBranch : r35_10905 #-----| False -> Block 779 #-----| True -> Block 1026 -# 2356| Block 779 -# 2356| r2356_1(glval) = VariableAddress[x779] : -# 2356| mu2356_2(String) = Uninitialized[x779] : &:r2356_1 -# 2356| r2356_3(glval) = FunctionAddress[String] : -# 2356| v2356_4(void) = Call[String] : func:r2356_3, this:r2356_1 -# 2356| mu2356_5(unknown) = ^CallSideEffect : ~m? -# 2356| mu2356_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2356_1 -# 2357| r2357_1(glval) = VariableAddress[x779] : -# 2357| r2357_2(glval) = FunctionAddress[~String] : -# 2357| v2357_3(void) = Call[~String] : func:r2357_2, this:r2357_1 -# 2357| mu2357_4(unknown) = ^CallSideEffect : ~m? -# 2357| v2357_5(void) = ^IndirectReadSideEffect[-1] : &:r2357_1, ~m? -# 2357| mu2357_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2357_1 -# 2357| r2357_7(bool) = Constant[0] : -# 2357| v2357_8(void) = ConditionalBranch : r2357_7 +# 35| Block 779 +# 35| r35_10907(glval) = VariableAddress[x779] : +# 35| mu35_10908(String) = Uninitialized[x779] : &:r35_10907 +# 35| r35_10909(glval) = FunctionAddress[String] : +# 35| v35_10910(void) = Call[String] : func:r35_10909, this:r35_10907 +# 35| mu35_10911(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10912(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10907 +# 35| r35_10913(glval) = VariableAddress[x779] : +# 35| r35_10914(glval) = FunctionAddress[~String] : +# 35| v35_10915(void) = Call[~String] : func:r35_10914, this:r35_10913 +# 35| mu35_10916(unknown) = ^CallSideEffect : ~m? +# 35| v35_10917(void) = ^IndirectReadSideEffect[-1] : &:r35_10913, ~m? +# 35| mu35_10918(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10913 +# 35| r35_10919(bool) = Constant[0] : +# 35| v35_10920(void) = ConditionalBranch : r35_10919 #-----| False -> Block 780 #-----| True -> Block 1026 -# 2359| Block 780 -# 2359| r2359_1(glval) = VariableAddress[x780] : -# 2359| mu2359_2(String) = Uninitialized[x780] : &:r2359_1 -# 2359| r2359_3(glval) = FunctionAddress[String] : -# 2359| v2359_4(void) = Call[String] : func:r2359_3, this:r2359_1 -# 2359| mu2359_5(unknown) = ^CallSideEffect : ~m? -# 2359| mu2359_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_1 -# 2360| r2360_1(glval) = VariableAddress[x780] : -# 2360| r2360_2(glval) = FunctionAddress[~String] : -# 2360| v2360_3(void) = Call[~String] : func:r2360_2, this:r2360_1 -# 2360| mu2360_4(unknown) = ^CallSideEffect : ~m? -# 2360| v2360_5(void) = ^IndirectReadSideEffect[-1] : &:r2360_1, ~m? -# 2360| mu2360_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2360_1 -# 2360| r2360_7(bool) = Constant[0] : -# 2360| v2360_8(void) = ConditionalBranch : r2360_7 +# 35| Block 780 +# 35| r35_10921(glval) = VariableAddress[x780] : +# 35| mu35_10922(String) = Uninitialized[x780] : &:r35_10921 +# 35| r35_10923(glval) = FunctionAddress[String] : +# 35| v35_10924(void) = Call[String] : func:r35_10923, this:r35_10921 +# 35| mu35_10925(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10926(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10921 +# 35| r35_10927(glval) = VariableAddress[x780] : +# 35| r35_10928(glval) = FunctionAddress[~String] : +# 35| v35_10929(void) = Call[~String] : func:r35_10928, this:r35_10927 +# 35| mu35_10930(unknown) = ^CallSideEffect : ~m? +# 35| v35_10931(void) = ^IndirectReadSideEffect[-1] : &:r35_10927, ~m? +# 35| mu35_10932(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10927 +# 35| r35_10933(bool) = Constant[0] : +# 35| v35_10934(void) = ConditionalBranch : r35_10933 #-----| False -> Block 781 #-----| True -> Block 1026 -# 2362| Block 781 -# 2362| r2362_1(glval) = VariableAddress[x781] : -# 2362| mu2362_2(String) = Uninitialized[x781] : &:r2362_1 -# 2362| r2362_3(glval) = FunctionAddress[String] : -# 2362| v2362_4(void) = Call[String] : func:r2362_3, this:r2362_1 -# 2362| mu2362_5(unknown) = ^CallSideEffect : ~m? -# 2362| mu2362_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2362_1 -# 2363| r2363_1(glval) = VariableAddress[x781] : -# 2363| r2363_2(glval) = FunctionAddress[~String] : -# 2363| v2363_3(void) = Call[~String] : func:r2363_2, this:r2363_1 -# 2363| mu2363_4(unknown) = ^CallSideEffect : ~m? -# 2363| v2363_5(void) = ^IndirectReadSideEffect[-1] : &:r2363_1, ~m? -# 2363| mu2363_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2363_1 -# 2363| r2363_7(bool) = Constant[0] : -# 2363| v2363_8(void) = ConditionalBranch : r2363_7 +# 35| Block 781 +# 35| r35_10935(glval) = VariableAddress[x781] : +# 35| mu35_10936(String) = Uninitialized[x781] : &:r35_10935 +# 35| r35_10937(glval) = FunctionAddress[String] : +# 35| v35_10938(void) = Call[String] : func:r35_10937, this:r35_10935 +# 35| mu35_10939(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10940(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10935 +# 35| r35_10941(glval) = VariableAddress[x781] : +# 35| r35_10942(glval) = FunctionAddress[~String] : +# 35| v35_10943(void) = Call[~String] : func:r35_10942, this:r35_10941 +# 35| mu35_10944(unknown) = ^CallSideEffect : ~m? +# 35| v35_10945(void) = ^IndirectReadSideEffect[-1] : &:r35_10941, ~m? +# 35| mu35_10946(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10941 +# 35| r35_10947(bool) = Constant[0] : +# 35| v35_10948(void) = ConditionalBranch : r35_10947 #-----| False -> Block 782 #-----| True -> Block 1026 -# 2365| Block 782 -# 2365| r2365_1(glval) = VariableAddress[x782] : -# 2365| mu2365_2(String) = Uninitialized[x782] : &:r2365_1 -# 2365| r2365_3(glval) = FunctionAddress[String] : -# 2365| v2365_4(void) = Call[String] : func:r2365_3, this:r2365_1 -# 2365| mu2365_5(unknown) = ^CallSideEffect : ~m? -# 2365| mu2365_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2365_1 -# 2366| r2366_1(glval) = VariableAddress[x782] : -# 2366| r2366_2(glval) = FunctionAddress[~String] : -# 2366| v2366_3(void) = Call[~String] : func:r2366_2, this:r2366_1 -# 2366| mu2366_4(unknown) = ^CallSideEffect : ~m? -# 2366| v2366_5(void) = ^IndirectReadSideEffect[-1] : &:r2366_1, ~m? -# 2366| mu2366_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2366_1 -# 2366| r2366_7(bool) = Constant[0] : -# 2366| v2366_8(void) = ConditionalBranch : r2366_7 +# 35| Block 782 +# 35| r35_10949(glval) = VariableAddress[x782] : +# 35| mu35_10950(String) = Uninitialized[x782] : &:r35_10949 +# 35| r35_10951(glval) = FunctionAddress[String] : +# 35| v35_10952(void) = Call[String] : func:r35_10951, this:r35_10949 +# 35| mu35_10953(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10954(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10949 +# 35| r35_10955(glval) = VariableAddress[x782] : +# 35| r35_10956(glval) = FunctionAddress[~String] : +# 35| v35_10957(void) = Call[~String] : func:r35_10956, this:r35_10955 +# 35| mu35_10958(unknown) = ^CallSideEffect : ~m? +# 35| v35_10959(void) = ^IndirectReadSideEffect[-1] : &:r35_10955, ~m? +# 35| mu35_10960(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10955 +# 35| r35_10961(bool) = Constant[0] : +# 35| v35_10962(void) = ConditionalBranch : r35_10961 #-----| False -> Block 783 #-----| True -> Block 1026 -# 2368| Block 783 -# 2368| r2368_1(glval) = VariableAddress[x783] : -# 2368| mu2368_2(String) = Uninitialized[x783] : &:r2368_1 -# 2368| r2368_3(glval) = FunctionAddress[String] : -# 2368| v2368_4(void) = Call[String] : func:r2368_3, this:r2368_1 -# 2368| mu2368_5(unknown) = ^CallSideEffect : ~m? -# 2368| mu2368_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_1 -# 2369| r2369_1(glval) = VariableAddress[x783] : -# 2369| r2369_2(glval) = FunctionAddress[~String] : -# 2369| v2369_3(void) = Call[~String] : func:r2369_2, this:r2369_1 -# 2369| mu2369_4(unknown) = ^CallSideEffect : ~m? -# 2369| v2369_5(void) = ^IndirectReadSideEffect[-1] : &:r2369_1, ~m? -# 2369| mu2369_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2369_1 -# 2369| r2369_7(bool) = Constant[0] : -# 2369| v2369_8(void) = ConditionalBranch : r2369_7 +# 35| Block 783 +# 35| r35_10963(glval) = VariableAddress[x783] : +# 35| mu35_10964(String) = Uninitialized[x783] : &:r35_10963 +# 35| r35_10965(glval) = FunctionAddress[String] : +# 35| v35_10966(void) = Call[String] : func:r35_10965, this:r35_10963 +# 35| mu35_10967(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10968(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10963 +# 35| r35_10969(glval) = VariableAddress[x783] : +# 35| r35_10970(glval) = FunctionAddress[~String] : +# 35| v35_10971(void) = Call[~String] : func:r35_10970, this:r35_10969 +# 35| mu35_10972(unknown) = ^CallSideEffect : ~m? +# 35| v35_10973(void) = ^IndirectReadSideEffect[-1] : &:r35_10969, ~m? +# 35| mu35_10974(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10969 +# 35| r35_10975(bool) = Constant[0] : +# 35| v35_10976(void) = ConditionalBranch : r35_10975 #-----| False -> Block 784 #-----| True -> Block 1026 -# 2371| Block 784 -# 2371| r2371_1(glval) = VariableAddress[x784] : -# 2371| mu2371_2(String) = Uninitialized[x784] : &:r2371_1 -# 2371| r2371_3(glval) = FunctionAddress[String] : -# 2371| v2371_4(void) = Call[String] : func:r2371_3, this:r2371_1 -# 2371| mu2371_5(unknown) = ^CallSideEffect : ~m? -# 2371| mu2371_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2371_1 -# 2372| r2372_1(glval) = VariableAddress[x784] : -# 2372| r2372_2(glval) = FunctionAddress[~String] : -# 2372| v2372_3(void) = Call[~String] : func:r2372_2, this:r2372_1 -# 2372| mu2372_4(unknown) = ^CallSideEffect : ~m? -# 2372| v2372_5(void) = ^IndirectReadSideEffect[-1] : &:r2372_1, ~m? -# 2372| mu2372_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2372_1 -# 2372| r2372_7(bool) = Constant[0] : -# 2372| v2372_8(void) = ConditionalBranch : r2372_7 +# 35| Block 784 +# 35| r35_10977(glval) = VariableAddress[x784] : +# 35| mu35_10978(String) = Uninitialized[x784] : &:r35_10977 +# 35| r35_10979(glval) = FunctionAddress[String] : +# 35| v35_10980(void) = Call[String] : func:r35_10979, this:r35_10977 +# 35| mu35_10981(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10982(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10977 +# 35| r35_10983(glval) = VariableAddress[x784] : +# 35| r35_10984(glval) = FunctionAddress[~String] : +# 35| v35_10985(void) = Call[~String] : func:r35_10984, this:r35_10983 +# 35| mu35_10986(unknown) = ^CallSideEffect : ~m? +# 35| v35_10987(void) = ^IndirectReadSideEffect[-1] : &:r35_10983, ~m? +# 35| mu35_10988(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10983 +# 35| r35_10989(bool) = Constant[0] : +# 35| v35_10990(void) = ConditionalBranch : r35_10989 #-----| False -> Block 785 #-----| True -> Block 1026 -# 2374| Block 785 -# 2374| r2374_1(glval) = VariableAddress[x785] : -# 2374| mu2374_2(String) = Uninitialized[x785] : &:r2374_1 -# 2374| r2374_3(glval) = FunctionAddress[String] : -# 2374| v2374_4(void) = Call[String] : func:r2374_3, this:r2374_1 -# 2374| mu2374_5(unknown) = ^CallSideEffect : ~m? -# 2374| mu2374_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2374_1 -# 2375| r2375_1(glval) = VariableAddress[x785] : -# 2375| r2375_2(glval) = FunctionAddress[~String] : -# 2375| v2375_3(void) = Call[~String] : func:r2375_2, this:r2375_1 -# 2375| mu2375_4(unknown) = ^CallSideEffect : ~m? -# 2375| v2375_5(void) = ^IndirectReadSideEffect[-1] : &:r2375_1, ~m? -# 2375| mu2375_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2375_1 -# 2375| r2375_7(bool) = Constant[0] : -# 2375| v2375_8(void) = ConditionalBranch : r2375_7 +# 35| Block 785 +# 35| r35_10991(glval) = VariableAddress[x785] : +# 35| mu35_10992(String) = Uninitialized[x785] : &:r35_10991 +# 35| r35_10993(glval) = FunctionAddress[String] : +# 35| v35_10994(void) = Call[String] : func:r35_10993, this:r35_10991 +# 35| mu35_10995(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10996(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10991 +# 35| r35_10997(glval) = VariableAddress[x785] : +# 35| r35_10998(glval) = FunctionAddress[~String] : +# 35| v35_10999(void) = Call[~String] : func:r35_10998, this:r35_10997 +# 35| mu35_11000(unknown) = ^CallSideEffect : ~m? +# 35| v35_11001(void) = ^IndirectReadSideEffect[-1] : &:r35_10997, ~m? +# 35| mu35_11002(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10997 +# 35| r35_11003(bool) = Constant[0] : +# 35| v35_11004(void) = ConditionalBranch : r35_11003 #-----| False -> Block 786 #-----| True -> Block 1026 -# 2377| Block 786 -# 2377| r2377_1(glval) = VariableAddress[x786] : -# 2377| mu2377_2(String) = Uninitialized[x786] : &:r2377_1 -# 2377| r2377_3(glval) = FunctionAddress[String] : -# 2377| v2377_4(void) = Call[String] : func:r2377_3, this:r2377_1 -# 2377| mu2377_5(unknown) = ^CallSideEffect : ~m? -# 2377| mu2377_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2377_1 -# 2378| r2378_1(glval) = VariableAddress[x786] : -# 2378| r2378_2(glval) = FunctionAddress[~String] : -# 2378| v2378_3(void) = Call[~String] : func:r2378_2, this:r2378_1 -# 2378| mu2378_4(unknown) = ^CallSideEffect : ~m? -# 2378| v2378_5(void) = ^IndirectReadSideEffect[-1] : &:r2378_1, ~m? -# 2378| mu2378_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2378_1 -# 2378| r2378_7(bool) = Constant[0] : -# 2378| v2378_8(void) = ConditionalBranch : r2378_7 +# 35| Block 786 +# 35| r35_11005(glval) = VariableAddress[x786] : +# 35| mu35_11006(String) = Uninitialized[x786] : &:r35_11005 +# 35| r35_11007(glval) = FunctionAddress[String] : +# 35| v35_11008(void) = Call[String] : func:r35_11007, this:r35_11005 +# 35| mu35_11009(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11010(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11005 +# 35| r35_11011(glval) = VariableAddress[x786] : +# 35| r35_11012(glval) = FunctionAddress[~String] : +# 35| v35_11013(void) = Call[~String] : func:r35_11012, this:r35_11011 +# 35| mu35_11014(unknown) = ^CallSideEffect : ~m? +# 35| v35_11015(void) = ^IndirectReadSideEffect[-1] : &:r35_11011, ~m? +# 35| mu35_11016(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11011 +# 35| r35_11017(bool) = Constant[0] : +# 35| v35_11018(void) = ConditionalBranch : r35_11017 #-----| False -> Block 787 #-----| True -> Block 1026 -# 2380| Block 787 -# 2380| r2380_1(glval) = VariableAddress[x787] : -# 2380| mu2380_2(String) = Uninitialized[x787] : &:r2380_1 -# 2380| r2380_3(glval) = FunctionAddress[String] : -# 2380| v2380_4(void) = Call[String] : func:r2380_3, this:r2380_1 -# 2380| mu2380_5(unknown) = ^CallSideEffect : ~m? -# 2380| mu2380_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2380_1 -# 2381| r2381_1(glval) = VariableAddress[x787] : -# 2381| r2381_2(glval) = FunctionAddress[~String] : -# 2381| v2381_3(void) = Call[~String] : func:r2381_2, this:r2381_1 -# 2381| mu2381_4(unknown) = ^CallSideEffect : ~m? -# 2381| v2381_5(void) = ^IndirectReadSideEffect[-1] : &:r2381_1, ~m? -# 2381| mu2381_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2381_1 -# 2381| r2381_7(bool) = Constant[0] : -# 2381| v2381_8(void) = ConditionalBranch : r2381_7 +# 35| Block 787 +# 35| r35_11019(glval) = VariableAddress[x787] : +# 35| mu35_11020(String) = Uninitialized[x787] : &:r35_11019 +# 35| r35_11021(glval) = FunctionAddress[String] : +# 35| v35_11022(void) = Call[String] : func:r35_11021, this:r35_11019 +# 35| mu35_11023(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11024(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11019 +# 35| r35_11025(glval) = VariableAddress[x787] : +# 35| r35_11026(glval) = FunctionAddress[~String] : +# 35| v35_11027(void) = Call[~String] : func:r35_11026, this:r35_11025 +# 35| mu35_11028(unknown) = ^CallSideEffect : ~m? +# 35| v35_11029(void) = ^IndirectReadSideEffect[-1] : &:r35_11025, ~m? +# 35| mu35_11030(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11025 +# 35| r35_11031(bool) = Constant[0] : +# 35| v35_11032(void) = ConditionalBranch : r35_11031 #-----| False -> Block 788 #-----| True -> Block 1026 -# 2383| Block 788 -# 2383| r2383_1(glval) = VariableAddress[x788] : -# 2383| mu2383_2(String) = Uninitialized[x788] : &:r2383_1 -# 2383| r2383_3(glval) = FunctionAddress[String] : -# 2383| v2383_4(void) = Call[String] : func:r2383_3, this:r2383_1 -# 2383| mu2383_5(unknown) = ^CallSideEffect : ~m? -# 2383| mu2383_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2383_1 -# 2384| r2384_1(glval) = VariableAddress[x788] : -# 2384| r2384_2(glval) = FunctionAddress[~String] : -# 2384| v2384_3(void) = Call[~String] : func:r2384_2, this:r2384_1 -# 2384| mu2384_4(unknown) = ^CallSideEffect : ~m? -# 2384| v2384_5(void) = ^IndirectReadSideEffect[-1] : &:r2384_1, ~m? -# 2384| mu2384_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2384_1 -# 2384| r2384_7(bool) = Constant[0] : -# 2384| v2384_8(void) = ConditionalBranch : r2384_7 +# 35| Block 788 +# 35| r35_11033(glval) = VariableAddress[x788] : +# 35| mu35_11034(String) = Uninitialized[x788] : &:r35_11033 +# 35| r35_11035(glval) = FunctionAddress[String] : +# 35| v35_11036(void) = Call[String] : func:r35_11035, this:r35_11033 +# 35| mu35_11037(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11038(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11033 +# 35| r35_11039(glval) = VariableAddress[x788] : +# 35| r35_11040(glval) = FunctionAddress[~String] : +# 35| v35_11041(void) = Call[~String] : func:r35_11040, this:r35_11039 +# 35| mu35_11042(unknown) = ^CallSideEffect : ~m? +# 35| v35_11043(void) = ^IndirectReadSideEffect[-1] : &:r35_11039, ~m? +# 35| mu35_11044(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11039 +# 35| r35_11045(bool) = Constant[0] : +# 35| v35_11046(void) = ConditionalBranch : r35_11045 #-----| False -> Block 789 #-----| True -> Block 1026 -# 2386| Block 789 -# 2386| r2386_1(glval) = VariableAddress[x789] : -# 2386| mu2386_2(String) = Uninitialized[x789] : &:r2386_1 -# 2386| r2386_3(glval) = FunctionAddress[String] : -# 2386| v2386_4(void) = Call[String] : func:r2386_3, this:r2386_1 -# 2386| mu2386_5(unknown) = ^CallSideEffect : ~m? -# 2386| mu2386_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2386_1 -# 2387| r2387_1(glval) = VariableAddress[x789] : -# 2387| r2387_2(glval) = FunctionAddress[~String] : -# 2387| v2387_3(void) = Call[~String] : func:r2387_2, this:r2387_1 -# 2387| mu2387_4(unknown) = ^CallSideEffect : ~m? -# 2387| v2387_5(void) = ^IndirectReadSideEffect[-1] : &:r2387_1, ~m? -# 2387| mu2387_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2387_1 -# 2387| r2387_7(bool) = Constant[0] : -# 2387| v2387_8(void) = ConditionalBranch : r2387_7 +# 35| Block 789 +# 35| r35_11047(glval) = VariableAddress[x789] : +# 35| mu35_11048(String) = Uninitialized[x789] : &:r35_11047 +# 35| r35_11049(glval) = FunctionAddress[String] : +# 35| v35_11050(void) = Call[String] : func:r35_11049, this:r35_11047 +# 35| mu35_11051(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11052(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11047 +# 35| r35_11053(glval) = VariableAddress[x789] : +# 35| r35_11054(glval) = FunctionAddress[~String] : +# 35| v35_11055(void) = Call[~String] : func:r35_11054, this:r35_11053 +# 35| mu35_11056(unknown) = ^CallSideEffect : ~m? +# 35| v35_11057(void) = ^IndirectReadSideEffect[-1] : &:r35_11053, ~m? +# 35| mu35_11058(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11053 +# 35| r35_11059(bool) = Constant[0] : +# 35| v35_11060(void) = ConditionalBranch : r35_11059 #-----| False -> Block 790 #-----| True -> Block 1026 -# 2389| Block 790 -# 2389| r2389_1(glval) = VariableAddress[x790] : -# 2389| mu2389_2(String) = Uninitialized[x790] : &:r2389_1 -# 2389| r2389_3(glval) = FunctionAddress[String] : -# 2389| v2389_4(void) = Call[String] : func:r2389_3, this:r2389_1 -# 2389| mu2389_5(unknown) = ^CallSideEffect : ~m? -# 2389| mu2389_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2389_1 -# 2390| r2390_1(glval) = VariableAddress[x790] : -# 2390| r2390_2(glval) = FunctionAddress[~String] : -# 2390| v2390_3(void) = Call[~String] : func:r2390_2, this:r2390_1 -# 2390| mu2390_4(unknown) = ^CallSideEffect : ~m? -# 2390| v2390_5(void) = ^IndirectReadSideEffect[-1] : &:r2390_1, ~m? -# 2390| mu2390_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2390_1 -# 2390| r2390_7(bool) = Constant[0] : -# 2390| v2390_8(void) = ConditionalBranch : r2390_7 +# 35| Block 790 +# 35| r35_11061(glval) = VariableAddress[x790] : +# 35| mu35_11062(String) = Uninitialized[x790] : &:r35_11061 +# 35| r35_11063(glval) = FunctionAddress[String] : +# 35| v35_11064(void) = Call[String] : func:r35_11063, this:r35_11061 +# 35| mu35_11065(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11066(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11061 +# 35| r35_11067(glval) = VariableAddress[x790] : +# 35| r35_11068(glval) = FunctionAddress[~String] : +# 35| v35_11069(void) = Call[~String] : func:r35_11068, this:r35_11067 +# 35| mu35_11070(unknown) = ^CallSideEffect : ~m? +# 35| v35_11071(void) = ^IndirectReadSideEffect[-1] : &:r35_11067, ~m? +# 35| mu35_11072(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11067 +# 35| r35_11073(bool) = Constant[0] : +# 35| v35_11074(void) = ConditionalBranch : r35_11073 #-----| False -> Block 791 #-----| True -> Block 1026 -# 2392| Block 791 -# 2392| r2392_1(glval) = VariableAddress[x791] : -# 2392| mu2392_2(String) = Uninitialized[x791] : &:r2392_1 -# 2392| r2392_3(glval) = FunctionAddress[String] : -# 2392| v2392_4(void) = Call[String] : func:r2392_3, this:r2392_1 -# 2392| mu2392_5(unknown) = ^CallSideEffect : ~m? -# 2392| mu2392_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2392_1 -# 2393| r2393_1(glval) = VariableAddress[x791] : -# 2393| r2393_2(glval) = FunctionAddress[~String] : -# 2393| v2393_3(void) = Call[~String] : func:r2393_2, this:r2393_1 -# 2393| mu2393_4(unknown) = ^CallSideEffect : ~m? -# 2393| v2393_5(void) = ^IndirectReadSideEffect[-1] : &:r2393_1, ~m? -# 2393| mu2393_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2393_1 -# 2393| r2393_7(bool) = Constant[0] : -# 2393| v2393_8(void) = ConditionalBranch : r2393_7 +# 35| Block 791 +# 35| r35_11075(glval) = VariableAddress[x791] : +# 35| mu35_11076(String) = Uninitialized[x791] : &:r35_11075 +# 35| r35_11077(glval) = FunctionAddress[String] : +# 35| v35_11078(void) = Call[String] : func:r35_11077, this:r35_11075 +# 35| mu35_11079(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11080(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11075 +# 35| r35_11081(glval) = VariableAddress[x791] : +# 35| r35_11082(glval) = FunctionAddress[~String] : +# 35| v35_11083(void) = Call[~String] : func:r35_11082, this:r35_11081 +# 35| mu35_11084(unknown) = ^CallSideEffect : ~m? +# 35| v35_11085(void) = ^IndirectReadSideEffect[-1] : &:r35_11081, ~m? +# 35| mu35_11086(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11081 +# 35| r35_11087(bool) = Constant[0] : +# 35| v35_11088(void) = ConditionalBranch : r35_11087 #-----| False -> Block 792 #-----| True -> Block 1026 -# 2395| Block 792 -# 2395| r2395_1(glval) = VariableAddress[x792] : -# 2395| mu2395_2(String) = Uninitialized[x792] : &:r2395_1 -# 2395| r2395_3(glval) = FunctionAddress[String] : -# 2395| v2395_4(void) = Call[String] : func:r2395_3, this:r2395_1 -# 2395| mu2395_5(unknown) = ^CallSideEffect : ~m? -# 2395| mu2395_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2395_1 -# 2396| r2396_1(glval) = VariableAddress[x792] : -# 2396| r2396_2(glval) = FunctionAddress[~String] : -# 2396| v2396_3(void) = Call[~String] : func:r2396_2, this:r2396_1 -# 2396| mu2396_4(unknown) = ^CallSideEffect : ~m? -# 2396| v2396_5(void) = ^IndirectReadSideEffect[-1] : &:r2396_1, ~m? -# 2396| mu2396_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2396_1 -# 2396| r2396_7(bool) = Constant[0] : -# 2396| v2396_8(void) = ConditionalBranch : r2396_7 +# 35| Block 792 +# 35| r35_11089(glval) = VariableAddress[x792] : +# 35| mu35_11090(String) = Uninitialized[x792] : &:r35_11089 +# 35| r35_11091(glval) = FunctionAddress[String] : +# 35| v35_11092(void) = Call[String] : func:r35_11091, this:r35_11089 +# 35| mu35_11093(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11094(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11089 +# 35| r35_11095(glval) = VariableAddress[x792] : +# 35| r35_11096(glval) = FunctionAddress[~String] : +# 35| v35_11097(void) = Call[~String] : func:r35_11096, this:r35_11095 +# 35| mu35_11098(unknown) = ^CallSideEffect : ~m? +# 35| v35_11099(void) = ^IndirectReadSideEffect[-1] : &:r35_11095, ~m? +# 35| mu35_11100(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11095 +# 35| r35_11101(bool) = Constant[0] : +# 35| v35_11102(void) = ConditionalBranch : r35_11101 #-----| False -> Block 793 #-----| True -> Block 1026 -# 2398| Block 793 -# 2398| r2398_1(glval) = VariableAddress[x793] : -# 2398| mu2398_2(String) = Uninitialized[x793] : &:r2398_1 -# 2398| r2398_3(glval) = FunctionAddress[String] : -# 2398| v2398_4(void) = Call[String] : func:r2398_3, this:r2398_1 -# 2398| mu2398_5(unknown) = ^CallSideEffect : ~m? -# 2398| mu2398_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2398_1 -# 2399| r2399_1(glval) = VariableAddress[x793] : -# 2399| r2399_2(glval) = FunctionAddress[~String] : -# 2399| v2399_3(void) = Call[~String] : func:r2399_2, this:r2399_1 -# 2399| mu2399_4(unknown) = ^CallSideEffect : ~m? -# 2399| v2399_5(void) = ^IndirectReadSideEffect[-1] : &:r2399_1, ~m? -# 2399| mu2399_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2399_1 -# 2399| r2399_7(bool) = Constant[0] : -# 2399| v2399_8(void) = ConditionalBranch : r2399_7 +# 35| Block 793 +# 35| r35_11103(glval) = VariableAddress[x793] : +# 35| mu35_11104(String) = Uninitialized[x793] : &:r35_11103 +# 35| r35_11105(glval) = FunctionAddress[String] : +# 35| v35_11106(void) = Call[String] : func:r35_11105, this:r35_11103 +# 35| mu35_11107(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11108(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11103 +# 35| r35_11109(glval) = VariableAddress[x793] : +# 35| r35_11110(glval) = FunctionAddress[~String] : +# 35| v35_11111(void) = Call[~String] : func:r35_11110, this:r35_11109 +# 35| mu35_11112(unknown) = ^CallSideEffect : ~m? +# 35| v35_11113(void) = ^IndirectReadSideEffect[-1] : &:r35_11109, ~m? +# 35| mu35_11114(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11109 +# 35| r35_11115(bool) = Constant[0] : +# 35| v35_11116(void) = ConditionalBranch : r35_11115 #-----| False -> Block 794 #-----| True -> Block 1026 -# 2401| Block 794 -# 2401| r2401_1(glval) = VariableAddress[x794] : -# 2401| mu2401_2(String) = Uninitialized[x794] : &:r2401_1 -# 2401| r2401_3(glval) = FunctionAddress[String] : -# 2401| v2401_4(void) = Call[String] : func:r2401_3, this:r2401_1 -# 2401| mu2401_5(unknown) = ^CallSideEffect : ~m? -# 2401| mu2401_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2401_1 -# 2402| r2402_1(glval) = VariableAddress[x794] : -# 2402| r2402_2(glval) = FunctionAddress[~String] : -# 2402| v2402_3(void) = Call[~String] : func:r2402_2, this:r2402_1 -# 2402| mu2402_4(unknown) = ^CallSideEffect : ~m? -# 2402| v2402_5(void) = ^IndirectReadSideEffect[-1] : &:r2402_1, ~m? -# 2402| mu2402_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2402_1 -# 2402| r2402_7(bool) = Constant[0] : -# 2402| v2402_8(void) = ConditionalBranch : r2402_7 +# 35| Block 794 +# 35| r35_11117(glval) = VariableAddress[x794] : +# 35| mu35_11118(String) = Uninitialized[x794] : &:r35_11117 +# 35| r35_11119(glval) = FunctionAddress[String] : +# 35| v35_11120(void) = Call[String] : func:r35_11119, this:r35_11117 +# 35| mu35_11121(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11122(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11117 +# 35| r35_11123(glval) = VariableAddress[x794] : +# 35| r35_11124(glval) = FunctionAddress[~String] : +# 35| v35_11125(void) = Call[~String] : func:r35_11124, this:r35_11123 +# 35| mu35_11126(unknown) = ^CallSideEffect : ~m? +# 35| v35_11127(void) = ^IndirectReadSideEffect[-1] : &:r35_11123, ~m? +# 35| mu35_11128(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11123 +# 35| r35_11129(bool) = Constant[0] : +# 35| v35_11130(void) = ConditionalBranch : r35_11129 #-----| False -> Block 795 #-----| True -> Block 1026 -# 2404| Block 795 -# 2404| r2404_1(glval) = VariableAddress[x795] : -# 2404| mu2404_2(String) = Uninitialized[x795] : &:r2404_1 -# 2404| r2404_3(glval) = FunctionAddress[String] : -# 2404| v2404_4(void) = Call[String] : func:r2404_3, this:r2404_1 -# 2404| mu2404_5(unknown) = ^CallSideEffect : ~m? -# 2404| mu2404_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2404_1 -# 2405| r2405_1(glval) = VariableAddress[x795] : -# 2405| r2405_2(glval) = FunctionAddress[~String] : -# 2405| v2405_3(void) = Call[~String] : func:r2405_2, this:r2405_1 -# 2405| mu2405_4(unknown) = ^CallSideEffect : ~m? -# 2405| v2405_5(void) = ^IndirectReadSideEffect[-1] : &:r2405_1, ~m? -# 2405| mu2405_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2405_1 -# 2405| r2405_7(bool) = Constant[0] : -# 2405| v2405_8(void) = ConditionalBranch : r2405_7 +# 35| Block 795 +# 35| r35_11131(glval) = VariableAddress[x795] : +# 35| mu35_11132(String) = Uninitialized[x795] : &:r35_11131 +# 35| r35_11133(glval) = FunctionAddress[String] : +# 35| v35_11134(void) = Call[String] : func:r35_11133, this:r35_11131 +# 35| mu35_11135(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11136(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11131 +# 35| r35_11137(glval) = VariableAddress[x795] : +# 35| r35_11138(glval) = FunctionAddress[~String] : +# 35| v35_11139(void) = Call[~String] : func:r35_11138, this:r35_11137 +# 35| mu35_11140(unknown) = ^CallSideEffect : ~m? +# 35| v35_11141(void) = ^IndirectReadSideEffect[-1] : &:r35_11137, ~m? +# 35| mu35_11142(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11137 +# 35| r35_11143(bool) = Constant[0] : +# 35| v35_11144(void) = ConditionalBranch : r35_11143 #-----| False -> Block 796 #-----| True -> Block 1026 -# 2407| Block 796 -# 2407| r2407_1(glval) = VariableAddress[x796] : -# 2407| mu2407_2(String) = Uninitialized[x796] : &:r2407_1 -# 2407| r2407_3(glval) = FunctionAddress[String] : -# 2407| v2407_4(void) = Call[String] : func:r2407_3, this:r2407_1 -# 2407| mu2407_5(unknown) = ^CallSideEffect : ~m? -# 2407| mu2407_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2407_1 -# 2408| r2408_1(glval) = VariableAddress[x796] : -# 2408| r2408_2(glval) = FunctionAddress[~String] : -# 2408| v2408_3(void) = Call[~String] : func:r2408_2, this:r2408_1 -# 2408| mu2408_4(unknown) = ^CallSideEffect : ~m? -# 2408| v2408_5(void) = ^IndirectReadSideEffect[-1] : &:r2408_1, ~m? -# 2408| mu2408_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2408_1 -# 2408| r2408_7(bool) = Constant[0] : -# 2408| v2408_8(void) = ConditionalBranch : r2408_7 +# 35| Block 796 +# 35| r35_11145(glval) = VariableAddress[x796] : +# 35| mu35_11146(String) = Uninitialized[x796] : &:r35_11145 +# 35| r35_11147(glval) = FunctionAddress[String] : +# 35| v35_11148(void) = Call[String] : func:r35_11147, this:r35_11145 +# 35| mu35_11149(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11150(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11145 +# 35| r35_11151(glval) = VariableAddress[x796] : +# 35| r35_11152(glval) = FunctionAddress[~String] : +# 35| v35_11153(void) = Call[~String] : func:r35_11152, this:r35_11151 +# 35| mu35_11154(unknown) = ^CallSideEffect : ~m? +# 35| v35_11155(void) = ^IndirectReadSideEffect[-1] : &:r35_11151, ~m? +# 35| mu35_11156(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11151 +# 35| r35_11157(bool) = Constant[0] : +# 35| v35_11158(void) = ConditionalBranch : r35_11157 #-----| False -> Block 797 #-----| True -> Block 1026 -# 2410| Block 797 -# 2410| r2410_1(glval) = VariableAddress[x797] : -# 2410| mu2410_2(String) = Uninitialized[x797] : &:r2410_1 -# 2410| r2410_3(glval) = FunctionAddress[String] : -# 2410| v2410_4(void) = Call[String] : func:r2410_3, this:r2410_1 -# 2410| mu2410_5(unknown) = ^CallSideEffect : ~m? -# 2410| mu2410_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2410_1 -# 2411| r2411_1(glval) = VariableAddress[x797] : -# 2411| r2411_2(glval) = FunctionAddress[~String] : -# 2411| v2411_3(void) = Call[~String] : func:r2411_2, this:r2411_1 -# 2411| mu2411_4(unknown) = ^CallSideEffect : ~m? -# 2411| v2411_5(void) = ^IndirectReadSideEffect[-1] : &:r2411_1, ~m? -# 2411| mu2411_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2411_1 -# 2411| r2411_7(bool) = Constant[0] : -# 2411| v2411_8(void) = ConditionalBranch : r2411_7 +# 35| Block 797 +# 35| r35_11159(glval) = VariableAddress[x797] : +# 35| mu35_11160(String) = Uninitialized[x797] : &:r35_11159 +# 35| r35_11161(glval) = FunctionAddress[String] : +# 35| v35_11162(void) = Call[String] : func:r35_11161, this:r35_11159 +# 35| mu35_11163(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11164(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11159 +# 35| r35_11165(glval) = VariableAddress[x797] : +# 35| r35_11166(glval) = FunctionAddress[~String] : +# 35| v35_11167(void) = Call[~String] : func:r35_11166, this:r35_11165 +# 35| mu35_11168(unknown) = ^CallSideEffect : ~m? +# 35| v35_11169(void) = ^IndirectReadSideEffect[-1] : &:r35_11165, ~m? +# 35| mu35_11170(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11165 +# 35| r35_11171(bool) = Constant[0] : +# 35| v35_11172(void) = ConditionalBranch : r35_11171 #-----| False -> Block 798 #-----| True -> Block 1026 -# 2413| Block 798 -# 2413| r2413_1(glval) = VariableAddress[x798] : -# 2413| mu2413_2(String) = Uninitialized[x798] : &:r2413_1 -# 2413| r2413_3(glval) = FunctionAddress[String] : -# 2413| v2413_4(void) = Call[String] : func:r2413_3, this:r2413_1 -# 2413| mu2413_5(unknown) = ^CallSideEffect : ~m? -# 2413| mu2413_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2413_1 -# 2414| r2414_1(glval) = VariableAddress[x798] : -# 2414| r2414_2(glval) = FunctionAddress[~String] : -# 2414| v2414_3(void) = Call[~String] : func:r2414_2, this:r2414_1 -# 2414| mu2414_4(unknown) = ^CallSideEffect : ~m? -# 2414| v2414_5(void) = ^IndirectReadSideEffect[-1] : &:r2414_1, ~m? -# 2414| mu2414_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2414_1 -# 2414| r2414_7(bool) = Constant[0] : -# 2414| v2414_8(void) = ConditionalBranch : r2414_7 +# 35| Block 798 +# 35| r35_11173(glval) = VariableAddress[x798] : +# 35| mu35_11174(String) = Uninitialized[x798] : &:r35_11173 +# 35| r35_11175(glval) = FunctionAddress[String] : +# 35| v35_11176(void) = Call[String] : func:r35_11175, this:r35_11173 +# 35| mu35_11177(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11178(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11173 +# 35| r35_11179(glval) = VariableAddress[x798] : +# 35| r35_11180(glval) = FunctionAddress[~String] : +# 35| v35_11181(void) = Call[~String] : func:r35_11180, this:r35_11179 +# 35| mu35_11182(unknown) = ^CallSideEffect : ~m? +# 35| v35_11183(void) = ^IndirectReadSideEffect[-1] : &:r35_11179, ~m? +# 35| mu35_11184(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11179 +# 35| r35_11185(bool) = Constant[0] : +# 35| v35_11186(void) = ConditionalBranch : r35_11185 #-----| False -> Block 799 #-----| True -> Block 1026 -# 2416| Block 799 -# 2416| r2416_1(glval) = VariableAddress[x799] : -# 2416| mu2416_2(String) = Uninitialized[x799] : &:r2416_1 -# 2416| r2416_3(glval) = FunctionAddress[String] : -# 2416| v2416_4(void) = Call[String] : func:r2416_3, this:r2416_1 -# 2416| mu2416_5(unknown) = ^CallSideEffect : ~m? -# 2416| mu2416_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2416_1 -# 2417| r2417_1(glval) = VariableAddress[x799] : -# 2417| r2417_2(glval) = FunctionAddress[~String] : -# 2417| v2417_3(void) = Call[~String] : func:r2417_2, this:r2417_1 -# 2417| mu2417_4(unknown) = ^CallSideEffect : ~m? -# 2417| v2417_5(void) = ^IndirectReadSideEffect[-1] : &:r2417_1, ~m? -# 2417| mu2417_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2417_1 -# 2417| r2417_7(bool) = Constant[0] : -# 2417| v2417_8(void) = ConditionalBranch : r2417_7 +# 35| Block 799 +# 35| r35_11187(glval) = VariableAddress[x799] : +# 35| mu35_11188(String) = Uninitialized[x799] : &:r35_11187 +# 35| r35_11189(glval) = FunctionAddress[String] : +# 35| v35_11190(void) = Call[String] : func:r35_11189, this:r35_11187 +# 35| mu35_11191(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11192(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11187 +# 35| r35_11193(glval) = VariableAddress[x799] : +# 35| r35_11194(glval) = FunctionAddress[~String] : +# 35| v35_11195(void) = Call[~String] : func:r35_11194, this:r35_11193 +# 35| mu35_11196(unknown) = ^CallSideEffect : ~m? +# 35| v35_11197(void) = ^IndirectReadSideEffect[-1] : &:r35_11193, ~m? +# 35| mu35_11198(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11193 +# 35| r35_11199(bool) = Constant[0] : +# 35| v35_11200(void) = ConditionalBranch : r35_11199 #-----| False -> Block 800 #-----| True -> Block 1026 -# 2419| Block 800 -# 2419| r2419_1(glval) = VariableAddress[x800] : -# 2419| mu2419_2(String) = Uninitialized[x800] : &:r2419_1 -# 2419| r2419_3(glval) = FunctionAddress[String] : -# 2419| v2419_4(void) = Call[String] : func:r2419_3, this:r2419_1 -# 2419| mu2419_5(unknown) = ^CallSideEffect : ~m? -# 2419| mu2419_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2419_1 -# 2420| r2420_1(glval) = VariableAddress[x800] : -# 2420| r2420_2(glval) = FunctionAddress[~String] : -# 2420| v2420_3(void) = Call[~String] : func:r2420_2, this:r2420_1 -# 2420| mu2420_4(unknown) = ^CallSideEffect : ~m? -# 2420| v2420_5(void) = ^IndirectReadSideEffect[-1] : &:r2420_1, ~m? -# 2420| mu2420_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2420_1 -# 2420| r2420_7(bool) = Constant[0] : -# 2420| v2420_8(void) = ConditionalBranch : r2420_7 +# 35| Block 800 +# 35| r35_11201(glval) = VariableAddress[x800] : +# 35| mu35_11202(String) = Uninitialized[x800] : &:r35_11201 +# 35| r35_11203(glval) = FunctionAddress[String] : +# 35| v35_11204(void) = Call[String] : func:r35_11203, this:r35_11201 +# 35| mu35_11205(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11206(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11201 +# 35| r35_11207(glval) = VariableAddress[x800] : +# 35| r35_11208(glval) = FunctionAddress[~String] : +# 35| v35_11209(void) = Call[~String] : func:r35_11208, this:r35_11207 +# 35| mu35_11210(unknown) = ^CallSideEffect : ~m? +# 35| v35_11211(void) = ^IndirectReadSideEffect[-1] : &:r35_11207, ~m? +# 35| mu35_11212(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11207 +# 35| r35_11213(bool) = Constant[0] : +# 35| v35_11214(void) = ConditionalBranch : r35_11213 #-----| False -> Block 801 #-----| True -> Block 1026 -# 2422| Block 801 -# 2422| r2422_1(glval) = VariableAddress[x801] : -# 2422| mu2422_2(String) = Uninitialized[x801] : &:r2422_1 -# 2422| r2422_3(glval) = FunctionAddress[String] : -# 2422| v2422_4(void) = Call[String] : func:r2422_3, this:r2422_1 -# 2422| mu2422_5(unknown) = ^CallSideEffect : ~m? -# 2422| mu2422_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2422_1 -# 2423| r2423_1(glval) = VariableAddress[x801] : -# 2423| r2423_2(glval) = FunctionAddress[~String] : -# 2423| v2423_3(void) = Call[~String] : func:r2423_2, this:r2423_1 -# 2423| mu2423_4(unknown) = ^CallSideEffect : ~m? -# 2423| v2423_5(void) = ^IndirectReadSideEffect[-1] : &:r2423_1, ~m? -# 2423| mu2423_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2423_1 -# 2423| r2423_7(bool) = Constant[0] : -# 2423| v2423_8(void) = ConditionalBranch : r2423_7 +# 35| Block 801 +# 35| r35_11215(glval) = VariableAddress[x801] : +# 35| mu35_11216(String) = Uninitialized[x801] : &:r35_11215 +# 35| r35_11217(glval) = FunctionAddress[String] : +# 35| v35_11218(void) = Call[String] : func:r35_11217, this:r35_11215 +# 35| mu35_11219(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11220(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11215 +# 35| r35_11221(glval) = VariableAddress[x801] : +# 35| r35_11222(glval) = FunctionAddress[~String] : +# 35| v35_11223(void) = Call[~String] : func:r35_11222, this:r35_11221 +# 35| mu35_11224(unknown) = ^CallSideEffect : ~m? +# 35| v35_11225(void) = ^IndirectReadSideEffect[-1] : &:r35_11221, ~m? +# 35| mu35_11226(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11221 +# 35| r35_11227(bool) = Constant[0] : +# 35| v35_11228(void) = ConditionalBranch : r35_11227 #-----| False -> Block 802 #-----| True -> Block 1026 -# 2425| Block 802 -# 2425| r2425_1(glval) = VariableAddress[x802] : -# 2425| mu2425_2(String) = Uninitialized[x802] : &:r2425_1 -# 2425| r2425_3(glval) = FunctionAddress[String] : -# 2425| v2425_4(void) = Call[String] : func:r2425_3, this:r2425_1 -# 2425| mu2425_5(unknown) = ^CallSideEffect : ~m? -# 2425| mu2425_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2425_1 -# 2426| r2426_1(glval) = VariableAddress[x802] : -# 2426| r2426_2(glval) = FunctionAddress[~String] : -# 2426| v2426_3(void) = Call[~String] : func:r2426_2, this:r2426_1 -# 2426| mu2426_4(unknown) = ^CallSideEffect : ~m? -# 2426| v2426_5(void) = ^IndirectReadSideEffect[-1] : &:r2426_1, ~m? -# 2426| mu2426_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2426_1 -# 2426| r2426_7(bool) = Constant[0] : -# 2426| v2426_8(void) = ConditionalBranch : r2426_7 +# 35| Block 802 +# 35| r35_11229(glval) = VariableAddress[x802] : +# 35| mu35_11230(String) = Uninitialized[x802] : &:r35_11229 +# 35| r35_11231(glval) = FunctionAddress[String] : +# 35| v35_11232(void) = Call[String] : func:r35_11231, this:r35_11229 +# 35| mu35_11233(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11234(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11229 +# 35| r35_11235(glval) = VariableAddress[x802] : +# 35| r35_11236(glval) = FunctionAddress[~String] : +# 35| v35_11237(void) = Call[~String] : func:r35_11236, this:r35_11235 +# 35| mu35_11238(unknown) = ^CallSideEffect : ~m? +# 35| v35_11239(void) = ^IndirectReadSideEffect[-1] : &:r35_11235, ~m? +# 35| mu35_11240(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11235 +# 35| r35_11241(bool) = Constant[0] : +# 35| v35_11242(void) = ConditionalBranch : r35_11241 #-----| False -> Block 803 #-----| True -> Block 1026 -# 2428| Block 803 -# 2428| r2428_1(glval) = VariableAddress[x803] : -# 2428| mu2428_2(String) = Uninitialized[x803] : &:r2428_1 -# 2428| r2428_3(glval) = FunctionAddress[String] : -# 2428| v2428_4(void) = Call[String] : func:r2428_3, this:r2428_1 -# 2428| mu2428_5(unknown) = ^CallSideEffect : ~m? -# 2428| mu2428_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2428_1 -# 2429| r2429_1(glval) = VariableAddress[x803] : -# 2429| r2429_2(glval) = FunctionAddress[~String] : -# 2429| v2429_3(void) = Call[~String] : func:r2429_2, this:r2429_1 -# 2429| mu2429_4(unknown) = ^CallSideEffect : ~m? -# 2429| v2429_5(void) = ^IndirectReadSideEffect[-1] : &:r2429_1, ~m? -# 2429| mu2429_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2429_1 -# 2429| r2429_7(bool) = Constant[0] : -# 2429| v2429_8(void) = ConditionalBranch : r2429_7 +# 35| Block 803 +# 35| r35_11243(glval) = VariableAddress[x803] : +# 35| mu35_11244(String) = Uninitialized[x803] : &:r35_11243 +# 35| r35_11245(glval) = FunctionAddress[String] : +# 35| v35_11246(void) = Call[String] : func:r35_11245, this:r35_11243 +# 35| mu35_11247(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11248(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11243 +# 35| r35_11249(glval) = VariableAddress[x803] : +# 35| r35_11250(glval) = FunctionAddress[~String] : +# 35| v35_11251(void) = Call[~String] : func:r35_11250, this:r35_11249 +# 35| mu35_11252(unknown) = ^CallSideEffect : ~m? +# 35| v35_11253(void) = ^IndirectReadSideEffect[-1] : &:r35_11249, ~m? +# 35| mu35_11254(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11249 +# 35| r35_11255(bool) = Constant[0] : +# 35| v35_11256(void) = ConditionalBranch : r35_11255 #-----| False -> Block 804 #-----| True -> Block 1026 -# 2431| Block 804 -# 2431| r2431_1(glval) = VariableAddress[x804] : -# 2431| mu2431_2(String) = Uninitialized[x804] : &:r2431_1 -# 2431| r2431_3(glval) = FunctionAddress[String] : -# 2431| v2431_4(void) = Call[String] : func:r2431_3, this:r2431_1 -# 2431| mu2431_5(unknown) = ^CallSideEffect : ~m? -# 2431| mu2431_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2431_1 -# 2432| r2432_1(glval) = VariableAddress[x804] : -# 2432| r2432_2(glval) = FunctionAddress[~String] : -# 2432| v2432_3(void) = Call[~String] : func:r2432_2, this:r2432_1 -# 2432| mu2432_4(unknown) = ^CallSideEffect : ~m? -# 2432| v2432_5(void) = ^IndirectReadSideEffect[-1] : &:r2432_1, ~m? -# 2432| mu2432_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2432_1 -# 2432| r2432_7(bool) = Constant[0] : -# 2432| v2432_8(void) = ConditionalBranch : r2432_7 +# 35| Block 804 +# 35| r35_11257(glval) = VariableAddress[x804] : +# 35| mu35_11258(String) = Uninitialized[x804] : &:r35_11257 +# 35| r35_11259(glval) = FunctionAddress[String] : +# 35| v35_11260(void) = Call[String] : func:r35_11259, this:r35_11257 +# 35| mu35_11261(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11262(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11257 +# 35| r35_11263(glval) = VariableAddress[x804] : +# 35| r35_11264(glval) = FunctionAddress[~String] : +# 35| v35_11265(void) = Call[~String] : func:r35_11264, this:r35_11263 +# 35| mu35_11266(unknown) = ^CallSideEffect : ~m? +# 35| v35_11267(void) = ^IndirectReadSideEffect[-1] : &:r35_11263, ~m? +# 35| mu35_11268(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11263 +# 35| r35_11269(bool) = Constant[0] : +# 35| v35_11270(void) = ConditionalBranch : r35_11269 #-----| False -> Block 805 #-----| True -> Block 1026 -# 2434| Block 805 -# 2434| r2434_1(glval) = VariableAddress[x805] : -# 2434| mu2434_2(String) = Uninitialized[x805] : &:r2434_1 -# 2434| r2434_3(glval) = FunctionAddress[String] : -# 2434| v2434_4(void) = Call[String] : func:r2434_3, this:r2434_1 -# 2434| mu2434_5(unknown) = ^CallSideEffect : ~m? -# 2434| mu2434_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2434_1 -# 2435| r2435_1(glval) = VariableAddress[x805] : -# 2435| r2435_2(glval) = FunctionAddress[~String] : -# 2435| v2435_3(void) = Call[~String] : func:r2435_2, this:r2435_1 -# 2435| mu2435_4(unknown) = ^CallSideEffect : ~m? -# 2435| v2435_5(void) = ^IndirectReadSideEffect[-1] : &:r2435_1, ~m? -# 2435| mu2435_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2435_1 -# 2435| r2435_7(bool) = Constant[0] : -# 2435| v2435_8(void) = ConditionalBranch : r2435_7 +# 35| Block 805 +# 35| r35_11271(glval) = VariableAddress[x805] : +# 35| mu35_11272(String) = Uninitialized[x805] : &:r35_11271 +# 35| r35_11273(glval) = FunctionAddress[String] : +# 35| v35_11274(void) = Call[String] : func:r35_11273, this:r35_11271 +# 35| mu35_11275(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11276(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11271 +# 35| r35_11277(glval) = VariableAddress[x805] : +# 35| r35_11278(glval) = FunctionAddress[~String] : +# 35| v35_11279(void) = Call[~String] : func:r35_11278, this:r35_11277 +# 35| mu35_11280(unknown) = ^CallSideEffect : ~m? +# 35| v35_11281(void) = ^IndirectReadSideEffect[-1] : &:r35_11277, ~m? +# 35| mu35_11282(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11277 +# 35| r35_11283(bool) = Constant[0] : +# 35| v35_11284(void) = ConditionalBranch : r35_11283 #-----| False -> Block 806 #-----| True -> Block 1026 -# 2437| Block 806 -# 2437| r2437_1(glval) = VariableAddress[x806] : -# 2437| mu2437_2(String) = Uninitialized[x806] : &:r2437_1 -# 2437| r2437_3(glval) = FunctionAddress[String] : -# 2437| v2437_4(void) = Call[String] : func:r2437_3, this:r2437_1 -# 2437| mu2437_5(unknown) = ^CallSideEffect : ~m? -# 2437| mu2437_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2437_1 -# 2438| r2438_1(glval) = VariableAddress[x806] : -# 2438| r2438_2(glval) = FunctionAddress[~String] : -# 2438| v2438_3(void) = Call[~String] : func:r2438_2, this:r2438_1 -# 2438| mu2438_4(unknown) = ^CallSideEffect : ~m? -# 2438| v2438_5(void) = ^IndirectReadSideEffect[-1] : &:r2438_1, ~m? -# 2438| mu2438_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2438_1 -# 2438| r2438_7(bool) = Constant[0] : -# 2438| v2438_8(void) = ConditionalBranch : r2438_7 +# 35| Block 806 +# 35| r35_11285(glval) = VariableAddress[x806] : +# 35| mu35_11286(String) = Uninitialized[x806] : &:r35_11285 +# 35| r35_11287(glval) = FunctionAddress[String] : +# 35| v35_11288(void) = Call[String] : func:r35_11287, this:r35_11285 +# 35| mu35_11289(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11290(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11285 +# 35| r35_11291(glval) = VariableAddress[x806] : +# 35| r35_11292(glval) = FunctionAddress[~String] : +# 35| v35_11293(void) = Call[~String] : func:r35_11292, this:r35_11291 +# 35| mu35_11294(unknown) = ^CallSideEffect : ~m? +# 35| v35_11295(void) = ^IndirectReadSideEffect[-1] : &:r35_11291, ~m? +# 35| mu35_11296(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11291 +# 35| r35_11297(bool) = Constant[0] : +# 35| v35_11298(void) = ConditionalBranch : r35_11297 #-----| False -> Block 807 #-----| True -> Block 1026 -# 2440| Block 807 -# 2440| r2440_1(glval) = VariableAddress[x807] : -# 2440| mu2440_2(String) = Uninitialized[x807] : &:r2440_1 -# 2440| r2440_3(glval) = FunctionAddress[String] : -# 2440| v2440_4(void) = Call[String] : func:r2440_3, this:r2440_1 -# 2440| mu2440_5(unknown) = ^CallSideEffect : ~m? -# 2440| mu2440_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2440_1 -# 2441| r2441_1(glval) = VariableAddress[x807] : -# 2441| r2441_2(glval) = FunctionAddress[~String] : -# 2441| v2441_3(void) = Call[~String] : func:r2441_2, this:r2441_1 -# 2441| mu2441_4(unknown) = ^CallSideEffect : ~m? -# 2441| v2441_5(void) = ^IndirectReadSideEffect[-1] : &:r2441_1, ~m? -# 2441| mu2441_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2441_1 -# 2441| r2441_7(bool) = Constant[0] : -# 2441| v2441_8(void) = ConditionalBranch : r2441_7 +# 35| Block 807 +# 35| r35_11299(glval) = VariableAddress[x807] : +# 35| mu35_11300(String) = Uninitialized[x807] : &:r35_11299 +# 35| r35_11301(glval) = FunctionAddress[String] : +# 35| v35_11302(void) = Call[String] : func:r35_11301, this:r35_11299 +# 35| mu35_11303(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11304(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11299 +# 35| r35_11305(glval) = VariableAddress[x807] : +# 35| r35_11306(glval) = FunctionAddress[~String] : +# 35| v35_11307(void) = Call[~String] : func:r35_11306, this:r35_11305 +# 35| mu35_11308(unknown) = ^CallSideEffect : ~m? +# 35| v35_11309(void) = ^IndirectReadSideEffect[-1] : &:r35_11305, ~m? +# 35| mu35_11310(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11305 +# 35| r35_11311(bool) = Constant[0] : +# 35| v35_11312(void) = ConditionalBranch : r35_11311 #-----| False -> Block 808 #-----| True -> Block 1026 -# 2443| Block 808 -# 2443| r2443_1(glval) = VariableAddress[x808] : -# 2443| mu2443_2(String) = Uninitialized[x808] : &:r2443_1 -# 2443| r2443_3(glval) = FunctionAddress[String] : -# 2443| v2443_4(void) = Call[String] : func:r2443_3, this:r2443_1 -# 2443| mu2443_5(unknown) = ^CallSideEffect : ~m? -# 2443| mu2443_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2443_1 -# 2444| r2444_1(glval) = VariableAddress[x808] : -# 2444| r2444_2(glval) = FunctionAddress[~String] : -# 2444| v2444_3(void) = Call[~String] : func:r2444_2, this:r2444_1 -# 2444| mu2444_4(unknown) = ^CallSideEffect : ~m? -# 2444| v2444_5(void) = ^IndirectReadSideEffect[-1] : &:r2444_1, ~m? -# 2444| mu2444_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2444_1 -# 2444| r2444_7(bool) = Constant[0] : -# 2444| v2444_8(void) = ConditionalBranch : r2444_7 +# 35| Block 808 +# 35| r35_11313(glval) = VariableAddress[x808] : +# 35| mu35_11314(String) = Uninitialized[x808] : &:r35_11313 +# 35| r35_11315(glval) = FunctionAddress[String] : +# 35| v35_11316(void) = Call[String] : func:r35_11315, this:r35_11313 +# 35| mu35_11317(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11318(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11313 +# 35| r35_11319(glval) = VariableAddress[x808] : +# 35| r35_11320(glval) = FunctionAddress[~String] : +# 35| v35_11321(void) = Call[~String] : func:r35_11320, this:r35_11319 +# 35| mu35_11322(unknown) = ^CallSideEffect : ~m? +# 35| v35_11323(void) = ^IndirectReadSideEffect[-1] : &:r35_11319, ~m? +# 35| mu35_11324(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11319 +# 35| r35_11325(bool) = Constant[0] : +# 35| v35_11326(void) = ConditionalBranch : r35_11325 #-----| False -> Block 809 #-----| True -> Block 1026 -# 2446| Block 809 -# 2446| r2446_1(glval) = VariableAddress[x809] : -# 2446| mu2446_2(String) = Uninitialized[x809] : &:r2446_1 -# 2446| r2446_3(glval) = FunctionAddress[String] : -# 2446| v2446_4(void) = Call[String] : func:r2446_3, this:r2446_1 -# 2446| mu2446_5(unknown) = ^CallSideEffect : ~m? -# 2446| mu2446_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2446_1 -# 2447| r2447_1(glval) = VariableAddress[x809] : -# 2447| r2447_2(glval) = FunctionAddress[~String] : -# 2447| v2447_3(void) = Call[~String] : func:r2447_2, this:r2447_1 -# 2447| mu2447_4(unknown) = ^CallSideEffect : ~m? -# 2447| v2447_5(void) = ^IndirectReadSideEffect[-1] : &:r2447_1, ~m? -# 2447| mu2447_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2447_1 -# 2447| r2447_7(bool) = Constant[0] : -# 2447| v2447_8(void) = ConditionalBranch : r2447_7 +# 35| Block 809 +# 35| r35_11327(glval) = VariableAddress[x809] : +# 35| mu35_11328(String) = Uninitialized[x809] : &:r35_11327 +# 35| r35_11329(glval) = FunctionAddress[String] : +# 35| v35_11330(void) = Call[String] : func:r35_11329, this:r35_11327 +# 35| mu35_11331(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11332(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11327 +# 35| r35_11333(glval) = VariableAddress[x809] : +# 35| r35_11334(glval) = FunctionAddress[~String] : +# 35| v35_11335(void) = Call[~String] : func:r35_11334, this:r35_11333 +# 35| mu35_11336(unknown) = ^CallSideEffect : ~m? +# 35| v35_11337(void) = ^IndirectReadSideEffect[-1] : &:r35_11333, ~m? +# 35| mu35_11338(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11333 +# 35| r35_11339(bool) = Constant[0] : +# 35| v35_11340(void) = ConditionalBranch : r35_11339 #-----| False -> Block 810 #-----| True -> Block 1026 -# 2449| Block 810 -# 2449| r2449_1(glval) = VariableAddress[x810] : -# 2449| mu2449_2(String) = Uninitialized[x810] : &:r2449_1 -# 2449| r2449_3(glval) = FunctionAddress[String] : -# 2449| v2449_4(void) = Call[String] : func:r2449_3, this:r2449_1 -# 2449| mu2449_5(unknown) = ^CallSideEffect : ~m? -# 2449| mu2449_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2449_1 -# 2450| r2450_1(glval) = VariableAddress[x810] : -# 2450| r2450_2(glval) = FunctionAddress[~String] : -# 2450| v2450_3(void) = Call[~String] : func:r2450_2, this:r2450_1 -# 2450| mu2450_4(unknown) = ^CallSideEffect : ~m? -# 2450| v2450_5(void) = ^IndirectReadSideEffect[-1] : &:r2450_1, ~m? -# 2450| mu2450_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2450_1 -# 2450| r2450_7(bool) = Constant[0] : -# 2450| v2450_8(void) = ConditionalBranch : r2450_7 +# 35| Block 810 +# 35| r35_11341(glval) = VariableAddress[x810] : +# 35| mu35_11342(String) = Uninitialized[x810] : &:r35_11341 +# 35| r35_11343(glval) = FunctionAddress[String] : +# 35| v35_11344(void) = Call[String] : func:r35_11343, this:r35_11341 +# 35| mu35_11345(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11346(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11341 +# 35| r35_11347(glval) = VariableAddress[x810] : +# 35| r35_11348(glval) = FunctionAddress[~String] : +# 35| v35_11349(void) = Call[~String] : func:r35_11348, this:r35_11347 +# 35| mu35_11350(unknown) = ^CallSideEffect : ~m? +# 35| v35_11351(void) = ^IndirectReadSideEffect[-1] : &:r35_11347, ~m? +# 35| mu35_11352(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11347 +# 35| r35_11353(bool) = Constant[0] : +# 35| v35_11354(void) = ConditionalBranch : r35_11353 #-----| False -> Block 811 #-----| True -> Block 1026 -# 2452| Block 811 -# 2452| r2452_1(glval) = VariableAddress[x811] : -# 2452| mu2452_2(String) = Uninitialized[x811] : &:r2452_1 -# 2452| r2452_3(glval) = FunctionAddress[String] : -# 2452| v2452_4(void) = Call[String] : func:r2452_3, this:r2452_1 -# 2452| mu2452_5(unknown) = ^CallSideEffect : ~m? -# 2452| mu2452_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2452_1 -# 2453| r2453_1(glval) = VariableAddress[x811] : -# 2453| r2453_2(glval) = FunctionAddress[~String] : -# 2453| v2453_3(void) = Call[~String] : func:r2453_2, this:r2453_1 -# 2453| mu2453_4(unknown) = ^CallSideEffect : ~m? -# 2453| v2453_5(void) = ^IndirectReadSideEffect[-1] : &:r2453_1, ~m? -# 2453| mu2453_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2453_1 -# 2453| r2453_7(bool) = Constant[0] : -# 2453| v2453_8(void) = ConditionalBranch : r2453_7 +# 35| Block 811 +# 35| r35_11355(glval) = VariableAddress[x811] : +# 35| mu35_11356(String) = Uninitialized[x811] : &:r35_11355 +# 35| r35_11357(glval) = FunctionAddress[String] : +# 35| v35_11358(void) = Call[String] : func:r35_11357, this:r35_11355 +# 35| mu35_11359(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11360(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11355 +# 35| r35_11361(glval) = VariableAddress[x811] : +# 35| r35_11362(glval) = FunctionAddress[~String] : +# 35| v35_11363(void) = Call[~String] : func:r35_11362, this:r35_11361 +# 35| mu35_11364(unknown) = ^CallSideEffect : ~m? +# 35| v35_11365(void) = ^IndirectReadSideEffect[-1] : &:r35_11361, ~m? +# 35| mu35_11366(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11361 +# 35| r35_11367(bool) = Constant[0] : +# 35| v35_11368(void) = ConditionalBranch : r35_11367 #-----| False -> Block 812 #-----| True -> Block 1026 -# 2455| Block 812 -# 2455| r2455_1(glval) = VariableAddress[x812] : -# 2455| mu2455_2(String) = Uninitialized[x812] : &:r2455_1 -# 2455| r2455_3(glval) = FunctionAddress[String] : -# 2455| v2455_4(void) = Call[String] : func:r2455_3, this:r2455_1 -# 2455| mu2455_5(unknown) = ^CallSideEffect : ~m? -# 2455| mu2455_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2455_1 -# 2456| r2456_1(glval) = VariableAddress[x812] : -# 2456| r2456_2(glval) = FunctionAddress[~String] : -# 2456| v2456_3(void) = Call[~String] : func:r2456_2, this:r2456_1 -# 2456| mu2456_4(unknown) = ^CallSideEffect : ~m? -# 2456| v2456_5(void) = ^IndirectReadSideEffect[-1] : &:r2456_1, ~m? -# 2456| mu2456_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2456_1 -# 2456| r2456_7(bool) = Constant[0] : -# 2456| v2456_8(void) = ConditionalBranch : r2456_7 +# 35| Block 812 +# 35| r35_11369(glval) = VariableAddress[x812] : +# 35| mu35_11370(String) = Uninitialized[x812] : &:r35_11369 +# 35| r35_11371(glval) = FunctionAddress[String] : +# 35| v35_11372(void) = Call[String] : func:r35_11371, this:r35_11369 +# 35| mu35_11373(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11374(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11369 +# 35| r35_11375(glval) = VariableAddress[x812] : +# 35| r35_11376(glval) = FunctionAddress[~String] : +# 35| v35_11377(void) = Call[~String] : func:r35_11376, this:r35_11375 +# 35| mu35_11378(unknown) = ^CallSideEffect : ~m? +# 35| v35_11379(void) = ^IndirectReadSideEffect[-1] : &:r35_11375, ~m? +# 35| mu35_11380(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11375 +# 35| r35_11381(bool) = Constant[0] : +# 35| v35_11382(void) = ConditionalBranch : r35_11381 #-----| False -> Block 813 #-----| True -> Block 1026 -# 2458| Block 813 -# 2458| r2458_1(glval) = VariableAddress[x813] : -# 2458| mu2458_2(String) = Uninitialized[x813] : &:r2458_1 -# 2458| r2458_3(glval) = FunctionAddress[String] : -# 2458| v2458_4(void) = Call[String] : func:r2458_3, this:r2458_1 -# 2458| mu2458_5(unknown) = ^CallSideEffect : ~m? -# 2458| mu2458_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2458_1 -# 2459| r2459_1(glval) = VariableAddress[x813] : -# 2459| r2459_2(glval) = FunctionAddress[~String] : -# 2459| v2459_3(void) = Call[~String] : func:r2459_2, this:r2459_1 -# 2459| mu2459_4(unknown) = ^CallSideEffect : ~m? -# 2459| v2459_5(void) = ^IndirectReadSideEffect[-1] : &:r2459_1, ~m? -# 2459| mu2459_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2459_1 -# 2459| r2459_7(bool) = Constant[0] : -# 2459| v2459_8(void) = ConditionalBranch : r2459_7 +# 35| Block 813 +# 35| r35_11383(glval) = VariableAddress[x813] : +# 35| mu35_11384(String) = Uninitialized[x813] : &:r35_11383 +# 35| r35_11385(glval) = FunctionAddress[String] : +# 35| v35_11386(void) = Call[String] : func:r35_11385, this:r35_11383 +# 35| mu35_11387(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11388(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11383 +# 35| r35_11389(glval) = VariableAddress[x813] : +# 35| r35_11390(glval) = FunctionAddress[~String] : +# 35| v35_11391(void) = Call[~String] : func:r35_11390, this:r35_11389 +# 35| mu35_11392(unknown) = ^CallSideEffect : ~m? +# 35| v35_11393(void) = ^IndirectReadSideEffect[-1] : &:r35_11389, ~m? +# 35| mu35_11394(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11389 +# 35| r35_11395(bool) = Constant[0] : +# 35| v35_11396(void) = ConditionalBranch : r35_11395 #-----| False -> Block 814 #-----| True -> Block 1026 -# 2461| Block 814 -# 2461| r2461_1(glval) = VariableAddress[x814] : -# 2461| mu2461_2(String) = Uninitialized[x814] : &:r2461_1 -# 2461| r2461_3(glval) = FunctionAddress[String] : -# 2461| v2461_4(void) = Call[String] : func:r2461_3, this:r2461_1 -# 2461| mu2461_5(unknown) = ^CallSideEffect : ~m? -# 2461| mu2461_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2461_1 -# 2462| r2462_1(glval) = VariableAddress[x814] : -# 2462| r2462_2(glval) = FunctionAddress[~String] : -# 2462| v2462_3(void) = Call[~String] : func:r2462_2, this:r2462_1 -# 2462| mu2462_4(unknown) = ^CallSideEffect : ~m? -# 2462| v2462_5(void) = ^IndirectReadSideEffect[-1] : &:r2462_1, ~m? -# 2462| mu2462_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2462_1 -# 2462| r2462_7(bool) = Constant[0] : -# 2462| v2462_8(void) = ConditionalBranch : r2462_7 +# 35| Block 814 +# 35| r35_11397(glval) = VariableAddress[x814] : +# 35| mu35_11398(String) = Uninitialized[x814] : &:r35_11397 +# 35| r35_11399(glval) = FunctionAddress[String] : +# 35| v35_11400(void) = Call[String] : func:r35_11399, this:r35_11397 +# 35| mu35_11401(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11402(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11397 +# 35| r35_11403(glval) = VariableAddress[x814] : +# 35| r35_11404(glval) = FunctionAddress[~String] : +# 35| v35_11405(void) = Call[~String] : func:r35_11404, this:r35_11403 +# 35| mu35_11406(unknown) = ^CallSideEffect : ~m? +# 35| v35_11407(void) = ^IndirectReadSideEffect[-1] : &:r35_11403, ~m? +# 35| mu35_11408(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11403 +# 35| r35_11409(bool) = Constant[0] : +# 35| v35_11410(void) = ConditionalBranch : r35_11409 #-----| False -> Block 815 #-----| True -> Block 1026 -# 2464| Block 815 -# 2464| r2464_1(glval) = VariableAddress[x815] : -# 2464| mu2464_2(String) = Uninitialized[x815] : &:r2464_1 -# 2464| r2464_3(glval) = FunctionAddress[String] : -# 2464| v2464_4(void) = Call[String] : func:r2464_3, this:r2464_1 -# 2464| mu2464_5(unknown) = ^CallSideEffect : ~m? -# 2464| mu2464_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2464_1 -# 2465| r2465_1(glval) = VariableAddress[x815] : -# 2465| r2465_2(glval) = FunctionAddress[~String] : -# 2465| v2465_3(void) = Call[~String] : func:r2465_2, this:r2465_1 -# 2465| mu2465_4(unknown) = ^CallSideEffect : ~m? -# 2465| v2465_5(void) = ^IndirectReadSideEffect[-1] : &:r2465_1, ~m? -# 2465| mu2465_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2465_1 -# 2465| r2465_7(bool) = Constant[0] : -# 2465| v2465_8(void) = ConditionalBranch : r2465_7 +# 35| Block 815 +# 35| r35_11411(glval) = VariableAddress[x815] : +# 35| mu35_11412(String) = Uninitialized[x815] : &:r35_11411 +# 35| r35_11413(glval) = FunctionAddress[String] : +# 35| v35_11414(void) = Call[String] : func:r35_11413, this:r35_11411 +# 35| mu35_11415(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11416(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11411 +# 35| r35_11417(glval) = VariableAddress[x815] : +# 35| r35_11418(glval) = FunctionAddress[~String] : +# 35| v35_11419(void) = Call[~String] : func:r35_11418, this:r35_11417 +# 35| mu35_11420(unknown) = ^CallSideEffect : ~m? +# 35| v35_11421(void) = ^IndirectReadSideEffect[-1] : &:r35_11417, ~m? +# 35| mu35_11422(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11417 +# 35| r35_11423(bool) = Constant[0] : +# 35| v35_11424(void) = ConditionalBranch : r35_11423 #-----| False -> Block 816 #-----| True -> Block 1026 -# 2467| Block 816 -# 2467| r2467_1(glval) = VariableAddress[x816] : -# 2467| mu2467_2(String) = Uninitialized[x816] : &:r2467_1 -# 2467| r2467_3(glval) = FunctionAddress[String] : -# 2467| v2467_4(void) = Call[String] : func:r2467_3, this:r2467_1 -# 2467| mu2467_5(unknown) = ^CallSideEffect : ~m? -# 2467| mu2467_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2467_1 -# 2468| r2468_1(glval) = VariableAddress[x816] : -# 2468| r2468_2(glval) = FunctionAddress[~String] : -# 2468| v2468_3(void) = Call[~String] : func:r2468_2, this:r2468_1 -# 2468| mu2468_4(unknown) = ^CallSideEffect : ~m? -# 2468| v2468_5(void) = ^IndirectReadSideEffect[-1] : &:r2468_1, ~m? -# 2468| mu2468_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2468_1 -# 2468| r2468_7(bool) = Constant[0] : -# 2468| v2468_8(void) = ConditionalBranch : r2468_7 +# 35| Block 816 +# 35| r35_11425(glval) = VariableAddress[x816] : +# 35| mu35_11426(String) = Uninitialized[x816] : &:r35_11425 +# 35| r35_11427(glval) = FunctionAddress[String] : +# 35| v35_11428(void) = Call[String] : func:r35_11427, this:r35_11425 +# 35| mu35_11429(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11430(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11425 +# 35| r35_11431(glval) = VariableAddress[x816] : +# 35| r35_11432(glval) = FunctionAddress[~String] : +# 35| v35_11433(void) = Call[~String] : func:r35_11432, this:r35_11431 +# 35| mu35_11434(unknown) = ^CallSideEffect : ~m? +# 35| v35_11435(void) = ^IndirectReadSideEffect[-1] : &:r35_11431, ~m? +# 35| mu35_11436(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11431 +# 35| r35_11437(bool) = Constant[0] : +# 35| v35_11438(void) = ConditionalBranch : r35_11437 #-----| False -> Block 817 #-----| True -> Block 1026 -# 2470| Block 817 -# 2470| r2470_1(glval) = VariableAddress[x817] : -# 2470| mu2470_2(String) = Uninitialized[x817] : &:r2470_1 -# 2470| r2470_3(glval) = FunctionAddress[String] : -# 2470| v2470_4(void) = Call[String] : func:r2470_3, this:r2470_1 -# 2470| mu2470_5(unknown) = ^CallSideEffect : ~m? -# 2470| mu2470_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2470_1 -# 2471| r2471_1(glval) = VariableAddress[x817] : -# 2471| r2471_2(glval) = FunctionAddress[~String] : -# 2471| v2471_3(void) = Call[~String] : func:r2471_2, this:r2471_1 -# 2471| mu2471_4(unknown) = ^CallSideEffect : ~m? -# 2471| v2471_5(void) = ^IndirectReadSideEffect[-1] : &:r2471_1, ~m? -# 2471| mu2471_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2471_1 -# 2471| r2471_7(bool) = Constant[0] : -# 2471| v2471_8(void) = ConditionalBranch : r2471_7 +# 35| Block 817 +# 35| r35_11439(glval) = VariableAddress[x817] : +# 35| mu35_11440(String) = Uninitialized[x817] : &:r35_11439 +# 35| r35_11441(glval) = FunctionAddress[String] : +# 35| v35_11442(void) = Call[String] : func:r35_11441, this:r35_11439 +# 35| mu35_11443(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11444(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11439 +# 35| r35_11445(glval) = VariableAddress[x817] : +# 35| r35_11446(glval) = FunctionAddress[~String] : +# 35| v35_11447(void) = Call[~String] : func:r35_11446, this:r35_11445 +# 35| mu35_11448(unknown) = ^CallSideEffect : ~m? +# 35| v35_11449(void) = ^IndirectReadSideEffect[-1] : &:r35_11445, ~m? +# 35| mu35_11450(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11445 +# 35| r35_11451(bool) = Constant[0] : +# 35| v35_11452(void) = ConditionalBranch : r35_11451 #-----| False -> Block 818 #-----| True -> Block 1026 -# 2473| Block 818 -# 2473| r2473_1(glval) = VariableAddress[x818] : -# 2473| mu2473_2(String) = Uninitialized[x818] : &:r2473_1 -# 2473| r2473_3(glval) = FunctionAddress[String] : -# 2473| v2473_4(void) = Call[String] : func:r2473_3, this:r2473_1 -# 2473| mu2473_5(unknown) = ^CallSideEffect : ~m? -# 2473| mu2473_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2473_1 -# 2474| r2474_1(glval) = VariableAddress[x818] : -# 2474| r2474_2(glval) = FunctionAddress[~String] : -# 2474| v2474_3(void) = Call[~String] : func:r2474_2, this:r2474_1 -# 2474| mu2474_4(unknown) = ^CallSideEffect : ~m? -# 2474| v2474_5(void) = ^IndirectReadSideEffect[-1] : &:r2474_1, ~m? -# 2474| mu2474_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2474_1 -# 2474| r2474_7(bool) = Constant[0] : -# 2474| v2474_8(void) = ConditionalBranch : r2474_7 +# 35| Block 818 +# 35| r35_11453(glval) = VariableAddress[x818] : +# 35| mu35_11454(String) = Uninitialized[x818] : &:r35_11453 +# 35| r35_11455(glval) = FunctionAddress[String] : +# 35| v35_11456(void) = Call[String] : func:r35_11455, this:r35_11453 +# 35| mu35_11457(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11458(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11453 +# 35| r35_11459(glval) = VariableAddress[x818] : +# 35| r35_11460(glval) = FunctionAddress[~String] : +# 35| v35_11461(void) = Call[~String] : func:r35_11460, this:r35_11459 +# 35| mu35_11462(unknown) = ^CallSideEffect : ~m? +# 35| v35_11463(void) = ^IndirectReadSideEffect[-1] : &:r35_11459, ~m? +# 35| mu35_11464(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11459 +# 35| r35_11465(bool) = Constant[0] : +# 35| v35_11466(void) = ConditionalBranch : r35_11465 #-----| False -> Block 819 #-----| True -> Block 1026 -# 2476| Block 819 -# 2476| r2476_1(glval) = VariableAddress[x819] : -# 2476| mu2476_2(String) = Uninitialized[x819] : &:r2476_1 -# 2476| r2476_3(glval) = FunctionAddress[String] : -# 2476| v2476_4(void) = Call[String] : func:r2476_3, this:r2476_1 -# 2476| mu2476_5(unknown) = ^CallSideEffect : ~m? -# 2476| mu2476_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2476_1 -# 2477| r2477_1(glval) = VariableAddress[x819] : -# 2477| r2477_2(glval) = FunctionAddress[~String] : -# 2477| v2477_3(void) = Call[~String] : func:r2477_2, this:r2477_1 -# 2477| mu2477_4(unknown) = ^CallSideEffect : ~m? -# 2477| v2477_5(void) = ^IndirectReadSideEffect[-1] : &:r2477_1, ~m? -# 2477| mu2477_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2477_1 -# 2477| r2477_7(bool) = Constant[0] : -# 2477| v2477_8(void) = ConditionalBranch : r2477_7 +# 35| Block 819 +# 35| r35_11467(glval) = VariableAddress[x819] : +# 35| mu35_11468(String) = Uninitialized[x819] : &:r35_11467 +# 35| r35_11469(glval) = FunctionAddress[String] : +# 35| v35_11470(void) = Call[String] : func:r35_11469, this:r35_11467 +# 35| mu35_11471(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11472(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11467 +# 35| r35_11473(glval) = VariableAddress[x819] : +# 35| r35_11474(glval) = FunctionAddress[~String] : +# 35| v35_11475(void) = Call[~String] : func:r35_11474, this:r35_11473 +# 35| mu35_11476(unknown) = ^CallSideEffect : ~m? +# 35| v35_11477(void) = ^IndirectReadSideEffect[-1] : &:r35_11473, ~m? +# 35| mu35_11478(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11473 +# 35| r35_11479(bool) = Constant[0] : +# 35| v35_11480(void) = ConditionalBranch : r35_11479 #-----| False -> Block 820 #-----| True -> Block 1026 -# 2479| Block 820 -# 2479| r2479_1(glval) = VariableAddress[x820] : -# 2479| mu2479_2(String) = Uninitialized[x820] : &:r2479_1 -# 2479| r2479_3(glval) = FunctionAddress[String] : -# 2479| v2479_4(void) = Call[String] : func:r2479_3, this:r2479_1 -# 2479| mu2479_5(unknown) = ^CallSideEffect : ~m? -# 2479| mu2479_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2479_1 -# 2480| r2480_1(glval) = VariableAddress[x820] : -# 2480| r2480_2(glval) = FunctionAddress[~String] : -# 2480| v2480_3(void) = Call[~String] : func:r2480_2, this:r2480_1 -# 2480| mu2480_4(unknown) = ^CallSideEffect : ~m? -# 2480| v2480_5(void) = ^IndirectReadSideEffect[-1] : &:r2480_1, ~m? -# 2480| mu2480_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2480_1 -# 2480| r2480_7(bool) = Constant[0] : -# 2480| v2480_8(void) = ConditionalBranch : r2480_7 +# 35| Block 820 +# 35| r35_11481(glval) = VariableAddress[x820] : +# 35| mu35_11482(String) = Uninitialized[x820] : &:r35_11481 +# 35| r35_11483(glval) = FunctionAddress[String] : +# 35| v35_11484(void) = Call[String] : func:r35_11483, this:r35_11481 +# 35| mu35_11485(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11486(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11481 +# 35| r35_11487(glval) = VariableAddress[x820] : +# 35| r35_11488(glval) = FunctionAddress[~String] : +# 35| v35_11489(void) = Call[~String] : func:r35_11488, this:r35_11487 +# 35| mu35_11490(unknown) = ^CallSideEffect : ~m? +# 35| v35_11491(void) = ^IndirectReadSideEffect[-1] : &:r35_11487, ~m? +# 35| mu35_11492(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11487 +# 35| r35_11493(bool) = Constant[0] : +# 35| v35_11494(void) = ConditionalBranch : r35_11493 #-----| False -> Block 821 #-----| True -> Block 1026 -# 2482| Block 821 -# 2482| r2482_1(glval) = VariableAddress[x821] : -# 2482| mu2482_2(String) = Uninitialized[x821] : &:r2482_1 -# 2482| r2482_3(glval) = FunctionAddress[String] : -# 2482| v2482_4(void) = Call[String] : func:r2482_3, this:r2482_1 -# 2482| mu2482_5(unknown) = ^CallSideEffect : ~m? -# 2482| mu2482_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2482_1 -# 2483| r2483_1(glval) = VariableAddress[x821] : -# 2483| r2483_2(glval) = FunctionAddress[~String] : -# 2483| v2483_3(void) = Call[~String] : func:r2483_2, this:r2483_1 -# 2483| mu2483_4(unknown) = ^CallSideEffect : ~m? -# 2483| v2483_5(void) = ^IndirectReadSideEffect[-1] : &:r2483_1, ~m? -# 2483| mu2483_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2483_1 -# 2483| r2483_7(bool) = Constant[0] : -# 2483| v2483_8(void) = ConditionalBranch : r2483_7 +# 35| Block 821 +# 35| r35_11495(glval) = VariableAddress[x821] : +# 35| mu35_11496(String) = Uninitialized[x821] : &:r35_11495 +# 35| r35_11497(glval) = FunctionAddress[String] : +# 35| v35_11498(void) = Call[String] : func:r35_11497, this:r35_11495 +# 35| mu35_11499(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11500(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11495 +# 35| r35_11501(glval) = VariableAddress[x821] : +# 35| r35_11502(glval) = FunctionAddress[~String] : +# 35| v35_11503(void) = Call[~String] : func:r35_11502, this:r35_11501 +# 35| mu35_11504(unknown) = ^CallSideEffect : ~m? +# 35| v35_11505(void) = ^IndirectReadSideEffect[-1] : &:r35_11501, ~m? +# 35| mu35_11506(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11501 +# 35| r35_11507(bool) = Constant[0] : +# 35| v35_11508(void) = ConditionalBranch : r35_11507 #-----| False -> Block 822 #-----| True -> Block 1026 -# 2485| Block 822 -# 2485| r2485_1(glval) = VariableAddress[x822] : -# 2485| mu2485_2(String) = Uninitialized[x822] : &:r2485_1 -# 2485| r2485_3(glval) = FunctionAddress[String] : -# 2485| v2485_4(void) = Call[String] : func:r2485_3, this:r2485_1 -# 2485| mu2485_5(unknown) = ^CallSideEffect : ~m? -# 2485| mu2485_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2485_1 -# 2486| r2486_1(glval) = VariableAddress[x822] : -# 2486| r2486_2(glval) = FunctionAddress[~String] : -# 2486| v2486_3(void) = Call[~String] : func:r2486_2, this:r2486_1 -# 2486| mu2486_4(unknown) = ^CallSideEffect : ~m? -# 2486| v2486_5(void) = ^IndirectReadSideEffect[-1] : &:r2486_1, ~m? -# 2486| mu2486_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2486_1 -# 2486| r2486_7(bool) = Constant[0] : -# 2486| v2486_8(void) = ConditionalBranch : r2486_7 +# 35| Block 822 +# 35| r35_11509(glval) = VariableAddress[x822] : +# 35| mu35_11510(String) = Uninitialized[x822] : &:r35_11509 +# 35| r35_11511(glval) = FunctionAddress[String] : +# 35| v35_11512(void) = Call[String] : func:r35_11511, this:r35_11509 +# 35| mu35_11513(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11514(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11509 +# 35| r35_11515(glval) = VariableAddress[x822] : +# 35| r35_11516(glval) = FunctionAddress[~String] : +# 35| v35_11517(void) = Call[~String] : func:r35_11516, this:r35_11515 +# 35| mu35_11518(unknown) = ^CallSideEffect : ~m? +# 35| v35_11519(void) = ^IndirectReadSideEffect[-1] : &:r35_11515, ~m? +# 35| mu35_11520(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11515 +# 35| r35_11521(bool) = Constant[0] : +# 35| v35_11522(void) = ConditionalBranch : r35_11521 #-----| False -> Block 823 #-----| True -> Block 1026 -# 2488| Block 823 -# 2488| r2488_1(glval) = VariableAddress[x823] : -# 2488| mu2488_2(String) = Uninitialized[x823] : &:r2488_1 -# 2488| r2488_3(glval) = FunctionAddress[String] : -# 2488| v2488_4(void) = Call[String] : func:r2488_3, this:r2488_1 -# 2488| mu2488_5(unknown) = ^CallSideEffect : ~m? -# 2488| mu2488_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2488_1 -# 2489| r2489_1(glval) = VariableAddress[x823] : -# 2489| r2489_2(glval) = FunctionAddress[~String] : -# 2489| v2489_3(void) = Call[~String] : func:r2489_2, this:r2489_1 -# 2489| mu2489_4(unknown) = ^CallSideEffect : ~m? -# 2489| v2489_5(void) = ^IndirectReadSideEffect[-1] : &:r2489_1, ~m? -# 2489| mu2489_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2489_1 -# 2489| r2489_7(bool) = Constant[0] : -# 2489| v2489_8(void) = ConditionalBranch : r2489_7 +# 35| Block 823 +# 35| r35_11523(glval) = VariableAddress[x823] : +# 35| mu35_11524(String) = Uninitialized[x823] : &:r35_11523 +# 35| r35_11525(glval) = FunctionAddress[String] : +# 35| v35_11526(void) = Call[String] : func:r35_11525, this:r35_11523 +# 35| mu35_11527(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11528(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11523 +# 35| r35_11529(glval) = VariableAddress[x823] : +# 35| r35_11530(glval) = FunctionAddress[~String] : +# 35| v35_11531(void) = Call[~String] : func:r35_11530, this:r35_11529 +# 35| mu35_11532(unknown) = ^CallSideEffect : ~m? +# 35| v35_11533(void) = ^IndirectReadSideEffect[-1] : &:r35_11529, ~m? +# 35| mu35_11534(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11529 +# 35| r35_11535(bool) = Constant[0] : +# 35| v35_11536(void) = ConditionalBranch : r35_11535 #-----| False -> Block 824 #-----| True -> Block 1026 -# 2491| Block 824 -# 2491| r2491_1(glval) = VariableAddress[x824] : -# 2491| mu2491_2(String) = Uninitialized[x824] : &:r2491_1 -# 2491| r2491_3(glval) = FunctionAddress[String] : -# 2491| v2491_4(void) = Call[String] : func:r2491_3, this:r2491_1 -# 2491| mu2491_5(unknown) = ^CallSideEffect : ~m? -# 2491| mu2491_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2491_1 -# 2492| r2492_1(glval) = VariableAddress[x824] : -# 2492| r2492_2(glval) = FunctionAddress[~String] : -# 2492| v2492_3(void) = Call[~String] : func:r2492_2, this:r2492_1 -# 2492| mu2492_4(unknown) = ^CallSideEffect : ~m? -# 2492| v2492_5(void) = ^IndirectReadSideEffect[-1] : &:r2492_1, ~m? -# 2492| mu2492_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2492_1 -# 2492| r2492_7(bool) = Constant[0] : -# 2492| v2492_8(void) = ConditionalBranch : r2492_7 +# 35| Block 824 +# 35| r35_11537(glval) = VariableAddress[x824] : +# 35| mu35_11538(String) = Uninitialized[x824] : &:r35_11537 +# 35| r35_11539(glval) = FunctionAddress[String] : +# 35| v35_11540(void) = Call[String] : func:r35_11539, this:r35_11537 +# 35| mu35_11541(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11542(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11537 +# 35| r35_11543(glval) = VariableAddress[x824] : +# 35| r35_11544(glval) = FunctionAddress[~String] : +# 35| v35_11545(void) = Call[~String] : func:r35_11544, this:r35_11543 +# 35| mu35_11546(unknown) = ^CallSideEffect : ~m? +# 35| v35_11547(void) = ^IndirectReadSideEffect[-1] : &:r35_11543, ~m? +# 35| mu35_11548(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11543 +# 35| r35_11549(bool) = Constant[0] : +# 35| v35_11550(void) = ConditionalBranch : r35_11549 #-----| False -> Block 825 #-----| True -> Block 1026 -# 2494| Block 825 -# 2494| r2494_1(glval) = VariableAddress[x825] : -# 2494| mu2494_2(String) = Uninitialized[x825] : &:r2494_1 -# 2494| r2494_3(glval) = FunctionAddress[String] : -# 2494| v2494_4(void) = Call[String] : func:r2494_3, this:r2494_1 -# 2494| mu2494_5(unknown) = ^CallSideEffect : ~m? -# 2494| mu2494_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2494_1 -# 2495| r2495_1(glval) = VariableAddress[x825] : -# 2495| r2495_2(glval) = FunctionAddress[~String] : -# 2495| v2495_3(void) = Call[~String] : func:r2495_2, this:r2495_1 -# 2495| mu2495_4(unknown) = ^CallSideEffect : ~m? -# 2495| v2495_5(void) = ^IndirectReadSideEffect[-1] : &:r2495_1, ~m? -# 2495| mu2495_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2495_1 -# 2495| r2495_7(bool) = Constant[0] : -# 2495| v2495_8(void) = ConditionalBranch : r2495_7 +# 35| Block 825 +# 35| r35_11551(glval) = VariableAddress[x825] : +# 35| mu35_11552(String) = Uninitialized[x825] : &:r35_11551 +# 35| r35_11553(glval) = FunctionAddress[String] : +# 35| v35_11554(void) = Call[String] : func:r35_11553, this:r35_11551 +# 35| mu35_11555(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11556(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11551 +# 35| r35_11557(glval) = VariableAddress[x825] : +# 35| r35_11558(glval) = FunctionAddress[~String] : +# 35| v35_11559(void) = Call[~String] : func:r35_11558, this:r35_11557 +# 35| mu35_11560(unknown) = ^CallSideEffect : ~m? +# 35| v35_11561(void) = ^IndirectReadSideEffect[-1] : &:r35_11557, ~m? +# 35| mu35_11562(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11557 +# 35| r35_11563(bool) = Constant[0] : +# 35| v35_11564(void) = ConditionalBranch : r35_11563 #-----| False -> Block 826 #-----| True -> Block 1026 -# 2497| Block 826 -# 2497| r2497_1(glval) = VariableAddress[x826] : -# 2497| mu2497_2(String) = Uninitialized[x826] : &:r2497_1 -# 2497| r2497_3(glval) = FunctionAddress[String] : -# 2497| v2497_4(void) = Call[String] : func:r2497_3, this:r2497_1 -# 2497| mu2497_5(unknown) = ^CallSideEffect : ~m? -# 2497| mu2497_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2497_1 -# 2498| r2498_1(glval) = VariableAddress[x826] : -# 2498| r2498_2(glval) = FunctionAddress[~String] : -# 2498| v2498_3(void) = Call[~String] : func:r2498_2, this:r2498_1 -# 2498| mu2498_4(unknown) = ^CallSideEffect : ~m? -# 2498| v2498_5(void) = ^IndirectReadSideEffect[-1] : &:r2498_1, ~m? -# 2498| mu2498_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2498_1 -# 2498| r2498_7(bool) = Constant[0] : -# 2498| v2498_8(void) = ConditionalBranch : r2498_7 +# 35| Block 826 +# 35| r35_11565(glval) = VariableAddress[x826] : +# 35| mu35_11566(String) = Uninitialized[x826] : &:r35_11565 +# 35| r35_11567(glval) = FunctionAddress[String] : +# 35| v35_11568(void) = Call[String] : func:r35_11567, this:r35_11565 +# 35| mu35_11569(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11570(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11565 +# 35| r35_11571(glval) = VariableAddress[x826] : +# 35| r35_11572(glval) = FunctionAddress[~String] : +# 35| v35_11573(void) = Call[~String] : func:r35_11572, this:r35_11571 +# 35| mu35_11574(unknown) = ^CallSideEffect : ~m? +# 35| v35_11575(void) = ^IndirectReadSideEffect[-1] : &:r35_11571, ~m? +# 35| mu35_11576(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11571 +# 35| r35_11577(bool) = Constant[0] : +# 35| v35_11578(void) = ConditionalBranch : r35_11577 #-----| False -> Block 827 #-----| True -> Block 1026 -# 2500| Block 827 -# 2500| r2500_1(glval) = VariableAddress[x827] : -# 2500| mu2500_2(String) = Uninitialized[x827] : &:r2500_1 -# 2500| r2500_3(glval) = FunctionAddress[String] : -# 2500| v2500_4(void) = Call[String] : func:r2500_3, this:r2500_1 -# 2500| mu2500_5(unknown) = ^CallSideEffect : ~m? -# 2500| mu2500_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2500_1 -# 2501| r2501_1(glval) = VariableAddress[x827] : -# 2501| r2501_2(glval) = FunctionAddress[~String] : -# 2501| v2501_3(void) = Call[~String] : func:r2501_2, this:r2501_1 -# 2501| mu2501_4(unknown) = ^CallSideEffect : ~m? -# 2501| v2501_5(void) = ^IndirectReadSideEffect[-1] : &:r2501_1, ~m? -# 2501| mu2501_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2501_1 -# 2501| r2501_7(bool) = Constant[0] : -# 2501| v2501_8(void) = ConditionalBranch : r2501_7 +# 35| Block 827 +# 35| r35_11579(glval) = VariableAddress[x827] : +# 35| mu35_11580(String) = Uninitialized[x827] : &:r35_11579 +# 35| r35_11581(glval) = FunctionAddress[String] : +# 35| v35_11582(void) = Call[String] : func:r35_11581, this:r35_11579 +# 35| mu35_11583(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11584(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11579 +# 35| r35_11585(glval) = VariableAddress[x827] : +# 35| r35_11586(glval) = FunctionAddress[~String] : +# 35| v35_11587(void) = Call[~String] : func:r35_11586, this:r35_11585 +# 35| mu35_11588(unknown) = ^CallSideEffect : ~m? +# 35| v35_11589(void) = ^IndirectReadSideEffect[-1] : &:r35_11585, ~m? +# 35| mu35_11590(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11585 +# 35| r35_11591(bool) = Constant[0] : +# 35| v35_11592(void) = ConditionalBranch : r35_11591 #-----| False -> Block 828 #-----| True -> Block 1026 -# 2503| Block 828 -# 2503| r2503_1(glval) = VariableAddress[x828] : -# 2503| mu2503_2(String) = Uninitialized[x828] : &:r2503_1 -# 2503| r2503_3(glval) = FunctionAddress[String] : -# 2503| v2503_4(void) = Call[String] : func:r2503_3, this:r2503_1 -# 2503| mu2503_5(unknown) = ^CallSideEffect : ~m? -# 2503| mu2503_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2503_1 -# 2504| r2504_1(glval) = VariableAddress[x828] : -# 2504| r2504_2(glval) = FunctionAddress[~String] : -# 2504| v2504_3(void) = Call[~String] : func:r2504_2, this:r2504_1 -# 2504| mu2504_4(unknown) = ^CallSideEffect : ~m? -# 2504| v2504_5(void) = ^IndirectReadSideEffect[-1] : &:r2504_1, ~m? -# 2504| mu2504_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2504_1 -# 2504| r2504_7(bool) = Constant[0] : -# 2504| v2504_8(void) = ConditionalBranch : r2504_7 +# 35| Block 828 +# 35| r35_11593(glval) = VariableAddress[x828] : +# 35| mu35_11594(String) = Uninitialized[x828] : &:r35_11593 +# 35| r35_11595(glval) = FunctionAddress[String] : +# 35| v35_11596(void) = Call[String] : func:r35_11595, this:r35_11593 +# 35| mu35_11597(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11598(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11593 +# 35| r35_11599(glval) = VariableAddress[x828] : +# 35| r35_11600(glval) = FunctionAddress[~String] : +# 35| v35_11601(void) = Call[~String] : func:r35_11600, this:r35_11599 +# 35| mu35_11602(unknown) = ^CallSideEffect : ~m? +# 35| v35_11603(void) = ^IndirectReadSideEffect[-1] : &:r35_11599, ~m? +# 35| mu35_11604(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11599 +# 35| r35_11605(bool) = Constant[0] : +# 35| v35_11606(void) = ConditionalBranch : r35_11605 #-----| False -> Block 829 #-----| True -> Block 1026 -# 2506| Block 829 -# 2506| r2506_1(glval) = VariableAddress[x829] : -# 2506| mu2506_2(String) = Uninitialized[x829] : &:r2506_1 -# 2506| r2506_3(glval) = FunctionAddress[String] : -# 2506| v2506_4(void) = Call[String] : func:r2506_3, this:r2506_1 -# 2506| mu2506_5(unknown) = ^CallSideEffect : ~m? -# 2506| mu2506_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2506_1 -# 2507| r2507_1(glval) = VariableAddress[x829] : -# 2507| r2507_2(glval) = FunctionAddress[~String] : -# 2507| v2507_3(void) = Call[~String] : func:r2507_2, this:r2507_1 -# 2507| mu2507_4(unknown) = ^CallSideEffect : ~m? -# 2507| v2507_5(void) = ^IndirectReadSideEffect[-1] : &:r2507_1, ~m? -# 2507| mu2507_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2507_1 -# 2507| r2507_7(bool) = Constant[0] : -# 2507| v2507_8(void) = ConditionalBranch : r2507_7 +# 35| Block 829 +# 35| r35_11607(glval) = VariableAddress[x829] : +# 35| mu35_11608(String) = Uninitialized[x829] : &:r35_11607 +# 35| r35_11609(glval) = FunctionAddress[String] : +# 35| v35_11610(void) = Call[String] : func:r35_11609, this:r35_11607 +# 35| mu35_11611(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11612(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11607 +# 35| r35_11613(glval) = VariableAddress[x829] : +# 35| r35_11614(glval) = FunctionAddress[~String] : +# 35| v35_11615(void) = Call[~String] : func:r35_11614, this:r35_11613 +# 35| mu35_11616(unknown) = ^CallSideEffect : ~m? +# 35| v35_11617(void) = ^IndirectReadSideEffect[-1] : &:r35_11613, ~m? +# 35| mu35_11618(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11613 +# 35| r35_11619(bool) = Constant[0] : +# 35| v35_11620(void) = ConditionalBranch : r35_11619 #-----| False -> Block 830 #-----| True -> Block 1026 -# 2509| Block 830 -# 2509| r2509_1(glval) = VariableAddress[x830] : -# 2509| mu2509_2(String) = Uninitialized[x830] : &:r2509_1 -# 2509| r2509_3(glval) = FunctionAddress[String] : -# 2509| v2509_4(void) = Call[String] : func:r2509_3, this:r2509_1 -# 2509| mu2509_5(unknown) = ^CallSideEffect : ~m? -# 2509| mu2509_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2509_1 -# 2510| r2510_1(glval) = VariableAddress[x830] : -# 2510| r2510_2(glval) = FunctionAddress[~String] : -# 2510| v2510_3(void) = Call[~String] : func:r2510_2, this:r2510_1 -# 2510| mu2510_4(unknown) = ^CallSideEffect : ~m? -# 2510| v2510_5(void) = ^IndirectReadSideEffect[-1] : &:r2510_1, ~m? -# 2510| mu2510_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2510_1 -# 2510| r2510_7(bool) = Constant[0] : -# 2510| v2510_8(void) = ConditionalBranch : r2510_7 +# 35| Block 830 +# 35| r35_11621(glval) = VariableAddress[x830] : +# 35| mu35_11622(String) = Uninitialized[x830] : &:r35_11621 +# 35| r35_11623(glval) = FunctionAddress[String] : +# 35| v35_11624(void) = Call[String] : func:r35_11623, this:r35_11621 +# 35| mu35_11625(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11626(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11621 +# 35| r35_11627(glval) = VariableAddress[x830] : +# 35| r35_11628(glval) = FunctionAddress[~String] : +# 35| v35_11629(void) = Call[~String] : func:r35_11628, this:r35_11627 +# 35| mu35_11630(unknown) = ^CallSideEffect : ~m? +# 35| v35_11631(void) = ^IndirectReadSideEffect[-1] : &:r35_11627, ~m? +# 35| mu35_11632(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11627 +# 35| r35_11633(bool) = Constant[0] : +# 35| v35_11634(void) = ConditionalBranch : r35_11633 #-----| False -> Block 831 #-----| True -> Block 1026 -# 2512| Block 831 -# 2512| r2512_1(glval) = VariableAddress[x831] : -# 2512| mu2512_2(String) = Uninitialized[x831] : &:r2512_1 -# 2512| r2512_3(glval) = FunctionAddress[String] : -# 2512| v2512_4(void) = Call[String] : func:r2512_3, this:r2512_1 -# 2512| mu2512_5(unknown) = ^CallSideEffect : ~m? -# 2512| mu2512_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2512_1 -# 2513| r2513_1(glval) = VariableAddress[x831] : -# 2513| r2513_2(glval) = FunctionAddress[~String] : -# 2513| v2513_3(void) = Call[~String] : func:r2513_2, this:r2513_1 -# 2513| mu2513_4(unknown) = ^CallSideEffect : ~m? -# 2513| v2513_5(void) = ^IndirectReadSideEffect[-1] : &:r2513_1, ~m? -# 2513| mu2513_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2513_1 -# 2513| r2513_7(bool) = Constant[0] : -# 2513| v2513_8(void) = ConditionalBranch : r2513_7 +# 35| Block 831 +# 35| r35_11635(glval) = VariableAddress[x831] : +# 35| mu35_11636(String) = Uninitialized[x831] : &:r35_11635 +# 35| r35_11637(glval) = FunctionAddress[String] : +# 35| v35_11638(void) = Call[String] : func:r35_11637, this:r35_11635 +# 35| mu35_11639(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11640(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11635 +# 35| r35_11641(glval) = VariableAddress[x831] : +# 35| r35_11642(glval) = FunctionAddress[~String] : +# 35| v35_11643(void) = Call[~String] : func:r35_11642, this:r35_11641 +# 35| mu35_11644(unknown) = ^CallSideEffect : ~m? +# 35| v35_11645(void) = ^IndirectReadSideEffect[-1] : &:r35_11641, ~m? +# 35| mu35_11646(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11641 +# 35| r35_11647(bool) = Constant[0] : +# 35| v35_11648(void) = ConditionalBranch : r35_11647 #-----| False -> Block 832 #-----| True -> Block 1026 -# 2515| Block 832 -# 2515| r2515_1(glval) = VariableAddress[x832] : -# 2515| mu2515_2(String) = Uninitialized[x832] : &:r2515_1 -# 2515| r2515_3(glval) = FunctionAddress[String] : -# 2515| v2515_4(void) = Call[String] : func:r2515_3, this:r2515_1 -# 2515| mu2515_5(unknown) = ^CallSideEffect : ~m? -# 2515| mu2515_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2515_1 -# 2516| r2516_1(glval) = VariableAddress[x832] : -# 2516| r2516_2(glval) = FunctionAddress[~String] : -# 2516| v2516_3(void) = Call[~String] : func:r2516_2, this:r2516_1 -# 2516| mu2516_4(unknown) = ^CallSideEffect : ~m? -# 2516| v2516_5(void) = ^IndirectReadSideEffect[-1] : &:r2516_1, ~m? -# 2516| mu2516_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2516_1 -# 2516| r2516_7(bool) = Constant[0] : -# 2516| v2516_8(void) = ConditionalBranch : r2516_7 +# 35| Block 832 +# 35| r35_11649(glval) = VariableAddress[x832] : +# 35| mu35_11650(String) = Uninitialized[x832] : &:r35_11649 +# 35| r35_11651(glval) = FunctionAddress[String] : +# 35| v35_11652(void) = Call[String] : func:r35_11651, this:r35_11649 +# 35| mu35_11653(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11654(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11649 +# 35| r35_11655(glval) = VariableAddress[x832] : +# 35| r35_11656(glval) = FunctionAddress[~String] : +# 35| v35_11657(void) = Call[~String] : func:r35_11656, this:r35_11655 +# 35| mu35_11658(unknown) = ^CallSideEffect : ~m? +# 35| v35_11659(void) = ^IndirectReadSideEffect[-1] : &:r35_11655, ~m? +# 35| mu35_11660(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11655 +# 35| r35_11661(bool) = Constant[0] : +# 35| v35_11662(void) = ConditionalBranch : r35_11661 #-----| False -> Block 833 #-----| True -> Block 1026 -# 2518| Block 833 -# 2518| r2518_1(glval) = VariableAddress[x833] : -# 2518| mu2518_2(String) = Uninitialized[x833] : &:r2518_1 -# 2518| r2518_3(glval) = FunctionAddress[String] : -# 2518| v2518_4(void) = Call[String] : func:r2518_3, this:r2518_1 -# 2518| mu2518_5(unknown) = ^CallSideEffect : ~m? -# 2518| mu2518_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2518_1 -# 2519| r2519_1(glval) = VariableAddress[x833] : -# 2519| r2519_2(glval) = FunctionAddress[~String] : -# 2519| v2519_3(void) = Call[~String] : func:r2519_2, this:r2519_1 -# 2519| mu2519_4(unknown) = ^CallSideEffect : ~m? -# 2519| v2519_5(void) = ^IndirectReadSideEffect[-1] : &:r2519_1, ~m? -# 2519| mu2519_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2519_1 -# 2519| r2519_7(bool) = Constant[0] : -# 2519| v2519_8(void) = ConditionalBranch : r2519_7 +# 35| Block 833 +# 35| r35_11663(glval) = VariableAddress[x833] : +# 35| mu35_11664(String) = Uninitialized[x833] : &:r35_11663 +# 35| r35_11665(glval) = FunctionAddress[String] : +# 35| v35_11666(void) = Call[String] : func:r35_11665, this:r35_11663 +# 35| mu35_11667(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11668(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11663 +# 35| r35_11669(glval) = VariableAddress[x833] : +# 35| r35_11670(glval) = FunctionAddress[~String] : +# 35| v35_11671(void) = Call[~String] : func:r35_11670, this:r35_11669 +# 35| mu35_11672(unknown) = ^CallSideEffect : ~m? +# 35| v35_11673(void) = ^IndirectReadSideEffect[-1] : &:r35_11669, ~m? +# 35| mu35_11674(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11669 +# 35| r35_11675(bool) = Constant[0] : +# 35| v35_11676(void) = ConditionalBranch : r35_11675 #-----| False -> Block 834 #-----| True -> Block 1026 -# 2521| Block 834 -# 2521| r2521_1(glval) = VariableAddress[x834] : -# 2521| mu2521_2(String) = Uninitialized[x834] : &:r2521_1 -# 2521| r2521_3(glval) = FunctionAddress[String] : -# 2521| v2521_4(void) = Call[String] : func:r2521_3, this:r2521_1 -# 2521| mu2521_5(unknown) = ^CallSideEffect : ~m? -# 2521| mu2521_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2521_1 -# 2522| r2522_1(glval) = VariableAddress[x834] : -# 2522| r2522_2(glval) = FunctionAddress[~String] : -# 2522| v2522_3(void) = Call[~String] : func:r2522_2, this:r2522_1 -# 2522| mu2522_4(unknown) = ^CallSideEffect : ~m? -# 2522| v2522_5(void) = ^IndirectReadSideEffect[-1] : &:r2522_1, ~m? -# 2522| mu2522_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2522_1 -# 2522| r2522_7(bool) = Constant[0] : -# 2522| v2522_8(void) = ConditionalBranch : r2522_7 +# 35| Block 834 +# 35| r35_11677(glval) = VariableAddress[x834] : +# 35| mu35_11678(String) = Uninitialized[x834] : &:r35_11677 +# 35| r35_11679(glval) = FunctionAddress[String] : +# 35| v35_11680(void) = Call[String] : func:r35_11679, this:r35_11677 +# 35| mu35_11681(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11682(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11677 +# 35| r35_11683(glval) = VariableAddress[x834] : +# 35| r35_11684(glval) = FunctionAddress[~String] : +# 35| v35_11685(void) = Call[~String] : func:r35_11684, this:r35_11683 +# 35| mu35_11686(unknown) = ^CallSideEffect : ~m? +# 35| v35_11687(void) = ^IndirectReadSideEffect[-1] : &:r35_11683, ~m? +# 35| mu35_11688(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11683 +# 35| r35_11689(bool) = Constant[0] : +# 35| v35_11690(void) = ConditionalBranch : r35_11689 #-----| False -> Block 835 #-----| True -> Block 1026 -# 2524| Block 835 -# 2524| r2524_1(glval) = VariableAddress[x835] : -# 2524| mu2524_2(String) = Uninitialized[x835] : &:r2524_1 -# 2524| r2524_3(glval) = FunctionAddress[String] : -# 2524| v2524_4(void) = Call[String] : func:r2524_3, this:r2524_1 -# 2524| mu2524_5(unknown) = ^CallSideEffect : ~m? -# 2524| mu2524_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2524_1 -# 2525| r2525_1(glval) = VariableAddress[x835] : -# 2525| r2525_2(glval) = FunctionAddress[~String] : -# 2525| v2525_3(void) = Call[~String] : func:r2525_2, this:r2525_1 -# 2525| mu2525_4(unknown) = ^CallSideEffect : ~m? -# 2525| v2525_5(void) = ^IndirectReadSideEffect[-1] : &:r2525_1, ~m? -# 2525| mu2525_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2525_1 -# 2525| r2525_7(bool) = Constant[0] : -# 2525| v2525_8(void) = ConditionalBranch : r2525_7 +# 35| Block 835 +# 35| r35_11691(glval) = VariableAddress[x835] : +# 35| mu35_11692(String) = Uninitialized[x835] : &:r35_11691 +# 35| r35_11693(glval) = FunctionAddress[String] : +# 35| v35_11694(void) = Call[String] : func:r35_11693, this:r35_11691 +# 35| mu35_11695(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11696(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11691 +# 35| r35_11697(glval) = VariableAddress[x835] : +# 35| r35_11698(glval) = FunctionAddress[~String] : +# 35| v35_11699(void) = Call[~String] : func:r35_11698, this:r35_11697 +# 35| mu35_11700(unknown) = ^CallSideEffect : ~m? +# 35| v35_11701(void) = ^IndirectReadSideEffect[-1] : &:r35_11697, ~m? +# 35| mu35_11702(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11697 +# 35| r35_11703(bool) = Constant[0] : +# 35| v35_11704(void) = ConditionalBranch : r35_11703 #-----| False -> Block 836 #-----| True -> Block 1026 -# 2527| Block 836 -# 2527| r2527_1(glval) = VariableAddress[x836] : -# 2527| mu2527_2(String) = Uninitialized[x836] : &:r2527_1 -# 2527| r2527_3(glval) = FunctionAddress[String] : -# 2527| v2527_4(void) = Call[String] : func:r2527_3, this:r2527_1 -# 2527| mu2527_5(unknown) = ^CallSideEffect : ~m? -# 2527| mu2527_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2527_1 -# 2528| r2528_1(glval) = VariableAddress[x836] : -# 2528| r2528_2(glval) = FunctionAddress[~String] : -# 2528| v2528_3(void) = Call[~String] : func:r2528_2, this:r2528_1 -# 2528| mu2528_4(unknown) = ^CallSideEffect : ~m? -# 2528| v2528_5(void) = ^IndirectReadSideEffect[-1] : &:r2528_1, ~m? -# 2528| mu2528_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2528_1 -# 2528| r2528_7(bool) = Constant[0] : -# 2528| v2528_8(void) = ConditionalBranch : r2528_7 +# 35| Block 836 +# 35| r35_11705(glval) = VariableAddress[x836] : +# 35| mu35_11706(String) = Uninitialized[x836] : &:r35_11705 +# 35| r35_11707(glval) = FunctionAddress[String] : +# 35| v35_11708(void) = Call[String] : func:r35_11707, this:r35_11705 +# 35| mu35_11709(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11710(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11705 +# 35| r35_11711(glval) = VariableAddress[x836] : +# 35| r35_11712(glval) = FunctionAddress[~String] : +# 35| v35_11713(void) = Call[~String] : func:r35_11712, this:r35_11711 +# 35| mu35_11714(unknown) = ^CallSideEffect : ~m? +# 35| v35_11715(void) = ^IndirectReadSideEffect[-1] : &:r35_11711, ~m? +# 35| mu35_11716(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11711 +# 35| r35_11717(bool) = Constant[0] : +# 35| v35_11718(void) = ConditionalBranch : r35_11717 #-----| False -> Block 837 #-----| True -> Block 1026 -# 2530| Block 837 -# 2530| r2530_1(glval) = VariableAddress[x837] : -# 2530| mu2530_2(String) = Uninitialized[x837] : &:r2530_1 -# 2530| r2530_3(glval) = FunctionAddress[String] : -# 2530| v2530_4(void) = Call[String] : func:r2530_3, this:r2530_1 -# 2530| mu2530_5(unknown) = ^CallSideEffect : ~m? -# 2530| mu2530_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2530_1 -# 2531| r2531_1(glval) = VariableAddress[x837] : -# 2531| r2531_2(glval) = FunctionAddress[~String] : -# 2531| v2531_3(void) = Call[~String] : func:r2531_2, this:r2531_1 -# 2531| mu2531_4(unknown) = ^CallSideEffect : ~m? -# 2531| v2531_5(void) = ^IndirectReadSideEffect[-1] : &:r2531_1, ~m? -# 2531| mu2531_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2531_1 -# 2531| r2531_7(bool) = Constant[0] : -# 2531| v2531_8(void) = ConditionalBranch : r2531_7 +# 35| Block 837 +# 35| r35_11719(glval) = VariableAddress[x837] : +# 35| mu35_11720(String) = Uninitialized[x837] : &:r35_11719 +# 35| r35_11721(glval) = FunctionAddress[String] : +# 35| v35_11722(void) = Call[String] : func:r35_11721, this:r35_11719 +# 35| mu35_11723(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11724(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11719 +# 35| r35_11725(glval) = VariableAddress[x837] : +# 35| r35_11726(glval) = FunctionAddress[~String] : +# 35| v35_11727(void) = Call[~String] : func:r35_11726, this:r35_11725 +# 35| mu35_11728(unknown) = ^CallSideEffect : ~m? +# 35| v35_11729(void) = ^IndirectReadSideEffect[-1] : &:r35_11725, ~m? +# 35| mu35_11730(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11725 +# 35| r35_11731(bool) = Constant[0] : +# 35| v35_11732(void) = ConditionalBranch : r35_11731 #-----| False -> Block 838 #-----| True -> Block 1026 -# 2533| Block 838 -# 2533| r2533_1(glval) = VariableAddress[x838] : -# 2533| mu2533_2(String) = Uninitialized[x838] : &:r2533_1 -# 2533| r2533_3(glval) = FunctionAddress[String] : -# 2533| v2533_4(void) = Call[String] : func:r2533_3, this:r2533_1 -# 2533| mu2533_5(unknown) = ^CallSideEffect : ~m? -# 2533| mu2533_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2533_1 -# 2534| r2534_1(glval) = VariableAddress[x838] : -# 2534| r2534_2(glval) = FunctionAddress[~String] : -# 2534| v2534_3(void) = Call[~String] : func:r2534_2, this:r2534_1 -# 2534| mu2534_4(unknown) = ^CallSideEffect : ~m? -# 2534| v2534_5(void) = ^IndirectReadSideEffect[-1] : &:r2534_1, ~m? -# 2534| mu2534_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2534_1 -# 2534| r2534_7(bool) = Constant[0] : -# 2534| v2534_8(void) = ConditionalBranch : r2534_7 +# 35| Block 838 +# 35| r35_11733(glval) = VariableAddress[x838] : +# 35| mu35_11734(String) = Uninitialized[x838] : &:r35_11733 +# 35| r35_11735(glval) = FunctionAddress[String] : +# 35| v35_11736(void) = Call[String] : func:r35_11735, this:r35_11733 +# 35| mu35_11737(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11738(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11733 +# 35| r35_11739(glval) = VariableAddress[x838] : +# 35| r35_11740(glval) = FunctionAddress[~String] : +# 35| v35_11741(void) = Call[~String] : func:r35_11740, this:r35_11739 +# 35| mu35_11742(unknown) = ^CallSideEffect : ~m? +# 35| v35_11743(void) = ^IndirectReadSideEffect[-1] : &:r35_11739, ~m? +# 35| mu35_11744(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11739 +# 35| r35_11745(bool) = Constant[0] : +# 35| v35_11746(void) = ConditionalBranch : r35_11745 #-----| False -> Block 839 #-----| True -> Block 1026 -# 2536| Block 839 -# 2536| r2536_1(glval) = VariableAddress[x839] : -# 2536| mu2536_2(String) = Uninitialized[x839] : &:r2536_1 -# 2536| r2536_3(glval) = FunctionAddress[String] : -# 2536| v2536_4(void) = Call[String] : func:r2536_3, this:r2536_1 -# 2536| mu2536_5(unknown) = ^CallSideEffect : ~m? -# 2536| mu2536_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2536_1 -# 2537| r2537_1(glval) = VariableAddress[x839] : -# 2537| r2537_2(glval) = FunctionAddress[~String] : -# 2537| v2537_3(void) = Call[~String] : func:r2537_2, this:r2537_1 -# 2537| mu2537_4(unknown) = ^CallSideEffect : ~m? -# 2537| v2537_5(void) = ^IndirectReadSideEffect[-1] : &:r2537_1, ~m? -# 2537| mu2537_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2537_1 -# 2537| r2537_7(bool) = Constant[0] : -# 2537| v2537_8(void) = ConditionalBranch : r2537_7 +# 35| Block 839 +# 35| r35_11747(glval) = VariableAddress[x839] : +# 35| mu35_11748(String) = Uninitialized[x839] : &:r35_11747 +# 35| r35_11749(glval) = FunctionAddress[String] : +# 35| v35_11750(void) = Call[String] : func:r35_11749, this:r35_11747 +# 35| mu35_11751(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11752(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11747 +# 35| r35_11753(glval) = VariableAddress[x839] : +# 35| r35_11754(glval) = FunctionAddress[~String] : +# 35| v35_11755(void) = Call[~String] : func:r35_11754, this:r35_11753 +# 35| mu35_11756(unknown) = ^CallSideEffect : ~m? +# 35| v35_11757(void) = ^IndirectReadSideEffect[-1] : &:r35_11753, ~m? +# 35| mu35_11758(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11753 +# 35| r35_11759(bool) = Constant[0] : +# 35| v35_11760(void) = ConditionalBranch : r35_11759 #-----| False -> Block 840 #-----| True -> Block 1026 -# 2539| Block 840 -# 2539| r2539_1(glval) = VariableAddress[x840] : -# 2539| mu2539_2(String) = Uninitialized[x840] : &:r2539_1 -# 2539| r2539_3(glval) = FunctionAddress[String] : -# 2539| v2539_4(void) = Call[String] : func:r2539_3, this:r2539_1 -# 2539| mu2539_5(unknown) = ^CallSideEffect : ~m? -# 2539| mu2539_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2539_1 -# 2540| r2540_1(glval) = VariableAddress[x840] : -# 2540| r2540_2(glval) = FunctionAddress[~String] : -# 2540| v2540_3(void) = Call[~String] : func:r2540_2, this:r2540_1 -# 2540| mu2540_4(unknown) = ^CallSideEffect : ~m? -# 2540| v2540_5(void) = ^IndirectReadSideEffect[-1] : &:r2540_1, ~m? -# 2540| mu2540_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2540_1 -# 2540| r2540_7(bool) = Constant[0] : -# 2540| v2540_8(void) = ConditionalBranch : r2540_7 +# 35| Block 840 +# 35| r35_11761(glval) = VariableAddress[x840] : +# 35| mu35_11762(String) = Uninitialized[x840] : &:r35_11761 +# 35| r35_11763(glval) = FunctionAddress[String] : +# 35| v35_11764(void) = Call[String] : func:r35_11763, this:r35_11761 +# 35| mu35_11765(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11766(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11761 +# 35| r35_11767(glval) = VariableAddress[x840] : +# 35| r35_11768(glval) = FunctionAddress[~String] : +# 35| v35_11769(void) = Call[~String] : func:r35_11768, this:r35_11767 +# 35| mu35_11770(unknown) = ^CallSideEffect : ~m? +# 35| v35_11771(void) = ^IndirectReadSideEffect[-1] : &:r35_11767, ~m? +# 35| mu35_11772(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11767 +# 35| r35_11773(bool) = Constant[0] : +# 35| v35_11774(void) = ConditionalBranch : r35_11773 #-----| False -> Block 841 #-----| True -> Block 1026 -# 2542| Block 841 -# 2542| r2542_1(glval) = VariableAddress[x841] : -# 2542| mu2542_2(String) = Uninitialized[x841] : &:r2542_1 -# 2542| r2542_3(glval) = FunctionAddress[String] : -# 2542| v2542_4(void) = Call[String] : func:r2542_3, this:r2542_1 -# 2542| mu2542_5(unknown) = ^CallSideEffect : ~m? -# 2542| mu2542_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2542_1 -# 2543| r2543_1(glval) = VariableAddress[x841] : -# 2543| r2543_2(glval) = FunctionAddress[~String] : -# 2543| v2543_3(void) = Call[~String] : func:r2543_2, this:r2543_1 -# 2543| mu2543_4(unknown) = ^CallSideEffect : ~m? -# 2543| v2543_5(void) = ^IndirectReadSideEffect[-1] : &:r2543_1, ~m? -# 2543| mu2543_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2543_1 -# 2543| r2543_7(bool) = Constant[0] : -# 2543| v2543_8(void) = ConditionalBranch : r2543_7 +# 35| Block 841 +# 35| r35_11775(glval) = VariableAddress[x841] : +# 35| mu35_11776(String) = Uninitialized[x841] : &:r35_11775 +# 35| r35_11777(glval) = FunctionAddress[String] : +# 35| v35_11778(void) = Call[String] : func:r35_11777, this:r35_11775 +# 35| mu35_11779(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11780(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11775 +# 35| r35_11781(glval) = VariableAddress[x841] : +# 35| r35_11782(glval) = FunctionAddress[~String] : +# 35| v35_11783(void) = Call[~String] : func:r35_11782, this:r35_11781 +# 35| mu35_11784(unknown) = ^CallSideEffect : ~m? +# 35| v35_11785(void) = ^IndirectReadSideEffect[-1] : &:r35_11781, ~m? +# 35| mu35_11786(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11781 +# 35| r35_11787(bool) = Constant[0] : +# 35| v35_11788(void) = ConditionalBranch : r35_11787 #-----| False -> Block 842 #-----| True -> Block 1026 -# 2545| Block 842 -# 2545| r2545_1(glval) = VariableAddress[x842] : -# 2545| mu2545_2(String) = Uninitialized[x842] : &:r2545_1 -# 2545| r2545_3(glval) = FunctionAddress[String] : -# 2545| v2545_4(void) = Call[String] : func:r2545_3, this:r2545_1 -# 2545| mu2545_5(unknown) = ^CallSideEffect : ~m? -# 2545| mu2545_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2545_1 -# 2546| r2546_1(glval) = VariableAddress[x842] : -# 2546| r2546_2(glval) = FunctionAddress[~String] : -# 2546| v2546_3(void) = Call[~String] : func:r2546_2, this:r2546_1 -# 2546| mu2546_4(unknown) = ^CallSideEffect : ~m? -# 2546| v2546_5(void) = ^IndirectReadSideEffect[-1] : &:r2546_1, ~m? -# 2546| mu2546_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2546_1 -# 2546| r2546_7(bool) = Constant[0] : -# 2546| v2546_8(void) = ConditionalBranch : r2546_7 +# 35| Block 842 +# 35| r35_11789(glval) = VariableAddress[x842] : +# 35| mu35_11790(String) = Uninitialized[x842] : &:r35_11789 +# 35| r35_11791(glval) = FunctionAddress[String] : +# 35| v35_11792(void) = Call[String] : func:r35_11791, this:r35_11789 +# 35| mu35_11793(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11794(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11789 +# 35| r35_11795(glval) = VariableAddress[x842] : +# 35| r35_11796(glval) = FunctionAddress[~String] : +# 35| v35_11797(void) = Call[~String] : func:r35_11796, this:r35_11795 +# 35| mu35_11798(unknown) = ^CallSideEffect : ~m? +# 35| v35_11799(void) = ^IndirectReadSideEffect[-1] : &:r35_11795, ~m? +# 35| mu35_11800(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11795 +# 35| r35_11801(bool) = Constant[0] : +# 35| v35_11802(void) = ConditionalBranch : r35_11801 #-----| False -> Block 843 #-----| True -> Block 1026 -# 2548| Block 843 -# 2548| r2548_1(glval) = VariableAddress[x843] : -# 2548| mu2548_2(String) = Uninitialized[x843] : &:r2548_1 -# 2548| r2548_3(glval) = FunctionAddress[String] : -# 2548| v2548_4(void) = Call[String] : func:r2548_3, this:r2548_1 -# 2548| mu2548_5(unknown) = ^CallSideEffect : ~m? -# 2548| mu2548_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2548_1 -# 2549| r2549_1(glval) = VariableAddress[x843] : -# 2549| r2549_2(glval) = FunctionAddress[~String] : -# 2549| v2549_3(void) = Call[~String] : func:r2549_2, this:r2549_1 -# 2549| mu2549_4(unknown) = ^CallSideEffect : ~m? -# 2549| v2549_5(void) = ^IndirectReadSideEffect[-1] : &:r2549_1, ~m? -# 2549| mu2549_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2549_1 -# 2549| r2549_7(bool) = Constant[0] : -# 2549| v2549_8(void) = ConditionalBranch : r2549_7 +# 35| Block 843 +# 35| r35_11803(glval) = VariableAddress[x843] : +# 35| mu35_11804(String) = Uninitialized[x843] : &:r35_11803 +# 35| r35_11805(glval) = FunctionAddress[String] : +# 35| v35_11806(void) = Call[String] : func:r35_11805, this:r35_11803 +# 35| mu35_11807(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11808(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11803 +# 35| r35_11809(glval) = VariableAddress[x843] : +# 35| r35_11810(glval) = FunctionAddress[~String] : +# 35| v35_11811(void) = Call[~String] : func:r35_11810, this:r35_11809 +# 35| mu35_11812(unknown) = ^CallSideEffect : ~m? +# 35| v35_11813(void) = ^IndirectReadSideEffect[-1] : &:r35_11809, ~m? +# 35| mu35_11814(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11809 +# 35| r35_11815(bool) = Constant[0] : +# 35| v35_11816(void) = ConditionalBranch : r35_11815 #-----| False -> Block 844 #-----| True -> Block 1026 -# 2551| Block 844 -# 2551| r2551_1(glval) = VariableAddress[x844] : -# 2551| mu2551_2(String) = Uninitialized[x844] : &:r2551_1 -# 2551| r2551_3(glval) = FunctionAddress[String] : -# 2551| v2551_4(void) = Call[String] : func:r2551_3, this:r2551_1 -# 2551| mu2551_5(unknown) = ^CallSideEffect : ~m? -# 2551| mu2551_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2551_1 -# 2552| r2552_1(glval) = VariableAddress[x844] : -# 2552| r2552_2(glval) = FunctionAddress[~String] : -# 2552| v2552_3(void) = Call[~String] : func:r2552_2, this:r2552_1 -# 2552| mu2552_4(unknown) = ^CallSideEffect : ~m? -# 2552| v2552_5(void) = ^IndirectReadSideEffect[-1] : &:r2552_1, ~m? -# 2552| mu2552_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2552_1 -# 2552| r2552_7(bool) = Constant[0] : -# 2552| v2552_8(void) = ConditionalBranch : r2552_7 +# 35| Block 844 +# 35| r35_11817(glval) = VariableAddress[x844] : +# 35| mu35_11818(String) = Uninitialized[x844] : &:r35_11817 +# 35| r35_11819(glval) = FunctionAddress[String] : +# 35| v35_11820(void) = Call[String] : func:r35_11819, this:r35_11817 +# 35| mu35_11821(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11822(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11817 +# 35| r35_11823(glval) = VariableAddress[x844] : +# 35| r35_11824(glval) = FunctionAddress[~String] : +# 35| v35_11825(void) = Call[~String] : func:r35_11824, this:r35_11823 +# 35| mu35_11826(unknown) = ^CallSideEffect : ~m? +# 35| v35_11827(void) = ^IndirectReadSideEffect[-1] : &:r35_11823, ~m? +# 35| mu35_11828(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11823 +# 35| r35_11829(bool) = Constant[0] : +# 35| v35_11830(void) = ConditionalBranch : r35_11829 #-----| False -> Block 845 #-----| True -> Block 1026 -# 2554| Block 845 -# 2554| r2554_1(glval) = VariableAddress[x845] : -# 2554| mu2554_2(String) = Uninitialized[x845] : &:r2554_1 -# 2554| r2554_3(glval) = FunctionAddress[String] : -# 2554| v2554_4(void) = Call[String] : func:r2554_3, this:r2554_1 -# 2554| mu2554_5(unknown) = ^CallSideEffect : ~m? -# 2554| mu2554_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2554_1 -# 2555| r2555_1(glval) = VariableAddress[x845] : -# 2555| r2555_2(glval) = FunctionAddress[~String] : -# 2555| v2555_3(void) = Call[~String] : func:r2555_2, this:r2555_1 -# 2555| mu2555_4(unknown) = ^CallSideEffect : ~m? -# 2555| v2555_5(void) = ^IndirectReadSideEffect[-1] : &:r2555_1, ~m? -# 2555| mu2555_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2555_1 -# 2555| r2555_7(bool) = Constant[0] : -# 2555| v2555_8(void) = ConditionalBranch : r2555_7 +# 35| Block 845 +# 35| r35_11831(glval) = VariableAddress[x845] : +# 35| mu35_11832(String) = Uninitialized[x845] : &:r35_11831 +# 35| r35_11833(glval) = FunctionAddress[String] : +# 35| v35_11834(void) = Call[String] : func:r35_11833, this:r35_11831 +# 35| mu35_11835(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11836(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11831 +# 35| r35_11837(glval) = VariableAddress[x845] : +# 35| r35_11838(glval) = FunctionAddress[~String] : +# 35| v35_11839(void) = Call[~String] : func:r35_11838, this:r35_11837 +# 35| mu35_11840(unknown) = ^CallSideEffect : ~m? +# 35| v35_11841(void) = ^IndirectReadSideEffect[-1] : &:r35_11837, ~m? +# 35| mu35_11842(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11837 +# 35| r35_11843(bool) = Constant[0] : +# 35| v35_11844(void) = ConditionalBranch : r35_11843 #-----| False -> Block 846 #-----| True -> Block 1026 -# 2557| Block 846 -# 2557| r2557_1(glval) = VariableAddress[x846] : -# 2557| mu2557_2(String) = Uninitialized[x846] : &:r2557_1 -# 2557| r2557_3(glval) = FunctionAddress[String] : -# 2557| v2557_4(void) = Call[String] : func:r2557_3, this:r2557_1 -# 2557| mu2557_5(unknown) = ^CallSideEffect : ~m? -# 2557| mu2557_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2557_1 -# 2558| r2558_1(glval) = VariableAddress[x846] : -# 2558| r2558_2(glval) = FunctionAddress[~String] : -# 2558| v2558_3(void) = Call[~String] : func:r2558_2, this:r2558_1 -# 2558| mu2558_4(unknown) = ^CallSideEffect : ~m? -# 2558| v2558_5(void) = ^IndirectReadSideEffect[-1] : &:r2558_1, ~m? -# 2558| mu2558_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2558_1 -# 2558| r2558_7(bool) = Constant[0] : -# 2558| v2558_8(void) = ConditionalBranch : r2558_7 +# 35| Block 846 +# 35| r35_11845(glval) = VariableAddress[x846] : +# 35| mu35_11846(String) = Uninitialized[x846] : &:r35_11845 +# 35| r35_11847(glval) = FunctionAddress[String] : +# 35| v35_11848(void) = Call[String] : func:r35_11847, this:r35_11845 +# 35| mu35_11849(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11850(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11845 +# 35| r35_11851(glval) = VariableAddress[x846] : +# 35| r35_11852(glval) = FunctionAddress[~String] : +# 35| v35_11853(void) = Call[~String] : func:r35_11852, this:r35_11851 +# 35| mu35_11854(unknown) = ^CallSideEffect : ~m? +# 35| v35_11855(void) = ^IndirectReadSideEffect[-1] : &:r35_11851, ~m? +# 35| mu35_11856(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11851 +# 35| r35_11857(bool) = Constant[0] : +# 35| v35_11858(void) = ConditionalBranch : r35_11857 #-----| False -> Block 847 #-----| True -> Block 1026 -# 2560| Block 847 -# 2560| r2560_1(glval) = VariableAddress[x847] : -# 2560| mu2560_2(String) = Uninitialized[x847] : &:r2560_1 -# 2560| r2560_3(glval) = FunctionAddress[String] : -# 2560| v2560_4(void) = Call[String] : func:r2560_3, this:r2560_1 -# 2560| mu2560_5(unknown) = ^CallSideEffect : ~m? -# 2560| mu2560_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2560_1 -# 2561| r2561_1(glval) = VariableAddress[x847] : -# 2561| r2561_2(glval) = FunctionAddress[~String] : -# 2561| v2561_3(void) = Call[~String] : func:r2561_2, this:r2561_1 -# 2561| mu2561_4(unknown) = ^CallSideEffect : ~m? -# 2561| v2561_5(void) = ^IndirectReadSideEffect[-1] : &:r2561_1, ~m? -# 2561| mu2561_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2561_1 -# 2561| r2561_7(bool) = Constant[0] : -# 2561| v2561_8(void) = ConditionalBranch : r2561_7 +# 35| Block 847 +# 35| r35_11859(glval) = VariableAddress[x847] : +# 35| mu35_11860(String) = Uninitialized[x847] : &:r35_11859 +# 35| r35_11861(glval) = FunctionAddress[String] : +# 35| v35_11862(void) = Call[String] : func:r35_11861, this:r35_11859 +# 35| mu35_11863(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11864(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11859 +# 35| r35_11865(glval) = VariableAddress[x847] : +# 35| r35_11866(glval) = FunctionAddress[~String] : +# 35| v35_11867(void) = Call[~String] : func:r35_11866, this:r35_11865 +# 35| mu35_11868(unknown) = ^CallSideEffect : ~m? +# 35| v35_11869(void) = ^IndirectReadSideEffect[-1] : &:r35_11865, ~m? +# 35| mu35_11870(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11865 +# 35| r35_11871(bool) = Constant[0] : +# 35| v35_11872(void) = ConditionalBranch : r35_11871 #-----| False -> Block 848 #-----| True -> Block 1026 -# 2563| Block 848 -# 2563| r2563_1(glval) = VariableAddress[x848] : -# 2563| mu2563_2(String) = Uninitialized[x848] : &:r2563_1 -# 2563| r2563_3(glval) = FunctionAddress[String] : -# 2563| v2563_4(void) = Call[String] : func:r2563_3, this:r2563_1 -# 2563| mu2563_5(unknown) = ^CallSideEffect : ~m? -# 2563| mu2563_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2563_1 -# 2564| r2564_1(glval) = VariableAddress[x848] : -# 2564| r2564_2(glval) = FunctionAddress[~String] : -# 2564| v2564_3(void) = Call[~String] : func:r2564_2, this:r2564_1 -# 2564| mu2564_4(unknown) = ^CallSideEffect : ~m? -# 2564| v2564_5(void) = ^IndirectReadSideEffect[-1] : &:r2564_1, ~m? -# 2564| mu2564_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2564_1 -# 2564| r2564_7(bool) = Constant[0] : -# 2564| v2564_8(void) = ConditionalBranch : r2564_7 +# 35| Block 848 +# 35| r35_11873(glval) = VariableAddress[x848] : +# 35| mu35_11874(String) = Uninitialized[x848] : &:r35_11873 +# 35| r35_11875(glval) = FunctionAddress[String] : +# 35| v35_11876(void) = Call[String] : func:r35_11875, this:r35_11873 +# 35| mu35_11877(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11878(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11873 +# 35| r35_11879(glval) = VariableAddress[x848] : +# 35| r35_11880(glval) = FunctionAddress[~String] : +# 35| v35_11881(void) = Call[~String] : func:r35_11880, this:r35_11879 +# 35| mu35_11882(unknown) = ^CallSideEffect : ~m? +# 35| v35_11883(void) = ^IndirectReadSideEffect[-1] : &:r35_11879, ~m? +# 35| mu35_11884(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11879 +# 35| r35_11885(bool) = Constant[0] : +# 35| v35_11886(void) = ConditionalBranch : r35_11885 #-----| False -> Block 849 #-----| True -> Block 1026 -# 2566| Block 849 -# 2566| r2566_1(glval) = VariableAddress[x849] : -# 2566| mu2566_2(String) = Uninitialized[x849] : &:r2566_1 -# 2566| r2566_3(glval) = FunctionAddress[String] : -# 2566| v2566_4(void) = Call[String] : func:r2566_3, this:r2566_1 -# 2566| mu2566_5(unknown) = ^CallSideEffect : ~m? -# 2566| mu2566_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2566_1 -# 2567| r2567_1(glval) = VariableAddress[x849] : -# 2567| r2567_2(glval) = FunctionAddress[~String] : -# 2567| v2567_3(void) = Call[~String] : func:r2567_2, this:r2567_1 -# 2567| mu2567_4(unknown) = ^CallSideEffect : ~m? -# 2567| v2567_5(void) = ^IndirectReadSideEffect[-1] : &:r2567_1, ~m? -# 2567| mu2567_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2567_1 -# 2567| r2567_7(bool) = Constant[0] : -# 2567| v2567_8(void) = ConditionalBranch : r2567_7 +# 35| Block 849 +# 35| r35_11887(glval) = VariableAddress[x849] : +# 35| mu35_11888(String) = Uninitialized[x849] : &:r35_11887 +# 35| r35_11889(glval) = FunctionAddress[String] : +# 35| v35_11890(void) = Call[String] : func:r35_11889, this:r35_11887 +# 35| mu35_11891(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11892(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11887 +# 35| r35_11893(glval) = VariableAddress[x849] : +# 35| r35_11894(glval) = FunctionAddress[~String] : +# 35| v35_11895(void) = Call[~String] : func:r35_11894, this:r35_11893 +# 35| mu35_11896(unknown) = ^CallSideEffect : ~m? +# 35| v35_11897(void) = ^IndirectReadSideEffect[-1] : &:r35_11893, ~m? +# 35| mu35_11898(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11893 +# 35| r35_11899(bool) = Constant[0] : +# 35| v35_11900(void) = ConditionalBranch : r35_11899 #-----| False -> Block 850 #-----| True -> Block 1026 -# 2569| Block 850 -# 2569| r2569_1(glval) = VariableAddress[x850] : -# 2569| mu2569_2(String) = Uninitialized[x850] : &:r2569_1 -# 2569| r2569_3(glval) = FunctionAddress[String] : -# 2569| v2569_4(void) = Call[String] : func:r2569_3, this:r2569_1 -# 2569| mu2569_5(unknown) = ^CallSideEffect : ~m? -# 2569| mu2569_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2569_1 -# 2570| r2570_1(glval) = VariableAddress[x850] : -# 2570| r2570_2(glval) = FunctionAddress[~String] : -# 2570| v2570_3(void) = Call[~String] : func:r2570_2, this:r2570_1 -# 2570| mu2570_4(unknown) = ^CallSideEffect : ~m? -# 2570| v2570_5(void) = ^IndirectReadSideEffect[-1] : &:r2570_1, ~m? -# 2570| mu2570_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2570_1 -# 2570| r2570_7(bool) = Constant[0] : -# 2570| v2570_8(void) = ConditionalBranch : r2570_7 +# 35| Block 850 +# 35| r35_11901(glval) = VariableAddress[x850] : +# 35| mu35_11902(String) = Uninitialized[x850] : &:r35_11901 +# 35| r35_11903(glval) = FunctionAddress[String] : +# 35| v35_11904(void) = Call[String] : func:r35_11903, this:r35_11901 +# 35| mu35_11905(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11906(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11901 +# 35| r35_11907(glval) = VariableAddress[x850] : +# 35| r35_11908(glval) = FunctionAddress[~String] : +# 35| v35_11909(void) = Call[~String] : func:r35_11908, this:r35_11907 +# 35| mu35_11910(unknown) = ^CallSideEffect : ~m? +# 35| v35_11911(void) = ^IndirectReadSideEffect[-1] : &:r35_11907, ~m? +# 35| mu35_11912(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11907 +# 35| r35_11913(bool) = Constant[0] : +# 35| v35_11914(void) = ConditionalBranch : r35_11913 #-----| False -> Block 851 #-----| True -> Block 1026 -# 2572| Block 851 -# 2572| r2572_1(glval) = VariableAddress[x851] : -# 2572| mu2572_2(String) = Uninitialized[x851] : &:r2572_1 -# 2572| r2572_3(glval) = FunctionAddress[String] : -# 2572| v2572_4(void) = Call[String] : func:r2572_3, this:r2572_1 -# 2572| mu2572_5(unknown) = ^CallSideEffect : ~m? -# 2572| mu2572_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2572_1 -# 2573| r2573_1(glval) = VariableAddress[x851] : -# 2573| r2573_2(glval) = FunctionAddress[~String] : -# 2573| v2573_3(void) = Call[~String] : func:r2573_2, this:r2573_1 -# 2573| mu2573_4(unknown) = ^CallSideEffect : ~m? -# 2573| v2573_5(void) = ^IndirectReadSideEffect[-1] : &:r2573_1, ~m? -# 2573| mu2573_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2573_1 -# 2573| r2573_7(bool) = Constant[0] : -# 2573| v2573_8(void) = ConditionalBranch : r2573_7 +# 35| Block 851 +# 35| r35_11915(glval) = VariableAddress[x851] : +# 35| mu35_11916(String) = Uninitialized[x851] : &:r35_11915 +# 35| r35_11917(glval) = FunctionAddress[String] : +# 35| v35_11918(void) = Call[String] : func:r35_11917, this:r35_11915 +# 35| mu35_11919(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11920(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11915 +# 35| r35_11921(glval) = VariableAddress[x851] : +# 35| r35_11922(glval) = FunctionAddress[~String] : +# 35| v35_11923(void) = Call[~String] : func:r35_11922, this:r35_11921 +# 35| mu35_11924(unknown) = ^CallSideEffect : ~m? +# 35| v35_11925(void) = ^IndirectReadSideEffect[-1] : &:r35_11921, ~m? +# 35| mu35_11926(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11921 +# 35| r35_11927(bool) = Constant[0] : +# 35| v35_11928(void) = ConditionalBranch : r35_11927 #-----| False -> Block 852 #-----| True -> Block 1026 -# 2575| Block 852 -# 2575| r2575_1(glval) = VariableAddress[x852] : -# 2575| mu2575_2(String) = Uninitialized[x852] : &:r2575_1 -# 2575| r2575_3(glval) = FunctionAddress[String] : -# 2575| v2575_4(void) = Call[String] : func:r2575_3, this:r2575_1 -# 2575| mu2575_5(unknown) = ^CallSideEffect : ~m? -# 2575| mu2575_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2575_1 -# 2576| r2576_1(glval) = VariableAddress[x852] : -# 2576| r2576_2(glval) = FunctionAddress[~String] : -# 2576| v2576_3(void) = Call[~String] : func:r2576_2, this:r2576_1 -# 2576| mu2576_4(unknown) = ^CallSideEffect : ~m? -# 2576| v2576_5(void) = ^IndirectReadSideEffect[-1] : &:r2576_1, ~m? -# 2576| mu2576_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2576_1 -# 2576| r2576_7(bool) = Constant[0] : -# 2576| v2576_8(void) = ConditionalBranch : r2576_7 +# 35| Block 852 +# 35| r35_11929(glval) = VariableAddress[x852] : +# 35| mu35_11930(String) = Uninitialized[x852] : &:r35_11929 +# 35| r35_11931(glval) = FunctionAddress[String] : +# 35| v35_11932(void) = Call[String] : func:r35_11931, this:r35_11929 +# 35| mu35_11933(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11934(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11929 +# 35| r35_11935(glval) = VariableAddress[x852] : +# 35| r35_11936(glval) = FunctionAddress[~String] : +# 35| v35_11937(void) = Call[~String] : func:r35_11936, this:r35_11935 +# 35| mu35_11938(unknown) = ^CallSideEffect : ~m? +# 35| v35_11939(void) = ^IndirectReadSideEffect[-1] : &:r35_11935, ~m? +# 35| mu35_11940(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11935 +# 35| r35_11941(bool) = Constant[0] : +# 35| v35_11942(void) = ConditionalBranch : r35_11941 #-----| False -> Block 853 #-----| True -> Block 1026 -# 2578| Block 853 -# 2578| r2578_1(glval) = VariableAddress[x853] : -# 2578| mu2578_2(String) = Uninitialized[x853] : &:r2578_1 -# 2578| r2578_3(glval) = FunctionAddress[String] : -# 2578| v2578_4(void) = Call[String] : func:r2578_3, this:r2578_1 -# 2578| mu2578_5(unknown) = ^CallSideEffect : ~m? -# 2578| mu2578_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2578_1 -# 2579| r2579_1(glval) = VariableAddress[x853] : -# 2579| r2579_2(glval) = FunctionAddress[~String] : -# 2579| v2579_3(void) = Call[~String] : func:r2579_2, this:r2579_1 -# 2579| mu2579_4(unknown) = ^CallSideEffect : ~m? -# 2579| v2579_5(void) = ^IndirectReadSideEffect[-1] : &:r2579_1, ~m? -# 2579| mu2579_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2579_1 -# 2579| r2579_7(bool) = Constant[0] : -# 2579| v2579_8(void) = ConditionalBranch : r2579_7 +# 35| Block 853 +# 35| r35_11943(glval) = VariableAddress[x853] : +# 35| mu35_11944(String) = Uninitialized[x853] : &:r35_11943 +# 35| r35_11945(glval) = FunctionAddress[String] : +# 35| v35_11946(void) = Call[String] : func:r35_11945, this:r35_11943 +# 35| mu35_11947(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11948(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11943 +# 35| r35_11949(glval) = VariableAddress[x853] : +# 35| r35_11950(glval) = FunctionAddress[~String] : +# 35| v35_11951(void) = Call[~String] : func:r35_11950, this:r35_11949 +# 35| mu35_11952(unknown) = ^CallSideEffect : ~m? +# 35| v35_11953(void) = ^IndirectReadSideEffect[-1] : &:r35_11949, ~m? +# 35| mu35_11954(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11949 +# 35| r35_11955(bool) = Constant[0] : +# 35| v35_11956(void) = ConditionalBranch : r35_11955 #-----| False -> Block 854 #-----| True -> Block 1026 -# 2581| Block 854 -# 2581| r2581_1(glval) = VariableAddress[x854] : -# 2581| mu2581_2(String) = Uninitialized[x854] : &:r2581_1 -# 2581| r2581_3(glval) = FunctionAddress[String] : -# 2581| v2581_4(void) = Call[String] : func:r2581_3, this:r2581_1 -# 2581| mu2581_5(unknown) = ^CallSideEffect : ~m? -# 2581| mu2581_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2581_1 -# 2582| r2582_1(glval) = VariableAddress[x854] : -# 2582| r2582_2(glval) = FunctionAddress[~String] : -# 2582| v2582_3(void) = Call[~String] : func:r2582_2, this:r2582_1 -# 2582| mu2582_4(unknown) = ^CallSideEffect : ~m? -# 2582| v2582_5(void) = ^IndirectReadSideEffect[-1] : &:r2582_1, ~m? -# 2582| mu2582_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2582_1 -# 2582| r2582_7(bool) = Constant[0] : -# 2582| v2582_8(void) = ConditionalBranch : r2582_7 +# 35| Block 854 +# 35| r35_11957(glval) = VariableAddress[x854] : +# 35| mu35_11958(String) = Uninitialized[x854] : &:r35_11957 +# 35| r35_11959(glval) = FunctionAddress[String] : +# 35| v35_11960(void) = Call[String] : func:r35_11959, this:r35_11957 +# 35| mu35_11961(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11962(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11957 +# 35| r35_11963(glval) = VariableAddress[x854] : +# 35| r35_11964(glval) = FunctionAddress[~String] : +# 35| v35_11965(void) = Call[~String] : func:r35_11964, this:r35_11963 +# 35| mu35_11966(unknown) = ^CallSideEffect : ~m? +# 35| v35_11967(void) = ^IndirectReadSideEffect[-1] : &:r35_11963, ~m? +# 35| mu35_11968(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11963 +# 35| r35_11969(bool) = Constant[0] : +# 35| v35_11970(void) = ConditionalBranch : r35_11969 #-----| False -> Block 855 #-----| True -> Block 1026 -# 2584| Block 855 -# 2584| r2584_1(glval) = VariableAddress[x855] : -# 2584| mu2584_2(String) = Uninitialized[x855] : &:r2584_1 -# 2584| r2584_3(glval) = FunctionAddress[String] : -# 2584| v2584_4(void) = Call[String] : func:r2584_3, this:r2584_1 -# 2584| mu2584_5(unknown) = ^CallSideEffect : ~m? -# 2584| mu2584_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2584_1 -# 2585| r2585_1(glval) = VariableAddress[x855] : -# 2585| r2585_2(glval) = FunctionAddress[~String] : -# 2585| v2585_3(void) = Call[~String] : func:r2585_2, this:r2585_1 -# 2585| mu2585_4(unknown) = ^CallSideEffect : ~m? -# 2585| v2585_5(void) = ^IndirectReadSideEffect[-1] : &:r2585_1, ~m? -# 2585| mu2585_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2585_1 -# 2585| r2585_7(bool) = Constant[0] : -# 2585| v2585_8(void) = ConditionalBranch : r2585_7 +# 35| Block 855 +# 35| r35_11971(glval) = VariableAddress[x855] : +# 35| mu35_11972(String) = Uninitialized[x855] : &:r35_11971 +# 35| r35_11973(glval) = FunctionAddress[String] : +# 35| v35_11974(void) = Call[String] : func:r35_11973, this:r35_11971 +# 35| mu35_11975(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11976(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11971 +# 35| r35_11977(glval) = VariableAddress[x855] : +# 35| r35_11978(glval) = FunctionAddress[~String] : +# 35| v35_11979(void) = Call[~String] : func:r35_11978, this:r35_11977 +# 35| mu35_11980(unknown) = ^CallSideEffect : ~m? +# 35| v35_11981(void) = ^IndirectReadSideEffect[-1] : &:r35_11977, ~m? +# 35| mu35_11982(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11977 +# 35| r35_11983(bool) = Constant[0] : +# 35| v35_11984(void) = ConditionalBranch : r35_11983 #-----| False -> Block 856 #-----| True -> Block 1026 -# 2587| Block 856 -# 2587| r2587_1(glval) = VariableAddress[x856] : -# 2587| mu2587_2(String) = Uninitialized[x856] : &:r2587_1 -# 2587| r2587_3(glval) = FunctionAddress[String] : -# 2587| v2587_4(void) = Call[String] : func:r2587_3, this:r2587_1 -# 2587| mu2587_5(unknown) = ^CallSideEffect : ~m? -# 2587| mu2587_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2587_1 -# 2588| r2588_1(glval) = VariableAddress[x856] : -# 2588| r2588_2(glval) = FunctionAddress[~String] : -# 2588| v2588_3(void) = Call[~String] : func:r2588_2, this:r2588_1 -# 2588| mu2588_4(unknown) = ^CallSideEffect : ~m? -# 2588| v2588_5(void) = ^IndirectReadSideEffect[-1] : &:r2588_1, ~m? -# 2588| mu2588_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2588_1 -# 2588| r2588_7(bool) = Constant[0] : -# 2588| v2588_8(void) = ConditionalBranch : r2588_7 +# 35| Block 856 +# 35| r35_11985(glval) = VariableAddress[x856] : +# 35| mu35_11986(String) = Uninitialized[x856] : &:r35_11985 +# 35| r35_11987(glval) = FunctionAddress[String] : +# 35| v35_11988(void) = Call[String] : func:r35_11987, this:r35_11985 +# 35| mu35_11989(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11990(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11985 +# 35| r35_11991(glval) = VariableAddress[x856] : +# 35| r35_11992(glval) = FunctionAddress[~String] : +# 35| v35_11993(void) = Call[~String] : func:r35_11992, this:r35_11991 +# 35| mu35_11994(unknown) = ^CallSideEffect : ~m? +# 35| v35_11995(void) = ^IndirectReadSideEffect[-1] : &:r35_11991, ~m? +# 35| mu35_11996(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11991 +# 35| r35_11997(bool) = Constant[0] : +# 35| v35_11998(void) = ConditionalBranch : r35_11997 #-----| False -> Block 857 #-----| True -> Block 1026 -# 2590| Block 857 -# 2590| r2590_1(glval) = VariableAddress[x857] : -# 2590| mu2590_2(String) = Uninitialized[x857] : &:r2590_1 -# 2590| r2590_3(glval) = FunctionAddress[String] : -# 2590| v2590_4(void) = Call[String] : func:r2590_3, this:r2590_1 -# 2590| mu2590_5(unknown) = ^CallSideEffect : ~m? -# 2590| mu2590_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2590_1 -# 2591| r2591_1(glval) = VariableAddress[x857] : -# 2591| r2591_2(glval) = FunctionAddress[~String] : -# 2591| v2591_3(void) = Call[~String] : func:r2591_2, this:r2591_1 -# 2591| mu2591_4(unknown) = ^CallSideEffect : ~m? -# 2591| v2591_5(void) = ^IndirectReadSideEffect[-1] : &:r2591_1, ~m? -# 2591| mu2591_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2591_1 -# 2591| r2591_7(bool) = Constant[0] : -# 2591| v2591_8(void) = ConditionalBranch : r2591_7 +# 35| Block 857 +# 35| r35_11999(glval) = VariableAddress[x857] : +# 35| mu35_12000(String) = Uninitialized[x857] : &:r35_11999 +# 35| r35_12001(glval) = FunctionAddress[String] : +# 35| v35_12002(void) = Call[String] : func:r35_12001, this:r35_11999 +# 35| mu35_12003(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12004(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11999 +# 35| r35_12005(glval) = VariableAddress[x857] : +# 35| r35_12006(glval) = FunctionAddress[~String] : +# 35| v35_12007(void) = Call[~String] : func:r35_12006, this:r35_12005 +# 35| mu35_12008(unknown) = ^CallSideEffect : ~m? +# 35| v35_12009(void) = ^IndirectReadSideEffect[-1] : &:r35_12005, ~m? +# 35| mu35_12010(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12005 +# 35| r35_12011(bool) = Constant[0] : +# 35| v35_12012(void) = ConditionalBranch : r35_12011 #-----| False -> Block 858 #-----| True -> Block 1026 -# 2593| Block 858 -# 2593| r2593_1(glval) = VariableAddress[x858] : -# 2593| mu2593_2(String) = Uninitialized[x858] : &:r2593_1 -# 2593| r2593_3(glval) = FunctionAddress[String] : -# 2593| v2593_4(void) = Call[String] : func:r2593_3, this:r2593_1 -# 2593| mu2593_5(unknown) = ^CallSideEffect : ~m? -# 2593| mu2593_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2593_1 -# 2594| r2594_1(glval) = VariableAddress[x858] : -# 2594| r2594_2(glval) = FunctionAddress[~String] : -# 2594| v2594_3(void) = Call[~String] : func:r2594_2, this:r2594_1 -# 2594| mu2594_4(unknown) = ^CallSideEffect : ~m? -# 2594| v2594_5(void) = ^IndirectReadSideEffect[-1] : &:r2594_1, ~m? -# 2594| mu2594_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2594_1 -# 2594| r2594_7(bool) = Constant[0] : -# 2594| v2594_8(void) = ConditionalBranch : r2594_7 +# 35| Block 858 +# 35| r35_12013(glval) = VariableAddress[x858] : +# 35| mu35_12014(String) = Uninitialized[x858] : &:r35_12013 +# 35| r35_12015(glval) = FunctionAddress[String] : +# 35| v35_12016(void) = Call[String] : func:r35_12015, this:r35_12013 +# 35| mu35_12017(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12018(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12013 +# 35| r35_12019(glval) = VariableAddress[x858] : +# 35| r35_12020(glval) = FunctionAddress[~String] : +# 35| v35_12021(void) = Call[~String] : func:r35_12020, this:r35_12019 +# 35| mu35_12022(unknown) = ^CallSideEffect : ~m? +# 35| v35_12023(void) = ^IndirectReadSideEffect[-1] : &:r35_12019, ~m? +# 35| mu35_12024(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12019 +# 35| r35_12025(bool) = Constant[0] : +# 35| v35_12026(void) = ConditionalBranch : r35_12025 #-----| False -> Block 859 #-----| True -> Block 1026 -# 2596| Block 859 -# 2596| r2596_1(glval) = VariableAddress[x859] : -# 2596| mu2596_2(String) = Uninitialized[x859] : &:r2596_1 -# 2596| r2596_3(glval) = FunctionAddress[String] : -# 2596| v2596_4(void) = Call[String] : func:r2596_3, this:r2596_1 -# 2596| mu2596_5(unknown) = ^CallSideEffect : ~m? -# 2596| mu2596_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2596_1 -# 2597| r2597_1(glval) = VariableAddress[x859] : -# 2597| r2597_2(glval) = FunctionAddress[~String] : -# 2597| v2597_3(void) = Call[~String] : func:r2597_2, this:r2597_1 -# 2597| mu2597_4(unknown) = ^CallSideEffect : ~m? -# 2597| v2597_5(void) = ^IndirectReadSideEffect[-1] : &:r2597_1, ~m? -# 2597| mu2597_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2597_1 -# 2597| r2597_7(bool) = Constant[0] : -# 2597| v2597_8(void) = ConditionalBranch : r2597_7 +# 35| Block 859 +# 35| r35_12027(glval) = VariableAddress[x859] : +# 35| mu35_12028(String) = Uninitialized[x859] : &:r35_12027 +# 35| r35_12029(glval) = FunctionAddress[String] : +# 35| v35_12030(void) = Call[String] : func:r35_12029, this:r35_12027 +# 35| mu35_12031(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12032(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12027 +# 35| r35_12033(glval) = VariableAddress[x859] : +# 35| r35_12034(glval) = FunctionAddress[~String] : +# 35| v35_12035(void) = Call[~String] : func:r35_12034, this:r35_12033 +# 35| mu35_12036(unknown) = ^CallSideEffect : ~m? +# 35| v35_12037(void) = ^IndirectReadSideEffect[-1] : &:r35_12033, ~m? +# 35| mu35_12038(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12033 +# 35| r35_12039(bool) = Constant[0] : +# 35| v35_12040(void) = ConditionalBranch : r35_12039 #-----| False -> Block 860 #-----| True -> Block 1026 -# 2599| Block 860 -# 2599| r2599_1(glval) = VariableAddress[x860] : -# 2599| mu2599_2(String) = Uninitialized[x860] : &:r2599_1 -# 2599| r2599_3(glval) = FunctionAddress[String] : -# 2599| v2599_4(void) = Call[String] : func:r2599_3, this:r2599_1 -# 2599| mu2599_5(unknown) = ^CallSideEffect : ~m? -# 2599| mu2599_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2599_1 -# 2600| r2600_1(glval) = VariableAddress[x860] : -# 2600| r2600_2(glval) = FunctionAddress[~String] : -# 2600| v2600_3(void) = Call[~String] : func:r2600_2, this:r2600_1 -# 2600| mu2600_4(unknown) = ^CallSideEffect : ~m? -# 2600| v2600_5(void) = ^IndirectReadSideEffect[-1] : &:r2600_1, ~m? -# 2600| mu2600_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2600_1 -# 2600| r2600_7(bool) = Constant[0] : -# 2600| v2600_8(void) = ConditionalBranch : r2600_7 +# 35| Block 860 +# 35| r35_12041(glval) = VariableAddress[x860] : +# 35| mu35_12042(String) = Uninitialized[x860] : &:r35_12041 +# 35| r35_12043(glval) = FunctionAddress[String] : +# 35| v35_12044(void) = Call[String] : func:r35_12043, this:r35_12041 +# 35| mu35_12045(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12046(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12041 +# 35| r35_12047(glval) = VariableAddress[x860] : +# 35| r35_12048(glval) = FunctionAddress[~String] : +# 35| v35_12049(void) = Call[~String] : func:r35_12048, this:r35_12047 +# 35| mu35_12050(unknown) = ^CallSideEffect : ~m? +# 35| v35_12051(void) = ^IndirectReadSideEffect[-1] : &:r35_12047, ~m? +# 35| mu35_12052(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12047 +# 35| r35_12053(bool) = Constant[0] : +# 35| v35_12054(void) = ConditionalBranch : r35_12053 #-----| False -> Block 861 #-----| True -> Block 1026 -# 2602| Block 861 -# 2602| r2602_1(glval) = VariableAddress[x861] : -# 2602| mu2602_2(String) = Uninitialized[x861] : &:r2602_1 -# 2602| r2602_3(glval) = FunctionAddress[String] : -# 2602| v2602_4(void) = Call[String] : func:r2602_3, this:r2602_1 -# 2602| mu2602_5(unknown) = ^CallSideEffect : ~m? -# 2602| mu2602_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2602_1 -# 2603| r2603_1(glval) = VariableAddress[x861] : -# 2603| r2603_2(glval) = FunctionAddress[~String] : -# 2603| v2603_3(void) = Call[~String] : func:r2603_2, this:r2603_1 -# 2603| mu2603_4(unknown) = ^CallSideEffect : ~m? -# 2603| v2603_5(void) = ^IndirectReadSideEffect[-1] : &:r2603_1, ~m? -# 2603| mu2603_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2603_1 -# 2603| r2603_7(bool) = Constant[0] : -# 2603| v2603_8(void) = ConditionalBranch : r2603_7 +# 35| Block 861 +# 35| r35_12055(glval) = VariableAddress[x861] : +# 35| mu35_12056(String) = Uninitialized[x861] : &:r35_12055 +# 35| r35_12057(glval) = FunctionAddress[String] : +# 35| v35_12058(void) = Call[String] : func:r35_12057, this:r35_12055 +# 35| mu35_12059(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12060(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12055 +# 35| r35_12061(glval) = VariableAddress[x861] : +# 35| r35_12062(glval) = FunctionAddress[~String] : +# 35| v35_12063(void) = Call[~String] : func:r35_12062, this:r35_12061 +# 35| mu35_12064(unknown) = ^CallSideEffect : ~m? +# 35| v35_12065(void) = ^IndirectReadSideEffect[-1] : &:r35_12061, ~m? +# 35| mu35_12066(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12061 +# 35| r35_12067(bool) = Constant[0] : +# 35| v35_12068(void) = ConditionalBranch : r35_12067 #-----| False -> Block 862 #-----| True -> Block 1026 -# 2605| Block 862 -# 2605| r2605_1(glval) = VariableAddress[x862] : -# 2605| mu2605_2(String) = Uninitialized[x862] : &:r2605_1 -# 2605| r2605_3(glval) = FunctionAddress[String] : -# 2605| v2605_4(void) = Call[String] : func:r2605_3, this:r2605_1 -# 2605| mu2605_5(unknown) = ^CallSideEffect : ~m? -# 2605| mu2605_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2605_1 -# 2606| r2606_1(glval) = VariableAddress[x862] : -# 2606| r2606_2(glval) = FunctionAddress[~String] : -# 2606| v2606_3(void) = Call[~String] : func:r2606_2, this:r2606_1 -# 2606| mu2606_4(unknown) = ^CallSideEffect : ~m? -# 2606| v2606_5(void) = ^IndirectReadSideEffect[-1] : &:r2606_1, ~m? -# 2606| mu2606_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2606_1 -# 2606| r2606_7(bool) = Constant[0] : -# 2606| v2606_8(void) = ConditionalBranch : r2606_7 +# 35| Block 862 +# 35| r35_12069(glval) = VariableAddress[x862] : +# 35| mu35_12070(String) = Uninitialized[x862] : &:r35_12069 +# 35| r35_12071(glval) = FunctionAddress[String] : +# 35| v35_12072(void) = Call[String] : func:r35_12071, this:r35_12069 +# 35| mu35_12073(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12074(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12069 +# 35| r35_12075(glval) = VariableAddress[x862] : +# 35| r35_12076(glval) = FunctionAddress[~String] : +# 35| v35_12077(void) = Call[~String] : func:r35_12076, this:r35_12075 +# 35| mu35_12078(unknown) = ^CallSideEffect : ~m? +# 35| v35_12079(void) = ^IndirectReadSideEffect[-1] : &:r35_12075, ~m? +# 35| mu35_12080(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12075 +# 35| r35_12081(bool) = Constant[0] : +# 35| v35_12082(void) = ConditionalBranch : r35_12081 #-----| False -> Block 863 #-----| True -> Block 1026 -# 2608| Block 863 -# 2608| r2608_1(glval) = VariableAddress[x863] : -# 2608| mu2608_2(String) = Uninitialized[x863] : &:r2608_1 -# 2608| r2608_3(glval) = FunctionAddress[String] : -# 2608| v2608_4(void) = Call[String] : func:r2608_3, this:r2608_1 -# 2608| mu2608_5(unknown) = ^CallSideEffect : ~m? -# 2608| mu2608_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2608_1 -# 2609| r2609_1(glval) = VariableAddress[x863] : -# 2609| r2609_2(glval) = FunctionAddress[~String] : -# 2609| v2609_3(void) = Call[~String] : func:r2609_2, this:r2609_1 -# 2609| mu2609_4(unknown) = ^CallSideEffect : ~m? -# 2609| v2609_5(void) = ^IndirectReadSideEffect[-1] : &:r2609_1, ~m? -# 2609| mu2609_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2609_1 -# 2609| r2609_7(bool) = Constant[0] : -# 2609| v2609_8(void) = ConditionalBranch : r2609_7 +# 35| Block 863 +# 35| r35_12083(glval) = VariableAddress[x863] : +# 35| mu35_12084(String) = Uninitialized[x863] : &:r35_12083 +# 35| r35_12085(glval) = FunctionAddress[String] : +# 35| v35_12086(void) = Call[String] : func:r35_12085, this:r35_12083 +# 35| mu35_12087(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12088(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12083 +# 35| r35_12089(glval) = VariableAddress[x863] : +# 35| r35_12090(glval) = FunctionAddress[~String] : +# 35| v35_12091(void) = Call[~String] : func:r35_12090, this:r35_12089 +# 35| mu35_12092(unknown) = ^CallSideEffect : ~m? +# 35| v35_12093(void) = ^IndirectReadSideEffect[-1] : &:r35_12089, ~m? +# 35| mu35_12094(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12089 +# 35| r35_12095(bool) = Constant[0] : +# 35| v35_12096(void) = ConditionalBranch : r35_12095 #-----| False -> Block 864 #-----| True -> Block 1026 -# 2611| Block 864 -# 2611| r2611_1(glval) = VariableAddress[x864] : -# 2611| mu2611_2(String) = Uninitialized[x864] : &:r2611_1 -# 2611| r2611_3(glval) = FunctionAddress[String] : -# 2611| v2611_4(void) = Call[String] : func:r2611_3, this:r2611_1 -# 2611| mu2611_5(unknown) = ^CallSideEffect : ~m? -# 2611| mu2611_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2611_1 -# 2612| r2612_1(glval) = VariableAddress[x864] : -# 2612| r2612_2(glval) = FunctionAddress[~String] : -# 2612| v2612_3(void) = Call[~String] : func:r2612_2, this:r2612_1 -# 2612| mu2612_4(unknown) = ^CallSideEffect : ~m? -# 2612| v2612_5(void) = ^IndirectReadSideEffect[-1] : &:r2612_1, ~m? -# 2612| mu2612_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2612_1 -# 2612| r2612_7(bool) = Constant[0] : -# 2612| v2612_8(void) = ConditionalBranch : r2612_7 +# 35| Block 864 +# 35| r35_12097(glval) = VariableAddress[x864] : +# 35| mu35_12098(String) = Uninitialized[x864] : &:r35_12097 +# 35| r35_12099(glval) = FunctionAddress[String] : +# 35| v35_12100(void) = Call[String] : func:r35_12099, this:r35_12097 +# 35| mu35_12101(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12102(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12097 +# 35| r35_12103(glval) = VariableAddress[x864] : +# 35| r35_12104(glval) = FunctionAddress[~String] : +# 35| v35_12105(void) = Call[~String] : func:r35_12104, this:r35_12103 +# 35| mu35_12106(unknown) = ^CallSideEffect : ~m? +# 35| v35_12107(void) = ^IndirectReadSideEffect[-1] : &:r35_12103, ~m? +# 35| mu35_12108(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12103 +# 35| r35_12109(bool) = Constant[0] : +# 35| v35_12110(void) = ConditionalBranch : r35_12109 #-----| False -> Block 865 #-----| True -> Block 1026 -# 2614| Block 865 -# 2614| r2614_1(glval) = VariableAddress[x865] : -# 2614| mu2614_2(String) = Uninitialized[x865] : &:r2614_1 -# 2614| r2614_3(glval) = FunctionAddress[String] : -# 2614| v2614_4(void) = Call[String] : func:r2614_3, this:r2614_1 -# 2614| mu2614_5(unknown) = ^CallSideEffect : ~m? -# 2614| mu2614_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2614_1 -# 2615| r2615_1(glval) = VariableAddress[x865] : -# 2615| r2615_2(glval) = FunctionAddress[~String] : -# 2615| v2615_3(void) = Call[~String] : func:r2615_2, this:r2615_1 -# 2615| mu2615_4(unknown) = ^CallSideEffect : ~m? -# 2615| v2615_5(void) = ^IndirectReadSideEffect[-1] : &:r2615_1, ~m? -# 2615| mu2615_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2615_1 -# 2615| r2615_7(bool) = Constant[0] : -# 2615| v2615_8(void) = ConditionalBranch : r2615_7 +# 35| Block 865 +# 35| r35_12111(glval) = VariableAddress[x865] : +# 35| mu35_12112(String) = Uninitialized[x865] : &:r35_12111 +# 35| r35_12113(glval) = FunctionAddress[String] : +# 35| v35_12114(void) = Call[String] : func:r35_12113, this:r35_12111 +# 35| mu35_12115(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12116(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12111 +# 35| r35_12117(glval) = VariableAddress[x865] : +# 35| r35_12118(glval) = FunctionAddress[~String] : +# 35| v35_12119(void) = Call[~String] : func:r35_12118, this:r35_12117 +# 35| mu35_12120(unknown) = ^CallSideEffect : ~m? +# 35| v35_12121(void) = ^IndirectReadSideEffect[-1] : &:r35_12117, ~m? +# 35| mu35_12122(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12117 +# 35| r35_12123(bool) = Constant[0] : +# 35| v35_12124(void) = ConditionalBranch : r35_12123 #-----| False -> Block 866 #-----| True -> Block 1026 -# 2617| Block 866 -# 2617| r2617_1(glval) = VariableAddress[x866] : -# 2617| mu2617_2(String) = Uninitialized[x866] : &:r2617_1 -# 2617| r2617_3(glval) = FunctionAddress[String] : -# 2617| v2617_4(void) = Call[String] : func:r2617_3, this:r2617_1 -# 2617| mu2617_5(unknown) = ^CallSideEffect : ~m? -# 2617| mu2617_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2617_1 -# 2618| r2618_1(glval) = VariableAddress[x866] : -# 2618| r2618_2(glval) = FunctionAddress[~String] : -# 2618| v2618_3(void) = Call[~String] : func:r2618_2, this:r2618_1 -# 2618| mu2618_4(unknown) = ^CallSideEffect : ~m? -# 2618| v2618_5(void) = ^IndirectReadSideEffect[-1] : &:r2618_1, ~m? -# 2618| mu2618_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2618_1 -# 2618| r2618_7(bool) = Constant[0] : -# 2618| v2618_8(void) = ConditionalBranch : r2618_7 +# 35| Block 866 +# 35| r35_12125(glval) = VariableAddress[x866] : +# 35| mu35_12126(String) = Uninitialized[x866] : &:r35_12125 +# 35| r35_12127(glval) = FunctionAddress[String] : +# 35| v35_12128(void) = Call[String] : func:r35_12127, this:r35_12125 +# 35| mu35_12129(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12130(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12125 +# 35| r35_12131(glval) = VariableAddress[x866] : +# 35| r35_12132(glval) = FunctionAddress[~String] : +# 35| v35_12133(void) = Call[~String] : func:r35_12132, this:r35_12131 +# 35| mu35_12134(unknown) = ^CallSideEffect : ~m? +# 35| v35_12135(void) = ^IndirectReadSideEffect[-1] : &:r35_12131, ~m? +# 35| mu35_12136(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12131 +# 35| r35_12137(bool) = Constant[0] : +# 35| v35_12138(void) = ConditionalBranch : r35_12137 #-----| False -> Block 867 #-----| True -> Block 1026 -# 2620| Block 867 -# 2620| r2620_1(glval) = VariableAddress[x867] : -# 2620| mu2620_2(String) = Uninitialized[x867] : &:r2620_1 -# 2620| r2620_3(glval) = FunctionAddress[String] : -# 2620| v2620_4(void) = Call[String] : func:r2620_3, this:r2620_1 -# 2620| mu2620_5(unknown) = ^CallSideEffect : ~m? -# 2620| mu2620_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2620_1 -# 2621| r2621_1(glval) = VariableAddress[x867] : -# 2621| r2621_2(glval) = FunctionAddress[~String] : -# 2621| v2621_3(void) = Call[~String] : func:r2621_2, this:r2621_1 -# 2621| mu2621_4(unknown) = ^CallSideEffect : ~m? -# 2621| v2621_5(void) = ^IndirectReadSideEffect[-1] : &:r2621_1, ~m? -# 2621| mu2621_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2621_1 -# 2621| r2621_7(bool) = Constant[0] : -# 2621| v2621_8(void) = ConditionalBranch : r2621_7 +# 35| Block 867 +# 35| r35_12139(glval) = VariableAddress[x867] : +# 35| mu35_12140(String) = Uninitialized[x867] : &:r35_12139 +# 35| r35_12141(glval) = FunctionAddress[String] : +# 35| v35_12142(void) = Call[String] : func:r35_12141, this:r35_12139 +# 35| mu35_12143(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12144(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12139 +# 35| r35_12145(glval) = VariableAddress[x867] : +# 35| r35_12146(glval) = FunctionAddress[~String] : +# 35| v35_12147(void) = Call[~String] : func:r35_12146, this:r35_12145 +# 35| mu35_12148(unknown) = ^CallSideEffect : ~m? +# 35| v35_12149(void) = ^IndirectReadSideEffect[-1] : &:r35_12145, ~m? +# 35| mu35_12150(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12145 +# 35| r35_12151(bool) = Constant[0] : +# 35| v35_12152(void) = ConditionalBranch : r35_12151 #-----| False -> Block 868 #-----| True -> Block 1026 -# 2623| Block 868 -# 2623| r2623_1(glval) = VariableAddress[x868] : -# 2623| mu2623_2(String) = Uninitialized[x868] : &:r2623_1 -# 2623| r2623_3(glval) = FunctionAddress[String] : -# 2623| v2623_4(void) = Call[String] : func:r2623_3, this:r2623_1 -# 2623| mu2623_5(unknown) = ^CallSideEffect : ~m? -# 2623| mu2623_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2623_1 -# 2624| r2624_1(glval) = VariableAddress[x868] : -# 2624| r2624_2(glval) = FunctionAddress[~String] : -# 2624| v2624_3(void) = Call[~String] : func:r2624_2, this:r2624_1 -# 2624| mu2624_4(unknown) = ^CallSideEffect : ~m? -# 2624| v2624_5(void) = ^IndirectReadSideEffect[-1] : &:r2624_1, ~m? -# 2624| mu2624_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2624_1 -# 2624| r2624_7(bool) = Constant[0] : -# 2624| v2624_8(void) = ConditionalBranch : r2624_7 +# 35| Block 868 +# 35| r35_12153(glval) = VariableAddress[x868] : +# 35| mu35_12154(String) = Uninitialized[x868] : &:r35_12153 +# 35| r35_12155(glval) = FunctionAddress[String] : +# 35| v35_12156(void) = Call[String] : func:r35_12155, this:r35_12153 +# 35| mu35_12157(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12158(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12153 +# 35| r35_12159(glval) = VariableAddress[x868] : +# 35| r35_12160(glval) = FunctionAddress[~String] : +# 35| v35_12161(void) = Call[~String] : func:r35_12160, this:r35_12159 +# 35| mu35_12162(unknown) = ^CallSideEffect : ~m? +# 35| v35_12163(void) = ^IndirectReadSideEffect[-1] : &:r35_12159, ~m? +# 35| mu35_12164(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12159 +# 35| r35_12165(bool) = Constant[0] : +# 35| v35_12166(void) = ConditionalBranch : r35_12165 #-----| False -> Block 869 #-----| True -> Block 1026 -# 2626| Block 869 -# 2626| r2626_1(glval) = VariableAddress[x869] : -# 2626| mu2626_2(String) = Uninitialized[x869] : &:r2626_1 -# 2626| r2626_3(glval) = FunctionAddress[String] : -# 2626| v2626_4(void) = Call[String] : func:r2626_3, this:r2626_1 -# 2626| mu2626_5(unknown) = ^CallSideEffect : ~m? -# 2626| mu2626_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2626_1 -# 2627| r2627_1(glval) = VariableAddress[x869] : -# 2627| r2627_2(glval) = FunctionAddress[~String] : -# 2627| v2627_3(void) = Call[~String] : func:r2627_2, this:r2627_1 -# 2627| mu2627_4(unknown) = ^CallSideEffect : ~m? -# 2627| v2627_5(void) = ^IndirectReadSideEffect[-1] : &:r2627_1, ~m? -# 2627| mu2627_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2627_1 -# 2627| r2627_7(bool) = Constant[0] : -# 2627| v2627_8(void) = ConditionalBranch : r2627_7 +# 35| Block 869 +# 35| r35_12167(glval) = VariableAddress[x869] : +# 35| mu35_12168(String) = Uninitialized[x869] : &:r35_12167 +# 35| r35_12169(glval) = FunctionAddress[String] : +# 35| v35_12170(void) = Call[String] : func:r35_12169, this:r35_12167 +# 35| mu35_12171(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12172(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12167 +# 35| r35_12173(glval) = VariableAddress[x869] : +# 35| r35_12174(glval) = FunctionAddress[~String] : +# 35| v35_12175(void) = Call[~String] : func:r35_12174, this:r35_12173 +# 35| mu35_12176(unknown) = ^CallSideEffect : ~m? +# 35| v35_12177(void) = ^IndirectReadSideEffect[-1] : &:r35_12173, ~m? +# 35| mu35_12178(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12173 +# 35| r35_12179(bool) = Constant[0] : +# 35| v35_12180(void) = ConditionalBranch : r35_12179 #-----| False -> Block 870 #-----| True -> Block 1026 -# 2629| Block 870 -# 2629| r2629_1(glval) = VariableAddress[x870] : -# 2629| mu2629_2(String) = Uninitialized[x870] : &:r2629_1 -# 2629| r2629_3(glval) = FunctionAddress[String] : -# 2629| v2629_4(void) = Call[String] : func:r2629_3, this:r2629_1 -# 2629| mu2629_5(unknown) = ^CallSideEffect : ~m? -# 2629| mu2629_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2629_1 -# 2630| r2630_1(glval) = VariableAddress[x870] : -# 2630| r2630_2(glval) = FunctionAddress[~String] : -# 2630| v2630_3(void) = Call[~String] : func:r2630_2, this:r2630_1 -# 2630| mu2630_4(unknown) = ^CallSideEffect : ~m? -# 2630| v2630_5(void) = ^IndirectReadSideEffect[-1] : &:r2630_1, ~m? -# 2630| mu2630_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2630_1 -# 2630| r2630_7(bool) = Constant[0] : -# 2630| v2630_8(void) = ConditionalBranch : r2630_7 +# 35| Block 870 +# 35| r35_12181(glval) = VariableAddress[x870] : +# 35| mu35_12182(String) = Uninitialized[x870] : &:r35_12181 +# 35| r35_12183(glval) = FunctionAddress[String] : +# 35| v35_12184(void) = Call[String] : func:r35_12183, this:r35_12181 +# 35| mu35_12185(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12186(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12181 +# 35| r35_12187(glval) = VariableAddress[x870] : +# 35| r35_12188(glval) = FunctionAddress[~String] : +# 35| v35_12189(void) = Call[~String] : func:r35_12188, this:r35_12187 +# 35| mu35_12190(unknown) = ^CallSideEffect : ~m? +# 35| v35_12191(void) = ^IndirectReadSideEffect[-1] : &:r35_12187, ~m? +# 35| mu35_12192(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12187 +# 35| r35_12193(bool) = Constant[0] : +# 35| v35_12194(void) = ConditionalBranch : r35_12193 #-----| False -> Block 871 #-----| True -> Block 1026 -# 2632| Block 871 -# 2632| r2632_1(glval) = VariableAddress[x871] : -# 2632| mu2632_2(String) = Uninitialized[x871] : &:r2632_1 -# 2632| r2632_3(glval) = FunctionAddress[String] : -# 2632| v2632_4(void) = Call[String] : func:r2632_3, this:r2632_1 -# 2632| mu2632_5(unknown) = ^CallSideEffect : ~m? -# 2632| mu2632_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2632_1 -# 2633| r2633_1(glval) = VariableAddress[x871] : -# 2633| r2633_2(glval) = FunctionAddress[~String] : -# 2633| v2633_3(void) = Call[~String] : func:r2633_2, this:r2633_1 -# 2633| mu2633_4(unknown) = ^CallSideEffect : ~m? -# 2633| v2633_5(void) = ^IndirectReadSideEffect[-1] : &:r2633_1, ~m? -# 2633| mu2633_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2633_1 -# 2633| r2633_7(bool) = Constant[0] : -# 2633| v2633_8(void) = ConditionalBranch : r2633_7 +# 35| Block 871 +# 35| r35_12195(glval) = VariableAddress[x871] : +# 35| mu35_12196(String) = Uninitialized[x871] : &:r35_12195 +# 35| r35_12197(glval) = FunctionAddress[String] : +# 35| v35_12198(void) = Call[String] : func:r35_12197, this:r35_12195 +# 35| mu35_12199(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12200(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12195 +# 35| r35_12201(glval) = VariableAddress[x871] : +# 35| r35_12202(glval) = FunctionAddress[~String] : +# 35| v35_12203(void) = Call[~String] : func:r35_12202, this:r35_12201 +# 35| mu35_12204(unknown) = ^CallSideEffect : ~m? +# 35| v35_12205(void) = ^IndirectReadSideEffect[-1] : &:r35_12201, ~m? +# 35| mu35_12206(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12201 +# 35| r35_12207(bool) = Constant[0] : +# 35| v35_12208(void) = ConditionalBranch : r35_12207 #-----| False -> Block 872 #-----| True -> Block 1026 -# 2635| Block 872 -# 2635| r2635_1(glval) = VariableAddress[x872] : -# 2635| mu2635_2(String) = Uninitialized[x872] : &:r2635_1 -# 2635| r2635_3(glval) = FunctionAddress[String] : -# 2635| v2635_4(void) = Call[String] : func:r2635_3, this:r2635_1 -# 2635| mu2635_5(unknown) = ^CallSideEffect : ~m? -# 2635| mu2635_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2635_1 -# 2636| r2636_1(glval) = VariableAddress[x872] : -# 2636| r2636_2(glval) = FunctionAddress[~String] : -# 2636| v2636_3(void) = Call[~String] : func:r2636_2, this:r2636_1 -# 2636| mu2636_4(unknown) = ^CallSideEffect : ~m? -# 2636| v2636_5(void) = ^IndirectReadSideEffect[-1] : &:r2636_1, ~m? -# 2636| mu2636_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2636_1 -# 2636| r2636_7(bool) = Constant[0] : -# 2636| v2636_8(void) = ConditionalBranch : r2636_7 +# 35| Block 872 +# 35| r35_12209(glval) = VariableAddress[x872] : +# 35| mu35_12210(String) = Uninitialized[x872] : &:r35_12209 +# 35| r35_12211(glval) = FunctionAddress[String] : +# 35| v35_12212(void) = Call[String] : func:r35_12211, this:r35_12209 +# 35| mu35_12213(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12214(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12209 +# 35| r35_12215(glval) = VariableAddress[x872] : +# 35| r35_12216(glval) = FunctionAddress[~String] : +# 35| v35_12217(void) = Call[~String] : func:r35_12216, this:r35_12215 +# 35| mu35_12218(unknown) = ^CallSideEffect : ~m? +# 35| v35_12219(void) = ^IndirectReadSideEffect[-1] : &:r35_12215, ~m? +# 35| mu35_12220(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12215 +# 35| r35_12221(bool) = Constant[0] : +# 35| v35_12222(void) = ConditionalBranch : r35_12221 #-----| False -> Block 873 #-----| True -> Block 1026 -# 2638| Block 873 -# 2638| r2638_1(glval) = VariableAddress[x873] : -# 2638| mu2638_2(String) = Uninitialized[x873] : &:r2638_1 -# 2638| r2638_3(glval) = FunctionAddress[String] : -# 2638| v2638_4(void) = Call[String] : func:r2638_3, this:r2638_1 -# 2638| mu2638_5(unknown) = ^CallSideEffect : ~m? -# 2638| mu2638_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2638_1 -# 2639| r2639_1(glval) = VariableAddress[x873] : -# 2639| r2639_2(glval) = FunctionAddress[~String] : -# 2639| v2639_3(void) = Call[~String] : func:r2639_2, this:r2639_1 -# 2639| mu2639_4(unknown) = ^CallSideEffect : ~m? -# 2639| v2639_5(void) = ^IndirectReadSideEffect[-1] : &:r2639_1, ~m? -# 2639| mu2639_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2639_1 -# 2639| r2639_7(bool) = Constant[0] : -# 2639| v2639_8(void) = ConditionalBranch : r2639_7 +# 35| Block 873 +# 35| r35_12223(glval) = VariableAddress[x873] : +# 35| mu35_12224(String) = Uninitialized[x873] : &:r35_12223 +# 35| r35_12225(glval) = FunctionAddress[String] : +# 35| v35_12226(void) = Call[String] : func:r35_12225, this:r35_12223 +# 35| mu35_12227(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12228(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12223 +# 35| r35_12229(glval) = VariableAddress[x873] : +# 35| r35_12230(glval) = FunctionAddress[~String] : +# 35| v35_12231(void) = Call[~String] : func:r35_12230, this:r35_12229 +# 35| mu35_12232(unknown) = ^CallSideEffect : ~m? +# 35| v35_12233(void) = ^IndirectReadSideEffect[-1] : &:r35_12229, ~m? +# 35| mu35_12234(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12229 +# 35| r35_12235(bool) = Constant[0] : +# 35| v35_12236(void) = ConditionalBranch : r35_12235 #-----| False -> Block 874 #-----| True -> Block 1026 -# 2641| Block 874 -# 2641| r2641_1(glval) = VariableAddress[x874] : -# 2641| mu2641_2(String) = Uninitialized[x874] : &:r2641_1 -# 2641| r2641_3(glval) = FunctionAddress[String] : -# 2641| v2641_4(void) = Call[String] : func:r2641_3, this:r2641_1 -# 2641| mu2641_5(unknown) = ^CallSideEffect : ~m? -# 2641| mu2641_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2641_1 -# 2642| r2642_1(glval) = VariableAddress[x874] : -# 2642| r2642_2(glval) = FunctionAddress[~String] : -# 2642| v2642_3(void) = Call[~String] : func:r2642_2, this:r2642_1 -# 2642| mu2642_4(unknown) = ^CallSideEffect : ~m? -# 2642| v2642_5(void) = ^IndirectReadSideEffect[-1] : &:r2642_1, ~m? -# 2642| mu2642_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2642_1 -# 2642| r2642_7(bool) = Constant[0] : -# 2642| v2642_8(void) = ConditionalBranch : r2642_7 +# 35| Block 874 +# 35| r35_12237(glval) = VariableAddress[x874] : +# 35| mu35_12238(String) = Uninitialized[x874] : &:r35_12237 +# 35| r35_12239(glval) = FunctionAddress[String] : +# 35| v35_12240(void) = Call[String] : func:r35_12239, this:r35_12237 +# 35| mu35_12241(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12242(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12237 +# 35| r35_12243(glval) = VariableAddress[x874] : +# 35| r35_12244(glval) = FunctionAddress[~String] : +# 35| v35_12245(void) = Call[~String] : func:r35_12244, this:r35_12243 +# 35| mu35_12246(unknown) = ^CallSideEffect : ~m? +# 35| v35_12247(void) = ^IndirectReadSideEffect[-1] : &:r35_12243, ~m? +# 35| mu35_12248(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12243 +# 35| r35_12249(bool) = Constant[0] : +# 35| v35_12250(void) = ConditionalBranch : r35_12249 #-----| False -> Block 875 #-----| True -> Block 1026 -# 2644| Block 875 -# 2644| r2644_1(glval) = VariableAddress[x875] : -# 2644| mu2644_2(String) = Uninitialized[x875] : &:r2644_1 -# 2644| r2644_3(glval) = FunctionAddress[String] : -# 2644| v2644_4(void) = Call[String] : func:r2644_3, this:r2644_1 -# 2644| mu2644_5(unknown) = ^CallSideEffect : ~m? -# 2644| mu2644_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2644_1 -# 2645| r2645_1(glval) = VariableAddress[x875] : -# 2645| r2645_2(glval) = FunctionAddress[~String] : -# 2645| v2645_3(void) = Call[~String] : func:r2645_2, this:r2645_1 -# 2645| mu2645_4(unknown) = ^CallSideEffect : ~m? -# 2645| v2645_5(void) = ^IndirectReadSideEffect[-1] : &:r2645_1, ~m? -# 2645| mu2645_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2645_1 -# 2645| r2645_7(bool) = Constant[0] : -# 2645| v2645_8(void) = ConditionalBranch : r2645_7 +# 35| Block 875 +# 35| r35_12251(glval) = VariableAddress[x875] : +# 35| mu35_12252(String) = Uninitialized[x875] : &:r35_12251 +# 35| r35_12253(glval) = FunctionAddress[String] : +# 35| v35_12254(void) = Call[String] : func:r35_12253, this:r35_12251 +# 35| mu35_12255(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12256(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12251 +# 35| r35_12257(glval) = VariableAddress[x875] : +# 35| r35_12258(glval) = FunctionAddress[~String] : +# 35| v35_12259(void) = Call[~String] : func:r35_12258, this:r35_12257 +# 35| mu35_12260(unknown) = ^CallSideEffect : ~m? +# 35| v35_12261(void) = ^IndirectReadSideEffect[-1] : &:r35_12257, ~m? +# 35| mu35_12262(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12257 +# 35| r35_12263(bool) = Constant[0] : +# 35| v35_12264(void) = ConditionalBranch : r35_12263 #-----| False -> Block 876 #-----| True -> Block 1026 -# 2647| Block 876 -# 2647| r2647_1(glval) = VariableAddress[x876] : -# 2647| mu2647_2(String) = Uninitialized[x876] : &:r2647_1 -# 2647| r2647_3(glval) = FunctionAddress[String] : -# 2647| v2647_4(void) = Call[String] : func:r2647_3, this:r2647_1 -# 2647| mu2647_5(unknown) = ^CallSideEffect : ~m? -# 2647| mu2647_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2647_1 -# 2648| r2648_1(glval) = VariableAddress[x876] : -# 2648| r2648_2(glval) = FunctionAddress[~String] : -# 2648| v2648_3(void) = Call[~String] : func:r2648_2, this:r2648_1 -# 2648| mu2648_4(unknown) = ^CallSideEffect : ~m? -# 2648| v2648_5(void) = ^IndirectReadSideEffect[-1] : &:r2648_1, ~m? -# 2648| mu2648_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2648_1 -# 2648| r2648_7(bool) = Constant[0] : -# 2648| v2648_8(void) = ConditionalBranch : r2648_7 +# 35| Block 876 +# 35| r35_12265(glval) = VariableAddress[x876] : +# 35| mu35_12266(String) = Uninitialized[x876] : &:r35_12265 +# 35| r35_12267(glval) = FunctionAddress[String] : +# 35| v35_12268(void) = Call[String] : func:r35_12267, this:r35_12265 +# 35| mu35_12269(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12270(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12265 +# 35| r35_12271(glval) = VariableAddress[x876] : +# 35| r35_12272(glval) = FunctionAddress[~String] : +# 35| v35_12273(void) = Call[~String] : func:r35_12272, this:r35_12271 +# 35| mu35_12274(unknown) = ^CallSideEffect : ~m? +# 35| v35_12275(void) = ^IndirectReadSideEffect[-1] : &:r35_12271, ~m? +# 35| mu35_12276(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12271 +# 35| r35_12277(bool) = Constant[0] : +# 35| v35_12278(void) = ConditionalBranch : r35_12277 #-----| False -> Block 877 #-----| True -> Block 1026 -# 2650| Block 877 -# 2650| r2650_1(glval) = VariableAddress[x877] : -# 2650| mu2650_2(String) = Uninitialized[x877] : &:r2650_1 -# 2650| r2650_3(glval) = FunctionAddress[String] : -# 2650| v2650_4(void) = Call[String] : func:r2650_3, this:r2650_1 -# 2650| mu2650_5(unknown) = ^CallSideEffect : ~m? -# 2650| mu2650_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2650_1 -# 2651| r2651_1(glval) = VariableAddress[x877] : -# 2651| r2651_2(glval) = FunctionAddress[~String] : -# 2651| v2651_3(void) = Call[~String] : func:r2651_2, this:r2651_1 -# 2651| mu2651_4(unknown) = ^CallSideEffect : ~m? -# 2651| v2651_5(void) = ^IndirectReadSideEffect[-1] : &:r2651_1, ~m? -# 2651| mu2651_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2651_1 -# 2651| r2651_7(bool) = Constant[0] : -# 2651| v2651_8(void) = ConditionalBranch : r2651_7 +# 35| Block 877 +# 35| r35_12279(glval) = VariableAddress[x877] : +# 35| mu35_12280(String) = Uninitialized[x877] : &:r35_12279 +# 35| r35_12281(glval) = FunctionAddress[String] : +# 35| v35_12282(void) = Call[String] : func:r35_12281, this:r35_12279 +# 35| mu35_12283(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12284(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12279 +# 35| r35_12285(glval) = VariableAddress[x877] : +# 35| r35_12286(glval) = FunctionAddress[~String] : +# 35| v35_12287(void) = Call[~String] : func:r35_12286, this:r35_12285 +# 35| mu35_12288(unknown) = ^CallSideEffect : ~m? +# 35| v35_12289(void) = ^IndirectReadSideEffect[-1] : &:r35_12285, ~m? +# 35| mu35_12290(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12285 +# 35| r35_12291(bool) = Constant[0] : +# 35| v35_12292(void) = ConditionalBranch : r35_12291 #-----| False -> Block 878 #-----| True -> Block 1026 -# 2653| Block 878 -# 2653| r2653_1(glval) = VariableAddress[x878] : -# 2653| mu2653_2(String) = Uninitialized[x878] : &:r2653_1 -# 2653| r2653_3(glval) = FunctionAddress[String] : -# 2653| v2653_4(void) = Call[String] : func:r2653_3, this:r2653_1 -# 2653| mu2653_5(unknown) = ^CallSideEffect : ~m? -# 2653| mu2653_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2653_1 -# 2654| r2654_1(glval) = VariableAddress[x878] : -# 2654| r2654_2(glval) = FunctionAddress[~String] : -# 2654| v2654_3(void) = Call[~String] : func:r2654_2, this:r2654_1 -# 2654| mu2654_4(unknown) = ^CallSideEffect : ~m? -# 2654| v2654_5(void) = ^IndirectReadSideEffect[-1] : &:r2654_1, ~m? -# 2654| mu2654_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2654_1 -# 2654| r2654_7(bool) = Constant[0] : -# 2654| v2654_8(void) = ConditionalBranch : r2654_7 +# 35| Block 878 +# 35| r35_12293(glval) = VariableAddress[x878] : +# 35| mu35_12294(String) = Uninitialized[x878] : &:r35_12293 +# 35| r35_12295(glval) = FunctionAddress[String] : +# 35| v35_12296(void) = Call[String] : func:r35_12295, this:r35_12293 +# 35| mu35_12297(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12298(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12293 +# 35| r35_12299(glval) = VariableAddress[x878] : +# 35| r35_12300(glval) = FunctionAddress[~String] : +# 35| v35_12301(void) = Call[~String] : func:r35_12300, this:r35_12299 +# 35| mu35_12302(unknown) = ^CallSideEffect : ~m? +# 35| v35_12303(void) = ^IndirectReadSideEffect[-1] : &:r35_12299, ~m? +# 35| mu35_12304(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12299 +# 35| r35_12305(bool) = Constant[0] : +# 35| v35_12306(void) = ConditionalBranch : r35_12305 #-----| False -> Block 879 #-----| True -> Block 1026 -# 2656| Block 879 -# 2656| r2656_1(glval) = VariableAddress[x879] : -# 2656| mu2656_2(String) = Uninitialized[x879] : &:r2656_1 -# 2656| r2656_3(glval) = FunctionAddress[String] : -# 2656| v2656_4(void) = Call[String] : func:r2656_3, this:r2656_1 -# 2656| mu2656_5(unknown) = ^CallSideEffect : ~m? -# 2656| mu2656_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2656_1 -# 2657| r2657_1(glval) = VariableAddress[x879] : -# 2657| r2657_2(glval) = FunctionAddress[~String] : -# 2657| v2657_3(void) = Call[~String] : func:r2657_2, this:r2657_1 -# 2657| mu2657_4(unknown) = ^CallSideEffect : ~m? -# 2657| v2657_5(void) = ^IndirectReadSideEffect[-1] : &:r2657_1, ~m? -# 2657| mu2657_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2657_1 -# 2657| r2657_7(bool) = Constant[0] : -# 2657| v2657_8(void) = ConditionalBranch : r2657_7 +# 35| Block 879 +# 35| r35_12307(glval) = VariableAddress[x879] : +# 35| mu35_12308(String) = Uninitialized[x879] : &:r35_12307 +# 35| r35_12309(glval) = FunctionAddress[String] : +# 35| v35_12310(void) = Call[String] : func:r35_12309, this:r35_12307 +# 35| mu35_12311(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12312(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12307 +# 35| r35_12313(glval) = VariableAddress[x879] : +# 35| r35_12314(glval) = FunctionAddress[~String] : +# 35| v35_12315(void) = Call[~String] : func:r35_12314, this:r35_12313 +# 35| mu35_12316(unknown) = ^CallSideEffect : ~m? +# 35| v35_12317(void) = ^IndirectReadSideEffect[-1] : &:r35_12313, ~m? +# 35| mu35_12318(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12313 +# 35| r35_12319(bool) = Constant[0] : +# 35| v35_12320(void) = ConditionalBranch : r35_12319 #-----| False -> Block 880 #-----| True -> Block 1026 -# 2659| Block 880 -# 2659| r2659_1(glval) = VariableAddress[x880] : -# 2659| mu2659_2(String) = Uninitialized[x880] : &:r2659_1 -# 2659| r2659_3(glval) = FunctionAddress[String] : -# 2659| v2659_4(void) = Call[String] : func:r2659_3, this:r2659_1 -# 2659| mu2659_5(unknown) = ^CallSideEffect : ~m? -# 2659| mu2659_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2659_1 -# 2660| r2660_1(glval) = VariableAddress[x880] : -# 2660| r2660_2(glval) = FunctionAddress[~String] : -# 2660| v2660_3(void) = Call[~String] : func:r2660_2, this:r2660_1 -# 2660| mu2660_4(unknown) = ^CallSideEffect : ~m? -# 2660| v2660_5(void) = ^IndirectReadSideEffect[-1] : &:r2660_1, ~m? -# 2660| mu2660_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2660_1 -# 2660| r2660_7(bool) = Constant[0] : -# 2660| v2660_8(void) = ConditionalBranch : r2660_7 +# 35| Block 880 +# 35| r35_12321(glval) = VariableAddress[x880] : +# 35| mu35_12322(String) = Uninitialized[x880] : &:r35_12321 +# 35| r35_12323(glval) = FunctionAddress[String] : +# 35| v35_12324(void) = Call[String] : func:r35_12323, this:r35_12321 +# 35| mu35_12325(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12326(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12321 +# 35| r35_12327(glval) = VariableAddress[x880] : +# 35| r35_12328(glval) = FunctionAddress[~String] : +# 35| v35_12329(void) = Call[~String] : func:r35_12328, this:r35_12327 +# 35| mu35_12330(unknown) = ^CallSideEffect : ~m? +# 35| v35_12331(void) = ^IndirectReadSideEffect[-1] : &:r35_12327, ~m? +# 35| mu35_12332(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12327 +# 35| r35_12333(bool) = Constant[0] : +# 35| v35_12334(void) = ConditionalBranch : r35_12333 #-----| False -> Block 881 #-----| True -> Block 1026 -# 2662| Block 881 -# 2662| r2662_1(glval) = VariableAddress[x881] : -# 2662| mu2662_2(String) = Uninitialized[x881] : &:r2662_1 -# 2662| r2662_3(glval) = FunctionAddress[String] : -# 2662| v2662_4(void) = Call[String] : func:r2662_3, this:r2662_1 -# 2662| mu2662_5(unknown) = ^CallSideEffect : ~m? -# 2662| mu2662_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2662_1 -# 2663| r2663_1(glval) = VariableAddress[x881] : -# 2663| r2663_2(glval) = FunctionAddress[~String] : -# 2663| v2663_3(void) = Call[~String] : func:r2663_2, this:r2663_1 -# 2663| mu2663_4(unknown) = ^CallSideEffect : ~m? -# 2663| v2663_5(void) = ^IndirectReadSideEffect[-1] : &:r2663_1, ~m? -# 2663| mu2663_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2663_1 -# 2663| r2663_7(bool) = Constant[0] : -# 2663| v2663_8(void) = ConditionalBranch : r2663_7 +# 35| Block 881 +# 35| r35_12335(glval) = VariableAddress[x881] : +# 35| mu35_12336(String) = Uninitialized[x881] : &:r35_12335 +# 35| r35_12337(glval) = FunctionAddress[String] : +# 35| v35_12338(void) = Call[String] : func:r35_12337, this:r35_12335 +# 35| mu35_12339(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12340(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12335 +# 35| r35_12341(glval) = VariableAddress[x881] : +# 35| r35_12342(glval) = FunctionAddress[~String] : +# 35| v35_12343(void) = Call[~String] : func:r35_12342, this:r35_12341 +# 35| mu35_12344(unknown) = ^CallSideEffect : ~m? +# 35| v35_12345(void) = ^IndirectReadSideEffect[-1] : &:r35_12341, ~m? +# 35| mu35_12346(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12341 +# 35| r35_12347(bool) = Constant[0] : +# 35| v35_12348(void) = ConditionalBranch : r35_12347 #-----| False -> Block 882 #-----| True -> Block 1026 -# 2665| Block 882 -# 2665| r2665_1(glval) = VariableAddress[x882] : -# 2665| mu2665_2(String) = Uninitialized[x882] : &:r2665_1 -# 2665| r2665_3(glval) = FunctionAddress[String] : -# 2665| v2665_4(void) = Call[String] : func:r2665_3, this:r2665_1 -# 2665| mu2665_5(unknown) = ^CallSideEffect : ~m? -# 2665| mu2665_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2665_1 -# 2666| r2666_1(glval) = VariableAddress[x882] : -# 2666| r2666_2(glval) = FunctionAddress[~String] : -# 2666| v2666_3(void) = Call[~String] : func:r2666_2, this:r2666_1 -# 2666| mu2666_4(unknown) = ^CallSideEffect : ~m? -# 2666| v2666_5(void) = ^IndirectReadSideEffect[-1] : &:r2666_1, ~m? -# 2666| mu2666_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2666_1 -# 2666| r2666_7(bool) = Constant[0] : -# 2666| v2666_8(void) = ConditionalBranch : r2666_7 +# 35| Block 882 +# 35| r35_12349(glval) = VariableAddress[x882] : +# 35| mu35_12350(String) = Uninitialized[x882] : &:r35_12349 +# 35| r35_12351(glval) = FunctionAddress[String] : +# 35| v35_12352(void) = Call[String] : func:r35_12351, this:r35_12349 +# 35| mu35_12353(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12354(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12349 +# 35| r35_12355(glval) = VariableAddress[x882] : +# 35| r35_12356(glval) = FunctionAddress[~String] : +# 35| v35_12357(void) = Call[~String] : func:r35_12356, this:r35_12355 +# 35| mu35_12358(unknown) = ^CallSideEffect : ~m? +# 35| v35_12359(void) = ^IndirectReadSideEffect[-1] : &:r35_12355, ~m? +# 35| mu35_12360(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12355 +# 35| r35_12361(bool) = Constant[0] : +# 35| v35_12362(void) = ConditionalBranch : r35_12361 #-----| False -> Block 883 #-----| True -> Block 1026 -# 2668| Block 883 -# 2668| r2668_1(glval) = VariableAddress[x883] : -# 2668| mu2668_2(String) = Uninitialized[x883] : &:r2668_1 -# 2668| r2668_3(glval) = FunctionAddress[String] : -# 2668| v2668_4(void) = Call[String] : func:r2668_3, this:r2668_1 -# 2668| mu2668_5(unknown) = ^CallSideEffect : ~m? -# 2668| mu2668_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2668_1 -# 2669| r2669_1(glval) = VariableAddress[x883] : -# 2669| r2669_2(glval) = FunctionAddress[~String] : -# 2669| v2669_3(void) = Call[~String] : func:r2669_2, this:r2669_1 -# 2669| mu2669_4(unknown) = ^CallSideEffect : ~m? -# 2669| v2669_5(void) = ^IndirectReadSideEffect[-1] : &:r2669_1, ~m? -# 2669| mu2669_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2669_1 -# 2669| r2669_7(bool) = Constant[0] : -# 2669| v2669_8(void) = ConditionalBranch : r2669_7 +# 35| Block 883 +# 35| r35_12363(glval) = VariableAddress[x883] : +# 35| mu35_12364(String) = Uninitialized[x883] : &:r35_12363 +# 35| r35_12365(glval) = FunctionAddress[String] : +# 35| v35_12366(void) = Call[String] : func:r35_12365, this:r35_12363 +# 35| mu35_12367(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12368(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12363 +# 35| r35_12369(glval) = VariableAddress[x883] : +# 35| r35_12370(glval) = FunctionAddress[~String] : +# 35| v35_12371(void) = Call[~String] : func:r35_12370, this:r35_12369 +# 35| mu35_12372(unknown) = ^CallSideEffect : ~m? +# 35| v35_12373(void) = ^IndirectReadSideEffect[-1] : &:r35_12369, ~m? +# 35| mu35_12374(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12369 +# 35| r35_12375(bool) = Constant[0] : +# 35| v35_12376(void) = ConditionalBranch : r35_12375 #-----| False -> Block 884 #-----| True -> Block 1026 -# 2671| Block 884 -# 2671| r2671_1(glval) = VariableAddress[x884] : -# 2671| mu2671_2(String) = Uninitialized[x884] : &:r2671_1 -# 2671| r2671_3(glval) = FunctionAddress[String] : -# 2671| v2671_4(void) = Call[String] : func:r2671_3, this:r2671_1 -# 2671| mu2671_5(unknown) = ^CallSideEffect : ~m? -# 2671| mu2671_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2671_1 -# 2672| r2672_1(glval) = VariableAddress[x884] : -# 2672| r2672_2(glval) = FunctionAddress[~String] : -# 2672| v2672_3(void) = Call[~String] : func:r2672_2, this:r2672_1 -# 2672| mu2672_4(unknown) = ^CallSideEffect : ~m? -# 2672| v2672_5(void) = ^IndirectReadSideEffect[-1] : &:r2672_1, ~m? -# 2672| mu2672_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2672_1 -# 2672| r2672_7(bool) = Constant[0] : -# 2672| v2672_8(void) = ConditionalBranch : r2672_7 +# 35| Block 884 +# 35| r35_12377(glval) = VariableAddress[x884] : +# 35| mu35_12378(String) = Uninitialized[x884] : &:r35_12377 +# 35| r35_12379(glval) = FunctionAddress[String] : +# 35| v35_12380(void) = Call[String] : func:r35_12379, this:r35_12377 +# 35| mu35_12381(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12382(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12377 +# 35| r35_12383(glval) = VariableAddress[x884] : +# 35| r35_12384(glval) = FunctionAddress[~String] : +# 35| v35_12385(void) = Call[~String] : func:r35_12384, this:r35_12383 +# 35| mu35_12386(unknown) = ^CallSideEffect : ~m? +# 35| v35_12387(void) = ^IndirectReadSideEffect[-1] : &:r35_12383, ~m? +# 35| mu35_12388(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12383 +# 35| r35_12389(bool) = Constant[0] : +# 35| v35_12390(void) = ConditionalBranch : r35_12389 #-----| False -> Block 885 #-----| True -> Block 1026 -# 2674| Block 885 -# 2674| r2674_1(glval) = VariableAddress[x885] : -# 2674| mu2674_2(String) = Uninitialized[x885] : &:r2674_1 -# 2674| r2674_3(glval) = FunctionAddress[String] : -# 2674| v2674_4(void) = Call[String] : func:r2674_3, this:r2674_1 -# 2674| mu2674_5(unknown) = ^CallSideEffect : ~m? -# 2674| mu2674_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2674_1 -# 2675| r2675_1(glval) = VariableAddress[x885] : -# 2675| r2675_2(glval) = FunctionAddress[~String] : -# 2675| v2675_3(void) = Call[~String] : func:r2675_2, this:r2675_1 -# 2675| mu2675_4(unknown) = ^CallSideEffect : ~m? -# 2675| v2675_5(void) = ^IndirectReadSideEffect[-1] : &:r2675_1, ~m? -# 2675| mu2675_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2675_1 -# 2675| r2675_7(bool) = Constant[0] : -# 2675| v2675_8(void) = ConditionalBranch : r2675_7 +# 35| Block 885 +# 35| r35_12391(glval) = VariableAddress[x885] : +# 35| mu35_12392(String) = Uninitialized[x885] : &:r35_12391 +# 35| r35_12393(glval) = FunctionAddress[String] : +# 35| v35_12394(void) = Call[String] : func:r35_12393, this:r35_12391 +# 35| mu35_12395(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12396(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12391 +# 35| r35_12397(glval) = VariableAddress[x885] : +# 35| r35_12398(glval) = FunctionAddress[~String] : +# 35| v35_12399(void) = Call[~String] : func:r35_12398, this:r35_12397 +# 35| mu35_12400(unknown) = ^CallSideEffect : ~m? +# 35| v35_12401(void) = ^IndirectReadSideEffect[-1] : &:r35_12397, ~m? +# 35| mu35_12402(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12397 +# 35| r35_12403(bool) = Constant[0] : +# 35| v35_12404(void) = ConditionalBranch : r35_12403 #-----| False -> Block 886 #-----| True -> Block 1026 -# 2677| Block 886 -# 2677| r2677_1(glval) = VariableAddress[x886] : -# 2677| mu2677_2(String) = Uninitialized[x886] : &:r2677_1 -# 2677| r2677_3(glval) = FunctionAddress[String] : -# 2677| v2677_4(void) = Call[String] : func:r2677_3, this:r2677_1 -# 2677| mu2677_5(unknown) = ^CallSideEffect : ~m? -# 2677| mu2677_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2677_1 -# 2678| r2678_1(glval) = VariableAddress[x886] : -# 2678| r2678_2(glval) = FunctionAddress[~String] : -# 2678| v2678_3(void) = Call[~String] : func:r2678_2, this:r2678_1 -# 2678| mu2678_4(unknown) = ^CallSideEffect : ~m? -# 2678| v2678_5(void) = ^IndirectReadSideEffect[-1] : &:r2678_1, ~m? -# 2678| mu2678_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2678_1 -# 2678| r2678_7(bool) = Constant[0] : -# 2678| v2678_8(void) = ConditionalBranch : r2678_7 +# 35| Block 886 +# 35| r35_12405(glval) = VariableAddress[x886] : +# 35| mu35_12406(String) = Uninitialized[x886] : &:r35_12405 +# 35| r35_12407(glval) = FunctionAddress[String] : +# 35| v35_12408(void) = Call[String] : func:r35_12407, this:r35_12405 +# 35| mu35_12409(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12410(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12405 +# 35| r35_12411(glval) = VariableAddress[x886] : +# 35| r35_12412(glval) = FunctionAddress[~String] : +# 35| v35_12413(void) = Call[~String] : func:r35_12412, this:r35_12411 +# 35| mu35_12414(unknown) = ^CallSideEffect : ~m? +# 35| v35_12415(void) = ^IndirectReadSideEffect[-1] : &:r35_12411, ~m? +# 35| mu35_12416(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12411 +# 35| r35_12417(bool) = Constant[0] : +# 35| v35_12418(void) = ConditionalBranch : r35_12417 #-----| False -> Block 887 #-----| True -> Block 1026 -# 2680| Block 887 -# 2680| r2680_1(glval) = VariableAddress[x887] : -# 2680| mu2680_2(String) = Uninitialized[x887] : &:r2680_1 -# 2680| r2680_3(glval) = FunctionAddress[String] : -# 2680| v2680_4(void) = Call[String] : func:r2680_3, this:r2680_1 -# 2680| mu2680_5(unknown) = ^CallSideEffect : ~m? -# 2680| mu2680_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2680_1 -# 2681| r2681_1(glval) = VariableAddress[x887] : -# 2681| r2681_2(glval) = FunctionAddress[~String] : -# 2681| v2681_3(void) = Call[~String] : func:r2681_2, this:r2681_1 -# 2681| mu2681_4(unknown) = ^CallSideEffect : ~m? -# 2681| v2681_5(void) = ^IndirectReadSideEffect[-1] : &:r2681_1, ~m? -# 2681| mu2681_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2681_1 -# 2681| r2681_7(bool) = Constant[0] : -# 2681| v2681_8(void) = ConditionalBranch : r2681_7 +# 35| Block 887 +# 35| r35_12419(glval) = VariableAddress[x887] : +# 35| mu35_12420(String) = Uninitialized[x887] : &:r35_12419 +# 35| r35_12421(glval) = FunctionAddress[String] : +# 35| v35_12422(void) = Call[String] : func:r35_12421, this:r35_12419 +# 35| mu35_12423(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12424(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12419 +# 35| r35_12425(glval) = VariableAddress[x887] : +# 35| r35_12426(glval) = FunctionAddress[~String] : +# 35| v35_12427(void) = Call[~String] : func:r35_12426, this:r35_12425 +# 35| mu35_12428(unknown) = ^CallSideEffect : ~m? +# 35| v35_12429(void) = ^IndirectReadSideEffect[-1] : &:r35_12425, ~m? +# 35| mu35_12430(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12425 +# 35| r35_12431(bool) = Constant[0] : +# 35| v35_12432(void) = ConditionalBranch : r35_12431 #-----| False -> Block 888 #-----| True -> Block 1026 -# 2683| Block 888 -# 2683| r2683_1(glval) = VariableAddress[x888] : -# 2683| mu2683_2(String) = Uninitialized[x888] : &:r2683_1 -# 2683| r2683_3(glval) = FunctionAddress[String] : -# 2683| v2683_4(void) = Call[String] : func:r2683_3, this:r2683_1 -# 2683| mu2683_5(unknown) = ^CallSideEffect : ~m? -# 2683| mu2683_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2683_1 -# 2684| r2684_1(glval) = VariableAddress[x888] : -# 2684| r2684_2(glval) = FunctionAddress[~String] : -# 2684| v2684_3(void) = Call[~String] : func:r2684_2, this:r2684_1 -# 2684| mu2684_4(unknown) = ^CallSideEffect : ~m? -# 2684| v2684_5(void) = ^IndirectReadSideEffect[-1] : &:r2684_1, ~m? -# 2684| mu2684_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2684_1 -# 2684| r2684_7(bool) = Constant[0] : -# 2684| v2684_8(void) = ConditionalBranch : r2684_7 +# 35| Block 888 +# 35| r35_12433(glval) = VariableAddress[x888] : +# 35| mu35_12434(String) = Uninitialized[x888] : &:r35_12433 +# 35| r35_12435(glval) = FunctionAddress[String] : +# 35| v35_12436(void) = Call[String] : func:r35_12435, this:r35_12433 +# 35| mu35_12437(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12438(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12433 +# 35| r35_12439(glval) = VariableAddress[x888] : +# 35| r35_12440(glval) = FunctionAddress[~String] : +# 35| v35_12441(void) = Call[~String] : func:r35_12440, this:r35_12439 +# 35| mu35_12442(unknown) = ^CallSideEffect : ~m? +# 35| v35_12443(void) = ^IndirectReadSideEffect[-1] : &:r35_12439, ~m? +# 35| mu35_12444(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12439 +# 35| r35_12445(bool) = Constant[0] : +# 35| v35_12446(void) = ConditionalBranch : r35_12445 #-----| False -> Block 889 #-----| True -> Block 1026 -# 2686| Block 889 -# 2686| r2686_1(glval) = VariableAddress[x889] : -# 2686| mu2686_2(String) = Uninitialized[x889] : &:r2686_1 -# 2686| r2686_3(glval) = FunctionAddress[String] : -# 2686| v2686_4(void) = Call[String] : func:r2686_3, this:r2686_1 -# 2686| mu2686_5(unknown) = ^CallSideEffect : ~m? -# 2686| mu2686_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2686_1 -# 2687| r2687_1(glval) = VariableAddress[x889] : -# 2687| r2687_2(glval) = FunctionAddress[~String] : -# 2687| v2687_3(void) = Call[~String] : func:r2687_2, this:r2687_1 -# 2687| mu2687_4(unknown) = ^CallSideEffect : ~m? -# 2687| v2687_5(void) = ^IndirectReadSideEffect[-1] : &:r2687_1, ~m? -# 2687| mu2687_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2687_1 -# 2687| r2687_7(bool) = Constant[0] : -# 2687| v2687_8(void) = ConditionalBranch : r2687_7 +# 35| Block 889 +# 35| r35_12447(glval) = VariableAddress[x889] : +# 35| mu35_12448(String) = Uninitialized[x889] : &:r35_12447 +# 35| r35_12449(glval) = FunctionAddress[String] : +# 35| v35_12450(void) = Call[String] : func:r35_12449, this:r35_12447 +# 35| mu35_12451(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12452(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12447 +# 35| r35_12453(glval) = VariableAddress[x889] : +# 35| r35_12454(glval) = FunctionAddress[~String] : +# 35| v35_12455(void) = Call[~String] : func:r35_12454, this:r35_12453 +# 35| mu35_12456(unknown) = ^CallSideEffect : ~m? +# 35| v35_12457(void) = ^IndirectReadSideEffect[-1] : &:r35_12453, ~m? +# 35| mu35_12458(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12453 +# 35| r35_12459(bool) = Constant[0] : +# 35| v35_12460(void) = ConditionalBranch : r35_12459 #-----| False -> Block 890 #-----| True -> Block 1026 -# 2689| Block 890 -# 2689| r2689_1(glval) = VariableAddress[x890] : -# 2689| mu2689_2(String) = Uninitialized[x890] : &:r2689_1 -# 2689| r2689_3(glval) = FunctionAddress[String] : -# 2689| v2689_4(void) = Call[String] : func:r2689_3, this:r2689_1 -# 2689| mu2689_5(unknown) = ^CallSideEffect : ~m? -# 2689| mu2689_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2689_1 -# 2690| r2690_1(glval) = VariableAddress[x890] : -# 2690| r2690_2(glval) = FunctionAddress[~String] : -# 2690| v2690_3(void) = Call[~String] : func:r2690_2, this:r2690_1 -# 2690| mu2690_4(unknown) = ^CallSideEffect : ~m? -# 2690| v2690_5(void) = ^IndirectReadSideEffect[-1] : &:r2690_1, ~m? -# 2690| mu2690_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2690_1 -# 2690| r2690_7(bool) = Constant[0] : -# 2690| v2690_8(void) = ConditionalBranch : r2690_7 +# 35| Block 890 +# 35| r35_12461(glval) = VariableAddress[x890] : +# 35| mu35_12462(String) = Uninitialized[x890] : &:r35_12461 +# 35| r35_12463(glval) = FunctionAddress[String] : +# 35| v35_12464(void) = Call[String] : func:r35_12463, this:r35_12461 +# 35| mu35_12465(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12466(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12461 +# 35| r35_12467(glval) = VariableAddress[x890] : +# 35| r35_12468(glval) = FunctionAddress[~String] : +# 35| v35_12469(void) = Call[~String] : func:r35_12468, this:r35_12467 +# 35| mu35_12470(unknown) = ^CallSideEffect : ~m? +# 35| v35_12471(void) = ^IndirectReadSideEffect[-1] : &:r35_12467, ~m? +# 35| mu35_12472(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12467 +# 35| r35_12473(bool) = Constant[0] : +# 35| v35_12474(void) = ConditionalBranch : r35_12473 #-----| False -> Block 891 #-----| True -> Block 1026 -# 2692| Block 891 -# 2692| r2692_1(glval) = VariableAddress[x891] : -# 2692| mu2692_2(String) = Uninitialized[x891] : &:r2692_1 -# 2692| r2692_3(glval) = FunctionAddress[String] : -# 2692| v2692_4(void) = Call[String] : func:r2692_3, this:r2692_1 -# 2692| mu2692_5(unknown) = ^CallSideEffect : ~m? -# 2692| mu2692_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2692_1 -# 2693| r2693_1(glval) = VariableAddress[x891] : -# 2693| r2693_2(glval) = FunctionAddress[~String] : -# 2693| v2693_3(void) = Call[~String] : func:r2693_2, this:r2693_1 -# 2693| mu2693_4(unknown) = ^CallSideEffect : ~m? -# 2693| v2693_5(void) = ^IndirectReadSideEffect[-1] : &:r2693_1, ~m? -# 2693| mu2693_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2693_1 -# 2693| r2693_7(bool) = Constant[0] : -# 2693| v2693_8(void) = ConditionalBranch : r2693_7 +# 35| Block 891 +# 35| r35_12475(glval) = VariableAddress[x891] : +# 35| mu35_12476(String) = Uninitialized[x891] : &:r35_12475 +# 35| r35_12477(glval) = FunctionAddress[String] : +# 35| v35_12478(void) = Call[String] : func:r35_12477, this:r35_12475 +# 35| mu35_12479(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12480(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12475 +# 35| r35_12481(glval) = VariableAddress[x891] : +# 35| r35_12482(glval) = FunctionAddress[~String] : +# 35| v35_12483(void) = Call[~String] : func:r35_12482, this:r35_12481 +# 35| mu35_12484(unknown) = ^CallSideEffect : ~m? +# 35| v35_12485(void) = ^IndirectReadSideEffect[-1] : &:r35_12481, ~m? +# 35| mu35_12486(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12481 +# 35| r35_12487(bool) = Constant[0] : +# 35| v35_12488(void) = ConditionalBranch : r35_12487 #-----| False -> Block 892 #-----| True -> Block 1026 -# 2695| Block 892 -# 2695| r2695_1(glval) = VariableAddress[x892] : -# 2695| mu2695_2(String) = Uninitialized[x892] : &:r2695_1 -# 2695| r2695_3(glval) = FunctionAddress[String] : -# 2695| v2695_4(void) = Call[String] : func:r2695_3, this:r2695_1 -# 2695| mu2695_5(unknown) = ^CallSideEffect : ~m? -# 2695| mu2695_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2695_1 -# 2696| r2696_1(glval) = VariableAddress[x892] : -# 2696| r2696_2(glval) = FunctionAddress[~String] : -# 2696| v2696_3(void) = Call[~String] : func:r2696_2, this:r2696_1 -# 2696| mu2696_4(unknown) = ^CallSideEffect : ~m? -# 2696| v2696_5(void) = ^IndirectReadSideEffect[-1] : &:r2696_1, ~m? -# 2696| mu2696_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2696_1 -# 2696| r2696_7(bool) = Constant[0] : -# 2696| v2696_8(void) = ConditionalBranch : r2696_7 +# 35| Block 892 +# 35| r35_12489(glval) = VariableAddress[x892] : +# 35| mu35_12490(String) = Uninitialized[x892] : &:r35_12489 +# 35| r35_12491(glval) = FunctionAddress[String] : +# 35| v35_12492(void) = Call[String] : func:r35_12491, this:r35_12489 +# 35| mu35_12493(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12494(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12489 +# 35| r35_12495(glval) = VariableAddress[x892] : +# 35| r35_12496(glval) = FunctionAddress[~String] : +# 35| v35_12497(void) = Call[~String] : func:r35_12496, this:r35_12495 +# 35| mu35_12498(unknown) = ^CallSideEffect : ~m? +# 35| v35_12499(void) = ^IndirectReadSideEffect[-1] : &:r35_12495, ~m? +# 35| mu35_12500(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12495 +# 35| r35_12501(bool) = Constant[0] : +# 35| v35_12502(void) = ConditionalBranch : r35_12501 #-----| False -> Block 893 #-----| True -> Block 1026 -# 2698| Block 893 -# 2698| r2698_1(glval) = VariableAddress[x893] : -# 2698| mu2698_2(String) = Uninitialized[x893] : &:r2698_1 -# 2698| r2698_3(glval) = FunctionAddress[String] : -# 2698| v2698_4(void) = Call[String] : func:r2698_3, this:r2698_1 -# 2698| mu2698_5(unknown) = ^CallSideEffect : ~m? -# 2698| mu2698_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2698_1 -# 2699| r2699_1(glval) = VariableAddress[x893] : -# 2699| r2699_2(glval) = FunctionAddress[~String] : -# 2699| v2699_3(void) = Call[~String] : func:r2699_2, this:r2699_1 -# 2699| mu2699_4(unknown) = ^CallSideEffect : ~m? -# 2699| v2699_5(void) = ^IndirectReadSideEffect[-1] : &:r2699_1, ~m? -# 2699| mu2699_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2699_1 -# 2699| r2699_7(bool) = Constant[0] : -# 2699| v2699_8(void) = ConditionalBranch : r2699_7 +# 35| Block 893 +# 35| r35_12503(glval) = VariableAddress[x893] : +# 35| mu35_12504(String) = Uninitialized[x893] : &:r35_12503 +# 35| r35_12505(glval) = FunctionAddress[String] : +# 35| v35_12506(void) = Call[String] : func:r35_12505, this:r35_12503 +# 35| mu35_12507(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12508(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12503 +# 35| r35_12509(glval) = VariableAddress[x893] : +# 35| r35_12510(glval) = FunctionAddress[~String] : +# 35| v35_12511(void) = Call[~String] : func:r35_12510, this:r35_12509 +# 35| mu35_12512(unknown) = ^CallSideEffect : ~m? +# 35| v35_12513(void) = ^IndirectReadSideEffect[-1] : &:r35_12509, ~m? +# 35| mu35_12514(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12509 +# 35| r35_12515(bool) = Constant[0] : +# 35| v35_12516(void) = ConditionalBranch : r35_12515 #-----| False -> Block 894 #-----| True -> Block 1026 -# 2701| Block 894 -# 2701| r2701_1(glval) = VariableAddress[x894] : -# 2701| mu2701_2(String) = Uninitialized[x894] : &:r2701_1 -# 2701| r2701_3(glval) = FunctionAddress[String] : -# 2701| v2701_4(void) = Call[String] : func:r2701_3, this:r2701_1 -# 2701| mu2701_5(unknown) = ^CallSideEffect : ~m? -# 2701| mu2701_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2701_1 -# 2702| r2702_1(glval) = VariableAddress[x894] : -# 2702| r2702_2(glval) = FunctionAddress[~String] : -# 2702| v2702_3(void) = Call[~String] : func:r2702_2, this:r2702_1 -# 2702| mu2702_4(unknown) = ^CallSideEffect : ~m? -# 2702| v2702_5(void) = ^IndirectReadSideEffect[-1] : &:r2702_1, ~m? -# 2702| mu2702_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2702_1 -# 2702| r2702_7(bool) = Constant[0] : -# 2702| v2702_8(void) = ConditionalBranch : r2702_7 +# 35| Block 894 +# 35| r35_12517(glval) = VariableAddress[x894] : +# 35| mu35_12518(String) = Uninitialized[x894] : &:r35_12517 +# 35| r35_12519(glval) = FunctionAddress[String] : +# 35| v35_12520(void) = Call[String] : func:r35_12519, this:r35_12517 +# 35| mu35_12521(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12522(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12517 +# 35| r35_12523(glval) = VariableAddress[x894] : +# 35| r35_12524(glval) = FunctionAddress[~String] : +# 35| v35_12525(void) = Call[~String] : func:r35_12524, this:r35_12523 +# 35| mu35_12526(unknown) = ^CallSideEffect : ~m? +# 35| v35_12527(void) = ^IndirectReadSideEffect[-1] : &:r35_12523, ~m? +# 35| mu35_12528(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12523 +# 35| r35_12529(bool) = Constant[0] : +# 35| v35_12530(void) = ConditionalBranch : r35_12529 #-----| False -> Block 895 #-----| True -> Block 1026 -# 2704| Block 895 -# 2704| r2704_1(glval) = VariableAddress[x895] : -# 2704| mu2704_2(String) = Uninitialized[x895] : &:r2704_1 -# 2704| r2704_3(glval) = FunctionAddress[String] : -# 2704| v2704_4(void) = Call[String] : func:r2704_3, this:r2704_1 -# 2704| mu2704_5(unknown) = ^CallSideEffect : ~m? -# 2704| mu2704_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2704_1 -# 2705| r2705_1(glval) = VariableAddress[x895] : -# 2705| r2705_2(glval) = FunctionAddress[~String] : -# 2705| v2705_3(void) = Call[~String] : func:r2705_2, this:r2705_1 -# 2705| mu2705_4(unknown) = ^CallSideEffect : ~m? -# 2705| v2705_5(void) = ^IndirectReadSideEffect[-1] : &:r2705_1, ~m? -# 2705| mu2705_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2705_1 -# 2705| r2705_7(bool) = Constant[0] : -# 2705| v2705_8(void) = ConditionalBranch : r2705_7 +# 35| Block 895 +# 35| r35_12531(glval) = VariableAddress[x895] : +# 35| mu35_12532(String) = Uninitialized[x895] : &:r35_12531 +# 35| r35_12533(glval) = FunctionAddress[String] : +# 35| v35_12534(void) = Call[String] : func:r35_12533, this:r35_12531 +# 35| mu35_12535(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12536(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12531 +# 35| r35_12537(glval) = VariableAddress[x895] : +# 35| r35_12538(glval) = FunctionAddress[~String] : +# 35| v35_12539(void) = Call[~String] : func:r35_12538, this:r35_12537 +# 35| mu35_12540(unknown) = ^CallSideEffect : ~m? +# 35| v35_12541(void) = ^IndirectReadSideEffect[-1] : &:r35_12537, ~m? +# 35| mu35_12542(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12537 +# 35| r35_12543(bool) = Constant[0] : +# 35| v35_12544(void) = ConditionalBranch : r35_12543 #-----| False -> Block 896 #-----| True -> Block 1026 -# 2707| Block 896 -# 2707| r2707_1(glval) = VariableAddress[x896] : -# 2707| mu2707_2(String) = Uninitialized[x896] : &:r2707_1 -# 2707| r2707_3(glval) = FunctionAddress[String] : -# 2707| v2707_4(void) = Call[String] : func:r2707_3, this:r2707_1 -# 2707| mu2707_5(unknown) = ^CallSideEffect : ~m? -# 2707| mu2707_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2707_1 -# 2708| r2708_1(glval) = VariableAddress[x896] : -# 2708| r2708_2(glval) = FunctionAddress[~String] : -# 2708| v2708_3(void) = Call[~String] : func:r2708_2, this:r2708_1 -# 2708| mu2708_4(unknown) = ^CallSideEffect : ~m? -# 2708| v2708_5(void) = ^IndirectReadSideEffect[-1] : &:r2708_1, ~m? -# 2708| mu2708_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2708_1 -# 2708| r2708_7(bool) = Constant[0] : -# 2708| v2708_8(void) = ConditionalBranch : r2708_7 +# 35| Block 896 +# 35| r35_12545(glval) = VariableAddress[x896] : +# 35| mu35_12546(String) = Uninitialized[x896] : &:r35_12545 +# 35| r35_12547(glval) = FunctionAddress[String] : +# 35| v35_12548(void) = Call[String] : func:r35_12547, this:r35_12545 +# 35| mu35_12549(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12550(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12545 +# 35| r35_12551(glval) = VariableAddress[x896] : +# 35| r35_12552(glval) = FunctionAddress[~String] : +# 35| v35_12553(void) = Call[~String] : func:r35_12552, this:r35_12551 +# 35| mu35_12554(unknown) = ^CallSideEffect : ~m? +# 35| v35_12555(void) = ^IndirectReadSideEffect[-1] : &:r35_12551, ~m? +# 35| mu35_12556(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12551 +# 35| r35_12557(bool) = Constant[0] : +# 35| v35_12558(void) = ConditionalBranch : r35_12557 #-----| False -> Block 897 #-----| True -> Block 1026 -# 2710| Block 897 -# 2710| r2710_1(glval) = VariableAddress[x897] : -# 2710| mu2710_2(String) = Uninitialized[x897] : &:r2710_1 -# 2710| r2710_3(glval) = FunctionAddress[String] : -# 2710| v2710_4(void) = Call[String] : func:r2710_3, this:r2710_1 -# 2710| mu2710_5(unknown) = ^CallSideEffect : ~m? -# 2710| mu2710_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2710_1 -# 2711| r2711_1(glval) = VariableAddress[x897] : -# 2711| r2711_2(glval) = FunctionAddress[~String] : -# 2711| v2711_3(void) = Call[~String] : func:r2711_2, this:r2711_1 -# 2711| mu2711_4(unknown) = ^CallSideEffect : ~m? -# 2711| v2711_5(void) = ^IndirectReadSideEffect[-1] : &:r2711_1, ~m? -# 2711| mu2711_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2711_1 -# 2711| r2711_7(bool) = Constant[0] : -# 2711| v2711_8(void) = ConditionalBranch : r2711_7 +# 35| Block 897 +# 35| r35_12559(glval) = VariableAddress[x897] : +# 35| mu35_12560(String) = Uninitialized[x897] : &:r35_12559 +# 35| r35_12561(glval) = FunctionAddress[String] : +# 35| v35_12562(void) = Call[String] : func:r35_12561, this:r35_12559 +# 35| mu35_12563(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12564(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12559 +# 35| r35_12565(glval) = VariableAddress[x897] : +# 35| r35_12566(glval) = FunctionAddress[~String] : +# 35| v35_12567(void) = Call[~String] : func:r35_12566, this:r35_12565 +# 35| mu35_12568(unknown) = ^CallSideEffect : ~m? +# 35| v35_12569(void) = ^IndirectReadSideEffect[-1] : &:r35_12565, ~m? +# 35| mu35_12570(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12565 +# 35| r35_12571(bool) = Constant[0] : +# 35| v35_12572(void) = ConditionalBranch : r35_12571 #-----| False -> Block 898 #-----| True -> Block 1026 -# 2713| Block 898 -# 2713| r2713_1(glval) = VariableAddress[x898] : -# 2713| mu2713_2(String) = Uninitialized[x898] : &:r2713_1 -# 2713| r2713_3(glval) = FunctionAddress[String] : -# 2713| v2713_4(void) = Call[String] : func:r2713_3, this:r2713_1 -# 2713| mu2713_5(unknown) = ^CallSideEffect : ~m? -# 2713| mu2713_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2713_1 -# 2714| r2714_1(glval) = VariableAddress[x898] : -# 2714| r2714_2(glval) = FunctionAddress[~String] : -# 2714| v2714_3(void) = Call[~String] : func:r2714_2, this:r2714_1 -# 2714| mu2714_4(unknown) = ^CallSideEffect : ~m? -# 2714| v2714_5(void) = ^IndirectReadSideEffect[-1] : &:r2714_1, ~m? -# 2714| mu2714_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2714_1 -# 2714| r2714_7(bool) = Constant[0] : -# 2714| v2714_8(void) = ConditionalBranch : r2714_7 +# 35| Block 898 +# 35| r35_12573(glval) = VariableAddress[x898] : +# 35| mu35_12574(String) = Uninitialized[x898] : &:r35_12573 +# 35| r35_12575(glval) = FunctionAddress[String] : +# 35| v35_12576(void) = Call[String] : func:r35_12575, this:r35_12573 +# 35| mu35_12577(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12578(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12573 +# 35| r35_12579(glval) = VariableAddress[x898] : +# 35| r35_12580(glval) = FunctionAddress[~String] : +# 35| v35_12581(void) = Call[~String] : func:r35_12580, this:r35_12579 +# 35| mu35_12582(unknown) = ^CallSideEffect : ~m? +# 35| v35_12583(void) = ^IndirectReadSideEffect[-1] : &:r35_12579, ~m? +# 35| mu35_12584(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12579 +# 35| r35_12585(bool) = Constant[0] : +# 35| v35_12586(void) = ConditionalBranch : r35_12585 #-----| False -> Block 899 #-----| True -> Block 1026 -# 2716| Block 899 -# 2716| r2716_1(glval) = VariableAddress[x899] : -# 2716| mu2716_2(String) = Uninitialized[x899] : &:r2716_1 -# 2716| r2716_3(glval) = FunctionAddress[String] : -# 2716| v2716_4(void) = Call[String] : func:r2716_3, this:r2716_1 -# 2716| mu2716_5(unknown) = ^CallSideEffect : ~m? -# 2716| mu2716_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2716_1 -# 2717| r2717_1(glval) = VariableAddress[x899] : -# 2717| r2717_2(glval) = FunctionAddress[~String] : -# 2717| v2717_3(void) = Call[~String] : func:r2717_2, this:r2717_1 -# 2717| mu2717_4(unknown) = ^CallSideEffect : ~m? -# 2717| v2717_5(void) = ^IndirectReadSideEffect[-1] : &:r2717_1, ~m? -# 2717| mu2717_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2717_1 -# 2717| r2717_7(bool) = Constant[0] : -# 2717| v2717_8(void) = ConditionalBranch : r2717_7 +# 35| Block 899 +# 35| r35_12587(glval) = VariableAddress[x899] : +# 35| mu35_12588(String) = Uninitialized[x899] : &:r35_12587 +# 35| r35_12589(glval) = FunctionAddress[String] : +# 35| v35_12590(void) = Call[String] : func:r35_12589, this:r35_12587 +# 35| mu35_12591(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12592(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12587 +# 35| r35_12593(glval) = VariableAddress[x899] : +# 35| r35_12594(glval) = FunctionAddress[~String] : +# 35| v35_12595(void) = Call[~String] : func:r35_12594, this:r35_12593 +# 35| mu35_12596(unknown) = ^CallSideEffect : ~m? +# 35| v35_12597(void) = ^IndirectReadSideEffect[-1] : &:r35_12593, ~m? +# 35| mu35_12598(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12593 +# 35| r35_12599(bool) = Constant[0] : +# 35| v35_12600(void) = ConditionalBranch : r35_12599 #-----| False -> Block 900 #-----| True -> Block 1026 -# 2719| Block 900 -# 2719| r2719_1(glval) = VariableAddress[x900] : -# 2719| mu2719_2(String) = Uninitialized[x900] : &:r2719_1 -# 2719| r2719_3(glval) = FunctionAddress[String] : -# 2719| v2719_4(void) = Call[String] : func:r2719_3, this:r2719_1 -# 2719| mu2719_5(unknown) = ^CallSideEffect : ~m? -# 2719| mu2719_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2719_1 -# 2720| r2720_1(glval) = VariableAddress[x900] : -# 2720| r2720_2(glval) = FunctionAddress[~String] : -# 2720| v2720_3(void) = Call[~String] : func:r2720_2, this:r2720_1 -# 2720| mu2720_4(unknown) = ^CallSideEffect : ~m? -# 2720| v2720_5(void) = ^IndirectReadSideEffect[-1] : &:r2720_1, ~m? -# 2720| mu2720_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2720_1 -# 2720| r2720_7(bool) = Constant[0] : -# 2720| v2720_8(void) = ConditionalBranch : r2720_7 +# 35| Block 900 +# 35| r35_12601(glval) = VariableAddress[x900] : +# 35| mu35_12602(String) = Uninitialized[x900] : &:r35_12601 +# 35| r35_12603(glval) = FunctionAddress[String] : +# 35| v35_12604(void) = Call[String] : func:r35_12603, this:r35_12601 +# 35| mu35_12605(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12606(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12601 +# 35| r35_12607(glval) = VariableAddress[x900] : +# 35| r35_12608(glval) = FunctionAddress[~String] : +# 35| v35_12609(void) = Call[~String] : func:r35_12608, this:r35_12607 +# 35| mu35_12610(unknown) = ^CallSideEffect : ~m? +# 35| v35_12611(void) = ^IndirectReadSideEffect[-1] : &:r35_12607, ~m? +# 35| mu35_12612(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12607 +# 35| r35_12613(bool) = Constant[0] : +# 35| v35_12614(void) = ConditionalBranch : r35_12613 #-----| False -> Block 901 #-----| True -> Block 1026 -# 2722| Block 901 -# 2722| r2722_1(glval) = VariableAddress[x901] : -# 2722| mu2722_2(String) = Uninitialized[x901] : &:r2722_1 -# 2722| r2722_3(glval) = FunctionAddress[String] : -# 2722| v2722_4(void) = Call[String] : func:r2722_3, this:r2722_1 -# 2722| mu2722_5(unknown) = ^CallSideEffect : ~m? -# 2722| mu2722_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2722_1 -# 2723| r2723_1(glval) = VariableAddress[x901] : -# 2723| r2723_2(glval) = FunctionAddress[~String] : -# 2723| v2723_3(void) = Call[~String] : func:r2723_2, this:r2723_1 -# 2723| mu2723_4(unknown) = ^CallSideEffect : ~m? -# 2723| v2723_5(void) = ^IndirectReadSideEffect[-1] : &:r2723_1, ~m? -# 2723| mu2723_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2723_1 -# 2723| r2723_7(bool) = Constant[0] : -# 2723| v2723_8(void) = ConditionalBranch : r2723_7 +# 35| Block 901 +# 35| r35_12615(glval) = VariableAddress[x901] : +# 35| mu35_12616(String) = Uninitialized[x901] : &:r35_12615 +# 35| r35_12617(glval) = FunctionAddress[String] : +# 35| v35_12618(void) = Call[String] : func:r35_12617, this:r35_12615 +# 35| mu35_12619(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12620(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12615 +# 35| r35_12621(glval) = VariableAddress[x901] : +# 35| r35_12622(glval) = FunctionAddress[~String] : +# 35| v35_12623(void) = Call[~String] : func:r35_12622, this:r35_12621 +# 35| mu35_12624(unknown) = ^CallSideEffect : ~m? +# 35| v35_12625(void) = ^IndirectReadSideEffect[-1] : &:r35_12621, ~m? +# 35| mu35_12626(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12621 +# 35| r35_12627(bool) = Constant[0] : +# 35| v35_12628(void) = ConditionalBranch : r35_12627 #-----| False -> Block 902 #-----| True -> Block 1026 -# 2725| Block 902 -# 2725| r2725_1(glval) = VariableAddress[x902] : -# 2725| mu2725_2(String) = Uninitialized[x902] : &:r2725_1 -# 2725| r2725_3(glval) = FunctionAddress[String] : -# 2725| v2725_4(void) = Call[String] : func:r2725_3, this:r2725_1 -# 2725| mu2725_5(unknown) = ^CallSideEffect : ~m? -# 2725| mu2725_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2725_1 -# 2726| r2726_1(glval) = VariableAddress[x902] : -# 2726| r2726_2(glval) = FunctionAddress[~String] : -# 2726| v2726_3(void) = Call[~String] : func:r2726_2, this:r2726_1 -# 2726| mu2726_4(unknown) = ^CallSideEffect : ~m? -# 2726| v2726_5(void) = ^IndirectReadSideEffect[-1] : &:r2726_1, ~m? -# 2726| mu2726_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2726_1 -# 2726| r2726_7(bool) = Constant[0] : -# 2726| v2726_8(void) = ConditionalBranch : r2726_7 +# 35| Block 902 +# 35| r35_12629(glval) = VariableAddress[x902] : +# 35| mu35_12630(String) = Uninitialized[x902] : &:r35_12629 +# 35| r35_12631(glval) = FunctionAddress[String] : +# 35| v35_12632(void) = Call[String] : func:r35_12631, this:r35_12629 +# 35| mu35_12633(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12634(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12629 +# 35| r35_12635(glval) = VariableAddress[x902] : +# 35| r35_12636(glval) = FunctionAddress[~String] : +# 35| v35_12637(void) = Call[~String] : func:r35_12636, this:r35_12635 +# 35| mu35_12638(unknown) = ^CallSideEffect : ~m? +# 35| v35_12639(void) = ^IndirectReadSideEffect[-1] : &:r35_12635, ~m? +# 35| mu35_12640(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12635 +# 35| r35_12641(bool) = Constant[0] : +# 35| v35_12642(void) = ConditionalBranch : r35_12641 #-----| False -> Block 903 #-----| True -> Block 1026 -# 2728| Block 903 -# 2728| r2728_1(glval) = VariableAddress[x903] : -# 2728| mu2728_2(String) = Uninitialized[x903] : &:r2728_1 -# 2728| r2728_3(glval) = FunctionAddress[String] : -# 2728| v2728_4(void) = Call[String] : func:r2728_3, this:r2728_1 -# 2728| mu2728_5(unknown) = ^CallSideEffect : ~m? -# 2728| mu2728_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2728_1 -# 2729| r2729_1(glval) = VariableAddress[x903] : -# 2729| r2729_2(glval) = FunctionAddress[~String] : -# 2729| v2729_3(void) = Call[~String] : func:r2729_2, this:r2729_1 -# 2729| mu2729_4(unknown) = ^CallSideEffect : ~m? -# 2729| v2729_5(void) = ^IndirectReadSideEffect[-1] : &:r2729_1, ~m? -# 2729| mu2729_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2729_1 -# 2729| r2729_7(bool) = Constant[0] : -# 2729| v2729_8(void) = ConditionalBranch : r2729_7 +# 35| Block 903 +# 35| r35_12643(glval) = VariableAddress[x903] : +# 35| mu35_12644(String) = Uninitialized[x903] : &:r35_12643 +# 35| r35_12645(glval) = FunctionAddress[String] : +# 35| v35_12646(void) = Call[String] : func:r35_12645, this:r35_12643 +# 35| mu35_12647(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12648(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12643 +# 35| r35_12649(glval) = VariableAddress[x903] : +# 35| r35_12650(glval) = FunctionAddress[~String] : +# 35| v35_12651(void) = Call[~String] : func:r35_12650, this:r35_12649 +# 35| mu35_12652(unknown) = ^CallSideEffect : ~m? +# 35| v35_12653(void) = ^IndirectReadSideEffect[-1] : &:r35_12649, ~m? +# 35| mu35_12654(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12649 +# 35| r35_12655(bool) = Constant[0] : +# 35| v35_12656(void) = ConditionalBranch : r35_12655 #-----| False -> Block 904 #-----| True -> Block 1026 -# 2731| Block 904 -# 2731| r2731_1(glval) = VariableAddress[x904] : -# 2731| mu2731_2(String) = Uninitialized[x904] : &:r2731_1 -# 2731| r2731_3(glval) = FunctionAddress[String] : -# 2731| v2731_4(void) = Call[String] : func:r2731_3, this:r2731_1 -# 2731| mu2731_5(unknown) = ^CallSideEffect : ~m? -# 2731| mu2731_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2731_1 -# 2732| r2732_1(glval) = VariableAddress[x904] : -# 2732| r2732_2(glval) = FunctionAddress[~String] : -# 2732| v2732_3(void) = Call[~String] : func:r2732_2, this:r2732_1 -# 2732| mu2732_4(unknown) = ^CallSideEffect : ~m? -# 2732| v2732_5(void) = ^IndirectReadSideEffect[-1] : &:r2732_1, ~m? -# 2732| mu2732_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2732_1 -# 2732| r2732_7(bool) = Constant[0] : -# 2732| v2732_8(void) = ConditionalBranch : r2732_7 +# 35| Block 904 +# 35| r35_12657(glval) = VariableAddress[x904] : +# 35| mu35_12658(String) = Uninitialized[x904] : &:r35_12657 +# 35| r35_12659(glval) = FunctionAddress[String] : +# 35| v35_12660(void) = Call[String] : func:r35_12659, this:r35_12657 +# 35| mu35_12661(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12662(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12657 +# 35| r35_12663(glval) = VariableAddress[x904] : +# 35| r35_12664(glval) = FunctionAddress[~String] : +# 35| v35_12665(void) = Call[~String] : func:r35_12664, this:r35_12663 +# 35| mu35_12666(unknown) = ^CallSideEffect : ~m? +# 35| v35_12667(void) = ^IndirectReadSideEffect[-1] : &:r35_12663, ~m? +# 35| mu35_12668(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12663 +# 35| r35_12669(bool) = Constant[0] : +# 35| v35_12670(void) = ConditionalBranch : r35_12669 #-----| False -> Block 905 #-----| True -> Block 1026 -# 2734| Block 905 -# 2734| r2734_1(glval) = VariableAddress[x905] : -# 2734| mu2734_2(String) = Uninitialized[x905] : &:r2734_1 -# 2734| r2734_3(glval) = FunctionAddress[String] : -# 2734| v2734_4(void) = Call[String] : func:r2734_3, this:r2734_1 -# 2734| mu2734_5(unknown) = ^CallSideEffect : ~m? -# 2734| mu2734_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2734_1 -# 2735| r2735_1(glval) = VariableAddress[x905] : -# 2735| r2735_2(glval) = FunctionAddress[~String] : -# 2735| v2735_3(void) = Call[~String] : func:r2735_2, this:r2735_1 -# 2735| mu2735_4(unknown) = ^CallSideEffect : ~m? -# 2735| v2735_5(void) = ^IndirectReadSideEffect[-1] : &:r2735_1, ~m? -# 2735| mu2735_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2735_1 -# 2735| r2735_7(bool) = Constant[0] : -# 2735| v2735_8(void) = ConditionalBranch : r2735_7 +# 35| Block 905 +# 35| r35_12671(glval) = VariableAddress[x905] : +# 35| mu35_12672(String) = Uninitialized[x905] : &:r35_12671 +# 35| r35_12673(glval) = FunctionAddress[String] : +# 35| v35_12674(void) = Call[String] : func:r35_12673, this:r35_12671 +# 35| mu35_12675(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12676(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12671 +# 35| r35_12677(glval) = VariableAddress[x905] : +# 35| r35_12678(glval) = FunctionAddress[~String] : +# 35| v35_12679(void) = Call[~String] : func:r35_12678, this:r35_12677 +# 35| mu35_12680(unknown) = ^CallSideEffect : ~m? +# 35| v35_12681(void) = ^IndirectReadSideEffect[-1] : &:r35_12677, ~m? +# 35| mu35_12682(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12677 +# 35| r35_12683(bool) = Constant[0] : +# 35| v35_12684(void) = ConditionalBranch : r35_12683 #-----| False -> Block 906 #-----| True -> Block 1026 -# 2737| Block 906 -# 2737| r2737_1(glval) = VariableAddress[x906] : -# 2737| mu2737_2(String) = Uninitialized[x906] : &:r2737_1 -# 2737| r2737_3(glval) = FunctionAddress[String] : -# 2737| v2737_4(void) = Call[String] : func:r2737_3, this:r2737_1 -# 2737| mu2737_5(unknown) = ^CallSideEffect : ~m? -# 2737| mu2737_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2737_1 -# 2738| r2738_1(glval) = VariableAddress[x906] : -# 2738| r2738_2(glval) = FunctionAddress[~String] : -# 2738| v2738_3(void) = Call[~String] : func:r2738_2, this:r2738_1 -# 2738| mu2738_4(unknown) = ^CallSideEffect : ~m? -# 2738| v2738_5(void) = ^IndirectReadSideEffect[-1] : &:r2738_1, ~m? -# 2738| mu2738_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2738_1 -# 2738| r2738_7(bool) = Constant[0] : -# 2738| v2738_8(void) = ConditionalBranch : r2738_7 +# 35| Block 906 +# 35| r35_12685(glval) = VariableAddress[x906] : +# 35| mu35_12686(String) = Uninitialized[x906] : &:r35_12685 +# 35| r35_12687(glval) = FunctionAddress[String] : +# 35| v35_12688(void) = Call[String] : func:r35_12687, this:r35_12685 +# 35| mu35_12689(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12690(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12685 +# 35| r35_12691(glval) = VariableAddress[x906] : +# 35| r35_12692(glval) = FunctionAddress[~String] : +# 35| v35_12693(void) = Call[~String] : func:r35_12692, this:r35_12691 +# 35| mu35_12694(unknown) = ^CallSideEffect : ~m? +# 35| v35_12695(void) = ^IndirectReadSideEffect[-1] : &:r35_12691, ~m? +# 35| mu35_12696(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12691 +# 35| r35_12697(bool) = Constant[0] : +# 35| v35_12698(void) = ConditionalBranch : r35_12697 #-----| False -> Block 907 #-----| True -> Block 1026 -# 2740| Block 907 -# 2740| r2740_1(glval) = VariableAddress[x907] : -# 2740| mu2740_2(String) = Uninitialized[x907] : &:r2740_1 -# 2740| r2740_3(glval) = FunctionAddress[String] : -# 2740| v2740_4(void) = Call[String] : func:r2740_3, this:r2740_1 -# 2740| mu2740_5(unknown) = ^CallSideEffect : ~m? -# 2740| mu2740_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2740_1 -# 2741| r2741_1(glval) = VariableAddress[x907] : -# 2741| r2741_2(glval) = FunctionAddress[~String] : -# 2741| v2741_3(void) = Call[~String] : func:r2741_2, this:r2741_1 -# 2741| mu2741_4(unknown) = ^CallSideEffect : ~m? -# 2741| v2741_5(void) = ^IndirectReadSideEffect[-1] : &:r2741_1, ~m? -# 2741| mu2741_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2741_1 -# 2741| r2741_7(bool) = Constant[0] : -# 2741| v2741_8(void) = ConditionalBranch : r2741_7 +# 35| Block 907 +# 35| r35_12699(glval) = VariableAddress[x907] : +# 35| mu35_12700(String) = Uninitialized[x907] : &:r35_12699 +# 35| r35_12701(glval) = FunctionAddress[String] : +# 35| v35_12702(void) = Call[String] : func:r35_12701, this:r35_12699 +# 35| mu35_12703(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12704(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12699 +# 35| r35_12705(glval) = VariableAddress[x907] : +# 35| r35_12706(glval) = FunctionAddress[~String] : +# 35| v35_12707(void) = Call[~String] : func:r35_12706, this:r35_12705 +# 35| mu35_12708(unknown) = ^CallSideEffect : ~m? +# 35| v35_12709(void) = ^IndirectReadSideEffect[-1] : &:r35_12705, ~m? +# 35| mu35_12710(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12705 +# 35| r35_12711(bool) = Constant[0] : +# 35| v35_12712(void) = ConditionalBranch : r35_12711 #-----| False -> Block 908 #-----| True -> Block 1026 -# 2743| Block 908 -# 2743| r2743_1(glval) = VariableAddress[x908] : -# 2743| mu2743_2(String) = Uninitialized[x908] : &:r2743_1 -# 2743| r2743_3(glval) = FunctionAddress[String] : -# 2743| v2743_4(void) = Call[String] : func:r2743_3, this:r2743_1 -# 2743| mu2743_5(unknown) = ^CallSideEffect : ~m? -# 2743| mu2743_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2743_1 -# 2744| r2744_1(glval) = VariableAddress[x908] : -# 2744| r2744_2(glval) = FunctionAddress[~String] : -# 2744| v2744_3(void) = Call[~String] : func:r2744_2, this:r2744_1 -# 2744| mu2744_4(unknown) = ^CallSideEffect : ~m? -# 2744| v2744_5(void) = ^IndirectReadSideEffect[-1] : &:r2744_1, ~m? -# 2744| mu2744_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2744_1 -# 2744| r2744_7(bool) = Constant[0] : -# 2744| v2744_8(void) = ConditionalBranch : r2744_7 +# 35| Block 908 +# 35| r35_12713(glval) = VariableAddress[x908] : +# 35| mu35_12714(String) = Uninitialized[x908] : &:r35_12713 +# 35| r35_12715(glval) = FunctionAddress[String] : +# 35| v35_12716(void) = Call[String] : func:r35_12715, this:r35_12713 +# 35| mu35_12717(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12718(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12713 +# 35| r35_12719(glval) = VariableAddress[x908] : +# 35| r35_12720(glval) = FunctionAddress[~String] : +# 35| v35_12721(void) = Call[~String] : func:r35_12720, this:r35_12719 +# 35| mu35_12722(unknown) = ^CallSideEffect : ~m? +# 35| v35_12723(void) = ^IndirectReadSideEffect[-1] : &:r35_12719, ~m? +# 35| mu35_12724(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12719 +# 35| r35_12725(bool) = Constant[0] : +# 35| v35_12726(void) = ConditionalBranch : r35_12725 #-----| False -> Block 909 #-----| True -> Block 1026 -# 2746| Block 909 -# 2746| r2746_1(glval) = VariableAddress[x909] : -# 2746| mu2746_2(String) = Uninitialized[x909] : &:r2746_1 -# 2746| r2746_3(glval) = FunctionAddress[String] : -# 2746| v2746_4(void) = Call[String] : func:r2746_3, this:r2746_1 -# 2746| mu2746_5(unknown) = ^CallSideEffect : ~m? -# 2746| mu2746_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2746_1 -# 2747| r2747_1(glval) = VariableAddress[x909] : -# 2747| r2747_2(glval) = FunctionAddress[~String] : -# 2747| v2747_3(void) = Call[~String] : func:r2747_2, this:r2747_1 -# 2747| mu2747_4(unknown) = ^CallSideEffect : ~m? -# 2747| v2747_5(void) = ^IndirectReadSideEffect[-1] : &:r2747_1, ~m? -# 2747| mu2747_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2747_1 -# 2747| r2747_7(bool) = Constant[0] : -# 2747| v2747_8(void) = ConditionalBranch : r2747_7 +# 35| Block 909 +# 35| r35_12727(glval) = VariableAddress[x909] : +# 35| mu35_12728(String) = Uninitialized[x909] : &:r35_12727 +# 35| r35_12729(glval) = FunctionAddress[String] : +# 35| v35_12730(void) = Call[String] : func:r35_12729, this:r35_12727 +# 35| mu35_12731(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12732(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12727 +# 35| r35_12733(glval) = VariableAddress[x909] : +# 35| r35_12734(glval) = FunctionAddress[~String] : +# 35| v35_12735(void) = Call[~String] : func:r35_12734, this:r35_12733 +# 35| mu35_12736(unknown) = ^CallSideEffect : ~m? +# 35| v35_12737(void) = ^IndirectReadSideEffect[-1] : &:r35_12733, ~m? +# 35| mu35_12738(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12733 +# 35| r35_12739(bool) = Constant[0] : +# 35| v35_12740(void) = ConditionalBranch : r35_12739 #-----| False -> Block 910 #-----| True -> Block 1026 -# 2749| Block 910 -# 2749| r2749_1(glval) = VariableAddress[x910] : -# 2749| mu2749_2(String) = Uninitialized[x910] : &:r2749_1 -# 2749| r2749_3(glval) = FunctionAddress[String] : -# 2749| v2749_4(void) = Call[String] : func:r2749_3, this:r2749_1 -# 2749| mu2749_5(unknown) = ^CallSideEffect : ~m? -# 2749| mu2749_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2749_1 -# 2750| r2750_1(glval) = VariableAddress[x910] : -# 2750| r2750_2(glval) = FunctionAddress[~String] : -# 2750| v2750_3(void) = Call[~String] : func:r2750_2, this:r2750_1 -# 2750| mu2750_4(unknown) = ^CallSideEffect : ~m? -# 2750| v2750_5(void) = ^IndirectReadSideEffect[-1] : &:r2750_1, ~m? -# 2750| mu2750_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2750_1 -# 2750| r2750_7(bool) = Constant[0] : -# 2750| v2750_8(void) = ConditionalBranch : r2750_7 +# 35| Block 910 +# 35| r35_12741(glval) = VariableAddress[x910] : +# 35| mu35_12742(String) = Uninitialized[x910] : &:r35_12741 +# 35| r35_12743(glval) = FunctionAddress[String] : +# 35| v35_12744(void) = Call[String] : func:r35_12743, this:r35_12741 +# 35| mu35_12745(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12746(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12741 +# 35| r35_12747(glval) = VariableAddress[x910] : +# 35| r35_12748(glval) = FunctionAddress[~String] : +# 35| v35_12749(void) = Call[~String] : func:r35_12748, this:r35_12747 +# 35| mu35_12750(unknown) = ^CallSideEffect : ~m? +# 35| v35_12751(void) = ^IndirectReadSideEffect[-1] : &:r35_12747, ~m? +# 35| mu35_12752(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12747 +# 35| r35_12753(bool) = Constant[0] : +# 35| v35_12754(void) = ConditionalBranch : r35_12753 #-----| False -> Block 911 #-----| True -> Block 1026 -# 2752| Block 911 -# 2752| r2752_1(glval) = VariableAddress[x911] : -# 2752| mu2752_2(String) = Uninitialized[x911] : &:r2752_1 -# 2752| r2752_3(glval) = FunctionAddress[String] : -# 2752| v2752_4(void) = Call[String] : func:r2752_3, this:r2752_1 -# 2752| mu2752_5(unknown) = ^CallSideEffect : ~m? -# 2752| mu2752_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2752_1 -# 2753| r2753_1(glval) = VariableAddress[x911] : -# 2753| r2753_2(glval) = FunctionAddress[~String] : -# 2753| v2753_3(void) = Call[~String] : func:r2753_2, this:r2753_1 -# 2753| mu2753_4(unknown) = ^CallSideEffect : ~m? -# 2753| v2753_5(void) = ^IndirectReadSideEffect[-1] : &:r2753_1, ~m? -# 2753| mu2753_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2753_1 -# 2753| r2753_7(bool) = Constant[0] : -# 2753| v2753_8(void) = ConditionalBranch : r2753_7 +# 35| Block 911 +# 35| r35_12755(glval) = VariableAddress[x911] : +# 35| mu35_12756(String) = Uninitialized[x911] : &:r35_12755 +# 35| r35_12757(glval) = FunctionAddress[String] : +# 35| v35_12758(void) = Call[String] : func:r35_12757, this:r35_12755 +# 35| mu35_12759(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12760(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12755 +# 35| r35_12761(glval) = VariableAddress[x911] : +# 35| r35_12762(glval) = FunctionAddress[~String] : +# 35| v35_12763(void) = Call[~String] : func:r35_12762, this:r35_12761 +# 35| mu35_12764(unknown) = ^CallSideEffect : ~m? +# 35| v35_12765(void) = ^IndirectReadSideEffect[-1] : &:r35_12761, ~m? +# 35| mu35_12766(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12761 +# 35| r35_12767(bool) = Constant[0] : +# 35| v35_12768(void) = ConditionalBranch : r35_12767 #-----| False -> Block 912 #-----| True -> Block 1026 -# 2755| Block 912 -# 2755| r2755_1(glval) = VariableAddress[x912] : -# 2755| mu2755_2(String) = Uninitialized[x912] : &:r2755_1 -# 2755| r2755_3(glval) = FunctionAddress[String] : -# 2755| v2755_4(void) = Call[String] : func:r2755_3, this:r2755_1 -# 2755| mu2755_5(unknown) = ^CallSideEffect : ~m? -# 2755| mu2755_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2755_1 -# 2756| r2756_1(glval) = VariableAddress[x912] : -# 2756| r2756_2(glval) = FunctionAddress[~String] : -# 2756| v2756_3(void) = Call[~String] : func:r2756_2, this:r2756_1 -# 2756| mu2756_4(unknown) = ^CallSideEffect : ~m? -# 2756| v2756_5(void) = ^IndirectReadSideEffect[-1] : &:r2756_1, ~m? -# 2756| mu2756_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2756_1 -# 2756| r2756_7(bool) = Constant[0] : -# 2756| v2756_8(void) = ConditionalBranch : r2756_7 +# 35| Block 912 +# 35| r35_12769(glval) = VariableAddress[x912] : +# 35| mu35_12770(String) = Uninitialized[x912] : &:r35_12769 +# 35| r35_12771(glval) = FunctionAddress[String] : +# 35| v35_12772(void) = Call[String] : func:r35_12771, this:r35_12769 +# 35| mu35_12773(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12774(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12769 +# 35| r35_12775(glval) = VariableAddress[x912] : +# 35| r35_12776(glval) = FunctionAddress[~String] : +# 35| v35_12777(void) = Call[~String] : func:r35_12776, this:r35_12775 +# 35| mu35_12778(unknown) = ^CallSideEffect : ~m? +# 35| v35_12779(void) = ^IndirectReadSideEffect[-1] : &:r35_12775, ~m? +# 35| mu35_12780(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12775 +# 35| r35_12781(bool) = Constant[0] : +# 35| v35_12782(void) = ConditionalBranch : r35_12781 #-----| False -> Block 913 #-----| True -> Block 1026 -# 2758| Block 913 -# 2758| r2758_1(glval) = VariableAddress[x913] : -# 2758| mu2758_2(String) = Uninitialized[x913] : &:r2758_1 -# 2758| r2758_3(glval) = FunctionAddress[String] : -# 2758| v2758_4(void) = Call[String] : func:r2758_3, this:r2758_1 -# 2758| mu2758_5(unknown) = ^CallSideEffect : ~m? -# 2758| mu2758_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2758_1 -# 2759| r2759_1(glval) = VariableAddress[x913] : -# 2759| r2759_2(glval) = FunctionAddress[~String] : -# 2759| v2759_3(void) = Call[~String] : func:r2759_2, this:r2759_1 -# 2759| mu2759_4(unknown) = ^CallSideEffect : ~m? -# 2759| v2759_5(void) = ^IndirectReadSideEffect[-1] : &:r2759_1, ~m? -# 2759| mu2759_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2759_1 -# 2759| r2759_7(bool) = Constant[0] : -# 2759| v2759_8(void) = ConditionalBranch : r2759_7 +# 35| Block 913 +# 35| r35_12783(glval) = VariableAddress[x913] : +# 35| mu35_12784(String) = Uninitialized[x913] : &:r35_12783 +# 35| r35_12785(glval) = FunctionAddress[String] : +# 35| v35_12786(void) = Call[String] : func:r35_12785, this:r35_12783 +# 35| mu35_12787(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12788(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12783 +# 35| r35_12789(glval) = VariableAddress[x913] : +# 35| r35_12790(glval) = FunctionAddress[~String] : +# 35| v35_12791(void) = Call[~String] : func:r35_12790, this:r35_12789 +# 35| mu35_12792(unknown) = ^CallSideEffect : ~m? +# 35| v35_12793(void) = ^IndirectReadSideEffect[-1] : &:r35_12789, ~m? +# 35| mu35_12794(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12789 +# 35| r35_12795(bool) = Constant[0] : +# 35| v35_12796(void) = ConditionalBranch : r35_12795 #-----| False -> Block 914 #-----| True -> Block 1026 -# 2761| Block 914 -# 2761| r2761_1(glval) = VariableAddress[x914] : -# 2761| mu2761_2(String) = Uninitialized[x914] : &:r2761_1 -# 2761| r2761_3(glval) = FunctionAddress[String] : -# 2761| v2761_4(void) = Call[String] : func:r2761_3, this:r2761_1 -# 2761| mu2761_5(unknown) = ^CallSideEffect : ~m? -# 2761| mu2761_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2761_1 -# 2762| r2762_1(glval) = VariableAddress[x914] : -# 2762| r2762_2(glval) = FunctionAddress[~String] : -# 2762| v2762_3(void) = Call[~String] : func:r2762_2, this:r2762_1 -# 2762| mu2762_4(unknown) = ^CallSideEffect : ~m? -# 2762| v2762_5(void) = ^IndirectReadSideEffect[-1] : &:r2762_1, ~m? -# 2762| mu2762_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2762_1 -# 2762| r2762_7(bool) = Constant[0] : -# 2762| v2762_8(void) = ConditionalBranch : r2762_7 +# 35| Block 914 +# 35| r35_12797(glval) = VariableAddress[x914] : +# 35| mu35_12798(String) = Uninitialized[x914] : &:r35_12797 +# 35| r35_12799(glval) = FunctionAddress[String] : +# 35| v35_12800(void) = Call[String] : func:r35_12799, this:r35_12797 +# 35| mu35_12801(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12802(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12797 +# 35| r35_12803(glval) = VariableAddress[x914] : +# 35| r35_12804(glval) = FunctionAddress[~String] : +# 35| v35_12805(void) = Call[~String] : func:r35_12804, this:r35_12803 +# 35| mu35_12806(unknown) = ^CallSideEffect : ~m? +# 35| v35_12807(void) = ^IndirectReadSideEffect[-1] : &:r35_12803, ~m? +# 35| mu35_12808(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12803 +# 35| r35_12809(bool) = Constant[0] : +# 35| v35_12810(void) = ConditionalBranch : r35_12809 #-----| False -> Block 915 #-----| True -> Block 1026 -# 2764| Block 915 -# 2764| r2764_1(glval) = VariableAddress[x915] : -# 2764| mu2764_2(String) = Uninitialized[x915] : &:r2764_1 -# 2764| r2764_3(glval) = FunctionAddress[String] : -# 2764| v2764_4(void) = Call[String] : func:r2764_3, this:r2764_1 -# 2764| mu2764_5(unknown) = ^CallSideEffect : ~m? -# 2764| mu2764_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2764_1 -# 2765| r2765_1(glval) = VariableAddress[x915] : -# 2765| r2765_2(glval) = FunctionAddress[~String] : -# 2765| v2765_3(void) = Call[~String] : func:r2765_2, this:r2765_1 -# 2765| mu2765_4(unknown) = ^CallSideEffect : ~m? -# 2765| v2765_5(void) = ^IndirectReadSideEffect[-1] : &:r2765_1, ~m? -# 2765| mu2765_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2765_1 -# 2765| r2765_7(bool) = Constant[0] : -# 2765| v2765_8(void) = ConditionalBranch : r2765_7 +# 35| Block 915 +# 35| r35_12811(glval) = VariableAddress[x915] : +# 35| mu35_12812(String) = Uninitialized[x915] : &:r35_12811 +# 35| r35_12813(glval) = FunctionAddress[String] : +# 35| v35_12814(void) = Call[String] : func:r35_12813, this:r35_12811 +# 35| mu35_12815(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12816(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12811 +# 35| r35_12817(glval) = VariableAddress[x915] : +# 35| r35_12818(glval) = FunctionAddress[~String] : +# 35| v35_12819(void) = Call[~String] : func:r35_12818, this:r35_12817 +# 35| mu35_12820(unknown) = ^CallSideEffect : ~m? +# 35| v35_12821(void) = ^IndirectReadSideEffect[-1] : &:r35_12817, ~m? +# 35| mu35_12822(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12817 +# 35| r35_12823(bool) = Constant[0] : +# 35| v35_12824(void) = ConditionalBranch : r35_12823 #-----| False -> Block 916 #-----| True -> Block 1026 -# 2767| Block 916 -# 2767| r2767_1(glval) = VariableAddress[x916] : -# 2767| mu2767_2(String) = Uninitialized[x916] : &:r2767_1 -# 2767| r2767_3(glval) = FunctionAddress[String] : -# 2767| v2767_4(void) = Call[String] : func:r2767_3, this:r2767_1 -# 2767| mu2767_5(unknown) = ^CallSideEffect : ~m? -# 2767| mu2767_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2767_1 -# 2768| r2768_1(glval) = VariableAddress[x916] : -# 2768| r2768_2(glval) = FunctionAddress[~String] : -# 2768| v2768_3(void) = Call[~String] : func:r2768_2, this:r2768_1 -# 2768| mu2768_4(unknown) = ^CallSideEffect : ~m? -# 2768| v2768_5(void) = ^IndirectReadSideEffect[-1] : &:r2768_1, ~m? -# 2768| mu2768_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2768_1 -# 2768| r2768_7(bool) = Constant[0] : -# 2768| v2768_8(void) = ConditionalBranch : r2768_7 +# 35| Block 916 +# 35| r35_12825(glval) = VariableAddress[x916] : +# 35| mu35_12826(String) = Uninitialized[x916] : &:r35_12825 +# 35| r35_12827(glval) = FunctionAddress[String] : +# 35| v35_12828(void) = Call[String] : func:r35_12827, this:r35_12825 +# 35| mu35_12829(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12830(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12825 +# 35| r35_12831(glval) = VariableAddress[x916] : +# 35| r35_12832(glval) = FunctionAddress[~String] : +# 35| v35_12833(void) = Call[~String] : func:r35_12832, this:r35_12831 +# 35| mu35_12834(unknown) = ^CallSideEffect : ~m? +# 35| v35_12835(void) = ^IndirectReadSideEffect[-1] : &:r35_12831, ~m? +# 35| mu35_12836(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12831 +# 35| r35_12837(bool) = Constant[0] : +# 35| v35_12838(void) = ConditionalBranch : r35_12837 #-----| False -> Block 917 #-----| True -> Block 1026 -# 2770| Block 917 -# 2770| r2770_1(glval) = VariableAddress[x917] : -# 2770| mu2770_2(String) = Uninitialized[x917] : &:r2770_1 -# 2770| r2770_3(glval) = FunctionAddress[String] : -# 2770| v2770_4(void) = Call[String] : func:r2770_3, this:r2770_1 -# 2770| mu2770_5(unknown) = ^CallSideEffect : ~m? -# 2770| mu2770_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2770_1 -# 2771| r2771_1(glval) = VariableAddress[x917] : -# 2771| r2771_2(glval) = FunctionAddress[~String] : -# 2771| v2771_3(void) = Call[~String] : func:r2771_2, this:r2771_1 -# 2771| mu2771_4(unknown) = ^CallSideEffect : ~m? -# 2771| v2771_5(void) = ^IndirectReadSideEffect[-1] : &:r2771_1, ~m? -# 2771| mu2771_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2771_1 -# 2771| r2771_7(bool) = Constant[0] : -# 2771| v2771_8(void) = ConditionalBranch : r2771_7 +# 35| Block 917 +# 35| r35_12839(glval) = VariableAddress[x917] : +# 35| mu35_12840(String) = Uninitialized[x917] : &:r35_12839 +# 35| r35_12841(glval) = FunctionAddress[String] : +# 35| v35_12842(void) = Call[String] : func:r35_12841, this:r35_12839 +# 35| mu35_12843(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12844(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12839 +# 35| r35_12845(glval) = VariableAddress[x917] : +# 35| r35_12846(glval) = FunctionAddress[~String] : +# 35| v35_12847(void) = Call[~String] : func:r35_12846, this:r35_12845 +# 35| mu35_12848(unknown) = ^CallSideEffect : ~m? +# 35| v35_12849(void) = ^IndirectReadSideEffect[-1] : &:r35_12845, ~m? +# 35| mu35_12850(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12845 +# 35| r35_12851(bool) = Constant[0] : +# 35| v35_12852(void) = ConditionalBranch : r35_12851 #-----| False -> Block 918 #-----| True -> Block 1026 -# 2773| Block 918 -# 2773| r2773_1(glval) = VariableAddress[x918] : -# 2773| mu2773_2(String) = Uninitialized[x918] : &:r2773_1 -# 2773| r2773_3(glval) = FunctionAddress[String] : -# 2773| v2773_4(void) = Call[String] : func:r2773_3, this:r2773_1 -# 2773| mu2773_5(unknown) = ^CallSideEffect : ~m? -# 2773| mu2773_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2773_1 -# 2774| r2774_1(glval) = VariableAddress[x918] : -# 2774| r2774_2(glval) = FunctionAddress[~String] : -# 2774| v2774_3(void) = Call[~String] : func:r2774_2, this:r2774_1 -# 2774| mu2774_4(unknown) = ^CallSideEffect : ~m? -# 2774| v2774_5(void) = ^IndirectReadSideEffect[-1] : &:r2774_1, ~m? -# 2774| mu2774_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2774_1 -# 2774| r2774_7(bool) = Constant[0] : -# 2774| v2774_8(void) = ConditionalBranch : r2774_7 +# 35| Block 918 +# 35| r35_12853(glval) = VariableAddress[x918] : +# 35| mu35_12854(String) = Uninitialized[x918] : &:r35_12853 +# 35| r35_12855(glval) = FunctionAddress[String] : +# 35| v35_12856(void) = Call[String] : func:r35_12855, this:r35_12853 +# 35| mu35_12857(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12858(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12853 +# 35| r35_12859(glval) = VariableAddress[x918] : +# 35| r35_12860(glval) = FunctionAddress[~String] : +# 35| v35_12861(void) = Call[~String] : func:r35_12860, this:r35_12859 +# 35| mu35_12862(unknown) = ^CallSideEffect : ~m? +# 35| v35_12863(void) = ^IndirectReadSideEffect[-1] : &:r35_12859, ~m? +# 35| mu35_12864(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12859 +# 35| r35_12865(bool) = Constant[0] : +# 35| v35_12866(void) = ConditionalBranch : r35_12865 #-----| False -> Block 919 #-----| True -> Block 1026 -# 2776| Block 919 -# 2776| r2776_1(glval) = VariableAddress[x919] : -# 2776| mu2776_2(String) = Uninitialized[x919] : &:r2776_1 -# 2776| r2776_3(glval) = FunctionAddress[String] : -# 2776| v2776_4(void) = Call[String] : func:r2776_3, this:r2776_1 -# 2776| mu2776_5(unknown) = ^CallSideEffect : ~m? -# 2776| mu2776_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2776_1 -# 2777| r2777_1(glval) = VariableAddress[x919] : -# 2777| r2777_2(glval) = FunctionAddress[~String] : -# 2777| v2777_3(void) = Call[~String] : func:r2777_2, this:r2777_1 -# 2777| mu2777_4(unknown) = ^CallSideEffect : ~m? -# 2777| v2777_5(void) = ^IndirectReadSideEffect[-1] : &:r2777_1, ~m? -# 2777| mu2777_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2777_1 -# 2777| r2777_7(bool) = Constant[0] : -# 2777| v2777_8(void) = ConditionalBranch : r2777_7 +# 35| Block 919 +# 35| r35_12867(glval) = VariableAddress[x919] : +# 35| mu35_12868(String) = Uninitialized[x919] : &:r35_12867 +# 35| r35_12869(glval) = FunctionAddress[String] : +# 35| v35_12870(void) = Call[String] : func:r35_12869, this:r35_12867 +# 35| mu35_12871(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12872(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12867 +# 35| r35_12873(glval) = VariableAddress[x919] : +# 35| r35_12874(glval) = FunctionAddress[~String] : +# 35| v35_12875(void) = Call[~String] : func:r35_12874, this:r35_12873 +# 35| mu35_12876(unknown) = ^CallSideEffect : ~m? +# 35| v35_12877(void) = ^IndirectReadSideEffect[-1] : &:r35_12873, ~m? +# 35| mu35_12878(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12873 +# 35| r35_12879(bool) = Constant[0] : +# 35| v35_12880(void) = ConditionalBranch : r35_12879 #-----| False -> Block 920 #-----| True -> Block 1026 -# 2779| Block 920 -# 2779| r2779_1(glval) = VariableAddress[x920] : -# 2779| mu2779_2(String) = Uninitialized[x920] : &:r2779_1 -# 2779| r2779_3(glval) = FunctionAddress[String] : -# 2779| v2779_4(void) = Call[String] : func:r2779_3, this:r2779_1 -# 2779| mu2779_5(unknown) = ^CallSideEffect : ~m? -# 2779| mu2779_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2779_1 -# 2780| r2780_1(glval) = VariableAddress[x920] : -# 2780| r2780_2(glval) = FunctionAddress[~String] : -# 2780| v2780_3(void) = Call[~String] : func:r2780_2, this:r2780_1 -# 2780| mu2780_4(unknown) = ^CallSideEffect : ~m? -# 2780| v2780_5(void) = ^IndirectReadSideEffect[-1] : &:r2780_1, ~m? -# 2780| mu2780_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2780_1 -# 2780| r2780_7(bool) = Constant[0] : -# 2780| v2780_8(void) = ConditionalBranch : r2780_7 +# 35| Block 920 +# 35| r35_12881(glval) = VariableAddress[x920] : +# 35| mu35_12882(String) = Uninitialized[x920] : &:r35_12881 +# 35| r35_12883(glval) = FunctionAddress[String] : +# 35| v35_12884(void) = Call[String] : func:r35_12883, this:r35_12881 +# 35| mu35_12885(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12886(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12881 +# 35| r35_12887(glval) = VariableAddress[x920] : +# 35| r35_12888(glval) = FunctionAddress[~String] : +# 35| v35_12889(void) = Call[~String] : func:r35_12888, this:r35_12887 +# 35| mu35_12890(unknown) = ^CallSideEffect : ~m? +# 35| v35_12891(void) = ^IndirectReadSideEffect[-1] : &:r35_12887, ~m? +# 35| mu35_12892(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12887 +# 35| r35_12893(bool) = Constant[0] : +# 35| v35_12894(void) = ConditionalBranch : r35_12893 #-----| False -> Block 921 #-----| True -> Block 1026 -# 2782| Block 921 -# 2782| r2782_1(glval) = VariableAddress[x921] : -# 2782| mu2782_2(String) = Uninitialized[x921] : &:r2782_1 -# 2782| r2782_3(glval) = FunctionAddress[String] : -# 2782| v2782_4(void) = Call[String] : func:r2782_3, this:r2782_1 -# 2782| mu2782_5(unknown) = ^CallSideEffect : ~m? -# 2782| mu2782_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2782_1 -# 2783| r2783_1(glval) = VariableAddress[x921] : -# 2783| r2783_2(glval) = FunctionAddress[~String] : -# 2783| v2783_3(void) = Call[~String] : func:r2783_2, this:r2783_1 -# 2783| mu2783_4(unknown) = ^CallSideEffect : ~m? -# 2783| v2783_5(void) = ^IndirectReadSideEffect[-1] : &:r2783_1, ~m? -# 2783| mu2783_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2783_1 -# 2783| r2783_7(bool) = Constant[0] : -# 2783| v2783_8(void) = ConditionalBranch : r2783_7 +# 35| Block 921 +# 35| r35_12895(glval) = VariableAddress[x921] : +# 35| mu35_12896(String) = Uninitialized[x921] : &:r35_12895 +# 35| r35_12897(glval) = FunctionAddress[String] : +# 35| v35_12898(void) = Call[String] : func:r35_12897, this:r35_12895 +# 35| mu35_12899(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12900(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12895 +# 35| r35_12901(glval) = VariableAddress[x921] : +# 35| r35_12902(glval) = FunctionAddress[~String] : +# 35| v35_12903(void) = Call[~String] : func:r35_12902, this:r35_12901 +# 35| mu35_12904(unknown) = ^CallSideEffect : ~m? +# 35| v35_12905(void) = ^IndirectReadSideEffect[-1] : &:r35_12901, ~m? +# 35| mu35_12906(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12901 +# 35| r35_12907(bool) = Constant[0] : +# 35| v35_12908(void) = ConditionalBranch : r35_12907 #-----| False -> Block 922 #-----| True -> Block 1026 -# 2785| Block 922 -# 2785| r2785_1(glval) = VariableAddress[x922] : -# 2785| mu2785_2(String) = Uninitialized[x922] : &:r2785_1 -# 2785| r2785_3(glval) = FunctionAddress[String] : -# 2785| v2785_4(void) = Call[String] : func:r2785_3, this:r2785_1 -# 2785| mu2785_5(unknown) = ^CallSideEffect : ~m? -# 2785| mu2785_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2785_1 -# 2786| r2786_1(glval) = VariableAddress[x922] : -# 2786| r2786_2(glval) = FunctionAddress[~String] : -# 2786| v2786_3(void) = Call[~String] : func:r2786_2, this:r2786_1 -# 2786| mu2786_4(unknown) = ^CallSideEffect : ~m? -# 2786| v2786_5(void) = ^IndirectReadSideEffect[-1] : &:r2786_1, ~m? -# 2786| mu2786_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2786_1 -# 2786| r2786_7(bool) = Constant[0] : -# 2786| v2786_8(void) = ConditionalBranch : r2786_7 +# 35| Block 922 +# 35| r35_12909(glval) = VariableAddress[x922] : +# 35| mu35_12910(String) = Uninitialized[x922] : &:r35_12909 +# 35| r35_12911(glval) = FunctionAddress[String] : +# 35| v35_12912(void) = Call[String] : func:r35_12911, this:r35_12909 +# 35| mu35_12913(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12914(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12909 +# 35| r35_12915(glval) = VariableAddress[x922] : +# 35| r35_12916(glval) = FunctionAddress[~String] : +# 35| v35_12917(void) = Call[~String] : func:r35_12916, this:r35_12915 +# 35| mu35_12918(unknown) = ^CallSideEffect : ~m? +# 35| v35_12919(void) = ^IndirectReadSideEffect[-1] : &:r35_12915, ~m? +# 35| mu35_12920(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12915 +# 35| r35_12921(bool) = Constant[0] : +# 35| v35_12922(void) = ConditionalBranch : r35_12921 #-----| False -> Block 923 #-----| True -> Block 1026 -# 2788| Block 923 -# 2788| r2788_1(glval) = VariableAddress[x923] : -# 2788| mu2788_2(String) = Uninitialized[x923] : &:r2788_1 -# 2788| r2788_3(glval) = FunctionAddress[String] : -# 2788| v2788_4(void) = Call[String] : func:r2788_3, this:r2788_1 -# 2788| mu2788_5(unknown) = ^CallSideEffect : ~m? -# 2788| mu2788_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2788_1 -# 2789| r2789_1(glval) = VariableAddress[x923] : -# 2789| r2789_2(glval) = FunctionAddress[~String] : -# 2789| v2789_3(void) = Call[~String] : func:r2789_2, this:r2789_1 -# 2789| mu2789_4(unknown) = ^CallSideEffect : ~m? -# 2789| v2789_5(void) = ^IndirectReadSideEffect[-1] : &:r2789_1, ~m? -# 2789| mu2789_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2789_1 -# 2789| r2789_7(bool) = Constant[0] : -# 2789| v2789_8(void) = ConditionalBranch : r2789_7 +# 35| Block 923 +# 35| r35_12923(glval) = VariableAddress[x923] : +# 35| mu35_12924(String) = Uninitialized[x923] : &:r35_12923 +# 35| r35_12925(glval) = FunctionAddress[String] : +# 35| v35_12926(void) = Call[String] : func:r35_12925, this:r35_12923 +# 35| mu35_12927(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12928(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12923 +# 35| r35_12929(glval) = VariableAddress[x923] : +# 35| r35_12930(glval) = FunctionAddress[~String] : +# 35| v35_12931(void) = Call[~String] : func:r35_12930, this:r35_12929 +# 35| mu35_12932(unknown) = ^CallSideEffect : ~m? +# 35| v35_12933(void) = ^IndirectReadSideEffect[-1] : &:r35_12929, ~m? +# 35| mu35_12934(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12929 +# 35| r35_12935(bool) = Constant[0] : +# 35| v35_12936(void) = ConditionalBranch : r35_12935 #-----| False -> Block 924 #-----| True -> Block 1026 -# 2791| Block 924 -# 2791| r2791_1(glval) = VariableAddress[x924] : -# 2791| mu2791_2(String) = Uninitialized[x924] : &:r2791_1 -# 2791| r2791_3(glval) = FunctionAddress[String] : -# 2791| v2791_4(void) = Call[String] : func:r2791_3, this:r2791_1 -# 2791| mu2791_5(unknown) = ^CallSideEffect : ~m? -# 2791| mu2791_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2791_1 -# 2792| r2792_1(glval) = VariableAddress[x924] : -# 2792| r2792_2(glval) = FunctionAddress[~String] : -# 2792| v2792_3(void) = Call[~String] : func:r2792_2, this:r2792_1 -# 2792| mu2792_4(unknown) = ^CallSideEffect : ~m? -# 2792| v2792_5(void) = ^IndirectReadSideEffect[-1] : &:r2792_1, ~m? -# 2792| mu2792_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2792_1 -# 2792| r2792_7(bool) = Constant[0] : -# 2792| v2792_8(void) = ConditionalBranch : r2792_7 +# 35| Block 924 +# 35| r35_12937(glval) = VariableAddress[x924] : +# 35| mu35_12938(String) = Uninitialized[x924] : &:r35_12937 +# 35| r35_12939(glval) = FunctionAddress[String] : +# 35| v35_12940(void) = Call[String] : func:r35_12939, this:r35_12937 +# 35| mu35_12941(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12942(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12937 +# 35| r35_12943(glval) = VariableAddress[x924] : +# 35| r35_12944(glval) = FunctionAddress[~String] : +# 35| v35_12945(void) = Call[~String] : func:r35_12944, this:r35_12943 +# 35| mu35_12946(unknown) = ^CallSideEffect : ~m? +# 35| v35_12947(void) = ^IndirectReadSideEffect[-1] : &:r35_12943, ~m? +# 35| mu35_12948(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12943 +# 35| r35_12949(bool) = Constant[0] : +# 35| v35_12950(void) = ConditionalBranch : r35_12949 #-----| False -> Block 925 #-----| True -> Block 1026 -# 2794| Block 925 -# 2794| r2794_1(glval) = VariableAddress[x925] : -# 2794| mu2794_2(String) = Uninitialized[x925] : &:r2794_1 -# 2794| r2794_3(glval) = FunctionAddress[String] : -# 2794| v2794_4(void) = Call[String] : func:r2794_3, this:r2794_1 -# 2794| mu2794_5(unknown) = ^CallSideEffect : ~m? -# 2794| mu2794_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2794_1 -# 2795| r2795_1(glval) = VariableAddress[x925] : -# 2795| r2795_2(glval) = FunctionAddress[~String] : -# 2795| v2795_3(void) = Call[~String] : func:r2795_2, this:r2795_1 -# 2795| mu2795_4(unknown) = ^CallSideEffect : ~m? -# 2795| v2795_5(void) = ^IndirectReadSideEffect[-1] : &:r2795_1, ~m? -# 2795| mu2795_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2795_1 -# 2795| r2795_7(bool) = Constant[0] : -# 2795| v2795_8(void) = ConditionalBranch : r2795_7 +# 35| Block 925 +# 35| r35_12951(glval) = VariableAddress[x925] : +# 35| mu35_12952(String) = Uninitialized[x925] : &:r35_12951 +# 35| r35_12953(glval) = FunctionAddress[String] : +# 35| v35_12954(void) = Call[String] : func:r35_12953, this:r35_12951 +# 35| mu35_12955(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12956(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12951 +# 35| r35_12957(glval) = VariableAddress[x925] : +# 35| r35_12958(glval) = FunctionAddress[~String] : +# 35| v35_12959(void) = Call[~String] : func:r35_12958, this:r35_12957 +# 35| mu35_12960(unknown) = ^CallSideEffect : ~m? +# 35| v35_12961(void) = ^IndirectReadSideEffect[-1] : &:r35_12957, ~m? +# 35| mu35_12962(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12957 +# 35| r35_12963(bool) = Constant[0] : +# 35| v35_12964(void) = ConditionalBranch : r35_12963 #-----| False -> Block 926 #-----| True -> Block 1026 -# 2797| Block 926 -# 2797| r2797_1(glval) = VariableAddress[x926] : -# 2797| mu2797_2(String) = Uninitialized[x926] : &:r2797_1 -# 2797| r2797_3(glval) = FunctionAddress[String] : -# 2797| v2797_4(void) = Call[String] : func:r2797_3, this:r2797_1 -# 2797| mu2797_5(unknown) = ^CallSideEffect : ~m? -# 2797| mu2797_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2797_1 -# 2798| r2798_1(glval) = VariableAddress[x926] : -# 2798| r2798_2(glval) = FunctionAddress[~String] : -# 2798| v2798_3(void) = Call[~String] : func:r2798_2, this:r2798_1 -# 2798| mu2798_4(unknown) = ^CallSideEffect : ~m? -# 2798| v2798_5(void) = ^IndirectReadSideEffect[-1] : &:r2798_1, ~m? -# 2798| mu2798_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2798_1 -# 2798| r2798_7(bool) = Constant[0] : -# 2798| v2798_8(void) = ConditionalBranch : r2798_7 +# 35| Block 926 +# 35| r35_12965(glval) = VariableAddress[x926] : +# 35| mu35_12966(String) = Uninitialized[x926] : &:r35_12965 +# 35| r35_12967(glval) = FunctionAddress[String] : +# 35| v35_12968(void) = Call[String] : func:r35_12967, this:r35_12965 +# 35| mu35_12969(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12970(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12965 +# 35| r35_12971(glval) = VariableAddress[x926] : +# 35| r35_12972(glval) = FunctionAddress[~String] : +# 35| v35_12973(void) = Call[~String] : func:r35_12972, this:r35_12971 +# 35| mu35_12974(unknown) = ^CallSideEffect : ~m? +# 35| v35_12975(void) = ^IndirectReadSideEffect[-1] : &:r35_12971, ~m? +# 35| mu35_12976(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12971 +# 35| r35_12977(bool) = Constant[0] : +# 35| v35_12978(void) = ConditionalBranch : r35_12977 #-----| False -> Block 927 #-----| True -> Block 1026 -# 2800| Block 927 -# 2800| r2800_1(glval) = VariableAddress[x927] : -# 2800| mu2800_2(String) = Uninitialized[x927] : &:r2800_1 -# 2800| r2800_3(glval) = FunctionAddress[String] : -# 2800| v2800_4(void) = Call[String] : func:r2800_3, this:r2800_1 -# 2800| mu2800_5(unknown) = ^CallSideEffect : ~m? -# 2800| mu2800_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2800_1 -# 2801| r2801_1(glval) = VariableAddress[x927] : -# 2801| r2801_2(glval) = FunctionAddress[~String] : -# 2801| v2801_3(void) = Call[~String] : func:r2801_2, this:r2801_1 -# 2801| mu2801_4(unknown) = ^CallSideEffect : ~m? -# 2801| v2801_5(void) = ^IndirectReadSideEffect[-1] : &:r2801_1, ~m? -# 2801| mu2801_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2801_1 -# 2801| r2801_7(bool) = Constant[0] : -# 2801| v2801_8(void) = ConditionalBranch : r2801_7 +# 35| Block 927 +# 35| r35_12979(glval) = VariableAddress[x927] : +# 35| mu35_12980(String) = Uninitialized[x927] : &:r35_12979 +# 35| r35_12981(glval) = FunctionAddress[String] : +# 35| v35_12982(void) = Call[String] : func:r35_12981, this:r35_12979 +# 35| mu35_12983(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12984(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12979 +# 35| r35_12985(glval) = VariableAddress[x927] : +# 35| r35_12986(glval) = FunctionAddress[~String] : +# 35| v35_12987(void) = Call[~String] : func:r35_12986, this:r35_12985 +# 35| mu35_12988(unknown) = ^CallSideEffect : ~m? +# 35| v35_12989(void) = ^IndirectReadSideEffect[-1] : &:r35_12985, ~m? +# 35| mu35_12990(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12985 +# 35| r35_12991(bool) = Constant[0] : +# 35| v35_12992(void) = ConditionalBranch : r35_12991 #-----| False -> Block 928 #-----| True -> Block 1026 -# 2803| Block 928 -# 2803| r2803_1(glval) = VariableAddress[x928] : -# 2803| mu2803_2(String) = Uninitialized[x928] : &:r2803_1 -# 2803| r2803_3(glval) = FunctionAddress[String] : -# 2803| v2803_4(void) = Call[String] : func:r2803_3, this:r2803_1 -# 2803| mu2803_5(unknown) = ^CallSideEffect : ~m? -# 2803| mu2803_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2803_1 -# 2804| r2804_1(glval) = VariableAddress[x928] : -# 2804| r2804_2(glval) = FunctionAddress[~String] : -# 2804| v2804_3(void) = Call[~String] : func:r2804_2, this:r2804_1 -# 2804| mu2804_4(unknown) = ^CallSideEffect : ~m? -# 2804| v2804_5(void) = ^IndirectReadSideEffect[-1] : &:r2804_1, ~m? -# 2804| mu2804_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2804_1 -# 2804| r2804_7(bool) = Constant[0] : -# 2804| v2804_8(void) = ConditionalBranch : r2804_7 +# 35| Block 928 +# 35| r35_12993(glval) = VariableAddress[x928] : +# 35| mu35_12994(String) = Uninitialized[x928] : &:r35_12993 +# 35| r35_12995(glval) = FunctionAddress[String] : +# 35| v35_12996(void) = Call[String] : func:r35_12995, this:r35_12993 +# 35| mu35_12997(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12998(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12993 +# 35| r35_12999(glval) = VariableAddress[x928] : +# 35| r35_13000(glval) = FunctionAddress[~String] : +# 35| v35_13001(void) = Call[~String] : func:r35_13000, this:r35_12999 +# 35| mu35_13002(unknown) = ^CallSideEffect : ~m? +# 35| v35_13003(void) = ^IndirectReadSideEffect[-1] : &:r35_12999, ~m? +# 35| mu35_13004(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12999 +# 35| r35_13005(bool) = Constant[0] : +# 35| v35_13006(void) = ConditionalBranch : r35_13005 #-----| False -> Block 929 #-----| True -> Block 1026 -# 2806| Block 929 -# 2806| r2806_1(glval) = VariableAddress[x929] : -# 2806| mu2806_2(String) = Uninitialized[x929] : &:r2806_1 -# 2806| r2806_3(glval) = FunctionAddress[String] : -# 2806| v2806_4(void) = Call[String] : func:r2806_3, this:r2806_1 -# 2806| mu2806_5(unknown) = ^CallSideEffect : ~m? -# 2806| mu2806_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2806_1 -# 2807| r2807_1(glval) = VariableAddress[x929] : -# 2807| r2807_2(glval) = FunctionAddress[~String] : -# 2807| v2807_3(void) = Call[~String] : func:r2807_2, this:r2807_1 -# 2807| mu2807_4(unknown) = ^CallSideEffect : ~m? -# 2807| v2807_5(void) = ^IndirectReadSideEffect[-1] : &:r2807_1, ~m? -# 2807| mu2807_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2807_1 -# 2807| r2807_7(bool) = Constant[0] : -# 2807| v2807_8(void) = ConditionalBranch : r2807_7 +# 35| Block 929 +# 35| r35_13007(glval) = VariableAddress[x929] : +# 35| mu35_13008(String) = Uninitialized[x929] : &:r35_13007 +# 35| r35_13009(glval) = FunctionAddress[String] : +# 35| v35_13010(void) = Call[String] : func:r35_13009, this:r35_13007 +# 35| mu35_13011(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13012(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13007 +# 35| r35_13013(glval) = VariableAddress[x929] : +# 35| r35_13014(glval) = FunctionAddress[~String] : +# 35| v35_13015(void) = Call[~String] : func:r35_13014, this:r35_13013 +# 35| mu35_13016(unknown) = ^CallSideEffect : ~m? +# 35| v35_13017(void) = ^IndirectReadSideEffect[-1] : &:r35_13013, ~m? +# 35| mu35_13018(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13013 +# 35| r35_13019(bool) = Constant[0] : +# 35| v35_13020(void) = ConditionalBranch : r35_13019 #-----| False -> Block 930 #-----| True -> Block 1026 -# 2809| Block 930 -# 2809| r2809_1(glval) = VariableAddress[x930] : -# 2809| mu2809_2(String) = Uninitialized[x930] : &:r2809_1 -# 2809| r2809_3(glval) = FunctionAddress[String] : -# 2809| v2809_4(void) = Call[String] : func:r2809_3, this:r2809_1 -# 2809| mu2809_5(unknown) = ^CallSideEffect : ~m? -# 2809| mu2809_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2809_1 -# 2810| r2810_1(glval) = VariableAddress[x930] : -# 2810| r2810_2(glval) = FunctionAddress[~String] : -# 2810| v2810_3(void) = Call[~String] : func:r2810_2, this:r2810_1 -# 2810| mu2810_4(unknown) = ^CallSideEffect : ~m? -# 2810| v2810_5(void) = ^IndirectReadSideEffect[-1] : &:r2810_1, ~m? -# 2810| mu2810_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2810_1 -# 2810| r2810_7(bool) = Constant[0] : -# 2810| v2810_8(void) = ConditionalBranch : r2810_7 +# 35| Block 930 +# 35| r35_13021(glval) = VariableAddress[x930] : +# 35| mu35_13022(String) = Uninitialized[x930] : &:r35_13021 +# 35| r35_13023(glval) = FunctionAddress[String] : +# 35| v35_13024(void) = Call[String] : func:r35_13023, this:r35_13021 +# 35| mu35_13025(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13026(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13021 +# 35| r35_13027(glval) = VariableAddress[x930] : +# 35| r35_13028(glval) = FunctionAddress[~String] : +# 35| v35_13029(void) = Call[~String] : func:r35_13028, this:r35_13027 +# 35| mu35_13030(unknown) = ^CallSideEffect : ~m? +# 35| v35_13031(void) = ^IndirectReadSideEffect[-1] : &:r35_13027, ~m? +# 35| mu35_13032(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13027 +# 35| r35_13033(bool) = Constant[0] : +# 35| v35_13034(void) = ConditionalBranch : r35_13033 #-----| False -> Block 931 #-----| True -> Block 1026 -# 2812| Block 931 -# 2812| r2812_1(glval) = VariableAddress[x931] : -# 2812| mu2812_2(String) = Uninitialized[x931] : &:r2812_1 -# 2812| r2812_3(glval) = FunctionAddress[String] : -# 2812| v2812_4(void) = Call[String] : func:r2812_3, this:r2812_1 -# 2812| mu2812_5(unknown) = ^CallSideEffect : ~m? -# 2812| mu2812_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2812_1 -# 2813| r2813_1(glval) = VariableAddress[x931] : -# 2813| r2813_2(glval) = FunctionAddress[~String] : -# 2813| v2813_3(void) = Call[~String] : func:r2813_2, this:r2813_1 -# 2813| mu2813_4(unknown) = ^CallSideEffect : ~m? -# 2813| v2813_5(void) = ^IndirectReadSideEffect[-1] : &:r2813_1, ~m? -# 2813| mu2813_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2813_1 -# 2813| r2813_7(bool) = Constant[0] : -# 2813| v2813_8(void) = ConditionalBranch : r2813_7 +# 35| Block 931 +# 35| r35_13035(glval) = VariableAddress[x931] : +# 35| mu35_13036(String) = Uninitialized[x931] : &:r35_13035 +# 35| r35_13037(glval) = FunctionAddress[String] : +# 35| v35_13038(void) = Call[String] : func:r35_13037, this:r35_13035 +# 35| mu35_13039(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13040(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13035 +# 35| r35_13041(glval) = VariableAddress[x931] : +# 35| r35_13042(glval) = FunctionAddress[~String] : +# 35| v35_13043(void) = Call[~String] : func:r35_13042, this:r35_13041 +# 35| mu35_13044(unknown) = ^CallSideEffect : ~m? +# 35| v35_13045(void) = ^IndirectReadSideEffect[-1] : &:r35_13041, ~m? +# 35| mu35_13046(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13041 +# 35| r35_13047(bool) = Constant[0] : +# 35| v35_13048(void) = ConditionalBranch : r35_13047 #-----| False -> Block 932 #-----| True -> Block 1026 -# 2815| Block 932 -# 2815| r2815_1(glval) = VariableAddress[x932] : -# 2815| mu2815_2(String) = Uninitialized[x932] : &:r2815_1 -# 2815| r2815_3(glval) = FunctionAddress[String] : -# 2815| v2815_4(void) = Call[String] : func:r2815_3, this:r2815_1 -# 2815| mu2815_5(unknown) = ^CallSideEffect : ~m? -# 2815| mu2815_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2815_1 -# 2816| r2816_1(glval) = VariableAddress[x932] : -# 2816| r2816_2(glval) = FunctionAddress[~String] : -# 2816| v2816_3(void) = Call[~String] : func:r2816_2, this:r2816_1 -# 2816| mu2816_4(unknown) = ^CallSideEffect : ~m? -# 2816| v2816_5(void) = ^IndirectReadSideEffect[-1] : &:r2816_1, ~m? -# 2816| mu2816_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2816_1 -# 2816| r2816_7(bool) = Constant[0] : -# 2816| v2816_8(void) = ConditionalBranch : r2816_7 +# 35| Block 932 +# 35| r35_13049(glval) = VariableAddress[x932] : +# 35| mu35_13050(String) = Uninitialized[x932] : &:r35_13049 +# 35| r35_13051(glval) = FunctionAddress[String] : +# 35| v35_13052(void) = Call[String] : func:r35_13051, this:r35_13049 +# 35| mu35_13053(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13054(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13049 +# 35| r35_13055(glval) = VariableAddress[x932] : +# 35| r35_13056(glval) = FunctionAddress[~String] : +# 35| v35_13057(void) = Call[~String] : func:r35_13056, this:r35_13055 +# 35| mu35_13058(unknown) = ^CallSideEffect : ~m? +# 35| v35_13059(void) = ^IndirectReadSideEffect[-1] : &:r35_13055, ~m? +# 35| mu35_13060(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13055 +# 35| r35_13061(bool) = Constant[0] : +# 35| v35_13062(void) = ConditionalBranch : r35_13061 #-----| False -> Block 933 #-----| True -> Block 1026 -# 2818| Block 933 -# 2818| r2818_1(glval) = VariableAddress[x933] : -# 2818| mu2818_2(String) = Uninitialized[x933] : &:r2818_1 -# 2818| r2818_3(glval) = FunctionAddress[String] : -# 2818| v2818_4(void) = Call[String] : func:r2818_3, this:r2818_1 -# 2818| mu2818_5(unknown) = ^CallSideEffect : ~m? -# 2818| mu2818_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2818_1 -# 2819| r2819_1(glval) = VariableAddress[x933] : -# 2819| r2819_2(glval) = FunctionAddress[~String] : -# 2819| v2819_3(void) = Call[~String] : func:r2819_2, this:r2819_1 -# 2819| mu2819_4(unknown) = ^CallSideEffect : ~m? -# 2819| v2819_5(void) = ^IndirectReadSideEffect[-1] : &:r2819_1, ~m? -# 2819| mu2819_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2819_1 -# 2819| r2819_7(bool) = Constant[0] : -# 2819| v2819_8(void) = ConditionalBranch : r2819_7 +# 35| Block 933 +# 35| r35_13063(glval) = VariableAddress[x933] : +# 35| mu35_13064(String) = Uninitialized[x933] : &:r35_13063 +# 35| r35_13065(glval) = FunctionAddress[String] : +# 35| v35_13066(void) = Call[String] : func:r35_13065, this:r35_13063 +# 35| mu35_13067(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13068(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13063 +# 35| r35_13069(glval) = VariableAddress[x933] : +# 35| r35_13070(glval) = FunctionAddress[~String] : +# 35| v35_13071(void) = Call[~String] : func:r35_13070, this:r35_13069 +# 35| mu35_13072(unknown) = ^CallSideEffect : ~m? +# 35| v35_13073(void) = ^IndirectReadSideEffect[-1] : &:r35_13069, ~m? +# 35| mu35_13074(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13069 +# 35| r35_13075(bool) = Constant[0] : +# 35| v35_13076(void) = ConditionalBranch : r35_13075 #-----| False -> Block 934 #-----| True -> Block 1026 -# 2821| Block 934 -# 2821| r2821_1(glval) = VariableAddress[x934] : -# 2821| mu2821_2(String) = Uninitialized[x934] : &:r2821_1 -# 2821| r2821_3(glval) = FunctionAddress[String] : -# 2821| v2821_4(void) = Call[String] : func:r2821_3, this:r2821_1 -# 2821| mu2821_5(unknown) = ^CallSideEffect : ~m? -# 2821| mu2821_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2821_1 -# 2822| r2822_1(glval) = VariableAddress[x934] : -# 2822| r2822_2(glval) = FunctionAddress[~String] : -# 2822| v2822_3(void) = Call[~String] : func:r2822_2, this:r2822_1 -# 2822| mu2822_4(unknown) = ^CallSideEffect : ~m? -# 2822| v2822_5(void) = ^IndirectReadSideEffect[-1] : &:r2822_1, ~m? -# 2822| mu2822_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2822_1 -# 2822| r2822_7(bool) = Constant[0] : -# 2822| v2822_8(void) = ConditionalBranch : r2822_7 +# 35| Block 934 +# 35| r35_13077(glval) = VariableAddress[x934] : +# 35| mu35_13078(String) = Uninitialized[x934] : &:r35_13077 +# 35| r35_13079(glval) = FunctionAddress[String] : +# 35| v35_13080(void) = Call[String] : func:r35_13079, this:r35_13077 +# 35| mu35_13081(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13082(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13077 +# 35| r35_13083(glval) = VariableAddress[x934] : +# 35| r35_13084(glval) = FunctionAddress[~String] : +# 35| v35_13085(void) = Call[~String] : func:r35_13084, this:r35_13083 +# 35| mu35_13086(unknown) = ^CallSideEffect : ~m? +# 35| v35_13087(void) = ^IndirectReadSideEffect[-1] : &:r35_13083, ~m? +# 35| mu35_13088(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13083 +# 35| r35_13089(bool) = Constant[0] : +# 35| v35_13090(void) = ConditionalBranch : r35_13089 #-----| False -> Block 935 #-----| True -> Block 1026 -# 2824| Block 935 -# 2824| r2824_1(glval) = VariableAddress[x935] : -# 2824| mu2824_2(String) = Uninitialized[x935] : &:r2824_1 -# 2824| r2824_3(glval) = FunctionAddress[String] : -# 2824| v2824_4(void) = Call[String] : func:r2824_3, this:r2824_1 -# 2824| mu2824_5(unknown) = ^CallSideEffect : ~m? -# 2824| mu2824_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2824_1 -# 2825| r2825_1(glval) = VariableAddress[x935] : -# 2825| r2825_2(glval) = FunctionAddress[~String] : -# 2825| v2825_3(void) = Call[~String] : func:r2825_2, this:r2825_1 -# 2825| mu2825_4(unknown) = ^CallSideEffect : ~m? -# 2825| v2825_5(void) = ^IndirectReadSideEffect[-1] : &:r2825_1, ~m? -# 2825| mu2825_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2825_1 -# 2825| r2825_7(bool) = Constant[0] : -# 2825| v2825_8(void) = ConditionalBranch : r2825_7 +# 35| Block 935 +# 35| r35_13091(glval) = VariableAddress[x935] : +# 35| mu35_13092(String) = Uninitialized[x935] : &:r35_13091 +# 35| r35_13093(glval) = FunctionAddress[String] : +# 35| v35_13094(void) = Call[String] : func:r35_13093, this:r35_13091 +# 35| mu35_13095(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13096(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13091 +# 35| r35_13097(glval) = VariableAddress[x935] : +# 35| r35_13098(glval) = FunctionAddress[~String] : +# 35| v35_13099(void) = Call[~String] : func:r35_13098, this:r35_13097 +# 35| mu35_13100(unknown) = ^CallSideEffect : ~m? +# 35| v35_13101(void) = ^IndirectReadSideEffect[-1] : &:r35_13097, ~m? +# 35| mu35_13102(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13097 +# 35| r35_13103(bool) = Constant[0] : +# 35| v35_13104(void) = ConditionalBranch : r35_13103 #-----| False -> Block 936 #-----| True -> Block 1026 -# 2827| Block 936 -# 2827| r2827_1(glval) = VariableAddress[x936] : -# 2827| mu2827_2(String) = Uninitialized[x936] : &:r2827_1 -# 2827| r2827_3(glval) = FunctionAddress[String] : -# 2827| v2827_4(void) = Call[String] : func:r2827_3, this:r2827_1 -# 2827| mu2827_5(unknown) = ^CallSideEffect : ~m? -# 2827| mu2827_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2827_1 -# 2828| r2828_1(glval) = VariableAddress[x936] : -# 2828| r2828_2(glval) = FunctionAddress[~String] : -# 2828| v2828_3(void) = Call[~String] : func:r2828_2, this:r2828_1 -# 2828| mu2828_4(unknown) = ^CallSideEffect : ~m? -# 2828| v2828_5(void) = ^IndirectReadSideEffect[-1] : &:r2828_1, ~m? -# 2828| mu2828_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2828_1 -# 2828| r2828_7(bool) = Constant[0] : -# 2828| v2828_8(void) = ConditionalBranch : r2828_7 +# 35| Block 936 +# 35| r35_13105(glval) = VariableAddress[x936] : +# 35| mu35_13106(String) = Uninitialized[x936] : &:r35_13105 +# 35| r35_13107(glval) = FunctionAddress[String] : +# 35| v35_13108(void) = Call[String] : func:r35_13107, this:r35_13105 +# 35| mu35_13109(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13105 +# 35| r35_13111(glval) = VariableAddress[x936] : +# 35| r35_13112(glval) = FunctionAddress[~String] : +# 35| v35_13113(void) = Call[~String] : func:r35_13112, this:r35_13111 +# 35| mu35_13114(unknown) = ^CallSideEffect : ~m? +# 35| v35_13115(void) = ^IndirectReadSideEffect[-1] : &:r35_13111, ~m? +# 35| mu35_13116(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13111 +# 35| r35_13117(bool) = Constant[0] : +# 35| v35_13118(void) = ConditionalBranch : r35_13117 #-----| False -> Block 937 #-----| True -> Block 1026 -# 2830| Block 937 -# 2830| r2830_1(glval) = VariableAddress[x937] : -# 2830| mu2830_2(String) = Uninitialized[x937] : &:r2830_1 -# 2830| r2830_3(glval) = FunctionAddress[String] : -# 2830| v2830_4(void) = Call[String] : func:r2830_3, this:r2830_1 -# 2830| mu2830_5(unknown) = ^CallSideEffect : ~m? -# 2830| mu2830_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2830_1 -# 2831| r2831_1(glval) = VariableAddress[x937] : -# 2831| r2831_2(glval) = FunctionAddress[~String] : -# 2831| v2831_3(void) = Call[~String] : func:r2831_2, this:r2831_1 -# 2831| mu2831_4(unknown) = ^CallSideEffect : ~m? -# 2831| v2831_5(void) = ^IndirectReadSideEffect[-1] : &:r2831_1, ~m? -# 2831| mu2831_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2831_1 -# 2831| r2831_7(bool) = Constant[0] : -# 2831| v2831_8(void) = ConditionalBranch : r2831_7 +# 35| Block 937 +# 35| r35_13119(glval) = VariableAddress[x937] : +# 35| mu35_13120(String) = Uninitialized[x937] : &:r35_13119 +# 35| r35_13121(glval) = FunctionAddress[String] : +# 35| v35_13122(void) = Call[String] : func:r35_13121, this:r35_13119 +# 35| mu35_13123(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13119 +# 35| r35_13125(glval) = VariableAddress[x937] : +# 35| r35_13126(glval) = FunctionAddress[~String] : +# 35| v35_13127(void) = Call[~String] : func:r35_13126, this:r35_13125 +# 35| mu35_13128(unknown) = ^CallSideEffect : ~m? +# 35| v35_13129(void) = ^IndirectReadSideEffect[-1] : &:r35_13125, ~m? +# 35| mu35_13130(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13125 +# 35| r35_13131(bool) = Constant[0] : +# 35| v35_13132(void) = ConditionalBranch : r35_13131 #-----| False -> Block 938 #-----| True -> Block 1026 -# 2833| Block 938 -# 2833| r2833_1(glval) = VariableAddress[x938] : -# 2833| mu2833_2(String) = Uninitialized[x938] : &:r2833_1 -# 2833| r2833_3(glval) = FunctionAddress[String] : -# 2833| v2833_4(void) = Call[String] : func:r2833_3, this:r2833_1 -# 2833| mu2833_5(unknown) = ^CallSideEffect : ~m? -# 2833| mu2833_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2833_1 -# 2834| r2834_1(glval) = VariableAddress[x938] : -# 2834| r2834_2(glval) = FunctionAddress[~String] : -# 2834| v2834_3(void) = Call[~String] : func:r2834_2, this:r2834_1 -# 2834| mu2834_4(unknown) = ^CallSideEffect : ~m? -# 2834| v2834_5(void) = ^IndirectReadSideEffect[-1] : &:r2834_1, ~m? -# 2834| mu2834_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2834_1 -# 2834| r2834_7(bool) = Constant[0] : -# 2834| v2834_8(void) = ConditionalBranch : r2834_7 +# 35| Block 938 +# 35| r35_13133(glval) = VariableAddress[x938] : +# 35| mu35_13134(String) = Uninitialized[x938] : &:r35_13133 +# 35| r35_13135(glval) = FunctionAddress[String] : +# 35| v35_13136(void) = Call[String] : func:r35_13135, this:r35_13133 +# 35| mu35_13137(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13133 +# 35| r35_13139(glval) = VariableAddress[x938] : +# 35| r35_13140(glval) = FunctionAddress[~String] : +# 35| v35_13141(void) = Call[~String] : func:r35_13140, this:r35_13139 +# 35| mu35_13142(unknown) = ^CallSideEffect : ~m? +# 35| v35_13143(void) = ^IndirectReadSideEffect[-1] : &:r35_13139, ~m? +# 35| mu35_13144(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13139 +# 35| r35_13145(bool) = Constant[0] : +# 35| v35_13146(void) = ConditionalBranch : r35_13145 #-----| False -> Block 939 #-----| True -> Block 1026 -# 2836| Block 939 -# 2836| r2836_1(glval) = VariableAddress[x939] : -# 2836| mu2836_2(String) = Uninitialized[x939] : &:r2836_1 -# 2836| r2836_3(glval) = FunctionAddress[String] : -# 2836| v2836_4(void) = Call[String] : func:r2836_3, this:r2836_1 -# 2836| mu2836_5(unknown) = ^CallSideEffect : ~m? -# 2836| mu2836_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2836_1 -# 2837| r2837_1(glval) = VariableAddress[x939] : -# 2837| r2837_2(glval) = FunctionAddress[~String] : -# 2837| v2837_3(void) = Call[~String] : func:r2837_2, this:r2837_1 -# 2837| mu2837_4(unknown) = ^CallSideEffect : ~m? -# 2837| v2837_5(void) = ^IndirectReadSideEffect[-1] : &:r2837_1, ~m? -# 2837| mu2837_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2837_1 -# 2837| r2837_7(bool) = Constant[0] : -# 2837| v2837_8(void) = ConditionalBranch : r2837_7 +# 35| Block 939 +# 35| r35_13147(glval) = VariableAddress[x939] : +# 35| mu35_13148(String) = Uninitialized[x939] : &:r35_13147 +# 35| r35_13149(glval) = FunctionAddress[String] : +# 35| v35_13150(void) = Call[String] : func:r35_13149, this:r35_13147 +# 35| mu35_13151(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13147 +# 35| r35_13153(glval) = VariableAddress[x939] : +# 35| r35_13154(glval) = FunctionAddress[~String] : +# 35| v35_13155(void) = Call[~String] : func:r35_13154, this:r35_13153 +# 35| mu35_13156(unknown) = ^CallSideEffect : ~m? +# 35| v35_13157(void) = ^IndirectReadSideEffect[-1] : &:r35_13153, ~m? +# 35| mu35_13158(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13153 +# 35| r35_13159(bool) = Constant[0] : +# 35| v35_13160(void) = ConditionalBranch : r35_13159 #-----| False -> Block 940 #-----| True -> Block 1026 -# 2839| Block 940 -# 2839| r2839_1(glval) = VariableAddress[x940] : -# 2839| mu2839_2(String) = Uninitialized[x940] : &:r2839_1 -# 2839| r2839_3(glval) = FunctionAddress[String] : -# 2839| v2839_4(void) = Call[String] : func:r2839_3, this:r2839_1 -# 2839| mu2839_5(unknown) = ^CallSideEffect : ~m? -# 2839| mu2839_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2839_1 -# 2840| r2840_1(glval) = VariableAddress[x940] : -# 2840| r2840_2(glval) = FunctionAddress[~String] : -# 2840| v2840_3(void) = Call[~String] : func:r2840_2, this:r2840_1 -# 2840| mu2840_4(unknown) = ^CallSideEffect : ~m? -# 2840| v2840_5(void) = ^IndirectReadSideEffect[-1] : &:r2840_1, ~m? -# 2840| mu2840_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2840_1 -# 2840| r2840_7(bool) = Constant[0] : -# 2840| v2840_8(void) = ConditionalBranch : r2840_7 +# 35| Block 940 +# 35| r35_13161(glval) = VariableAddress[x940] : +# 35| mu35_13162(String) = Uninitialized[x940] : &:r35_13161 +# 35| r35_13163(glval) = FunctionAddress[String] : +# 35| v35_13164(void) = Call[String] : func:r35_13163, this:r35_13161 +# 35| mu35_13165(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13161 +# 35| r35_13167(glval) = VariableAddress[x940] : +# 35| r35_13168(glval) = FunctionAddress[~String] : +# 35| v35_13169(void) = Call[~String] : func:r35_13168, this:r35_13167 +# 35| mu35_13170(unknown) = ^CallSideEffect : ~m? +# 35| v35_13171(void) = ^IndirectReadSideEffect[-1] : &:r35_13167, ~m? +# 35| mu35_13172(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13167 +# 35| r35_13173(bool) = Constant[0] : +# 35| v35_13174(void) = ConditionalBranch : r35_13173 #-----| False -> Block 941 #-----| True -> Block 1026 -# 2842| Block 941 -# 2842| r2842_1(glval) = VariableAddress[x941] : -# 2842| mu2842_2(String) = Uninitialized[x941] : &:r2842_1 -# 2842| r2842_3(glval) = FunctionAddress[String] : -# 2842| v2842_4(void) = Call[String] : func:r2842_3, this:r2842_1 -# 2842| mu2842_5(unknown) = ^CallSideEffect : ~m? -# 2842| mu2842_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2842_1 -# 2843| r2843_1(glval) = VariableAddress[x941] : -# 2843| r2843_2(glval) = FunctionAddress[~String] : -# 2843| v2843_3(void) = Call[~String] : func:r2843_2, this:r2843_1 -# 2843| mu2843_4(unknown) = ^CallSideEffect : ~m? -# 2843| v2843_5(void) = ^IndirectReadSideEffect[-1] : &:r2843_1, ~m? -# 2843| mu2843_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2843_1 -# 2843| r2843_7(bool) = Constant[0] : -# 2843| v2843_8(void) = ConditionalBranch : r2843_7 +# 35| Block 941 +# 35| r35_13175(glval) = VariableAddress[x941] : +# 35| mu35_13176(String) = Uninitialized[x941] : &:r35_13175 +# 35| r35_13177(glval) = FunctionAddress[String] : +# 35| v35_13178(void) = Call[String] : func:r35_13177, this:r35_13175 +# 35| mu35_13179(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13175 +# 35| r35_13181(glval) = VariableAddress[x941] : +# 35| r35_13182(glval) = FunctionAddress[~String] : +# 35| v35_13183(void) = Call[~String] : func:r35_13182, this:r35_13181 +# 35| mu35_13184(unknown) = ^CallSideEffect : ~m? +# 35| v35_13185(void) = ^IndirectReadSideEffect[-1] : &:r35_13181, ~m? +# 35| mu35_13186(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13181 +# 35| r35_13187(bool) = Constant[0] : +# 35| v35_13188(void) = ConditionalBranch : r35_13187 #-----| False -> Block 942 #-----| True -> Block 1026 -# 2845| Block 942 -# 2845| r2845_1(glval) = VariableAddress[x942] : -# 2845| mu2845_2(String) = Uninitialized[x942] : &:r2845_1 -# 2845| r2845_3(glval) = FunctionAddress[String] : -# 2845| v2845_4(void) = Call[String] : func:r2845_3, this:r2845_1 -# 2845| mu2845_5(unknown) = ^CallSideEffect : ~m? -# 2845| mu2845_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2845_1 -# 2846| r2846_1(glval) = VariableAddress[x942] : -# 2846| r2846_2(glval) = FunctionAddress[~String] : -# 2846| v2846_3(void) = Call[~String] : func:r2846_2, this:r2846_1 -# 2846| mu2846_4(unknown) = ^CallSideEffect : ~m? -# 2846| v2846_5(void) = ^IndirectReadSideEffect[-1] : &:r2846_1, ~m? -# 2846| mu2846_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2846_1 -# 2846| r2846_7(bool) = Constant[0] : -# 2846| v2846_8(void) = ConditionalBranch : r2846_7 +# 35| Block 942 +# 35| r35_13189(glval) = VariableAddress[x942] : +# 35| mu35_13190(String) = Uninitialized[x942] : &:r35_13189 +# 35| r35_13191(glval) = FunctionAddress[String] : +# 35| v35_13192(void) = Call[String] : func:r35_13191, this:r35_13189 +# 35| mu35_13193(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13189 +# 35| r35_13195(glval) = VariableAddress[x942] : +# 35| r35_13196(glval) = FunctionAddress[~String] : +# 35| v35_13197(void) = Call[~String] : func:r35_13196, this:r35_13195 +# 35| mu35_13198(unknown) = ^CallSideEffect : ~m? +# 35| v35_13199(void) = ^IndirectReadSideEffect[-1] : &:r35_13195, ~m? +# 35| mu35_13200(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13195 +# 35| r35_13201(bool) = Constant[0] : +# 35| v35_13202(void) = ConditionalBranch : r35_13201 #-----| False -> Block 943 #-----| True -> Block 1026 -# 2848| Block 943 -# 2848| r2848_1(glval) = VariableAddress[x943] : -# 2848| mu2848_2(String) = Uninitialized[x943] : &:r2848_1 -# 2848| r2848_3(glval) = FunctionAddress[String] : -# 2848| v2848_4(void) = Call[String] : func:r2848_3, this:r2848_1 -# 2848| mu2848_5(unknown) = ^CallSideEffect : ~m? -# 2848| mu2848_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2848_1 -# 2849| r2849_1(glval) = VariableAddress[x943] : -# 2849| r2849_2(glval) = FunctionAddress[~String] : -# 2849| v2849_3(void) = Call[~String] : func:r2849_2, this:r2849_1 -# 2849| mu2849_4(unknown) = ^CallSideEffect : ~m? -# 2849| v2849_5(void) = ^IndirectReadSideEffect[-1] : &:r2849_1, ~m? -# 2849| mu2849_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2849_1 -# 2849| r2849_7(bool) = Constant[0] : -# 2849| v2849_8(void) = ConditionalBranch : r2849_7 +# 35| Block 943 +# 35| r35_13203(glval) = VariableAddress[x943] : +# 35| mu35_13204(String) = Uninitialized[x943] : &:r35_13203 +# 35| r35_13205(glval) = FunctionAddress[String] : +# 35| v35_13206(void) = Call[String] : func:r35_13205, this:r35_13203 +# 35| mu35_13207(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13203 +# 35| r35_13209(glval) = VariableAddress[x943] : +# 35| r35_13210(glval) = FunctionAddress[~String] : +# 35| v35_13211(void) = Call[~String] : func:r35_13210, this:r35_13209 +# 35| mu35_13212(unknown) = ^CallSideEffect : ~m? +# 35| v35_13213(void) = ^IndirectReadSideEffect[-1] : &:r35_13209, ~m? +# 35| mu35_13214(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13209 +# 35| r35_13215(bool) = Constant[0] : +# 35| v35_13216(void) = ConditionalBranch : r35_13215 #-----| False -> Block 944 #-----| True -> Block 1026 -# 2851| Block 944 -# 2851| r2851_1(glval) = VariableAddress[x944] : -# 2851| mu2851_2(String) = Uninitialized[x944] : &:r2851_1 -# 2851| r2851_3(glval) = FunctionAddress[String] : -# 2851| v2851_4(void) = Call[String] : func:r2851_3, this:r2851_1 -# 2851| mu2851_5(unknown) = ^CallSideEffect : ~m? -# 2851| mu2851_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2851_1 -# 2852| r2852_1(glval) = VariableAddress[x944] : -# 2852| r2852_2(glval) = FunctionAddress[~String] : -# 2852| v2852_3(void) = Call[~String] : func:r2852_2, this:r2852_1 -# 2852| mu2852_4(unknown) = ^CallSideEffect : ~m? -# 2852| v2852_5(void) = ^IndirectReadSideEffect[-1] : &:r2852_1, ~m? -# 2852| mu2852_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2852_1 -# 2852| r2852_7(bool) = Constant[0] : -# 2852| v2852_8(void) = ConditionalBranch : r2852_7 +# 35| Block 944 +# 35| r35_13217(glval) = VariableAddress[x944] : +# 35| mu35_13218(String) = Uninitialized[x944] : &:r35_13217 +# 35| r35_13219(glval) = FunctionAddress[String] : +# 35| v35_13220(void) = Call[String] : func:r35_13219, this:r35_13217 +# 35| mu35_13221(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13217 +# 35| r35_13223(glval) = VariableAddress[x944] : +# 35| r35_13224(glval) = FunctionAddress[~String] : +# 35| v35_13225(void) = Call[~String] : func:r35_13224, this:r35_13223 +# 35| mu35_13226(unknown) = ^CallSideEffect : ~m? +# 35| v35_13227(void) = ^IndirectReadSideEffect[-1] : &:r35_13223, ~m? +# 35| mu35_13228(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13223 +# 35| r35_13229(bool) = Constant[0] : +# 35| v35_13230(void) = ConditionalBranch : r35_13229 #-----| False -> Block 945 #-----| True -> Block 1026 -# 2854| Block 945 -# 2854| r2854_1(glval) = VariableAddress[x945] : -# 2854| mu2854_2(String) = Uninitialized[x945] : &:r2854_1 -# 2854| r2854_3(glval) = FunctionAddress[String] : -# 2854| v2854_4(void) = Call[String] : func:r2854_3, this:r2854_1 -# 2854| mu2854_5(unknown) = ^CallSideEffect : ~m? -# 2854| mu2854_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2854_1 -# 2855| r2855_1(glval) = VariableAddress[x945] : -# 2855| r2855_2(glval) = FunctionAddress[~String] : -# 2855| v2855_3(void) = Call[~String] : func:r2855_2, this:r2855_1 -# 2855| mu2855_4(unknown) = ^CallSideEffect : ~m? -# 2855| v2855_5(void) = ^IndirectReadSideEffect[-1] : &:r2855_1, ~m? -# 2855| mu2855_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2855_1 -# 2855| r2855_7(bool) = Constant[0] : -# 2855| v2855_8(void) = ConditionalBranch : r2855_7 +# 35| Block 945 +# 35| r35_13231(glval) = VariableAddress[x945] : +# 35| mu35_13232(String) = Uninitialized[x945] : &:r35_13231 +# 35| r35_13233(glval) = FunctionAddress[String] : +# 35| v35_13234(void) = Call[String] : func:r35_13233, this:r35_13231 +# 35| mu35_13235(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13231 +# 35| r35_13237(glval) = VariableAddress[x945] : +# 35| r35_13238(glval) = FunctionAddress[~String] : +# 35| v35_13239(void) = Call[~String] : func:r35_13238, this:r35_13237 +# 35| mu35_13240(unknown) = ^CallSideEffect : ~m? +# 35| v35_13241(void) = ^IndirectReadSideEffect[-1] : &:r35_13237, ~m? +# 35| mu35_13242(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13237 +# 35| r35_13243(bool) = Constant[0] : +# 35| v35_13244(void) = ConditionalBranch : r35_13243 #-----| False -> Block 946 #-----| True -> Block 1026 -# 2857| Block 946 -# 2857| r2857_1(glval) = VariableAddress[x946] : -# 2857| mu2857_2(String) = Uninitialized[x946] : &:r2857_1 -# 2857| r2857_3(glval) = FunctionAddress[String] : -# 2857| v2857_4(void) = Call[String] : func:r2857_3, this:r2857_1 -# 2857| mu2857_5(unknown) = ^CallSideEffect : ~m? -# 2857| mu2857_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2857_1 -# 2858| r2858_1(glval) = VariableAddress[x946] : -# 2858| r2858_2(glval) = FunctionAddress[~String] : -# 2858| v2858_3(void) = Call[~String] : func:r2858_2, this:r2858_1 -# 2858| mu2858_4(unknown) = ^CallSideEffect : ~m? -# 2858| v2858_5(void) = ^IndirectReadSideEffect[-1] : &:r2858_1, ~m? -# 2858| mu2858_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2858_1 -# 2858| r2858_7(bool) = Constant[0] : -# 2858| v2858_8(void) = ConditionalBranch : r2858_7 +# 35| Block 946 +# 35| r35_13245(glval) = VariableAddress[x946] : +# 35| mu35_13246(String) = Uninitialized[x946] : &:r35_13245 +# 35| r35_13247(glval) = FunctionAddress[String] : +# 35| v35_13248(void) = Call[String] : func:r35_13247, this:r35_13245 +# 35| mu35_13249(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13245 +# 35| r35_13251(glval) = VariableAddress[x946] : +# 35| r35_13252(glval) = FunctionAddress[~String] : +# 35| v35_13253(void) = Call[~String] : func:r35_13252, this:r35_13251 +# 35| mu35_13254(unknown) = ^CallSideEffect : ~m? +# 35| v35_13255(void) = ^IndirectReadSideEffect[-1] : &:r35_13251, ~m? +# 35| mu35_13256(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13251 +# 35| r35_13257(bool) = Constant[0] : +# 35| v35_13258(void) = ConditionalBranch : r35_13257 #-----| False -> Block 947 #-----| True -> Block 1026 -# 2860| Block 947 -# 2860| r2860_1(glval) = VariableAddress[x947] : -# 2860| mu2860_2(String) = Uninitialized[x947] : &:r2860_1 -# 2860| r2860_3(glval) = FunctionAddress[String] : -# 2860| v2860_4(void) = Call[String] : func:r2860_3, this:r2860_1 -# 2860| mu2860_5(unknown) = ^CallSideEffect : ~m? -# 2860| mu2860_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2860_1 -# 2861| r2861_1(glval) = VariableAddress[x947] : -# 2861| r2861_2(glval) = FunctionAddress[~String] : -# 2861| v2861_3(void) = Call[~String] : func:r2861_2, this:r2861_1 -# 2861| mu2861_4(unknown) = ^CallSideEffect : ~m? -# 2861| v2861_5(void) = ^IndirectReadSideEffect[-1] : &:r2861_1, ~m? -# 2861| mu2861_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2861_1 -# 2861| r2861_7(bool) = Constant[0] : -# 2861| v2861_8(void) = ConditionalBranch : r2861_7 +# 35| Block 947 +# 35| r35_13259(glval) = VariableAddress[x947] : +# 35| mu35_13260(String) = Uninitialized[x947] : &:r35_13259 +# 35| r35_13261(glval) = FunctionAddress[String] : +# 35| v35_13262(void) = Call[String] : func:r35_13261, this:r35_13259 +# 35| mu35_13263(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13259 +# 35| r35_13265(glval) = VariableAddress[x947] : +# 35| r35_13266(glval) = FunctionAddress[~String] : +# 35| v35_13267(void) = Call[~String] : func:r35_13266, this:r35_13265 +# 35| mu35_13268(unknown) = ^CallSideEffect : ~m? +# 35| v35_13269(void) = ^IndirectReadSideEffect[-1] : &:r35_13265, ~m? +# 35| mu35_13270(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13265 +# 35| r35_13271(bool) = Constant[0] : +# 35| v35_13272(void) = ConditionalBranch : r35_13271 #-----| False -> Block 948 #-----| True -> Block 1026 -# 2863| Block 948 -# 2863| r2863_1(glval) = VariableAddress[x948] : -# 2863| mu2863_2(String) = Uninitialized[x948] : &:r2863_1 -# 2863| r2863_3(glval) = FunctionAddress[String] : -# 2863| v2863_4(void) = Call[String] : func:r2863_3, this:r2863_1 -# 2863| mu2863_5(unknown) = ^CallSideEffect : ~m? -# 2863| mu2863_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2863_1 -# 2864| r2864_1(glval) = VariableAddress[x948] : -# 2864| r2864_2(glval) = FunctionAddress[~String] : -# 2864| v2864_3(void) = Call[~String] : func:r2864_2, this:r2864_1 -# 2864| mu2864_4(unknown) = ^CallSideEffect : ~m? -# 2864| v2864_5(void) = ^IndirectReadSideEffect[-1] : &:r2864_1, ~m? -# 2864| mu2864_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2864_1 -# 2864| r2864_7(bool) = Constant[0] : -# 2864| v2864_8(void) = ConditionalBranch : r2864_7 +# 35| Block 948 +# 35| r35_13273(glval) = VariableAddress[x948] : +# 35| mu35_13274(String) = Uninitialized[x948] : &:r35_13273 +# 35| r35_13275(glval) = FunctionAddress[String] : +# 35| v35_13276(void) = Call[String] : func:r35_13275, this:r35_13273 +# 35| mu35_13277(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13273 +# 35| r35_13279(glval) = VariableAddress[x948] : +# 35| r35_13280(glval) = FunctionAddress[~String] : +# 35| v35_13281(void) = Call[~String] : func:r35_13280, this:r35_13279 +# 35| mu35_13282(unknown) = ^CallSideEffect : ~m? +# 35| v35_13283(void) = ^IndirectReadSideEffect[-1] : &:r35_13279, ~m? +# 35| mu35_13284(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13279 +# 35| r35_13285(bool) = Constant[0] : +# 35| v35_13286(void) = ConditionalBranch : r35_13285 #-----| False -> Block 949 #-----| True -> Block 1026 -# 2866| Block 949 -# 2866| r2866_1(glval) = VariableAddress[x949] : -# 2866| mu2866_2(String) = Uninitialized[x949] : &:r2866_1 -# 2866| r2866_3(glval) = FunctionAddress[String] : -# 2866| v2866_4(void) = Call[String] : func:r2866_3, this:r2866_1 -# 2866| mu2866_5(unknown) = ^CallSideEffect : ~m? -# 2866| mu2866_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2866_1 -# 2867| r2867_1(glval) = VariableAddress[x949] : -# 2867| r2867_2(glval) = FunctionAddress[~String] : -# 2867| v2867_3(void) = Call[~String] : func:r2867_2, this:r2867_1 -# 2867| mu2867_4(unknown) = ^CallSideEffect : ~m? -# 2867| v2867_5(void) = ^IndirectReadSideEffect[-1] : &:r2867_1, ~m? -# 2867| mu2867_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2867_1 -# 2867| r2867_7(bool) = Constant[0] : -# 2867| v2867_8(void) = ConditionalBranch : r2867_7 +# 35| Block 949 +# 35| r35_13287(glval) = VariableAddress[x949] : +# 35| mu35_13288(String) = Uninitialized[x949] : &:r35_13287 +# 35| r35_13289(glval) = FunctionAddress[String] : +# 35| v35_13290(void) = Call[String] : func:r35_13289, this:r35_13287 +# 35| mu35_13291(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13287 +# 35| r35_13293(glval) = VariableAddress[x949] : +# 35| r35_13294(glval) = FunctionAddress[~String] : +# 35| v35_13295(void) = Call[~String] : func:r35_13294, this:r35_13293 +# 35| mu35_13296(unknown) = ^CallSideEffect : ~m? +# 35| v35_13297(void) = ^IndirectReadSideEffect[-1] : &:r35_13293, ~m? +# 35| mu35_13298(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13293 +# 35| r35_13299(bool) = Constant[0] : +# 35| v35_13300(void) = ConditionalBranch : r35_13299 #-----| False -> Block 950 #-----| True -> Block 1026 -# 2869| Block 950 -# 2869| r2869_1(glval) = VariableAddress[x950] : -# 2869| mu2869_2(String) = Uninitialized[x950] : &:r2869_1 -# 2869| r2869_3(glval) = FunctionAddress[String] : -# 2869| v2869_4(void) = Call[String] : func:r2869_3, this:r2869_1 -# 2869| mu2869_5(unknown) = ^CallSideEffect : ~m? -# 2869| mu2869_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2869_1 -# 2870| r2870_1(glval) = VariableAddress[x950] : -# 2870| r2870_2(glval) = FunctionAddress[~String] : -# 2870| v2870_3(void) = Call[~String] : func:r2870_2, this:r2870_1 -# 2870| mu2870_4(unknown) = ^CallSideEffect : ~m? -# 2870| v2870_5(void) = ^IndirectReadSideEffect[-1] : &:r2870_1, ~m? -# 2870| mu2870_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2870_1 -# 2870| r2870_7(bool) = Constant[0] : -# 2870| v2870_8(void) = ConditionalBranch : r2870_7 +# 35| Block 950 +# 35| r35_13301(glval) = VariableAddress[x950] : +# 35| mu35_13302(String) = Uninitialized[x950] : &:r35_13301 +# 35| r35_13303(glval) = FunctionAddress[String] : +# 35| v35_13304(void) = Call[String] : func:r35_13303, this:r35_13301 +# 35| mu35_13305(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13301 +# 35| r35_13307(glval) = VariableAddress[x950] : +# 35| r35_13308(glval) = FunctionAddress[~String] : +# 35| v35_13309(void) = Call[~String] : func:r35_13308, this:r35_13307 +# 35| mu35_13310(unknown) = ^CallSideEffect : ~m? +# 35| v35_13311(void) = ^IndirectReadSideEffect[-1] : &:r35_13307, ~m? +# 35| mu35_13312(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13307 +# 35| r35_13313(bool) = Constant[0] : +# 35| v35_13314(void) = ConditionalBranch : r35_13313 #-----| False -> Block 951 #-----| True -> Block 1026 -# 2872| Block 951 -# 2872| r2872_1(glval) = VariableAddress[x951] : -# 2872| mu2872_2(String) = Uninitialized[x951] : &:r2872_1 -# 2872| r2872_3(glval) = FunctionAddress[String] : -# 2872| v2872_4(void) = Call[String] : func:r2872_3, this:r2872_1 -# 2872| mu2872_5(unknown) = ^CallSideEffect : ~m? -# 2872| mu2872_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2872_1 -# 2873| r2873_1(glval) = VariableAddress[x951] : -# 2873| r2873_2(glval) = FunctionAddress[~String] : -# 2873| v2873_3(void) = Call[~String] : func:r2873_2, this:r2873_1 -# 2873| mu2873_4(unknown) = ^CallSideEffect : ~m? -# 2873| v2873_5(void) = ^IndirectReadSideEffect[-1] : &:r2873_1, ~m? -# 2873| mu2873_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2873_1 -# 2873| r2873_7(bool) = Constant[0] : -# 2873| v2873_8(void) = ConditionalBranch : r2873_7 +# 35| Block 951 +# 35| r35_13315(glval) = VariableAddress[x951] : +# 35| mu35_13316(String) = Uninitialized[x951] : &:r35_13315 +# 35| r35_13317(glval) = FunctionAddress[String] : +# 35| v35_13318(void) = Call[String] : func:r35_13317, this:r35_13315 +# 35| mu35_13319(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13315 +# 35| r35_13321(glval) = VariableAddress[x951] : +# 35| r35_13322(glval) = FunctionAddress[~String] : +# 35| v35_13323(void) = Call[~String] : func:r35_13322, this:r35_13321 +# 35| mu35_13324(unknown) = ^CallSideEffect : ~m? +# 35| v35_13325(void) = ^IndirectReadSideEffect[-1] : &:r35_13321, ~m? +# 35| mu35_13326(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13321 +# 35| r35_13327(bool) = Constant[0] : +# 35| v35_13328(void) = ConditionalBranch : r35_13327 #-----| False -> Block 952 #-----| True -> Block 1026 -# 2875| Block 952 -# 2875| r2875_1(glval) = VariableAddress[x952] : -# 2875| mu2875_2(String) = Uninitialized[x952] : &:r2875_1 -# 2875| r2875_3(glval) = FunctionAddress[String] : -# 2875| v2875_4(void) = Call[String] : func:r2875_3, this:r2875_1 -# 2875| mu2875_5(unknown) = ^CallSideEffect : ~m? -# 2875| mu2875_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2875_1 -# 2876| r2876_1(glval) = VariableAddress[x952] : -# 2876| r2876_2(glval) = FunctionAddress[~String] : -# 2876| v2876_3(void) = Call[~String] : func:r2876_2, this:r2876_1 -# 2876| mu2876_4(unknown) = ^CallSideEffect : ~m? -# 2876| v2876_5(void) = ^IndirectReadSideEffect[-1] : &:r2876_1, ~m? -# 2876| mu2876_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2876_1 -# 2876| r2876_7(bool) = Constant[0] : -# 2876| v2876_8(void) = ConditionalBranch : r2876_7 +# 35| Block 952 +# 35| r35_13329(glval) = VariableAddress[x952] : +# 35| mu35_13330(String) = Uninitialized[x952] : &:r35_13329 +# 35| r35_13331(glval) = FunctionAddress[String] : +# 35| v35_13332(void) = Call[String] : func:r35_13331, this:r35_13329 +# 35| mu35_13333(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13329 +# 35| r35_13335(glval) = VariableAddress[x952] : +# 35| r35_13336(glval) = FunctionAddress[~String] : +# 35| v35_13337(void) = Call[~String] : func:r35_13336, this:r35_13335 +# 35| mu35_13338(unknown) = ^CallSideEffect : ~m? +# 35| v35_13339(void) = ^IndirectReadSideEffect[-1] : &:r35_13335, ~m? +# 35| mu35_13340(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13335 +# 35| r35_13341(bool) = Constant[0] : +# 35| v35_13342(void) = ConditionalBranch : r35_13341 #-----| False -> Block 953 #-----| True -> Block 1026 -# 2878| Block 953 -# 2878| r2878_1(glval) = VariableAddress[x953] : -# 2878| mu2878_2(String) = Uninitialized[x953] : &:r2878_1 -# 2878| r2878_3(glval) = FunctionAddress[String] : -# 2878| v2878_4(void) = Call[String] : func:r2878_3, this:r2878_1 -# 2878| mu2878_5(unknown) = ^CallSideEffect : ~m? -# 2878| mu2878_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2878_1 -# 2879| r2879_1(glval) = VariableAddress[x953] : -# 2879| r2879_2(glval) = FunctionAddress[~String] : -# 2879| v2879_3(void) = Call[~String] : func:r2879_2, this:r2879_1 -# 2879| mu2879_4(unknown) = ^CallSideEffect : ~m? -# 2879| v2879_5(void) = ^IndirectReadSideEffect[-1] : &:r2879_1, ~m? -# 2879| mu2879_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2879_1 -# 2879| r2879_7(bool) = Constant[0] : -# 2879| v2879_8(void) = ConditionalBranch : r2879_7 +# 35| Block 953 +# 35| r35_13343(glval) = VariableAddress[x953] : +# 35| mu35_13344(String) = Uninitialized[x953] : &:r35_13343 +# 35| r35_13345(glval) = FunctionAddress[String] : +# 35| v35_13346(void) = Call[String] : func:r35_13345, this:r35_13343 +# 35| mu35_13347(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13343 +# 35| r35_13349(glval) = VariableAddress[x953] : +# 35| r35_13350(glval) = FunctionAddress[~String] : +# 35| v35_13351(void) = Call[~String] : func:r35_13350, this:r35_13349 +# 35| mu35_13352(unknown) = ^CallSideEffect : ~m? +# 35| v35_13353(void) = ^IndirectReadSideEffect[-1] : &:r35_13349, ~m? +# 35| mu35_13354(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13349 +# 35| r35_13355(bool) = Constant[0] : +# 35| v35_13356(void) = ConditionalBranch : r35_13355 #-----| False -> Block 954 #-----| True -> Block 1026 -# 2881| Block 954 -# 2881| r2881_1(glval) = VariableAddress[x954] : -# 2881| mu2881_2(String) = Uninitialized[x954] : &:r2881_1 -# 2881| r2881_3(glval) = FunctionAddress[String] : -# 2881| v2881_4(void) = Call[String] : func:r2881_3, this:r2881_1 -# 2881| mu2881_5(unknown) = ^CallSideEffect : ~m? -# 2881| mu2881_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2881_1 -# 2882| r2882_1(glval) = VariableAddress[x954] : -# 2882| r2882_2(glval) = FunctionAddress[~String] : -# 2882| v2882_3(void) = Call[~String] : func:r2882_2, this:r2882_1 -# 2882| mu2882_4(unknown) = ^CallSideEffect : ~m? -# 2882| v2882_5(void) = ^IndirectReadSideEffect[-1] : &:r2882_1, ~m? -# 2882| mu2882_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2882_1 -# 2882| r2882_7(bool) = Constant[0] : -# 2882| v2882_8(void) = ConditionalBranch : r2882_7 +# 35| Block 954 +# 35| r35_13357(glval) = VariableAddress[x954] : +# 35| mu35_13358(String) = Uninitialized[x954] : &:r35_13357 +# 35| r35_13359(glval) = FunctionAddress[String] : +# 35| v35_13360(void) = Call[String] : func:r35_13359, this:r35_13357 +# 35| mu35_13361(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13362(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13357 +# 35| r35_13363(glval) = VariableAddress[x954] : +# 35| r35_13364(glval) = FunctionAddress[~String] : +# 35| v35_13365(void) = Call[~String] : func:r35_13364, this:r35_13363 +# 35| mu35_13366(unknown) = ^CallSideEffect : ~m? +# 35| v35_13367(void) = ^IndirectReadSideEffect[-1] : &:r35_13363, ~m? +# 35| mu35_13368(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13363 +# 35| r35_13369(bool) = Constant[0] : +# 35| v35_13370(void) = ConditionalBranch : r35_13369 #-----| False -> Block 955 #-----| True -> Block 1026 -# 2884| Block 955 -# 2884| r2884_1(glval) = VariableAddress[x955] : -# 2884| mu2884_2(String) = Uninitialized[x955] : &:r2884_1 -# 2884| r2884_3(glval) = FunctionAddress[String] : -# 2884| v2884_4(void) = Call[String] : func:r2884_3, this:r2884_1 -# 2884| mu2884_5(unknown) = ^CallSideEffect : ~m? -# 2884| mu2884_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2884_1 -# 2885| r2885_1(glval) = VariableAddress[x955] : -# 2885| r2885_2(glval) = FunctionAddress[~String] : -# 2885| v2885_3(void) = Call[~String] : func:r2885_2, this:r2885_1 -# 2885| mu2885_4(unknown) = ^CallSideEffect : ~m? -# 2885| v2885_5(void) = ^IndirectReadSideEffect[-1] : &:r2885_1, ~m? -# 2885| mu2885_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2885_1 -# 2885| r2885_7(bool) = Constant[0] : -# 2885| v2885_8(void) = ConditionalBranch : r2885_7 +# 35| Block 955 +# 35| r35_13371(glval) = VariableAddress[x955] : +# 35| mu35_13372(String) = Uninitialized[x955] : &:r35_13371 +# 35| r35_13373(glval) = FunctionAddress[String] : +# 35| v35_13374(void) = Call[String] : func:r35_13373, this:r35_13371 +# 35| mu35_13375(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13376(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13371 +# 35| r35_13377(glval) = VariableAddress[x955] : +# 35| r35_13378(glval) = FunctionAddress[~String] : +# 35| v35_13379(void) = Call[~String] : func:r35_13378, this:r35_13377 +# 35| mu35_13380(unknown) = ^CallSideEffect : ~m? +# 35| v35_13381(void) = ^IndirectReadSideEffect[-1] : &:r35_13377, ~m? +# 35| mu35_13382(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13377 +# 35| r35_13383(bool) = Constant[0] : +# 35| v35_13384(void) = ConditionalBranch : r35_13383 #-----| False -> Block 956 #-----| True -> Block 1026 -# 2887| Block 956 -# 2887| r2887_1(glval) = VariableAddress[x956] : -# 2887| mu2887_2(String) = Uninitialized[x956] : &:r2887_1 -# 2887| r2887_3(glval) = FunctionAddress[String] : -# 2887| v2887_4(void) = Call[String] : func:r2887_3, this:r2887_1 -# 2887| mu2887_5(unknown) = ^CallSideEffect : ~m? -# 2887| mu2887_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2887_1 -# 2888| r2888_1(glval) = VariableAddress[x956] : -# 2888| r2888_2(glval) = FunctionAddress[~String] : -# 2888| v2888_3(void) = Call[~String] : func:r2888_2, this:r2888_1 -# 2888| mu2888_4(unknown) = ^CallSideEffect : ~m? -# 2888| v2888_5(void) = ^IndirectReadSideEffect[-1] : &:r2888_1, ~m? -# 2888| mu2888_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2888_1 -# 2888| r2888_7(bool) = Constant[0] : -# 2888| v2888_8(void) = ConditionalBranch : r2888_7 +# 35| Block 956 +# 35| r35_13385(glval) = VariableAddress[x956] : +# 35| mu35_13386(String) = Uninitialized[x956] : &:r35_13385 +# 35| r35_13387(glval) = FunctionAddress[String] : +# 35| v35_13388(void) = Call[String] : func:r35_13387, this:r35_13385 +# 35| mu35_13389(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13390(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13385 +# 35| r35_13391(glval) = VariableAddress[x956] : +# 35| r35_13392(glval) = FunctionAddress[~String] : +# 35| v35_13393(void) = Call[~String] : func:r35_13392, this:r35_13391 +# 35| mu35_13394(unknown) = ^CallSideEffect : ~m? +# 35| v35_13395(void) = ^IndirectReadSideEffect[-1] : &:r35_13391, ~m? +# 35| mu35_13396(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13391 +# 35| r35_13397(bool) = Constant[0] : +# 35| v35_13398(void) = ConditionalBranch : r35_13397 #-----| False -> Block 957 #-----| True -> Block 1026 -# 2890| Block 957 -# 2890| r2890_1(glval) = VariableAddress[x957] : -# 2890| mu2890_2(String) = Uninitialized[x957] : &:r2890_1 -# 2890| r2890_3(glval) = FunctionAddress[String] : -# 2890| v2890_4(void) = Call[String] : func:r2890_3, this:r2890_1 -# 2890| mu2890_5(unknown) = ^CallSideEffect : ~m? -# 2890| mu2890_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2890_1 -# 2891| r2891_1(glval) = VariableAddress[x957] : -# 2891| r2891_2(glval) = FunctionAddress[~String] : -# 2891| v2891_3(void) = Call[~String] : func:r2891_2, this:r2891_1 -# 2891| mu2891_4(unknown) = ^CallSideEffect : ~m? -# 2891| v2891_5(void) = ^IndirectReadSideEffect[-1] : &:r2891_1, ~m? -# 2891| mu2891_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2891_1 -# 2891| r2891_7(bool) = Constant[0] : -# 2891| v2891_8(void) = ConditionalBranch : r2891_7 +# 35| Block 957 +# 35| r35_13399(glval) = VariableAddress[x957] : +# 35| mu35_13400(String) = Uninitialized[x957] : &:r35_13399 +# 35| r35_13401(glval) = FunctionAddress[String] : +# 35| v35_13402(void) = Call[String] : func:r35_13401, this:r35_13399 +# 35| mu35_13403(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13404(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13399 +# 35| r35_13405(glval) = VariableAddress[x957] : +# 35| r35_13406(glval) = FunctionAddress[~String] : +# 35| v35_13407(void) = Call[~String] : func:r35_13406, this:r35_13405 +# 35| mu35_13408(unknown) = ^CallSideEffect : ~m? +# 35| v35_13409(void) = ^IndirectReadSideEffect[-1] : &:r35_13405, ~m? +# 35| mu35_13410(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13405 +# 35| r35_13411(bool) = Constant[0] : +# 35| v35_13412(void) = ConditionalBranch : r35_13411 #-----| False -> Block 958 #-----| True -> Block 1026 -# 2893| Block 958 -# 2893| r2893_1(glval) = VariableAddress[x958] : -# 2893| mu2893_2(String) = Uninitialized[x958] : &:r2893_1 -# 2893| r2893_3(glval) = FunctionAddress[String] : -# 2893| v2893_4(void) = Call[String] : func:r2893_3, this:r2893_1 -# 2893| mu2893_5(unknown) = ^CallSideEffect : ~m? -# 2893| mu2893_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2893_1 -# 2894| r2894_1(glval) = VariableAddress[x958] : -# 2894| r2894_2(glval) = FunctionAddress[~String] : -# 2894| v2894_3(void) = Call[~String] : func:r2894_2, this:r2894_1 -# 2894| mu2894_4(unknown) = ^CallSideEffect : ~m? -# 2894| v2894_5(void) = ^IndirectReadSideEffect[-1] : &:r2894_1, ~m? -# 2894| mu2894_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2894_1 -# 2894| r2894_7(bool) = Constant[0] : -# 2894| v2894_8(void) = ConditionalBranch : r2894_7 +# 35| Block 958 +# 35| r35_13413(glval) = VariableAddress[x958] : +# 35| mu35_13414(String) = Uninitialized[x958] : &:r35_13413 +# 35| r35_13415(glval) = FunctionAddress[String] : +# 35| v35_13416(void) = Call[String] : func:r35_13415, this:r35_13413 +# 35| mu35_13417(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13418(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13413 +# 35| r35_13419(glval) = VariableAddress[x958] : +# 35| r35_13420(glval) = FunctionAddress[~String] : +# 35| v35_13421(void) = Call[~String] : func:r35_13420, this:r35_13419 +# 35| mu35_13422(unknown) = ^CallSideEffect : ~m? +# 35| v35_13423(void) = ^IndirectReadSideEffect[-1] : &:r35_13419, ~m? +# 35| mu35_13424(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13419 +# 35| r35_13425(bool) = Constant[0] : +# 35| v35_13426(void) = ConditionalBranch : r35_13425 #-----| False -> Block 959 #-----| True -> Block 1026 -# 2896| Block 959 -# 2896| r2896_1(glval) = VariableAddress[x959] : -# 2896| mu2896_2(String) = Uninitialized[x959] : &:r2896_1 -# 2896| r2896_3(glval) = FunctionAddress[String] : -# 2896| v2896_4(void) = Call[String] : func:r2896_3, this:r2896_1 -# 2896| mu2896_5(unknown) = ^CallSideEffect : ~m? -# 2896| mu2896_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2896_1 -# 2897| r2897_1(glval) = VariableAddress[x959] : -# 2897| r2897_2(glval) = FunctionAddress[~String] : -# 2897| v2897_3(void) = Call[~String] : func:r2897_2, this:r2897_1 -# 2897| mu2897_4(unknown) = ^CallSideEffect : ~m? -# 2897| v2897_5(void) = ^IndirectReadSideEffect[-1] : &:r2897_1, ~m? -# 2897| mu2897_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2897_1 -# 2897| r2897_7(bool) = Constant[0] : -# 2897| v2897_8(void) = ConditionalBranch : r2897_7 +# 35| Block 959 +# 35| r35_13427(glval) = VariableAddress[x959] : +# 35| mu35_13428(String) = Uninitialized[x959] : &:r35_13427 +# 35| r35_13429(glval) = FunctionAddress[String] : +# 35| v35_13430(void) = Call[String] : func:r35_13429, this:r35_13427 +# 35| mu35_13431(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13432(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13427 +# 35| r35_13433(glval) = VariableAddress[x959] : +# 35| r35_13434(glval) = FunctionAddress[~String] : +# 35| v35_13435(void) = Call[~String] : func:r35_13434, this:r35_13433 +# 35| mu35_13436(unknown) = ^CallSideEffect : ~m? +# 35| v35_13437(void) = ^IndirectReadSideEffect[-1] : &:r35_13433, ~m? +# 35| mu35_13438(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13433 +# 35| r35_13439(bool) = Constant[0] : +# 35| v35_13440(void) = ConditionalBranch : r35_13439 #-----| False -> Block 960 #-----| True -> Block 1026 -# 2899| Block 960 -# 2899| r2899_1(glval) = VariableAddress[x960] : -# 2899| mu2899_2(String) = Uninitialized[x960] : &:r2899_1 -# 2899| r2899_3(glval) = FunctionAddress[String] : -# 2899| v2899_4(void) = Call[String] : func:r2899_3, this:r2899_1 -# 2899| mu2899_5(unknown) = ^CallSideEffect : ~m? -# 2899| mu2899_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2899_1 -# 2900| r2900_1(glval) = VariableAddress[x960] : -# 2900| r2900_2(glval) = FunctionAddress[~String] : -# 2900| v2900_3(void) = Call[~String] : func:r2900_2, this:r2900_1 -# 2900| mu2900_4(unknown) = ^CallSideEffect : ~m? -# 2900| v2900_5(void) = ^IndirectReadSideEffect[-1] : &:r2900_1, ~m? -# 2900| mu2900_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2900_1 -# 2900| r2900_7(bool) = Constant[0] : -# 2900| v2900_8(void) = ConditionalBranch : r2900_7 +# 35| Block 960 +# 35| r35_13441(glval) = VariableAddress[x960] : +# 35| mu35_13442(String) = Uninitialized[x960] : &:r35_13441 +# 35| r35_13443(glval) = FunctionAddress[String] : +# 35| v35_13444(void) = Call[String] : func:r35_13443, this:r35_13441 +# 35| mu35_13445(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13446(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13441 +# 35| r35_13447(glval) = VariableAddress[x960] : +# 35| r35_13448(glval) = FunctionAddress[~String] : +# 35| v35_13449(void) = Call[~String] : func:r35_13448, this:r35_13447 +# 35| mu35_13450(unknown) = ^CallSideEffect : ~m? +# 35| v35_13451(void) = ^IndirectReadSideEffect[-1] : &:r35_13447, ~m? +# 35| mu35_13452(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13447 +# 35| r35_13453(bool) = Constant[0] : +# 35| v35_13454(void) = ConditionalBranch : r35_13453 #-----| False -> Block 961 #-----| True -> Block 1026 -# 2902| Block 961 -# 2902| r2902_1(glval) = VariableAddress[x961] : -# 2902| mu2902_2(String) = Uninitialized[x961] : &:r2902_1 -# 2902| r2902_3(glval) = FunctionAddress[String] : -# 2902| v2902_4(void) = Call[String] : func:r2902_3, this:r2902_1 -# 2902| mu2902_5(unknown) = ^CallSideEffect : ~m? -# 2902| mu2902_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2902_1 -# 2903| r2903_1(glval) = VariableAddress[x961] : -# 2903| r2903_2(glval) = FunctionAddress[~String] : -# 2903| v2903_3(void) = Call[~String] : func:r2903_2, this:r2903_1 -# 2903| mu2903_4(unknown) = ^CallSideEffect : ~m? -# 2903| v2903_5(void) = ^IndirectReadSideEffect[-1] : &:r2903_1, ~m? -# 2903| mu2903_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2903_1 -# 2903| r2903_7(bool) = Constant[0] : -# 2903| v2903_8(void) = ConditionalBranch : r2903_7 +# 35| Block 961 +# 35| r35_13455(glval) = VariableAddress[x961] : +# 35| mu35_13456(String) = Uninitialized[x961] : &:r35_13455 +# 35| r35_13457(glval) = FunctionAddress[String] : +# 35| v35_13458(void) = Call[String] : func:r35_13457, this:r35_13455 +# 35| mu35_13459(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13460(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13455 +# 35| r35_13461(glval) = VariableAddress[x961] : +# 35| r35_13462(glval) = FunctionAddress[~String] : +# 35| v35_13463(void) = Call[~String] : func:r35_13462, this:r35_13461 +# 35| mu35_13464(unknown) = ^CallSideEffect : ~m? +# 35| v35_13465(void) = ^IndirectReadSideEffect[-1] : &:r35_13461, ~m? +# 35| mu35_13466(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13461 +# 35| r35_13467(bool) = Constant[0] : +# 35| v35_13468(void) = ConditionalBranch : r35_13467 #-----| False -> Block 962 #-----| True -> Block 1026 -# 2905| Block 962 -# 2905| r2905_1(glval) = VariableAddress[x962] : -# 2905| mu2905_2(String) = Uninitialized[x962] : &:r2905_1 -# 2905| r2905_3(glval) = FunctionAddress[String] : -# 2905| v2905_4(void) = Call[String] : func:r2905_3, this:r2905_1 -# 2905| mu2905_5(unknown) = ^CallSideEffect : ~m? -# 2905| mu2905_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2905_1 -# 2906| r2906_1(glval) = VariableAddress[x962] : -# 2906| r2906_2(glval) = FunctionAddress[~String] : -# 2906| v2906_3(void) = Call[~String] : func:r2906_2, this:r2906_1 -# 2906| mu2906_4(unknown) = ^CallSideEffect : ~m? -# 2906| v2906_5(void) = ^IndirectReadSideEffect[-1] : &:r2906_1, ~m? -# 2906| mu2906_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2906_1 -# 2906| r2906_7(bool) = Constant[0] : -# 2906| v2906_8(void) = ConditionalBranch : r2906_7 +# 35| Block 962 +# 35| r35_13469(glval) = VariableAddress[x962] : +# 35| mu35_13470(String) = Uninitialized[x962] : &:r35_13469 +# 35| r35_13471(glval) = FunctionAddress[String] : +# 35| v35_13472(void) = Call[String] : func:r35_13471, this:r35_13469 +# 35| mu35_13473(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13474(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13469 +# 35| r35_13475(glval) = VariableAddress[x962] : +# 35| r35_13476(glval) = FunctionAddress[~String] : +# 35| v35_13477(void) = Call[~String] : func:r35_13476, this:r35_13475 +# 35| mu35_13478(unknown) = ^CallSideEffect : ~m? +# 35| v35_13479(void) = ^IndirectReadSideEffect[-1] : &:r35_13475, ~m? +# 35| mu35_13480(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13475 +# 35| r35_13481(bool) = Constant[0] : +# 35| v35_13482(void) = ConditionalBranch : r35_13481 #-----| False -> Block 963 #-----| True -> Block 1026 -# 2908| Block 963 -# 2908| r2908_1(glval) = VariableAddress[x963] : -# 2908| mu2908_2(String) = Uninitialized[x963] : &:r2908_1 -# 2908| r2908_3(glval) = FunctionAddress[String] : -# 2908| v2908_4(void) = Call[String] : func:r2908_3, this:r2908_1 -# 2908| mu2908_5(unknown) = ^CallSideEffect : ~m? -# 2908| mu2908_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2908_1 -# 2909| r2909_1(glval) = VariableAddress[x963] : -# 2909| r2909_2(glval) = FunctionAddress[~String] : -# 2909| v2909_3(void) = Call[~String] : func:r2909_2, this:r2909_1 -# 2909| mu2909_4(unknown) = ^CallSideEffect : ~m? -# 2909| v2909_5(void) = ^IndirectReadSideEffect[-1] : &:r2909_1, ~m? -# 2909| mu2909_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2909_1 -# 2909| r2909_7(bool) = Constant[0] : -# 2909| v2909_8(void) = ConditionalBranch : r2909_7 +# 35| Block 963 +# 35| r35_13483(glval) = VariableAddress[x963] : +# 35| mu35_13484(String) = Uninitialized[x963] : &:r35_13483 +# 35| r35_13485(glval) = FunctionAddress[String] : +# 35| v35_13486(void) = Call[String] : func:r35_13485, this:r35_13483 +# 35| mu35_13487(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13488(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13483 +# 35| r35_13489(glval) = VariableAddress[x963] : +# 35| r35_13490(glval) = FunctionAddress[~String] : +# 35| v35_13491(void) = Call[~String] : func:r35_13490, this:r35_13489 +# 35| mu35_13492(unknown) = ^CallSideEffect : ~m? +# 35| v35_13493(void) = ^IndirectReadSideEffect[-1] : &:r35_13489, ~m? +# 35| mu35_13494(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13489 +# 35| r35_13495(bool) = Constant[0] : +# 35| v35_13496(void) = ConditionalBranch : r35_13495 #-----| False -> Block 964 #-----| True -> Block 1026 -# 2911| Block 964 -# 2911| r2911_1(glval) = VariableAddress[x964] : -# 2911| mu2911_2(String) = Uninitialized[x964] : &:r2911_1 -# 2911| r2911_3(glval) = FunctionAddress[String] : -# 2911| v2911_4(void) = Call[String] : func:r2911_3, this:r2911_1 -# 2911| mu2911_5(unknown) = ^CallSideEffect : ~m? -# 2911| mu2911_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2911_1 -# 2912| r2912_1(glval) = VariableAddress[x964] : -# 2912| r2912_2(glval) = FunctionAddress[~String] : -# 2912| v2912_3(void) = Call[~String] : func:r2912_2, this:r2912_1 -# 2912| mu2912_4(unknown) = ^CallSideEffect : ~m? -# 2912| v2912_5(void) = ^IndirectReadSideEffect[-1] : &:r2912_1, ~m? -# 2912| mu2912_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2912_1 -# 2912| r2912_7(bool) = Constant[0] : -# 2912| v2912_8(void) = ConditionalBranch : r2912_7 +# 35| Block 964 +# 35| r35_13497(glval) = VariableAddress[x964] : +# 35| mu35_13498(String) = Uninitialized[x964] : &:r35_13497 +# 35| r35_13499(glval) = FunctionAddress[String] : +# 35| v35_13500(void) = Call[String] : func:r35_13499, this:r35_13497 +# 35| mu35_13501(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13502(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13497 +# 35| r35_13503(glval) = VariableAddress[x964] : +# 35| r35_13504(glval) = FunctionAddress[~String] : +# 35| v35_13505(void) = Call[~String] : func:r35_13504, this:r35_13503 +# 35| mu35_13506(unknown) = ^CallSideEffect : ~m? +# 35| v35_13507(void) = ^IndirectReadSideEffect[-1] : &:r35_13503, ~m? +# 35| mu35_13508(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13503 +# 35| r35_13509(bool) = Constant[0] : +# 35| v35_13510(void) = ConditionalBranch : r35_13509 #-----| False -> Block 965 #-----| True -> Block 1026 -# 2914| Block 965 -# 2914| r2914_1(glval) = VariableAddress[x965] : -# 2914| mu2914_2(String) = Uninitialized[x965] : &:r2914_1 -# 2914| r2914_3(glval) = FunctionAddress[String] : -# 2914| v2914_4(void) = Call[String] : func:r2914_3, this:r2914_1 -# 2914| mu2914_5(unknown) = ^CallSideEffect : ~m? -# 2914| mu2914_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2914_1 -# 2915| r2915_1(glval) = VariableAddress[x965] : -# 2915| r2915_2(glval) = FunctionAddress[~String] : -# 2915| v2915_3(void) = Call[~String] : func:r2915_2, this:r2915_1 -# 2915| mu2915_4(unknown) = ^CallSideEffect : ~m? -# 2915| v2915_5(void) = ^IndirectReadSideEffect[-1] : &:r2915_1, ~m? -# 2915| mu2915_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2915_1 -# 2915| r2915_7(bool) = Constant[0] : -# 2915| v2915_8(void) = ConditionalBranch : r2915_7 +# 35| Block 965 +# 35| r35_13511(glval) = VariableAddress[x965] : +# 35| mu35_13512(String) = Uninitialized[x965] : &:r35_13511 +# 35| r35_13513(glval) = FunctionAddress[String] : +# 35| v35_13514(void) = Call[String] : func:r35_13513, this:r35_13511 +# 35| mu35_13515(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13516(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13511 +# 35| r35_13517(glval) = VariableAddress[x965] : +# 35| r35_13518(glval) = FunctionAddress[~String] : +# 35| v35_13519(void) = Call[~String] : func:r35_13518, this:r35_13517 +# 35| mu35_13520(unknown) = ^CallSideEffect : ~m? +# 35| v35_13521(void) = ^IndirectReadSideEffect[-1] : &:r35_13517, ~m? +# 35| mu35_13522(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13517 +# 35| r35_13523(bool) = Constant[0] : +# 35| v35_13524(void) = ConditionalBranch : r35_13523 #-----| False -> Block 966 #-----| True -> Block 1026 -# 2917| Block 966 -# 2917| r2917_1(glval) = VariableAddress[x966] : -# 2917| mu2917_2(String) = Uninitialized[x966] : &:r2917_1 -# 2917| r2917_3(glval) = FunctionAddress[String] : -# 2917| v2917_4(void) = Call[String] : func:r2917_3, this:r2917_1 -# 2917| mu2917_5(unknown) = ^CallSideEffect : ~m? -# 2917| mu2917_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2917_1 -# 2918| r2918_1(glval) = VariableAddress[x966] : -# 2918| r2918_2(glval) = FunctionAddress[~String] : -# 2918| v2918_3(void) = Call[~String] : func:r2918_2, this:r2918_1 -# 2918| mu2918_4(unknown) = ^CallSideEffect : ~m? -# 2918| v2918_5(void) = ^IndirectReadSideEffect[-1] : &:r2918_1, ~m? -# 2918| mu2918_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2918_1 -# 2918| r2918_7(bool) = Constant[0] : -# 2918| v2918_8(void) = ConditionalBranch : r2918_7 +# 35| Block 966 +# 35| r35_13525(glval) = VariableAddress[x966] : +# 35| mu35_13526(String) = Uninitialized[x966] : &:r35_13525 +# 35| r35_13527(glval) = FunctionAddress[String] : +# 35| v35_13528(void) = Call[String] : func:r35_13527, this:r35_13525 +# 35| mu35_13529(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13530(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13525 +# 35| r35_13531(glval) = VariableAddress[x966] : +# 35| r35_13532(glval) = FunctionAddress[~String] : +# 35| v35_13533(void) = Call[~String] : func:r35_13532, this:r35_13531 +# 35| mu35_13534(unknown) = ^CallSideEffect : ~m? +# 35| v35_13535(void) = ^IndirectReadSideEffect[-1] : &:r35_13531, ~m? +# 35| mu35_13536(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13531 +# 35| r35_13537(bool) = Constant[0] : +# 35| v35_13538(void) = ConditionalBranch : r35_13537 #-----| False -> Block 967 #-----| True -> Block 1026 -# 2920| Block 967 -# 2920| r2920_1(glval) = VariableAddress[x967] : -# 2920| mu2920_2(String) = Uninitialized[x967] : &:r2920_1 -# 2920| r2920_3(glval) = FunctionAddress[String] : -# 2920| v2920_4(void) = Call[String] : func:r2920_3, this:r2920_1 -# 2920| mu2920_5(unknown) = ^CallSideEffect : ~m? -# 2920| mu2920_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2920_1 -# 2921| r2921_1(glval) = VariableAddress[x967] : -# 2921| r2921_2(glval) = FunctionAddress[~String] : -# 2921| v2921_3(void) = Call[~String] : func:r2921_2, this:r2921_1 -# 2921| mu2921_4(unknown) = ^CallSideEffect : ~m? -# 2921| v2921_5(void) = ^IndirectReadSideEffect[-1] : &:r2921_1, ~m? -# 2921| mu2921_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2921_1 -# 2921| r2921_7(bool) = Constant[0] : -# 2921| v2921_8(void) = ConditionalBranch : r2921_7 +# 35| Block 967 +# 35| r35_13539(glval) = VariableAddress[x967] : +# 35| mu35_13540(String) = Uninitialized[x967] : &:r35_13539 +# 35| r35_13541(glval) = FunctionAddress[String] : +# 35| v35_13542(void) = Call[String] : func:r35_13541, this:r35_13539 +# 35| mu35_13543(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13544(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13539 +# 35| r35_13545(glval) = VariableAddress[x967] : +# 35| r35_13546(glval) = FunctionAddress[~String] : +# 35| v35_13547(void) = Call[~String] : func:r35_13546, this:r35_13545 +# 35| mu35_13548(unknown) = ^CallSideEffect : ~m? +# 35| v35_13549(void) = ^IndirectReadSideEffect[-1] : &:r35_13545, ~m? +# 35| mu35_13550(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13545 +# 35| r35_13551(bool) = Constant[0] : +# 35| v35_13552(void) = ConditionalBranch : r35_13551 #-----| False -> Block 968 #-----| True -> Block 1026 -# 2923| Block 968 -# 2923| r2923_1(glval) = VariableAddress[x968] : -# 2923| mu2923_2(String) = Uninitialized[x968] : &:r2923_1 -# 2923| r2923_3(glval) = FunctionAddress[String] : -# 2923| v2923_4(void) = Call[String] : func:r2923_3, this:r2923_1 -# 2923| mu2923_5(unknown) = ^CallSideEffect : ~m? -# 2923| mu2923_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2923_1 -# 2924| r2924_1(glval) = VariableAddress[x968] : -# 2924| r2924_2(glval) = FunctionAddress[~String] : -# 2924| v2924_3(void) = Call[~String] : func:r2924_2, this:r2924_1 -# 2924| mu2924_4(unknown) = ^CallSideEffect : ~m? -# 2924| v2924_5(void) = ^IndirectReadSideEffect[-1] : &:r2924_1, ~m? -# 2924| mu2924_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2924_1 -# 2924| r2924_7(bool) = Constant[0] : -# 2924| v2924_8(void) = ConditionalBranch : r2924_7 +# 35| Block 968 +# 35| r35_13553(glval) = VariableAddress[x968] : +# 35| mu35_13554(String) = Uninitialized[x968] : &:r35_13553 +# 35| r35_13555(glval) = FunctionAddress[String] : +# 35| v35_13556(void) = Call[String] : func:r35_13555, this:r35_13553 +# 35| mu35_13557(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13558(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13553 +# 35| r35_13559(glval) = VariableAddress[x968] : +# 35| r35_13560(glval) = FunctionAddress[~String] : +# 35| v35_13561(void) = Call[~String] : func:r35_13560, this:r35_13559 +# 35| mu35_13562(unknown) = ^CallSideEffect : ~m? +# 35| v35_13563(void) = ^IndirectReadSideEffect[-1] : &:r35_13559, ~m? +# 35| mu35_13564(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13559 +# 35| r35_13565(bool) = Constant[0] : +# 35| v35_13566(void) = ConditionalBranch : r35_13565 #-----| False -> Block 969 #-----| True -> Block 1026 -# 2926| Block 969 -# 2926| r2926_1(glval) = VariableAddress[x969] : -# 2926| mu2926_2(String) = Uninitialized[x969] : &:r2926_1 -# 2926| r2926_3(glval) = FunctionAddress[String] : -# 2926| v2926_4(void) = Call[String] : func:r2926_3, this:r2926_1 -# 2926| mu2926_5(unknown) = ^CallSideEffect : ~m? -# 2926| mu2926_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2926_1 -# 2927| r2927_1(glval) = VariableAddress[x969] : -# 2927| r2927_2(glval) = FunctionAddress[~String] : -# 2927| v2927_3(void) = Call[~String] : func:r2927_2, this:r2927_1 -# 2927| mu2927_4(unknown) = ^CallSideEffect : ~m? -# 2927| v2927_5(void) = ^IndirectReadSideEffect[-1] : &:r2927_1, ~m? -# 2927| mu2927_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2927_1 -# 2927| r2927_7(bool) = Constant[0] : -# 2927| v2927_8(void) = ConditionalBranch : r2927_7 +# 35| Block 969 +# 35| r35_13567(glval) = VariableAddress[x969] : +# 35| mu35_13568(String) = Uninitialized[x969] : &:r35_13567 +# 35| r35_13569(glval) = FunctionAddress[String] : +# 35| v35_13570(void) = Call[String] : func:r35_13569, this:r35_13567 +# 35| mu35_13571(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13572(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13567 +# 35| r35_13573(glval) = VariableAddress[x969] : +# 35| r35_13574(glval) = FunctionAddress[~String] : +# 35| v35_13575(void) = Call[~String] : func:r35_13574, this:r35_13573 +# 35| mu35_13576(unknown) = ^CallSideEffect : ~m? +# 35| v35_13577(void) = ^IndirectReadSideEffect[-1] : &:r35_13573, ~m? +# 35| mu35_13578(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13573 +# 35| r35_13579(bool) = Constant[0] : +# 35| v35_13580(void) = ConditionalBranch : r35_13579 #-----| False -> Block 970 #-----| True -> Block 1026 -# 2929| Block 970 -# 2929| r2929_1(glval) = VariableAddress[x970] : -# 2929| mu2929_2(String) = Uninitialized[x970] : &:r2929_1 -# 2929| r2929_3(glval) = FunctionAddress[String] : -# 2929| v2929_4(void) = Call[String] : func:r2929_3, this:r2929_1 -# 2929| mu2929_5(unknown) = ^CallSideEffect : ~m? -# 2929| mu2929_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2929_1 -# 2930| r2930_1(glval) = VariableAddress[x970] : -# 2930| r2930_2(glval) = FunctionAddress[~String] : -# 2930| v2930_3(void) = Call[~String] : func:r2930_2, this:r2930_1 -# 2930| mu2930_4(unknown) = ^CallSideEffect : ~m? -# 2930| v2930_5(void) = ^IndirectReadSideEffect[-1] : &:r2930_1, ~m? -# 2930| mu2930_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2930_1 -# 2930| r2930_7(bool) = Constant[0] : -# 2930| v2930_8(void) = ConditionalBranch : r2930_7 +# 35| Block 970 +# 35| r35_13581(glval) = VariableAddress[x970] : +# 35| mu35_13582(String) = Uninitialized[x970] : &:r35_13581 +# 35| r35_13583(glval) = FunctionAddress[String] : +# 35| v35_13584(void) = Call[String] : func:r35_13583, this:r35_13581 +# 35| mu35_13585(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13586(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13581 +# 35| r35_13587(glval) = VariableAddress[x970] : +# 35| r35_13588(glval) = FunctionAddress[~String] : +# 35| v35_13589(void) = Call[~String] : func:r35_13588, this:r35_13587 +# 35| mu35_13590(unknown) = ^CallSideEffect : ~m? +# 35| v35_13591(void) = ^IndirectReadSideEffect[-1] : &:r35_13587, ~m? +# 35| mu35_13592(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13587 +# 35| r35_13593(bool) = Constant[0] : +# 35| v35_13594(void) = ConditionalBranch : r35_13593 #-----| False -> Block 971 #-----| True -> Block 1026 -# 2932| Block 971 -# 2932| r2932_1(glval) = VariableAddress[x971] : -# 2932| mu2932_2(String) = Uninitialized[x971] : &:r2932_1 -# 2932| r2932_3(glval) = FunctionAddress[String] : -# 2932| v2932_4(void) = Call[String] : func:r2932_3, this:r2932_1 -# 2932| mu2932_5(unknown) = ^CallSideEffect : ~m? -# 2932| mu2932_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2932_1 -# 2933| r2933_1(glval) = VariableAddress[x971] : -# 2933| r2933_2(glval) = FunctionAddress[~String] : -# 2933| v2933_3(void) = Call[~String] : func:r2933_2, this:r2933_1 -# 2933| mu2933_4(unknown) = ^CallSideEffect : ~m? -# 2933| v2933_5(void) = ^IndirectReadSideEffect[-1] : &:r2933_1, ~m? -# 2933| mu2933_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2933_1 -# 2933| r2933_7(bool) = Constant[0] : -# 2933| v2933_8(void) = ConditionalBranch : r2933_7 +# 35| Block 971 +# 35| r35_13595(glval) = VariableAddress[x971] : +# 35| mu35_13596(String) = Uninitialized[x971] : &:r35_13595 +# 35| r35_13597(glval) = FunctionAddress[String] : +# 35| v35_13598(void) = Call[String] : func:r35_13597, this:r35_13595 +# 35| mu35_13599(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13600(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13595 +# 35| r35_13601(glval) = VariableAddress[x971] : +# 35| r35_13602(glval) = FunctionAddress[~String] : +# 35| v35_13603(void) = Call[~String] : func:r35_13602, this:r35_13601 +# 35| mu35_13604(unknown) = ^CallSideEffect : ~m? +# 35| v35_13605(void) = ^IndirectReadSideEffect[-1] : &:r35_13601, ~m? +# 35| mu35_13606(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13601 +# 35| r35_13607(bool) = Constant[0] : +# 35| v35_13608(void) = ConditionalBranch : r35_13607 #-----| False -> Block 972 #-----| True -> Block 1026 -# 2935| Block 972 -# 2935| r2935_1(glval) = VariableAddress[x972] : -# 2935| mu2935_2(String) = Uninitialized[x972] : &:r2935_1 -# 2935| r2935_3(glval) = FunctionAddress[String] : -# 2935| v2935_4(void) = Call[String] : func:r2935_3, this:r2935_1 -# 2935| mu2935_5(unknown) = ^CallSideEffect : ~m? -# 2935| mu2935_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2935_1 -# 2936| r2936_1(glval) = VariableAddress[x972] : -# 2936| r2936_2(glval) = FunctionAddress[~String] : -# 2936| v2936_3(void) = Call[~String] : func:r2936_2, this:r2936_1 -# 2936| mu2936_4(unknown) = ^CallSideEffect : ~m? -# 2936| v2936_5(void) = ^IndirectReadSideEffect[-1] : &:r2936_1, ~m? -# 2936| mu2936_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2936_1 -# 2936| r2936_7(bool) = Constant[0] : -# 2936| v2936_8(void) = ConditionalBranch : r2936_7 +# 35| Block 972 +# 35| r35_13609(glval) = VariableAddress[x972] : +# 35| mu35_13610(String) = Uninitialized[x972] : &:r35_13609 +# 35| r35_13611(glval) = FunctionAddress[String] : +# 35| v35_13612(void) = Call[String] : func:r35_13611, this:r35_13609 +# 35| mu35_13613(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13614(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13609 +# 35| r35_13615(glval) = VariableAddress[x972] : +# 35| r35_13616(glval) = FunctionAddress[~String] : +# 35| v35_13617(void) = Call[~String] : func:r35_13616, this:r35_13615 +# 35| mu35_13618(unknown) = ^CallSideEffect : ~m? +# 35| v35_13619(void) = ^IndirectReadSideEffect[-1] : &:r35_13615, ~m? +# 35| mu35_13620(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13615 +# 35| r35_13621(bool) = Constant[0] : +# 35| v35_13622(void) = ConditionalBranch : r35_13621 #-----| False -> Block 973 #-----| True -> Block 1026 -# 2938| Block 973 -# 2938| r2938_1(glval) = VariableAddress[x973] : -# 2938| mu2938_2(String) = Uninitialized[x973] : &:r2938_1 -# 2938| r2938_3(glval) = FunctionAddress[String] : -# 2938| v2938_4(void) = Call[String] : func:r2938_3, this:r2938_1 -# 2938| mu2938_5(unknown) = ^CallSideEffect : ~m? -# 2938| mu2938_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2938_1 -# 2939| r2939_1(glval) = VariableAddress[x973] : -# 2939| r2939_2(glval) = FunctionAddress[~String] : -# 2939| v2939_3(void) = Call[~String] : func:r2939_2, this:r2939_1 -# 2939| mu2939_4(unknown) = ^CallSideEffect : ~m? -# 2939| v2939_5(void) = ^IndirectReadSideEffect[-1] : &:r2939_1, ~m? -# 2939| mu2939_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2939_1 -# 2939| r2939_7(bool) = Constant[0] : -# 2939| v2939_8(void) = ConditionalBranch : r2939_7 +# 35| Block 973 +# 35| r35_13623(glval) = VariableAddress[x973] : +# 35| mu35_13624(String) = Uninitialized[x973] : &:r35_13623 +# 35| r35_13625(glval) = FunctionAddress[String] : +# 35| v35_13626(void) = Call[String] : func:r35_13625, this:r35_13623 +# 35| mu35_13627(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13628(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13623 +# 35| r35_13629(glval) = VariableAddress[x973] : +# 35| r35_13630(glval) = FunctionAddress[~String] : +# 35| v35_13631(void) = Call[~String] : func:r35_13630, this:r35_13629 +# 35| mu35_13632(unknown) = ^CallSideEffect : ~m? +# 35| v35_13633(void) = ^IndirectReadSideEffect[-1] : &:r35_13629, ~m? +# 35| mu35_13634(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13629 +# 35| r35_13635(bool) = Constant[0] : +# 35| v35_13636(void) = ConditionalBranch : r35_13635 #-----| False -> Block 974 #-----| True -> Block 1026 -# 2941| Block 974 -# 2941| r2941_1(glval) = VariableAddress[x974] : -# 2941| mu2941_2(String) = Uninitialized[x974] : &:r2941_1 -# 2941| r2941_3(glval) = FunctionAddress[String] : -# 2941| v2941_4(void) = Call[String] : func:r2941_3, this:r2941_1 -# 2941| mu2941_5(unknown) = ^CallSideEffect : ~m? -# 2941| mu2941_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2941_1 -# 2942| r2942_1(glval) = VariableAddress[x974] : -# 2942| r2942_2(glval) = FunctionAddress[~String] : -# 2942| v2942_3(void) = Call[~String] : func:r2942_2, this:r2942_1 -# 2942| mu2942_4(unknown) = ^CallSideEffect : ~m? -# 2942| v2942_5(void) = ^IndirectReadSideEffect[-1] : &:r2942_1, ~m? -# 2942| mu2942_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2942_1 -# 2942| r2942_7(bool) = Constant[0] : -# 2942| v2942_8(void) = ConditionalBranch : r2942_7 +# 35| Block 974 +# 35| r35_13637(glval) = VariableAddress[x974] : +# 35| mu35_13638(String) = Uninitialized[x974] : &:r35_13637 +# 35| r35_13639(glval) = FunctionAddress[String] : +# 35| v35_13640(void) = Call[String] : func:r35_13639, this:r35_13637 +# 35| mu35_13641(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13642(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13637 +# 35| r35_13643(glval) = VariableAddress[x974] : +# 35| r35_13644(glval) = FunctionAddress[~String] : +# 35| v35_13645(void) = Call[~String] : func:r35_13644, this:r35_13643 +# 35| mu35_13646(unknown) = ^CallSideEffect : ~m? +# 35| v35_13647(void) = ^IndirectReadSideEffect[-1] : &:r35_13643, ~m? +# 35| mu35_13648(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13643 +# 35| r35_13649(bool) = Constant[0] : +# 35| v35_13650(void) = ConditionalBranch : r35_13649 #-----| False -> Block 975 #-----| True -> Block 1026 -# 2944| Block 975 -# 2944| r2944_1(glval) = VariableAddress[x975] : -# 2944| mu2944_2(String) = Uninitialized[x975] : &:r2944_1 -# 2944| r2944_3(glval) = FunctionAddress[String] : -# 2944| v2944_4(void) = Call[String] : func:r2944_3, this:r2944_1 -# 2944| mu2944_5(unknown) = ^CallSideEffect : ~m? -# 2944| mu2944_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2944_1 -# 2945| r2945_1(glval) = VariableAddress[x975] : -# 2945| r2945_2(glval) = FunctionAddress[~String] : -# 2945| v2945_3(void) = Call[~String] : func:r2945_2, this:r2945_1 -# 2945| mu2945_4(unknown) = ^CallSideEffect : ~m? -# 2945| v2945_5(void) = ^IndirectReadSideEffect[-1] : &:r2945_1, ~m? -# 2945| mu2945_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2945_1 -# 2945| r2945_7(bool) = Constant[0] : -# 2945| v2945_8(void) = ConditionalBranch : r2945_7 +# 35| Block 975 +# 35| r35_13651(glval) = VariableAddress[x975] : +# 35| mu35_13652(String) = Uninitialized[x975] : &:r35_13651 +# 35| r35_13653(glval) = FunctionAddress[String] : +# 35| v35_13654(void) = Call[String] : func:r35_13653, this:r35_13651 +# 35| mu35_13655(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13656(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13651 +# 35| r35_13657(glval) = VariableAddress[x975] : +# 35| r35_13658(glval) = FunctionAddress[~String] : +# 35| v35_13659(void) = Call[~String] : func:r35_13658, this:r35_13657 +# 35| mu35_13660(unknown) = ^CallSideEffect : ~m? +# 35| v35_13661(void) = ^IndirectReadSideEffect[-1] : &:r35_13657, ~m? +# 35| mu35_13662(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13657 +# 35| r35_13663(bool) = Constant[0] : +# 35| v35_13664(void) = ConditionalBranch : r35_13663 #-----| False -> Block 976 #-----| True -> Block 1026 -# 2947| Block 976 -# 2947| r2947_1(glval) = VariableAddress[x976] : -# 2947| mu2947_2(String) = Uninitialized[x976] : &:r2947_1 -# 2947| r2947_3(glval) = FunctionAddress[String] : -# 2947| v2947_4(void) = Call[String] : func:r2947_3, this:r2947_1 -# 2947| mu2947_5(unknown) = ^CallSideEffect : ~m? -# 2947| mu2947_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2947_1 -# 2948| r2948_1(glval) = VariableAddress[x976] : -# 2948| r2948_2(glval) = FunctionAddress[~String] : -# 2948| v2948_3(void) = Call[~String] : func:r2948_2, this:r2948_1 -# 2948| mu2948_4(unknown) = ^CallSideEffect : ~m? -# 2948| v2948_5(void) = ^IndirectReadSideEffect[-1] : &:r2948_1, ~m? -# 2948| mu2948_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2948_1 -# 2948| r2948_7(bool) = Constant[0] : -# 2948| v2948_8(void) = ConditionalBranch : r2948_7 +# 35| Block 976 +# 35| r35_13665(glval) = VariableAddress[x976] : +# 35| mu35_13666(String) = Uninitialized[x976] : &:r35_13665 +# 35| r35_13667(glval) = FunctionAddress[String] : +# 35| v35_13668(void) = Call[String] : func:r35_13667, this:r35_13665 +# 35| mu35_13669(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13670(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13665 +# 35| r35_13671(glval) = VariableAddress[x976] : +# 35| r35_13672(glval) = FunctionAddress[~String] : +# 35| v35_13673(void) = Call[~String] : func:r35_13672, this:r35_13671 +# 35| mu35_13674(unknown) = ^CallSideEffect : ~m? +# 35| v35_13675(void) = ^IndirectReadSideEffect[-1] : &:r35_13671, ~m? +# 35| mu35_13676(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13671 +# 35| r35_13677(bool) = Constant[0] : +# 35| v35_13678(void) = ConditionalBranch : r35_13677 #-----| False -> Block 977 #-----| True -> Block 1026 -# 2950| Block 977 -# 2950| r2950_1(glval) = VariableAddress[x977] : -# 2950| mu2950_2(String) = Uninitialized[x977] : &:r2950_1 -# 2950| r2950_3(glval) = FunctionAddress[String] : -# 2950| v2950_4(void) = Call[String] : func:r2950_3, this:r2950_1 -# 2950| mu2950_5(unknown) = ^CallSideEffect : ~m? -# 2950| mu2950_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2950_1 -# 2951| r2951_1(glval) = VariableAddress[x977] : -# 2951| r2951_2(glval) = FunctionAddress[~String] : -# 2951| v2951_3(void) = Call[~String] : func:r2951_2, this:r2951_1 -# 2951| mu2951_4(unknown) = ^CallSideEffect : ~m? -# 2951| v2951_5(void) = ^IndirectReadSideEffect[-1] : &:r2951_1, ~m? -# 2951| mu2951_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2951_1 -# 2951| r2951_7(bool) = Constant[0] : -# 2951| v2951_8(void) = ConditionalBranch : r2951_7 +# 35| Block 977 +# 35| r35_13679(glval) = VariableAddress[x977] : +# 35| mu35_13680(String) = Uninitialized[x977] : &:r35_13679 +# 35| r35_13681(glval) = FunctionAddress[String] : +# 35| v35_13682(void) = Call[String] : func:r35_13681, this:r35_13679 +# 35| mu35_13683(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13684(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13679 +# 35| r35_13685(glval) = VariableAddress[x977] : +# 35| r35_13686(glval) = FunctionAddress[~String] : +# 35| v35_13687(void) = Call[~String] : func:r35_13686, this:r35_13685 +# 35| mu35_13688(unknown) = ^CallSideEffect : ~m? +# 35| v35_13689(void) = ^IndirectReadSideEffect[-1] : &:r35_13685, ~m? +# 35| mu35_13690(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13685 +# 35| r35_13691(bool) = Constant[0] : +# 35| v35_13692(void) = ConditionalBranch : r35_13691 #-----| False -> Block 978 #-----| True -> Block 1026 -# 2953| Block 978 -# 2953| r2953_1(glval) = VariableAddress[x978] : -# 2953| mu2953_2(String) = Uninitialized[x978] : &:r2953_1 -# 2953| r2953_3(glval) = FunctionAddress[String] : -# 2953| v2953_4(void) = Call[String] : func:r2953_3, this:r2953_1 -# 2953| mu2953_5(unknown) = ^CallSideEffect : ~m? -# 2953| mu2953_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2953_1 -# 2954| r2954_1(glval) = VariableAddress[x978] : -# 2954| r2954_2(glval) = FunctionAddress[~String] : -# 2954| v2954_3(void) = Call[~String] : func:r2954_2, this:r2954_1 -# 2954| mu2954_4(unknown) = ^CallSideEffect : ~m? -# 2954| v2954_5(void) = ^IndirectReadSideEffect[-1] : &:r2954_1, ~m? -# 2954| mu2954_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2954_1 -# 2954| r2954_7(bool) = Constant[0] : -# 2954| v2954_8(void) = ConditionalBranch : r2954_7 +# 35| Block 978 +# 35| r35_13693(glval) = VariableAddress[x978] : +# 35| mu35_13694(String) = Uninitialized[x978] : &:r35_13693 +# 35| r35_13695(glval) = FunctionAddress[String] : +# 35| v35_13696(void) = Call[String] : func:r35_13695, this:r35_13693 +# 35| mu35_13697(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13698(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13693 +# 35| r35_13699(glval) = VariableAddress[x978] : +# 35| r35_13700(glval) = FunctionAddress[~String] : +# 35| v35_13701(void) = Call[~String] : func:r35_13700, this:r35_13699 +# 35| mu35_13702(unknown) = ^CallSideEffect : ~m? +# 35| v35_13703(void) = ^IndirectReadSideEffect[-1] : &:r35_13699, ~m? +# 35| mu35_13704(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13699 +# 35| r35_13705(bool) = Constant[0] : +# 35| v35_13706(void) = ConditionalBranch : r35_13705 #-----| False -> Block 979 #-----| True -> Block 1026 -# 2956| Block 979 -# 2956| r2956_1(glval) = VariableAddress[x979] : -# 2956| mu2956_2(String) = Uninitialized[x979] : &:r2956_1 -# 2956| r2956_3(glval) = FunctionAddress[String] : -# 2956| v2956_4(void) = Call[String] : func:r2956_3, this:r2956_1 -# 2956| mu2956_5(unknown) = ^CallSideEffect : ~m? -# 2956| mu2956_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2956_1 -# 2957| r2957_1(glval) = VariableAddress[x979] : -# 2957| r2957_2(glval) = FunctionAddress[~String] : -# 2957| v2957_3(void) = Call[~String] : func:r2957_2, this:r2957_1 -# 2957| mu2957_4(unknown) = ^CallSideEffect : ~m? -# 2957| v2957_5(void) = ^IndirectReadSideEffect[-1] : &:r2957_1, ~m? -# 2957| mu2957_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2957_1 -# 2957| r2957_7(bool) = Constant[0] : -# 2957| v2957_8(void) = ConditionalBranch : r2957_7 +# 35| Block 979 +# 35| r35_13707(glval) = VariableAddress[x979] : +# 35| mu35_13708(String) = Uninitialized[x979] : &:r35_13707 +# 35| r35_13709(glval) = FunctionAddress[String] : +# 35| v35_13710(void) = Call[String] : func:r35_13709, this:r35_13707 +# 35| mu35_13711(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13712(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13707 +# 35| r35_13713(glval) = VariableAddress[x979] : +# 35| r35_13714(glval) = FunctionAddress[~String] : +# 35| v35_13715(void) = Call[~String] : func:r35_13714, this:r35_13713 +# 35| mu35_13716(unknown) = ^CallSideEffect : ~m? +# 35| v35_13717(void) = ^IndirectReadSideEffect[-1] : &:r35_13713, ~m? +# 35| mu35_13718(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13713 +# 35| r35_13719(bool) = Constant[0] : +# 35| v35_13720(void) = ConditionalBranch : r35_13719 #-----| False -> Block 980 #-----| True -> Block 1026 -# 2959| Block 980 -# 2959| r2959_1(glval) = VariableAddress[x980] : -# 2959| mu2959_2(String) = Uninitialized[x980] : &:r2959_1 -# 2959| r2959_3(glval) = FunctionAddress[String] : -# 2959| v2959_4(void) = Call[String] : func:r2959_3, this:r2959_1 -# 2959| mu2959_5(unknown) = ^CallSideEffect : ~m? -# 2959| mu2959_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2959_1 -# 2960| r2960_1(glval) = VariableAddress[x980] : -# 2960| r2960_2(glval) = FunctionAddress[~String] : -# 2960| v2960_3(void) = Call[~String] : func:r2960_2, this:r2960_1 -# 2960| mu2960_4(unknown) = ^CallSideEffect : ~m? -# 2960| v2960_5(void) = ^IndirectReadSideEffect[-1] : &:r2960_1, ~m? -# 2960| mu2960_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2960_1 -# 2960| r2960_7(bool) = Constant[0] : -# 2960| v2960_8(void) = ConditionalBranch : r2960_7 +# 35| Block 980 +# 35| r35_13721(glval) = VariableAddress[x980] : +# 35| mu35_13722(String) = Uninitialized[x980] : &:r35_13721 +# 35| r35_13723(glval) = FunctionAddress[String] : +# 35| v35_13724(void) = Call[String] : func:r35_13723, this:r35_13721 +# 35| mu35_13725(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13726(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13721 +# 35| r35_13727(glval) = VariableAddress[x980] : +# 35| r35_13728(glval) = FunctionAddress[~String] : +# 35| v35_13729(void) = Call[~String] : func:r35_13728, this:r35_13727 +# 35| mu35_13730(unknown) = ^CallSideEffect : ~m? +# 35| v35_13731(void) = ^IndirectReadSideEffect[-1] : &:r35_13727, ~m? +# 35| mu35_13732(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13727 +# 35| r35_13733(bool) = Constant[0] : +# 35| v35_13734(void) = ConditionalBranch : r35_13733 #-----| False -> Block 981 #-----| True -> Block 1026 -# 2962| Block 981 -# 2962| r2962_1(glval) = VariableAddress[x981] : -# 2962| mu2962_2(String) = Uninitialized[x981] : &:r2962_1 -# 2962| r2962_3(glval) = FunctionAddress[String] : -# 2962| v2962_4(void) = Call[String] : func:r2962_3, this:r2962_1 -# 2962| mu2962_5(unknown) = ^CallSideEffect : ~m? -# 2962| mu2962_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2962_1 -# 2963| r2963_1(glval) = VariableAddress[x981] : -# 2963| r2963_2(glval) = FunctionAddress[~String] : -# 2963| v2963_3(void) = Call[~String] : func:r2963_2, this:r2963_1 -# 2963| mu2963_4(unknown) = ^CallSideEffect : ~m? -# 2963| v2963_5(void) = ^IndirectReadSideEffect[-1] : &:r2963_1, ~m? -# 2963| mu2963_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2963_1 -# 2963| r2963_7(bool) = Constant[0] : -# 2963| v2963_8(void) = ConditionalBranch : r2963_7 +# 35| Block 981 +# 35| r35_13735(glval) = VariableAddress[x981] : +# 35| mu35_13736(String) = Uninitialized[x981] : &:r35_13735 +# 35| r35_13737(glval) = FunctionAddress[String] : +# 35| v35_13738(void) = Call[String] : func:r35_13737, this:r35_13735 +# 35| mu35_13739(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13740(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13735 +# 35| r35_13741(glval) = VariableAddress[x981] : +# 35| r35_13742(glval) = FunctionAddress[~String] : +# 35| v35_13743(void) = Call[~String] : func:r35_13742, this:r35_13741 +# 35| mu35_13744(unknown) = ^CallSideEffect : ~m? +# 35| v35_13745(void) = ^IndirectReadSideEffect[-1] : &:r35_13741, ~m? +# 35| mu35_13746(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13741 +# 35| r35_13747(bool) = Constant[0] : +# 35| v35_13748(void) = ConditionalBranch : r35_13747 #-----| False -> Block 982 #-----| True -> Block 1026 -# 2965| Block 982 -# 2965| r2965_1(glval) = VariableAddress[x982] : -# 2965| mu2965_2(String) = Uninitialized[x982] : &:r2965_1 -# 2965| r2965_3(glval) = FunctionAddress[String] : -# 2965| v2965_4(void) = Call[String] : func:r2965_3, this:r2965_1 -# 2965| mu2965_5(unknown) = ^CallSideEffect : ~m? -# 2965| mu2965_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2965_1 -# 2966| r2966_1(glval) = VariableAddress[x982] : -# 2966| r2966_2(glval) = FunctionAddress[~String] : -# 2966| v2966_3(void) = Call[~String] : func:r2966_2, this:r2966_1 -# 2966| mu2966_4(unknown) = ^CallSideEffect : ~m? -# 2966| v2966_5(void) = ^IndirectReadSideEffect[-1] : &:r2966_1, ~m? -# 2966| mu2966_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2966_1 -# 2966| r2966_7(bool) = Constant[0] : -# 2966| v2966_8(void) = ConditionalBranch : r2966_7 +# 35| Block 982 +# 35| r35_13749(glval) = VariableAddress[x982] : +# 35| mu35_13750(String) = Uninitialized[x982] : &:r35_13749 +# 35| r35_13751(glval) = FunctionAddress[String] : +# 35| v35_13752(void) = Call[String] : func:r35_13751, this:r35_13749 +# 35| mu35_13753(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13754(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13749 +# 35| r35_13755(glval) = VariableAddress[x982] : +# 35| r35_13756(glval) = FunctionAddress[~String] : +# 35| v35_13757(void) = Call[~String] : func:r35_13756, this:r35_13755 +# 35| mu35_13758(unknown) = ^CallSideEffect : ~m? +# 35| v35_13759(void) = ^IndirectReadSideEffect[-1] : &:r35_13755, ~m? +# 35| mu35_13760(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13755 +# 35| r35_13761(bool) = Constant[0] : +# 35| v35_13762(void) = ConditionalBranch : r35_13761 #-----| False -> Block 983 #-----| True -> Block 1026 -# 2968| Block 983 -# 2968| r2968_1(glval) = VariableAddress[x983] : -# 2968| mu2968_2(String) = Uninitialized[x983] : &:r2968_1 -# 2968| r2968_3(glval) = FunctionAddress[String] : -# 2968| v2968_4(void) = Call[String] : func:r2968_3, this:r2968_1 -# 2968| mu2968_5(unknown) = ^CallSideEffect : ~m? -# 2968| mu2968_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2968_1 -# 2969| r2969_1(glval) = VariableAddress[x983] : -# 2969| r2969_2(glval) = FunctionAddress[~String] : -# 2969| v2969_3(void) = Call[~String] : func:r2969_2, this:r2969_1 -# 2969| mu2969_4(unknown) = ^CallSideEffect : ~m? -# 2969| v2969_5(void) = ^IndirectReadSideEffect[-1] : &:r2969_1, ~m? -# 2969| mu2969_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2969_1 -# 2969| r2969_7(bool) = Constant[0] : -# 2969| v2969_8(void) = ConditionalBranch : r2969_7 +# 35| Block 983 +# 35| r35_13763(glval) = VariableAddress[x983] : +# 35| mu35_13764(String) = Uninitialized[x983] : &:r35_13763 +# 35| r35_13765(glval) = FunctionAddress[String] : +# 35| v35_13766(void) = Call[String] : func:r35_13765, this:r35_13763 +# 35| mu35_13767(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13768(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13763 +# 35| r35_13769(glval) = VariableAddress[x983] : +# 35| r35_13770(glval) = FunctionAddress[~String] : +# 35| v35_13771(void) = Call[~String] : func:r35_13770, this:r35_13769 +# 35| mu35_13772(unknown) = ^CallSideEffect : ~m? +# 35| v35_13773(void) = ^IndirectReadSideEffect[-1] : &:r35_13769, ~m? +# 35| mu35_13774(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13769 +# 35| r35_13775(bool) = Constant[0] : +# 35| v35_13776(void) = ConditionalBranch : r35_13775 #-----| False -> Block 984 #-----| True -> Block 1026 -# 2971| Block 984 -# 2971| r2971_1(glval) = VariableAddress[x984] : -# 2971| mu2971_2(String) = Uninitialized[x984] : &:r2971_1 -# 2971| r2971_3(glval) = FunctionAddress[String] : -# 2971| v2971_4(void) = Call[String] : func:r2971_3, this:r2971_1 -# 2971| mu2971_5(unknown) = ^CallSideEffect : ~m? -# 2971| mu2971_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2971_1 -# 2972| r2972_1(glval) = VariableAddress[x984] : -# 2972| r2972_2(glval) = FunctionAddress[~String] : -# 2972| v2972_3(void) = Call[~String] : func:r2972_2, this:r2972_1 -# 2972| mu2972_4(unknown) = ^CallSideEffect : ~m? -# 2972| v2972_5(void) = ^IndirectReadSideEffect[-1] : &:r2972_1, ~m? -# 2972| mu2972_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2972_1 -# 2972| r2972_7(bool) = Constant[0] : -# 2972| v2972_8(void) = ConditionalBranch : r2972_7 +# 35| Block 984 +# 35| r35_13777(glval) = VariableAddress[x984] : +# 35| mu35_13778(String) = Uninitialized[x984] : &:r35_13777 +# 35| r35_13779(glval) = FunctionAddress[String] : +# 35| v35_13780(void) = Call[String] : func:r35_13779, this:r35_13777 +# 35| mu35_13781(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13782(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13777 +# 35| r35_13783(glval) = VariableAddress[x984] : +# 35| r35_13784(glval) = FunctionAddress[~String] : +# 35| v35_13785(void) = Call[~String] : func:r35_13784, this:r35_13783 +# 35| mu35_13786(unknown) = ^CallSideEffect : ~m? +# 35| v35_13787(void) = ^IndirectReadSideEffect[-1] : &:r35_13783, ~m? +# 35| mu35_13788(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13783 +# 35| r35_13789(bool) = Constant[0] : +# 35| v35_13790(void) = ConditionalBranch : r35_13789 #-----| False -> Block 985 #-----| True -> Block 1026 -# 2974| Block 985 -# 2974| r2974_1(glval) = VariableAddress[x985] : -# 2974| mu2974_2(String) = Uninitialized[x985] : &:r2974_1 -# 2974| r2974_3(glval) = FunctionAddress[String] : -# 2974| v2974_4(void) = Call[String] : func:r2974_3, this:r2974_1 -# 2974| mu2974_5(unknown) = ^CallSideEffect : ~m? -# 2974| mu2974_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2974_1 -# 2975| r2975_1(glval) = VariableAddress[x985] : -# 2975| r2975_2(glval) = FunctionAddress[~String] : -# 2975| v2975_3(void) = Call[~String] : func:r2975_2, this:r2975_1 -# 2975| mu2975_4(unknown) = ^CallSideEffect : ~m? -# 2975| v2975_5(void) = ^IndirectReadSideEffect[-1] : &:r2975_1, ~m? -# 2975| mu2975_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2975_1 -# 2975| r2975_7(bool) = Constant[0] : -# 2975| v2975_8(void) = ConditionalBranch : r2975_7 +# 35| Block 985 +# 35| r35_13791(glval) = VariableAddress[x985] : +# 35| mu35_13792(String) = Uninitialized[x985] : &:r35_13791 +# 35| r35_13793(glval) = FunctionAddress[String] : +# 35| v35_13794(void) = Call[String] : func:r35_13793, this:r35_13791 +# 35| mu35_13795(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13796(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13791 +# 35| r35_13797(glval) = VariableAddress[x985] : +# 35| r35_13798(glval) = FunctionAddress[~String] : +# 35| v35_13799(void) = Call[~String] : func:r35_13798, this:r35_13797 +# 35| mu35_13800(unknown) = ^CallSideEffect : ~m? +# 35| v35_13801(void) = ^IndirectReadSideEffect[-1] : &:r35_13797, ~m? +# 35| mu35_13802(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13797 +# 35| r35_13803(bool) = Constant[0] : +# 35| v35_13804(void) = ConditionalBranch : r35_13803 #-----| False -> Block 986 #-----| True -> Block 1026 -# 2977| Block 986 -# 2977| r2977_1(glval) = VariableAddress[x986] : -# 2977| mu2977_2(String) = Uninitialized[x986] : &:r2977_1 -# 2977| r2977_3(glval) = FunctionAddress[String] : -# 2977| v2977_4(void) = Call[String] : func:r2977_3, this:r2977_1 -# 2977| mu2977_5(unknown) = ^CallSideEffect : ~m? -# 2977| mu2977_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2977_1 -# 2978| r2978_1(glval) = VariableAddress[x986] : -# 2978| r2978_2(glval) = FunctionAddress[~String] : -# 2978| v2978_3(void) = Call[~String] : func:r2978_2, this:r2978_1 -# 2978| mu2978_4(unknown) = ^CallSideEffect : ~m? -# 2978| v2978_5(void) = ^IndirectReadSideEffect[-1] : &:r2978_1, ~m? -# 2978| mu2978_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2978_1 -# 2978| r2978_7(bool) = Constant[0] : -# 2978| v2978_8(void) = ConditionalBranch : r2978_7 +# 35| Block 986 +# 35| r35_13805(glval) = VariableAddress[x986] : +# 35| mu35_13806(String) = Uninitialized[x986] : &:r35_13805 +# 35| r35_13807(glval) = FunctionAddress[String] : +# 35| v35_13808(void) = Call[String] : func:r35_13807, this:r35_13805 +# 35| mu35_13809(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13810(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13805 +# 35| r35_13811(glval) = VariableAddress[x986] : +# 35| r35_13812(glval) = FunctionAddress[~String] : +# 35| v35_13813(void) = Call[~String] : func:r35_13812, this:r35_13811 +# 35| mu35_13814(unknown) = ^CallSideEffect : ~m? +# 35| v35_13815(void) = ^IndirectReadSideEffect[-1] : &:r35_13811, ~m? +# 35| mu35_13816(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13811 +# 35| r35_13817(bool) = Constant[0] : +# 35| v35_13818(void) = ConditionalBranch : r35_13817 #-----| False -> Block 987 #-----| True -> Block 1026 -# 2980| Block 987 -# 2980| r2980_1(glval) = VariableAddress[x987] : -# 2980| mu2980_2(String) = Uninitialized[x987] : &:r2980_1 -# 2980| r2980_3(glval) = FunctionAddress[String] : -# 2980| v2980_4(void) = Call[String] : func:r2980_3, this:r2980_1 -# 2980| mu2980_5(unknown) = ^CallSideEffect : ~m? -# 2980| mu2980_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2980_1 -# 2981| r2981_1(glval) = VariableAddress[x987] : -# 2981| r2981_2(glval) = FunctionAddress[~String] : -# 2981| v2981_3(void) = Call[~String] : func:r2981_2, this:r2981_1 -# 2981| mu2981_4(unknown) = ^CallSideEffect : ~m? -# 2981| v2981_5(void) = ^IndirectReadSideEffect[-1] : &:r2981_1, ~m? -# 2981| mu2981_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2981_1 -# 2981| r2981_7(bool) = Constant[0] : -# 2981| v2981_8(void) = ConditionalBranch : r2981_7 +# 35| Block 987 +# 35| r35_13819(glval) = VariableAddress[x987] : +# 35| mu35_13820(String) = Uninitialized[x987] : &:r35_13819 +# 35| r35_13821(glval) = FunctionAddress[String] : +# 35| v35_13822(void) = Call[String] : func:r35_13821, this:r35_13819 +# 35| mu35_13823(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13824(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13819 +# 35| r35_13825(glval) = VariableAddress[x987] : +# 35| r35_13826(glval) = FunctionAddress[~String] : +# 35| v35_13827(void) = Call[~String] : func:r35_13826, this:r35_13825 +# 35| mu35_13828(unknown) = ^CallSideEffect : ~m? +# 35| v35_13829(void) = ^IndirectReadSideEffect[-1] : &:r35_13825, ~m? +# 35| mu35_13830(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13825 +# 35| r35_13831(bool) = Constant[0] : +# 35| v35_13832(void) = ConditionalBranch : r35_13831 #-----| False -> Block 988 #-----| True -> Block 1026 -# 2983| Block 988 -# 2983| r2983_1(glval) = VariableAddress[x988] : -# 2983| mu2983_2(String) = Uninitialized[x988] : &:r2983_1 -# 2983| r2983_3(glval) = FunctionAddress[String] : -# 2983| v2983_4(void) = Call[String] : func:r2983_3, this:r2983_1 -# 2983| mu2983_5(unknown) = ^CallSideEffect : ~m? -# 2983| mu2983_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2983_1 -# 2984| r2984_1(glval) = VariableAddress[x988] : -# 2984| r2984_2(glval) = FunctionAddress[~String] : -# 2984| v2984_3(void) = Call[~String] : func:r2984_2, this:r2984_1 -# 2984| mu2984_4(unknown) = ^CallSideEffect : ~m? -# 2984| v2984_5(void) = ^IndirectReadSideEffect[-1] : &:r2984_1, ~m? -# 2984| mu2984_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2984_1 -# 2984| r2984_7(bool) = Constant[0] : -# 2984| v2984_8(void) = ConditionalBranch : r2984_7 +# 35| Block 988 +# 35| r35_13833(glval) = VariableAddress[x988] : +# 35| mu35_13834(String) = Uninitialized[x988] : &:r35_13833 +# 35| r35_13835(glval) = FunctionAddress[String] : +# 35| v35_13836(void) = Call[String] : func:r35_13835, this:r35_13833 +# 35| mu35_13837(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13838(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13833 +# 35| r35_13839(glval) = VariableAddress[x988] : +# 35| r35_13840(glval) = FunctionAddress[~String] : +# 35| v35_13841(void) = Call[~String] : func:r35_13840, this:r35_13839 +# 35| mu35_13842(unknown) = ^CallSideEffect : ~m? +# 35| v35_13843(void) = ^IndirectReadSideEffect[-1] : &:r35_13839, ~m? +# 35| mu35_13844(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13839 +# 35| r35_13845(bool) = Constant[0] : +# 35| v35_13846(void) = ConditionalBranch : r35_13845 #-----| False -> Block 989 #-----| True -> Block 1026 -# 2986| Block 989 -# 2986| r2986_1(glval) = VariableAddress[x989] : -# 2986| mu2986_2(String) = Uninitialized[x989] : &:r2986_1 -# 2986| r2986_3(glval) = FunctionAddress[String] : -# 2986| v2986_4(void) = Call[String] : func:r2986_3, this:r2986_1 -# 2986| mu2986_5(unknown) = ^CallSideEffect : ~m? -# 2986| mu2986_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2986_1 -# 2987| r2987_1(glval) = VariableAddress[x989] : -# 2987| r2987_2(glval) = FunctionAddress[~String] : -# 2987| v2987_3(void) = Call[~String] : func:r2987_2, this:r2987_1 -# 2987| mu2987_4(unknown) = ^CallSideEffect : ~m? -# 2987| v2987_5(void) = ^IndirectReadSideEffect[-1] : &:r2987_1, ~m? -# 2987| mu2987_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2987_1 -# 2987| r2987_7(bool) = Constant[0] : -# 2987| v2987_8(void) = ConditionalBranch : r2987_7 +# 35| Block 989 +# 35| r35_13847(glval) = VariableAddress[x989] : +# 35| mu35_13848(String) = Uninitialized[x989] : &:r35_13847 +# 35| r35_13849(glval) = FunctionAddress[String] : +# 35| v35_13850(void) = Call[String] : func:r35_13849, this:r35_13847 +# 35| mu35_13851(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13852(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13847 +# 35| r35_13853(glval) = VariableAddress[x989] : +# 35| r35_13854(glval) = FunctionAddress[~String] : +# 35| v35_13855(void) = Call[~String] : func:r35_13854, this:r35_13853 +# 35| mu35_13856(unknown) = ^CallSideEffect : ~m? +# 35| v35_13857(void) = ^IndirectReadSideEffect[-1] : &:r35_13853, ~m? +# 35| mu35_13858(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13853 +# 35| r35_13859(bool) = Constant[0] : +# 35| v35_13860(void) = ConditionalBranch : r35_13859 #-----| False -> Block 990 #-----| True -> Block 1026 -# 2989| Block 990 -# 2989| r2989_1(glval) = VariableAddress[x990] : -# 2989| mu2989_2(String) = Uninitialized[x990] : &:r2989_1 -# 2989| r2989_3(glval) = FunctionAddress[String] : -# 2989| v2989_4(void) = Call[String] : func:r2989_3, this:r2989_1 -# 2989| mu2989_5(unknown) = ^CallSideEffect : ~m? -# 2989| mu2989_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2989_1 -# 2990| r2990_1(glval) = VariableAddress[x990] : -# 2990| r2990_2(glval) = FunctionAddress[~String] : -# 2990| v2990_3(void) = Call[~String] : func:r2990_2, this:r2990_1 -# 2990| mu2990_4(unknown) = ^CallSideEffect : ~m? -# 2990| v2990_5(void) = ^IndirectReadSideEffect[-1] : &:r2990_1, ~m? -# 2990| mu2990_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2990_1 -# 2990| r2990_7(bool) = Constant[0] : -# 2990| v2990_8(void) = ConditionalBranch : r2990_7 +# 35| Block 990 +# 35| r35_13861(glval) = VariableAddress[x990] : +# 35| mu35_13862(String) = Uninitialized[x990] : &:r35_13861 +# 35| r35_13863(glval) = FunctionAddress[String] : +# 35| v35_13864(void) = Call[String] : func:r35_13863, this:r35_13861 +# 35| mu35_13865(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13866(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13861 +# 35| r35_13867(glval) = VariableAddress[x990] : +# 35| r35_13868(glval) = FunctionAddress[~String] : +# 35| v35_13869(void) = Call[~String] : func:r35_13868, this:r35_13867 +# 35| mu35_13870(unknown) = ^CallSideEffect : ~m? +# 35| v35_13871(void) = ^IndirectReadSideEffect[-1] : &:r35_13867, ~m? +# 35| mu35_13872(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13867 +# 35| r35_13873(bool) = Constant[0] : +# 35| v35_13874(void) = ConditionalBranch : r35_13873 #-----| False -> Block 991 #-----| True -> Block 1026 -# 2992| Block 991 -# 2992| r2992_1(glval) = VariableAddress[x991] : -# 2992| mu2992_2(String) = Uninitialized[x991] : &:r2992_1 -# 2992| r2992_3(glval) = FunctionAddress[String] : -# 2992| v2992_4(void) = Call[String] : func:r2992_3, this:r2992_1 -# 2992| mu2992_5(unknown) = ^CallSideEffect : ~m? -# 2992| mu2992_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2992_1 -# 2993| r2993_1(glval) = VariableAddress[x991] : -# 2993| r2993_2(glval) = FunctionAddress[~String] : -# 2993| v2993_3(void) = Call[~String] : func:r2993_2, this:r2993_1 -# 2993| mu2993_4(unknown) = ^CallSideEffect : ~m? -# 2993| v2993_5(void) = ^IndirectReadSideEffect[-1] : &:r2993_1, ~m? -# 2993| mu2993_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2993_1 -# 2993| r2993_7(bool) = Constant[0] : -# 2993| v2993_8(void) = ConditionalBranch : r2993_7 +# 35| Block 991 +# 35| r35_13875(glval) = VariableAddress[x991] : +# 35| mu35_13876(String) = Uninitialized[x991] : &:r35_13875 +# 35| r35_13877(glval) = FunctionAddress[String] : +# 35| v35_13878(void) = Call[String] : func:r35_13877, this:r35_13875 +# 35| mu35_13879(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13880(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13875 +# 35| r35_13881(glval) = VariableAddress[x991] : +# 35| r35_13882(glval) = FunctionAddress[~String] : +# 35| v35_13883(void) = Call[~String] : func:r35_13882, this:r35_13881 +# 35| mu35_13884(unknown) = ^CallSideEffect : ~m? +# 35| v35_13885(void) = ^IndirectReadSideEffect[-1] : &:r35_13881, ~m? +# 35| mu35_13886(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13881 +# 35| r35_13887(bool) = Constant[0] : +# 35| v35_13888(void) = ConditionalBranch : r35_13887 #-----| False -> Block 992 #-----| True -> Block 1026 -# 2995| Block 992 -# 2995| r2995_1(glval) = VariableAddress[x992] : -# 2995| mu2995_2(String) = Uninitialized[x992] : &:r2995_1 -# 2995| r2995_3(glval) = FunctionAddress[String] : -# 2995| v2995_4(void) = Call[String] : func:r2995_3, this:r2995_1 -# 2995| mu2995_5(unknown) = ^CallSideEffect : ~m? -# 2995| mu2995_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2995_1 -# 2996| r2996_1(glval) = VariableAddress[x992] : -# 2996| r2996_2(glval) = FunctionAddress[~String] : -# 2996| v2996_3(void) = Call[~String] : func:r2996_2, this:r2996_1 -# 2996| mu2996_4(unknown) = ^CallSideEffect : ~m? -# 2996| v2996_5(void) = ^IndirectReadSideEffect[-1] : &:r2996_1, ~m? -# 2996| mu2996_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2996_1 -# 2996| r2996_7(bool) = Constant[0] : -# 2996| v2996_8(void) = ConditionalBranch : r2996_7 +# 35| Block 992 +# 35| r35_13889(glval) = VariableAddress[x992] : +# 35| mu35_13890(String) = Uninitialized[x992] : &:r35_13889 +# 35| r35_13891(glval) = FunctionAddress[String] : +# 35| v35_13892(void) = Call[String] : func:r35_13891, this:r35_13889 +# 35| mu35_13893(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13894(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13889 +# 35| r35_13895(glval) = VariableAddress[x992] : +# 35| r35_13896(glval) = FunctionAddress[~String] : +# 35| v35_13897(void) = Call[~String] : func:r35_13896, this:r35_13895 +# 35| mu35_13898(unknown) = ^CallSideEffect : ~m? +# 35| v35_13899(void) = ^IndirectReadSideEffect[-1] : &:r35_13895, ~m? +# 35| mu35_13900(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13895 +# 35| r35_13901(bool) = Constant[0] : +# 35| v35_13902(void) = ConditionalBranch : r35_13901 #-----| False -> Block 993 #-----| True -> Block 1026 -# 2998| Block 993 -# 2998| r2998_1(glval) = VariableAddress[x993] : -# 2998| mu2998_2(String) = Uninitialized[x993] : &:r2998_1 -# 2998| r2998_3(glval) = FunctionAddress[String] : -# 2998| v2998_4(void) = Call[String] : func:r2998_3, this:r2998_1 -# 2998| mu2998_5(unknown) = ^CallSideEffect : ~m? -# 2998| mu2998_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2998_1 -# 2999| r2999_1(glval) = VariableAddress[x993] : -# 2999| r2999_2(glval) = FunctionAddress[~String] : -# 2999| v2999_3(void) = Call[~String] : func:r2999_2, this:r2999_1 -# 2999| mu2999_4(unknown) = ^CallSideEffect : ~m? -# 2999| v2999_5(void) = ^IndirectReadSideEffect[-1] : &:r2999_1, ~m? -# 2999| mu2999_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2999_1 -# 2999| r2999_7(bool) = Constant[0] : -# 2999| v2999_8(void) = ConditionalBranch : r2999_7 +# 35| Block 993 +# 35| r35_13903(glval) = VariableAddress[x993] : +# 35| mu35_13904(String) = Uninitialized[x993] : &:r35_13903 +# 35| r35_13905(glval) = FunctionAddress[String] : +# 35| v35_13906(void) = Call[String] : func:r35_13905, this:r35_13903 +# 35| mu35_13907(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13908(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13903 +# 35| r35_13909(glval) = VariableAddress[x993] : +# 35| r35_13910(glval) = FunctionAddress[~String] : +# 35| v35_13911(void) = Call[~String] : func:r35_13910, this:r35_13909 +# 35| mu35_13912(unknown) = ^CallSideEffect : ~m? +# 35| v35_13913(void) = ^IndirectReadSideEffect[-1] : &:r35_13909, ~m? +# 35| mu35_13914(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13909 +# 35| r35_13915(bool) = Constant[0] : +# 35| v35_13916(void) = ConditionalBranch : r35_13915 #-----| False -> Block 994 #-----| True -> Block 1026 -# 3001| Block 994 -# 3001| r3001_1(glval) = VariableAddress[x994] : -# 3001| mu3001_2(String) = Uninitialized[x994] : &:r3001_1 -# 3001| r3001_3(glval) = FunctionAddress[String] : -# 3001| v3001_4(void) = Call[String] : func:r3001_3, this:r3001_1 -# 3001| mu3001_5(unknown) = ^CallSideEffect : ~m? -# 3001| mu3001_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3001_1 -# 3002| r3002_1(glval) = VariableAddress[x994] : -# 3002| r3002_2(glval) = FunctionAddress[~String] : -# 3002| v3002_3(void) = Call[~String] : func:r3002_2, this:r3002_1 -# 3002| mu3002_4(unknown) = ^CallSideEffect : ~m? -# 3002| v3002_5(void) = ^IndirectReadSideEffect[-1] : &:r3002_1, ~m? -# 3002| mu3002_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3002_1 -# 3002| r3002_7(bool) = Constant[0] : -# 3002| v3002_8(void) = ConditionalBranch : r3002_7 +# 35| Block 994 +# 35| r35_13917(glval) = VariableAddress[x994] : +# 35| mu35_13918(String) = Uninitialized[x994] : &:r35_13917 +# 35| r35_13919(glval) = FunctionAddress[String] : +# 35| v35_13920(void) = Call[String] : func:r35_13919, this:r35_13917 +# 35| mu35_13921(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13922(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13917 +# 35| r35_13923(glval) = VariableAddress[x994] : +# 35| r35_13924(glval) = FunctionAddress[~String] : +# 35| v35_13925(void) = Call[~String] : func:r35_13924, this:r35_13923 +# 35| mu35_13926(unknown) = ^CallSideEffect : ~m? +# 35| v35_13927(void) = ^IndirectReadSideEffect[-1] : &:r35_13923, ~m? +# 35| mu35_13928(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13923 +# 35| r35_13929(bool) = Constant[0] : +# 35| v35_13930(void) = ConditionalBranch : r35_13929 #-----| False -> Block 995 #-----| True -> Block 1026 -# 3004| Block 995 -# 3004| r3004_1(glval) = VariableAddress[x995] : -# 3004| mu3004_2(String) = Uninitialized[x995] : &:r3004_1 -# 3004| r3004_3(glval) = FunctionAddress[String] : -# 3004| v3004_4(void) = Call[String] : func:r3004_3, this:r3004_1 -# 3004| mu3004_5(unknown) = ^CallSideEffect : ~m? -# 3004| mu3004_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3004_1 -# 3005| r3005_1(glval) = VariableAddress[x995] : -# 3005| r3005_2(glval) = FunctionAddress[~String] : -# 3005| v3005_3(void) = Call[~String] : func:r3005_2, this:r3005_1 -# 3005| mu3005_4(unknown) = ^CallSideEffect : ~m? -# 3005| v3005_5(void) = ^IndirectReadSideEffect[-1] : &:r3005_1, ~m? -# 3005| mu3005_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3005_1 -# 3005| r3005_7(bool) = Constant[0] : -# 3005| v3005_8(void) = ConditionalBranch : r3005_7 +# 35| Block 995 +# 35| r35_13931(glval) = VariableAddress[x995] : +# 35| mu35_13932(String) = Uninitialized[x995] : &:r35_13931 +# 35| r35_13933(glval) = FunctionAddress[String] : +# 35| v35_13934(void) = Call[String] : func:r35_13933, this:r35_13931 +# 35| mu35_13935(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13936(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13931 +# 35| r35_13937(glval) = VariableAddress[x995] : +# 35| r35_13938(glval) = FunctionAddress[~String] : +# 35| v35_13939(void) = Call[~String] : func:r35_13938, this:r35_13937 +# 35| mu35_13940(unknown) = ^CallSideEffect : ~m? +# 35| v35_13941(void) = ^IndirectReadSideEffect[-1] : &:r35_13937, ~m? +# 35| mu35_13942(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13937 +# 35| r35_13943(bool) = Constant[0] : +# 35| v35_13944(void) = ConditionalBranch : r35_13943 #-----| False -> Block 996 #-----| True -> Block 1026 -# 3007| Block 996 -# 3007| r3007_1(glval) = VariableAddress[x996] : -# 3007| mu3007_2(String) = Uninitialized[x996] : &:r3007_1 -# 3007| r3007_3(glval) = FunctionAddress[String] : -# 3007| v3007_4(void) = Call[String] : func:r3007_3, this:r3007_1 -# 3007| mu3007_5(unknown) = ^CallSideEffect : ~m? -# 3007| mu3007_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3007_1 -# 3008| r3008_1(glval) = VariableAddress[x996] : -# 3008| r3008_2(glval) = FunctionAddress[~String] : -# 3008| v3008_3(void) = Call[~String] : func:r3008_2, this:r3008_1 -# 3008| mu3008_4(unknown) = ^CallSideEffect : ~m? -# 3008| v3008_5(void) = ^IndirectReadSideEffect[-1] : &:r3008_1, ~m? -# 3008| mu3008_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3008_1 -# 3008| r3008_7(bool) = Constant[0] : -# 3008| v3008_8(void) = ConditionalBranch : r3008_7 +# 35| Block 996 +# 35| r35_13945(glval) = VariableAddress[x996] : +# 35| mu35_13946(String) = Uninitialized[x996] : &:r35_13945 +# 35| r35_13947(glval) = FunctionAddress[String] : +# 35| v35_13948(void) = Call[String] : func:r35_13947, this:r35_13945 +# 35| mu35_13949(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13950(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13945 +# 35| r35_13951(glval) = VariableAddress[x996] : +# 35| r35_13952(glval) = FunctionAddress[~String] : +# 35| v35_13953(void) = Call[~String] : func:r35_13952, this:r35_13951 +# 35| mu35_13954(unknown) = ^CallSideEffect : ~m? +# 35| v35_13955(void) = ^IndirectReadSideEffect[-1] : &:r35_13951, ~m? +# 35| mu35_13956(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13951 +# 35| r35_13957(bool) = Constant[0] : +# 35| v35_13958(void) = ConditionalBranch : r35_13957 #-----| False -> Block 997 #-----| True -> Block 1026 -# 3010| Block 997 -# 3010| r3010_1(glval) = VariableAddress[x997] : -# 3010| mu3010_2(String) = Uninitialized[x997] : &:r3010_1 -# 3010| r3010_3(glval) = FunctionAddress[String] : -# 3010| v3010_4(void) = Call[String] : func:r3010_3, this:r3010_1 -# 3010| mu3010_5(unknown) = ^CallSideEffect : ~m? -# 3010| mu3010_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3010_1 -# 3011| r3011_1(glval) = VariableAddress[x997] : -# 3011| r3011_2(glval) = FunctionAddress[~String] : -# 3011| v3011_3(void) = Call[~String] : func:r3011_2, this:r3011_1 -# 3011| mu3011_4(unknown) = ^CallSideEffect : ~m? -# 3011| v3011_5(void) = ^IndirectReadSideEffect[-1] : &:r3011_1, ~m? -# 3011| mu3011_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3011_1 -# 3011| r3011_7(bool) = Constant[0] : -# 3011| v3011_8(void) = ConditionalBranch : r3011_7 +# 35| Block 997 +# 35| r35_13959(glval) = VariableAddress[x997] : +# 35| mu35_13960(String) = Uninitialized[x997] : &:r35_13959 +# 35| r35_13961(glval) = FunctionAddress[String] : +# 35| v35_13962(void) = Call[String] : func:r35_13961, this:r35_13959 +# 35| mu35_13963(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13964(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13959 +# 35| r35_13965(glval) = VariableAddress[x997] : +# 35| r35_13966(glval) = FunctionAddress[~String] : +# 35| v35_13967(void) = Call[~String] : func:r35_13966, this:r35_13965 +# 35| mu35_13968(unknown) = ^CallSideEffect : ~m? +# 35| v35_13969(void) = ^IndirectReadSideEffect[-1] : &:r35_13965, ~m? +# 35| mu35_13970(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13965 +# 35| r35_13971(bool) = Constant[0] : +# 35| v35_13972(void) = ConditionalBranch : r35_13971 #-----| False -> Block 998 #-----| True -> Block 1026 -# 3013| Block 998 -# 3013| r3013_1(glval) = VariableAddress[x998] : -# 3013| mu3013_2(String) = Uninitialized[x998] : &:r3013_1 -# 3013| r3013_3(glval) = FunctionAddress[String] : -# 3013| v3013_4(void) = Call[String] : func:r3013_3, this:r3013_1 -# 3013| mu3013_5(unknown) = ^CallSideEffect : ~m? -# 3013| mu3013_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3013_1 -# 3014| r3014_1(glval) = VariableAddress[x998] : -# 3014| r3014_2(glval) = FunctionAddress[~String] : -# 3014| v3014_3(void) = Call[~String] : func:r3014_2, this:r3014_1 -# 3014| mu3014_4(unknown) = ^CallSideEffect : ~m? -# 3014| v3014_5(void) = ^IndirectReadSideEffect[-1] : &:r3014_1, ~m? -# 3014| mu3014_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3014_1 -# 3014| r3014_7(bool) = Constant[0] : -# 3014| v3014_8(void) = ConditionalBranch : r3014_7 +# 35| Block 998 +# 35| r35_13973(glval) = VariableAddress[x998] : +# 35| mu35_13974(String) = Uninitialized[x998] : &:r35_13973 +# 35| r35_13975(glval) = FunctionAddress[String] : +# 35| v35_13976(void) = Call[String] : func:r35_13975, this:r35_13973 +# 35| mu35_13977(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13978(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13973 +# 35| r35_13979(glval) = VariableAddress[x998] : +# 35| r35_13980(glval) = FunctionAddress[~String] : +# 35| v35_13981(void) = Call[~String] : func:r35_13980, this:r35_13979 +# 35| mu35_13982(unknown) = ^CallSideEffect : ~m? +# 35| v35_13983(void) = ^IndirectReadSideEffect[-1] : &:r35_13979, ~m? +# 35| mu35_13984(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13979 +# 35| r35_13985(bool) = Constant[0] : +# 35| v35_13986(void) = ConditionalBranch : r35_13985 #-----| False -> Block 999 #-----| True -> Block 1026 -# 3016| Block 999 -# 3016| r3016_1(glval) = VariableAddress[x999] : -# 3016| mu3016_2(String) = Uninitialized[x999] : &:r3016_1 -# 3016| r3016_3(glval) = FunctionAddress[String] : -# 3016| v3016_4(void) = Call[String] : func:r3016_3, this:r3016_1 -# 3016| mu3016_5(unknown) = ^CallSideEffect : ~m? -# 3016| mu3016_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3016_1 -# 3017| r3017_1(glval) = VariableAddress[x999] : -# 3017| r3017_2(glval) = FunctionAddress[~String] : -# 3017| v3017_3(void) = Call[~String] : func:r3017_2, this:r3017_1 -# 3017| mu3017_4(unknown) = ^CallSideEffect : ~m? -# 3017| v3017_5(void) = ^IndirectReadSideEffect[-1] : &:r3017_1, ~m? -# 3017| mu3017_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3017_1 -# 3017| r3017_7(bool) = Constant[0] : -# 3017| v3017_8(void) = ConditionalBranch : r3017_7 +# 35| Block 999 +# 35| r35_13987(glval) = VariableAddress[x999] : +# 35| mu35_13988(String) = Uninitialized[x999] : &:r35_13987 +# 35| r35_13989(glval) = FunctionAddress[String] : +# 35| v35_13990(void) = Call[String] : func:r35_13989, this:r35_13987 +# 35| mu35_13991(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13992(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13987 +# 35| r35_13993(glval) = VariableAddress[x999] : +# 35| r35_13994(glval) = FunctionAddress[~String] : +# 35| v35_13995(void) = Call[~String] : func:r35_13994, this:r35_13993 +# 35| mu35_13996(unknown) = ^CallSideEffect : ~m? +# 35| v35_13997(void) = ^IndirectReadSideEffect[-1] : &:r35_13993, ~m? +# 35| mu35_13998(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13993 +# 35| r35_13999(bool) = Constant[0] : +# 35| v35_14000(void) = ConditionalBranch : r35_13999 #-----| False -> Block 1000 #-----| True -> Block 1026 -# 3019| Block 1000 -# 3019| r3019_1(glval) = VariableAddress[x1000] : -# 3019| mu3019_2(String) = Uninitialized[x1000] : &:r3019_1 -# 3019| r3019_3(glval) = FunctionAddress[String] : -# 3019| v3019_4(void) = Call[String] : func:r3019_3, this:r3019_1 -# 3019| mu3019_5(unknown) = ^CallSideEffect : ~m? -# 3019| mu3019_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3019_1 -# 3020| r3020_1(glval) = VariableAddress[x1000] : -# 3020| r3020_2(glval) = FunctionAddress[~String] : -# 3020| v3020_3(void) = Call[~String] : func:r3020_2, this:r3020_1 -# 3020| mu3020_4(unknown) = ^CallSideEffect : ~m? -# 3020| v3020_5(void) = ^IndirectReadSideEffect[-1] : &:r3020_1, ~m? -# 3020| mu3020_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3020_1 -# 3020| r3020_7(bool) = Constant[0] : -# 3020| v3020_8(void) = ConditionalBranch : r3020_7 +# 35| Block 1000 +# 35| r35_14001(glval) = VariableAddress[x1000] : +# 35| mu35_14002(String) = Uninitialized[x1000] : &:r35_14001 +# 35| r35_14003(glval) = FunctionAddress[String] : +# 35| v35_14004(void) = Call[String] : func:r35_14003, this:r35_14001 +# 35| mu35_14005(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14006(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14001 +# 35| r35_14007(glval) = VariableAddress[x1000] : +# 35| r35_14008(glval) = FunctionAddress[~String] : +# 35| v35_14009(void) = Call[~String] : func:r35_14008, this:r35_14007 +# 35| mu35_14010(unknown) = ^CallSideEffect : ~m? +# 35| v35_14011(void) = ^IndirectReadSideEffect[-1] : &:r35_14007, ~m? +# 35| mu35_14012(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14007 +# 35| r35_14013(bool) = Constant[0] : +# 35| v35_14014(void) = ConditionalBranch : r35_14013 #-----| False -> Block 1001 #-----| True -> Block 1026 -# 3022| Block 1001 -# 3022| r3022_1(glval) = VariableAddress[x1001] : -# 3022| mu3022_2(String) = Uninitialized[x1001] : &:r3022_1 -# 3022| r3022_3(glval) = FunctionAddress[String] : -# 3022| v3022_4(void) = Call[String] : func:r3022_3, this:r3022_1 -# 3022| mu3022_5(unknown) = ^CallSideEffect : ~m? -# 3022| mu3022_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3022_1 -# 3023| r3023_1(glval) = VariableAddress[x1001] : -# 3023| r3023_2(glval) = FunctionAddress[~String] : -# 3023| v3023_3(void) = Call[~String] : func:r3023_2, this:r3023_1 -# 3023| mu3023_4(unknown) = ^CallSideEffect : ~m? -# 3023| v3023_5(void) = ^IndirectReadSideEffect[-1] : &:r3023_1, ~m? -# 3023| mu3023_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3023_1 -# 3023| r3023_7(bool) = Constant[0] : -# 3023| v3023_8(void) = ConditionalBranch : r3023_7 +# 35| Block 1001 +# 35| r35_14015(glval) = VariableAddress[x1001] : +# 35| mu35_14016(String) = Uninitialized[x1001] : &:r35_14015 +# 35| r35_14017(glval) = FunctionAddress[String] : +# 35| v35_14018(void) = Call[String] : func:r35_14017, this:r35_14015 +# 35| mu35_14019(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14020(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14015 +# 35| r35_14021(glval) = VariableAddress[x1001] : +# 35| r35_14022(glval) = FunctionAddress[~String] : +# 35| v35_14023(void) = Call[~String] : func:r35_14022, this:r35_14021 +# 35| mu35_14024(unknown) = ^CallSideEffect : ~m? +# 35| v35_14025(void) = ^IndirectReadSideEffect[-1] : &:r35_14021, ~m? +# 35| mu35_14026(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14021 +# 35| r35_14027(bool) = Constant[0] : +# 35| v35_14028(void) = ConditionalBranch : r35_14027 #-----| False -> Block 1002 #-----| True -> Block 1026 -# 3025| Block 1002 -# 3025| r3025_1(glval) = VariableAddress[x1002] : -# 3025| mu3025_2(String) = Uninitialized[x1002] : &:r3025_1 -# 3025| r3025_3(glval) = FunctionAddress[String] : -# 3025| v3025_4(void) = Call[String] : func:r3025_3, this:r3025_1 -# 3025| mu3025_5(unknown) = ^CallSideEffect : ~m? -# 3025| mu3025_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3025_1 -# 3026| r3026_1(glval) = VariableAddress[x1002] : -# 3026| r3026_2(glval) = FunctionAddress[~String] : -# 3026| v3026_3(void) = Call[~String] : func:r3026_2, this:r3026_1 -# 3026| mu3026_4(unknown) = ^CallSideEffect : ~m? -# 3026| v3026_5(void) = ^IndirectReadSideEffect[-1] : &:r3026_1, ~m? -# 3026| mu3026_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3026_1 -# 3026| r3026_7(bool) = Constant[0] : -# 3026| v3026_8(void) = ConditionalBranch : r3026_7 +# 35| Block 1002 +# 35| r35_14029(glval) = VariableAddress[x1002] : +# 35| mu35_14030(String) = Uninitialized[x1002] : &:r35_14029 +# 35| r35_14031(glval) = FunctionAddress[String] : +# 35| v35_14032(void) = Call[String] : func:r35_14031, this:r35_14029 +# 35| mu35_14033(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14034(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14029 +# 35| r35_14035(glval) = VariableAddress[x1002] : +# 35| r35_14036(glval) = FunctionAddress[~String] : +# 35| v35_14037(void) = Call[~String] : func:r35_14036, this:r35_14035 +# 35| mu35_14038(unknown) = ^CallSideEffect : ~m? +# 35| v35_14039(void) = ^IndirectReadSideEffect[-1] : &:r35_14035, ~m? +# 35| mu35_14040(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14035 +# 35| r35_14041(bool) = Constant[0] : +# 35| v35_14042(void) = ConditionalBranch : r35_14041 #-----| False -> Block 1003 #-----| True -> Block 1026 -# 3028| Block 1003 -# 3028| r3028_1(glval) = VariableAddress[x1003] : -# 3028| mu3028_2(String) = Uninitialized[x1003] : &:r3028_1 -# 3028| r3028_3(glval) = FunctionAddress[String] : -# 3028| v3028_4(void) = Call[String] : func:r3028_3, this:r3028_1 -# 3028| mu3028_5(unknown) = ^CallSideEffect : ~m? -# 3028| mu3028_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3028_1 -# 3029| r3029_1(glval) = VariableAddress[x1003] : -# 3029| r3029_2(glval) = FunctionAddress[~String] : -# 3029| v3029_3(void) = Call[~String] : func:r3029_2, this:r3029_1 -# 3029| mu3029_4(unknown) = ^CallSideEffect : ~m? -# 3029| v3029_5(void) = ^IndirectReadSideEffect[-1] : &:r3029_1, ~m? -# 3029| mu3029_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3029_1 -# 3029| r3029_7(bool) = Constant[0] : -# 3029| v3029_8(void) = ConditionalBranch : r3029_7 +# 35| Block 1003 +# 35| r35_14043(glval) = VariableAddress[x1003] : +# 35| mu35_14044(String) = Uninitialized[x1003] : &:r35_14043 +# 35| r35_14045(glval) = FunctionAddress[String] : +# 35| v35_14046(void) = Call[String] : func:r35_14045, this:r35_14043 +# 35| mu35_14047(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14048(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14043 +# 35| r35_14049(glval) = VariableAddress[x1003] : +# 35| r35_14050(glval) = FunctionAddress[~String] : +# 35| v35_14051(void) = Call[~String] : func:r35_14050, this:r35_14049 +# 35| mu35_14052(unknown) = ^CallSideEffect : ~m? +# 35| v35_14053(void) = ^IndirectReadSideEffect[-1] : &:r35_14049, ~m? +# 35| mu35_14054(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14049 +# 35| r35_14055(bool) = Constant[0] : +# 35| v35_14056(void) = ConditionalBranch : r35_14055 #-----| False -> Block 1004 #-----| True -> Block 1026 -# 3031| Block 1004 -# 3031| r3031_1(glval) = VariableAddress[x1004] : -# 3031| mu3031_2(String) = Uninitialized[x1004] : &:r3031_1 -# 3031| r3031_3(glval) = FunctionAddress[String] : -# 3031| v3031_4(void) = Call[String] : func:r3031_3, this:r3031_1 -# 3031| mu3031_5(unknown) = ^CallSideEffect : ~m? -# 3031| mu3031_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3031_1 -# 3032| r3032_1(glval) = VariableAddress[x1004] : -# 3032| r3032_2(glval) = FunctionAddress[~String] : -# 3032| v3032_3(void) = Call[~String] : func:r3032_2, this:r3032_1 -# 3032| mu3032_4(unknown) = ^CallSideEffect : ~m? -# 3032| v3032_5(void) = ^IndirectReadSideEffect[-1] : &:r3032_1, ~m? -# 3032| mu3032_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3032_1 -# 3032| r3032_7(bool) = Constant[0] : -# 3032| v3032_8(void) = ConditionalBranch : r3032_7 +# 35| Block 1004 +# 35| r35_14057(glval) = VariableAddress[x1004] : +# 35| mu35_14058(String) = Uninitialized[x1004] : &:r35_14057 +# 35| r35_14059(glval) = FunctionAddress[String] : +# 35| v35_14060(void) = Call[String] : func:r35_14059, this:r35_14057 +# 35| mu35_14061(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14062(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14057 +# 35| r35_14063(glval) = VariableAddress[x1004] : +# 35| r35_14064(glval) = FunctionAddress[~String] : +# 35| v35_14065(void) = Call[~String] : func:r35_14064, this:r35_14063 +# 35| mu35_14066(unknown) = ^CallSideEffect : ~m? +# 35| v35_14067(void) = ^IndirectReadSideEffect[-1] : &:r35_14063, ~m? +# 35| mu35_14068(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14063 +# 35| r35_14069(bool) = Constant[0] : +# 35| v35_14070(void) = ConditionalBranch : r35_14069 #-----| False -> Block 1005 #-----| True -> Block 1026 -# 3034| Block 1005 -# 3034| r3034_1(glval) = VariableAddress[x1005] : -# 3034| mu3034_2(String) = Uninitialized[x1005] : &:r3034_1 -# 3034| r3034_3(glval) = FunctionAddress[String] : -# 3034| v3034_4(void) = Call[String] : func:r3034_3, this:r3034_1 -# 3034| mu3034_5(unknown) = ^CallSideEffect : ~m? -# 3034| mu3034_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3034_1 -# 3035| r3035_1(glval) = VariableAddress[x1005] : -# 3035| r3035_2(glval) = FunctionAddress[~String] : -# 3035| v3035_3(void) = Call[~String] : func:r3035_2, this:r3035_1 -# 3035| mu3035_4(unknown) = ^CallSideEffect : ~m? -# 3035| v3035_5(void) = ^IndirectReadSideEffect[-1] : &:r3035_1, ~m? -# 3035| mu3035_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3035_1 -# 3035| r3035_7(bool) = Constant[0] : -# 3035| v3035_8(void) = ConditionalBranch : r3035_7 +# 35| Block 1005 +# 35| r35_14071(glval) = VariableAddress[x1005] : +# 35| mu35_14072(String) = Uninitialized[x1005] : &:r35_14071 +# 35| r35_14073(glval) = FunctionAddress[String] : +# 35| v35_14074(void) = Call[String] : func:r35_14073, this:r35_14071 +# 35| mu35_14075(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14076(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14071 +# 35| r35_14077(glval) = VariableAddress[x1005] : +# 35| r35_14078(glval) = FunctionAddress[~String] : +# 35| v35_14079(void) = Call[~String] : func:r35_14078, this:r35_14077 +# 35| mu35_14080(unknown) = ^CallSideEffect : ~m? +# 35| v35_14081(void) = ^IndirectReadSideEffect[-1] : &:r35_14077, ~m? +# 35| mu35_14082(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14077 +# 35| r35_14083(bool) = Constant[0] : +# 35| v35_14084(void) = ConditionalBranch : r35_14083 #-----| False -> Block 1006 #-----| True -> Block 1026 -# 3037| Block 1006 -# 3037| r3037_1(glval) = VariableAddress[x1006] : -# 3037| mu3037_2(String) = Uninitialized[x1006] : &:r3037_1 -# 3037| r3037_3(glval) = FunctionAddress[String] : -# 3037| v3037_4(void) = Call[String] : func:r3037_3, this:r3037_1 -# 3037| mu3037_5(unknown) = ^CallSideEffect : ~m? -# 3037| mu3037_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3037_1 -# 3038| r3038_1(glval) = VariableAddress[x1006] : -# 3038| r3038_2(glval) = FunctionAddress[~String] : -# 3038| v3038_3(void) = Call[~String] : func:r3038_2, this:r3038_1 -# 3038| mu3038_4(unknown) = ^CallSideEffect : ~m? -# 3038| v3038_5(void) = ^IndirectReadSideEffect[-1] : &:r3038_1, ~m? -# 3038| mu3038_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3038_1 -# 3038| r3038_7(bool) = Constant[0] : -# 3038| v3038_8(void) = ConditionalBranch : r3038_7 +# 35| Block 1006 +# 35| r35_14085(glval) = VariableAddress[x1006] : +# 35| mu35_14086(String) = Uninitialized[x1006] : &:r35_14085 +# 35| r35_14087(glval) = FunctionAddress[String] : +# 35| v35_14088(void) = Call[String] : func:r35_14087, this:r35_14085 +# 35| mu35_14089(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14090(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14085 +# 35| r35_14091(glval) = VariableAddress[x1006] : +# 35| r35_14092(glval) = FunctionAddress[~String] : +# 35| v35_14093(void) = Call[~String] : func:r35_14092, this:r35_14091 +# 35| mu35_14094(unknown) = ^CallSideEffect : ~m? +# 35| v35_14095(void) = ^IndirectReadSideEffect[-1] : &:r35_14091, ~m? +# 35| mu35_14096(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14091 +# 35| r35_14097(bool) = Constant[0] : +# 35| v35_14098(void) = ConditionalBranch : r35_14097 #-----| False -> Block 1007 #-----| True -> Block 1026 -# 3040| Block 1007 -# 3040| r3040_1(glval) = VariableAddress[x1007] : -# 3040| mu3040_2(String) = Uninitialized[x1007] : &:r3040_1 -# 3040| r3040_3(glval) = FunctionAddress[String] : -# 3040| v3040_4(void) = Call[String] : func:r3040_3, this:r3040_1 -# 3040| mu3040_5(unknown) = ^CallSideEffect : ~m? -# 3040| mu3040_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3040_1 -# 3041| r3041_1(glval) = VariableAddress[x1007] : -# 3041| r3041_2(glval) = FunctionAddress[~String] : -# 3041| v3041_3(void) = Call[~String] : func:r3041_2, this:r3041_1 -# 3041| mu3041_4(unknown) = ^CallSideEffect : ~m? -# 3041| v3041_5(void) = ^IndirectReadSideEffect[-1] : &:r3041_1, ~m? -# 3041| mu3041_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3041_1 -# 3041| r3041_7(bool) = Constant[0] : -# 3041| v3041_8(void) = ConditionalBranch : r3041_7 +# 35| Block 1007 +# 35| r35_14099(glval) = VariableAddress[x1007] : +# 35| mu35_14100(String) = Uninitialized[x1007] : &:r35_14099 +# 35| r35_14101(glval) = FunctionAddress[String] : +# 35| v35_14102(void) = Call[String] : func:r35_14101, this:r35_14099 +# 35| mu35_14103(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14099 +# 35| r35_14105(glval) = VariableAddress[x1007] : +# 35| r35_14106(glval) = FunctionAddress[~String] : +# 35| v35_14107(void) = Call[~String] : func:r35_14106, this:r35_14105 +# 35| mu35_14108(unknown) = ^CallSideEffect : ~m? +# 35| v35_14109(void) = ^IndirectReadSideEffect[-1] : &:r35_14105, ~m? +# 35| mu35_14110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14105 +# 35| r35_14111(bool) = Constant[0] : +# 35| v35_14112(void) = ConditionalBranch : r35_14111 #-----| False -> Block 1008 #-----| True -> Block 1026 -# 3043| Block 1008 -# 3043| r3043_1(glval) = VariableAddress[x1008] : -# 3043| mu3043_2(String) = Uninitialized[x1008] : &:r3043_1 -# 3043| r3043_3(glval) = FunctionAddress[String] : -# 3043| v3043_4(void) = Call[String] : func:r3043_3, this:r3043_1 -# 3043| mu3043_5(unknown) = ^CallSideEffect : ~m? -# 3043| mu3043_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3043_1 -# 3044| r3044_1(glval) = VariableAddress[x1008] : -# 3044| r3044_2(glval) = FunctionAddress[~String] : -# 3044| v3044_3(void) = Call[~String] : func:r3044_2, this:r3044_1 -# 3044| mu3044_4(unknown) = ^CallSideEffect : ~m? -# 3044| v3044_5(void) = ^IndirectReadSideEffect[-1] : &:r3044_1, ~m? -# 3044| mu3044_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3044_1 -# 3044| r3044_7(bool) = Constant[0] : -# 3044| v3044_8(void) = ConditionalBranch : r3044_7 +# 35| Block 1008 +# 35| r35_14113(glval) = VariableAddress[x1008] : +# 35| mu35_14114(String) = Uninitialized[x1008] : &:r35_14113 +# 35| r35_14115(glval) = FunctionAddress[String] : +# 35| v35_14116(void) = Call[String] : func:r35_14115, this:r35_14113 +# 35| mu35_14117(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14113 +# 35| r35_14119(glval) = VariableAddress[x1008] : +# 35| r35_14120(glval) = FunctionAddress[~String] : +# 35| v35_14121(void) = Call[~String] : func:r35_14120, this:r35_14119 +# 35| mu35_14122(unknown) = ^CallSideEffect : ~m? +# 35| v35_14123(void) = ^IndirectReadSideEffect[-1] : &:r35_14119, ~m? +# 35| mu35_14124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14119 +# 35| r35_14125(bool) = Constant[0] : +# 35| v35_14126(void) = ConditionalBranch : r35_14125 #-----| False -> Block 1009 #-----| True -> Block 1026 -# 3046| Block 1009 -# 3046| r3046_1(glval) = VariableAddress[x1009] : -# 3046| mu3046_2(String) = Uninitialized[x1009] : &:r3046_1 -# 3046| r3046_3(glval) = FunctionAddress[String] : -# 3046| v3046_4(void) = Call[String] : func:r3046_3, this:r3046_1 -# 3046| mu3046_5(unknown) = ^CallSideEffect : ~m? -# 3046| mu3046_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3046_1 -# 3047| r3047_1(glval) = VariableAddress[x1009] : -# 3047| r3047_2(glval) = FunctionAddress[~String] : -# 3047| v3047_3(void) = Call[~String] : func:r3047_2, this:r3047_1 -# 3047| mu3047_4(unknown) = ^CallSideEffect : ~m? -# 3047| v3047_5(void) = ^IndirectReadSideEffect[-1] : &:r3047_1, ~m? -# 3047| mu3047_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3047_1 -# 3047| r3047_7(bool) = Constant[0] : -# 3047| v3047_8(void) = ConditionalBranch : r3047_7 +# 35| Block 1009 +# 35| r35_14127(glval) = VariableAddress[x1009] : +# 35| mu35_14128(String) = Uninitialized[x1009] : &:r35_14127 +# 35| r35_14129(glval) = FunctionAddress[String] : +# 35| v35_14130(void) = Call[String] : func:r35_14129, this:r35_14127 +# 35| mu35_14131(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14127 +# 35| r35_14133(glval) = VariableAddress[x1009] : +# 35| r35_14134(glval) = FunctionAddress[~String] : +# 35| v35_14135(void) = Call[~String] : func:r35_14134, this:r35_14133 +# 35| mu35_14136(unknown) = ^CallSideEffect : ~m? +# 35| v35_14137(void) = ^IndirectReadSideEffect[-1] : &:r35_14133, ~m? +# 35| mu35_14138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14133 +# 35| r35_14139(bool) = Constant[0] : +# 35| v35_14140(void) = ConditionalBranch : r35_14139 #-----| False -> Block 1010 #-----| True -> Block 1026 -# 3049| Block 1010 -# 3049| r3049_1(glval) = VariableAddress[x1010] : -# 3049| mu3049_2(String) = Uninitialized[x1010] : &:r3049_1 -# 3049| r3049_3(glval) = FunctionAddress[String] : -# 3049| v3049_4(void) = Call[String] : func:r3049_3, this:r3049_1 -# 3049| mu3049_5(unknown) = ^CallSideEffect : ~m? -# 3049| mu3049_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3049_1 -# 3050| r3050_1(glval) = VariableAddress[x1010] : -# 3050| r3050_2(glval) = FunctionAddress[~String] : -# 3050| v3050_3(void) = Call[~String] : func:r3050_2, this:r3050_1 -# 3050| mu3050_4(unknown) = ^CallSideEffect : ~m? -# 3050| v3050_5(void) = ^IndirectReadSideEffect[-1] : &:r3050_1, ~m? -# 3050| mu3050_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3050_1 -# 3050| r3050_7(bool) = Constant[0] : -# 3050| v3050_8(void) = ConditionalBranch : r3050_7 +# 35| Block 1010 +# 35| r35_14141(glval) = VariableAddress[x1010] : +# 35| mu35_14142(String) = Uninitialized[x1010] : &:r35_14141 +# 35| r35_14143(glval) = FunctionAddress[String] : +# 35| v35_14144(void) = Call[String] : func:r35_14143, this:r35_14141 +# 35| mu35_14145(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14141 +# 35| r35_14147(glval) = VariableAddress[x1010] : +# 35| r35_14148(glval) = FunctionAddress[~String] : +# 35| v35_14149(void) = Call[~String] : func:r35_14148, this:r35_14147 +# 35| mu35_14150(unknown) = ^CallSideEffect : ~m? +# 35| v35_14151(void) = ^IndirectReadSideEffect[-1] : &:r35_14147, ~m? +# 35| mu35_14152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14147 +# 35| r35_14153(bool) = Constant[0] : +# 35| v35_14154(void) = ConditionalBranch : r35_14153 #-----| False -> Block 1011 #-----| True -> Block 1026 -# 3052| Block 1011 -# 3052| r3052_1(glval) = VariableAddress[x1011] : -# 3052| mu3052_2(String) = Uninitialized[x1011] : &:r3052_1 -# 3052| r3052_3(glval) = FunctionAddress[String] : -# 3052| v3052_4(void) = Call[String] : func:r3052_3, this:r3052_1 -# 3052| mu3052_5(unknown) = ^CallSideEffect : ~m? -# 3052| mu3052_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3052_1 -# 3053| r3053_1(glval) = VariableAddress[x1011] : -# 3053| r3053_2(glval) = FunctionAddress[~String] : -# 3053| v3053_3(void) = Call[~String] : func:r3053_2, this:r3053_1 -# 3053| mu3053_4(unknown) = ^CallSideEffect : ~m? -# 3053| v3053_5(void) = ^IndirectReadSideEffect[-1] : &:r3053_1, ~m? -# 3053| mu3053_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3053_1 -# 3053| r3053_7(bool) = Constant[0] : -# 3053| v3053_8(void) = ConditionalBranch : r3053_7 +# 35| Block 1011 +# 35| r35_14155(glval) = VariableAddress[x1011] : +# 35| mu35_14156(String) = Uninitialized[x1011] : &:r35_14155 +# 35| r35_14157(glval) = FunctionAddress[String] : +# 35| v35_14158(void) = Call[String] : func:r35_14157, this:r35_14155 +# 35| mu35_14159(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14155 +# 35| r35_14161(glval) = VariableAddress[x1011] : +# 35| r35_14162(glval) = FunctionAddress[~String] : +# 35| v35_14163(void) = Call[~String] : func:r35_14162, this:r35_14161 +# 35| mu35_14164(unknown) = ^CallSideEffect : ~m? +# 35| v35_14165(void) = ^IndirectReadSideEffect[-1] : &:r35_14161, ~m? +# 35| mu35_14166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14161 +# 35| r35_14167(bool) = Constant[0] : +# 35| v35_14168(void) = ConditionalBranch : r35_14167 #-----| False -> Block 1012 #-----| True -> Block 1026 -# 3055| Block 1012 -# 3055| r3055_1(glval) = VariableAddress[x1012] : -# 3055| mu3055_2(String) = Uninitialized[x1012] : &:r3055_1 -# 3055| r3055_3(glval) = FunctionAddress[String] : -# 3055| v3055_4(void) = Call[String] : func:r3055_3, this:r3055_1 -# 3055| mu3055_5(unknown) = ^CallSideEffect : ~m? -# 3055| mu3055_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3055_1 -# 3056| r3056_1(glval) = VariableAddress[x1012] : -# 3056| r3056_2(glval) = FunctionAddress[~String] : -# 3056| v3056_3(void) = Call[~String] : func:r3056_2, this:r3056_1 -# 3056| mu3056_4(unknown) = ^CallSideEffect : ~m? -# 3056| v3056_5(void) = ^IndirectReadSideEffect[-1] : &:r3056_1, ~m? -# 3056| mu3056_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3056_1 -# 3056| r3056_7(bool) = Constant[0] : -# 3056| v3056_8(void) = ConditionalBranch : r3056_7 +# 35| Block 1012 +# 35| r35_14169(glval) = VariableAddress[x1012] : +# 35| mu35_14170(String) = Uninitialized[x1012] : &:r35_14169 +# 35| r35_14171(glval) = FunctionAddress[String] : +# 35| v35_14172(void) = Call[String] : func:r35_14171, this:r35_14169 +# 35| mu35_14173(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14169 +# 35| r35_14175(glval) = VariableAddress[x1012] : +# 35| r35_14176(glval) = FunctionAddress[~String] : +# 35| v35_14177(void) = Call[~String] : func:r35_14176, this:r35_14175 +# 35| mu35_14178(unknown) = ^CallSideEffect : ~m? +# 35| v35_14179(void) = ^IndirectReadSideEffect[-1] : &:r35_14175, ~m? +# 35| mu35_14180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14175 +# 35| r35_14181(bool) = Constant[0] : +# 35| v35_14182(void) = ConditionalBranch : r35_14181 #-----| False -> Block 1013 #-----| True -> Block 1026 -# 3058| Block 1013 -# 3058| r3058_1(glval) = VariableAddress[x1013] : -# 3058| mu3058_2(String) = Uninitialized[x1013] : &:r3058_1 -# 3058| r3058_3(glval) = FunctionAddress[String] : -# 3058| v3058_4(void) = Call[String] : func:r3058_3, this:r3058_1 -# 3058| mu3058_5(unknown) = ^CallSideEffect : ~m? -# 3058| mu3058_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3058_1 -# 3059| r3059_1(glval) = VariableAddress[x1013] : -# 3059| r3059_2(glval) = FunctionAddress[~String] : -# 3059| v3059_3(void) = Call[~String] : func:r3059_2, this:r3059_1 -# 3059| mu3059_4(unknown) = ^CallSideEffect : ~m? -# 3059| v3059_5(void) = ^IndirectReadSideEffect[-1] : &:r3059_1, ~m? -# 3059| mu3059_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3059_1 -# 3059| r3059_7(bool) = Constant[0] : -# 3059| v3059_8(void) = ConditionalBranch : r3059_7 +# 35| Block 1013 +# 35| r35_14183(glval) = VariableAddress[x1013] : +# 35| mu35_14184(String) = Uninitialized[x1013] : &:r35_14183 +# 35| r35_14185(glval) = FunctionAddress[String] : +# 35| v35_14186(void) = Call[String] : func:r35_14185, this:r35_14183 +# 35| mu35_14187(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14183 +# 35| r35_14189(glval) = VariableAddress[x1013] : +# 35| r35_14190(glval) = FunctionAddress[~String] : +# 35| v35_14191(void) = Call[~String] : func:r35_14190, this:r35_14189 +# 35| mu35_14192(unknown) = ^CallSideEffect : ~m? +# 35| v35_14193(void) = ^IndirectReadSideEffect[-1] : &:r35_14189, ~m? +# 35| mu35_14194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14189 +# 35| r35_14195(bool) = Constant[0] : +# 35| v35_14196(void) = ConditionalBranch : r35_14195 #-----| False -> Block 1014 #-----| True -> Block 1026 -# 3061| Block 1014 -# 3061| r3061_1(glval) = VariableAddress[x1014] : -# 3061| mu3061_2(String) = Uninitialized[x1014] : &:r3061_1 -# 3061| r3061_3(glval) = FunctionAddress[String] : -# 3061| v3061_4(void) = Call[String] : func:r3061_3, this:r3061_1 -# 3061| mu3061_5(unknown) = ^CallSideEffect : ~m? -# 3061| mu3061_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3061_1 -# 3062| r3062_1(glval) = VariableAddress[x1014] : -# 3062| r3062_2(glval) = FunctionAddress[~String] : -# 3062| v3062_3(void) = Call[~String] : func:r3062_2, this:r3062_1 -# 3062| mu3062_4(unknown) = ^CallSideEffect : ~m? -# 3062| v3062_5(void) = ^IndirectReadSideEffect[-1] : &:r3062_1, ~m? -# 3062| mu3062_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3062_1 -# 3062| r3062_7(bool) = Constant[0] : -# 3062| v3062_8(void) = ConditionalBranch : r3062_7 +# 35| Block 1014 +# 35| r35_14197(glval) = VariableAddress[x1014] : +# 35| mu35_14198(String) = Uninitialized[x1014] : &:r35_14197 +# 35| r35_14199(glval) = FunctionAddress[String] : +# 35| v35_14200(void) = Call[String] : func:r35_14199, this:r35_14197 +# 35| mu35_14201(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14197 +# 35| r35_14203(glval) = VariableAddress[x1014] : +# 35| r35_14204(glval) = FunctionAddress[~String] : +# 35| v35_14205(void) = Call[~String] : func:r35_14204, this:r35_14203 +# 35| mu35_14206(unknown) = ^CallSideEffect : ~m? +# 35| v35_14207(void) = ^IndirectReadSideEffect[-1] : &:r35_14203, ~m? +# 35| mu35_14208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14203 +# 35| r35_14209(bool) = Constant[0] : +# 35| v35_14210(void) = ConditionalBranch : r35_14209 #-----| False -> Block 1015 #-----| True -> Block 1026 -# 3064| Block 1015 -# 3064| r3064_1(glval) = VariableAddress[x1015] : -# 3064| mu3064_2(String) = Uninitialized[x1015] : &:r3064_1 -# 3064| r3064_3(glval) = FunctionAddress[String] : -# 3064| v3064_4(void) = Call[String] : func:r3064_3, this:r3064_1 -# 3064| mu3064_5(unknown) = ^CallSideEffect : ~m? -# 3064| mu3064_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3064_1 -# 3065| r3065_1(glval) = VariableAddress[x1015] : -# 3065| r3065_2(glval) = FunctionAddress[~String] : -# 3065| v3065_3(void) = Call[~String] : func:r3065_2, this:r3065_1 -# 3065| mu3065_4(unknown) = ^CallSideEffect : ~m? -# 3065| v3065_5(void) = ^IndirectReadSideEffect[-1] : &:r3065_1, ~m? -# 3065| mu3065_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3065_1 -# 3065| r3065_7(bool) = Constant[0] : -# 3065| v3065_8(void) = ConditionalBranch : r3065_7 +# 35| Block 1015 +# 35| r35_14211(glval) = VariableAddress[x1015] : +# 35| mu35_14212(String) = Uninitialized[x1015] : &:r35_14211 +# 35| r35_14213(glval) = FunctionAddress[String] : +# 35| v35_14214(void) = Call[String] : func:r35_14213, this:r35_14211 +# 35| mu35_14215(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14211 +# 35| r35_14217(glval) = VariableAddress[x1015] : +# 35| r35_14218(glval) = FunctionAddress[~String] : +# 35| v35_14219(void) = Call[~String] : func:r35_14218, this:r35_14217 +# 35| mu35_14220(unknown) = ^CallSideEffect : ~m? +# 35| v35_14221(void) = ^IndirectReadSideEffect[-1] : &:r35_14217, ~m? +# 35| mu35_14222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14217 +# 35| r35_14223(bool) = Constant[0] : +# 35| v35_14224(void) = ConditionalBranch : r35_14223 #-----| False -> Block 1016 #-----| True -> Block 1026 -# 3067| Block 1016 -# 3067| r3067_1(glval) = VariableAddress[x1016] : -# 3067| mu3067_2(String) = Uninitialized[x1016] : &:r3067_1 -# 3067| r3067_3(glval) = FunctionAddress[String] : -# 3067| v3067_4(void) = Call[String] : func:r3067_3, this:r3067_1 -# 3067| mu3067_5(unknown) = ^CallSideEffect : ~m? -# 3067| mu3067_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3067_1 -# 3068| r3068_1(glval) = VariableAddress[x1016] : -# 3068| r3068_2(glval) = FunctionAddress[~String] : -# 3068| v3068_3(void) = Call[~String] : func:r3068_2, this:r3068_1 -# 3068| mu3068_4(unknown) = ^CallSideEffect : ~m? -# 3068| v3068_5(void) = ^IndirectReadSideEffect[-1] : &:r3068_1, ~m? -# 3068| mu3068_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3068_1 -# 3068| r3068_7(bool) = Constant[0] : -# 3068| v3068_8(void) = ConditionalBranch : r3068_7 +# 35| Block 1016 +# 35| r35_14225(glval) = VariableAddress[x1016] : +# 35| mu35_14226(String) = Uninitialized[x1016] : &:r35_14225 +# 35| r35_14227(glval) = FunctionAddress[String] : +# 35| v35_14228(void) = Call[String] : func:r35_14227, this:r35_14225 +# 35| mu35_14229(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14225 +# 35| r35_14231(glval) = VariableAddress[x1016] : +# 35| r35_14232(glval) = FunctionAddress[~String] : +# 35| v35_14233(void) = Call[~String] : func:r35_14232, this:r35_14231 +# 35| mu35_14234(unknown) = ^CallSideEffect : ~m? +# 35| v35_14235(void) = ^IndirectReadSideEffect[-1] : &:r35_14231, ~m? +# 35| mu35_14236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14231 +# 35| r35_14237(bool) = Constant[0] : +# 35| v35_14238(void) = ConditionalBranch : r35_14237 #-----| False -> Block 1017 #-----| True -> Block 1026 -# 3070| Block 1017 -# 3070| r3070_1(glval) = VariableAddress[x1017] : -# 3070| mu3070_2(String) = Uninitialized[x1017] : &:r3070_1 -# 3070| r3070_3(glval) = FunctionAddress[String] : -# 3070| v3070_4(void) = Call[String] : func:r3070_3, this:r3070_1 -# 3070| mu3070_5(unknown) = ^CallSideEffect : ~m? -# 3070| mu3070_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3070_1 -# 3071| r3071_1(glval) = VariableAddress[x1017] : -# 3071| r3071_2(glval) = FunctionAddress[~String] : -# 3071| v3071_3(void) = Call[~String] : func:r3071_2, this:r3071_1 -# 3071| mu3071_4(unknown) = ^CallSideEffect : ~m? -# 3071| v3071_5(void) = ^IndirectReadSideEffect[-1] : &:r3071_1, ~m? -# 3071| mu3071_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3071_1 -# 3071| r3071_7(bool) = Constant[0] : -# 3071| v3071_8(void) = ConditionalBranch : r3071_7 +# 35| Block 1017 +# 35| r35_14239(glval) = VariableAddress[x1017] : +# 35| mu35_14240(String) = Uninitialized[x1017] : &:r35_14239 +# 35| r35_14241(glval) = FunctionAddress[String] : +# 35| v35_14242(void) = Call[String] : func:r35_14241, this:r35_14239 +# 35| mu35_14243(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14239 +# 35| r35_14245(glval) = VariableAddress[x1017] : +# 35| r35_14246(glval) = FunctionAddress[~String] : +# 35| v35_14247(void) = Call[~String] : func:r35_14246, this:r35_14245 +# 35| mu35_14248(unknown) = ^CallSideEffect : ~m? +# 35| v35_14249(void) = ^IndirectReadSideEffect[-1] : &:r35_14245, ~m? +# 35| mu35_14250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14245 +# 35| r35_14251(bool) = Constant[0] : +# 35| v35_14252(void) = ConditionalBranch : r35_14251 #-----| False -> Block 1018 #-----| True -> Block 1026 -# 3073| Block 1018 -# 3073| r3073_1(glval) = VariableAddress[x1018] : -# 3073| mu3073_2(String) = Uninitialized[x1018] : &:r3073_1 -# 3073| r3073_3(glval) = FunctionAddress[String] : -# 3073| v3073_4(void) = Call[String] : func:r3073_3, this:r3073_1 -# 3073| mu3073_5(unknown) = ^CallSideEffect : ~m? -# 3073| mu3073_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3073_1 -# 3074| r3074_1(glval) = VariableAddress[x1018] : -# 3074| r3074_2(glval) = FunctionAddress[~String] : -# 3074| v3074_3(void) = Call[~String] : func:r3074_2, this:r3074_1 -# 3074| mu3074_4(unknown) = ^CallSideEffect : ~m? -# 3074| v3074_5(void) = ^IndirectReadSideEffect[-1] : &:r3074_1, ~m? -# 3074| mu3074_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3074_1 -# 3074| r3074_7(bool) = Constant[0] : -# 3074| v3074_8(void) = ConditionalBranch : r3074_7 +# 35| Block 1018 +# 35| r35_14253(glval) = VariableAddress[x1018] : +# 35| mu35_14254(String) = Uninitialized[x1018] : &:r35_14253 +# 35| r35_14255(glval) = FunctionAddress[String] : +# 35| v35_14256(void) = Call[String] : func:r35_14255, this:r35_14253 +# 35| mu35_14257(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14253 +# 35| r35_14259(glval) = VariableAddress[x1018] : +# 35| r35_14260(glval) = FunctionAddress[~String] : +# 35| v35_14261(void) = Call[~String] : func:r35_14260, this:r35_14259 +# 35| mu35_14262(unknown) = ^CallSideEffect : ~m? +# 35| v35_14263(void) = ^IndirectReadSideEffect[-1] : &:r35_14259, ~m? +# 35| mu35_14264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14259 +# 35| r35_14265(bool) = Constant[0] : +# 35| v35_14266(void) = ConditionalBranch : r35_14265 #-----| False -> Block 1019 #-----| True -> Block 1026 -# 3076| Block 1019 -# 3076| r3076_1(glval) = VariableAddress[x1019] : -# 3076| mu3076_2(String) = Uninitialized[x1019] : &:r3076_1 -# 3076| r3076_3(glval) = FunctionAddress[String] : -# 3076| v3076_4(void) = Call[String] : func:r3076_3, this:r3076_1 -# 3076| mu3076_5(unknown) = ^CallSideEffect : ~m? -# 3076| mu3076_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3076_1 -# 3077| r3077_1(glval) = VariableAddress[x1019] : -# 3077| r3077_2(glval) = FunctionAddress[~String] : -# 3077| v3077_3(void) = Call[~String] : func:r3077_2, this:r3077_1 -# 3077| mu3077_4(unknown) = ^CallSideEffect : ~m? -# 3077| v3077_5(void) = ^IndirectReadSideEffect[-1] : &:r3077_1, ~m? -# 3077| mu3077_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3077_1 -# 3077| r3077_7(bool) = Constant[0] : -# 3077| v3077_8(void) = ConditionalBranch : r3077_7 +# 35| Block 1019 +# 35| r35_14267(glval) = VariableAddress[x1019] : +# 35| mu35_14268(String) = Uninitialized[x1019] : &:r35_14267 +# 35| r35_14269(glval) = FunctionAddress[String] : +# 35| v35_14270(void) = Call[String] : func:r35_14269, this:r35_14267 +# 35| mu35_14271(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14267 +# 35| r35_14273(glval) = VariableAddress[x1019] : +# 35| r35_14274(glval) = FunctionAddress[~String] : +# 35| v35_14275(void) = Call[~String] : func:r35_14274, this:r35_14273 +# 35| mu35_14276(unknown) = ^CallSideEffect : ~m? +# 35| v35_14277(void) = ^IndirectReadSideEffect[-1] : &:r35_14273, ~m? +# 35| mu35_14278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14273 +# 35| r35_14279(bool) = Constant[0] : +# 35| v35_14280(void) = ConditionalBranch : r35_14279 #-----| False -> Block 1020 #-----| True -> Block 1026 -# 3079| Block 1020 -# 3079| r3079_1(glval) = VariableAddress[x1020] : -# 3079| mu3079_2(String) = Uninitialized[x1020] : &:r3079_1 -# 3079| r3079_3(glval) = FunctionAddress[String] : -# 3079| v3079_4(void) = Call[String] : func:r3079_3, this:r3079_1 -# 3079| mu3079_5(unknown) = ^CallSideEffect : ~m? -# 3079| mu3079_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3079_1 -# 3080| r3080_1(glval) = VariableAddress[x1020] : -# 3080| r3080_2(glval) = FunctionAddress[~String] : -# 3080| v3080_3(void) = Call[~String] : func:r3080_2, this:r3080_1 -# 3080| mu3080_4(unknown) = ^CallSideEffect : ~m? -# 3080| v3080_5(void) = ^IndirectReadSideEffect[-1] : &:r3080_1, ~m? -# 3080| mu3080_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3080_1 -# 3080| r3080_7(bool) = Constant[0] : -# 3080| v3080_8(void) = ConditionalBranch : r3080_7 +# 35| Block 1020 +# 35| r35_14281(glval) = VariableAddress[x1020] : +# 35| mu35_14282(String) = Uninitialized[x1020] : &:r35_14281 +# 35| r35_14283(glval) = FunctionAddress[String] : +# 35| v35_14284(void) = Call[String] : func:r35_14283, this:r35_14281 +# 35| mu35_14285(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14281 +# 35| r35_14287(glval) = VariableAddress[x1020] : +# 35| r35_14288(glval) = FunctionAddress[~String] : +# 35| v35_14289(void) = Call[~String] : func:r35_14288, this:r35_14287 +# 35| mu35_14290(unknown) = ^CallSideEffect : ~m? +# 35| v35_14291(void) = ^IndirectReadSideEffect[-1] : &:r35_14287, ~m? +# 35| mu35_14292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14287 +# 35| r35_14293(bool) = Constant[0] : +# 35| v35_14294(void) = ConditionalBranch : r35_14293 #-----| False -> Block 1021 #-----| True -> Block 1026 -# 3082| Block 1021 -# 3082| r3082_1(glval) = VariableAddress[x1021] : -# 3082| mu3082_2(String) = Uninitialized[x1021] : &:r3082_1 -# 3082| r3082_3(glval) = FunctionAddress[String] : -# 3082| v3082_4(void) = Call[String] : func:r3082_3, this:r3082_1 -# 3082| mu3082_5(unknown) = ^CallSideEffect : ~m? -# 3082| mu3082_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3082_1 -# 3083| r3083_1(glval) = VariableAddress[x1021] : -# 3083| r3083_2(glval) = FunctionAddress[~String] : -# 3083| v3083_3(void) = Call[~String] : func:r3083_2, this:r3083_1 -# 3083| mu3083_4(unknown) = ^CallSideEffect : ~m? -# 3083| v3083_5(void) = ^IndirectReadSideEffect[-1] : &:r3083_1, ~m? -# 3083| mu3083_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3083_1 -# 3083| r3083_7(bool) = Constant[0] : -# 3083| v3083_8(void) = ConditionalBranch : r3083_7 +# 35| Block 1021 +# 35| r35_14295(glval) = VariableAddress[x1021] : +# 35| mu35_14296(String) = Uninitialized[x1021] : &:r35_14295 +# 35| r35_14297(glval) = FunctionAddress[String] : +# 35| v35_14298(void) = Call[String] : func:r35_14297, this:r35_14295 +# 35| mu35_14299(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14295 +# 35| r35_14301(glval) = VariableAddress[x1021] : +# 35| r35_14302(glval) = FunctionAddress[~String] : +# 35| v35_14303(void) = Call[~String] : func:r35_14302, this:r35_14301 +# 35| mu35_14304(unknown) = ^CallSideEffect : ~m? +# 35| v35_14305(void) = ^IndirectReadSideEffect[-1] : &:r35_14301, ~m? +# 35| mu35_14306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14301 +# 35| r35_14307(bool) = Constant[0] : +# 35| v35_14308(void) = ConditionalBranch : r35_14307 #-----| False -> Block 1022 #-----| True -> Block 1026 -# 3085| Block 1022 -# 3085| r3085_1(glval) = VariableAddress[x1022] : -# 3085| mu3085_2(String) = Uninitialized[x1022] : &:r3085_1 -# 3085| r3085_3(glval) = FunctionAddress[String] : -# 3085| v3085_4(void) = Call[String] : func:r3085_3, this:r3085_1 -# 3085| mu3085_5(unknown) = ^CallSideEffect : ~m? -# 3085| mu3085_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3085_1 -# 3086| r3086_1(glval) = VariableAddress[x1022] : -# 3086| r3086_2(glval) = FunctionAddress[~String] : -# 3086| v3086_3(void) = Call[~String] : func:r3086_2, this:r3086_1 -# 3086| mu3086_4(unknown) = ^CallSideEffect : ~m? -# 3086| v3086_5(void) = ^IndirectReadSideEffect[-1] : &:r3086_1, ~m? -# 3086| mu3086_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3086_1 -# 3086| r3086_7(bool) = Constant[0] : -# 3086| v3086_8(void) = ConditionalBranch : r3086_7 +# 35| Block 1022 +# 35| r35_14309(glval) = VariableAddress[x1022] : +# 35| mu35_14310(String) = Uninitialized[x1022] : &:r35_14309 +# 35| r35_14311(glval) = FunctionAddress[String] : +# 35| v35_14312(void) = Call[String] : func:r35_14311, this:r35_14309 +# 35| mu35_14313(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14309 +# 35| r35_14315(glval) = VariableAddress[x1022] : +# 35| r35_14316(glval) = FunctionAddress[~String] : +# 35| v35_14317(void) = Call[~String] : func:r35_14316, this:r35_14315 +# 35| mu35_14318(unknown) = ^CallSideEffect : ~m? +# 35| v35_14319(void) = ^IndirectReadSideEffect[-1] : &:r35_14315, ~m? +# 35| mu35_14320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14315 +# 35| r35_14321(bool) = Constant[0] : +# 35| v35_14322(void) = ConditionalBranch : r35_14321 #-----| False -> Block 1023 #-----| True -> Block 1026 -# 3088| Block 1023 -# 3088| r3088_1(glval) = VariableAddress[x1023] : -# 3088| mu3088_2(String) = Uninitialized[x1023] : &:r3088_1 -# 3088| r3088_3(glval) = FunctionAddress[String] : -# 3088| v3088_4(void) = Call[String] : func:r3088_3, this:r3088_1 -# 3088| mu3088_5(unknown) = ^CallSideEffect : ~m? -# 3088| mu3088_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3088_1 -# 3089| r3089_1(glval) = VariableAddress[x1023] : -# 3089| r3089_2(glval) = FunctionAddress[~String] : -# 3089| v3089_3(void) = Call[~String] : func:r3089_2, this:r3089_1 -# 3089| mu3089_4(unknown) = ^CallSideEffect : ~m? -# 3089| v3089_5(void) = ^IndirectReadSideEffect[-1] : &:r3089_1, ~m? -# 3089| mu3089_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3089_1 -# 3089| r3089_7(bool) = Constant[0] : -# 3089| v3089_8(void) = ConditionalBranch : r3089_7 +# 35| Block 1023 +# 35| r35_14323(glval) = VariableAddress[x1023] : +# 35| mu35_14324(String) = Uninitialized[x1023] : &:r35_14323 +# 35| r35_14325(glval) = FunctionAddress[String] : +# 35| v35_14326(void) = Call[String] : func:r35_14325, this:r35_14323 +# 35| mu35_14327(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14323 +# 35| r35_14329(glval) = VariableAddress[x1023] : +# 35| r35_14330(glval) = FunctionAddress[~String] : +# 35| v35_14331(void) = Call[~String] : func:r35_14330, this:r35_14329 +# 35| mu35_14332(unknown) = ^CallSideEffect : ~m? +# 35| v35_14333(void) = ^IndirectReadSideEffect[-1] : &:r35_14329, ~m? +# 35| mu35_14334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14329 +# 35| r35_14335(bool) = Constant[0] : +# 35| v35_14336(void) = ConditionalBranch : r35_14335 #-----| False -> Block 1024 #-----| True -> Block 1026 -# 3091| Block 1024 -# 3091| r3091_1(glval) = VariableAddress[x1024] : -# 3091| mu3091_2(String) = Uninitialized[x1024] : &:r3091_1 -# 3091| r3091_3(glval) = FunctionAddress[String] : -# 3091| v3091_4(void) = Call[String] : func:r3091_3, this:r3091_1 -# 3091| mu3091_5(unknown) = ^CallSideEffect : ~m? -# 3091| mu3091_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3091_1 -# 3092| r3092_1(glval) = VariableAddress[x1024] : -# 3092| r3092_2(glval) = FunctionAddress[~String] : -# 3092| v3092_3(void) = Call[~String] : func:r3092_2, this:r3092_1 -# 3092| mu3092_4(unknown) = ^CallSideEffect : ~m? -# 3092| v3092_5(void) = ^IndirectReadSideEffect[-1] : &:r3092_1, ~m? -# 3092| mu3092_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3092_1 -# 3092| r3092_7(bool) = Constant[0] : -# 3092| v3092_8(void) = ConditionalBranch : r3092_7 +# 35| Block 1024 +# 35| r35_14337(glval) = VariableAddress[x1024] : +# 35| mu35_14338(String) = Uninitialized[x1024] : &:r35_14337 +# 35| r35_14339(glval) = FunctionAddress[String] : +# 35| v35_14340(void) = Call[String] : func:r35_14339, this:r35_14337 +# 35| mu35_14341(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14337 +# 35| r35_14343(glval) = VariableAddress[x1024] : +# 35| r35_14344(glval) = FunctionAddress[~String] : +# 35| v35_14345(void) = Call[~String] : func:r35_14344, this:r35_14343 +# 35| mu35_14346(unknown) = ^CallSideEffect : ~m? +# 35| v35_14347(void) = ^IndirectReadSideEffect[-1] : &:r35_14343, ~m? +# 35| mu35_14348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14343 +# 35| r35_14349(bool) = Constant[0] : +# 35| v35_14350(void) = ConditionalBranch : r35_14349 #-----| False -> Block 1025 #-----| True -> Block 1026 -# 3093| Block 1025 -# 3093| v3093_1(void) = NoOp : -# 17| v17_4(void) = ReturnVoid : -# 17| v17_5(void) = AliasedUse : ~m? -# 17| v17_6(void) = ExitFunction : +# 36| Block 1025 +# 36| v36_1(void) = NoOp : +# 34| v34_4(void) = ReturnVoid : +# 34| v34_5(void) = AliasedUse : ~m? +# 34| v34_6(void) = ExitFunction : -# 17| Block 1026 -# 17| v17_7(void) = Unreached : +# 34| Block 1026 +# 34| v34_7(void) = Unreached : perf-regression.cpp: # 6| void Big::Big() diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected index 5a0234a4cc4..199d61f015d 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected @@ -29,26 +29,4 @@ fieldAddressOnNonPointer thisArgumentIsNonPointer | ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:96:3:96:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:100:3:100:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:104:3:104:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:109:3:109:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected index 5a0234a4cc4..199d61f015d 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected @@ -29,26 +29,4 @@ fieldAddressOnNonPointer thisArgumentIsNonPointer | ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:96:3:96:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:100:3:100:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:104:3:104:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:109:3:109:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/generic.c b/cpp/ql/test/library-tests/ir/ir/generic.c index 3d669ba29fb..22c9fb3cd16 100644 --- a/cpp/ql/test/library-tests/ir/ir/generic.c +++ b/cpp/ql/test/library-tests/ir/ir/generic.c @@ -1,6 +1,31 @@ -void c11_generic_test(unsigned int x, int y) { +void c11_generic_test_with_load(unsigned int x, int y) { unsigned int r; r = _Generic(r, unsigned int: x, int: y) + 1; } -// // semmle-extractor-options: -std=c11 +#define describe(val) \ + _Generic((val), \ + int: "int", \ + default: "unknown" \ + ) + +const char *c11_generic_test_with_constant_and_macro() +{ + int i; + + return describe(i); +} + +const char *c11_generic_test_with_constant_and_no_macro() +{ + int i; + + return _Generic(i, int: "int", default: "unknown"); +} + +void c11_generic_test_test_with_cast(int y) { + unsigned int r; + r = _Generic(r, unsigned int: (unsigned int)y, int: y); +} + +// semmle-extractor-options: -std=c11 diff --git a/cpp/ql/test/library-tests/ir/ir/ir.c b/cpp/ql/test/library-tests/ir/ir/ir.c index c5c2c79bb51..e658b4d754e 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.c +++ b/cpp/ql/test/library-tests/ir/ir/ir.c @@ -29,4 +29,56 @@ int TryExceptTest(int x) { return 0; } +void unexplained_loop_regression() +{ + __try + { + ExRaiseAccessViolation(0); + } + __except (EXCEPTION_EXECUTE_HANDLER) + { + ExRaiseAccessViolation(1); + } +} + +void try_with_finally() +{ + int x = 0; + __try + { + x = 1; + } + __finally + { + x = 2; + } +} + +void throw_in_try_with_finally() +{ + int x = 0; + __try + { + ExRaiseAccessViolation(0); + } + __finally + { + x = 1; + } +} + +void throw_in_try_with_throw_in_finally() +{ + __try { + ExRaiseAccessViolation(0); + } + __finally { + ExRaiseAccessViolation(0); + } +} + +void raise_access_violation() { + ExRaiseAccessViolation(1); +} + // semmle-extractor-options: --microsoft diff --git a/cpp/ql/test/library-tests/ir/ir/many-defs-per-use.cpp b/cpp/ql/test/library-tests/ir/ir/many-defs-per-use.cpp index f3be4b878b7..46e9f2f3b44 100644 --- a/cpp/ql/test/library-tests/ir/ir/many-defs-per-use.cpp +++ b/cpp/ql/test/library-tests/ir/ir/many-defs-per-use.cpp @@ -14,3082 +14,25 @@ private: const char* p; }; +#define CONCAT(a, b) CONCAT_INNER(a, b) +#define CONCAT_INNER(a, b) a ## b + +#define READ do { String CONCAT(x, __COUNTER__); } while(0) + +#define READ2 READ; READ +#define READ4 READ2; READ2 +#define READ8 READ4; READ4 +#define READ16 READ8; READ8 +#define READ32 READ16; READ16 +#define READ64 READ32; READ32 +#define READ128 READ64; READ64 +#define READ256 READ128; READ128 +#define READ512 READ256; READ256 +#define READ1024 READ512; READ512 +#define READ1025 READ1024; READ + void many_defs_per_use() { - do { - String x0; - } while (0); - do { - String x1; - } while (0); - do { - String x2; - } while (0); - do { - String x3; - } while (0); - do { - String x4; - } while (0); - do { - String x5; - } while (0); - do { - String x6; - } while (0); - do { - String x7; - } while (0); - do { - String x8; - } while (0); - do { - String x9; - } while (0); - do { - String x10; - } while (0); - do { - String x11; - } while (0); - do { - String x12; - } while (0); - do { - String x13; - } while (0); - do { - String x14; - } while (0); - do { - String x15; - } while (0); - do { - String x16; - } while (0); - do { - String x17; - } while (0); - do { - String x18; - } while (0); - do { - String x19; - } while (0); - do { - String x20; - } while (0); - do { - String x21; - } while (0); - do { - String x22; - } while (0); - do { - String x23; - } while (0); - do { - String x24; - } while (0); - do { - String x25; - } while (0); - do { - String x26; - } while (0); - do { - String x27; - } while (0); - do { - String x28; - } while (0); - do { - String x29; - } while (0); - do { - String x30; - } while (0); - do { - String x31; - } while (0); - do { - String x32; - } while (0); - do { - String x33; - } while (0); - do { - String x34; - } while (0); - do { - String x35; - } while (0); - do { - String x36; - } while (0); - do { - String x37; - } while (0); - do { - String x38; - } while (0); - do { - String x39; - } while (0); - do { - String x40; - } while (0); - do { - String x41; - } while (0); - do { - String x42; - } while (0); - do { - String x43; - } while (0); - do { - String x44; - } while (0); - do { - String x45; - } while (0); - do { - String x46; - } while (0); - do { - String x47; - } while (0); - do { - String x48; - } while (0); - do { - String x49; - } while (0); - do { - String x50; - } while (0); - do { - String x51; - } while (0); - do { - String x52; - } while (0); - do { - String x53; - } while (0); - do { - String x54; - } while (0); - do { - String x55; - } while (0); - do { - String x56; - } while (0); - do { - String x57; - } while (0); - do { - String x58; - } while (0); - do { - String x59; - } while (0); - do { - String x60; - } while (0); - do { - String x61; - } while (0); - do { - String x62; - } while (0); - do { - String x63; - } while (0); - do { - String x64; - } while (0); - do { - String x65; - } while (0); - do { - String x66; - } while (0); - do { - String x67; - } while (0); - do { - String x68; - } while (0); - do { - String x69; - } while (0); - do { - String x70; - } while (0); - do { - String x71; - } while (0); - do { - String x72; - } while (0); - do { - String x73; - } while (0); - do { - String x74; - } while (0); - do { - String x75; - } while (0); - do { - String x76; - } while (0); - do { - String x77; - } while (0); - do { - String x78; - } while (0); - do { - String x79; - } while (0); - do { - String x80; - } while (0); - do { - String x81; - } while (0); - do { - String x82; - } while (0); - do { - String x83; - } while (0); - do { - String x84; - } while (0); - do { - String x85; - } while (0); - do { - String x86; - } while (0); - do { - String x87; - } while (0); - do { - String x88; - } while (0); - do { - String x89; - } while (0); - do { - String x90; - } while (0); - do { - String x91; - } while (0); - do { - String x92; - } while (0); - do { - String x93; - } while (0); - do { - String x94; - } while (0); - do { - String x95; - } while (0); - do { - String x96; - } while (0); - do { - String x97; - } while (0); - do { - String x98; - } while (0); - do { - String x99; - } while (0); - do { - String x100; - } while (0); - do { - String x101; - } while (0); - do { - String x102; - } while (0); - do { - String x103; - } while (0); - do { - String x104; - } while (0); - do { - String x105; - } while (0); - do { - String x106; - } while (0); - do { - String x107; - } while (0); - do { - String x108; - } while (0); - do { - String x109; - } while (0); - do { - String x110; - } while (0); - do { - String x111; - } while (0); - do { - String x112; - } while (0); - do { - String x113; - } while (0); - do { - String x114; - } while (0); - do { - String x115; - } while (0); - do { - String x116; - } while (0); - do { - String x117; - } while (0); - do { - String x118; - } while (0); - do { - String x119; - } while (0); - do { - String x120; - } while (0); - do { - String x121; - } while (0); - do { - String x122; - } while (0); - do { - String x123; - } while (0); - do { - String x124; - } while (0); - do { - String x125; - } while (0); - do { - String x126; - } while (0); - do { - String x127; - } while (0); - do { - String x128; - } while (0); - do { - String x129; - } while (0); - do { - String x130; - } while (0); - do { - String x131; - } while (0); - do { - String x132; - } while (0); - do { - String x133; - } while (0); - do { - String x134; - } while (0); - do { - String x135; - } while (0); - do { - String x136; - } while (0); - do { - String x137; - } while (0); - do { - String x138; - } while (0); - do { - String x139; - } while (0); - do { - String x140; - } while (0); - do { - String x141; - } while (0); - do { - String x142; - } while (0); - do { - String x143; - } while (0); - do { - String x144; - } while (0); - do { - String x145; - } while (0); - do { - String x146; - } while (0); - do { - String x147; - } while (0); - do { - String x148; - } while (0); - do { - String x149; - } while (0); - do { - String x150; - } while (0); - do { - String x151; - } while (0); - do { - String x152; - } while (0); - do { - String x153; - } while (0); - do { - String x154; - } while (0); - do { - String x155; - } while (0); - do { - String x156; - } while (0); - do { - String x157; - } while (0); - do { - String x158; - } while (0); - do { - String x159; - } while (0); - do { - String x160; - } while (0); - do { - String x161; - } while (0); - do { - String x162; - } while (0); - do { - String x163; - } while (0); - do { - String x164; - } while (0); - do { - String x165; - } while (0); - do { - String x166; - } while (0); - do { - String x167; - } while (0); - do { - String x168; - } while (0); - do { - String x169; - } while (0); - do { - String x170; - } while (0); - do { - String x171; - } while (0); - do { - String x172; - } while (0); - do { - String x173; - } while (0); - do { - String x174; - } while (0); - do { - String x175; - } while (0); - do { - String x176; - } while (0); - do { - String x177; - } while (0); - do { - String x178; - } while (0); - do { - String x179; - } while (0); - do { - String x180; - } while (0); - do { - String x181; - } while (0); - do { - String x182; - } while (0); - do { - String x183; - } while (0); - do { - String x184; - } while (0); - do { - String x185; - } while (0); - do { - String x186; - } while (0); - do { - String x187; - } while (0); - do { - String x188; - } while (0); - do { - String x189; - } while (0); - do { - String x190; - } while (0); - do { - String x191; - } while (0); - do { - String x192; - } while (0); - do { - String x193; - } while (0); - do { - String x194; - } while (0); - do { - String x195; - } while (0); - do { - String x196; - } while (0); - do { - String x197; - } while (0); - do { - String x198; - } while (0); - do { - String x199; - } while (0); - do { - String x200; - } while (0); - do { - String x201; - } while (0); - do { - String x202; - } while (0); - do { - String x203; - } while (0); - do { - String x204; - } while (0); - do { - String x205; - } while (0); - do { - String x206; - } while (0); - do { - String x207; - } while (0); - do { - String x208; - } while (0); - do { - String x209; - } while (0); - do { - String x210; - } while (0); - do { - String x211; - } while (0); - do { - String x212; - } while (0); - do { - String x213; - } while (0); - do { - String x214; - } while (0); - do { - String x215; - } while (0); - do { - String x216; - } while (0); - do { - String x217; - } while (0); - do { - String x218; - } while (0); - do { - String x219; - } while (0); - do { - String x220; - } while (0); - do { - String x221; - } while (0); - do { - String x222; - } while (0); - do { - String x223; - } while (0); - do { - String x224; - } while (0); - do { - String x225; - } while (0); - do { - String x226; - } while (0); - do { - String x227; - } while (0); - do { - String x228; - } while (0); - do { - String x229; - } while (0); - do { - String x230; - } while (0); - do { - String x231; - } while (0); - do { - String x232; - } while (0); - do { - String x233; - } while (0); - do { - String x234; - } while (0); - do { - String x235; - } while (0); - do { - String x236; - } while (0); - do { - String x237; - } while (0); - do { - String x238; - } while (0); - do { - String x239; - } while (0); - do { - String x240; - } while (0); - do { - String x241; - } while (0); - do { - String x242; - } while (0); - do { - String x243; - } while (0); - do { - String x244; - } while (0); - do { - String x245; - } while (0); - do { - String x246; - } while (0); - do { - String x247; - } while (0); - do { - String x248; - } while (0); - do { - String x249; - } while (0); - do { - String x250; - } while (0); - do { - String x251; - } while (0); - do { - String x252; - } while (0); - do { - String x253; - } while (0); - do { - String x254; - } while (0); - do { - String x255; - } while (0); - do { - String x256; - } while (0); - do { - String x257; - } while (0); - do { - String x258; - } while (0); - do { - String x259; - } while (0); - do { - String x260; - } while (0); - do { - String x261; - } while (0); - do { - String x262; - } while (0); - do { - String x263; - } while (0); - do { - String x264; - } while (0); - do { - String x265; - } while (0); - do { - String x266; - } while (0); - do { - String x267; - } while (0); - do { - String x268; - } while (0); - do { - String x269; - } while (0); - do { - String x270; - } while (0); - do { - String x271; - } while (0); - do { - String x272; - } while (0); - do { - String x273; - } while (0); - do { - String x274; - } while (0); - do { - String x275; - } while (0); - do { - String x276; - } while (0); - do { - String x277; - } while (0); - do { - String x278; - } while (0); - do { - String x279; - } while (0); - do { - String x280; - } while (0); - do { - String x281; - } while (0); - do { - String x282; - } while (0); - do { - String x283; - } while (0); - do { - String x284; - } while (0); - do { - String x285; - } while (0); - do { - String x286; - } while (0); - do { - String x287; - } while (0); - do { - String x288; - } while (0); - do { - String x289; - } while (0); - do { - String x290; - } while (0); - do { - String x291; - } while (0); - do { - String x292; - } while (0); - do { - String x293; - } while (0); - do { - String x294; - } while (0); - do { - String x295; - } while (0); - do { - String x296; - } while (0); - do { - String x297; - } while (0); - do { - String x298; - } while (0); - do { - String x299; - } while (0); - do { - String x300; - } while (0); - do { - String x301; - } while (0); - do { - String x302; - } while (0); - do { - String x303; - } while (0); - do { - String x304; - } while (0); - do { - String x305; - } while (0); - do { - String x306; - } while (0); - do { - String x307; - } while (0); - do { - String x308; - } while (0); - do { - String x309; - } while (0); - do { - String x310; - } while (0); - do { - String x311; - } while (0); - do { - String x312; - } while (0); - do { - String x313; - } while (0); - do { - String x314; - } while (0); - do { - String x315; - } while (0); - do { - String x316; - } while (0); - do { - String x317; - } while (0); - do { - String x318; - } while (0); - do { - String x319; - } while (0); - do { - String x320; - } while (0); - do { - String x321; - } while (0); - do { - String x322; - } while (0); - do { - String x323; - } while (0); - do { - String x324; - } while (0); - do { - String x325; - } while (0); - do { - String x326; - } while (0); - do { - String x327; - } while (0); - do { - String x328; - } while (0); - do { - String x329; - } while (0); - do { - String x330; - } while (0); - do { - String x331; - } while (0); - do { - String x332; - } while (0); - do { - String x333; - } while (0); - do { - String x334; - } while (0); - do { - String x335; - } while (0); - do { - String x336; - } while (0); - do { - String x337; - } while (0); - do { - String x338; - } while (0); - do { - String x339; - } while (0); - do { - String x340; - } while (0); - do { - String x341; - } while (0); - do { - String x342; - } while (0); - do { - String x343; - } while (0); - do { - String x344; - } while (0); - do { - String x345; - } while (0); - do { - String x346; - } while (0); - do { - String x347; - } while (0); - do { - String x348; - } while (0); - do { - String x349; - } while (0); - do { - String x350; - } while (0); - do { - String x351; - } while (0); - do { - String x352; - } while (0); - do { - String x353; - } while (0); - do { - String x354; - } while (0); - do { - String x355; - } while (0); - do { - String x356; - } while (0); - do { - String x357; - } while (0); - do { - String x358; - } while (0); - do { - String x359; - } while (0); - do { - String x360; - } while (0); - do { - String x361; - } while (0); - do { - String x362; - } while (0); - do { - String x363; - } while (0); - do { - String x364; - } while (0); - do { - String x365; - } while (0); - do { - String x366; - } while (0); - do { - String x367; - } while (0); - do { - String x368; - } while (0); - do { - String x369; - } while (0); - do { - String x370; - } while (0); - do { - String x371; - } while (0); - do { - String x372; - } while (0); - do { - String x373; - } while (0); - do { - String x374; - } while (0); - do { - String x375; - } while (0); - do { - String x376; - } while (0); - do { - String x377; - } while (0); - do { - String x378; - } while (0); - do { - String x379; - } while (0); - do { - String x380; - } while (0); - do { - String x381; - } while (0); - do { - String x382; - } while (0); - do { - String x383; - } while (0); - do { - String x384; - } while (0); - do { - String x385; - } while (0); - do { - String x386; - } while (0); - do { - String x387; - } while (0); - do { - String x388; - } while (0); - do { - String x389; - } while (0); - do { - String x390; - } while (0); - do { - String x391; - } while (0); - do { - String x392; - } while (0); - do { - String x393; - } while (0); - do { - String x394; - } while (0); - do { - String x395; - } while (0); - do { - String x396; - } while (0); - do { - String x397; - } while (0); - do { - String x398; - } while (0); - do { - String x399; - } while (0); - do { - String x400; - } while (0); - do { - String x401; - } while (0); - do { - String x402; - } while (0); - do { - String x403; - } while (0); - do { - String x404; - } while (0); - do { - String x405; - } while (0); - do { - String x406; - } while (0); - do { - String x407; - } while (0); - do { - String x408; - } while (0); - do { - String x409; - } while (0); - do { - String x410; - } while (0); - do { - String x411; - } while (0); - do { - String x412; - } while (0); - do { - String x413; - } while (0); - do { - String x414; - } while (0); - do { - String x415; - } while (0); - do { - String x416; - } while (0); - do { - String x417; - } while (0); - do { - String x418; - } while (0); - do { - String x419; - } while (0); - do { - String x420; - } while (0); - do { - String x421; - } while (0); - do { - String x422; - } while (0); - do { - String x423; - } while (0); - do { - String x424; - } while (0); - do { - String x425; - } while (0); - do { - String x426; - } while (0); - do { - String x427; - } while (0); - do { - String x428; - } while (0); - do { - String x429; - } while (0); - do { - String x430; - } while (0); - do { - String x431; - } while (0); - do { - String x432; - } while (0); - do { - String x433; - } while (0); - do { - String x434; - } while (0); - do { - String x435; - } while (0); - do { - String x436; - } while (0); - do { - String x437; - } while (0); - do { - String x438; - } while (0); - do { - String x439; - } while (0); - do { - String x440; - } while (0); - do { - String x441; - } while (0); - do { - String x442; - } while (0); - do { - String x443; - } while (0); - do { - String x444; - } while (0); - do { - String x445; - } while (0); - do { - String x446; - } while (0); - do { - String x447; - } while (0); - do { - String x448; - } while (0); - do { - String x449; - } while (0); - do { - String x450; - } while (0); - do { - String x451; - } while (0); - do { - String x452; - } while (0); - do { - String x453; - } while (0); - do { - String x454; - } while (0); - do { - String x455; - } while (0); - do { - String x456; - } while (0); - do { - String x457; - } while (0); - do { - String x458; - } while (0); - do { - String x459; - } while (0); - do { - String x460; - } while (0); - do { - String x461; - } while (0); - do { - String x462; - } while (0); - do { - String x463; - } while (0); - do { - String x464; - } while (0); - do { - String x465; - } while (0); - do { - String x466; - } while (0); - do { - String x467; - } while (0); - do { - String x468; - } while (0); - do { - String x469; - } while (0); - do { - String x470; - } while (0); - do { - String x471; - } while (0); - do { - String x472; - } while (0); - do { - String x473; - } while (0); - do { - String x474; - } while (0); - do { - String x475; - } while (0); - do { - String x476; - } while (0); - do { - String x477; - } while (0); - do { - String x478; - } while (0); - do { - String x479; - } while (0); - do { - String x480; - } while (0); - do { - String x481; - } while (0); - do { - String x482; - } while (0); - do { - String x483; - } while (0); - do { - String x484; - } while (0); - do { - String x485; - } while (0); - do { - String x486; - } while (0); - do { - String x487; - } while (0); - do { - String x488; - } while (0); - do { - String x489; - } while (0); - do { - String x490; - } while (0); - do { - String x491; - } while (0); - do { - String x492; - } while (0); - do { - String x493; - } while (0); - do { - String x494; - } while (0); - do { - String x495; - } while (0); - do { - String x496; - } while (0); - do { - String x497; - } while (0); - do { - String x498; - } while (0); - do { - String x499; - } while (0); - do { - String x500; - } while (0); - do { - String x501; - } while (0); - do { - String x502; - } while (0); - do { - String x503; - } while (0); - do { - String x504; - } while (0); - do { - String x505; - } while (0); - do { - String x506; - } while (0); - do { - String x507; - } while (0); - do { - String x508; - } while (0); - do { - String x509; - } while (0); - do { - String x510; - } while (0); - do { - String x511; - } while (0); - do { - String x512; - } while (0); - do { - String x513; - } while (0); - do { - String x514; - } while (0); - do { - String x515; - } while (0); - do { - String x516; - } while (0); - do { - String x517; - } while (0); - do { - String x518; - } while (0); - do { - String x519; - } while (0); - do { - String x520; - } while (0); - do { - String x521; - } while (0); - do { - String x522; - } while (0); - do { - String x523; - } while (0); - do { - String x524; - } while (0); - do { - String x525; - } while (0); - do { - String x526; - } while (0); - do { - String x527; - } while (0); - do { - String x528; - } while (0); - do { - String x529; - } while (0); - do { - String x530; - } while (0); - do { - String x531; - } while (0); - do { - String x532; - } while (0); - do { - String x533; - } while (0); - do { - String x534; - } while (0); - do { - String x535; - } while (0); - do { - String x536; - } while (0); - do { - String x537; - } while (0); - do { - String x538; - } while (0); - do { - String x539; - } while (0); - do { - String x540; - } while (0); - do { - String x541; - } while (0); - do { - String x542; - } while (0); - do { - String x543; - } while (0); - do { - String x544; - } while (0); - do { - String x545; - } while (0); - do { - String x546; - } while (0); - do { - String x547; - } while (0); - do { - String x548; - } while (0); - do { - String x549; - } while (0); - do { - String x550; - } while (0); - do { - String x551; - } while (0); - do { - String x552; - } while (0); - do { - String x553; - } while (0); - do { - String x554; - } while (0); - do { - String x555; - } while (0); - do { - String x556; - } while (0); - do { - String x557; - } while (0); - do { - String x558; - } while (0); - do { - String x559; - } while (0); - do { - String x560; - } while (0); - do { - String x561; - } while (0); - do { - String x562; - } while (0); - do { - String x563; - } while (0); - do { - String x564; - } while (0); - do { - String x565; - } while (0); - do { - String x566; - } while (0); - do { - String x567; - } while (0); - do { - String x568; - } while (0); - do { - String x569; - } while (0); - do { - String x570; - } while (0); - do { - String x571; - } while (0); - do { - String x572; - } while (0); - do { - String x573; - } while (0); - do { - String x574; - } while (0); - do { - String x575; - } while (0); - do { - String x576; - } while (0); - do { - String x577; - } while (0); - do { - String x578; - } while (0); - do { - String x579; - } while (0); - do { - String x580; - } while (0); - do { - String x581; - } while (0); - do { - String x582; - } while (0); - do { - String x583; - } while (0); - do { - String x584; - } while (0); - do { - String x585; - } while (0); - do { - String x586; - } while (0); - do { - String x587; - } while (0); - do { - String x588; - } while (0); - do { - String x589; - } while (0); - do { - String x590; - } while (0); - do { - String x591; - } while (0); - do { - String x592; - } while (0); - do { - String x593; - } while (0); - do { - String x594; - } while (0); - do { - String x595; - } while (0); - do { - String x596; - } while (0); - do { - String x597; - } while (0); - do { - String x598; - } while (0); - do { - String x599; - } while (0); - do { - String x600; - } while (0); - do { - String x601; - } while (0); - do { - String x602; - } while (0); - do { - String x603; - } while (0); - do { - String x604; - } while (0); - do { - String x605; - } while (0); - do { - String x606; - } while (0); - do { - String x607; - } while (0); - do { - String x608; - } while (0); - do { - String x609; - } while (0); - do { - String x610; - } while (0); - do { - String x611; - } while (0); - do { - String x612; - } while (0); - do { - String x613; - } while (0); - do { - String x614; - } while (0); - do { - String x615; - } while (0); - do { - String x616; - } while (0); - do { - String x617; - } while (0); - do { - String x618; - } while (0); - do { - String x619; - } while (0); - do { - String x620; - } while (0); - do { - String x621; - } while (0); - do { - String x622; - } while (0); - do { - String x623; - } while (0); - do { - String x624; - } while (0); - do { - String x625; - } while (0); - do { - String x626; - } while (0); - do { - String x627; - } while (0); - do { - String x628; - } while (0); - do { - String x629; - } while (0); - do { - String x630; - } while (0); - do { - String x631; - } while (0); - do { - String x632; - } while (0); - do { - String x633; - } while (0); - do { - String x634; - } while (0); - do { - String x635; - } while (0); - do { - String x636; - } while (0); - do { - String x637; - } while (0); - do { - String x638; - } while (0); - do { - String x639; - } while (0); - do { - String x640; - } while (0); - do { - String x641; - } while (0); - do { - String x642; - } while (0); - do { - String x643; - } while (0); - do { - String x644; - } while (0); - do { - String x645; - } while (0); - do { - String x646; - } while (0); - do { - String x647; - } while (0); - do { - String x648; - } while (0); - do { - String x649; - } while (0); - do { - String x650; - } while (0); - do { - String x651; - } while (0); - do { - String x652; - } while (0); - do { - String x653; - } while (0); - do { - String x654; - } while (0); - do { - String x655; - } while (0); - do { - String x656; - } while (0); - do { - String x657; - } while (0); - do { - String x658; - } while (0); - do { - String x659; - } while (0); - do { - String x660; - } while (0); - do { - String x661; - } while (0); - do { - String x662; - } while (0); - do { - String x663; - } while (0); - do { - String x664; - } while (0); - do { - String x665; - } while (0); - do { - String x666; - } while (0); - do { - String x667; - } while (0); - do { - String x668; - } while (0); - do { - String x669; - } while (0); - do { - String x670; - } while (0); - do { - String x671; - } while (0); - do { - String x672; - } while (0); - do { - String x673; - } while (0); - do { - String x674; - } while (0); - do { - String x675; - } while (0); - do { - String x676; - } while (0); - do { - String x677; - } while (0); - do { - String x678; - } while (0); - do { - String x679; - } while (0); - do { - String x680; - } while (0); - do { - String x681; - } while (0); - do { - String x682; - } while (0); - do { - String x683; - } while (0); - do { - String x684; - } while (0); - do { - String x685; - } while (0); - do { - String x686; - } while (0); - do { - String x687; - } while (0); - do { - String x688; - } while (0); - do { - String x689; - } while (0); - do { - String x690; - } while (0); - do { - String x691; - } while (0); - do { - String x692; - } while (0); - do { - String x693; - } while (0); - do { - String x694; - } while (0); - do { - String x695; - } while (0); - do { - String x696; - } while (0); - do { - String x697; - } while (0); - do { - String x698; - } while (0); - do { - String x699; - } while (0); - do { - String x700; - } while (0); - do { - String x701; - } while (0); - do { - String x702; - } while (0); - do { - String x703; - } while (0); - do { - String x704; - } while (0); - do { - String x705; - } while (0); - do { - String x706; - } while (0); - do { - String x707; - } while (0); - do { - String x708; - } while (0); - do { - String x709; - } while (0); - do { - String x710; - } while (0); - do { - String x711; - } while (0); - do { - String x712; - } while (0); - do { - String x713; - } while (0); - do { - String x714; - } while (0); - do { - String x715; - } while (0); - do { - String x716; - } while (0); - do { - String x717; - } while (0); - do { - String x718; - } while (0); - do { - String x719; - } while (0); - do { - String x720; - } while (0); - do { - String x721; - } while (0); - do { - String x722; - } while (0); - do { - String x723; - } while (0); - do { - String x724; - } while (0); - do { - String x725; - } while (0); - do { - String x726; - } while (0); - do { - String x727; - } while (0); - do { - String x728; - } while (0); - do { - String x729; - } while (0); - do { - String x730; - } while (0); - do { - String x731; - } while (0); - do { - String x732; - } while (0); - do { - String x733; - } while (0); - do { - String x734; - } while (0); - do { - String x735; - } while (0); - do { - String x736; - } while (0); - do { - String x737; - } while (0); - do { - String x738; - } while (0); - do { - String x739; - } while (0); - do { - String x740; - } while (0); - do { - String x741; - } while (0); - do { - String x742; - } while (0); - do { - String x743; - } while (0); - do { - String x744; - } while (0); - do { - String x745; - } while (0); - do { - String x746; - } while (0); - do { - String x747; - } while (0); - do { - String x748; - } while (0); - do { - String x749; - } while (0); - do { - String x750; - } while (0); - do { - String x751; - } while (0); - do { - String x752; - } while (0); - do { - String x753; - } while (0); - do { - String x754; - } while (0); - do { - String x755; - } while (0); - do { - String x756; - } while (0); - do { - String x757; - } while (0); - do { - String x758; - } while (0); - do { - String x759; - } while (0); - do { - String x760; - } while (0); - do { - String x761; - } while (0); - do { - String x762; - } while (0); - do { - String x763; - } while (0); - do { - String x764; - } while (0); - do { - String x765; - } while (0); - do { - String x766; - } while (0); - do { - String x767; - } while (0); - do { - String x768; - } while (0); - do { - String x769; - } while (0); - do { - String x770; - } while (0); - do { - String x771; - } while (0); - do { - String x772; - } while (0); - do { - String x773; - } while (0); - do { - String x774; - } while (0); - do { - String x775; - } while (0); - do { - String x776; - } while (0); - do { - String x777; - } while (0); - do { - String x778; - } while (0); - do { - String x779; - } while (0); - do { - String x780; - } while (0); - do { - String x781; - } while (0); - do { - String x782; - } while (0); - do { - String x783; - } while (0); - do { - String x784; - } while (0); - do { - String x785; - } while (0); - do { - String x786; - } while (0); - do { - String x787; - } while (0); - do { - String x788; - } while (0); - do { - String x789; - } while (0); - do { - String x790; - } while (0); - do { - String x791; - } while (0); - do { - String x792; - } while (0); - do { - String x793; - } while (0); - do { - String x794; - } while (0); - do { - String x795; - } while (0); - do { - String x796; - } while (0); - do { - String x797; - } while (0); - do { - String x798; - } while (0); - do { - String x799; - } while (0); - do { - String x800; - } while (0); - do { - String x801; - } while (0); - do { - String x802; - } while (0); - do { - String x803; - } while (0); - do { - String x804; - } while (0); - do { - String x805; - } while (0); - do { - String x806; - } while (0); - do { - String x807; - } while (0); - do { - String x808; - } while (0); - do { - String x809; - } while (0); - do { - String x810; - } while (0); - do { - String x811; - } while (0); - do { - String x812; - } while (0); - do { - String x813; - } while (0); - do { - String x814; - } while (0); - do { - String x815; - } while (0); - do { - String x816; - } while (0); - do { - String x817; - } while (0); - do { - String x818; - } while (0); - do { - String x819; - } while (0); - do { - String x820; - } while (0); - do { - String x821; - } while (0); - do { - String x822; - } while (0); - do { - String x823; - } while (0); - do { - String x824; - } while (0); - do { - String x825; - } while (0); - do { - String x826; - } while (0); - do { - String x827; - } while (0); - do { - String x828; - } while (0); - do { - String x829; - } while (0); - do { - String x830; - } while (0); - do { - String x831; - } while (0); - do { - String x832; - } while (0); - do { - String x833; - } while (0); - do { - String x834; - } while (0); - do { - String x835; - } while (0); - do { - String x836; - } while (0); - do { - String x837; - } while (0); - do { - String x838; - } while (0); - do { - String x839; - } while (0); - do { - String x840; - } while (0); - do { - String x841; - } while (0); - do { - String x842; - } while (0); - do { - String x843; - } while (0); - do { - String x844; - } while (0); - do { - String x845; - } while (0); - do { - String x846; - } while (0); - do { - String x847; - } while (0); - do { - String x848; - } while (0); - do { - String x849; - } while (0); - do { - String x850; - } while (0); - do { - String x851; - } while (0); - do { - String x852; - } while (0); - do { - String x853; - } while (0); - do { - String x854; - } while (0); - do { - String x855; - } while (0); - do { - String x856; - } while (0); - do { - String x857; - } while (0); - do { - String x858; - } while (0); - do { - String x859; - } while (0); - do { - String x860; - } while (0); - do { - String x861; - } while (0); - do { - String x862; - } while (0); - do { - String x863; - } while (0); - do { - String x864; - } while (0); - do { - String x865; - } while (0); - do { - String x866; - } while (0); - do { - String x867; - } while (0); - do { - String x868; - } while (0); - do { - String x869; - } while (0); - do { - String x870; - } while (0); - do { - String x871; - } while (0); - do { - String x872; - } while (0); - do { - String x873; - } while (0); - do { - String x874; - } while (0); - do { - String x875; - } while (0); - do { - String x876; - } while (0); - do { - String x877; - } while (0); - do { - String x878; - } while (0); - do { - String x879; - } while (0); - do { - String x880; - } while (0); - do { - String x881; - } while (0); - do { - String x882; - } while (0); - do { - String x883; - } while (0); - do { - String x884; - } while (0); - do { - String x885; - } while (0); - do { - String x886; - } while (0); - do { - String x887; - } while (0); - do { - String x888; - } while (0); - do { - String x889; - } while (0); - do { - String x890; - } while (0); - do { - String x891; - } while (0); - do { - String x892; - } while (0); - do { - String x893; - } while (0); - do { - String x894; - } while (0); - do { - String x895; - } while (0); - do { - String x896; - } while (0); - do { - String x897; - } while (0); - do { - String x898; - } while (0); - do { - String x899; - } while (0); - do { - String x900; - } while (0); - do { - String x901; - } while (0); - do { - String x902; - } while (0); - do { - String x903; - } while (0); - do { - String x904; - } while (0); - do { - String x905; - } while (0); - do { - String x906; - } while (0); - do { - String x907; - } while (0); - do { - String x908; - } while (0); - do { - String x909; - } while (0); - do { - String x910; - } while (0); - do { - String x911; - } while (0); - do { - String x912; - } while (0); - do { - String x913; - } while (0); - do { - String x914; - } while (0); - do { - String x915; - } while (0); - do { - String x916; - } while (0); - do { - String x917; - } while (0); - do { - String x918; - } while (0); - do { - String x919; - } while (0); - do { - String x920; - } while (0); - do { - String x921; - } while (0); - do { - String x922; - } while (0); - do { - String x923; - } while (0); - do { - String x924; - } while (0); - do { - String x925; - } while (0); - do { - String x926; - } while (0); - do { - String x927; - } while (0); - do { - String x928; - } while (0); - do { - String x929; - } while (0); - do { - String x930; - } while (0); - do { - String x931; - } while (0); - do { - String x932; - } while (0); - do { - String x933; - } while (0); - do { - String x934; - } while (0); - do { - String x935; - } while (0); - do { - String x936; - } while (0); - do { - String x937; - } while (0); - do { - String x938; - } while (0); - do { - String x939; - } while (0); - do { - String x940; - } while (0); - do { - String x941; - } while (0); - do { - String x942; - } while (0); - do { - String x943; - } while (0); - do { - String x944; - } while (0); - do { - String x945; - } while (0); - do { - String x946; - } while (0); - do { - String x947; - } while (0); - do { - String x948; - } while (0); - do { - String x949; - } while (0); - do { - String x950; - } while (0); - do { - String x951; - } while (0); - do { - String x952; - } while (0); - do { - String x953; - } while (0); - do { - String x954; - } while (0); - do { - String x955; - } while (0); - do { - String x956; - } while (0); - do { - String x957; - } while (0); - do { - String x958; - } while (0); - do { - String x959; - } while (0); - do { - String x960; - } while (0); - do { - String x961; - } while (0); - do { - String x962; - } while (0); - do { - String x963; - } while (0); - do { - String x964; - } while (0); - do { - String x965; - } while (0); - do { - String x966; - } while (0); - do { - String x967; - } while (0); - do { - String x968; - } while (0); - do { - String x969; - } while (0); - do { - String x970; - } while (0); - do { - String x971; - } while (0); - do { - String x972; - } while (0); - do { - String x973; - } while (0); - do { - String x974; - } while (0); - do { - String x975; - } while (0); - do { - String x976; - } while (0); - do { - String x977; - } while (0); - do { - String x978; - } while (0); - do { - String x979; - } while (0); - do { - String x980; - } while (0); - do { - String x981; - } while (0); - do { - String x982; - } while (0); - do { - String x983; - } while (0); - do { - String x984; - } while (0); - do { - String x985; - } while (0); - do { - String x986; - } while (0); - do { - String x987; - } while (0); - do { - String x988; - } while (0); - do { - String x989; - } while (0); - do { - String x990; - } while (0); - do { - String x991; - } while (0); - do { - String x992; - } while (0); - do { - String x993; - } while (0); - do { - String x994; - } while (0); - do { - String x995; - } while (0); - do { - String x996; - } while (0); - do { - String x997; - } while (0); - do { - String x998; - } while (0); - do { - String x999; - } while (0); - do { - String x1000; - } while (0); - do { - String x1001; - } while (0); - do { - String x1002; - } while (0); - do { - String x1003; - } while (0); - do { - String x1004; - } while (0); - do { - String x1005; - } while (0); - do { - String x1006; - } while (0); - do { - String x1007; - } while (0); - do { - String x1008; - } while (0); - do { - String x1009; - } while (0); - do { - String x1010; - } while (0); - do { - String x1011; - } while (0); - do { - String x1012; - } while (0); - do { - String x1013; - } while (0); - do { - String x1014; - } while (0); - do { - String x1015; - } while (0); - do { - String x1016; - } while (0); - do { - String x1017; - } while (0); - do { - String x1018; - } while (0); - do { - String x1019; - } while (0); - do { - String x1020; - } while (0); - do { - String x1021; - } while (0); - do { - String x1022; - } while (0); - do { - String x1023; - } while (0); - do { - String x1024; - } while (0); + READ1025; } // semmle-extractor-options: -std=c++20 --clang diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index ac1034bfc6c..26760a15730 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -38,32 +38,4 @@ fieldAddressOnNonPointer thisArgumentIsNonPointer | ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:96:3:96:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:100:3:100:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:104:3:104:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:109:3:109:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 18f0d99ac67..a2d605daef1 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -770,8 +770,8 @@ coroutines.cpp: #-----| Block 3 #-----| r0_4(bool) = Constant[1] : -#-----| r0_5(glval) = VariableAddress : -#-----| mu0_6(bool) = Store[?] : &:r0_5, r0_4 +#-----| r0_5(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_6(bool) = Store[(unnamed local variable)] : &:r0_5, r0_4 # 87| r87_31(suspend_always *) = CopyValue : r87_20 # 87| r87_32(glval) = CopyValue : r87_31 #-----| r0_7(glval) = Convert : r87_32 @@ -791,32 +791,32 @@ coroutines.cpp: #-----| Goto (back edge) -> Block 8 # 87| Block 4 -# 87| r87_36(suspend_always *) = CopyValue : r87_20 -# 87| r87_37(glval) = CopyValue : r87_36 -#-----| r0_17(glval) = Convert : r87_37 -# 87| r87_38(glval) = FunctionAddress[await_suspend] : -# 87| r87_39(glval>) = VariableAddress[#temp87:20] : -# 87| mu87_40(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_39 -# 87| r87_41(glval) = FunctionAddress[coroutine_handle] : -# 87| r87_42(glval>) = VariableAddress : -# 87| r87_43(glval>) = Convert : r87_42 -# 87| r87_44(coroutine_handle &) = CopyValue : r87_43 -# 87| v87_45(void) = Call[coroutine_handle] : func:r87_41, this:r87_39, 0:r87_44 -# 87| mu87_46(unknown) = ^CallSideEffect : ~m? -# 87| v87_47(void) = ^BufferReadSideEffect[0] : &:r87_44, ~m? -# 87| mu87_48(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_39 -# 87| r87_49(coroutine_handle) = Load[#temp87:20] : &:r87_39, ~m? -# 87| v87_50(void) = Call[await_suspend] : func:r87_38, this:r0_17, 0:r87_49 -# 87| mu87_51(unknown) = ^CallSideEffect : ~m? -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m? +# 87| r87_36(suspend_always *) = CopyValue : r87_20 +# 87| r87_37(glval) = CopyValue : r87_36 +#-----| r0_17(glval) = Convert : r87_37 +# 87| r87_38(glval) = FunctionAddress[await_suspend] : +# 87| r87_39(glval>) = VariableAddress[#temp87:20] : +# 87| mu87_40(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_39 +# 87| r87_41(glval) = FunctionAddress[coroutine_handle] : +# 87| r87_42(glval>) = VariableAddress[(unnamed local variable)] : +# 87| r87_43(glval>) = Convert : r87_42 +# 87| r87_44(coroutine_handle &) = CopyValue : r87_43 +# 87| v87_45(void) = Call[coroutine_handle] : func:r87_41, this:r87_39, 0:r87_44 +# 87| mu87_46(unknown) = ^CallSideEffect : ~m? +# 87| v87_47(void) = ^BufferReadSideEffect[0] : &:r87_44, ~m? +# 87| mu87_48(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_39 +# 87| r87_49(coroutine_handle) = Load[#temp87:20] : &:r87_39, ~m? +# 87| v87_50(void) = Call[await_suspend] : func:r87_38, this:r0_17, 0:r87_49 +# 87| mu87_51(unknown) = ^CallSideEffect : ~m? +#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m? #-----| Goto -> Block 3 #-----| Block 5 -#-----| v0_19(void) = CatchAny : -#-----| r0_20(glval) = VariableAddress : -#-----| r0_21(bool) = Load[?] : &:r0_20, ~m? -#-----| r0_22(bool) = LogicalNot : r0_21 -#-----| v0_23(void) = ConditionalBranch : r0_22 +#-----| v0_19(void) = CatchAny : +#-----| r0_20(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_21(bool) = Load[(unnamed local variable)] : &:r0_20, ~m? +#-----| r0_22(bool) = LogicalNot : r0_21 +#-----| v0_23(void) = ConditionalBranch : r0_22 #-----| False -> Block 7 #-----| True -> Block 6 @@ -876,24 +876,24 @@ coroutines.cpp: #-----| Goto -> Block 1 # 87| Block 10 -# 87| r87_87(suspend_always *) = CopyValue : r87_72 -# 87| r87_88(glval) = CopyValue : r87_87 -#-----| r0_31(glval) = Convert : r87_88 -# 87| r87_89(glval) = FunctionAddress[await_suspend] : -# 87| r87_90(glval>) = VariableAddress[#temp87:20] : -# 87| mu87_91(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_90 -# 87| r87_92(glval) = FunctionAddress[coroutine_handle] : -# 87| r87_93(glval>) = VariableAddress : -# 87| r87_94(glval>) = Convert : r87_93 -# 87| r87_95(coroutine_handle &) = CopyValue : r87_94 -# 87| v87_96(void) = Call[coroutine_handle] : func:r87_92, this:r87_90, 0:r87_95 -# 87| mu87_97(unknown) = ^CallSideEffect : ~m? -# 87| v87_98(void) = ^BufferReadSideEffect[0] : &:r87_95, ~m? -# 87| mu87_99(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_90 -# 87| r87_100(coroutine_handle) = Load[#temp87:20] : &:r87_90, ~m? -# 87| v87_101(void) = Call[await_suspend] : func:r87_89, this:r0_31, 0:r87_100 -# 87| mu87_102(unknown) = ^CallSideEffect : ~m? -#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m? +# 87| r87_87(suspend_always *) = CopyValue : r87_72 +# 87| r87_88(glval) = CopyValue : r87_87 +#-----| r0_31(glval) = Convert : r87_88 +# 87| r87_89(glval) = FunctionAddress[await_suspend] : +# 87| r87_90(glval>) = VariableAddress[#temp87:20] : +# 87| mu87_91(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_90 +# 87| r87_92(glval) = FunctionAddress[coroutine_handle] : +# 87| r87_93(glval>) = VariableAddress[(unnamed local variable)] : +# 87| r87_94(glval>) = Convert : r87_93 +# 87| r87_95(coroutine_handle &) = CopyValue : r87_94 +# 87| v87_96(void) = Call[coroutine_handle] : func:r87_92, this:r87_90, 0:r87_95 +# 87| mu87_97(unknown) = ^CallSideEffect : ~m? +# 87| v87_98(void) = ^BufferReadSideEffect[0] : &:r87_95, ~m? +# 87| mu87_99(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_90 +# 87| r87_100(coroutine_handle) = Load[#temp87:20] : &:r87_90, ~m? +# 87| v87_101(void) = Call[await_suspend] : func:r87_89, this:r0_31, 0:r87_100 +# 87| mu87_102(unknown) = ^CallSideEffect : ~m? +#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m? #-----| Goto -> Block 9 # 91| co_returnable_value co_return_int(int) @@ -947,8 +947,8 @@ coroutines.cpp: #-----| Block 3 #-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress : -#-----| mu0_10(bool) = Store[?] : &:r0_9, r0_8 +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 # 91| r91_33(suspend_always *) = CopyValue : r91_22 # 91| r91_34(glval) = CopyValue : r91_33 #-----| r0_11(glval) = Convert : r91_34 @@ -970,32 +970,32 @@ coroutines.cpp: #-----| Goto (back edge) -> Block 8 # 91| Block 4 -# 91| r91_38(suspend_always *) = CopyValue : r91_22 -# 91| r91_39(glval) = CopyValue : r91_38 -#-----| r0_21(glval) = Convert : r91_39 -# 91| r91_40(glval) = FunctionAddress[await_suspend] : -# 91| r91_41(glval>) = VariableAddress[#temp91:21] : -# 91| mu91_42(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_41 -# 91| r91_43(glval) = FunctionAddress[coroutine_handle] : -# 91| r91_44(glval>) = VariableAddress : -# 91| r91_45(glval>) = Convert : r91_44 -# 91| r91_46(coroutine_handle &) = CopyValue : r91_45 -# 91| v91_47(void) = Call[coroutine_handle] : func:r91_43, this:r91_41, 0:r91_46 -# 91| mu91_48(unknown) = ^CallSideEffect : ~m? -# 91| v91_49(void) = ^BufferReadSideEffect[0] : &:r91_46, ~m? -# 91| mu91_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_41 -# 91| r91_51(coroutine_handle) = Load[#temp91:21] : &:r91_41, ~m? -# 91| v91_52(void) = Call[await_suspend] : func:r91_40, this:r0_21, 0:r91_51 -# 91| mu91_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m? +# 91| r91_38(suspend_always *) = CopyValue : r91_22 +# 91| r91_39(glval) = CopyValue : r91_38 +#-----| r0_21(glval) = Convert : r91_39 +# 91| r91_40(glval) = FunctionAddress[await_suspend] : +# 91| r91_41(glval>) = VariableAddress[#temp91:21] : +# 91| mu91_42(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_41 +# 91| r91_43(glval) = FunctionAddress[coroutine_handle] : +# 91| r91_44(glval>) = VariableAddress[(unnamed local variable)] : +# 91| r91_45(glval>) = Convert : r91_44 +# 91| r91_46(coroutine_handle &) = CopyValue : r91_45 +# 91| v91_47(void) = Call[coroutine_handle] : func:r91_43, this:r91_41, 0:r91_46 +# 91| mu91_48(unknown) = ^CallSideEffect : ~m? +# 91| v91_49(void) = ^BufferReadSideEffect[0] : &:r91_46, ~m? +# 91| mu91_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_41 +# 91| r91_51(coroutine_handle) = Load[#temp91:21] : &:r91_41, ~m? +# 91| v91_52(void) = Call[await_suspend] : func:r91_40, this:r0_21, 0:r91_51 +# 91| mu91_53(unknown) = ^CallSideEffect : ~m? +#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m? #-----| Goto -> Block 3 #-----| Block 5 -#-----| v0_23(void) = CatchAny : -#-----| r0_24(glval) = VariableAddress : -#-----| r0_25(bool) = Load[?] : &:r0_24, ~m? -#-----| r0_26(bool) = LogicalNot : r0_25 -#-----| v0_27(void) = ConditionalBranch : r0_26 +#-----| v0_23(void) = CatchAny : +#-----| r0_24(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_25(bool) = Load[(unnamed local variable)] : &:r0_24, ~m? +#-----| r0_26(bool) = LogicalNot : r0_25 +#-----| v0_27(void) = ConditionalBranch : r0_26 #-----| False -> Block 7 #-----| True -> Block 6 @@ -1055,24 +1055,24 @@ coroutines.cpp: #-----| Goto -> Block 1 # 91| Block 10 -# 91| r91_89(suspend_always *) = CopyValue : r91_74 -# 91| r91_90(glval) = CopyValue : r91_89 -#-----| r0_35(glval) = Convert : r91_90 -# 91| r91_91(glval) = FunctionAddress[await_suspend] : -# 91| r91_92(glval>) = VariableAddress[#temp91:21] : -# 91| mu91_93(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_92 -# 91| r91_94(glval) = FunctionAddress[coroutine_handle] : -# 91| r91_95(glval>) = VariableAddress : -# 91| r91_96(glval>) = Convert : r91_95 -# 91| r91_97(coroutine_handle &) = CopyValue : r91_96 -# 91| v91_98(void) = Call[coroutine_handle] : func:r91_94, this:r91_92, 0:r91_97 -# 91| mu91_99(unknown) = ^CallSideEffect : ~m? -# 91| v91_100(void) = ^BufferReadSideEffect[0] : &:r91_97, ~m? -# 91| mu91_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_92 -# 91| r91_102(coroutine_handle) = Load[#temp91:21] : &:r91_92, ~m? -# 91| v91_103(void) = Call[await_suspend] : func:r91_91, this:r0_35, 0:r91_102 -# 91| mu91_104(unknown) = ^CallSideEffect : ~m? -#-----| v0_36(void) = ^IndirectReadSideEffect[-1] : &:r0_35, ~m? +# 91| r91_89(suspend_always *) = CopyValue : r91_74 +# 91| r91_90(glval) = CopyValue : r91_89 +#-----| r0_35(glval) = Convert : r91_90 +# 91| r91_91(glval) = FunctionAddress[await_suspend] : +# 91| r91_92(glval>) = VariableAddress[#temp91:21] : +# 91| mu91_93(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_92 +# 91| r91_94(glval) = FunctionAddress[coroutine_handle] : +# 91| r91_95(glval>) = VariableAddress[(unnamed local variable)] : +# 91| r91_96(glval>) = Convert : r91_95 +# 91| r91_97(coroutine_handle &) = CopyValue : r91_96 +# 91| v91_98(void) = Call[coroutine_handle] : func:r91_94, this:r91_92, 0:r91_97 +# 91| mu91_99(unknown) = ^CallSideEffect : ~m? +# 91| v91_100(void) = ^BufferReadSideEffect[0] : &:r91_97, ~m? +# 91| mu91_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_92 +# 91| r91_102(coroutine_handle) = Load[#temp91:21] : &:r91_92, ~m? +# 91| v91_103(void) = Call[await_suspend] : func:r91_91, this:r0_35, 0:r91_102 +# 91| mu91_104(unknown) = ^CallSideEffect : ~m? +#-----| v0_36(void) = ^IndirectReadSideEffect[-1] : &:r0_35, ~m? #-----| Goto -> Block 9 # 95| co_returnable_void co_yield_value_void(int) @@ -1126,8 +1126,8 @@ coroutines.cpp: #-----| Block 3 #-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress : -#-----| mu0_10(bool) = Store[?] : &:r0_9, r0_8 +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 # 95| r95_33(suspend_always *) = CopyValue : r95_22 # 95| r95_34(glval) = CopyValue : r95_33 #-----| r0_11(glval) = Convert : r95_34 @@ -1169,24 +1169,24 @@ coroutines.cpp: #-----| True -> Block 5 # 95| Block 4 -# 95| r95_38(suspend_always *) = CopyValue : r95_22 -# 95| r95_39(glval) = CopyValue : r95_38 -#-----| r0_16(glval) = Convert : r95_39 -# 95| r95_40(glval) = FunctionAddress[await_suspend] : -# 95| r95_41(glval>) = VariableAddress[#temp95:20] : -# 95| mu95_42(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_41 -# 95| r95_43(glval) = FunctionAddress[coroutine_handle] : -# 95| r95_44(glval>) = VariableAddress : -# 95| r95_45(glval>) = Convert : r95_44 -# 95| r95_46(coroutine_handle &) = CopyValue : r95_45 -# 95| v95_47(void) = Call[coroutine_handle] : func:r95_43, this:r95_41, 0:r95_46 -# 95| mu95_48(unknown) = ^CallSideEffect : ~m? -# 95| v95_49(void) = ^BufferReadSideEffect[0] : &:r95_46, ~m? -# 95| mu95_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_41 -# 95| r95_51(coroutine_handle) = Load[#temp95:20] : &:r95_41, ~m? -# 95| v95_52(void) = Call[await_suspend] : func:r95_40, this:r0_16, 0:r95_51 -# 95| mu95_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +# 95| r95_38(suspend_always *) = CopyValue : r95_22 +# 95| r95_39(glval) = CopyValue : r95_38 +#-----| r0_16(glval) = Convert : r95_39 +# 95| r95_40(glval) = FunctionAddress[await_suspend] : +# 95| r95_41(glval>) = VariableAddress[#temp95:20] : +# 95| mu95_42(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_41 +# 95| r95_43(glval) = FunctionAddress[coroutine_handle] : +# 95| r95_44(glval>) = VariableAddress[(unnamed local variable)] : +# 95| r95_45(glval>) = Convert : r95_44 +# 95| r95_46(coroutine_handle &) = CopyValue : r95_45 +# 95| v95_47(void) = Call[coroutine_handle] : func:r95_43, this:r95_41, 0:r95_46 +# 95| mu95_48(unknown) = ^CallSideEffect : ~m? +# 95| v95_49(void) = ^BufferReadSideEffect[0] : &:r95_46, ~m? +# 95| mu95_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_41 +# 95| r95_51(coroutine_handle) = Load[#temp95:20] : &:r95_41, ~m? +# 95| v95_52(void) = Call[await_suspend] : func:r95_40, this:r0_16, 0:r95_51 +# 95| mu95_53(unknown) = ^CallSideEffect : ~m? +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? #-----| Goto -> Block 3 # 96| Block 5 @@ -1208,32 +1208,32 @@ coroutines.cpp: #-----| Goto (back edge) -> Block 10 # 96| Block 6 -# 96| r96_33(suspend_always *) = CopyValue : r96_19 -# 96| r96_34(glval) = CopyValue : r96_33 -#-----| r0_27(glval) = Convert : r96_34 -# 96| r96_35(glval) = FunctionAddress[await_suspend] : -# 96| r96_36(glval>) = VariableAddress[#temp96:3] : -# 96| mu96_37(coroutine_handle) = Uninitialized[#temp96:3] : &:r96_36 -# 96| r96_38(glval) = FunctionAddress[coroutine_handle] : -# 96| r96_39(glval>) = VariableAddress : -# 96| r96_40(glval>) = Convert : r96_39 -# 96| r96_41(coroutine_handle &) = CopyValue : r96_40 -# 96| v96_42(void) = Call[coroutine_handle] : func:r96_38, this:r96_36, 0:r96_41 -# 96| mu96_43(unknown) = ^CallSideEffect : ~m? -# 96| v96_44(void) = ^BufferReadSideEffect[0] : &:r96_41, ~m? -# 96| mu96_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r96_36 -# 96| r96_46(coroutine_handle) = Load[#temp96:3] : &:r96_36, ~m? -# 96| v96_47(void) = Call[await_suspend] : func:r96_35, this:r0_27, 0:r96_46 -# 96| mu96_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? +# 96| r96_33(suspend_always *) = CopyValue : r96_19 +# 96| r96_34(glval) = CopyValue : r96_33 +#-----| r0_27(glval) = Convert : r96_34 +# 96| r96_35(glval) = FunctionAddress[await_suspend] : +# 96| r96_36(glval>) = VariableAddress[#temp96:3] : +# 96| mu96_37(coroutine_handle) = Uninitialized[#temp96:3] : &:r96_36 +# 96| r96_38(glval) = FunctionAddress[coroutine_handle] : +# 96| r96_39(glval>) = VariableAddress[(unnamed local variable)] : +# 96| r96_40(glval>) = Convert : r96_39 +# 96| r96_41(coroutine_handle &) = CopyValue : r96_40 +# 96| v96_42(void) = Call[coroutine_handle] : func:r96_38, this:r96_36, 0:r96_41 +# 96| mu96_43(unknown) = ^CallSideEffect : ~m? +# 96| v96_44(void) = ^BufferReadSideEffect[0] : &:r96_41, ~m? +# 96| mu96_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r96_36 +# 96| r96_46(coroutine_handle) = Load[#temp96:3] : &:r96_36, ~m? +# 96| v96_47(void) = Call[await_suspend] : func:r96_35, this:r0_27, 0:r96_46 +# 96| mu96_48(unknown) = ^CallSideEffect : ~m? +#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? #-----| Goto -> Block 5 #-----| Block 7 -#-----| v0_29(void) = CatchAny : -#-----| r0_30(glval) = VariableAddress : -#-----| r0_31(bool) = Load[?] : &:r0_30, ~m? -#-----| r0_32(bool) = LogicalNot : r0_31 -#-----| v0_33(void) = ConditionalBranch : r0_32 +#-----| v0_29(void) = CatchAny : +#-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? +#-----| r0_32(bool) = LogicalNot : r0_31 +#-----| v0_33(void) = ConditionalBranch : r0_32 #-----| False -> Block 9 #-----| True -> Block 8 @@ -1293,24 +1293,24 @@ coroutines.cpp: #-----| Goto -> Block 1 # 95| Block 12 -# 95| r95_89(suspend_always *) = CopyValue : r95_74 -# 95| r95_90(glval) = CopyValue : r95_89 -#-----| r0_41(glval) = Convert : r95_90 -# 95| r95_91(glval) = FunctionAddress[await_suspend] : -# 95| r95_92(glval>) = VariableAddress[#temp95:20] : -# 95| mu95_93(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_92 -# 95| r95_94(glval) = FunctionAddress[coroutine_handle] : -# 95| r95_95(glval>) = VariableAddress : -# 95| r95_96(glval>) = Convert : r95_95 -# 95| r95_97(coroutine_handle &) = CopyValue : r95_96 -# 95| v95_98(void) = Call[coroutine_handle] : func:r95_94, this:r95_92, 0:r95_97 -# 95| mu95_99(unknown) = ^CallSideEffect : ~m? -# 95| v95_100(void) = ^BufferReadSideEffect[0] : &:r95_97, ~m? -# 95| mu95_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_92 -# 95| r95_102(coroutine_handle) = Load[#temp95:20] : &:r95_92, ~m? -# 95| v95_103(void) = Call[await_suspend] : func:r95_91, this:r0_41, 0:r95_102 -# 95| mu95_104(unknown) = ^CallSideEffect : ~m? -#-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? +# 95| r95_89(suspend_always *) = CopyValue : r95_74 +# 95| r95_90(glval) = CopyValue : r95_89 +#-----| r0_41(glval) = Convert : r95_90 +# 95| r95_91(glval) = FunctionAddress[await_suspend] : +# 95| r95_92(glval>) = VariableAddress[#temp95:20] : +# 95| mu95_93(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_92 +# 95| r95_94(glval) = FunctionAddress[coroutine_handle] : +# 95| r95_95(glval>) = VariableAddress[(unnamed local variable)] : +# 95| r95_96(glval>) = Convert : r95_95 +# 95| r95_97(coroutine_handle &) = CopyValue : r95_96 +# 95| v95_98(void) = Call[coroutine_handle] : func:r95_94, this:r95_92, 0:r95_97 +# 95| mu95_99(unknown) = ^CallSideEffect : ~m? +# 95| v95_100(void) = ^BufferReadSideEffect[0] : &:r95_97, ~m? +# 95| mu95_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_92 +# 95| r95_102(coroutine_handle) = Load[#temp95:20] : &:r95_92, ~m? +# 95| v95_103(void) = Call[await_suspend] : func:r95_91, this:r0_41, 0:r95_102 +# 95| mu95_104(unknown) = ^CallSideEffect : ~m? +#-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? #-----| Goto -> Block 11 # 99| co_returnable_value co_yield_value_value(int) @@ -1364,8 +1364,8 @@ coroutines.cpp: #-----| Block 3 #-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress : -#-----| mu0_10(bool) = Store[?] : &:r0_9, r0_8 +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 # 99| r99_33(suspend_always *) = CopyValue : r99_22 # 99| r99_34(glval) = CopyValue : r99_33 #-----| r0_11(glval) = Convert : r99_34 @@ -1407,24 +1407,24 @@ coroutines.cpp: #-----| True -> Block 5 # 99| Block 4 -# 99| r99_38(suspend_always *) = CopyValue : r99_22 -# 99| r99_39(glval) = CopyValue : r99_38 -#-----| r0_16(glval) = Convert : r99_39 -# 99| r99_40(glval) = FunctionAddress[await_suspend] : -# 99| r99_41(glval>) = VariableAddress[#temp99:21] : -# 99| mu99_42(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_41 -# 99| r99_43(glval) = FunctionAddress[coroutine_handle] : -# 99| r99_44(glval>) = VariableAddress : -# 99| r99_45(glval>) = Convert : r99_44 -# 99| r99_46(coroutine_handle &) = CopyValue : r99_45 -# 99| v99_47(void) = Call[coroutine_handle] : func:r99_43, this:r99_41, 0:r99_46 -# 99| mu99_48(unknown) = ^CallSideEffect : ~m? -# 99| v99_49(void) = ^BufferReadSideEffect[0] : &:r99_46, ~m? -# 99| mu99_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_41 -# 99| r99_51(coroutine_handle) = Load[#temp99:21] : &:r99_41, ~m? -# 99| v99_52(void) = Call[await_suspend] : func:r99_40, this:r0_16, 0:r99_51 -# 99| mu99_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +# 99| r99_38(suspend_always *) = CopyValue : r99_22 +# 99| r99_39(glval) = CopyValue : r99_38 +#-----| r0_16(glval) = Convert : r99_39 +# 99| r99_40(glval) = FunctionAddress[await_suspend] : +# 99| r99_41(glval>) = VariableAddress[#temp99:21] : +# 99| mu99_42(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_41 +# 99| r99_43(glval) = FunctionAddress[coroutine_handle] : +# 99| r99_44(glval>) = VariableAddress[(unnamed local variable)] : +# 99| r99_45(glval>) = Convert : r99_44 +# 99| r99_46(coroutine_handle &) = CopyValue : r99_45 +# 99| v99_47(void) = Call[coroutine_handle] : func:r99_43, this:r99_41, 0:r99_46 +# 99| mu99_48(unknown) = ^CallSideEffect : ~m? +# 99| v99_49(void) = ^BufferReadSideEffect[0] : &:r99_46, ~m? +# 99| mu99_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_41 +# 99| r99_51(coroutine_handle) = Load[#temp99:21] : &:r99_41, ~m? +# 99| v99_52(void) = Call[await_suspend] : func:r99_40, this:r0_16, 0:r99_51 +# 99| mu99_53(unknown) = ^CallSideEffect : ~m? +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? #-----| Goto -> Block 3 # 100| Block 5 @@ -1438,32 +1438,32 @@ coroutines.cpp: #-----| Goto -> Block 10 # 100| Block 6 -# 100| r100_33(suspend_always *) = CopyValue : r100_19 -# 100| r100_34(glval) = CopyValue : r100_33 -#-----| r0_20(glval) = Convert : r100_34 -# 100| r100_35(glval) = FunctionAddress[await_suspend] : -# 100| r100_36(glval>) = VariableAddress[#temp100:3] : -# 100| mu100_37(coroutine_handle) = Uninitialized[#temp100:3] : &:r100_36 -# 100| r100_38(glval) = FunctionAddress[coroutine_handle] : -# 100| r100_39(glval>) = VariableAddress : -# 100| r100_40(glval>) = Convert : r100_39 -# 100| r100_41(coroutine_handle &) = CopyValue : r100_40 -# 100| v100_42(void) = Call[coroutine_handle] : func:r100_38, this:r100_36, 0:r100_41 -# 100| mu100_43(unknown) = ^CallSideEffect : ~m? -# 100| v100_44(void) = ^BufferReadSideEffect[0] : &:r100_41, ~m? -# 100| mu100_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r100_36 -# 100| r100_46(coroutine_handle) = Load[#temp100:3] : &:r100_36, ~m? -# 100| v100_47(void) = Call[await_suspend] : func:r100_35, this:r0_20, 0:r100_46 -# 100| mu100_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? +# 100| r100_33(suspend_always *) = CopyValue : r100_19 +# 100| r100_34(glval) = CopyValue : r100_33 +#-----| r0_20(glval) = Convert : r100_34 +# 100| r100_35(glval) = FunctionAddress[await_suspend] : +# 100| r100_36(glval>) = VariableAddress[#temp100:3] : +# 100| mu100_37(coroutine_handle) = Uninitialized[#temp100:3] : &:r100_36 +# 100| r100_38(glval) = FunctionAddress[coroutine_handle] : +# 100| r100_39(glval>) = VariableAddress[(unnamed local variable)] : +# 100| r100_40(glval>) = Convert : r100_39 +# 100| r100_41(coroutine_handle &) = CopyValue : r100_40 +# 100| v100_42(void) = Call[coroutine_handle] : func:r100_38, this:r100_36, 0:r100_41 +# 100| mu100_43(unknown) = ^CallSideEffect : ~m? +# 100| v100_44(void) = ^BufferReadSideEffect[0] : &:r100_41, ~m? +# 100| mu100_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r100_36 +# 100| r100_46(coroutine_handle) = Load[#temp100:3] : &:r100_36, ~m? +# 100| v100_47(void) = Call[await_suspend] : func:r100_35, this:r0_20, 0:r100_46 +# 100| mu100_48(unknown) = ^CallSideEffect : ~m? +#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| Goto -> Block 5 #-----| Block 7 -#-----| v0_22(void) = CatchAny : -#-----| r0_23(glval) = VariableAddress : -#-----| r0_24(bool) = Load[?] : &:r0_23, ~m? -#-----| r0_25(bool) = LogicalNot : r0_24 -#-----| v0_26(void) = ConditionalBranch : r0_25 +#-----| v0_22(void) = CatchAny : +#-----| r0_23(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_24(bool) = Load[(unnamed local variable)] : &:r0_23, ~m? +#-----| r0_25(bool) = LogicalNot : r0_24 +#-----| v0_26(void) = ConditionalBranch : r0_25 #-----| False -> Block 9 #-----| True -> Block 8 @@ -1523,24 +1523,24 @@ coroutines.cpp: #-----| Goto -> Block 1 # 99| Block 12 -# 99| r99_89(suspend_always *) = CopyValue : r99_74 -# 99| r99_90(glval) = CopyValue : r99_89 -#-----| r0_34(glval) = Convert : r99_90 -# 99| r99_91(glval) = FunctionAddress[await_suspend] : -# 99| r99_92(glval>) = VariableAddress[#temp99:21] : -# 99| mu99_93(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_92 -# 99| r99_94(glval) = FunctionAddress[coroutine_handle] : -# 99| r99_95(glval>) = VariableAddress : -# 99| r99_96(glval>) = Convert : r99_95 -# 99| r99_97(coroutine_handle &) = CopyValue : r99_96 -# 99| v99_98(void) = Call[coroutine_handle] : func:r99_94, this:r99_92, 0:r99_97 -# 99| mu99_99(unknown) = ^CallSideEffect : ~m? -# 99| v99_100(void) = ^BufferReadSideEffect[0] : &:r99_97, ~m? -# 99| mu99_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_92 -# 99| r99_102(coroutine_handle) = Load[#temp99:21] : &:r99_92, ~m? -# 99| v99_103(void) = Call[await_suspend] : func:r99_91, this:r0_34, 0:r99_102 -# 99| mu99_104(unknown) = ^CallSideEffect : ~m? -#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m? +# 99| r99_89(suspend_always *) = CopyValue : r99_74 +# 99| r99_90(glval) = CopyValue : r99_89 +#-----| r0_34(glval) = Convert : r99_90 +# 99| r99_91(glval) = FunctionAddress[await_suspend] : +# 99| r99_92(glval>) = VariableAddress[#temp99:21] : +# 99| mu99_93(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_92 +# 99| r99_94(glval) = FunctionAddress[coroutine_handle] : +# 99| r99_95(glval>) = VariableAddress[(unnamed local variable)] : +# 99| r99_96(glval>) = Convert : r99_95 +# 99| r99_97(coroutine_handle &) = CopyValue : r99_96 +# 99| v99_98(void) = Call[coroutine_handle] : func:r99_94, this:r99_92, 0:r99_97 +# 99| mu99_99(unknown) = ^CallSideEffect : ~m? +# 99| v99_100(void) = ^BufferReadSideEffect[0] : &:r99_97, ~m? +# 99| mu99_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_92 +# 99| r99_102(coroutine_handle) = Load[#temp99:21] : &:r99_92, ~m? +# 99| v99_103(void) = Call[await_suspend] : func:r99_91, this:r0_34, 0:r99_102 +# 99| mu99_104(unknown) = ^CallSideEffect : ~m? +#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m? #-----| Goto -> Block 11 # 103| co_returnable_void co_yield_and_return_void(int) @@ -1594,8 +1594,8 @@ coroutines.cpp: #-----| Block 3 #-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress : -#-----| mu0_10(bool) = Store[?] : &:r0_9, r0_8 +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 # 103| r103_33(suspend_always *) = CopyValue : r103_22 # 103| r103_34(glval) = CopyValue : r103_33 #-----| r0_11(glval) = Convert : r103_34 @@ -1637,24 +1637,24 @@ coroutines.cpp: #-----| True -> Block 5 # 103| Block 4 -# 103| r103_38(suspend_always *) = CopyValue : r103_22 -# 103| r103_39(glval) = CopyValue : r103_38 -#-----| r0_16(glval) = Convert : r103_39 -# 103| r103_40(glval) = FunctionAddress[await_suspend] : -# 103| r103_41(glval>) = VariableAddress[#temp103:20] : -# 103| mu103_42(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_41 -# 103| r103_43(glval) = FunctionAddress[coroutine_handle] : -# 103| r103_44(glval>) = VariableAddress : -# 103| r103_45(glval>) = Convert : r103_44 -# 103| r103_46(coroutine_handle &) = CopyValue : r103_45 -# 103| v103_47(void) = Call[coroutine_handle] : func:r103_43, this:r103_41, 0:r103_46 -# 103| mu103_48(unknown) = ^CallSideEffect : ~m? -# 103| v103_49(void) = ^BufferReadSideEffect[0] : &:r103_46, ~m? -# 103| mu103_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_41 -# 103| r103_51(coroutine_handle) = Load[#temp103:20] : &:r103_41, ~m? -# 103| v103_52(void) = Call[await_suspend] : func:r103_40, this:r0_16, 0:r103_51 -# 103| mu103_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +# 103| r103_38(suspend_always *) = CopyValue : r103_22 +# 103| r103_39(glval) = CopyValue : r103_38 +#-----| r0_16(glval) = Convert : r103_39 +# 103| r103_40(glval) = FunctionAddress[await_suspend] : +# 103| r103_41(glval>) = VariableAddress[#temp103:20] : +# 103| mu103_42(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_41 +# 103| r103_43(glval) = FunctionAddress[coroutine_handle] : +# 103| r103_44(glval>) = VariableAddress[(unnamed local variable)] : +# 103| r103_45(glval>) = Convert : r103_44 +# 103| r103_46(coroutine_handle &) = CopyValue : r103_45 +# 103| v103_47(void) = Call[coroutine_handle] : func:r103_43, this:r103_41, 0:r103_46 +# 103| mu103_48(unknown) = ^CallSideEffect : ~m? +# 103| v103_49(void) = ^BufferReadSideEffect[0] : &:r103_46, ~m? +# 103| mu103_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_41 +# 103| r103_51(coroutine_handle) = Load[#temp103:20] : &:r103_41, ~m? +# 103| v103_52(void) = Call[await_suspend] : func:r103_40, this:r0_16, 0:r103_51 +# 103| mu103_53(unknown) = ^CallSideEffect : ~m? +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? #-----| Goto -> Block 3 # 104| Block 5 @@ -1676,32 +1676,32 @@ coroutines.cpp: #-----| Goto (back edge) -> Block 10 # 104| Block 6 -# 104| r104_33(suspend_always *) = CopyValue : r104_19 -# 104| r104_34(glval) = CopyValue : r104_33 -#-----| r0_27(glval) = Convert : r104_34 -# 104| r104_35(glval) = FunctionAddress[await_suspend] : -# 104| r104_36(glval>) = VariableAddress[#temp104:3] : -# 104| mu104_37(coroutine_handle) = Uninitialized[#temp104:3] : &:r104_36 -# 104| r104_38(glval) = FunctionAddress[coroutine_handle] : -# 104| r104_39(glval>) = VariableAddress : -# 104| r104_40(glval>) = Convert : r104_39 -# 104| r104_41(coroutine_handle &) = CopyValue : r104_40 -# 104| v104_42(void) = Call[coroutine_handle] : func:r104_38, this:r104_36, 0:r104_41 -# 104| mu104_43(unknown) = ^CallSideEffect : ~m? -# 104| v104_44(void) = ^BufferReadSideEffect[0] : &:r104_41, ~m? -# 104| mu104_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r104_36 -# 104| r104_46(coroutine_handle) = Load[#temp104:3] : &:r104_36, ~m? -# 104| v104_47(void) = Call[await_suspend] : func:r104_35, this:r0_27, 0:r104_46 -# 104| mu104_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? +# 104| r104_33(suspend_always *) = CopyValue : r104_19 +# 104| r104_34(glval) = CopyValue : r104_33 +#-----| r0_27(glval) = Convert : r104_34 +# 104| r104_35(glval) = FunctionAddress[await_suspend] : +# 104| r104_36(glval>) = VariableAddress[#temp104:3] : +# 104| mu104_37(coroutine_handle) = Uninitialized[#temp104:3] : &:r104_36 +# 104| r104_38(glval) = FunctionAddress[coroutine_handle] : +# 104| r104_39(glval>) = VariableAddress[(unnamed local variable)] : +# 104| r104_40(glval>) = Convert : r104_39 +# 104| r104_41(coroutine_handle &) = CopyValue : r104_40 +# 104| v104_42(void) = Call[coroutine_handle] : func:r104_38, this:r104_36, 0:r104_41 +# 104| mu104_43(unknown) = ^CallSideEffect : ~m? +# 104| v104_44(void) = ^BufferReadSideEffect[0] : &:r104_41, ~m? +# 104| mu104_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r104_36 +# 104| r104_46(coroutine_handle) = Load[#temp104:3] : &:r104_36, ~m? +# 104| v104_47(void) = Call[await_suspend] : func:r104_35, this:r0_27, 0:r104_46 +# 104| mu104_48(unknown) = ^CallSideEffect : ~m? +#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? #-----| Goto -> Block 5 #-----| Block 7 -#-----| v0_29(void) = CatchAny : -#-----| r0_30(glval) = VariableAddress : -#-----| r0_31(bool) = Load[?] : &:r0_30, ~m? -#-----| r0_32(bool) = LogicalNot : r0_31 -#-----| v0_33(void) = ConditionalBranch : r0_32 +#-----| v0_29(void) = CatchAny : +#-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? +#-----| r0_32(bool) = LogicalNot : r0_31 +#-----| v0_33(void) = ConditionalBranch : r0_32 #-----| False -> Block 9 #-----| True -> Block 8 @@ -1761,24 +1761,24 @@ coroutines.cpp: #-----| Goto -> Block 1 # 103| Block 12 -# 103| r103_89(suspend_always *) = CopyValue : r103_74 -# 103| r103_90(glval) = CopyValue : r103_89 -#-----| r0_41(glval) = Convert : r103_90 -# 103| r103_91(glval) = FunctionAddress[await_suspend] : -# 103| r103_92(glval>) = VariableAddress[#temp103:20] : -# 103| mu103_93(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_92 -# 103| r103_94(glval) = FunctionAddress[coroutine_handle] : -# 103| r103_95(glval>) = VariableAddress : -# 103| r103_96(glval>) = Convert : r103_95 -# 103| r103_97(coroutine_handle &) = CopyValue : r103_96 -# 103| v103_98(void) = Call[coroutine_handle] : func:r103_94, this:r103_92, 0:r103_97 -# 103| mu103_99(unknown) = ^CallSideEffect : ~m? -# 103| v103_100(void) = ^BufferReadSideEffect[0] : &:r103_97, ~m? -# 103| mu103_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_92 -# 103| r103_102(coroutine_handle) = Load[#temp103:20] : &:r103_92, ~m? -# 103| v103_103(void) = Call[await_suspend] : func:r103_91, this:r0_41, 0:r103_102 -# 103| mu103_104(unknown) = ^CallSideEffect : ~m? -#-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? +# 103| r103_89(suspend_always *) = CopyValue : r103_74 +# 103| r103_90(glval) = CopyValue : r103_89 +#-----| r0_41(glval) = Convert : r103_90 +# 103| r103_91(glval) = FunctionAddress[await_suspend] : +# 103| r103_92(glval>) = VariableAddress[#temp103:20] : +# 103| mu103_93(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_92 +# 103| r103_94(glval) = FunctionAddress[coroutine_handle] : +# 103| r103_95(glval>) = VariableAddress[(unnamed local variable)] : +# 103| r103_96(glval>) = Convert : r103_95 +# 103| r103_97(coroutine_handle &) = CopyValue : r103_96 +# 103| v103_98(void) = Call[coroutine_handle] : func:r103_94, this:r103_92, 0:r103_97 +# 103| mu103_99(unknown) = ^CallSideEffect : ~m? +# 103| v103_100(void) = ^BufferReadSideEffect[0] : &:r103_97, ~m? +# 103| mu103_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_92 +# 103| r103_102(coroutine_handle) = Load[#temp103:20] : &:r103_92, ~m? +# 103| v103_103(void) = Call[await_suspend] : func:r103_91, this:r0_41, 0:r103_102 +# 103| mu103_104(unknown) = ^CallSideEffect : ~m? +#-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? #-----| Goto -> Block 11 # 108| co_returnable_value co_yield_and_return_value(int) @@ -1832,8 +1832,8 @@ coroutines.cpp: #-----| Block 3 #-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress : -#-----| mu0_10(bool) = Store[?] : &:r0_9, r0_8 +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 # 108| r108_33(suspend_always *) = CopyValue : r108_22 # 108| r108_34(glval) = CopyValue : r108_33 #-----| r0_11(glval) = Convert : r108_34 @@ -1875,24 +1875,24 @@ coroutines.cpp: #-----| True -> Block 5 # 108| Block 4 -# 108| r108_38(suspend_always *) = CopyValue : r108_22 -# 108| r108_39(glval) = CopyValue : r108_38 -#-----| r0_16(glval) = Convert : r108_39 -# 108| r108_40(glval) = FunctionAddress[await_suspend] : -# 108| r108_41(glval>) = VariableAddress[#temp108:21] : -# 108| mu108_42(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_41 -# 108| r108_43(glval) = FunctionAddress[coroutine_handle] : -# 108| r108_44(glval>) = VariableAddress : -# 108| r108_45(glval>) = Convert : r108_44 -# 108| r108_46(coroutine_handle &) = CopyValue : r108_45 -# 108| v108_47(void) = Call[coroutine_handle] : func:r108_43, this:r108_41, 0:r108_46 -# 108| mu108_48(unknown) = ^CallSideEffect : ~m? -# 108| v108_49(void) = ^BufferReadSideEffect[0] : &:r108_46, ~m? -# 108| mu108_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_41 -# 108| r108_51(coroutine_handle) = Load[#temp108:21] : &:r108_41, ~m? -# 108| v108_52(void) = Call[await_suspend] : func:r108_40, this:r0_16, 0:r108_51 -# 108| mu108_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +# 108| r108_38(suspend_always *) = CopyValue : r108_22 +# 108| r108_39(glval) = CopyValue : r108_38 +#-----| r0_16(glval) = Convert : r108_39 +# 108| r108_40(glval) = FunctionAddress[await_suspend] : +# 108| r108_41(glval>) = VariableAddress[#temp108:21] : +# 108| mu108_42(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_41 +# 108| r108_43(glval) = FunctionAddress[coroutine_handle] : +# 108| r108_44(glval>) = VariableAddress[(unnamed local variable)] : +# 108| r108_45(glval>) = Convert : r108_44 +# 108| r108_46(coroutine_handle &) = CopyValue : r108_45 +# 108| v108_47(void) = Call[coroutine_handle] : func:r108_43, this:r108_41, 0:r108_46 +# 108| mu108_48(unknown) = ^CallSideEffect : ~m? +# 108| v108_49(void) = ^BufferReadSideEffect[0] : &:r108_46, ~m? +# 108| mu108_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_41 +# 108| r108_51(coroutine_handle) = Load[#temp108:21] : &:r108_41, ~m? +# 108| v108_52(void) = Call[await_suspend] : func:r108_40, this:r0_16, 0:r108_51 +# 108| mu108_53(unknown) = ^CallSideEffect : ~m? +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? #-----| Goto -> Block 3 # 109| Block 5 @@ -1918,32 +1918,32 @@ coroutines.cpp: #-----| Goto (back edge) -> Block 10 # 109| Block 6 -# 109| r109_33(suspend_always *) = CopyValue : r109_19 -# 109| r109_34(glval) = CopyValue : r109_33 -#-----| r0_27(glval) = Convert : r109_34 -# 109| r109_35(glval) = FunctionAddress[await_suspend] : -# 109| r109_36(glval>) = VariableAddress[#temp109:3] : -# 109| mu109_37(coroutine_handle) = Uninitialized[#temp109:3] : &:r109_36 -# 109| r109_38(glval) = FunctionAddress[coroutine_handle] : -# 109| r109_39(glval>) = VariableAddress : -# 109| r109_40(glval>) = Convert : r109_39 -# 109| r109_41(coroutine_handle &) = CopyValue : r109_40 -# 109| v109_42(void) = Call[coroutine_handle] : func:r109_38, this:r109_36, 0:r109_41 -# 109| mu109_43(unknown) = ^CallSideEffect : ~m? -# 109| v109_44(void) = ^BufferReadSideEffect[0] : &:r109_41, ~m? -# 109| mu109_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r109_36 -# 109| r109_46(coroutine_handle) = Load[#temp109:3] : &:r109_36, ~m? -# 109| v109_47(void) = Call[await_suspend] : func:r109_35, this:r0_27, 0:r109_46 -# 109| mu109_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? +# 109| r109_33(suspend_always *) = CopyValue : r109_19 +# 109| r109_34(glval) = CopyValue : r109_33 +#-----| r0_27(glval) = Convert : r109_34 +# 109| r109_35(glval) = FunctionAddress[await_suspend] : +# 109| r109_36(glval>) = VariableAddress[#temp109:3] : +# 109| mu109_37(coroutine_handle) = Uninitialized[#temp109:3] : &:r109_36 +# 109| r109_38(glval) = FunctionAddress[coroutine_handle] : +# 109| r109_39(glval>) = VariableAddress[(unnamed local variable)] : +# 109| r109_40(glval>) = Convert : r109_39 +# 109| r109_41(coroutine_handle &) = CopyValue : r109_40 +# 109| v109_42(void) = Call[coroutine_handle] : func:r109_38, this:r109_36, 0:r109_41 +# 109| mu109_43(unknown) = ^CallSideEffect : ~m? +# 109| v109_44(void) = ^BufferReadSideEffect[0] : &:r109_41, ~m? +# 109| mu109_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r109_36 +# 109| r109_46(coroutine_handle) = Load[#temp109:3] : &:r109_36, ~m? +# 109| v109_47(void) = Call[await_suspend] : func:r109_35, this:r0_27, 0:r109_46 +# 109| mu109_48(unknown) = ^CallSideEffect : ~m? +#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? #-----| Goto -> Block 5 #-----| Block 7 -#-----| v0_29(void) = CatchAny : -#-----| r0_30(glval) = VariableAddress : -#-----| r0_31(bool) = Load[?] : &:r0_30, ~m? -#-----| r0_32(bool) = LogicalNot : r0_31 -#-----| v0_33(void) = ConditionalBranch : r0_32 +#-----| v0_29(void) = CatchAny : +#-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? +#-----| r0_32(bool) = LogicalNot : r0_31 +#-----| v0_33(void) = ConditionalBranch : r0_32 #-----| False -> Block 9 #-----| True -> Block 8 @@ -2003,24 +2003,24 @@ coroutines.cpp: #-----| Goto -> Block 1 # 108| Block 12 -# 108| r108_89(suspend_always *) = CopyValue : r108_74 -# 108| r108_90(glval) = CopyValue : r108_89 -#-----| r0_41(glval) = Convert : r108_90 -# 108| r108_91(glval) = FunctionAddress[await_suspend] : -# 108| r108_92(glval>) = VariableAddress[#temp108:21] : -# 108| mu108_93(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_92 -# 108| r108_94(glval) = FunctionAddress[coroutine_handle] : -# 108| r108_95(glval>) = VariableAddress : -# 108| r108_96(glval>) = Convert : r108_95 -# 108| r108_97(coroutine_handle &) = CopyValue : r108_96 -# 108| v108_98(void) = Call[coroutine_handle] : func:r108_94, this:r108_92, 0:r108_97 -# 108| mu108_99(unknown) = ^CallSideEffect : ~m? -# 108| v108_100(void) = ^BufferReadSideEffect[0] : &:r108_97, ~m? -# 108| mu108_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_92 -# 108| r108_102(coroutine_handle) = Load[#temp108:21] : &:r108_92, ~m? -# 108| v108_103(void) = Call[await_suspend] : func:r108_91, this:r0_41, 0:r108_102 -# 108| mu108_104(unknown) = ^CallSideEffect : ~m? -#-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? +# 108| r108_89(suspend_always *) = CopyValue : r108_74 +# 108| r108_90(glval) = CopyValue : r108_89 +#-----| r0_41(glval) = Convert : r108_90 +# 108| r108_91(glval) = FunctionAddress[await_suspend] : +# 108| r108_92(glval>) = VariableAddress[#temp108:21] : +# 108| mu108_93(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_92 +# 108| r108_94(glval) = FunctionAddress[coroutine_handle] : +# 108| r108_95(glval>) = VariableAddress[(unnamed local variable)] : +# 108| r108_96(glval>) = Convert : r108_95 +# 108| r108_97(coroutine_handle &) = CopyValue : r108_96 +# 108| v108_98(void) = Call[coroutine_handle] : func:r108_94, this:r108_92, 0:r108_97 +# 108| mu108_99(unknown) = ^CallSideEffect : ~m? +# 108| v108_100(void) = ^BufferReadSideEffect[0] : &:r108_97, ~m? +# 108| mu108_101(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_92 +# 108| r108_102(coroutine_handle) = Load[#temp108:21] : &:r108_92, ~m? +# 108| v108_103(void) = Call[await_suspend] : func:r108_91, this:r0_41, 0:r108_102 +# 108| mu108_104(unknown) = ^CallSideEffect : ~m? +#-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? #-----| Goto -> Block 11 destructors_for_temps.cpp: @@ -2733,7 +2733,7 @@ destructors_for_temps.cpp: # 102| v102_8(void) = ExitFunction : generic.c: -# 1| void c11_generic_test(unsigned int, int) +# 1| void c11_generic_test_with_load(unsigned int, int) # 1| Block 0 # 1| v1_1(void) = EnterFunction : # 1| mu1_2(unknown) = AliasedDefinition : @@ -2755,6 +2755,59 @@ generic.c: # 1| v1_9(void) = AliasedUse : ~m? # 1| v1_10(void) = ExitFunction : +# 12| char const* c11_generic_test_with_constant_and_macro() +# 12| Block 0 +# 12| v12_1(void) = EnterFunction : +# 12| mu12_2(unknown) = AliasedDefinition : +# 12| mu12_3(unknown) = InitializeNonLocal : +# 14| r14_1(glval) = VariableAddress[i] : +# 14| mu14_2(int) = Uninitialized[i] : &:r14_1 +# 16| r16_1(glval) = VariableAddress[#return] : +# 16| r16_2(glval) = Constant[int] : +# 16| r16_3(char *) = Convert : r16_2 +# 16| r16_4(char *) = Convert : r16_3 +# 16| mu16_5(char *) = Store[#return] : &:r16_1, r16_4 +# 12| r12_4(glval) = VariableAddress[#return] : +# 12| v12_5(void) = ReturnValue : &:r12_4, ~m? +# 12| v12_6(void) = AliasedUse : ~m? +# 12| v12_7(void) = ExitFunction : + +# 19| char const* c11_generic_test_with_constant_and_no_macro() +# 19| Block 0 +# 19| v19_1(void) = EnterFunction : +# 19| mu19_2(unknown) = AliasedDefinition : +# 19| mu19_3(unknown) = InitializeNonLocal : +# 21| r21_1(glval) = VariableAddress[i] : +# 21| mu21_2(int) = Uninitialized[i] : &:r21_1 +# 23| r23_1(glval) = VariableAddress[#return] : +# 23| r23_2(glval) = Constant[int] : +# 23| r23_3(char *) = Convert : r23_2 +# 23| r23_4(char *) = Convert : r23_3 +# 23| mu23_5(char *) = Store[#return] : &:r23_1, r23_4 +# 19| r19_4(glval) = VariableAddress[#return] : +# 19| v19_5(void) = ReturnValue : &:r19_4, ~m? +# 19| v19_6(void) = AliasedUse : ~m? +# 19| v19_7(void) = ExitFunction : + +# 26| void c11_generic_test_test_with_cast(int) +# 26| Block 0 +# 26| v26_1(void) = EnterFunction : +# 26| mu26_2(unknown) = AliasedDefinition : +# 26| mu26_3(unknown) = InitializeNonLocal : +# 26| r26_4(glval) = VariableAddress[y] : +# 26| mu26_5(int) = InitializeParameter[y] : &:r26_4 +# 27| r27_1(glval) = VariableAddress[r] : +# 27| mu27_2(unsigned int) = Uninitialized[r] : &:r27_1 +# 28| r28_1(glval) = VariableAddress[y] : +# 28| r28_2(int) = Load[y] : &:r28_1, ~m? +# 28| r28_3(unsigned int) = Convert : r28_2 +# 28| r28_4(glval) = VariableAddress[r] : +# 28| mu28_5(unsigned int) = Store[r] : &:r28_4, r28_3 +# 29| v29_1(void) = NoOp : +# 26| v26_6(void) = ReturnVoid : +# 26| v26_7(void) = AliasedUse : ~m? +# 26| v26_8(void) = ExitFunction : + ir.c: # 7| void MyCoordsTest(int) # 7| Block 0 @@ -2831,46 +2884,215 @@ ir.c: # 25| r25_3(int) = Load[x] : &:r25_2, ~m? # 25| v25_4(void) = Call[ExRaiseAccessViolation] : func:r25_1, 0:r25_3 # 25| mu25_5(unknown) = ^CallSideEffect : ~m? -#-----| Exception -> Block 5 +#-----| Exception -> Block 6 # 21| Block 1 -# 21| r21_6(glval) = VariableAddress[#return] : -# 21| v21_7(void) = ReturnValue : &:r21_6, ~m? -# 21| v21_8(void) = AliasedUse : ~m? -# 21| v21_9(void) = ExitFunction : +# 21| v21_6(void) = AliasedUse : ~m? +# 21| v21_7(void) = ExitFunction : -# 26| Block 2 -# 26| r26_1(int) = Constant[0] : -# 26| r26_2(bool) = CompareEQ : r26_8, r26_1 -# 26| v26_3(void) = ConditionalBranch : r26_2 -#-----| False -> Block 3 -#-----| True -> Block 4 - -# 26| Block 3 -# 26| r26_4(int) = Constant[1] : -# 26| r26_5(bool) = CompareEQ : r26_8, r26_4 -# 26| v26_6(void) = ConditionalBranch : r26_5 -#-----| True -> Block 6 - -# 26| Block 4 -# 26| v26_7(void) = Unwind : -# 29| r29_1(glval) = VariableAddress[#return] : -# 29| r29_2(int) = Constant[0] : -# 29| mu29_3(int) = Store[#return] : &:r29_1, r29_2 +# 21| Block 2 +# 21| r21_8(glval) = VariableAddress[#return] : +# 21| v21_9(void) = ReturnValue : &:r21_8, ~m? #-----| Goto -> Block 1 -# 26| Block 5 -# 26| r26_8(int) = Constant[1] : -# 26| r26_9(int) = Constant[-1] : -# 26| r26_10(bool) = CompareEQ : r26_8, r26_9 -# 26| v26_11(void) = ConditionalBranch : r26_10 -#-----| False -> Block 2 -#-----| True -> Block 4 +# 21| Block 3 +# 21| v21_10(void) = Unwind : +#-----| Goto -> Block 1 -# 27| Block 6 +# 26| Block 4 +# 26| r26_1(int) = Constant[0] : +# 26| r26_2(bool) = CompareEQ : r26_7, r26_1 +# 26| v26_3(void) = ConditionalBranch : r26_2 +#-----| False -> Block 5 +#-----| True -> Block 3 + +# 26| Block 5 +# 26| r26_4(int) = Constant[1] : +# 26| r26_5(bool) = CompareEQ : r26_7, r26_4 +# 26| v26_6(void) = ConditionalBranch : r26_5 +#-----| True -> Block 7 + +# 26| Block 6 +# 26| r26_7(int) = Constant[1] : +# 26| r26_8(int) = Constant[-1] : +# 26| r26_9(bool) = CompareEQ : r26_7, r26_8 +# 26| v26_10(void) = ConditionalBranch : r26_9 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 27| Block 7 # 27| r27_1(glval) = VariableAddress[#return] : # 27| r27_2(int) = Constant[1] : # 27| mu27_3(int) = Store[#return] : &:r27_1, r27_2 +#-----| Goto -> Block 2 + +# 29| Block 8 +# 29| r29_1(glval) = VariableAddress[#return] : +# 29| r29_2(int) = Constant[0] : +# 29| mu29_3(int) = Store[#return] : &:r29_1, r29_2 +#-----| Goto -> Block 2 + +# 32| void unexplained_loop_regression() +# 32| Block 0 +# 32| v32_1(void) = EnterFunction : +# 32| mu32_2(unknown) = AliasedDefinition : +# 32| mu32_3(unknown) = InitializeNonLocal : +# 36| r36_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 36| r36_2(int) = Constant[0] : +# 36| v36_3(void) = Call[ExRaiseAccessViolation] : func:r36_1, 0:r36_2 +# 36| mu36_4(unknown) = ^CallSideEffect : ~m? +#-----| Exception -> Block 5 + +# 32| Block 1 +# 32| v32_4(void) = AliasedUse : ~m? +# 32| v32_5(void) = ExitFunction : + +# 32| Block 2 +# 32| v32_6(void) = Unwind : +#-----| Goto -> Block 1 + +# 39| Block 3 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r38_1, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False -> Block 4 +#-----| True -> Block 2 + +# 39| Block 4 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r38_1, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| True -> Block 6 + +# 38| Block 5 +# 38| r38_1(int) = Constant[1] : +# 39| r39_7(int) = Constant[-1] : +# 39| r39_8(bool) = CompareEQ : r38_1, r39_7 +# 39| v39_9(void) = ConditionalBranch : r39_8 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 40| Block 6 +# 40| r40_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 40| r40_2(int) = Constant[1] : +# 40| v40_3(void) = Call[ExRaiseAccessViolation] : func:r40_1, 0:r40_2 +# 40| mu40_4(unknown) = ^CallSideEffect : ~m? +#-----| Exception -> Block 2 + +# 42| Block 7 +# 42| v42_1(void) = NoOp : +# 32| v32_7(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 44| void try_with_finally() +# 44| Block 0 +# 44| v44_1(void) = EnterFunction : +# 44| mu44_2(unknown) = AliasedDefinition : +# 44| mu44_3(unknown) = InitializeNonLocal : +# 46| r46_1(glval) = VariableAddress[x] : +# 46| r46_2(int) = Constant[0] : +# 46| mu46_3(int) = Store[x] : &:r46_1, r46_2 +# 49| r49_1(int) = Constant[1] : +# 49| r49_2(glval) = VariableAddress[x] : +# 49| mu49_3(int) = Store[x] : &:r49_2, r49_1 +# 53| r53_1(int) = Constant[2] : +# 53| r53_2(glval) = VariableAddress[x] : +# 53| mu53_3(int) = Store[x] : &:r53_2, r53_1 +# 55| v55_1(void) = NoOp : +# 44| v44_4(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 44| Block 1 +# 44| v44_5(void) = AliasedUse : ~m? +# 44| v44_6(void) = ExitFunction : + +# 44| Block 2 +# 44| v44_7(void) = Unwind : +#-----| Goto -> Block 1 + +# 57| void throw_in_try_with_finally() +# 57| Block 0 +# 57| v57_1(void) = EnterFunction : +# 57| mu57_2(unknown) = AliasedDefinition : +# 57| mu57_3(unknown) = InitializeNonLocal : +# 59| r59_1(glval) = VariableAddress[x] : +# 59| r59_2(int) = Constant[0] : +# 59| mu59_3(int) = Store[x] : &:r59_1, r59_2 +# 62| r62_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 62| r62_2(int) = Constant[0] : +# 62| v62_3(void) = Call[ExRaiseAccessViolation] : func:r62_1, 0:r62_2 +# 62| mu62_4(unknown) = ^CallSideEffect : ~m? +#-----| Exception -> Block 3 + +# 57| Block 1 +# 57| v57_4(void) = AliasedUse : ~m? +# 57| v57_5(void) = ExitFunction : + +# 57| Block 2 +# 57| v57_6(void) = Unwind : +#-----| Goto -> Block 1 + +# 66| Block 3 +# 66| r66_1(int) = Constant[1] : +# 66| r66_2(glval) = VariableAddress[x] : +# 66| mu66_3(int) = Store[x] : &:r66_2, r66_1 +# 68| v68_1(void) = NoOp : +# 57| v57_7(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 70| void throw_in_try_with_throw_in_finally() +# 70| Block 0 +# 70| v70_1(void) = EnterFunction : +# 70| mu70_2(unknown) = AliasedDefinition : +# 70| mu70_3(unknown) = InitializeNonLocal : +# 73| r73_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 73| r73_2(int) = Constant[0] : +# 73| v73_3(void) = Call[ExRaiseAccessViolation] : func:r73_1, 0:r73_2 +# 73| mu73_4(unknown) = ^CallSideEffect : ~m? +#-----| Exception -> Block 3 + +# 70| Block 1 +# 70| v70_4(void) = AliasedUse : ~m? +# 70| v70_5(void) = ExitFunction : + +# 70| Block 2 +# 70| v70_6(void) = Unwind : +#-----| Goto -> Block 1 + +# 76| Block 3 +# 76| r76_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 76| r76_2(int) = Constant[0] : +# 76| v76_3(void) = Call[ExRaiseAccessViolation] : func:r76_1, 0:r76_2 +# 76| mu76_4(unknown) = ^CallSideEffect : ~m? +#-----| Exception -> Block 2 + +# 78| Block 4 +# 78| v78_1(void) = NoOp : +# 70| v70_7(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 80| void raise_access_violation() +# 80| Block 0 +# 80| v80_1(void) = EnterFunction : +# 80| mu80_2(unknown) = AliasedDefinition : +# 80| mu80_3(unknown) = InitializeNonLocal : +# 81| r81_1(glval) = FunctionAddress[ExRaiseAccessViolation] : +# 81| r81_2(int) = Constant[1] : +# 81| v81_3(void) = Call[ExRaiseAccessViolation] : func:r81_1, 0:r81_2 +# 81| mu81_4(unknown) = ^CallSideEffect : ~m? +#-----| Exception -> Block 2 + +# 80| Block 1 +# 80| v80_4(void) = AliasedUse : ~m? +# 80| v80_5(void) = ExitFunction : + +# 80| Block 2 +# 80| v80_6(void) = Unwind : +#-----| Goto -> Block 1 + +# 82| Block 3 +# 82| v82_1(void) = NoOp : +# 80| v80_7(void) = ReturnVoid : #-----| Goto -> Block 1 ir.cpp: @@ -17201,18468 +17423,18468 @@ ir.cpp: # 2684| v2684_8(void) = ExitFunction : many-defs-per-use.cpp: -# 17| void many_defs_per_use() -# 17| Block 0 -# 17| v17_1(void) = EnterFunction : -# 17| mu17_2(unknown) = AliasedDefinition : -# 17| mu17_3(unknown) = InitializeNonLocal : +# 34| void many_defs_per_use() +# 34| Block 0 +# 34| v34_1(void) = EnterFunction : +# 34| mu34_2(unknown) = AliasedDefinition : +# 34| mu34_3(unknown) = InitializeNonLocal : #-----| Goto -> Block 1 -# 19| Block 1 -# 19| r19_1(glval) = VariableAddress[x0] : -# 19| mu19_2(String) = Uninitialized[x0] : &:r19_1 -# 19| r19_3(glval) = FunctionAddress[String] : -# 19| v19_4(void) = Call[String] : func:r19_3, this:r19_1 -# 19| mu19_5(unknown) = ^CallSideEffect : ~m? -# 19| mu19_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r19_1 -# 20| r20_1(glval) = VariableAddress[x0] : -# 20| r20_2(glval) = FunctionAddress[~String] : -# 20| v20_3(void) = Call[~String] : func:r20_2, this:r20_1 -# 20| mu20_4(unknown) = ^CallSideEffect : ~m? -# 20| v20_5(void) = ^IndirectReadSideEffect[-1] : &:r20_1, ~m? -# 20| mu20_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r20_1 -# 20| r20_7(bool) = Constant[0] : -# 20| v20_8(void) = ConditionalBranch : r20_7 +# 35| Block 1 +# 35| r35_1(glval) = VariableAddress[x0] : +# 35| mu35_2(String) = Uninitialized[x0] : &:r35_1 +# 35| r35_3(glval) = FunctionAddress[String] : +# 35| v35_4(void) = Call[String] : func:r35_3, this:r35_1 +# 35| mu35_5(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1 +# 35| r35_7(glval) = VariableAddress[x0] : +# 35| r35_8(glval) = FunctionAddress[~String] : +# 35| v35_9(void) = Call[~String] : func:r35_8, this:r35_7 +# 35| mu35_10(unknown) = ^CallSideEffect : ~m? +# 35| v35_11(void) = ^IndirectReadSideEffect[-1] : &:r35_7, ~m? +# 35| mu35_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7 +# 35| r35_13(bool) = Constant[0] : +# 35| v35_14(void) = ConditionalBranch : r35_13 #-----| False -> Block 2 #-----| True (back edge) -> Block 1 -# 22| Block 2 -# 22| r22_1(glval) = VariableAddress[x1] : -# 22| mu22_2(String) = Uninitialized[x1] : &:r22_1 -# 22| r22_3(glval) = FunctionAddress[String] : -# 22| v22_4(void) = Call[String] : func:r22_3, this:r22_1 -# 22| mu22_5(unknown) = ^CallSideEffect : ~m? -# 22| mu22_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r22_1 -# 23| r23_1(glval) = VariableAddress[x1] : -# 23| r23_2(glval) = FunctionAddress[~String] : -# 23| v23_3(void) = Call[~String] : func:r23_2, this:r23_1 -# 23| mu23_4(unknown) = ^CallSideEffect : ~m? -# 23| v23_5(void) = ^IndirectReadSideEffect[-1] : &:r23_1, ~m? -# 23| mu23_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r23_1 -# 23| r23_7(bool) = Constant[0] : -# 23| v23_8(void) = ConditionalBranch : r23_7 +# 35| Block 2 +# 35| r35_15(glval) = VariableAddress[x1] : +# 35| mu35_16(String) = Uninitialized[x1] : &:r35_15 +# 35| r35_17(glval) = FunctionAddress[String] : +# 35| v35_18(void) = Call[String] : func:r35_17, this:r35_15 +# 35| mu35_19(unknown) = ^CallSideEffect : ~m? +# 35| mu35_20(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_15 +# 35| r35_21(glval) = VariableAddress[x1] : +# 35| r35_22(glval) = FunctionAddress[~String] : +# 35| v35_23(void) = Call[~String] : func:r35_22, this:r35_21 +# 35| mu35_24(unknown) = ^CallSideEffect : ~m? +# 35| v35_25(void) = ^IndirectReadSideEffect[-1] : &:r35_21, ~m? +# 35| mu35_26(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_21 +# 35| r35_27(bool) = Constant[0] : +# 35| v35_28(void) = ConditionalBranch : r35_27 #-----| False -> Block 3 #-----| True (back edge) -> Block 2 -# 25| Block 3 -# 25| r25_1(glval) = VariableAddress[x2] : -# 25| mu25_2(String) = Uninitialized[x2] : &:r25_1 -# 25| r25_3(glval) = FunctionAddress[String] : -# 25| v25_4(void) = Call[String] : func:r25_3, this:r25_1 -# 25| mu25_5(unknown) = ^CallSideEffect : ~m? -# 25| mu25_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r25_1 -# 26| r26_1(glval) = VariableAddress[x2] : -# 26| r26_2(glval) = FunctionAddress[~String] : -# 26| v26_3(void) = Call[~String] : func:r26_2, this:r26_1 -# 26| mu26_4(unknown) = ^CallSideEffect : ~m? -# 26| v26_5(void) = ^IndirectReadSideEffect[-1] : &:r26_1, ~m? -# 26| mu26_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r26_1 -# 26| r26_7(bool) = Constant[0] : -# 26| v26_8(void) = ConditionalBranch : r26_7 +# 35| Block 3 +# 35| r35_29(glval) = VariableAddress[x2] : +# 35| mu35_30(String) = Uninitialized[x2] : &:r35_29 +# 35| r35_31(glval) = FunctionAddress[String] : +# 35| v35_32(void) = Call[String] : func:r35_31, this:r35_29 +# 35| mu35_33(unknown) = ^CallSideEffect : ~m? +# 35| mu35_34(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_29 +# 35| r35_35(glval) = VariableAddress[x2] : +# 35| r35_36(glval) = FunctionAddress[~String] : +# 35| v35_37(void) = Call[~String] : func:r35_36, this:r35_35 +# 35| mu35_38(unknown) = ^CallSideEffect : ~m? +# 35| v35_39(void) = ^IndirectReadSideEffect[-1] : &:r35_35, ~m? +# 35| mu35_40(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_35 +# 35| r35_41(bool) = Constant[0] : +# 35| v35_42(void) = ConditionalBranch : r35_41 #-----| False -> Block 4 #-----| True (back edge) -> Block 3 -# 28| Block 4 -# 28| r28_1(glval) = VariableAddress[x3] : -# 28| mu28_2(String) = Uninitialized[x3] : &:r28_1 -# 28| r28_3(glval) = FunctionAddress[String] : -# 28| v28_4(void) = Call[String] : func:r28_3, this:r28_1 -# 28| mu28_5(unknown) = ^CallSideEffect : ~m? -# 28| mu28_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r28_1 -# 29| r29_1(glval) = VariableAddress[x3] : -# 29| r29_2(glval) = FunctionAddress[~String] : -# 29| v29_3(void) = Call[~String] : func:r29_2, this:r29_1 -# 29| mu29_4(unknown) = ^CallSideEffect : ~m? -# 29| v29_5(void) = ^IndirectReadSideEffect[-1] : &:r29_1, ~m? -# 29| mu29_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r29_1 -# 29| r29_7(bool) = Constant[0] : -# 29| v29_8(void) = ConditionalBranch : r29_7 +# 35| Block 4 +# 35| r35_43(glval) = VariableAddress[x3] : +# 35| mu35_44(String) = Uninitialized[x3] : &:r35_43 +# 35| r35_45(glval) = FunctionAddress[String] : +# 35| v35_46(void) = Call[String] : func:r35_45, this:r35_43 +# 35| mu35_47(unknown) = ^CallSideEffect : ~m? +# 35| mu35_48(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_43 +# 35| r35_49(glval) = VariableAddress[x3] : +# 35| r35_50(glval) = FunctionAddress[~String] : +# 35| v35_51(void) = Call[~String] : func:r35_50, this:r35_49 +# 35| mu35_52(unknown) = ^CallSideEffect : ~m? +# 35| v35_53(void) = ^IndirectReadSideEffect[-1] : &:r35_49, ~m? +# 35| mu35_54(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_49 +# 35| r35_55(bool) = Constant[0] : +# 35| v35_56(void) = ConditionalBranch : r35_55 #-----| False -> Block 5 #-----| True (back edge) -> Block 4 -# 31| Block 5 -# 31| r31_1(glval) = VariableAddress[x4] : -# 31| mu31_2(String) = Uninitialized[x4] : &:r31_1 -# 31| r31_3(glval) = FunctionAddress[String] : -# 31| v31_4(void) = Call[String] : func:r31_3, this:r31_1 -# 31| mu31_5(unknown) = ^CallSideEffect : ~m? -# 31| mu31_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r31_1 -# 32| r32_1(glval) = VariableAddress[x4] : -# 32| r32_2(glval) = FunctionAddress[~String] : -# 32| v32_3(void) = Call[~String] : func:r32_2, this:r32_1 -# 32| mu32_4(unknown) = ^CallSideEffect : ~m? -# 32| v32_5(void) = ^IndirectReadSideEffect[-1] : &:r32_1, ~m? -# 32| mu32_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r32_1 -# 32| r32_7(bool) = Constant[0] : -# 32| v32_8(void) = ConditionalBranch : r32_7 +# 35| Block 5 +# 35| r35_57(glval) = VariableAddress[x4] : +# 35| mu35_58(String) = Uninitialized[x4] : &:r35_57 +# 35| r35_59(glval) = FunctionAddress[String] : +# 35| v35_60(void) = Call[String] : func:r35_59, this:r35_57 +# 35| mu35_61(unknown) = ^CallSideEffect : ~m? +# 35| mu35_62(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_57 +# 35| r35_63(glval) = VariableAddress[x4] : +# 35| r35_64(glval) = FunctionAddress[~String] : +# 35| v35_65(void) = Call[~String] : func:r35_64, this:r35_63 +# 35| mu35_66(unknown) = ^CallSideEffect : ~m? +# 35| v35_67(void) = ^IndirectReadSideEffect[-1] : &:r35_63, ~m? +# 35| mu35_68(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_63 +# 35| r35_69(bool) = Constant[0] : +# 35| v35_70(void) = ConditionalBranch : r35_69 #-----| False -> Block 6 #-----| True (back edge) -> Block 5 -# 34| Block 6 -# 34| r34_1(glval) = VariableAddress[x5] : -# 34| mu34_2(String) = Uninitialized[x5] : &:r34_1 -# 34| r34_3(glval) = FunctionAddress[String] : -# 34| v34_4(void) = Call[String] : func:r34_3, this:r34_1 -# 34| mu34_5(unknown) = ^CallSideEffect : ~m? -# 34| mu34_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r34_1 -# 35| r35_1(glval) = VariableAddress[x5] : -# 35| r35_2(glval) = FunctionAddress[~String] : -# 35| v35_3(void) = Call[~String] : func:r35_2, this:r35_1 -# 35| mu35_4(unknown) = ^CallSideEffect : ~m? -# 35| v35_5(void) = ^IndirectReadSideEffect[-1] : &:r35_1, ~m? -# 35| mu35_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1 -# 35| r35_7(bool) = Constant[0] : -# 35| v35_8(void) = ConditionalBranch : r35_7 +# 35| Block 6 +# 35| r35_71(glval) = VariableAddress[x5] : +# 35| mu35_72(String) = Uninitialized[x5] : &:r35_71 +# 35| r35_73(glval) = FunctionAddress[String] : +# 35| v35_74(void) = Call[String] : func:r35_73, this:r35_71 +# 35| mu35_75(unknown) = ^CallSideEffect : ~m? +# 35| mu35_76(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_71 +# 35| r35_77(glval) = VariableAddress[x5] : +# 35| r35_78(glval) = FunctionAddress[~String] : +# 35| v35_79(void) = Call[~String] : func:r35_78, this:r35_77 +# 35| mu35_80(unknown) = ^CallSideEffect : ~m? +# 35| v35_81(void) = ^IndirectReadSideEffect[-1] : &:r35_77, ~m? +# 35| mu35_82(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_77 +# 35| r35_83(bool) = Constant[0] : +# 35| v35_84(void) = ConditionalBranch : r35_83 #-----| False -> Block 7 #-----| True (back edge) -> Block 6 -# 37| Block 7 -# 37| r37_1(glval) = VariableAddress[x6] : -# 37| mu37_2(String) = Uninitialized[x6] : &:r37_1 -# 37| r37_3(glval) = FunctionAddress[String] : -# 37| v37_4(void) = Call[String] : func:r37_3, this:r37_1 -# 37| mu37_5(unknown) = ^CallSideEffect : ~m? -# 37| mu37_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r37_1 -# 38| r38_1(glval) = VariableAddress[x6] : -# 38| r38_2(glval) = FunctionAddress[~String] : -# 38| v38_3(void) = Call[~String] : func:r38_2, this:r38_1 -# 38| mu38_4(unknown) = ^CallSideEffect : ~m? -# 38| v38_5(void) = ^IndirectReadSideEffect[-1] : &:r38_1, ~m? -# 38| mu38_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r38_1 -# 38| r38_7(bool) = Constant[0] : -# 38| v38_8(void) = ConditionalBranch : r38_7 +# 35| Block 7 +# 35| r35_85(glval) = VariableAddress[x6] : +# 35| mu35_86(String) = Uninitialized[x6] : &:r35_85 +# 35| r35_87(glval) = FunctionAddress[String] : +# 35| v35_88(void) = Call[String] : func:r35_87, this:r35_85 +# 35| mu35_89(unknown) = ^CallSideEffect : ~m? +# 35| mu35_90(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_85 +# 35| r35_91(glval) = VariableAddress[x6] : +# 35| r35_92(glval) = FunctionAddress[~String] : +# 35| v35_93(void) = Call[~String] : func:r35_92, this:r35_91 +# 35| mu35_94(unknown) = ^CallSideEffect : ~m? +# 35| v35_95(void) = ^IndirectReadSideEffect[-1] : &:r35_91, ~m? +# 35| mu35_96(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_91 +# 35| r35_97(bool) = Constant[0] : +# 35| v35_98(void) = ConditionalBranch : r35_97 #-----| False -> Block 8 #-----| True (back edge) -> Block 7 -# 40| Block 8 -# 40| r40_1(glval) = VariableAddress[x7] : -# 40| mu40_2(String) = Uninitialized[x7] : &:r40_1 -# 40| r40_3(glval) = FunctionAddress[String] : -# 40| v40_4(void) = Call[String] : func:r40_3, this:r40_1 -# 40| mu40_5(unknown) = ^CallSideEffect : ~m? -# 40| mu40_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r40_1 -# 41| r41_1(glval) = VariableAddress[x7] : -# 41| r41_2(glval) = FunctionAddress[~String] : -# 41| v41_3(void) = Call[~String] : func:r41_2, this:r41_1 -# 41| mu41_4(unknown) = ^CallSideEffect : ~m? -# 41| v41_5(void) = ^IndirectReadSideEffect[-1] : &:r41_1, ~m? -# 41| mu41_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r41_1 -# 41| r41_7(bool) = Constant[0] : -# 41| v41_8(void) = ConditionalBranch : r41_7 +# 35| Block 8 +# 35| r35_99(glval) = VariableAddress[x7] : +# 35| mu35_100(String) = Uninitialized[x7] : &:r35_99 +# 35| r35_101(glval) = FunctionAddress[String] : +# 35| v35_102(void) = Call[String] : func:r35_101, this:r35_99 +# 35| mu35_103(unknown) = ^CallSideEffect : ~m? +# 35| mu35_104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_99 +# 35| r35_105(glval) = VariableAddress[x7] : +# 35| r35_106(glval) = FunctionAddress[~String] : +# 35| v35_107(void) = Call[~String] : func:r35_106, this:r35_105 +# 35| mu35_108(unknown) = ^CallSideEffect : ~m? +# 35| v35_109(void) = ^IndirectReadSideEffect[-1] : &:r35_105, ~m? +# 35| mu35_110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_105 +# 35| r35_111(bool) = Constant[0] : +# 35| v35_112(void) = ConditionalBranch : r35_111 #-----| False -> Block 9 #-----| True (back edge) -> Block 8 -# 43| Block 9 -# 43| r43_1(glval) = VariableAddress[x8] : -# 43| mu43_2(String) = Uninitialized[x8] : &:r43_1 -# 43| r43_3(glval) = FunctionAddress[String] : -# 43| v43_4(void) = Call[String] : func:r43_3, this:r43_1 -# 43| mu43_5(unknown) = ^CallSideEffect : ~m? -# 43| mu43_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r43_1 -# 44| r44_1(glval) = VariableAddress[x8] : -# 44| r44_2(glval) = FunctionAddress[~String] : -# 44| v44_3(void) = Call[~String] : func:r44_2, this:r44_1 -# 44| mu44_4(unknown) = ^CallSideEffect : ~m? -# 44| v44_5(void) = ^IndirectReadSideEffect[-1] : &:r44_1, ~m? -# 44| mu44_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r44_1 -# 44| r44_7(bool) = Constant[0] : -# 44| v44_8(void) = ConditionalBranch : r44_7 +# 35| Block 9 +# 35| r35_113(glval) = VariableAddress[x8] : +# 35| mu35_114(String) = Uninitialized[x8] : &:r35_113 +# 35| r35_115(glval) = FunctionAddress[String] : +# 35| v35_116(void) = Call[String] : func:r35_115, this:r35_113 +# 35| mu35_117(unknown) = ^CallSideEffect : ~m? +# 35| mu35_118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_113 +# 35| r35_119(glval) = VariableAddress[x8] : +# 35| r35_120(glval) = FunctionAddress[~String] : +# 35| v35_121(void) = Call[~String] : func:r35_120, this:r35_119 +# 35| mu35_122(unknown) = ^CallSideEffect : ~m? +# 35| v35_123(void) = ^IndirectReadSideEffect[-1] : &:r35_119, ~m? +# 35| mu35_124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_119 +# 35| r35_125(bool) = Constant[0] : +# 35| v35_126(void) = ConditionalBranch : r35_125 #-----| False -> Block 10 #-----| True (back edge) -> Block 9 -# 46| Block 10 -# 46| r46_1(glval) = VariableAddress[x9] : -# 46| mu46_2(String) = Uninitialized[x9] : &:r46_1 -# 46| r46_3(glval) = FunctionAddress[String] : -# 46| v46_4(void) = Call[String] : func:r46_3, this:r46_1 -# 46| mu46_5(unknown) = ^CallSideEffect : ~m? -# 46| mu46_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r46_1 -# 47| r47_1(glval) = VariableAddress[x9] : -# 47| r47_2(glval) = FunctionAddress[~String] : -# 47| v47_3(void) = Call[~String] : func:r47_2, this:r47_1 -# 47| mu47_4(unknown) = ^CallSideEffect : ~m? -# 47| v47_5(void) = ^IndirectReadSideEffect[-1] : &:r47_1, ~m? -# 47| mu47_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r47_1 -# 47| r47_7(bool) = Constant[0] : -# 47| v47_8(void) = ConditionalBranch : r47_7 +# 35| Block 10 +# 35| r35_127(glval) = VariableAddress[x9] : +# 35| mu35_128(String) = Uninitialized[x9] : &:r35_127 +# 35| r35_129(glval) = FunctionAddress[String] : +# 35| v35_130(void) = Call[String] : func:r35_129, this:r35_127 +# 35| mu35_131(unknown) = ^CallSideEffect : ~m? +# 35| mu35_132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_127 +# 35| r35_133(glval) = VariableAddress[x9] : +# 35| r35_134(glval) = FunctionAddress[~String] : +# 35| v35_135(void) = Call[~String] : func:r35_134, this:r35_133 +# 35| mu35_136(unknown) = ^CallSideEffect : ~m? +# 35| v35_137(void) = ^IndirectReadSideEffect[-1] : &:r35_133, ~m? +# 35| mu35_138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_133 +# 35| r35_139(bool) = Constant[0] : +# 35| v35_140(void) = ConditionalBranch : r35_139 #-----| False -> Block 11 #-----| True (back edge) -> Block 10 -# 49| Block 11 -# 49| r49_1(glval) = VariableAddress[x10] : -# 49| mu49_2(String) = Uninitialized[x10] : &:r49_1 -# 49| r49_3(glval) = FunctionAddress[String] : -# 49| v49_4(void) = Call[String] : func:r49_3, this:r49_1 -# 49| mu49_5(unknown) = ^CallSideEffect : ~m? -# 49| mu49_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r49_1 -# 50| r50_1(glval) = VariableAddress[x10] : -# 50| r50_2(glval) = FunctionAddress[~String] : -# 50| v50_3(void) = Call[~String] : func:r50_2, this:r50_1 -# 50| mu50_4(unknown) = ^CallSideEffect : ~m? -# 50| v50_5(void) = ^IndirectReadSideEffect[-1] : &:r50_1, ~m? -# 50| mu50_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r50_1 -# 50| r50_7(bool) = Constant[0] : -# 50| v50_8(void) = ConditionalBranch : r50_7 +# 35| Block 11 +# 35| r35_141(glval) = VariableAddress[x10] : +# 35| mu35_142(String) = Uninitialized[x10] : &:r35_141 +# 35| r35_143(glval) = FunctionAddress[String] : +# 35| v35_144(void) = Call[String] : func:r35_143, this:r35_141 +# 35| mu35_145(unknown) = ^CallSideEffect : ~m? +# 35| mu35_146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_141 +# 35| r35_147(glval) = VariableAddress[x10] : +# 35| r35_148(glval) = FunctionAddress[~String] : +# 35| v35_149(void) = Call[~String] : func:r35_148, this:r35_147 +# 35| mu35_150(unknown) = ^CallSideEffect : ~m? +# 35| v35_151(void) = ^IndirectReadSideEffect[-1] : &:r35_147, ~m? +# 35| mu35_152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_147 +# 35| r35_153(bool) = Constant[0] : +# 35| v35_154(void) = ConditionalBranch : r35_153 #-----| False -> Block 12 #-----| True (back edge) -> Block 11 -# 52| Block 12 -# 52| r52_1(glval) = VariableAddress[x11] : -# 52| mu52_2(String) = Uninitialized[x11] : &:r52_1 -# 52| r52_3(glval) = FunctionAddress[String] : -# 52| v52_4(void) = Call[String] : func:r52_3, this:r52_1 -# 52| mu52_5(unknown) = ^CallSideEffect : ~m? -# 52| mu52_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r52_1 -# 53| r53_1(glval) = VariableAddress[x11] : -# 53| r53_2(glval) = FunctionAddress[~String] : -# 53| v53_3(void) = Call[~String] : func:r53_2, this:r53_1 -# 53| mu53_4(unknown) = ^CallSideEffect : ~m? -# 53| v53_5(void) = ^IndirectReadSideEffect[-1] : &:r53_1, ~m? -# 53| mu53_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r53_1 -# 53| r53_7(bool) = Constant[0] : -# 53| v53_8(void) = ConditionalBranch : r53_7 +# 35| Block 12 +# 35| r35_155(glval) = VariableAddress[x11] : +# 35| mu35_156(String) = Uninitialized[x11] : &:r35_155 +# 35| r35_157(glval) = FunctionAddress[String] : +# 35| v35_158(void) = Call[String] : func:r35_157, this:r35_155 +# 35| mu35_159(unknown) = ^CallSideEffect : ~m? +# 35| mu35_160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_155 +# 35| r35_161(glval) = VariableAddress[x11] : +# 35| r35_162(glval) = FunctionAddress[~String] : +# 35| v35_163(void) = Call[~String] : func:r35_162, this:r35_161 +# 35| mu35_164(unknown) = ^CallSideEffect : ~m? +# 35| v35_165(void) = ^IndirectReadSideEffect[-1] : &:r35_161, ~m? +# 35| mu35_166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_161 +# 35| r35_167(bool) = Constant[0] : +# 35| v35_168(void) = ConditionalBranch : r35_167 #-----| False -> Block 13 #-----| True (back edge) -> Block 12 -# 55| Block 13 -# 55| r55_1(glval) = VariableAddress[x12] : -# 55| mu55_2(String) = Uninitialized[x12] : &:r55_1 -# 55| r55_3(glval) = FunctionAddress[String] : -# 55| v55_4(void) = Call[String] : func:r55_3, this:r55_1 -# 55| mu55_5(unknown) = ^CallSideEffect : ~m? -# 55| mu55_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r55_1 -# 56| r56_1(glval) = VariableAddress[x12] : -# 56| r56_2(glval) = FunctionAddress[~String] : -# 56| v56_3(void) = Call[~String] : func:r56_2, this:r56_1 -# 56| mu56_4(unknown) = ^CallSideEffect : ~m? -# 56| v56_5(void) = ^IndirectReadSideEffect[-1] : &:r56_1, ~m? -# 56| mu56_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r56_1 -# 56| r56_7(bool) = Constant[0] : -# 56| v56_8(void) = ConditionalBranch : r56_7 +# 35| Block 13 +# 35| r35_169(glval) = VariableAddress[x12] : +# 35| mu35_170(String) = Uninitialized[x12] : &:r35_169 +# 35| r35_171(glval) = FunctionAddress[String] : +# 35| v35_172(void) = Call[String] : func:r35_171, this:r35_169 +# 35| mu35_173(unknown) = ^CallSideEffect : ~m? +# 35| mu35_174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_169 +# 35| r35_175(glval) = VariableAddress[x12] : +# 35| r35_176(glval) = FunctionAddress[~String] : +# 35| v35_177(void) = Call[~String] : func:r35_176, this:r35_175 +# 35| mu35_178(unknown) = ^CallSideEffect : ~m? +# 35| v35_179(void) = ^IndirectReadSideEffect[-1] : &:r35_175, ~m? +# 35| mu35_180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_175 +# 35| r35_181(bool) = Constant[0] : +# 35| v35_182(void) = ConditionalBranch : r35_181 #-----| False -> Block 14 #-----| True (back edge) -> Block 13 -# 58| Block 14 -# 58| r58_1(glval) = VariableAddress[x13] : -# 58| mu58_2(String) = Uninitialized[x13] : &:r58_1 -# 58| r58_3(glval) = FunctionAddress[String] : -# 58| v58_4(void) = Call[String] : func:r58_3, this:r58_1 -# 58| mu58_5(unknown) = ^CallSideEffect : ~m? -# 58| mu58_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r58_1 -# 59| r59_1(glval) = VariableAddress[x13] : -# 59| r59_2(glval) = FunctionAddress[~String] : -# 59| v59_3(void) = Call[~String] : func:r59_2, this:r59_1 -# 59| mu59_4(unknown) = ^CallSideEffect : ~m? -# 59| v59_5(void) = ^IndirectReadSideEffect[-1] : &:r59_1, ~m? -# 59| mu59_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r59_1 -# 59| r59_7(bool) = Constant[0] : -# 59| v59_8(void) = ConditionalBranch : r59_7 +# 35| Block 14 +# 35| r35_183(glval) = VariableAddress[x13] : +# 35| mu35_184(String) = Uninitialized[x13] : &:r35_183 +# 35| r35_185(glval) = FunctionAddress[String] : +# 35| v35_186(void) = Call[String] : func:r35_185, this:r35_183 +# 35| mu35_187(unknown) = ^CallSideEffect : ~m? +# 35| mu35_188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_183 +# 35| r35_189(glval) = VariableAddress[x13] : +# 35| r35_190(glval) = FunctionAddress[~String] : +# 35| v35_191(void) = Call[~String] : func:r35_190, this:r35_189 +# 35| mu35_192(unknown) = ^CallSideEffect : ~m? +# 35| v35_193(void) = ^IndirectReadSideEffect[-1] : &:r35_189, ~m? +# 35| mu35_194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_189 +# 35| r35_195(bool) = Constant[0] : +# 35| v35_196(void) = ConditionalBranch : r35_195 #-----| False -> Block 15 #-----| True (back edge) -> Block 14 -# 61| Block 15 -# 61| r61_1(glval) = VariableAddress[x14] : -# 61| mu61_2(String) = Uninitialized[x14] : &:r61_1 -# 61| r61_3(glval) = FunctionAddress[String] : -# 61| v61_4(void) = Call[String] : func:r61_3, this:r61_1 -# 61| mu61_5(unknown) = ^CallSideEffect : ~m? -# 61| mu61_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r61_1 -# 62| r62_1(glval) = VariableAddress[x14] : -# 62| r62_2(glval) = FunctionAddress[~String] : -# 62| v62_3(void) = Call[~String] : func:r62_2, this:r62_1 -# 62| mu62_4(unknown) = ^CallSideEffect : ~m? -# 62| v62_5(void) = ^IndirectReadSideEffect[-1] : &:r62_1, ~m? -# 62| mu62_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r62_1 -# 62| r62_7(bool) = Constant[0] : -# 62| v62_8(void) = ConditionalBranch : r62_7 +# 35| Block 15 +# 35| r35_197(glval) = VariableAddress[x14] : +# 35| mu35_198(String) = Uninitialized[x14] : &:r35_197 +# 35| r35_199(glval) = FunctionAddress[String] : +# 35| v35_200(void) = Call[String] : func:r35_199, this:r35_197 +# 35| mu35_201(unknown) = ^CallSideEffect : ~m? +# 35| mu35_202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_197 +# 35| r35_203(glval) = VariableAddress[x14] : +# 35| r35_204(glval) = FunctionAddress[~String] : +# 35| v35_205(void) = Call[~String] : func:r35_204, this:r35_203 +# 35| mu35_206(unknown) = ^CallSideEffect : ~m? +# 35| v35_207(void) = ^IndirectReadSideEffect[-1] : &:r35_203, ~m? +# 35| mu35_208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_203 +# 35| r35_209(bool) = Constant[0] : +# 35| v35_210(void) = ConditionalBranch : r35_209 #-----| False -> Block 16 #-----| True (back edge) -> Block 15 -# 64| Block 16 -# 64| r64_1(glval) = VariableAddress[x15] : -# 64| mu64_2(String) = Uninitialized[x15] : &:r64_1 -# 64| r64_3(glval) = FunctionAddress[String] : -# 64| v64_4(void) = Call[String] : func:r64_3, this:r64_1 -# 64| mu64_5(unknown) = ^CallSideEffect : ~m? -# 64| mu64_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r64_1 -# 65| r65_1(glval) = VariableAddress[x15] : -# 65| r65_2(glval) = FunctionAddress[~String] : -# 65| v65_3(void) = Call[~String] : func:r65_2, this:r65_1 -# 65| mu65_4(unknown) = ^CallSideEffect : ~m? -# 65| v65_5(void) = ^IndirectReadSideEffect[-1] : &:r65_1, ~m? -# 65| mu65_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r65_1 -# 65| r65_7(bool) = Constant[0] : -# 65| v65_8(void) = ConditionalBranch : r65_7 +# 35| Block 16 +# 35| r35_211(glval) = VariableAddress[x15] : +# 35| mu35_212(String) = Uninitialized[x15] : &:r35_211 +# 35| r35_213(glval) = FunctionAddress[String] : +# 35| v35_214(void) = Call[String] : func:r35_213, this:r35_211 +# 35| mu35_215(unknown) = ^CallSideEffect : ~m? +# 35| mu35_216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_211 +# 35| r35_217(glval) = VariableAddress[x15] : +# 35| r35_218(glval) = FunctionAddress[~String] : +# 35| v35_219(void) = Call[~String] : func:r35_218, this:r35_217 +# 35| mu35_220(unknown) = ^CallSideEffect : ~m? +# 35| v35_221(void) = ^IndirectReadSideEffect[-1] : &:r35_217, ~m? +# 35| mu35_222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_217 +# 35| r35_223(bool) = Constant[0] : +# 35| v35_224(void) = ConditionalBranch : r35_223 #-----| False -> Block 17 #-----| True (back edge) -> Block 16 -# 67| Block 17 -# 67| r67_1(glval) = VariableAddress[x16] : -# 67| mu67_2(String) = Uninitialized[x16] : &:r67_1 -# 67| r67_3(glval) = FunctionAddress[String] : -# 67| v67_4(void) = Call[String] : func:r67_3, this:r67_1 -# 67| mu67_5(unknown) = ^CallSideEffect : ~m? -# 67| mu67_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r67_1 -# 68| r68_1(glval) = VariableAddress[x16] : -# 68| r68_2(glval) = FunctionAddress[~String] : -# 68| v68_3(void) = Call[~String] : func:r68_2, this:r68_1 -# 68| mu68_4(unknown) = ^CallSideEffect : ~m? -# 68| v68_5(void) = ^IndirectReadSideEffect[-1] : &:r68_1, ~m? -# 68| mu68_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r68_1 -# 68| r68_7(bool) = Constant[0] : -# 68| v68_8(void) = ConditionalBranch : r68_7 +# 35| Block 17 +# 35| r35_225(glval) = VariableAddress[x16] : +# 35| mu35_226(String) = Uninitialized[x16] : &:r35_225 +# 35| r35_227(glval) = FunctionAddress[String] : +# 35| v35_228(void) = Call[String] : func:r35_227, this:r35_225 +# 35| mu35_229(unknown) = ^CallSideEffect : ~m? +# 35| mu35_230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_225 +# 35| r35_231(glval) = VariableAddress[x16] : +# 35| r35_232(glval) = FunctionAddress[~String] : +# 35| v35_233(void) = Call[~String] : func:r35_232, this:r35_231 +# 35| mu35_234(unknown) = ^CallSideEffect : ~m? +# 35| v35_235(void) = ^IndirectReadSideEffect[-1] : &:r35_231, ~m? +# 35| mu35_236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_231 +# 35| r35_237(bool) = Constant[0] : +# 35| v35_238(void) = ConditionalBranch : r35_237 #-----| False -> Block 18 #-----| True (back edge) -> Block 17 -# 70| Block 18 -# 70| r70_1(glval) = VariableAddress[x17] : -# 70| mu70_2(String) = Uninitialized[x17] : &:r70_1 -# 70| r70_3(glval) = FunctionAddress[String] : -# 70| v70_4(void) = Call[String] : func:r70_3, this:r70_1 -# 70| mu70_5(unknown) = ^CallSideEffect : ~m? -# 70| mu70_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r70_1 -# 71| r71_1(glval) = VariableAddress[x17] : -# 71| r71_2(glval) = FunctionAddress[~String] : -# 71| v71_3(void) = Call[~String] : func:r71_2, this:r71_1 -# 71| mu71_4(unknown) = ^CallSideEffect : ~m? -# 71| v71_5(void) = ^IndirectReadSideEffect[-1] : &:r71_1, ~m? -# 71| mu71_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r71_1 -# 71| r71_7(bool) = Constant[0] : -# 71| v71_8(void) = ConditionalBranch : r71_7 +# 35| Block 18 +# 35| r35_239(glval) = VariableAddress[x17] : +# 35| mu35_240(String) = Uninitialized[x17] : &:r35_239 +# 35| r35_241(glval) = FunctionAddress[String] : +# 35| v35_242(void) = Call[String] : func:r35_241, this:r35_239 +# 35| mu35_243(unknown) = ^CallSideEffect : ~m? +# 35| mu35_244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_239 +# 35| r35_245(glval) = VariableAddress[x17] : +# 35| r35_246(glval) = FunctionAddress[~String] : +# 35| v35_247(void) = Call[~String] : func:r35_246, this:r35_245 +# 35| mu35_248(unknown) = ^CallSideEffect : ~m? +# 35| v35_249(void) = ^IndirectReadSideEffect[-1] : &:r35_245, ~m? +# 35| mu35_250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_245 +# 35| r35_251(bool) = Constant[0] : +# 35| v35_252(void) = ConditionalBranch : r35_251 #-----| False -> Block 19 #-----| True (back edge) -> Block 18 -# 73| Block 19 -# 73| r73_1(glval) = VariableAddress[x18] : -# 73| mu73_2(String) = Uninitialized[x18] : &:r73_1 -# 73| r73_3(glval) = FunctionAddress[String] : -# 73| v73_4(void) = Call[String] : func:r73_3, this:r73_1 -# 73| mu73_5(unknown) = ^CallSideEffect : ~m? -# 73| mu73_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r73_1 -# 74| r74_1(glval) = VariableAddress[x18] : -# 74| r74_2(glval) = FunctionAddress[~String] : -# 74| v74_3(void) = Call[~String] : func:r74_2, this:r74_1 -# 74| mu74_4(unknown) = ^CallSideEffect : ~m? -# 74| v74_5(void) = ^IndirectReadSideEffect[-1] : &:r74_1, ~m? -# 74| mu74_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r74_1 -# 74| r74_7(bool) = Constant[0] : -# 74| v74_8(void) = ConditionalBranch : r74_7 +# 35| Block 19 +# 35| r35_253(glval) = VariableAddress[x18] : +# 35| mu35_254(String) = Uninitialized[x18] : &:r35_253 +# 35| r35_255(glval) = FunctionAddress[String] : +# 35| v35_256(void) = Call[String] : func:r35_255, this:r35_253 +# 35| mu35_257(unknown) = ^CallSideEffect : ~m? +# 35| mu35_258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_253 +# 35| r35_259(glval) = VariableAddress[x18] : +# 35| r35_260(glval) = FunctionAddress[~String] : +# 35| v35_261(void) = Call[~String] : func:r35_260, this:r35_259 +# 35| mu35_262(unknown) = ^CallSideEffect : ~m? +# 35| v35_263(void) = ^IndirectReadSideEffect[-1] : &:r35_259, ~m? +# 35| mu35_264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_259 +# 35| r35_265(bool) = Constant[0] : +# 35| v35_266(void) = ConditionalBranch : r35_265 #-----| False -> Block 20 #-----| True (back edge) -> Block 19 -# 76| Block 20 -# 76| r76_1(glval) = VariableAddress[x19] : -# 76| mu76_2(String) = Uninitialized[x19] : &:r76_1 -# 76| r76_3(glval) = FunctionAddress[String] : -# 76| v76_4(void) = Call[String] : func:r76_3, this:r76_1 -# 76| mu76_5(unknown) = ^CallSideEffect : ~m? -# 76| mu76_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r76_1 -# 77| r77_1(glval) = VariableAddress[x19] : -# 77| r77_2(glval) = FunctionAddress[~String] : -# 77| v77_3(void) = Call[~String] : func:r77_2, this:r77_1 -# 77| mu77_4(unknown) = ^CallSideEffect : ~m? -# 77| v77_5(void) = ^IndirectReadSideEffect[-1] : &:r77_1, ~m? -# 77| mu77_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r77_1 -# 77| r77_7(bool) = Constant[0] : -# 77| v77_8(void) = ConditionalBranch : r77_7 +# 35| Block 20 +# 35| r35_267(glval) = VariableAddress[x19] : +# 35| mu35_268(String) = Uninitialized[x19] : &:r35_267 +# 35| r35_269(glval) = FunctionAddress[String] : +# 35| v35_270(void) = Call[String] : func:r35_269, this:r35_267 +# 35| mu35_271(unknown) = ^CallSideEffect : ~m? +# 35| mu35_272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_267 +# 35| r35_273(glval) = VariableAddress[x19] : +# 35| r35_274(glval) = FunctionAddress[~String] : +# 35| v35_275(void) = Call[~String] : func:r35_274, this:r35_273 +# 35| mu35_276(unknown) = ^CallSideEffect : ~m? +# 35| v35_277(void) = ^IndirectReadSideEffect[-1] : &:r35_273, ~m? +# 35| mu35_278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_273 +# 35| r35_279(bool) = Constant[0] : +# 35| v35_280(void) = ConditionalBranch : r35_279 #-----| False -> Block 21 #-----| True (back edge) -> Block 20 -# 79| Block 21 -# 79| r79_1(glval) = VariableAddress[x20] : -# 79| mu79_2(String) = Uninitialized[x20] : &:r79_1 -# 79| r79_3(glval) = FunctionAddress[String] : -# 79| v79_4(void) = Call[String] : func:r79_3, this:r79_1 -# 79| mu79_5(unknown) = ^CallSideEffect : ~m? -# 79| mu79_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r79_1 -# 80| r80_1(glval) = VariableAddress[x20] : -# 80| r80_2(glval) = FunctionAddress[~String] : -# 80| v80_3(void) = Call[~String] : func:r80_2, this:r80_1 -# 80| mu80_4(unknown) = ^CallSideEffect : ~m? -# 80| v80_5(void) = ^IndirectReadSideEffect[-1] : &:r80_1, ~m? -# 80| mu80_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r80_1 -# 80| r80_7(bool) = Constant[0] : -# 80| v80_8(void) = ConditionalBranch : r80_7 +# 35| Block 21 +# 35| r35_281(glval) = VariableAddress[x20] : +# 35| mu35_282(String) = Uninitialized[x20] : &:r35_281 +# 35| r35_283(glval) = FunctionAddress[String] : +# 35| v35_284(void) = Call[String] : func:r35_283, this:r35_281 +# 35| mu35_285(unknown) = ^CallSideEffect : ~m? +# 35| mu35_286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_281 +# 35| r35_287(glval) = VariableAddress[x20] : +# 35| r35_288(glval) = FunctionAddress[~String] : +# 35| v35_289(void) = Call[~String] : func:r35_288, this:r35_287 +# 35| mu35_290(unknown) = ^CallSideEffect : ~m? +# 35| v35_291(void) = ^IndirectReadSideEffect[-1] : &:r35_287, ~m? +# 35| mu35_292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_287 +# 35| r35_293(bool) = Constant[0] : +# 35| v35_294(void) = ConditionalBranch : r35_293 #-----| False -> Block 22 #-----| True (back edge) -> Block 21 -# 82| Block 22 -# 82| r82_1(glval) = VariableAddress[x21] : -# 82| mu82_2(String) = Uninitialized[x21] : &:r82_1 -# 82| r82_3(glval) = FunctionAddress[String] : -# 82| v82_4(void) = Call[String] : func:r82_3, this:r82_1 -# 82| mu82_5(unknown) = ^CallSideEffect : ~m? -# 82| mu82_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r82_1 -# 83| r83_1(glval) = VariableAddress[x21] : -# 83| r83_2(glval) = FunctionAddress[~String] : -# 83| v83_3(void) = Call[~String] : func:r83_2, this:r83_1 -# 83| mu83_4(unknown) = ^CallSideEffect : ~m? -# 83| v83_5(void) = ^IndirectReadSideEffect[-1] : &:r83_1, ~m? -# 83| mu83_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r83_1 -# 83| r83_7(bool) = Constant[0] : -# 83| v83_8(void) = ConditionalBranch : r83_7 +# 35| Block 22 +# 35| r35_295(glval) = VariableAddress[x21] : +# 35| mu35_296(String) = Uninitialized[x21] : &:r35_295 +# 35| r35_297(glval) = FunctionAddress[String] : +# 35| v35_298(void) = Call[String] : func:r35_297, this:r35_295 +# 35| mu35_299(unknown) = ^CallSideEffect : ~m? +# 35| mu35_300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_295 +# 35| r35_301(glval) = VariableAddress[x21] : +# 35| r35_302(glval) = FunctionAddress[~String] : +# 35| v35_303(void) = Call[~String] : func:r35_302, this:r35_301 +# 35| mu35_304(unknown) = ^CallSideEffect : ~m? +# 35| v35_305(void) = ^IndirectReadSideEffect[-1] : &:r35_301, ~m? +# 35| mu35_306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_301 +# 35| r35_307(bool) = Constant[0] : +# 35| v35_308(void) = ConditionalBranch : r35_307 #-----| False -> Block 23 #-----| True (back edge) -> Block 22 -# 85| Block 23 -# 85| r85_1(glval) = VariableAddress[x22] : -# 85| mu85_2(String) = Uninitialized[x22] : &:r85_1 -# 85| r85_3(glval) = FunctionAddress[String] : -# 85| v85_4(void) = Call[String] : func:r85_3, this:r85_1 -# 85| mu85_5(unknown) = ^CallSideEffect : ~m? -# 85| mu85_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r85_1 -# 86| r86_1(glval) = VariableAddress[x22] : -# 86| r86_2(glval) = FunctionAddress[~String] : -# 86| v86_3(void) = Call[~String] : func:r86_2, this:r86_1 -# 86| mu86_4(unknown) = ^CallSideEffect : ~m? -# 86| v86_5(void) = ^IndirectReadSideEffect[-1] : &:r86_1, ~m? -# 86| mu86_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r86_1 -# 86| r86_7(bool) = Constant[0] : -# 86| v86_8(void) = ConditionalBranch : r86_7 +# 35| Block 23 +# 35| r35_309(glval) = VariableAddress[x22] : +# 35| mu35_310(String) = Uninitialized[x22] : &:r35_309 +# 35| r35_311(glval) = FunctionAddress[String] : +# 35| v35_312(void) = Call[String] : func:r35_311, this:r35_309 +# 35| mu35_313(unknown) = ^CallSideEffect : ~m? +# 35| mu35_314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_309 +# 35| r35_315(glval) = VariableAddress[x22] : +# 35| r35_316(glval) = FunctionAddress[~String] : +# 35| v35_317(void) = Call[~String] : func:r35_316, this:r35_315 +# 35| mu35_318(unknown) = ^CallSideEffect : ~m? +# 35| v35_319(void) = ^IndirectReadSideEffect[-1] : &:r35_315, ~m? +# 35| mu35_320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_315 +# 35| r35_321(bool) = Constant[0] : +# 35| v35_322(void) = ConditionalBranch : r35_321 #-----| False -> Block 24 #-----| True (back edge) -> Block 23 -# 88| Block 24 -# 88| r88_1(glval) = VariableAddress[x23] : -# 88| mu88_2(String) = Uninitialized[x23] : &:r88_1 -# 88| r88_3(glval) = FunctionAddress[String] : -# 88| v88_4(void) = Call[String] : func:r88_3, this:r88_1 -# 88| mu88_5(unknown) = ^CallSideEffect : ~m? -# 88| mu88_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r88_1 -# 89| r89_1(glval) = VariableAddress[x23] : -# 89| r89_2(glval) = FunctionAddress[~String] : -# 89| v89_3(void) = Call[~String] : func:r89_2, this:r89_1 -# 89| mu89_4(unknown) = ^CallSideEffect : ~m? -# 89| v89_5(void) = ^IndirectReadSideEffect[-1] : &:r89_1, ~m? -# 89| mu89_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r89_1 -# 89| r89_7(bool) = Constant[0] : -# 89| v89_8(void) = ConditionalBranch : r89_7 +# 35| Block 24 +# 35| r35_323(glval) = VariableAddress[x23] : +# 35| mu35_324(String) = Uninitialized[x23] : &:r35_323 +# 35| r35_325(glval) = FunctionAddress[String] : +# 35| v35_326(void) = Call[String] : func:r35_325, this:r35_323 +# 35| mu35_327(unknown) = ^CallSideEffect : ~m? +# 35| mu35_328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_323 +# 35| r35_329(glval) = VariableAddress[x23] : +# 35| r35_330(glval) = FunctionAddress[~String] : +# 35| v35_331(void) = Call[~String] : func:r35_330, this:r35_329 +# 35| mu35_332(unknown) = ^CallSideEffect : ~m? +# 35| v35_333(void) = ^IndirectReadSideEffect[-1] : &:r35_329, ~m? +# 35| mu35_334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_329 +# 35| r35_335(bool) = Constant[0] : +# 35| v35_336(void) = ConditionalBranch : r35_335 #-----| False -> Block 25 #-----| True (back edge) -> Block 24 -# 91| Block 25 -# 91| r91_1(glval) = VariableAddress[x24] : -# 91| mu91_2(String) = Uninitialized[x24] : &:r91_1 -# 91| r91_3(glval) = FunctionAddress[String] : -# 91| v91_4(void) = Call[String] : func:r91_3, this:r91_1 -# 91| mu91_5(unknown) = ^CallSideEffect : ~m? -# 91| mu91_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r91_1 -# 92| r92_1(glval) = VariableAddress[x24] : -# 92| r92_2(glval) = FunctionAddress[~String] : -# 92| v92_3(void) = Call[~String] : func:r92_2, this:r92_1 -# 92| mu92_4(unknown) = ^CallSideEffect : ~m? -# 92| v92_5(void) = ^IndirectReadSideEffect[-1] : &:r92_1, ~m? -# 92| mu92_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r92_1 -# 92| r92_7(bool) = Constant[0] : -# 92| v92_8(void) = ConditionalBranch : r92_7 +# 35| Block 25 +# 35| r35_337(glval) = VariableAddress[x24] : +# 35| mu35_338(String) = Uninitialized[x24] : &:r35_337 +# 35| r35_339(glval) = FunctionAddress[String] : +# 35| v35_340(void) = Call[String] : func:r35_339, this:r35_337 +# 35| mu35_341(unknown) = ^CallSideEffect : ~m? +# 35| mu35_342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_337 +# 35| r35_343(glval) = VariableAddress[x24] : +# 35| r35_344(glval) = FunctionAddress[~String] : +# 35| v35_345(void) = Call[~String] : func:r35_344, this:r35_343 +# 35| mu35_346(unknown) = ^CallSideEffect : ~m? +# 35| v35_347(void) = ^IndirectReadSideEffect[-1] : &:r35_343, ~m? +# 35| mu35_348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_343 +# 35| r35_349(bool) = Constant[0] : +# 35| v35_350(void) = ConditionalBranch : r35_349 #-----| False -> Block 26 #-----| True (back edge) -> Block 25 -# 94| Block 26 -# 94| r94_1(glval) = VariableAddress[x25] : -# 94| mu94_2(String) = Uninitialized[x25] : &:r94_1 -# 94| r94_3(glval) = FunctionAddress[String] : -# 94| v94_4(void) = Call[String] : func:r94_3, this:r94_1 -# 94| mu94_5(unknown) = ^CallSideEffect : ~m? -# 94| mu94_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r94_1 -# 95| r95_1(glval) = VariableAddress[x25] : -# 95| r95_2(glval) = FunctionAddress[~String] : -# 95| v95_3(void) = Call[~String] : func:r95_2, this:r95_1 -# 95| mu95_4(unknown) = ^CallSideEffect : ~m? -# 95| v95_5(void) = ^IndirectReadSideEffect[-1] : &:r95_1, ~m? -# 95| mu95_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r95_1 -# 95| r95_7(bool) = Constant[0] : -# 95| v95_8(void) = ConditionalBranch : r95_7 +# 35| Block 26 +# 35| r35_351(glval) = VariableAddress[x25] : +# 35| mu35_352(String) = Uninitialized[x25] : &:r35_351 +# 35| r35_353(glval) = FunctionAddress[String] : +# 35| v35_354(void) = Call[String] : func:r35_353, this:r35_351 +# 35| mu35_355(unknown) = ^CallSideEffect : ~m? +# 35| mu35_356(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_351 +# 35| r35_357(glval) = VariableAddress[x25] : +# 35| r35_358(glval) = FunctionAddress[~String] : +# 35| v35_359(void) = Call[~String] : func:r35_358, this:r35_357 +# 35| mu35_360(unknown) = ^CallSideEffect : ~m? +# 35| v35_361(void) = ^IndirectReadSideEffect[-1] : &:r35_357, ~m? +# 35| mu35_362(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_357 +# 35| r35_363(bool) = Constant[0] : +# 35| v35_364(void) = ConditionalBranch : r35_363 #-----| False -> Block 27 #-----| True (back edge) -> Block 26 -# 97| Block 27 -# 97| r97_1(glval) = VariableAddress[x26] : -# 97| mu97_2(String) = Uninitialized[x26] : &:r97_1 -# 97| r97_3(glval) = FunctionAddress[String] : -# 97| v97_4(void) = Call[String] : func:r97_3, this:r97_1 -# 97| mu97_5(unknown) = ^CallSideEffect : ~m? -# 97| mu97_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r97_1 -# 98| r98_1(glval) = VariableAddress[x26] : -# 98| r98_2(glval) = FunctionAddress[~String] : -# 98| v98_3(void) = Call[~String] : func:r98_2, this:r98_1 -# 98| mu98_4(unknown) = ^CallSideEffect : ~m? -# 98| v98_5(void) = ^IndirectReadSideEffect[-1] : &:r98_1, ~m? -# 98| mu98_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r98_1 -# 98| r98_7(bool) = Constant[0] : -# 98| v98_8(void) = ConditionalBranch : r98_7 +# 35| Block 27 +# 35| r35_365(glval) = VariableAddress[x26] : +# 35| mu35_366(String) = Uninitialized[x26] : &:r35_365 +# 35| r35_367(glval) = FunctionAddress[String] : +# 35| v35_368(void) = Call[String] : func:r35_367, this:r35_365 +# 35| mu35_369(unknown) = ^CallSideEffect : ~m? +# 35| mu35_370(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_365 +# 35| r35_371(glval) = VariableAddress[x26] : +# 35| r35_372(glval) = FunctionAddress[~String] : +# 35| v35_373(void) = Call[~String] : func:r35_372, this:r35_371 +# 35| mu35_374(unknown) = ^CallSideEffect : ~m? +# 35| v35_375(void) = ^IndirectReadSideEffect[-1] : &:r35_371, ~m? +# 35| mu35_376(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_371 +# 35| r35_377(bool) = Constant[0] : +# 35| v35_378(void) = ConditionalBranch : r35_377 #-----| False -> Block 28 #-----| True (back edge) -> Block 27 -# 100| Block 28 -# 100| r100_1(glval) = VariableAddress[x27] : -# 100| mu100_2(String) = Uninitialized[x27] : &:r100_1 -# 100| r100_3(glval) = FunctionAddress[String] : -# 100| v100_4(void) = Call[String] : func:r100_3, this:r100_1 -# 100| mu100_5(unknown) = ^CallSideEffect : ~m? -# 100| mu100_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 -# 101| r101_1(glval) = VariableAddress[x27] : -# 101| r101_2(glval) = FunctionAddress[~String] : -# 101| v101_3(void) = Call[~String] : func:r101_2, this:r101_1 -# 101| mu101_4(unknown) = ^CallSideEffect : ~m? -# 101| v101_5(void) = ^IndirectReadSideEffect[-1] : &:r101_1, ~m? -# 101| mu101_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r101_1 -# 101| r101_7(bool) = Constant[0] : -# 101| v101_8(void) = ConditionalBranch : r101_7 +# 35| Block 28 +# 35| r35_379(glval) = VariableAddress[x27] : +# 35| mu35_380(String) = Uninitialized[x27] : &:r35_379 +# 35| r35_381(glval) = FunctionAddress[String] : +# 35| v35_382(void) = Call[String] : func:r35_381, this:r35_379 +# 35| mu35_383(unknown) = ^CallSideEffect : ~m? +# 35| mu35_384(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_379 +# 35| r35_385(glval) = VariableAddress[x27] : +# 35| r35_386(glval) = FunctionAddress[~String] : +# 35| v35_387(void) = Call[~String] : func:r35_386, this:r35_385 +# 35| mu35_388(unknown) = ^CallSideEffect : ~m? +# 35| v35_389(void) = ^IndirectReadSideEffect[-1] : &:r35_385, ~m? +# 35| mu35_390(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_385 +# 35| r35_391(bool) = Constant[0] : +# 35| v35_392(void) = ConditionalBranch : r35_391 #-----| False -> Block 29 #-----| True (back edge) -> Block 28 -# 103| Block 29 -# 103| r103_1(glval) = VariableAddress[x28] : -# 103| mu103_2(String) = Uninitialized[x28] : &:r103_1 -# 103| r103_3(glval) = FunctionAddress[String] : -# 103| v103_4(void) = Call[String] : func:r103_3, this:r103_1 -# 103| mu103_5(unknown) = ^CallSideEffect : ~m? -# 103| mu103_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r103_1 -# 104| r104_1(glval) = VariableAddress[x28] : -# 104| r104_2(glval) = FunctionAddress[~String] : -# 104| v104_3(void) = Call[~String] : func:r104_2, this:r104_1 -# 104| mu104_4(unknown) = ^CallSideEffect : ~m? -# 104| v104_5(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m? -# 104| mu104_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 -# 104| r104_7(bool) = Constant[0] : -# 104| v104_8(void) = ConditionalBranch : r104_7 +# 35| Block 29 +# 35| r35_393(glval) = VariableAddress[x28] : +# 35| mu35_394(String) = Uninitialized[x28] : &:r35_393 +# 35| r35_395(glval) = FunctionAddress[String] : +# 35| v35_396(void) = Call[String] : func:r35_395, this:r35_393 +# 35| mu35_397(unknown) = ^CallSideEffect : ~m? +# 35| mu35_398(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_393 +# 35| r35_399(glval) = VariableAddress[x28] : +# 35| r35_400(glval) = FunctionAddress[~String] : +# 35| v35_401(void) = Call[~String] : func:r35_400, this:r35_399 +# 35| mu35_402(unknown) = ^CallSideEffect : ~m? +# 35| v35_403(void) = ^IndirectReadSideEffect[-1] : &:r35_399, ~m? +# 35| mu35_404(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_399 +# 35| r35_405(bool) = Constant[0] : +# 35| v35_406(void) = ConditionalBranch : r35_405 #-----| False -> Block 30 #-----| True (back edge) -> Block 29 -# 106| Block 30 -# 106| r106_1(glval) = VariableAddress[x29] : -# 106| mu106_2(String) = Uninitialized[x29] : &:r106_1 -# 106| r106_3(glval) = FunctionAddress[String] : -# 106| v106_4(void) = Call[String] : func:r106_3, this:r106_1 -# 106| mu106_5(unknown) = ^CallSideEffect : ~m? -# 106| mu106_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r106_1 -# 107| r107_1(glval) = VariableAddress[x29] : -# 107| r107_2(glval) = FunctionAddress[~String] : -# 107| v107_3(void) = Call[~String] : func:r107_2, this:r107_1 -# 107| mu107_4(unknown) = ^CallSideEffect : ~m? -# 107| v107_5(void) = ^IndirectReadSideEffect[-1] : &:r107_1, ~m? -# 107| mu107_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r107_1 -# 107| r107_7(bool) = Constant[0] : -# 107| v107_8(void) = ConditionalBranch : r107_7 +# 35| Block 30 +# 35| r35_407(glval) = VariableAddress[x29] : +# 35| mu35_408(String) = Uninitialized[x29] : &:r35_407 +# 35| r35_409(glval) = FunctionAddress[String] : +# 35| v35_410(void) = Call[String] : func:r35_409, this:r35_407 +# 35| mu35_411(unknown) = ^CallSideEffect : ~m? +# 35| mu35_412(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_407 +# 35| r35_413(glval) = VariableAddress[x29] : +# 35| r35_414(glval) = FunctionAddress[~String] : +# 35| v35_415(void) = Call[~String] : func:r35_414, this:r35_413 +# 35| mu35_416(unknown) = ^CallSideEffect : ~m? +# 35| v35_417(void) = ^IndirectReadSideEffect[-1] : &:r35_413, ~m? +# 35| mu35_418(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_413 +# 35| r35_419(bool) = Constant[0] : +# 35| v35_420(void) = ConditionalBranch : r35_419 #-----| False -> Block 31 #-----| True (back edge) -> Block 30 -# 109| Block 31 -# 109| r109_1(glval) = VariableAddress[x30] : -# 109| mu109_2(String) = Uninitialized[x30] : &:r109_1 -# 109| r109_3(glval) = FunctionAddress[String] : -# 109| v109_4(void) = Call[String] : func:r109_3, this:r109_1 -# 109| mu109_5(unknown) = ^CallSideEffect : ~m? -# 109| mu109_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 -# 110| r110_1(glval) = VariableAddress[x30] : -# 110| r110_2(glval) = FunctionAddress[~String] : -# 110| v110_3(void) = Call[~String] : func:r110_2, this:r110_1 -# 110| mu110_4(unknown) = ^CallSideEffect : ~m? -# 110| v110_5(void) = ^IndirectReadSideEffect[-1] : &:r110_1, ~m? -# 110| mu110_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r110_1 -# 110| r110_7(bool) = Constant[0] : -# 110| v110_8(void) = ConditionalBranch : r110_7 +# 35| Block 31 +# 35| r35_421(glval) = VariableAddress[x30] : +# 35| mu35_422(String) = Uninitialized[x30] : &:r35_421 +# 35| r35_423(glval) = FunctionAddress[String] : +# 35| v35_424(void) = Call[String] : func:r35_423, this:r35_421 +# 35| mu35_425(unknown) = ^CallSideEffect : ~m? +# 35| mu35_426(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_421 +# 35| r35_427(glval) = VariableAddress[x30] : +# 35| r35_428(glval) = FunctionAddress[~String] : +# 35| v35_429(void) = Call[~String] : func:r35_428, this:r35_427 +# 35| mu35_430(unknown) = ^CallSideEffect : ~m? +# 35| v35_431(void) = ^IndirectReadSideEffect[-1] : &:r35_427, ~m? +# 35| mu35_432(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_427 +# 35| r35_433(bool) = Constant[0] : +# 35| v35_434(void) = ConditionalBranch : r35_433 #-----| False -> Block 32 #-----| True (back edge) -> Block 31 -# 112| Block 32 -# 112| r112_1(glval) = VariableAddress[x31] : -# 112| mu112_2(String) = Uninitialized[x31] : &:r112_1 -# 112| r112_3(glval) = FunctionAddress[String] : -# 112| v112_4(void) = Call[String] : func:r112_3, this:r112_1 -# 112| mu112_5(unknown) = ^CallSideEffect : ~m? -# 112| mu112_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r112_1 -# 113| r113_1(glval) = VariableAddress[x31] : -# 113| r113_2(glval) = FunctionAddress[~String] : -# 113| v113_3(void) = Call[~String] : func:r113_2, this:r113_1 -# 113| mu113_4(unknown) = ^CallSideEffect : ~m? -# 113| v113_5(void) = ^IndirectReadSideEffect[-1] : &:r113_1, ~m? -# 113| mu113_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r113_1 -# 113| r113_7(bool) = Constant[0] : -# 113| v113_8(void) = ConditionalBranch : r113_7 +# 35| Block 32 +# 35| r35_435(glval) = VariableAddress[x31] : +# 35| mu35_436(String) = Uninitialized[x31] : &:r35_435 +# 35| r35_437(glval) = FunctionAddress[String] : +# 35| v35_438(void) = Call[String] : func:r35_437, this:r35_435 +# 35| mu35_439(unknown) = ^CallSideEffect : ~m? +# 35| mu35_440(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_435 +# 35| r35_441(glval) = VariableAddress[x31] : +# 35| r35_442(glval) = FunctionAddress[~String] : +# 35| v35_443(void) = Call[~String] : func:r35_442, this:r35_441 +# 35| mu35_444(unknown) = ^CallSideEffect : ~m? +# 35| v35_445(void) = ^IndirectReadSideEffect[-1] : &:r35_441, ~m? +# 35| mu35_446(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_441 +# 35| r35_447(bool) = Constant[0] : +# 35| v35_448(void) = ConditionalBranch : r35_447 #-----| False -> Block 33 #-----| True (back edge) -> Block 32 -# 115| Block 33 -# 115| r115_1(glval) = VariableAddress[x32] : -# 115| mu115_2(String) = Uninitialized[x32] : &:r115_1 -# 115| r115_3(glval) = FunctionAddress[String] : -# 115| v115_4(void) = Call[String] : func:r115_3, this:r115_1 -# 115| mu115_5(unknown) = ^CallSideEffect : ~m? -# 115| mu115_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r115_1 -# 116| r116_1(glval) = VariableAddress[x32] : -# 116| r116_2(glval) = FunctionAddress[~String] : -# 116| v116_3(void) = Call[~String] : func:r116_2, this:r116_1 -# 116| mu116_4(unknown) = ^CallSideEffect : ~m? -# 116| v116_5(void) = ^IndirectReadSideEffect[-1] : &:r116_1, ~m? -# 116| mu116_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r116_1 -# 116| r116_7(bool) = Constant[0] : -# 116| v116_8(void) = ConditionalBranch : r116_7 +# 35| Block 33 +# 35| r35_449(glval) = VariableAddress[x32] : +# 35| mu35_450(String) = Uninitialized[x32] : &:r35_449 +# 35| r35_451(glval) = FunctionAddress[String] : +# 35| v35_452(void) = Call[String] : func:r35_451, this:r35_449 +# 35| mu35_453(unknown) = ^CallSideEffect : ~m? +# 35| mu35_454(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_449 +# 35| r35_455(glval) = VariableAddress[x32] : +# 35| r35_456(glval) = FunctionAddress[~String] : +# 35| v35_457(void) = Call[~String] : func:r35_456, this:r35_455 +# 35| mu35_458(unknown) = ^CallSideEffect : ~m? +# 35| v35_459(void) = ^IndirectReadSideEffect[-1] : &:r35_455, ~m? +# 35| mu35_460(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_455 +# 35| r35_461(bool) = Constant[0] : +# 35| v35_462(void) = ConditionalBranch : r35_461 #-----| False -> Block 34 #-----| True (back edge) -> Block 33 -# 118| Block 34 -# 118| r118_1(glval) = VariableAddress[x33] : -# 118| mu118_2(String) = Uninitialized[x33] : &:r118_1 -# 118| r118_3(glval) = FunctionAddress[String] : -# 118| v118_4(void) = Call[String] : func:r118_3, this:r118_1 -# 118| mu118_5(unknown) = ^CallSideEffect : ~m? -# 118| mu118_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r118_1 -# 119| r119_1(glval) = VariableAddress[x33] : -# 119| r119_2(glval) = FunctionAddress[~String] : -# 119| v119_3(void) = Call[~String] : func:r119_2, this:r119_1 -# 119| mu119_4(unknown) = ^CallSideEffect : ~m? -# 119| v119_5(void) = ^IndirectReadSideEffect[-1] : &:r119_1, ~m? -# 119| mu119_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r119_1 -# 119| r119_7(bool) = Constant[0] : -# 119| v119_8(void) = ConditionalBranch : r119_7 +# 35| Block 34 +# 35| r35_463(glval) = VariableAddress[x33] : +# 35| mu35_464(String) = Uninitialized[x33] : &:r35_463 +# 35| r35_465(glval) = FunctionAddress[String] : +# 35| v35_466(void) = Call[String] : func:r35_465, this:r35_463 +# 35| mu35_467(unknown) = ^CallSideEffect : ~m? +# 35| mu35_468(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_463 +# 35| r35_469(glval) = VariableAddress[x33] : +# 35| r35_470(glval) = FunctionAddress[~String] : +# 35| v35_471(void) = Call[~String] : func:r35_470, this:r35_469 +# 35| mu35_472(unknown) = ^CallSideEffect : ~m? +# 35| v35_473(void) = ^IndirectReadSideEffect[-1] : &:r35_469, ~m? +# 35| mu35_474(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_469 +# 35| r35_475(bool) = Constant[0] : +# 35| v35_476(void) = ConditionalBranch : r35_475 #-----| False -> Block 35 #-----| True (back edge) -> Block 34 -# 121| Block 35 -# 121| r121_1(glval) = VariableAddress[x34] : -# 121| mu121_2(String) = Uninitialized[x34] : &:r121_1 -# 121| r121_3(glval) = FunctionAddress[String] : -# 121| v121_4(void) = Call[String] : func:r121_3, this:r121_1 -# 121| mu121_5(unknown) = ^CallSideEffect : ~m? -# 121| mu121_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r121_1 -# 122| r122_1(glval) = VariableAddress[x34] : -# 122| r122_2(glval) = FunctionAddress[~String] : -# 122| v122_3(void) = Call[~String] : func:r122_2, this:r122_1 -# 122| mu122_4(unknown) = ^CallSideEffect : ~m? -# 122| v122_5(void) = ^IndirectReadSideEffect[-1] : &:r122_1, ~m? -# 122| mu122_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r122_1 -# 122| r122_7(bool) = Constant[0] : -# 122| v122_8(void) = ConditionalBranch : r122_7 +# 35| Block 35 +# 35| r35_477(glval) = VariableAddress[x34] : +# 35| mu35_478(String) = Uninitialized[x34] : &:r35_477 +# 35| r35_479(glval) = FunctionAddress[String] : +# 35| v35_480(void) = Call[String] : func:r35_479, this:r35_477 +# 35| mu35_481(unknown) = ^CallSideEffect : ~m? +# 35| mu35_482(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_477 +# 35| r35_483(glval) = VariableAddress[x34] : +# 35| r35_484(glval) = FunctionAddress[~String] : +# 35| v35_485(void) = Call[~String] : func:r35_484, this:r35_483 +# 35| mu35_486(unknown) = ^CallSideEffect : ~m? +# 35| v35_487(void) = ^IndirectReadSideEffect[-1] : &:r35_483, ~m? +# 35| mu35_488(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_483 +# 35| r35_489(bool) = Constant[0] : +# 35| v35_490(void) = ConditionalBranch : r35_489 #-----| False -> Block 36 #-----| True (back edge) -> Block 35 -# 124| Block 36 -# 124| r124_1(glval) = VariableAddress[x35] : -# 124| mu124_2(String) = Uninitialized[x35] : &:r124_1 -# 124| r124_3(glval) = FunctionAddress[String] : -# 124| v124_4(void) = Call[String] : func:r124_3, this:r124_1 -# 124| mu124_5(unknown) = ^CallSideEffect : ~m? -# 124| mu124_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r124_1 -# 125| r125_1(glval) = VariableAddress[x35] : -# 125| r125_2(glval) = FunctionAddress[~String] : -# 125| v125_3(void) = Call[~String] : func:r125_2, this:r125_1 -# 125| mu125_4(unknown) = ^CallSideEffect : ~m? -# 125| v125_5(void) = ^IndirectReadSideEffect[-1] : &:r125_1, ~m? -# 125| mu125_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r125_1 -# 125| r125_7(bool) = Constant[0] : -# 125| v125_8(void) = ConditionalBranch : r125_7 +# 35| Block 36 +# 35| r35_491(glval) = VariableAddress[x35] : +# 35| mu35_492(String) = Uninitialized[x35] : &:r35_491 +# 35| r35_493(glval) = FunctionAddress[String] : +# 35| v35_494(void) = Call[String] : func:r35_493, this:r35_491 +# 35| mu35_495(unknown) = ^CallSideEffect : ~m? +# 35| mu35_496(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_491 +# 35| r35_497(glval) = VariableAddress[x35] : +# 35| r35_498(glval) = FunctionAddress[~String] : +# 35| v35_499(void) = Call[~String] : func:r35_498, this:r35_497 +# 35| mu35_500(unknown) = ^CallSideEffect : ~m? +# 35| v35_501(void) = ^IndirectReadSideEffect[-1] : &:r35_497, ~m? +# 35| mu35_502(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_497 +# 35| r35_503(bool) = Constant[0] : +# 35| v35_504(void) = ConditionalBranch : r35_503 #-----| False -> Block 37 #-----| True (back edge) -> Block 36 -# 127| Block 37 -# 127| r127_1(glval) = VariableAddress[x36] : -# 127| mu127_2(String) = Uninitialized[x36] : &:r127_1 -# 127| r127_3(glval) = FunctionAddress[String] : -# 127| v127_4(void) = Call[String] : func:r127_3, this:r127_1 -# 127| mu127_5(unknown) = ^CallSideEffect : ~m? -# 127| mu127_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r127_1 -# 128| r128_1(glval) = VariableAddress[x36] : -# 128| r128_2(glval) = FunctionAddress[~String] : -# 128| v128_3(void) = Call[~String] : func:r128_2, this:r128_1 -# 128| mu128_4(unknown) = ^CallSideEffect : ~m? -# 128| v128_5(void) = ^IndirectReadSideEffect[-1] : &:r128_1, ~m? -# 128| mu128_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r128_1 -# 128| r128_7(bool) = Constant[0] : -# 128| v128_8(void) = ConditionalBranch : r128_7 +# 35| Block 37 +# 35| r35_505(glval) = VariableAddress[x36] : +# 35| mu35_506(String) = Uninitialized[x36] : &:r35_505 +# 35| r35_507(glval) = FunctionAddress[String] : +# 35| v35_508(void) = Call[String] : func:r35_507, this:r35_505 +# 35| mu35_509(unknown) = ^CallSideEffect : ~m? +# 35| mu35_510(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_505 +# 35| r35_511(glval) = VariableAddress[x36] : +# 35| r35_512(glval) = FunctionAddress[~String] : +# 35| v35_513(void) = Call[~String] : func:r35_512, this:r35_511 +# 35| mu35_514(unknown) = ^CallSideEffect : ~m? +# 35| v35_515(void) = ^IndirectReadSideEffect[-1] : &:r35_511, ~m? +# 35| mu35_516(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_511 +# 35| r35_517(bool) = Constant[0] : +# 35| v35_518(void) = ConditionalBranch : r35_517 #-----| False -> Block 38 #-----| True (back edge) -> Block 37 -# 130| Block 38 -# 130| r130_1(glval) = VariableAddress[x37] : -# 130| mu130_2(String) = Uninitialized[x37] : &:r130_1 -# 130| r130_3(glval) = FunctionAddress[String] : -# 130| v130_4(void) = Call[String] : func:r130_3, this:r130_1 -# 130| mu130_5(unknown) = ^CallSideEffect : ~m? -# 130| mu130_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r130_1 -# 131| r131_1(glval) = VariableAddress[x37] : -# 131| r131_2(glval) = FunctionAddress[~String] : -# 131| v131_3(void) = Call[~String] : func:r131_2, this:r131_1 -# 131| mu131_4(unknown) = ^CallSideEffect : ~m? -# 131| v131_5(void) = ^IndirectReadSideEffect[-1] : &:r131_1, ~m? -# 131| mu131_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r131_1 -# 131| r131_7(bool) = Constant[0] : -# 131| v131_8(void) = ConditionalBranch : r131_7 +# 35| Block 38 +# 35| r35_519(glval) = VariableAddress[x37] : +# 35| mu35_520(String) = Uninitialized[x37] : &:r35_519 +# 35| r35_521(glval) = FunctionAddress[String] : +# 35| v35_522(void) = Call[String] : func:r35_521, this:r35_519 +# 35| mu35_523(unknown) = ^CallSideEffect : ~m? +# 35| mu35_524(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_519 +# 35| r35_525(glval) = VariableAddress[x37] : +# 35| r35_526(glval) = FunctionAddress[~String] : +# 35| v35_527(void) = Call[~String] : func:r35_526, this:r35_525 +# 35| mu35_528(unknown) = ^CallSideEffect : ~m? +# 35| v35_529(void) = ^IndirectReadSideEffect[-1] : &:r35_525, ~m? +# 35| mu35_530(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_525 +# 35| r35_531(bool) = Constant[0] : +# 35| v35_532(void) = ConditionalBranch : r35_531 #-----| False -> Block 39 #-----| True (back edge) -> Block 38 -# 133| Block 39 -# 133| r133_1(glval) = VariableAddress[x38] : -# 133| mu133_2(String) = Uninitialized[x38] : &:r133_1 -# 133| r133_3(glval) = FunctionAddress[String] : -# 133| v133_4(void) = Call[String] : func:r133_3, this:r133_1 -# 133| mu133_5(unknown) = ^CallSideEffect : ~m? -# 133| mu133_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r133_1 -# 134| r134_1(glval) = VariableAddress[x38] : -# 134| r134_2(glval) = FunctionAddress[~String] : -# 134| v134_3(void) = Call[~String] : func:r134_2, this:r134_1 -# 134| mu134_4(unknown) = ^CallSideEffect : ~m? -# 134| v134_5(void) = ^IndirectReadSideEffect[-1] : &:r134_1, ~m? -# 134| mu134_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r134_1 -# 134| r134_7(bool) = Constant[0] : -# 134| v134_8(void) = ConditionalBranch : r134_7 +# 35| Block 39 +# 35| r35_533(glval) = VariableAddress[x38] : +# 35| mu35_534(String) = Uninitialized[x38] : &:r35_533 +# 35| r35_535(glval) = FunctionAddress[String] : +# 35| v35_536(void) = Call[String] : func:r35_535, this:r35_533 +# 35| mu35_537(unknown) = ^CallSideEffect : ~m? +# 35| mu35_538(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_533 +# 35| r35_539(glval) = VariableAddress[x38] : +# 35| r35_540(glval) = FunctionAddress[~String] : +# 35| v35_541(void) = Call[~String] : func:r35_540, this:r35_539 +# 35| mu35_542(unknown) = ^CallSideEffect : ~m? +# 35| v35_543(void) = ^IndirectReadSideEffect[-1] : &:r35_539, ~m? +# 35| mu35_544(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_539 +# 35| r35_545(bool) = Constant[0] : +# 35| v35_546(void) = ConditionalBranch : r35_545 #-----| False -> Block 40 #-----| True (back edge) -> Block 39 -# 136| Block 40 -# 136| r136_1(glval) = VariableAddress[x39] : -# 136| mu136_2(String) = Uninitialized[x39] : &:r136_1 -# 136| r136_3(glval) = FunctionAddress[String] : -# 136| v136_4(void) = Call[String] : func:r136_3, this:r136_1 -# 136| mu136_5(unknown) = ^CallSideEffect : ~m? -# 136| mu136_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r136_1 -# 137| r137_1(glval) = VariableAddress[x39] : -# 137| r137_2(glval) = FunctionAddress[~String] : -# 137| v137_3(void) = Call[~String] : func:r137_2, this:r137_1 -# 137| mu137_4(unknown) = ^CallSideEffect : ~m? -# 137| v137_5(void) = ^IndirectReadSideEffect[-1] : &:r137_1, ~m? -# 137| mu137_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r137_1 -# 137| r137_7(bool) = Constant[0] : -# 137| v137_8(void) = ConditionalBranch : r137_7 +# 35| Block 40 +# 35| r35_547(glval) = VariableAddress[x39] : +# 35| mu35_548(String) = Uninitialized[x39] : &:r35_547 +# 35| r35_549(glval) = FunctionAddress[String] : +# 35| v35_550(void) = Call[String] : func:r35_549, this:r35_547 +# 35| mu35_551(unknown) = ^CallSideEffect : ~m? +# 35| mu35_552(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_547 +# 35| r35_553(glval) = VariableAddress[x39] : +# 35| r35_554(glval) = FunctionAddress[~String] : +# 35| v35_555(void) = Call[~String] : func:r35_554, this:r35_553 +# 35| mu35_556(unknown) = ^CallSideEffect : ~m? +# 35| v35_557(void) = ^IndirectReadSideEffect[-1] : &:r35_553, ~m? +# 35| mu35_558(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_553 +# 35| r35_559(bool) = Constant[0] : +# 35| v35_560(void) = ConditionalBranch : r35_559 #-----| False -> Block 41 #-----| True (back edge) -> Block 40 -# 139| Block 41 -# 139| r139_1(glval) = VariableAddress[x40] : -# 139| mu139_2(String) = Uninitialized[x40] : &:r139_1 -# 139| r139_3(glval) = FunctionAddress[String] : -# 139| v139_4(void) = Call[String] : func:r139_3, this:r139_1 -# 139| mu139_5(unknown) = ^CallSideEffect : ~m? -# 139| mu139_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r139_1 -# 140| r140_1(glval) = VariableAddress[x40] : -# 140| r140_2(glval) = FunctionAddress[~String] : -# 140| v140_3(void) = Call[~String] : func:r140_2, this:r140_1 -# 140| mu140_4(unknown) = ^CallSideEffect : ~m? -# 140| v140_5(void) = ^IndirectReadSideEffect[-1] : &:r140_1, ~m? -# 140| mu140_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r140_1 -# 140| r140_7(bool) = Constant[0] : -# 140| v140_8(void) = ConditionalBranch : r140_7 +# 35| Block 41 +# 35| r35_561(glval) = VariableAddress[x40] : +# 35| mu35_562(String) = Uninitialized[x40] : &:r35_561 +# 35| r35_563(glval) = FunctionAddress[String] : +# 35| v35_564(void) = Call[String] : func:r35_563, this:r35_561 +# 35| mu35_565(unknown) = ^CallSideEffect : ~m? +# 35| mu35_566(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_561 +# 35| r35_567(glval) = VariableAddress[x40] : +# 35| r35_568(glval) = FunctionAddress[~String] : +# 35| v35_569(void) = Call[~String] : func:r35_568, this:r35_567 +# 35| mu35_570(unknown) = ^CallSideEffect : ~m? +# 35| v35_571(void) = ^IndirectReadSideEffect[-1] : &:r35_567, ~m? +# 35| mu35_572(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_567 +# 35| r35_573(bool) = Constant[0] : +# 35| v35_574(void) = ConditionalBranch : r35_573 #-----| False -> Block 42 #-----| True (back edge) -> Block 41 -# 142| Block 42 -# 142| r142_1(glval) = VariableAddress[x41] : -# 142| mu142_2(String) = Uninitialized[x41] : &:r142_1 -# 142| r142_3(glval) = FunctionAddress[String] : -# 142| v142_4(void) = Call[String] : func:r142_3, this:r142_1 -# 142| mu142_5(unknown) = ^CallSideEffect : ~m? -# 142| mu142_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r142_1 -# 143| r143_1(glval) = VariableAddress[x41] : -# 143| r143_2(glval) = FunctionAddress[~String] : -# 143| v143_3(void) = Call[~String] : func:r143_2, this:r143_1 -# 143| mu143_4(unknown) = ^CallSideEffect : ~m? -# 143| v143_5(void) = ^IndirectReadSideEffect[-1] : &:r143_1, ~m? -# 143| mu143_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r143_1 -# 143| r143_7(bool) = Constant[0] : -# 143| v143_8(void) = ConditionalBranch : r143_7 +# 35| Block 42 +# 35| r35_575(glval) = VariableAddress[x41] : +# 35| mu35_576(String) = Uninitialized[x41] : &:r35_575 +# 35| r35_577(glval) = FunctionAddress[String] : +# 35| v35_578(void) = Call[String] : func:r35_577, this:r35_575 +# 35| mu35_579(unknown) = ^CallSideEffect : ~m? +# 35| mu35_580(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_575 +# 35| r35_581(glval) = VariableAddress[x41] : +# 35| r35_582(glval) = FunctionAddress[~String] : +# 35| v35_583(void) = Call[~String] : func:r35_582, this:r35_581 +# 35| mu35_584(unknown) = ^CallSideEffect : ~m? +# 35| v35_585(void) = ^IndirectReadSideEffect[-1] : &:r35_581, ~m? +# 35| mu35_586(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_581 +# 35| r35_587(bool) = Constant[0] : +# 35| v35_588(void) = ConditionalBranch : r35_587 #-----| False -> Block 43 #-----| True (back edge) -> Block 42 -# 145| Block 43 -# 145| r145_1(glval) = VariableAddress[x42] : -# 145| mu145_2(String) = Uninitialized[x42] : &:r145_1 -# 145| r145_3(glval) = FunctionAddress[String] : -# 145| v145_4(void) = Call[String] : func:r145_3, this:r145_1 -# 145| mu145_5(unknown) = ^CallSideEffect : ~m? -# 145| mu145_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r145_1 -# 146| r146_1(glval) = VariableAddress[x42] : -# 146| r146_2(glval) = FunctionAddress[~String] : -# 146| v146_3(void) = Call[~String] : func:r146_2, this:r146_1 -# 146| mu146_4(unknown) = ^CallSideEffect : ~m? -# 146| v146_5(void) = ^IndirectReadSideEffect[-1] : &:r146_1, ~m? -# 146| mu146_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r146_1 -# 146| r146_7(bool) = Constant[0] : -# 146| v146_8(void) = ConditionalBranch : r146_7 +# 35| Block 43 +# 35| r35_589(glval) = VariableAddress[x42] : +# 35| mu35_590(String) = Uninitialized[x42] : &:r35_589 +# 35| r35_591(glval) = FunctionAddress[String] : +# 35| v35_592(void) = Call[String] : func:r35_591, this:r35_589 +# 35| mu35_593(unknown) = ^CallSideEffect : ~m? +# 35| mu35_594(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_589 +# 35| r35_595(glval) = VariableAddress[x42] : +# 35| r35_596(glval) = FunctionAddress[~String] : +# 35| v35_597(void) = Call[~String] : func:r35_596, this:r35_595 +# 35| mu35_598(unknown) = ^CallSideEffect : ~m? +# 35| v35_599(void) = ^IndirectReadSideEffect[-1] : &:r35_595, ~m? +# 35| mu35_600(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_595 +# 35| r35_601(bool) = Constant[0] : +# 35| v35_602(void) = ConditionalBranch : r35_601 #-----| False -> Block 44 #-----| True (back edge) -> Block 43 -# 148| Block 44 -# 148| r148_1(glval) = VariableAddress[x43] : -# 148| mu148_2(String) = Uninitialized[x43] : &:r148_1 -# 148| r148_3(glval) = FunctionAddress[String] : -# 148| v148_4(void) = Call[String] : func:r148_3, this:r148_1 -# 148| mu148_5(unknown) = ^CallSideEffect : ~m? -# 148| mu148_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r148_1 -# 149| r149_1(glval) = VariableAddress[x43] : -# 149| r149_2(glval) = FunctionAddress[~String] : -# 149| v149_3(void) = Call[~String] : func:r149_2, this:r149_1 -# 149| mu149_4(unknown) = ^CallSideEffect : ~m? -# 149| v149_5(void) = ^IndirectReadSideEffect[-1] : &:r149_1, ~m? -# 149| mu149_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r149_1 -# 149| r149_7(bool) = Constant[0] : -# 149| v149_8(void) = ConditionalBranch : r149_7 +# 35| Block 44 +# 35| r35_603(glval) = VariableAddress[x43] : +# 35| mu35_604(String) = Uninitialized[x43] : &:r35_603 +# 35| r35_605(glval) = FunctionAddress[String] : +# 35| v35_606(void) = Call[String] : func:r35_605, this:r35_603 +# 35| mu35_607(unknown) = ^CallSideEffect : ~m? +# 35| mu35_608(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_603 +# 35| r35_609(glval) = VariableAddress[x43] : +# 35| r35_610(glval) = FunctionAddress[~String] : +# 35| v35_611(void) = Call[~String] : func:r35_610, this:r35_609 +# 35| mu35_612(unknown) = ^CallSideEffect : ~m? +# 35| v35_613(void) = ^IndirectReadSideEffect[-1] : &:r35_609, ~m? +# 35| mu35_614(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_609 +# 35| r35_615(bool) = Constant[0] : +# 35| v35_616(void) = ConditionalBranch : r35_615 #-----| False -> Block 45 #-----| True (back edge) -> Block 44 -# 151| Block 45 -# 151| r151_1(glval) = VariableAddress[x44] : -# 151| mu151_2(String) = Uninitialized[x44] : &:r151_1 -# 151| r151_3(glval) = FunctionAddress[String] : -# 151| v151_4(void) = Call[String] : func:r151_3, this:r151_1 -# 151| mu151_5(unknown) = ^CallSideEffect : ~m? -# 151| mu151_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r151_1 -# 152| r152_1(glval) = VariableAddress[x44] : -# 152| r152_2(glval) = FunctionAddress[~String] : -# 152| v152_3(void) = Call[~String] : func:r152_2, this:r152_1 -# 152| mu152_4(unknown) = ^CallSideEffect : ~m? -# 152| v152_5(void) = ^IndirectReadSideEffect[-1] : &:r152_1, ~m? -# 152| mu152_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r152_1 -# 152| r152_7(bool) = Constant[0] : -# 152| v152_8(void) = ConditionalBranch : r152_7 +# 35| Block 45 +# 35| r35_617(glval) = VariableAddress[x44] : +# 35| mu35_618(String) = Uninitialized[x44] : &:r35_617 +# 35| r35_619(glval) = FunctionAddress[String] : +# 35| v35_620(void) = Call[String] : func:r35_619, this:r35_617 +# 35| mu35_621(unknown) = ^CallSideEffect : ~m? +# 35| mu35_622(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_617 +# 35| r35_623(glval) = VariableAddress[x44] : +# 35| r35_624(glval) = FunctionAddress[~String] : +# 35| v35_625(void) = Call[~String] : func:r35_624, this:r35_623 +# 35| mu35_626(unknown) = ^CallSideEffect : ~m? +# 35| v35_627(void) = ^IndirectReadSideEffect[-1] : &:r35_623, ~m? +# 35| mu35_628(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_623 +# 35| r35_629(bool) = Constant[0] : +# 35| v35_630(void) = ConditionalBranch : r35_629 #-----| False -> Block 46 #-----| True (back edge) -> Block 45 -# 154| Block 46 -# 154| r154_1(glval) = VariableAddress[x45] : -# 154| mu154_2(String) = Uninitialized[x45] : &:r154_1 -# 154| r154_3(glval) = FunctionAddress[String] : -# 154| v154_4(void) = Call[String] : func:r154_3, this:r154_1 -# 154| mu154_5(unknown) = ^CallSideEffect : ~m? -# 154| mu154_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r154_1 -# 155| r155_1(glval) = VariableAddress[x45] : -# 155| r155_2(glval) = FunctionAddress[~String] : -# 155| v155_3(void) = Call[~String] : func:r155_2, this:r155_1 -# 155| mu155_4(unknown) = ^CallSideEffect : ~m? -# 155| v155_5(void) = ^IndirectReadSideEffect[-1] : &:r155_1, ~m? -# 155| mu155_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r155_1 -# 155| r155_7(bool) = Constant[0] : -# 155| v155_8(void) = ConditionalBranch : r155_7 +# 35| Block 46 +# 35| r35_631(glval) = VariableAddress[x45] : +# 35| mu35_632(String) = Uninitialized[x45] : &:r35_631 +# 35| r35_633(glval) = FunctionAddress[String] : +# 35| v35_634(void) = Call[String] : func:r35_633, this:r35_631 +# 35| mu35_635(unknown) = ^CallSideEffect : ~m? +# 35| mu35_636(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_631 +# 35| r35_637(glval) = VariableAddress[x45] : +# 35| r35_638(glval) = FunctionAddress[~String] : +# 35| v35_639(void) = Call[~String] : func:r35_638, this:r35_637 +# 35| mu35_640(unknown) = ^CallSideEffect : ~m? +# 35| v35_641(void) = ^IndirectReadSideEffect[-1] : &:r35_637, ~m? +# 35| mu35_642(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_637 +# 35| r35_643(bool) = Constant[0] : +# 35| v35_644(void) = ConditionalBranch : r35_643 #-----| False -> Block 47 #-----| True (back edge) -> Block 46 -# 157| Block 47 -# 157| r157_1(glval) = VariableAddress[x46] : -# 157| mu157_2(String) = Uninitialized[x46] : &:r157_1 -# 157| r157_3(glval) = FunctionAddress[String] : -# 157| v157_4(void) = Call[String] : func:r157_3, this:r157_1 -# 157| mu157_5(unknown) = ^CallSideEffect : ~m? -# 157| mu157_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r157_1 -# 158| r158_1(glval) = VariableAddress[x46] : -# 158| r158_2(glval) = FunctionAddress[~String] : -# 158| v158_3(void) = Call[~String] : func:r158_2, this:r158_1 -# 158| mu158_4(unknown) = ^CallSideEffect : ~m? -# 158| v158_5(void) = ^IndirectReadSideEffect[-1] : &:r158_1, ~m? -# 158| mu158_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r158_1 -# 158| r158_7(bool) = Constant[0] : -# 158| v158_8(void) = ConditionalBranch : r158_7 +# 35| Block 47 +# 35| r35_645(glval) = VariableAddress[x46] : +# 35| mu35_646(String) = Uninitialized[x46] : &:r35_645 +# 35| r35_647(glval) = FunctionAddress[String] : +# 35| v35_648(void) = Call[String] : func:r35_647, this:r35_645 +# 35| mu35_649(unknown) = ^CallSideEffect : ~m? +# 35| mu35_650(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_645 +# 35| r35_651(glval) = VariableAddress[x46] : +# 35| r35_652(glval) = FunctionAddress[~String] : +# 35| v35_653(void) = Call[~String] : func:r35_652, this:r35_651 +# 35| mu35_654(unknown) = ^CallSideEffect : ~m? +# 35| v35_655(void) = ^IndirectReadSideEffect[-1] : &:r35_651, ~m? +# 35| mu35_656(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_651 +# 35| r35_657(bool) = Constant[0] : +# 35| v35_658(void) = ConditionalBranch : r35_657 #-----| False -> Block 48 #-----| True (back edge) -> Block 47 -# 160| Block 48 -# 160| r160_1(glval) = VariableAddress[x47] : -# 160| mu160_2(String) = Uninitialized[x47] : &:r160_1 -# 160| r160_3(glval) = FunctionAddress[String] : -# 160| v160_4(void) = Call[String] : func:r160_3, this:r160_1 -# 160| mu160_5(unknown) = ^CallSideEffect : ~m? -# 160| mu160_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r160_1 -# 161| r161_1(glval) = VariableAddress[x47] : -# 161| r161_2(glval) = FunctionAddress[~String] : -# 161| v161_3(void) = Call[~String] : func:r161_2, this:r161_1 -# 161| mu161_4(unknown) = ^CallSideEffect : ~m? -# 161| v161_5(void) = ^IndirectReadSideEffect[-1] : &:r161_1, ~m? -# 161| mu161_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r161_1 -# 161| r161_7(bool) = Constant[0] : -# 161| v161_8(void) = ConditionalBranch : r161_7 +# 35| Block 48 +# 35| r35_659(glval) = VariableAddress[x47] : +# 35| mu35_660(String) = Uninitialized[x47] : &:r35_659 +# 35| r35_661(glval) = FunctionAddress[String] : +# 35| v35_662(void) = Call[String] : func:r35_661, this:r35_659 +# 35| mu35_663(unknown) = ^CallSideEffect : ~m? +# 35| mu35_664(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_659 +# 35| r35_665(glval) = VariableAddress[x47] : +# 35| r35_666(glval) = FunctionAddress[~String] : +# 35| v35_667(void) = Call[~String] : func:r35_666, this:r35_665 +# 35| mu35_668(unknown) = ^CallSideEffect : ~m? +# 35| v35_669(void) = ^IndirectReadSideEffect[-1] : &:r35_665, ~m? +# 35| mu35_670(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_665 +# 35| r35_671(bool) = Constant[0] : +# 35| v35_672(void) = ConditionalBranch : r35_671 #-----| False -> Block 49 #-----| True (back edge) -> Block 48 -# 163| Block 49 -# 163| r163_1(glval) = VariableAddress[x48] : -# 163| mu163_2(String) = Uninitialized[x48] : &:r163_1 -# 163| r163_3(glval) = FunctionAddress[String] : -# 163| v163_4(void) = Call[String] : func:r163_3, this:r163_1 -# 163| mu163_5(unknown) = ^CallSideEffect : ~m? -# 163| mu163_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r163_1 -# 164| r164_1(glval) = VariableAddress[x48] : -# 164| r164_2(glval) = FunctionAddress[~String] : -# 164| v164_3(void) = Call[~String] : func:r164_2, this:r164_1 -# 164| mu164_4(unknown) = ^CallSideEffect : ~m? -# 164| v164_5(void) = ^IndirectReadSideEffect[-1] : &:r164_1, ~m? -# 164| mu164_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r164_1 -# 164| r164_7(bool) = Constant[0] : -# 164| v164_8(void) = ConditionalBranch : r164_7 +# 35| Block 49 +# 35| r35_673(glval) = VariableAddress[x48] : +# 35| mu35_674(String) = Uninitialized[x48] : &:r35_673 +# 35| r35_675(glval) = FunctionAddress[String] : +# 35| v35_676(void) = Call[String] : func:r35_675, this:r35_673 +# 35| mu35_677(unknown) = ^CallSideEffect : ~m? +# 35| mu35_678(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_673 +# 35| r35_679(glval) = VariableAddress[x48] : +# 35| r35_680(glval) = FunctionAddress[~String] : +# 35| v35_681(void) = Call[~String] : func:r35_680, this:r35_679 +# 35| mu35_682(unknown) = ^CallSideEffect : ~m? +# 35| v35_683(void) = ^IndirectReadSideEffect[-1] : &:r35_679, ~m? +# 35| mu35_684(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_679 +# 35| r35_685(bool) = Constant[0] : +# 35| v35_686(void) = ConditionalBranch : r35_685 #-----| False -> Block 50 #-----| True (back edge) -> Block 49 -# 166| Block 50 -# 166| r166_1(glval) = VariableAddress[x49] : -# 166| mu166_2(String) = Uninitialized[x49] : &:r166_1 -# 166| r166_3(glval) = FunctionAddress[String] : -# 166| v166_4(void) = Call[String] : func:r166_3, this:r166_1 -# 166| mu166_5(unknown) = ^CallSideEffect : ~m? -# 166| mu166_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r166_1 -# 167| r167_1(glval) = VariableAddress[x49] : -# 167| r167_2(glval) = FunctionAddress[~String] : -# 167| v167_3(void) = Call[~String] : func:r167_2, this:r167_1 -# 167| mu167_4(unknown) = ^CallSideEffect : ~m? -# 167| v167_5(void) = ^IndirectReadSideEffect[-1] : &:r167_1, ~m? -# 167| mu167_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r167_1 -# 167| r167_7(bool) = Constant[0] : -# 167| v167_8(void) = ConditionalBranch : r167_7 +# 35| Block 50 +# 35| r35_687(glval) = VariableAddress[x49] : +# 35| mu35_688(String) = Uninitialized[x49] : &:r35_687 +# 35| r35_689(glval) = FunctionAddress[String] : +# 35| v35_690(void) = Call[String] : func:r35_689, this:r35_687 +# 35| mu35_691(unknown) = ^CallSideEffect : ~m? +# 35| mu35_692(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_687 +# 35| r35_693(glval) = VariableAddress[x49] : +# 35| r35_694(glval) = FunctionAddress[~String] : +# 35| v35_695(void) = Call[~String] : func:r35_694, this:r35_693 +# 35| mu35_696(unknown) = ^CallSideEffect : ~m? +# 35| v35_697(void) = ^IndirectReadSideEffect[-1] : &:r35_693, ~m? +# 35| mu35_698(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_693 +# 35| r35_699(bool) = Constant[0] : +# 35| v35_700(void) = ConditionalBranch : r35_699 #-----| False -> Block 51 #-----| True (back edge) -> Block 50 -# 169| Block 51 -# 169| r169_1(glval) = VariableAddress[x50] : -# 169| mu169_2(String) = Uninitialized[x50] : &:r169_1 -# 169| r169_3(glval) = FunctionAddress[String] : -# 169| v169_4(void) = Call[String] : func:r169_3, this:r169_1 -# 169| mu169_5(unknown) = ^CallSideEffect : ~m? -# 169| mu169_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r169_1 -# 170| r170_1(glval) = VariableAddress[x50] : -# 170| r170_2(glval) = FunctionAddress[~String] : -# 170| v170_3(void) = Call[~String] : func:r170_2, this:r170_1 -# 170| mu170_4(unknown) = ^CallSideEffect : ~m? -# 170| v170_5(void) = ^IndirectReadSideEffect[-1] : &:r170_1, ~m? -# 170| mu170_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r170_1 -# 170| r170_7(bool) = Constant[0] : -# 170| v170_8(void) = ConditionalBranch : r170_7 +# 35| Block 51 +# 35| r35_701(glval) = VariableAddress[x50] : +# 35| mu35_702(String) = Uninitialized[x50] : &:r35_701 +# 35| r35_703(glval) = FunctionAddress[String] : +# 35| v35_704(void) = Call[String] : func:r35_703, this:r35_701 +# 35| mu35_705(unknown) = ^CallSideEffect : ~m? +# 35| mu35_706(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_701 +# 35| r35_707(glval) = VariableAddress[x50] : +# 35| r35_708(glval) = FunctionAddress[~String] : +# 35| v35_709(void) = Call[~String] : func:r35_708, this:r35_707 +# 35| mu35_710(unknown) = ^CallSideEffect : ~m? +# 35| v35_711(void) = ^IndirectReadSideEffect[-1] : &:r35_707, ~m? +# 35| mu35_712(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_707 +# 35| r35_713(bool) = Constant[0] : +# 35| v35_714(void) = ConditionalBranch : r35_713 #-----| False -> Block 52 #-----| True (back edge) -> Block 51 -# 172| Block 52 -# 172| r172_1(glval) = VariableAddress[x51] : -# 172| mu172_2(String) = Uninitialized[x51] : &:r172_1 -# 172| r172_3(glval) = FunctionAddress[String] : -# 172| v172_4(void) = Call[String] : func:r172_3, this:r172_1 -# 172| mu172_5(unknown) = ^CallSideEffect : ~m? -# 172| mu172_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r172_1 -# 173| r173_1(glval) = VariableAddress[x51] : -# 173| r173_2(glval) = FunctionAddress[~String] : -# 173| v173_3(void) = Call[~String] : func:r173_2, this:r173_1 -# 173| mu173_4(unknown) = ^CallSideEffect : ~m? -# 173| v173_5(void) = ^IndirectReadSideEffect[-1] : &:r173_1, ~m? -# 173| mu173_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r173_1 -# 173| r173_7(bool) = Constant[0] : -# 173| v173_8(void) = ConditionalBranch : r173_7 +# 35| Block 52 +# 35| r35_715(glval) = VariableAddress[x51] : +# 35| mu35_716(String) = Uninitialized[x51] : &:r35_715 +# 35| r35_717(glval) = FunctionAddress[String] : +# 35| v35_718(void) = Call[String] : func:r35_717, this:r35_715 +# 35| mu35_719(unknown) = ^CallSideEffect : ~m? +# 35| mu35_720(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_715 +# 35| r35_721(glval) = VariableAddress[x51] : +# 35| r35_722(glval) = FunctionAddress[~String] : +# 35| v35_723(void) = Call[~String] : func:r35_722, this:r35_721 +# 35| mu35_724(unknown) = ^CallSideEffect : ~m? +# 35| v35_725(void) = ^IndirectReadSideEffect[-1] : &:r35_721, ~m? +# 35| mu35_726(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_721 +# 35| r35_727(bool) = Constant[0] : +# 35| v35_728(void) = ConditionalBranch : r35_727 #-----| False -> Block 53 #-----| True (back edge) -> Block 52 -# 175| Block 53 -# 175| r175_1(glval) = VariableAddress[x52] : -# 175| mu175_2(String) = Uninitialized[x52] : &:r175_1 -# 175| r175_3(glval) = FunctionAddress[String] : -# 175| v175_4(void) = Call[String] : func:r175_3, this:r175_1 -# 175| mu175_5(unknown) = ^CallSideEffect : ~m? -# 175| mu175_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r175_1 -# 176| r176_1(glval) = VariableAddress[x52] : -# 176| r176_2(glval) = FunctionAddress[~String] : -# 176| v176_3(void) = Call[~String] : func:r176_2, this:r176_1 -# 176| mu176_4(unknown) = ^CallSideEffect : ~m? -# 176| v176_5(void) = ^IndirectReadSideEffect[-1] : &:r176_1, ~m? -# 176| mu176_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r176_1 -# 176| r176_7(bool) = Constant[0] : -# 176| v176_8(void) = ConditionalBranch : r176_7 +# 35| Block 53 +# 35| r35_729(glval) = VariableAddress[x52] : +# 35| mu35_730(String) = Uninitialized[x52] : &:r35_729 +# 35| r35_731(glval) = FunctionAddress[String] : +# 35| v35_732(void) = Call[String] : func:r35_731, this:r35_729 +# 35| mu35_733(unknown) = ^CallSideEffect : ~m? +# 35| mu35_734(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_729 +# 35| r35_735(glval) = VariableAddress[x52] : +# 35| r35_736(glval) = FunctionAddress[~String] : +# 35| v35_737(void) = Call[~String] : func:r35_736, this:r35_735 +# 35| mu35_738(unknown) = ^CallSideEffect : ~m? +# 35| v35_739(void) = ^IndirectReadSideEffect[-1] : &:r35_735, ~m? +# 35| mu35_740(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_735 +# 35| r35_741(bool) = Constant[0] : +# 35| v35_742(void) = ConditionalBranch : r35_741 #-----| False -> Block 54 #-----| True (back edge) -> Block 53 -# 178| Block 54 -# 178| r178_1(glval) = VariableAddress[x53] : -# 178| mu178_2(String) = Uninitialized[x53] : &:r178_1 -# 178| r178_3(glval) = FunctionAddress[String] : -# 178| v178_4(void) = Call[String] : func:r178_3, this:r178_1 -# 178| mu178_5(unknown) = ^CallSideEffect : ~m? -# 178| mu178_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r178_1 -# 179| r179_1(glval) = VariableAddress[x53] : -# 179| r179_2(glval) = FunctionAddress[~String] : -# 179| v179_3(void) = Call[~String] : func:r179_2, this:r179_1 -# 179| mu179_4(unknown) = ^CallSideEffect : ~m? -# 179| v179_5(void) = ^IndirectReadSideEffect[-1] : &:r179_1, ~m? -# 179| mu179_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r179_1 -# 179| r179_7(bool) = Constant[0] : -# 179| v179_8(void) = ConditionalBranch : r179_7 +# 35| Block 54 +# 35| r35_743(glval) = VariableAddress[x53] : +# 35| mu35_744(String) = Uninitialized[x53] : &:r35_743 +# 35| r35_745(glval) = FunctionAddress[String] : +# 35| v35_746(void) = Call[String] : func:r35_745, this:r35_743 +# 35| mu35_747(unknown) = ^CallSideEffect : ~m? +# 35| mu35_748(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_743 +# 35| r35_749(glval) = VariableAddress[x53] : +# 35| r35_750(glval) = FunctionAddress[~String] : +# 35| v35_751(void) = Call[~String] : func:r35_750, this:r35_749 +# 35| mu35_752(unknown) = ^CallSideEffect : ~m? +# 35| v35_753(void) = ^IndirectReadSideEffect[-1] : &:r35_749, ~m? +# 35| mu35_754(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_749 +# 35| r35_755(bool) = Constant[0] : +# 35| v35_756(void) = ConditionalBranch : r35_755 #-----| False -> Block 55 #-----| True (back edge) -> Block 54 -# 181| Block 55 -# 181| r181_1(glval) = VariableAddress[x54] : -# 181| mu181_2(String) = Uninitialized[x54] : &:r181_1 -# 181| r181_3(glval) = FunctionAddress[String] : -# 181| v181_4(void) = Call[String] : func:r181_3, this:r181_1 -# 181| mu181_5(unknown) = ^CallSideEffect : ~m? -# 181| mu181_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r181_1 -# 182| r182_1(glval) = VariableAddress[x54] : -# 182| r182_2(glval) = FunctionAddress[~String] : -# 182| v182_3(void) = Call[~String] : func:r182_2, this:r182_1 -# 182| mu182_4(unknown) = ^CallSideEffect : ~m? -# 182| v182_5(void) = ^IndirectReadSideEffect[-1] : &:r182_1, ~m? -# 182| mu182_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r182_1 -# 182| r182_7(bool) = Constant[0] : -# 182| v182_8(void) = ConditionalBranch : r182_7 +# 35| Block 55 +# 35| r35_757(glval) = VariableAddress[x54] : +# 35| mu35_758(String) = Uninitialized[x54] : &:r35_757 +# 35| r35_759(glval) = FunctionAddress[String] : +# 35| v35_760(void) = Call[String] : func:r35_759, this:r35_757 +# 35| mu35_761(unknown) = ^CallSideEffect : ~m? +# 35| mu35_762(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_757 +# 35| r35_763(glval) = VariableAddress[x54] : +# 35| r35_764(glval) = FunctionAddress[~String] : +# 35| v35_765(void) = Call[~String] : func:r35_764, this:r35_763 +# 35| mu35_766(unknown) = ^CallSideEffect : ~m? +# 35| v35_767(void) = ^IndirectReadSideEffect[-1] : &:r35_763, ~m? +# 35| mu35_768(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_763 +# 35| r35_769(bool) = Constant[0] : +# 35| v35_770(void) = ConditionalBranch : r35_769 #-----| False -> Block 56 #-----| True (back edge) -> Block 55 -# 184| Block 56 -# 184| r184_1(glval) = VariableAddress[x55] : -# 184| mu184_2(String) = Uninitialized[x55] : &:r184_1 -# 184| r184_3(glval) = FunctionAddress[String] : -# 184| v184_4(void) = Call[String] : func:r184_3, this:r184_1 -# 184| mu184_5(unknown) = ^CallSideEffect : ~m? -# 184| mu184_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r184_1 -# 185| r185_1(glval) = VariableAddress[x55] : -# 185| r185_2(glval) = FunctionAddress[~String] : -# 185| v185_3(void) = Call[~String] : func:r185_2, this:r185_1 -# 185| mu185_4(unknown) = ^CallSideEffect : ~m? -# 185| v185_5(void) = ^IndirectReadSideEffect[-1] : &:r185_1, ~m? -# 185| mu185_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r185_1 -# 185| r185_7(bool) = Constant[0] : -# 185| v185_8(void) = ConditionalBranch : r185_7 +# 35| Block 56 +# 35| r35_771(glval) = VariableAddress[x55] : +# 35| mu35_772(String) = Uninitialized[x55] : &:r35_771 +# 35| r35_773(glval) = FunctionAddress[String] : +# 35| v35_774(void) = Call[String] : func:r35_773, this:r35_771 +# 35| mu35_775(unknown) = ^CallSideEffect : ~m? +# 35| mu35_776(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_771 +# 35| r35_777(glval) = VariableAddress[x55] : +# 35| r35_778(glval) = FunctionAddress[~String] : +# 35| v35_779(void) = Call[~String] : func:r35_778, this:r35_777 +# 35| mu35_780(unknown) = ^CallSideEffect : ~m? +# 35| v35_781(void) = ^IndirectReadSideEffect[-1] : &:r35_777, ~m? +# 35| mu35_782(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_777 +# 35| r35_783(bool) = Constant[0] : +# 35| v35_784(void) = ConditionalBranch : r35_783 #-----| False -> Block 57 #-----| True (back edge) -> Block 56 -# 187| Block 57 -# 187| r187_1(glval) = VariableAddress[x56] : -# 187| mu187_2(String) = Uninitialized[x56] : &:r187_1 -# 187| r187_3(glval) = FunctionAddress[String] : -# 187| v187_4(void) = Call[String] : func:r187_3, this:r187_1 -# 187| mu187_5(unknown) = ^CallSideEffect : ~m? -# 187| mu187_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r187_1 -# 188| r188_1(glval) = VariableAddress[x56] : -# 188| r188_2(glval) = FunctionAddress[~String] : -# 188| v188_3(void) = Call[~String] : func:r188_2, this:r188_1 -# 188| mu188_4(unknown) = ^CallSideEffect : ~m? -# 188| v188_5(void) = ^IndirectReadSideEffect[-1] : &:r188_1, ~m? -# 188| mu188_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r188_1 -# 188| r188_7(bool) = Constant[0] : -# 188| v188_8(void) = ConditionalBranch : r188_7 +# 35| Block 57 +# 35| r35_785(glval) = VariableAddress[x56] : +# 35| mu35_786(String) = Uninitialized[x56] : &:r35_785 +# 35| r35_787(glval) = FunctionAddress[String] : +# 35| v35_788(void) = Call[String] : func:r35_787, this:r35_785 +# 35| mu35_789(unknown) = ^CallSideEffect : ~m? +# 35| mu35_790(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_785 +# 35| r35_791(glval) = VariableAddress[x56] : +# 35| r35_792(glval) = FunctionAddress[~String] : +# 35| v35_793(void) = Call[~String] : func:r35_792, this:r35_791 +# 35| mu35_794(unknown) = ^CallSideEffect : ~m? +# 35| v35_795(void) = ^IndirectReadSideEffect[-1] : &:r35_791, ~m? +# 35| mu35_796(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_791 +# 35| r35_797(bool) = Constant[0] : +# 35| v35_798(void) = ConditionalBranch : r35_797 #-----| False -> Block 58 #-----| True (back edge) -> Block 57 -# 190| Block 58 -# 190| r190_1(glval) = VariableAddress[x57] : -# 190| mu190_2(String) = Uninitialized[x57] : &:r190_1 -# 190| r190_3(glval) = FunctionAddress[String] : -# 190| v190_4(void) = Call[String] : func:r190_3, this:r190_1 -# 190| mu190_5(unknown) = ^CallSideEffect : ~m? -# 190| mu190_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r190_1 -# 191| r191_1(glval) = VariableAddress[x57] : -# 191| r191_2(glval) = FunctionAddress[~String] : -# 191| v191_3(void) = Call[~String] : func:r191_2, this:r191_1 -# 191| mu191_4(unknown) = ^CallSideEffect : ~m? -# 191| v191_5(void) = ^IndirectReadSideEffect[-1] : &:r191_1, ~m? -# 191| mu191_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r191_1 -# 191| r191_7(bool) = Constant[0] : -# 191| v191_8(void) = ConditionalBranch : r191_7 +# 35| Block 58 +# 35| r35_799(glval) = VariableAddress[x57] : +# 35| mu35_800(String) = Uninitialized[x57] : &:r35_799 +# 35| r35_801(glval) = FunctionAddress[String] : +# 35| v35_802(void) = Call[String] : func:r35_801, this:r35_799 +# 35| mu35_803(unknown) = ^CallSideEffect : ~m? +# 35| mu35_804(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_799 +# 35| r35_805(glval) = VariableAddress[x57] : +# 35| r35_806(glval) = FunctionAddress[~String] : +# 35| v35_807(void) = Call[~String] : func:r35_806, this:r35_805 +# 35| mu35_808(unknown) = ^CallSideEffect : ~m? +# 35| v35_809(void) = ^IndirectReadSideEffect[-1] : &:r35_805, ~m? +# 35| mu35_810(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_805 +# 35| r35_811(bool) = Constant[0] : +# 35| v35_812(void) = ConditionalBranch : r35_811 #-----| False -> Block 59 #-----| True (back edge) -> Block 58 -# 193| Block 59 -# 193| r193_1(glval) = VariableAddress[x58] : -# 193| mu193_2(String) = Uninitialized[x58] : &:r193_1 -# 193| r193_3(glval) = FunctionAddress[String] : -# 193| v193_4(void) = Call[String] : func:r193_3, this:r193_1 -# 193| mu193_5(unknown) = ^CallSideEffect : ~m? -# 193| mu193_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r193_1 -# 194| r194_1(glval) = VariableAddress[x58] : -# 194| r194_2(glval) = FunctionAddress[~String] : -# 194| v194_3(void) = Call[~String] : func:r194_2, this:r194_1 -# 194| mu194_4(unknown) = ^CallSideEffect : ~m? -# 194| v194_5(void) = ^IndirectReadSideEffect[-1] : &:r194_1, ~m? -# 194| mu194_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r194_1 -# 194| r194_7(bool) = Constant[0] : -# 194| v194_8(void) = ConditionalBranch : r194_7 +# 35| Block 59 +# 35| r35_813(glval) = VariableAddress[x58] : +# 35| mu35_814(String) = Uninitialized[x58] : &:r35_813 +# 35| r35_815(glval) = FunctionAddress[String] : +# 35| v35_816(void) = Call[String] : func:r35_815, this:r35_813 +# 35| mu35_817(unknown) = ^CallSideEffect : ~m? +# 35| mu35_818(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_813 +# 35| r35_819(glval) = VariableAddress[x58] : +# 35| r35_820(glval) = FunctionAddress[~String] : +# 35| v35_821(void) = Call[~String] : func:r35_820, this:r35_819 +# 35| mu35_822(unknown) = ^CallSideEffect : ~m? +# 35| v35_823(void) = ^IndirectReadSideEffect[-1] : &:r35_819, ~m? +# 35| mu35_824(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_819 +# 35| r35_825(bool) = Constant[0] : +# 35| v35_826(void) = ConditionalBranch : r35_825 #-----| False -> Block 60 #-----| True (back edge) -> Block 59 -# 196| Block 60 -# 196| r196_1(glval) = VariableAddress[x59] : -# 196| mu196_2(String) = Uninitialized[x59] : &:r196_1 -# 196| r196_3(glval) = FunctionAddress[String] : -# 196| v196_4(void) = Call[String] : func:r196_3, this:r196_1 -# 196| mu196_5(unknown) = ^CallSideEffect : ~m? -# 196| mu196_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r196_1 -# 197| r197_1(glval) = VariableAddress[x59] : -# 197| r197_2(glval) = FunctionAddress[~String] : -# 197| v197_3(void) = Call[~String] : func:r197_2, this:r197_1 -# 197| mu197_4(unknown) = ^CallSideEffect : ~m? -# 197| v197_5(void) = ^IndirectReadSideEffect[-1] : &:r197_1, ~m? -# 197| mu197_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r197_1 -# 197| r197_7(bool) = Constant[0] : -# 197| v197_8(void) = ConditionalBranch : r197_7 +# 35| Block 60 +# 35| r35_827(glval) = VariableAddress[x59] : +# 35| mu35_828(String) = Uninitialized[x59] : &:r35_827 +# 35| r35_829(glval) = FunctionAddress[String] : +# 35| v35_830(void) = Call[String] : func:r35_829, this:r35_827 +# 35| mu35_831(unknown) = ^CallSideEffect : ~m? +# 35| mu35_832(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_827 +# 35| r35_833(glval) = VariableAddress[x59] : +# 35| r35_834(glval) = FunctionAddress[~String] : +# 35| v35_835(void) = Call[~String] : func:r35_834, this:r35_833 +# 35| mu35_836(unknown) = ^CallSideEffect : ~m? +# 35| v35_837(void) = ^IndirectReadSideEffect[-1] : &:r35_833, ~m? +# 35| mu35_838(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_833 +# 35| r35_839(bool) = Constant[0] : +# 35| v35_840(void) = ConditionalBranch : r35_839 #-----| False -> Block 61 #-----| True (back edge) -> Block 60 -# 199| Block 61 -# 199| r199_1(glval) = VariableAddress[x60] : -# 199| mu199_2(String) = Uninitialized[x60] : &:r199_1 -# 199| r199_3(glval) = FunctionAddress[String] : -# 199| v199_4(void) = Call[String] : func:r199_3, this:r199_1 -# 199| mu199_5(unknown) = ^CallSideEffect : ~m? -# 199| mu199_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r199_1 -# 200| r200_1(glval) = VariableAddress[x60] : -# 200| r200_2(glval) = FunctionAddress[~String] : -# 200| v200_3(void) = Call[~String] : func:r200_2, this:r200_1 -# 200| mu200_4(unknown) = ^CallSideEffect : ~m? -# 200| v200_5(void) = ^IndirectReadSideEffect[-1] : &:r200_1, ~m? -# 200| mu200_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r200_1 -# 200| r200_7(bool) = Constant[0] : -# 200| v200_8(void) = ConditionalBranch : r200_7 +# 35| Block 61 +# 35| r35_841(glval) = VariableAddress[x60] : +# 35| mu35_842(String) = Uninitialized[x60] : &:r35_841 +# 35| r35_843(glval) = FunctionAddress[String] : +# 35| v35_844(void) = Call[String] : func:r35_843, this:r35_841 +# 35| mu35_845(unknown) = ^CallSideEffect : ~m? +# 35| mu35_846(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_841 +# 35| r35_847(glval) = VariableAddress[x60] : +# 35| r35_848(glval) = FunctionAddress[~String] : +# 35| v35_849(void) = Call[~String] : func:r35_848, this:r35_847 +# 35| mu35_850(unknown) = ^CallSideEffect : ~m? +# 35| v35_851(void) = ^IndirectReadSideEffect[-1] : &:r35_847, ~m? +# 35| mu35_852(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_847 +# 35| r35_853(bool) = Constant[0] : +# 35| v35_854(void) = ConditionalBranch : r35_853 #-----| False -> Block 62 #-----| True (back edge) -> Block 61 -# 202| Block 62 -# 202| r202_1(glval) = VariableAddress[x61] : -# 202| mu202_2(String) = Uninitialized[x61] : &:r202_1 -# 202| r202_3(glval) = FunctionAddress[String] : -# 202| v202_4(void) = Call[String] : func:r202_3, this:r202_1 -# 202| mu202_5(unknown) = ^CallSideEffect : ~m? -# 202| mu202_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r202_1 -# 203| r203_1(glval) = VariableAddress[x61] : -# 203| r203_2(glval) = FunctionAddress[~String] : -# 203| v203_3(void) = Call[~String] : func:r203_2, this:r203_1 -# 203| mu203_4(unknown) = ^CallSideEffect : ~m? -# 203| v203_5(void) = ^IndirectReadSideEffect[-1] : &:r203_1, ~m? -# 203| mu203_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r203_1 -# 203| r203_7(bool) = Constant[0] : -# 203| v203_8(void) = ConditionalBranch : r203_7 +# 35| Block 62 +# 35| r35_855(glval) = VariableAddress[x61] : +# 35| mu35_856(String) = Uninitialized[x61] : &:r35_855 +# 35| r35_857(glval) = FunctionAddress[String] : +# 35| v35_858(void) = Call[String] : func:r35_857, this:r35_855 +# 35| mu35_859(unknown) = ^CallSideEffect : ~m? +# 35| mu35_860(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_855 +# 35| r35_861(glval) = VariableAddress[x61] : +# 35| r35_862(glval) = FunctionAddress[~String] : +# 35| v35_863(void) = Call[~String] : func:r35_862, this:r35_861 +# 35| mu35_864(unknown) = ^CallSideEffect : ~m? +# 35| v35_865(void) = ^IndirectReadSideEffect[-1] : &:r35_861, ~m? +# 35| mu35_866(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_861 +# 35| r35_867(bool) = Constant[0] : +# 35| v35_868(void) = ConditionalBranch : r35_867 #-----| False -> Block 63 #-----| True (back edge) -> Block 62 -# 205| Block 63 -# 205| r205_1(glval) = VariableAddress[x62] : -# 205| mu205_2(String) = Uninitialized[x62] : &:r205_1 -# 205| r205_3(glval) = FunctionAddress[String] : -# 205| v205_4(void) = Call[String] : func:r205_3, this:r205_1 -# 205| mu205_5(unknown) = ^CallSideEffect : ~m? -# 205| mu205_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r205_1 -# 206| r206_1(glval) = VariableAddress[x62] : -# 206| r206_2(glval) = FunctionAddress[~String] : -# 206| v206_3(void) = Call[~String] : func:r206_2, this:r206_1 -# 206| mu206_4(unknown) = ^CallSideEffect : ~m? -# 206| v206_5(void) = ^IndirectReadSideEffect[-1] : &:r206_1, ~m? -# 206| mu206_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r206_1 -# 206| r206_7(bool) = Constant[0] : -# 206| v206_8(void) = ConditionalBranch : r206_7 +# 35| Block 63 +# 35| r35_869(glval) = VariableAddress[x62] : +# 35| mu35_870(String) = Uninitialized[x62] : &:r35_869 +# 35| r35_871(glval) = FunctionAddress[String] : +# 35| v35_872(void) = Call[String] : func:r35_871, this:r35_869 +# 35| mu35_873(unknown) = ^CallSideEffect : ~m? +# 35| mu35_874(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_869 +# 35| r35_875(glval) = VariableAddress[x62] : +# 35| r35_876(glval) = FunctionAddress[~String] : +# 35| v35_877(void) = Call[~String] : func:r35_876, this:r35_875 +# 35| mu35_878(unknown) = ^CallSideEffect : ~m? +# 35| v35_879(void) = ^IndirectReadSideEffect[-1] : &:r35_875, ~m? +# 35| mu35_880(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_875 +# 35| r35_881(bool) = Constant[0] : +# 35| v35_882(void) = ConditionalBranch : r35_881 #-----| False -> Block 64 #-----| True (back edge) -> Block 63 -# 208| Block 64 -# 208| r208_1(glval) = VariableAddress[x63] : -# 208| mu208_2(String) = Uninitialized[x63] : &:r208_1 -# 208| r208_3(glval) = FunctionAddress[String] : -# 208| v208_4(void) = Call[String] : func:r208_3, this:r208_1 -# 208| mu208_5(unknown) = ^CallSideEffect : ~m? -# 208| mu208_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r208_1 -# 209| r209_1(glval) = VariableAddress[x63] : -# 209| r209_2(glval) = FunctionAddress[~String] : -# 209| v209_3(void) = Call[~String] : func:r209_2, this:r209_1 -# 209| mu209_4(unknown) = ^CallSideEffect : ~m? -# 209| v209_5(void) = ^IndirectReadSideEffect[-1] : &:r209_1, ~m? -# 209| mu209_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r209_1 -# 209| r209_7(bool) = Constant[0] : -# 209| v209_8(void) = ConditionalBranch : r209_7 +# 35| Block 64 +# 35| r35_883(glval) = VariableAddress[x63] : +# 35| mu35_884(String) = Uninitialized[x63] : &:r35_883 +# 35| r35_885(glval) = FunctionAddress[String] : +# 35| v35_886(void) = Call[String] : func:r35_885, this:r35_883 +# 35| mu35_887(unknown) = ^CallSideEffect : ~m? +# 35| mu35_888(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_883 +# 35| r35_889(glval) = VariableAddress[x63] : +# 35| r35_890(glval) = FunctionAddress[~String] : +# 35| v35_891(void) = Call[~String] : func:r35_890, this:r35_889 +# 35| mu35_892(unknown) = ^CallSideEffect : ~m? +# 35| v35_893(void) = ^IndirectReadSideEffect[-1] : &:r35_889, ~m? +# 35| mu35_894(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_889 +# 35| r35_895(bool) = Constant[0] : +# 35| v35_896(void) = ConditionalBranch : r35_895 #-----| False -> Block 65 #-----| True (back edge) -> Block 64 -# 211| Block 65 -# 211| r211_1(glval) = VariableAddress[x64] : -# 211| mu211_2(String) = Uninitialized[x64] : &:r211_1 -# 211| r211_3(glval) = FunctionAddress[String] : -# 211| v211_4(void) = Call[String] : func:r211_3, this:r211_1 -# 211| mu211_5(unknown) = ^CallSideEffect : ~m? -# 211| mu211_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r211_1 -# 212| r212_1(glval) = VariableAddress[x64] : -# 212| r212_2(glval) = FunctionAddress[~String] : -# 212| v212_3(void) = Call[~String] : func:r212_2, this:r212_1 -# 212| mu212_4(unknown) = ^CallSideEffect : ~m? -# 212| v212_5(void) = ^IndirectReadSideEffect[-1] : &:r212_1, ~m? -# 212| mu212_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r212_1 -# 212| r212_7(bool) = Constant[0] : -# 212| v212_8(void) = ConditionalBranch : r212_7 +# 35| Block 65 +# 35| r35_897(glval) = VariableAddress[x64] : +# 35| mu35_898(String) = Uninitialized[x64] : &:r35_897 +# 35| r35_899(glval) = FunctionAddress[String] : +# 35| v35_900(void) = Call[String] : func:r35_899, this:r35_897 +# 35| mu35_901(unknown) = ^CallSideEffect : ~m? +# 35| mu35_902(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_897 +# 35| r35_903(glval) = VariableAddress[x64] : +# 35| r35_904(glval) = FunctionAddress[~String] : +# 35| v35_905(void) = Call[~String] : func:r35_904, this:r35_903 +# 35| mu35_906(unknown) = ^CallSideEffect : ~m? +# 35| v35_907(void) = ^IndirectReadSideEffect[-1] : &:r35_903, ~m? +# 35| mu35_908(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_903 +# 35| r35_909(bool) = Constant[0] : +# 35| v35_910(void) = ConditionalBranch : r35_909 #-----| False -> Block 66 #-----| True (back edge) -> Block 65 -# 214| Block 66 -# 214| r214_1(glval) = VariableAddress[x65] : -# 214| mu214_2(String) = Uninitialized[x65] : &:r214_1 -# 214| r214_3(glval) = FunctionAddress[String] : -# 214| v214_4(void) = Call[String] : func:r214_3, this:r214_1 -# 214| mu214_5(unknown) = ^CallSideEffect : ~m? -# 214| mu214_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r214_1 -# 215| r215_1(glval) = VariableAddress[x65] : -# 215| r215_2(glval) = FunctionAddress[~String] : -# 215| v215_3(void) = Call[~String] : func:r215_2, this:r215_1 -# 215| mu215_4(unknown) = ^CallSideEffect : ~m? -# 215| v215_5(void) = ^IndirectReadSideEffect[-1] : &:r215_1, ~m? -# 215| mu215_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r215_1 -# 215| r215_7(bool) = Constant[0] : -# 215| v215_8(void) = ConditionalBranch : r215_7 +# 35| Block 66 +# 35| r35_911(glval) = VariableAddress[x65] : +# 35| mu35_912(String) = Uninitialized[x65] : &:r35_911 +# 35| r35_913(glval) = FunctionAddress[String] : +# 35| v35_914(void) = Call[String] : func:r35_913, this:r35_911 +# 35| mu35_915(unknown) = ^CallSideEffect : ~m? +# 35| mu35_916(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_911 +# 35| r35_917(glval) = VariableAddress[x65] : +# 35| r35_918(glval) = FunctionAddress[~String] : +# 35| v35_919(void) = Call[~String] : func:r35_918, this:r35_917 +# 35| mu35_920(unknown) = ^CallSideEffect : ~m? +# 35| v35_921(void) = ^IndirectReadSideEffect[-1] : &:r35_917, ~m? +# 35| mu35_922(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_917 +# 35| r35_923(bool) = Constant[0] : +# 35| v35_924(void) = ConditionalBranch : r35_923 #-----| False -> Block 67 #-----| True (back edge) -> Block 66 -# 217| Block 67 -# 217| r217_1(glval) = VariableAddress[x66] : -# 217| mu217_2(String) = Uninitialized[x66] : &:r217_1 -# 217| r217_3(glval) = FunctionAddress[String] : -# 217| v217_4(void) = Call[String] : func:r217_3, this:r217_1 -# 217| mu217_5(unknown) = ^CallSideEffect : ~m? -# 217| mu217_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r217_1 -# 218| r218_1(glval) = VariableAddress[x66] : -# 218| r218_2(glval) = FunctionAddress[~String] : -# 218| v218_3(void) = Call[~String] : func:r218_2, this:r218_1 -# 218| mu218_4(unknown) = ^CallSideEffect : ~m? -# 218| v218_5(void) = ^IndirectReadSideEffect[-1] : &:r218_1, ~m? -# 218| mu218_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r218_1 -# 218| r218_7(bool) = Constant[0] : -# 218| v218_8(void) = ConditionalBranch : r218_7 +# 35| Block 67 +# 35| r35_925(glval) = VariableAddress[x66] : +# 35| mu35_926(String) = Uninitialized[x66] : &:r35_925 +# 35| r35_927(glval) = FunctionAddress[String] : +# 35| v35_928(void) = Call[String] : func:r35_927, this:r35_925 +# 35| mu35_929(unknown) = ^CallSideEffect : ~m? +# 35| mu35_930(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_925 +# 35| r35_931(glval) = VariableAddress[x66] : +# 35| r35_932(glval) = FunctionAddress[~String] : +# 35| v35_933(void) = Call[~String] : func:r35_932, this:r35_931 +# 35| mu35_934(unknown) = ^CallSideEffect : ~m? +# 35| v35_935(void) = ^IndirectReadSideEffect[-1] : &:r35_931, ~m? +# 35| mu35_936(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_931 +# 35| r35_937(bool) = Constant[0] : +# 35| v35_938(void) = ConditionalBranch : r35_937 #-----| False -> Block 68 #-----| True (back edge) -> Block 67 -# 220| Block 68 -# 220| r220_1(glval) = VariableAddress[x67] : -# 220| mu220_2(String) = Uninitialized[x67] : &:r220_1 -# 220| r220_3(glval) = FunctionAddress[String] : -# 220| v220_4(void) = Call[String] : func:r220_3, this:r220_1 -# 220| mu220_5(unknown) = ^CallSideEffect : ~m? -# 220| mu220_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r220_1 -# 221| r221_1(glval) = VariableAddress[x67] : -# 221| r221_2(glval) = FunctionAddress[~String] : -# 221| v221_3(void) = Call[~String] : func:r221_2, this:r221_1 -# 221| mu221_4(unknown) = ^CallSideEffect : ~m? -# 221| v221_5(void) = ^IndirectReadSideEffect[-1] : &:r221_1, ~m? -# 221| mu221_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r221_1 -# 221| r221_7(bool) = Constant[0] : -# 221| v221_8(void) = ConditionalBranch : r221_7 +# 35| Block 68 +# 35| r35_939(glval) = VariableAddress[x67] : +# 35| mu35_940(String) = Uninitialized[x67] : &:r35_939 +# 35| r35_941(glval) = FunctionAddress[String] : +# 35| v35_942(void) = Call[String] : func:r35_941, this:r35_939 +# 35| mu35_943(unknown) = ^CallSideEffect : ~m? +# 35| mu35_944(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_939 +# 35| r35_945(glval) = VariableAddress[x67] : +# 35| r35_946(glval) = FunctionAddress[~String] : +# 35| v35_947(void) = Call[~String] : func:r35_946, this:r35_945 +# 35| mu35_948(unknown) = ^CallSideEffect : ~m? +# 35| v35_949(void) = ^IndirectReadSideEffect[-1] : &:r35_945, ~m? +# 35| mu35_950(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_945 +# 35| r35_951(bool) = Constant[0] : +# 35| v35_952(void) = ConditionalBranch : r35_951 #-----| False -> Block 69 #-----| True (back edge) -> Block 68 -# 223| Block 69 -# 223| r223_1(glval) = VariableAddress[x68] : -# 223| mu223_2(String) = Uninitialized[x68] : &:r223_1 -# 223| r223_3(glval) = FunctionAddress[String] : -# 223| v223_4(void) = Call[String] : func:r223_3, this:r223_1 -# 223| mu223_5(unknown) = ^CallSideEffect : ~m? -# 223| mu223_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r223_1 -# 224| r224_1(glval) = VariableAddress[x68] : -# 224| r224_2(glval) = FunctionAddress[~String] : -# 224| v224_3(void) = Call[~String] : func:r224_2, this:r224_1 -# 224| mu224_4(unknown) = ^CallSideEffect : ~m? -# 224| v224_5(void) = ^IndirectReadSideEffect[-1] : &:r224_1, ~m? -# 224| mu224_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r224_1 -# 224| r224_7(bool) = Constant[0] : -# 224| v224_8(void) = ConditionalBranch : r224_7 +# 35| Block 69 +# 35| r35_953(glval) = VariableAddress[x68] : +# 35| mu35_954(String) = Uninitialized[x68] : &:r35_953 +# 35| r35_955(glval) = FunctionAddress[String] : +# 35| v35_956(void) = Call[String] : func:r35_955, this:r35_953 +# 35| mu35_957(unknown) = ^CallSideEffect : ~m? +# 35| mu35_958(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_953 +# 35| r35_959(glval) = VariableAddress[x68] : +# 35| r35_960(glval) = FunctionAddress[~String] : +# 35| v35_961(void) = Call[~String] : func:r35_960, this:r35_959 +# 35| mu35_962(unknown) = ^CallSideEffect : ~m? +# 35| v35_963(void) = ^IndirectReadSideEffect[-1] : &:r35_959, ~m? +# 35| mu35_964(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_959 +# 35| r35_965(bool) = Constant[0] : +# 35| v35_966(void) = ConditionalBranch : r35_965 #-----| False -> Block 70 #-----| True (back edge) -> Block 69 -# 226| Block 70 -# 226| r226_1(glval) = VariableAddress[x69] : -# 226| mu226_2(String) = Uninitialized[x69] : &:r226_1 -# 226| r226_3(glval) = FunctionAddress[String] : -# 226| v226_4(void) = Call[String] : func:r226_3, this:r226_1 -# 226| mu226_5(unknown) = ^CallSideEffect : ~m? -# 226| mu226_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r226_1 -# 227| r227_1(glval) = VariableAddress[x69] : -# 227| r227_2(glval) = FunctionAddress[~String] : -# 227| v227_3(void) = Call[~String] : func:r227_2, this:r227_1 -# 227| mu227_4(unknown) = ^CallSideEffect : ~m? -# 227| v227_5(void) = ^IndirectReadSideEffect[-1] : &:r227_1, ~m? -# 227| mu227_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r227_1 -# 227| r227_7(bool) = Constant[0] : -# 227| v227_8(void) = ConditionalBranch : r227_7 +# 35| Block 70 +# 35| r35_967(glval) = VariableAddress[x69] : +# 35| mu35_968(String) = Uninitialized[x69] : &:r35_967 +# 35| r35_969(glval) = FunctionAddress[String] : +# 35| v35_970(void) = Call[String] : func:r35_969, this:r35_967 +# 35| mu35_971(unknown) = ^CallSideEffect : ~m? +# 35| mu35_972(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_967 +# 35| r35_973(glval) = VariableAddress[x69] : +# 35| r35_974(glval) = FunctionAddress[~String] : +# 35| v35_975(void) = Call[~String] : func:r35_974, this:r35_973 +# 35| mu35_976(unknown) = ^CallSideEffect : ~m? +# 35| v35_977(void) = ^IndirectReadSideEffect[-1] : &:r35_973, ~m? +# 35| mu35_978(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_973 +# 35| r35_979(bool) = Constant[0] : +# 35| v35_980(void) = ConditionalBranch : r35_979 #-----| False -> Block 71 #-----| True (back edge) -> Block 70 -# 229| Block 71 -# 229| r229_1(glval) = VariableAddress[x70] : -# 229| mu229_2(String) = Uninitialized[x70] : &:r229_1 -# 229| r229_3(glval) = FunctionAddress[String] : -# 229| v229_4(void) = Call[String] : func:r229_3, this:r229_1 -# 229| mu229_5(unknown) = ^CallSideEffect : ~m? -# 229| mu229_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r229_1 -# 230| r230_1(glval) = VariableAddress[x70] : -# 230| r230_2(glval) = FunctionAddress[~String] : -# 230| v230_3(void) = Call[~String] : func:r230_2, this:r230_1 -# 230| mu230_4(unknown) = ^CallSideEffect : ~m? -# 230| v230_5(void) = ^IndirectReadSideEffect[-1] : &:r230_1, ~m? -# 230| mu230_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r230_1 -# 230| r230_7(bool) = Constant[0] : -# 230| v230_8(void) = ConditionalBranch : r230_7 +# 35| Block 71 +# 35| r35_981(glval) = VariableAddress[x70] : +# 35| mu35_982(String) = Uninitialized[x70] : &:r35_981 +# 35| r35_983(glval) = FunctionAddress[String] : +# 35| v35_984(void) = Call[String] : func:r35_983, this:r35_981 +# 35| mu35_985(unknown) = ^CallSideEffect : ~m? +# 35| mu35_986(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_981 +# 35| r35_987(glval) = VariableAddress[x70] : +# 35| r35_988(glval) = FunctionAddress[~String] : +# 35| v35_989(void) = Call[~String] : func:r35_988, this:r35_987 +# 35| mu35_990(unknown) = ^CallSideEffect : ~m? +# 35| v35_991(void) = ^IndirectReadSideEffect[-1] : &:r35_987, ~m? +# 35| mu35_992(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_987 +# 35| r35_993(bool) = Constant[0] : +# 35| v35_994(void) = ConditionalBranch : r35_993 #-----| False -> Block 72 #-----| True (back edge) -> Block 71 -# 232| Block 72 -# 232| r232_1(glval) = VariableAddress[x71] : -# 232| mu232_2(String) = Uninitialized[x71] : &:r232_1 -# 232| r232_3(glval) = FunctionAddress[String] : -# 232| v232_4(void) = Call[String] : func:r232_3, this:r232_1 -# 232| mu232_5(unknown) = ^CallSideEffect : ~m? -# 232| mu232_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r232_1 -# 233| r233_1(glval) = VariableAddress[x71] : -# 233| r233_2(glval) = FunctionAddress[~String] : -# 233| v233_3(void) = Call[~String] : func:r233_2, this:r233_1 -# 233| mu233_4(unknown) = ^CallSideEffect : ~m? -# 233| v233_5(void) = ^IndirectReadSideEffect[-1] : &:r233_1, ~m? -# 233| mu233_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r233_1 -# 233| r233_7(bool) = Constant[0] : -# 233| v233_8(void) = ConditionalBranch : r233_7 +# 35| Block 72 +# 35| r35_995(glval) = VariableAddress[x71] : +# 35| mu35_996(String) = Uninitialized[x71] : &:r35_995 +# 35| r35_997(glval) = FunctionAddress[String] : +# 35| v35_998(void) = Call[String] : func:r35_997, this:r35_995 +# 35| mu35_999(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1000(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_995 +# 35| r35_1001(glval) = VariableAddress[x71] : +# 35| r35_1002(glval) = FunctionAddress[~String] : +# 35| v35_1003(void) = Call[~String] : func:r35_1002, this:r35_1001 +# 35| mu35_1004(unknown) = ^CallSideEffect : ~m? +# 35| v35_1005(void) = ^IndirectReadSideEffect[-1] : &:r35_1001, ~m? +# 35| mu35_1006(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1001 +# 35| r35_1007(bool) = Constant[0] : +# 35| v35_1008(void) = ConditionalBranch : r35_1007 #-----| False -> Block 73 #-----| True (back edge) -> Block 72 -# 235| Block 73 -# 235| r235_1(glval) = VariableAddress[x72] : -# 235| mu235_2(String) = Uninitialized[x72] : &:r235_1 -# 235| r235_3(glval) = FunctionAddress[String] : -# 235| v235_4(void) = Call[String] : func:r235_3, this:r235_1 -# 235| mu235_5(unknown) = ^CallSideEffect : ~m? -# 235| mu235_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r235_1 -# 236| r236_1(glval) = VariableAddress[x72] : -# 236| r236_2(glval) = FunctionAddress[~String] : -# 236| v236_3(void) = Call[~String] : func:r236_2, this:r236_1 -# 236| mu236_4(unknown) = ^CallSideEffect : ~m? -# 236| v236_5(void) = ^IndirectReadSideEffect[-1] : &:r236_1, ~m? -# 236| mu236_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r236_1 -# 236| r236_7(bool) = Constant[0] : -# 236| v236_8(void) = ConditionalBranch : r236_7 +# 35| Block 73 +# 35| r35_1009(glval) = VariableAddress[x72] : +# 35| mu35_1010(String) = Uninitialized[x72] : &:r35_1009 +# 35| r35_1011(glval) = FunctionAddress[String] : +# 35| v35_1012(void) = Call[String] : func:r35_1011, this:r35_1009 +# 35| mu35_1013(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1014(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1009 +# 35| r35_1015(glval) = VariableAddress[x72] : +# 35| r35_1016(glval) = FunctionAddress[~String] : +# 35| v35_1017(void) = Call[~String] : func:r35_1016, this:r35_1015 +# 35| mu35_1018(unknown) = ^CallSideEffect : ~m? +# 35| v35_1019(void) = ^IndirectReadSideEffect[-1] : &:r35_1015, ~m? +# 35| mu35_1020(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1015 +# 35| r35_1021(bool) = Constant[0] : +# 35| v35_1022(void) = ConditionalBranch : r35_1021 #-----| False -> Block 74 #-----| True (back edge) -> Block 73 -# 238| Block 74 -# 238| r238_1(glval) = VariableAddress[x73] : -# 238| mu238_2(String) = Uninitialized[x73] : &:r238_1 -# 238| r238_3(glval) = FunctionAddress[String] : -# 238| v238_4(void) = Call[String] : func:r238_3, this:r238_1 -# 238| mu238_5(unknown) = ^CallSideEffect : ~m? -# 238| mu238_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r238_1 -# 239| r239_1(glval) = VariableAddress[x73] : -# 239| r239_2(glval) = FunctionAddress[~String] : -# 239| v239_3(void) = Call[~String] : func:r239_2, this:r239_1 -# 239| mu239_4(unknown) = ^CallSideEffect : ~m? -# 239| v239_5(void) = ^IndirectReadSideEffect[-1] : &:r239_1, ~m? -# 239| mu239_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r239_1 -# 239| r239_7(bool) = Constant[0] : -# 239| v239_8(void) = ConditionalBranch : r239_7 +# 35| Block 74 +# 35| r35_1023(glval) = VariableAddress[x73] : +# 35| mu35_1024(String) = Uninitialized[x73] : &:r35_1023 +# 35| r35_1025(glval) = FunctionAddress[String] : +# 35| v35_1026(void) = Call[String] : func:r35_1025, this:r35_1023 +# 35| mu35_1027(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1028(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1023 +# 35| r35_1029(glval) = VariableAddress[x73] : +# 35| r35_1030(glval) = FunctionAddress[~String] : +# 35| v35_1031(void) = Call[~String] : func:r35_1030, this:r35_1029 +# 35| mu35_1032(unknown) = ^CallSideEffect : ~m? +# 35| v35_1033(void) = ^IndirectReadSideEffect[-1] : &:r35_1029, ~m? +# 35| mu35_1034(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1029 +# 35| r35_1035(bool) = Constant[0] : +# 35| v35_1036(void) = ConditionalBranch : r35_1035 #-----| False -> Block 75 #-----| True (back edge) -> Block 74 -# 241| Block 75 -# 241| r241_1(glval) = VariableAddress[x74] : -# 241| mu241_2(String) = Uninitialized[x74] : &:r241_1 -# 241| r241_3(glval) = FunctionAddress[String] : -# 241| v241_4(void) = Call[String] : func:r241_3, this:r241_1 -# 241| mu241_5(unknown) = ^CallSideEffect : ~m? -# 241| mu241_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r241_1 -# 242| r242_1(glval) = VariableAddress[x74] : -# 242| r242_2(glval) = FunctionAddress[~String] : -# 242| v242_3(void) = Call[~String] : func:r242_2, this:r242_1 -# 242| mu242_4(unknown) = ^CallSideEffect : ~m? -# 242| v242_5(void) = ^IndirectReadSideEffect[-1] : &:r242_1, ~m? -# 242| mu242_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r242_1 -# 242| r242_7(bool) = Constant[0] : -# 242| v242_8(void) = ConditionalBranch : r242_7 +# 35| Block 75 +# 35| r35_1037(glval) = VariableAddress[x74] : +# 35| mu35_1038(String) = Uninitialized[x74] : &:r35_1037 +# 35| r35_1039(glval) = FunctionAddress[String] : +# 35| v35_1040(void) = Call[String] : func:r35_1039, this:r35_1037 +# 35| mu35_1041(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1042(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1037 +# 35| r35_1043(glval) = VariableAddress[x74] : +# 35| r35_1044(glval) = FunctionAddress[~String] : +# 35| v35_1045(void) = Call[~String] : func:r35_1044, this:r35_1043 +# 35| mu35_1046(unknown) = ^CallSideEffect : ~m? +# 35| v35_1047(void) = ^IndirectReadSideEffect[-1] : &:r35_1043, ~m? +# 35| mu35_1048(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1043 +# 35| r35_1049(bool) = Constant[0] : +# 35| v35_1050(void) = ConditionalBranch : r35_1049 #-----| False -> Block 76 #-----| True (back edge) -> Block 75 -# 244| Block 76 -# 244| r244_1(glval) = VariableAddress[x75] : -# 244| mu244_2(String) = Uninitialized[x75] : &:r244_1 -# 244| r244_3(glval) = FunctionAddress[String] : -# 244| v244_4(void) = Call[String] : func:r244_3, this:r244_1 -# 244| mu244_5(unknown) = ^CallSideEffect : ~m? -# 244| mu244_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r244_1 -# 245| r245_1(glval) = VariableAddress[x75] : -# 245| r245_2(glval) = FunctionAddress[~String] : -# 245| v245_3(void) = Call[~String] : func:r245_2, this:r245_1 -# 245| mu245_4(unknown) = ^CallSideEffect : ~m? -# 245| v245_5(void) = ^IndirectReadSideEffect[-1] : &:r245_1, ~m? -# 245| mu245_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r245_1 -# 245| r245_7(bool) = Constant[0] : -# 245| v245_8(void) = ConditionalBranch : r245_7 +# 35| Block 76 +# 35| r35_1051(glval) = VariableAddress[x75] : +# 35| mu35_1052(String) = Uninitialized[x75] : &:r35_1051 +# 35| r35_1053(glval) = FunctionAddress[String] : +# 35| v35_1054(void) = Call[String] : func:r35_1053, this:r35_1051 +# 35| mu35_1055(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1056(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1051 +# 35| r35_1057(glval) = VariableAddress[x75] : +# 35| r35_1058(glval) = FunctionAddress[~String] : +# 35| v35_1059(void) = Call[~String] : func:r35_1058, this:r35_1057 +# 35| mu35_1060(unknown) = ^CallSideEffect : ~m? +# 35| v35_1061(void) = ^IndirectReadSideEffect[-1] : &:r35_1057, ~m? +# 35| mu35_1062(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1057 +# 35| r35_1063(bool) = Constant[0] : +# 35| v35_1064(void) = ConditionalBranch : r35_1063 #-----| False -> Block 77 #-----| True (back edge) -> Block 76 -# 247| Block 77 -# 247| r247_1(glval) = VariableAddress[x76] : -# 247| mu247_2(String) = Uninitialized[x76] : &:r247_1 -# 247| r247_3(glval) = FunctionAddress[String] : -# 247| v247_4(void) = Call[String] : func:r247_3, this:r247_1 -# 247| mu247_5(unknown) = ^CallSideEffect : ~m? -# 247| mu247_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r247_1 -# 248| r248_1(glval) = VariableAddress[x76] : -# 248| r248_2(glval) = FunctionAddress[~String] : -# 248| v248_3(void) = Call[~String] : func:r248_2, this:r248_1 -# 248| mu248_4(unknown) = ^CallSideEffect : ~m? -# 248| v248_5(void) = ^IndirectReadSideEffect[-1] : &:r248_1, ~m? -# 248| mu248_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r248_1 -# 248| r248_7(bool) = Constant[0] : -# 248| v248_8(void) = ConditionalBranch : r248_7 +# 35| Block 77 +# 35| r35_1065(glval) = VariableAddress[x76] : +# 35| mu35_1066(String) = Uninitialized[x76] : &:r35_1065 +# 35| r35_1067(glval) = FunctionAddress[String] : +# 35| v35_1068(void) = Call[String] : func:r35_1067, this:r35_1065 +# 35| mu35_1069(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1070(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1065 +# 35| r35_1071(glval) = VariableAddress[x76] : +# 35| r35_1072(glval) = FunctionAddress[~String] : +# 35| v35_1073(void) = Call[~String] : func:r35_1072, this:r35_1071 +# 35| mu35_1074(unknown) = ^CallSideEffect : ~m? +# 35| v35_1075(void) = ^IndirectReadSideEffect[-1] : &:r35_1071, ~m? +# 35| mu35_1076(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1071 +# 35| r35_1077(bool) = Constant[0] : +# 35| v35_1078(void) = ConditionalBranch : r35_1077 #-----| False -> Block 78 #-----| True (back edge) -> Block 77 -# 250| Block 78 -# 250| r250_1(glval) = VariableAddress[x77] : -# 250| mu250_2(String) = Uninitialized[x77] : &:r250_1 -# 250| r250_3(glval) = FunctionAddress[String] : -# 250| v250_4(void) = Call[String] : func:r250_3, this:r250_1 -# 250| mu250_5(unknown) = ^CallSideEffect : ~m? -# 250| mu250_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r250_1 -# 251| r251_1(glval) = VariableAddress[x77] : -# 251| r251_2(glval) = FunctionAddress[~String] : -# 251| v251_3(void) = Call[~String] : func:r251_2, this:r251_1 -# 251| mu251_4(unknown) = ^CallSideEffect : ~m? -# 251| v251_5(void) = ^IndirectReadSideEffect[-1] : &:r251_1, ~m? -# 251| mu251_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r251_1 -# 251| r251_7(bool) = Constant[0] : -# 251| v251_8(void) = ConditionalBranch : r251_7 +# 35| Block 78 +# 35| r35_1079(glval) = VariableAddress[x77] : +# 35| mu35_1080(String) = Uninitialized[x77] : &:r35_1079 +# 35| r35_1081(glval) = FunctionAddress[String] : +# 35| v35_1082(void) = Call[String] : func:r35_1081, this:r35_1079 +# 35| mu35_1083(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1084(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1079 +# 35| r35_1085(glval) = VariableAddress[x77] : +# 35| r35_1086(glval) = FunctionAddress[~String] : +# 35| v35_1087(void) = Call[~String] : func:r35_1086, this:r35_1085 +# 35| mu35_1088(unknown) = ^CallSideEffect : ~m? +# 35| v35_1089(void) = ^IndirectReadSideEffect[-1] : &:r35_1085, ~m? +# 35| mu35_1090(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1085 +# 35| r35_1091(bool) = Constant[0] : +# 35| v35_1092(void) = ConditionalBranch : r35_1091 #-----| False -> Block 79 #-----| True (back edge) -> Block 78 -# 253| Block 79 -# 253| r253_1(glval) = VariableAddress[x78] : -# 253| mu253_2(String) = Uninitialized[x78] : &:r253_1 -# 253| r253_3(glval) = FunctionAddress[String] : -# 253| v253_4(void) = Call[String] : func:r253_3, this:r253_1 -# 253| mu253_5(unknown) = ^CallSideEffect : ~m? -# 253| mu253_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r253_1 -# 254| r254_1(glval) = VariableAddress[x78] : -# 254| r254_2(glval) = FunctionAddress[~String] : -# 254| v254_3(void) = Call[~String] : func:r254_2, this:r254_1 -# 254| mu254_4(unknown) = ^CallSideEffect : ~m? -# 254| v254_5(void) = ^IndirectReadSideEffect[-1] : &:r254_1, ~m? -# 254| mu254_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r254_1 -# 254| r254_7(bool) = Constant[0] : -# 254| v254_8(void) = ConditionalBranch : r254_7 +# 35| Block 79 +# 35| r35_1093(glval) = VariableAddress[x78] : +# 35| mu35_1094(String) = Uninitialized[x78] : &:r35_1093 +# 35| r35_1095(glval) = FunctionAddress[String] : +# 35| v35_1096(void) = Call[String] : func:r35_1095, this:r35_1093 +# 35| mu35_1097(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1098(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1093 +# 35| r35_1099(glval) = VariableAddress[x78] : +# 35| r35_1100(glval) = FunctionAddress[~String] : +# 35| v35_1101(void) = Call[~String] : func:r35_1100, this:r35_1099 +# 35| mu35_1102(unknown) = ^CallSideEffect : ~m? +# 35| v35_1103(void) = ^IndirectReadSideEffect[-1] : &:r35_1099, ~m? +# 35| mu35_1104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1099 +# 35| r35_1105(bool) = Constant[0] : +# 35| v35_1106(void) = ConditionalBranch : r35_1105 #-----| False -> Block 80 #-----| True (back edge) -> Block 79 -# 256| Block 80 -# 256| r256_1(glval) = VariableAddress[x79] : -# 256| mu256_2(String) = Uninitialized[x79] : &:r256_1 -# 256| r256_3(glval) = FunctionAddress[String] : -# 256| v256_4(void) = Call[String] : func:r256_3, this:r256_1 -# 256| mu256_5(unknown) = ^CallSideEffect : ~m? -# 256| mu256_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r256_1 -# 257| r257_1(glval) = VariableAddress[x79] : -# 257| r257_2(glval) = FunctionAddress[~String] : -# 257| v257_3(void) = Call[~String] : func:r257_2, this:r257_1 -# 257| mu257_4(unknown) = ^CallSideEffect : ~m? -# 257| v257_5(void) = ^IndirectReadSideEffect[-1] : &:r257_1, ~m? -# 257| mu257_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r257_1 -# 257| r257_7(bool) = Constant[0] : -# 257| v257_8(void) = ConditionalBranch : r257_7 +# 35| Block 80 +# 35| r35_1107(glval) = VariableAddress[x79] : +# 35| mu35_1108(String) = Uninitialized[x79] : &:r35_1107 +# 35| r35_1109(glval) = FunctionAddress[String] : +# 35| v35_1110(void) = Call[String] : func:r35_1109, this:r35_1107 +# 35| mu35_1111(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1112(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1107 +# 35| r35_1113(glval) = VariableAddress[x79] : +# 35| r35_1114(glval) = FunctionAddress[~String] : +# 35| v35_1115(void) = Call[~String] : func:r35_1114, this:r35_1113 +# 35| mu35_1116(unknown) = ^CallSideEffect : ~m? +# 35| v35_1117(void) = ^IndirectReadSideEffect[-1] : &:r35_1113, ~m? +# 35| mu35_1118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1113 +# 35| r35_1119(bool) = Constant[0] : +# 35| v35_1120(void) = ConditionalBranch : r35_1119 #-----| False -> Block 81 #-----| True (back edge) -> Block 80 -# 259| Block 81 -# 259| r259_1(glval) = VariableAddress[x80] : -# 259| mu259_2(String) = Uninitialized[x80] : &:r259_1 -# 259| r259_3(glval) = FunctionAddress[String] : -# 259| v259_4(void) = Call[String] : func:r259_3, this:r259_1 -# 259| mu259_5(unknown) = ^CallSideEffect : ~m? -# 259| mu259_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r259_1 -# 260| r260_1(glval) = VariableAddress[x80] : -# 260| r260_2(glval) = FunctionAddress[~String] : -# 260| v260_3(void) = Call[~String] : func:r260_2, this:r260_1 -# 260| mu260_4(unknown) = ^CallSideEffect : ~m? -# 260| v260_5(void) = ^IndirectReadSideEffect[-1] : &:r260_1, ~m? -# 260| mu260_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r260_1 -# 260| r260_7(bool) = Constant[0] : -# 260| v260_8(void) = ConditionalBranch : r260_7 +# 35| Block 81 +# 35| r35_1121(glval) = VariableAddress[x80] : +# 35| mu35_1122(String) = Uninitialized[x80] : &:r35_1121 +# 35| r35_1123(glval) = FunctionAddress[String] : +# 35| v35_1124(void) = Call[String] : func:r35_1123, this:r35_1121 +# 35| mu35_1125(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1126(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1121 +# 35| r35_1127(glval) = VariableAddress[x80] : +# 35| r35_1128(glval) = FunctionAddress[~String] : +# 35| v35_1129(void) = Call[~String] : func:r35_1128, this:r35_1127 +# 35| mu35_1130(unknown) = ^CallSideEffect : ~m? +# 35| v35_1131(void) = ^IndirectReadSideEffect[-1] : &:r35_1127, ~m? +# 35| mu35_1132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1127 +# 35| r35_1133(bool) = Constant[0] : +# 35| v35_1134(void) = ConditionalBranch : r35_1133 #-----| False -> Block 82 #-----| True (back edge) -> Block 81 -# 262| Block 82 -# 262| r262_1(glval) = VariableAddress[x81] : -# 262| mu262_2(String) = Uninitialized[x81] : &:r262_1 -# 262| r262_3(glval) = FunctionAddress[String] : -# 262| v262_4(void) = Call[String] : func:r262_3, this:r262_1 -# 262| mu262_5(unknown) = ^CallSideEffect : ~m? -# 262| mu262_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r262_1 -# 263| r263_1(glval) = VariableAddress[x81] : -# 263| r263_2(glval) = FunctionAddress[~String] : -# 263| v263_3(void) = Call[~String] : func:r263_2, this:r263_1 -# 263| mu263_4(unknown) = ^CallSideEffect : ~m? -# 263| v263_5(void) = ^IndirectReadSideEffect[-1] : &:r263_1, ~m? -# 263| mu263_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r263_1 -# 263| r263_7(bool) = Constant[0] : -# 263| v263_8(void) = ConditionalBranch : r263_7 +# 35| Block 82 +# 35| r35_1135(glval) = VariableAddress[x81] : +# 35| mu35_1136(String) = Uninitialized[x81] : &:r35_1135 +# 35| r35_1137(glval) = FunctionAddress[String] : +# 35| v35_1138(void) = Call[String] : func:r35_1137, this:r35_1135 +# 35| mu35_1139(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1140(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1135 +# 35| r35_1141(glval) = VariableAddress[x81] : +# 35| r35_1142(glval) = FunctionAddress[~String] : +# 35| v35_1143(void) = Call[~String] : func:r35_1142, this:r35_1141 +# 35| mu35_1144(unknown) = ^CallSideEffect : ~m? +# 35| v35_1145(void) = ^IndirectReadSideEffect[-1] : &:r35_1141, ~m? +# 35| mu35_1146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1141 +# 35| r35_1147(bool) = Constant[0] : +# 35| v35_1148(void) = ConditionalBranch : r35_1147 #-----| False -> Block 83 #-----| True (back edge) -> Block 82 -# 265| Block 83 -# 265| r265_1(glval) = VariableAddress[x82] : -# 265| mu265_2(String) = Uninitialized[x82] : &:r265_1 -# 265| r265_3(glval) = FunctionAddress[String] : -# 265| v265_4(void) = Call[String] : func:r265_3, this:r265_1 -# 265| mu265_5(unknown) = ^CallSideEffect : ~m? -# 265| mu265_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r265_1 -# 266| r266_1(glval) = VariableAddress[x82] : -# 266| r266_2(glval) = FunctionAddress[~String] : -# 266| v266_3(void) = Call[~String] : func:r266_2, this:r266_1 -# 266| mu266_4(unknown) = ^CallSideEffect : ~m? -# 266| v266_5(void) = ^IndirectReadSideEffect[-1] : &:r266_1, ~m? -# 266| mu266_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r266_1 -# 266| r266_7(bool) = Constant[0] : -# 266| v266_8(void) = ConditionalBranch : r266_7 +# 35| Block 83 +# 35| r35_1149(glval) = VariableAddress[x82] : +# 35| mu35_1150(String) = Uninitialized[x82] : &:r35_1149 +# 35| r35_1151(glval) = FunctionAddress[String] : +# 35| v35_1152(void) = Call[String] : func:r35_1151, this:r35_1149 +# 35| mu35_1153(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1154(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1149 +# 35| r35_1155(glval) = VariableAddress[x82] : +# 35| r35_1156(glval) = FunctionAddress[~String] : +# 35| v35_1157(void) = Call[~String] : func:r35_1156, this:r35_1155 +# 35| mu35_1158(unknown) = ^CallSideEffect : ~m? +# 35| v35_1159(void) = ^IndirectReadSideEffect[-1] : &:r35_1155, ~m? +# 35| mu35_1160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1155 +# 35| r35_1161(bool) = Constant[0] : +# 35| v35_1162(void) = ConditionalBranch : r35_1161 #-----| False -> Block 84 #-----| True (back edge) -> Block 83 -# 268| Block 84 -# 268| r268_1(glval) = VariableAddress[x83] : -# 268| mu268_2(String) = Uninitialized[x83] : &:r268_1 -# 268| r268_3(glval) = FunctionAddress[String] : -# 268| v268_4(void) = Call[String] : func:r268_3, this:r268_1 -# 268| mu268_5(unknown) = ^CallSideEffect : ~m? -# 268| mu268_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r268_1 -# 269| r269_1(glval) = VariableAddress[x83] : -# 269| r269_2(glval) = FunctionAddress[~String] : -# 269| v269_3(void) = Call[~String] : func:r269_2, this:r269_1 -# 269| mu269_4(unknown) = ^CallSideEffect : ~m? -# 269| v269_5(void) = ^IndirectReadSideEffect[-1] : &:r269_1, ~m? -# 269| mu269_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r269_1 -# 269| r269_7(bool) = Constant[0] : -# 269| v269_8(void) = ConditionalBranch : r269_7 +# 35| Block 84 +# 35| r35_1163(glval) = VariableAddress[x83] : +# 35| mu35_1164(String) = Uninitialized[x83] : &:r35_1163 +# 35| r35_1165(glval) = FunctionAddress[String] : +# 35| v35_1166(void) = Call[String] : func:r35_1165, this:r35_1163 +# 35| mu35_1167(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1168(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1163 +# 35| r35_1169(glval) = VariableAddress[x83] : +# 35| r35_1170(glval) = FunctionAddress[~String] : +# 35| v35_1171(void) = Call[~String] : func:r35_1170, this:r35_1169 +# 35| mu35_1172(unknown) = ^CallSideEffect : ~m? +# 35| v35_1173(void) = ^IndirectReadSideEffect[-1] : &:r35_1169, ~m? +# 35| mu35_1174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1169 +# 35| r35_1175(bool) = Constant[0] : +# 35| v35_1176(void) = ConditionalBranch : r35_1175 #-----| False -> Block 85 #-----| True (back edge) -> Block 84 -# 271| Block 85 -# 271| r271_1(glval) = VariableAddress[x84] : -# 271| mu271_2(String) = Uninitialized[x84] : &:r271_1 -# 271| r271_3(glval) = FunctionAddress[String] : -# 271| v271_4(void) = Call[String] : func:r271_3, this:r271_1 -# 271| mu271_5(unknown) = ^CallSideEffect : ~m? -# 271| mu271_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r271_1 -# 272| r272_1(glval) = VariableAddress[x84] : -# 272| r272_2(glval) = FunctionAddress[~String] : -# 272| v272_3(void) = Call[~String] : func:r272_2, this:r272_1 -# 272| mu272_4(unknown) = ^CallSideEffect : ~m? -# 272| v272_5(void) = ^IndirectReadSideEffect[-1] : &:r272_1, ~m? -# 272| mu272_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r272_1 -# 272| r272_7(bool) = Constant[0] : -# 272| v272_8(void) = ConditionalBranch : r272_7 +# 35| Block 85 +# 35| r35_1177(glval) = VariableAddress[x84] : +# 35| mu35_1178(String) = Uninitialized[x84] : &:r35_1177 +# 35| r35_1179(glval) = FunctionAddress[String] : +# 35| v35_1180(void) = Call[String] : func:r35_1179, this:r35_1177 +# 35| mu35_1181(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1182(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1177 +# 35| r35_1183(glval) = VariableAddress[x84] : +# 35| r35_1184(glval) = FunctionAddress[~String] : +# 35| v35_1185(void) = Call[~String] : func:r35_1184, this:r35_1183 +# 35| mu35_1186(unknown) = ^CallSideEffect : ~m? +# 35| v35_1187(void) = ^IndirectReadSideEffect[-1] : &:r35_1183, ~m? +# 35| mu35_1188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1183 +# 35| r35_1189(bool) = Constant[0] : +# 35| v35_1190(void) = ConditionalBranch : r35_1189 #-----| False -> Block 86 #-----| True (back edge) -> Block 85 -# 274| Block 86 -# 274| r274_1(glval) = VariableAddress[x85] : -# 274| mu274_2(String) = Uninitialized[x85] : &:r274_1 -# 274| r274_3(glval) = FunctionAddress[String] : -# 274| v274_4(void) = Call[String] : func:r274_3, this:r274_1 -# 274| mu274_5(unknown) = ^CallSideEffect : ~m? -# 274| mu274_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r274_1 -# 275| r275_1(glval) = VariableAddress[x85] : -# 275| r275_2(glval) = FunctionAddress[~String] : -# 275| v275_3(void) = Call[~String] : func:r275_2, this:r275_1 -# 275| mu275_4(unknown) = ^CallSideEffect : ~m? -# 275| v275_5(void) = ^IndirectReadSideEffect[-1] : &:r275_1, ~m? -# 275| mu275_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r275_1 -# 275| r275_7(bool) = Constant[0] : -# 275| v275_8(void) = ConditionalBranch : r275_7 +# 35| Block 86 +# 35| r35_1191(glval) = VariableAddress[x85] : +# 35| mu35_1192(String) = Uninitialized[x85] : &:r35_1191 +# 35| r35_1193(glval) = FunctionAddress[String] : +# 35| v35_1194(void) = Call[String] : func:r35_1193, this:r35_1191 +# 35| mu35_1195(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1196(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1191 +# 35| r35_1197(glval) = VariableAddress[x85] : +# 35| r35_1198(glval) = FunctionAddress[~String] : +# 35| v35_1199(void) = Call[~String] : func:r35_1198, this:r35_1197 +# 35| mu35_1200(unknown) = ^CallSideEffect : ~m? +# 35| v35_1201(void) = ^IndirectReadSideEffect[-1] : &:r35_1197, ~m? +# 35| mu35_1202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1197 +# 35| r35_1203(bool) = Constant[0] : +# 35| v35_1204(void) = ConditionalBranch : r35_1203 #-----| False -> Block 87 #-----| True (back edge) -> Block 86 -# 277| Block 87 -# 277| r277_1(glval) = VariableAddress[x86] : -# 277| mu277_2(String) = Uninitialized[x86] : &:r277_1 -# 277| r277_3(glval) = FunctionAddress[String] : -# 277| v277_4(void) = Call[String] : func:r277_3, this:r277_1 -# 277| mu277_5(unknown) = ^CallSideEffect : ~m? -# 277| mu277_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r277_1 -# 278| r278_1(glval) = VariableAddress[x86] : -# 278| r278_2(glval) = FunctionAddress[~String] : -# 278| v278_3(void) = Call[~String] : func:r278_2, this:r278_1 -# 278| mu278_4(unknown) = ^CallSideEffect : ~m? -# 278| v278_5(void) = ^IndirectReadSideEffect[-1] : &:r278_1, ~m? -# 278| mu278_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r278_1 -# 278| r278_7(bool) = Constant[0] : -# 278| v278_8(void) = ConditionalBranch : r278_7 +# 35| Block 87 +# 35| r35_1205(glval) = VariableAddress[x86] : +# 35| mu35_1206(String) = Uninitialized[x86] : &:r35_1205 +# 35| r35_1207(glval) = FunctionAddress[String] : +# 35| v35_1208(void) = Call[String] : func:r35_1207, this:r35_1205 +# 35| mu35_1209(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1210(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1205 +# 35| r35_1211(glval) = VariableAddress[x86] : +# 35| r35_1212(glval) = FunctionAddress[~String] : +# 35| v35_1213(void) = Call[~String] : func:r35_1212, this:r35_1211 +# 35| mu35_1214(unknown) = ^CallSideEffect : ~m? +# 35| v35_1215(void) = ^IndirectReadSideEffect[-1] : &:r35_1211, ~m? +# 35| mu35_1216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1211 +# 35| r35_1217(bool) = Constant[0] : +# 35| v35_1218(void) = ConditionalBranch : r35_1217 #-----| False -> Block 88 #-----| True (back edge) -> Block 87 -# 280| Block 88 -# 280| r280_1(glval) = VariableAddress[x87] : -# 280| mu280_2(String) = Uninitialized[x87] : &:r280_1 -# 280| r280_3(glval) = FunctionAddress[String] : -# 280| v280_4(void) = Call[String] : func:r280_3, this:r280_1 -# 280| mu280_5(unknown) = ^CallSideEffect : ~m? -# 280| mu280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r280_1 -# 281| r281_1(glval) = VariableAddress[x87] : -# 281| r281_2(glval) = FunctionAddress[~String] : -# 281| v281_3(void) = Call[~String] : func:r281_2, this:r281_1 -# 281| mu281_4(unknown) = ^CallSideEffect : ~m? -# 281| v281_5(void) = ^IndirectReadSideEffect[-1] : &:r281_1, ~m? -# 281| mu281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r281_1 -# 281| r281_7(bool) = Constant[0] : -# 281| v281_8(void) = ConditionalBranch : r281_7 +# 35| Block 88 +# 35| r35_1219(glval) = VariableAddress[x87] : +# 35| mu35_1220(String) = Uninitialized[x87] : &:r35_1219 +# 35| r35_1221(glval) = FunctionAddress[String] : +# 35| v35_1222(void) = Call[String] : func:r35_1221, this:r35_1219 +# 35| mu35_1223(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1224(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1219 +# 35| r35_1225(glval) = VariableAddress[x87] : +# 35| r35_1226(glval) = FunctionAddress[~String] : +# 35| v35_1227(void) = Call[~String] : func:r35_1226, this:r35_1225 +# 35| mu35_1228(unknown) = ^CallSideEffect : ~m? +# 35| v35_1229(void) = ^IndirectReadSideEffect[-1] : &:r35_1225, ~m? +# 35| mu35_1230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1225 +# 35| r35_1231(bool) = Constant[0] : +# 35| v35_1232(void) = ConditionalBranch : r35_1231 #-----| False -> Block 89 #-----| True (back edge) -> Block 88 -# 283| Block 89 -# 283| r283_1(glval) = VariableAddress[x88] : -# 283| mu283_2(String) = Uninitialized[x88] : &:r283_1 -# 283| r283_3(glval) = FunctionAddress[String] : -# 283| v283_4(void) = Call[String] : func:r283_3, this:r283_1 -# 283| mu283_5(unknown) = ^CallSideEffect : ~m? -# 283| mu283_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r283_1 -# 284| r284_1(glval) = VariableAddress[x88] : -# 284| r284_2(glval) = FunctionAddress[~String] : -# 284| v284_3(void) = Call[~String] : func:r284_2, this:r284_1 -# 284| mu284_4(unknown) = ^CallSideEffect : ~m? -# 284| v284_5(void) = ^IndirectReadSideEffect[-1] : &:r284_1, ~m? -# 284| mu284_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r284_1 -# 284| r284_7(bool) = Constant[0] : -# 284| v284_8(void) = ConditionalBranch : r284_7 +# 35| Block 89 +# 35| r35_1233(glval) = VariableAddress[x88] : +# 35| mu35_1234(String) = Uninitialized[x88] : &:r35_1233 +# 35| r35_1235(glval) = FunctionAddress[String] : +# 35| v35_1236(void) = Call[String] : func:r35_1235, this:r35_1233 +# 35| mu35_1237(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1238(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1233 +# 35| r35_1239(glval) = VariableAddress[x88] : +# 35| r35_1240(glval) = FunctionAddress[~String] : +# 35| v35_1241(void) = Call[~String] : func:r35_1240, this:r35_1239 +# 35| mu35_1242(unknown) = ^CallSideEffect : ~m? +# 35| v35_1243(void) = ^IndirectReadSideEffect[-1] : &:r35_1239, ~m? +# 35| mu35_1244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1239 +# 35| r35_1245(bool) = Constant[0] : +# 35| v35_1246(void) = ConditionalBranch : r35_1245 #-----| False -> Block 90 #-----| True (back edge) -> Block 89 -# 286| Block 90 -# 286| r286_1(glval) = VariableAddress[x89] : -# 286| mu286_2(String) = Uninitialized[x89] : &:r286_1 -# 286| r286_3(glval) = FunctionAddress[String] : -# 286| v286_4(void) = Call[String] : func:r286_3, this:r286_1 -# 286| mu286_5(unknown) = ^CallSideEffect : ~m? -# 286| mu286_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r286_1 -# 287| r287_1(glval) = VariableAddress[x89] : -# 287| r287_2(glval) = FunctionAddress[~String] : -# 287| v287_3(void) = Call[~String] : func:r287_2, this:r287_1 -# 287| mu287_4(unknown) = ^CallSideEffect : ~m? -# 287| v287_5(void) = ^IndirectReadSideEffect[-1] : &:r287_1, ~m? -# 287| mu287_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r287_1 -# 287| r287_7(bool) = Constant[0] : -# 287| v287_8(void) = ConditionalBranch : r287_7 +# 35| Block 90 +# 35| r35_1247(glval) = VariableAddress[x89] : +# 35| mu35_1248(String) = Uninitialized[x89] : &:r35_1247 +# 35| r35_1249(glval) = FunctionAddress[String] : +# 35| v35_1250(void) = Call[String] : func:r35_1249, this:r35_1247 +# 35| mu35_1251(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1252(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1247 +# 35| r35_1253(glval) = VariableAddress[x89] : +# 35| r35_1254(glval) = FunctionAddress[~String] : +# 35| v35_1255(void) = Call[~String] : func:r35_1254, this:r35_1253 +# 35| mu35_1256(unknown) = ^CallSideEffect : ~m? +# 35| v35_1257(void) = ^IndirectReadSideEffect[-1] : &:r35_1253, ~m? +# 35| mu35_1258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1253 +# 35| r35_1259(bool) = Constant[0] : +# 35| v35_1260(void) = ConditionalBranch : r35_1259 #-----| False -> Block 91 #-----| True (back edge) -> Block 90 -# 289| Block 91 -# 289| r289_1(glval) = VariableAddress[x90] : -# 289| mu289_2(String) = Uninitialized[x90] : &:r289_1 -# 289| r289_3(glval) = FunctionAddress[String] : -# 289| v289_4(void) = Call[String] : func:r289_3, this:r289_1 -# 289| mu289_5(unknown) = ^CallSideEffect : ~m? -# 289| mu289_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r289_1 -# 290| r290_1(glval) = VariableAddress[x90] : -# 290| r290_2(glval) = FunctionAddress[~String] : -# 290| v290_3(void) = Call[~String] : func:r290_2, this:r290_1 -# 290| mu290_4(unknown) = ^CallSideEffect : ~m? -# 290| v290_5(void) = ^IndirectReadSideEffect[-1] : &:r290_1, ~m? -# 290| mu290_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r290_1 -# 290| r290_7(bool) = Constant[0] : -# 290| v290_8(void) = ConditionalBranch : r290_7 +# 35| Block 91 +# 35| r35_1261(glval) = VariableAddress[x90] : +# 35| mu35_1262(String) = Uninitialized[x90] : &:r35_1261 +# 35| r35_1263(glval) = FunctionAddress[String] : +# 35| v35_1264(void) = Call[String] : func:r35_1263, this:r35_1261 +# 35| mu35_1265(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1266(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1261 +# 35| r35_1267(glval) = VariableAddress[x90] : +# 35| r35_1268(glval) = FunctionAddress[~String] : +# 35| v35_1269(void) = Call[~String] : func:r35_1268, this:r35_1267 +# 35| mu35_1270(unknown) = ^CallSideEffect : ~m? +# 35| v35_1271(void) = ^IndirectReadSideEffect[-1] : &:r35_1267, ~m? +# 35| mu35_1272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1267 +# 35| r35_1273(bool) = Constant[0] : +# 35| v35_1274(void) = ConditionalBranch : r35_1273 #-----| False -> Block 92 #-----| True (back edge) -> Block 91 -# 292| Block 92 -# 292| r292_1(glval) = VariableAddress[x91] : -# 292| mu292_2(String) = Uninitialized[x91] : &:r292_1 -# 292| r292_3(glval) = FunctionAddress[String] : -# 292| v292_4(void) = Call[String] : func:r292_3, this:r292_1 -# 292| mu292_5(unknown) = ^CallSideEffect : ~m? -# 292| mu292_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r292_1 -# 293| r293_1(glval) = VariableAddress[x91] : -# 293| r293_2(glval) = FunctionAddress[~String] : -# 293| v293_3(void) = Call[~String] : func:r293_2, this:r293_1 -# 293| mu293_4(unknown) = ^CallSideEffect : ~m? -# 293| v293_5(void) = ^IndirectReadSideEffect[-1] : &:r293_1, ~m? -# 293| mu293_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r293_1 -# 293| r293_7(bool) = Constant[0] : -# 293| v293_8(void) = ConditionalBranch : r293_7 +# 35| Block 92 +# 35| r35_1275(glval) = VariableAddress[x91] : +# 35| mu35_1276(String) = Uninitialized[x91] : &:r35_1275 +# 35| r35_1277(glval) = FunctionAddress[String] : +# 35| v35_1278(void) = Call[String] : func:r35_1277, this:r35_1275 +# 35| mu35_1279(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1280(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1275 +# 35| r35_1281(glval) = VariableAddress[x91] : +# 35| r35_1282(glval) = FunctionAddress[~String] : +# 35| v35_1283(void) = Call[~String] : func:r35_1282, this:r35_1281 +# 35| mu35_1284(unknown) = ^CallSideEffect : ~m? +# 35| v35_1285(void) = ^IndirectReadSideEffect[-1] : &:r35_1281, ~m? +# 35| mu35_1286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1281 +# 35| r35_1287(bool) = Constant[0] : +# 35| v35_1288(void) = ConditionalBranch : r35_1287 #-----| False -> Block 93 #-----| True (back edge) -> Block 92 -# 295| Block 93 -# 295| r295_1(glval) = VariableAddress[x92] : -# 295| mu295_2(String) = Uninitialized[x92] : &:r295_1 -# 295| r295_3(glval) = FunctionAddress[String] : -# 295| v295_4(void) = Call[String] : func:r295_3, this:r295_1 -# 295| mu295_5(unknown) = ^CallSideEffect : ~m? -# 295| mu295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r295_1 -# 296| r296_1(glval) = VariableAddress[x92] : -# 296| r296_2(glval) = FunctionAddress[~String] : -# 296| v296_3(void) = Call[~String] : func:r296_2, this:r296_1 -# 296| mu296_4(unknown) = ^CallSideEffect : ~m? -# 296| v296_5(void) = ^IndirectReadSideEffect[-1] : &:r296_1, ~m? -# 296| mu296_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r296_1 -# 296| r296_7(bool) = Constant[0] : -# 296| v296_8(void) = ConditionalBranch : r296_7 +# 35| Block 93 +# 35| r35_1289(glval) = VariableAddress[x92] : +# 35| mu35_1290(String) = Uninitialized[x92] : &:r35_1289 +# 35| r35_1291(glval) = FunctionAddress[String] : +# 35| v35_1292(void) = Call[String] : func:r35_1291, this:r35_1289 +# 35| mu35_1293(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1294(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1289 +# 35| r35_1295(glval) = VariableAddress[x92] : +# 35| r35_1296(glval) = FunctionAddress[~String] : +# 35| v35_1297(void) = Call[~String] : func:r35_1296, this:r35_1295 +# 35| mu35_1298(unknown) = ^CallSideEffect : ~m? +# 35| v35_1299(void) = ^IndirectReadSideEffect[-1] : &:r35_1295, ~m? +# 35| mu35_1300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1295 +# 35| r35_1301(bool) = Constant[0] : +# 35| v35_1302(void) = ConditionalBranch : r35_1301 #-----| False -> Block 94 #-----| True (back edge) -> Block 93 -# 298| Block 94 -# 298| r298_1(glval) = VariableAddress[x93] : -# 298| mu298_2(String) = Uninitialized[x93] : &:r298_1 -# 298| r298_3(glval) = FunctionAddress[String] : -# 298| v298_4(void) = Call[String] : func:r298_3, this:r298_1 -# 298| mu298_5(unknown) = ^CallSideEffect : ~m? -# 298| mu298_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r298_1 -# 299| r299_1(glval) = VariableAddress[x93] : -# 299| r299_2(glval) = FunctionAddress[~String] : -# 299| v299_3(void) = Call[~String] : func:r299_2, this:r299_1 -# 299| mu299_4(unknown) = ^CallSideEffect : ~m? -# 299| v299_5(void) = ^IndirectReadSideEffect[-1] : &:r299_1, ~m? -# 299| mu299_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r299_1 -# 299| r299_7(bool) = Constant[0] : -# 299| v299_8(void) = ConditionalBranch : r299_7 +# 35| Block 94 +# 35| r35_1303(glval) = VariableAddress[x93] : +# 35| mu35_1304(String) = Uninitialized[x93] : &:r35_1303 +# 35| r35_1305(glval) = FunctionAddress[String] : +# 35| v35_1306(void) = Call[String] : func:r35_1305, this:r35_1303 +# 35| mu35_1307(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1308(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1303 +# 35| r35_1309(glval) = VariableAddress[x93] : +# 35| r35_1310(glval) = FunctionAddress[~String] : +# 35| v35_1311(void) = Call[~String] : func:r35_1310, this:r35_1309 +# 35| mu35_1312(unknown) = ^CallSideEffect : ~m? +# 35| v35_1313(void) = ^IndirectReadSideEffect[-1] : &:r35_1309, ~m? +# 35| mu35_1314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1309 +# 35| r35_1315(bool) = Constant[0] : +# 35| v35_1316(void) = ConditionalBranch : r35_1315 #-----| False -> Block 95 #-----| True (back edge) -> Block 94 -# 301| Block 95 -# 301| r301_1(glval) = VariableAddress[x94] : -# 301| mu301_2(String) = Uninitialized[x94] : &:r301_1 -# 301| r301_3(glval) = FunctionAddress[String] : -# 301| v301_4(void) = Call[String] : func:r301_3, this:r301_1 -# 301| mu301_5(unknown) = ^CallSideEffect : ~m? -# 301| mu301_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r301_1 -# 302| r302_1(glval) = VariableAddress[x94] : -# 302| r302_2(glval) = FunctionAddress[~String] : -# 302| v302_3(void) = Call[~String] : func:r302_2, this:r302_1 -# 302| mu302_4(unknown) = ^CallSideEffect : ~m? -# 302| v302_5(void) = ^IndirectReadSideEffect[-1] : &:r302_1, ~m? -# 302| mu302_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r302_1 -# 302| r302_7(bool) = Constant[0] : -# 302| v302_8(void) = ConditionalBranch : r302_7 +# 35| Block 95 +# 35| r35_1317(glval) = VariableAddress[x94] : +# 35| mu35_1318(String) = Uninitialized[x94] : &:r35_1317 +# 35| r35_1319(glval) = FunctionAddress[String] : +# 35| v35_1320(void) = Call[String] : func:r35_1319, this:r35_1317 +# 35| mu35_1321(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1322(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1317 +# 35| r35_1323(glval) = VariableAddress[x94] : +# 35| r35_1324(glval) = FunctionAddress[~String] : +# 35| v35_1325(void) = Call[~String] : func:r35_1324, this:r35_1323 +# 35| mu35_1326(unknown) = ^CallSideEffect : ~m? +# 35| v35_1327(void) = ^IndirectReadSideEffect[-1] : &:r35_1323, ~m? +# 35| mu35_1328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1323 +# 35| r35_1329(bool) = Constant[0] : +# 35| v35_1330(void) = ConditionalBranch : r35_1329 #-----| False -> Block 96 #-----| True (back edge) -> Block 95 -# 304| Block 96 -# 304| r304_1(glval) = VariableAddress[x95] : -# 304| mu304_2(String) = Uninitialized[x95] : &:r304_1 -# 304| r304_3(glval) = FunctionAddress[String] : -# 304| v304_4(void) = Call[String] : func:r304_3, this:r304_1 -# 304| mu304_5(unknown) = ^CallSideEffect : ~m? -# 304| mu304_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r304_1 -# 305| r305_1(glval) = VariableAddress[x95] : -# 305| r305_2(glval) = FunctionAddress[~String] : -# 305| v305_3(void) = Call[~String] : func:r305_2, this:r305_1 -# 305| mu305_4(unknown) = ^CallSideEffect : ~m? -# 305| v305_5(void) = ^IndirectReadSideEffect[-1] : &:r305_1, ~m? -# 305| mu305_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r305_1 -# 305| r305_7(bool) = Constant[0] : -# 305| v305_8(void) = ConditionalBranch : r305_7 +# 35| Block 96 +# 35| r35_1331(glval) = VariableAddress[x95] : +# 35| mu35_1332(String) = Uninitialized[x95] : &:r35_1331 +# 35| r35_1333(glval) = FunctionAddress[String] : +# 35| v35_1334(void) = Call[String] : func:r35_1333, this:r35_1331 +# 35| mu35_1335(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1336(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1331 +# 35| r35_1337(glval) = VariableAddress[x95] : +# 35| r35_1338(glval) = FunctionAddress[~String] : +# 35| v35_1339(void) = Call[~String] : func:r35_1338, this:r35_1337 +# 35| mu35_1340(unknown) = ^CallSideEffect : ~m? +# 35| v35_1341(void) = ^IndirectReadSideEffect[-1] : &:r35_1337, ~m? +# 35| mu35_1342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1337 +# 35| r35_1343(bool) = Constant[0] : +# 35| v35_1344(void) = ConditionalBranch : r35_1343 #-----| False -> Block 97 #-----| True (back edge) -> Block 96 -# 307| Block 97 -# 307| r307_1(glval) = VariableAddress[x96] : -# 307| mu307_2(String) = Uninitialized[x96] : &:r307_1 -# 307| r307_3(glval) = FunctionAddress[String] : -# 307| v307_4(void) = Call[String] : func:r307_3, this:r307_1 -# 307| mu307_5(unknown) = ^CallSideEffect : ~m? -# 307| mu307_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r307_1 -# 308| r308_1(glval) = VariableAddress[x96] : -# 308| r308_2(glval) = FunctionAddress[~String] : -# 308| v308_3(void) = Call[~String] : func:r308_2, this:r308_1 -# 308| mu308_4(unknown) = ^CallSideEffect : ~m? -# 308| v308_5(void) = ^IndirectReadSideEffect[-1] : &:r308_1, ~m? -# 308| mu308_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r308_1 -# 308| r308_7(bool) = Constant[0] : -# 308| v308_8(void) = ConditionalBranch : r308_7 +# 35| Block 97 +# 35| r35_1345(glval) = VariableAddress[x96] : +# 35| mu35_1346(String) = Uninitialized[x96] : &:r35_1345 +# 35| r35_1347(glval) = FunctionAddress[String] : +# 35| v35_1348(void) = Call[String] : func:r35_1347, this:r35_1345 +# 35| mu35_1349(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1350(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1345 +# 35| r35_1351(glval) = VariableAddress[x96] : +# 35| r35_1352(glval) = FunctionAddress[~String] : +# 35| v35_1353(void) = Call[~String] : func:r35_1352, this:r35_1351 +# 35| mu35_1354(unknown) = ^CallSideEffect : ~m? +# 35| v35_1355(void) = ^IndirectReadSideEffect[-1] : &:r35_1351, ~m? +# 35| mu35_1356(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1351 +# 35| r35_1357(bool) = Constant[0] : +# 35| v35_1358(void) = ConditionalBranch : r35_1357 #-----| False -> Block 98 #-----| True (back edge) -> Block 97 -# 310| Block 98 -# 310| r310_1(glval) = VariableAddress[x97] : -# 310| mu310_2(String) = Uninitialized[x97] : &:r310_1 -# 310| r310_3(glval) = FunctionAddress[String] : -# 310| v310_4(void) = Call[String] : func:r310_3, this:r310_1 -# 310| mu310_5(unknown) = ^CallSideEffect : ~m? -# 310| mu310_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r310_1 -# 311| r311_1(glval) = VariableAddress[x97] : -# 311| r311_2(glval) = FunctionAddress[~String] : -# 311| v311_3(void) = Call[~String] : func:r311_2, this:r311_1 -# 311| mu311_4(unknown) = ^CallSideEffect : ~m? -# 311| v311_5(void) = ^IndirectReadSideEffect[-1] : &:r311_1, ~m? -# 311| mu311_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r311_1 -# 311| r311_7(bool) = Constant[0] : -# 311| v311_8(void) = ConditionalBranch : r311_7 +# 35| Block 98 +# 35| r35_1359(glval) = VariableAddress[x97] : +# 35| mu35_1360(String) = Uninitialized[x97] : &:r35_1359 +# 35| r35_1361(glval) = FunctionAddress[String] : +# 35| v35_1362(void) = Call[String] : func:r35_1361, this:r35_1359 +# 35| mu35_1363(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1364(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1359 +# 35| r35_1365(glval) = VariableAddress[x97] : +# 35| r35_1366(glval) = FunctionAddress[~String] : +# 35| v35_1367(void) = Call[~String] : func:r35_1366, this:r35_1365 +# 35| mu35_1368(unknown) = ^CallSideEffect : ~m? +# 35| v35_1369(void) = ^IndirectReadSideEffect[-1] : &:r35_1365, ~m? +# 35| mu35_1370(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1365 +# 35| r35_1371(bool) = Constant[0] : +# 35| v35_1372(void) = ConditionalBranch : r35_1371 #-----| False -> Block 99 #-----| True (back edge) -> Block 98 -# 313| Block 99 -# 313| r313_1(glval) = VariableAddress[x98] : -# 313| mu313_2(String) = Uninitialized[x98] : &:r313_1 -# 313| r313_3(glval) = FunctionAddress[String] : -# 313| v313_4(void) = Call[String] : func:r313_3, this:r313_1 -# 313| mu313_5(unknown) = ^CallSideEffect : ~m? -# 313| mu313_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r313_1 -# 314| r314_1(glval) = VariableAddress[x98] : -# 314| r314_2(glval) = FunctionAddress[~String] : -# 314| v314_3(void) = Call[~String] : func:r314_2, this:r314_1 -# 314| mu314_4(unknown) = ^CallSideEffect : ~m? -# 314| v314_5(void) = ^IndirectReadSideEffect[-1] : &:r314_1, ~m? -# 314| mu314_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r314_1 -# 314| r314_7(bool) = Constant[0] : -# 314| v314_8(void) = ConditionalBranch : r314_7 +# 35| Block 99 +# 35| r35_1373(glval) = VariableAddress[x98] : +# 35| mu35_1374(String) = Uninitialized[x98] : &:r35_1373 +# 35| r35_1375(glval) = FunctionAddress[String] : +# 35| v35_1376(void) = Call[String] : func:r35_1375, this:r35_1373 +# 35| mu35_1377(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1378(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1373 +# 35| r35_1379(glval) = VariableAddress[x98] : +# 35| r35_1380(glval) = FunctionAddress[~String] : +# 35| v35_1381(void) = Call[~String] : func:r35_1380, this:r35_1379 +# 35| mu35_1382(unknown) = ^CallSideEffect : ~m? +# 35| v35_1383(void) = ^IndirectReadSideEffect[-1] : &:r35_1379, ~m? +# 35| mu35_1384(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1379 +# 35| r35_1385(bool) = Constant[0] : +# 35| v35_1386(void) = ConditionalBranch : r35_1385 #-----| False -> Block 100 #-----| True (back edge) -> Block 99 -# 316| Block 100 -# 316| r316_1(glval) = VariableAddress[x99] : -# 316| mu316_2(String) = Uninitialized[x99] : &:r316_1 -# 316| r316_3(glval) = FunctionAddress[String] : -# 316| v316_4(void) = Call[String] : func:r316_3, this:r316_1 -# 316| mu316_5(unknown) = ^CallSideEffect : ~m? -# 316| mu316_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r316_1 -# 317| r317_1(glval) = VariableAddress[x99] : -# 317| r317_2(glval) = FunctionAddress[~String] : -# 317| v317_3(void) = Call[~String] : func:r317_2, this:r317_1 -# 317| mu317_4(unknown) = ^CallSideEffect : ~m? -# 317| v317_5(void) = ^IndirectReadSideEffect[-1] : &:r317_1, ~m? -# 317| mu317_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r317_1 -# 317| r317_7(bool) = Constant[0] : -# 317| v317_8(void) = ConditionalBranch : r317_7 +# 35| Block 100 +# 35| r35_1387(glval) = VariableAddress[x99] : +# 35| mu35_1388(String) = Uninitialized[x99] : &:r35_1387 +# 35| r35_1389(glval) = FunctionAddress[String] : +# 35| v35_1390(void) = Call[String] : func:r35_1389, this:r35_1387 +# 35| mu35_1391(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1392(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1387 +# 35| r35_1393(glval) = VariableAddress[x99] : +# 35| r35_1394(glval) = FunctionAddress[~String] : +# 35| v35_1395(void) = Call[~String] : func:r35_1394, this:r35_1393 +# 35| mu35_1396(unknown) = ^CallSideEffect : ~m? +# 35| v35_1397(void) = ^IndirectReadSideEffect[-1] : &:r35_1393, ~m? +# 35| mu35_1398(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1393 +# 35| r35_1399(bool) = Constant[0] : +# 35| v35_1400(void) = ConditionalBranch : r35_1399 #-----| False -> Block 101 #-----| True (back edge) -> Block 100 -# 319| Block 101 -# 319| r319_1(glval) = VariableAddress[x100] : -# 319| mu319_2(String) = Uninitialized[x100] : &:r319_1 -# 319| r319_3(glval) = FunctionAddress[String] : -# 319| v319_4(void) = Call[String] : func:r319_3, this:r319_1 -# 319| mu319_5(unknown) = ^CallSideEffect : ~m? -# 319| mu319_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r319_1 -# 320| r320_1(glval) = VariableAddress[x100] : -# 320| r320_2(glval) = FunctionAddress[~String] : -# 320| v320_3(void) = Call[~String] : func:r320_2, this:r320_1 -# 320| mu320_4(unknown) = ^CallSideEffect : ~m? -# 320| v320_5(void) = ^IndirectReadSideEffect[-1] : &:r320_1, ~m? -# 320| mu320_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r320_1 -# 320| r320_7(bool) = Constant[0] : -# 320| v320_8(void) = ConditionalBranch : r320_7 +# 35| Block 101 +# 35| r35_1401(glval) = VariableAddress[x100] : +# 35| mu35_1402(String) = Uninitialized[x100] : &:r35_1401 +# 35| r35_1403(glval) = FunctionAddress[String] : +# 35| v35_1404(void) = Call[String] : func:r35_1403, this:r35_1401 +# 35| mu35_1405(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1406(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1401 +# 35| r35_1407(glval) = VariableAddress[x100] : +# 35| r35_1408(glval) = FunctionAddress[~String] : +# 35| v35_1409(void) = Call[~String] : func:r35_1408, this:r35_1407 +# 35| mu35_1410(unknown) = ^CallSideEffect : ~m? +# 35| v35_1411(void) = ^IndirectReadSideEffect[-1] : &:r35_1407, ~m? +# 35| mu35_1412(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1407 +# 35| r35_1413(bool) = Constant[0] : +# 35| v35_1414(void) = ConditionalBranch : r35_1413 #-----| False -> Block 102 #-----| True (back edge) -> Block 101 -# 322| Block 102 -# 322| r322_1(glval) = VariableAddress[x101] : -# 322| mu322_2(String) = Uninitialized[x101] : &:r322_1 -# 322| r322_3(glval) = FunctionAddress[String] : -# 322| v322_4(void) = Call[String] : func:r322_3, this:r322_1 -# 322| mu322_5(unknown) = ^CallSideEffect : ~m? -# 322| mu322_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r322_1 -# 323| r323_1(glval) = VariableAddress[x101] : -# 323| r323_2(glval) = FunctionAddress[~String] : -# 323| v323_3(void) = Call[~String] : func:r323_2, this:r323_1 -# 323| mu323_4(unknown) = ^CallSideEffect : ~m? -# 323| v323_5(void) = ^IndirectReadSideEffect[-1] : &:r323_1, ~m? -# 323| mu323_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r323_1 -# 323| r323_7(bool) = Constant[0] : -# 323| v323_8(void) = ConditionalBranch : r323_7 +# 35| Block 102 +# 35| r35_1415(glval) = VariableAddress[x101] : +# 35| mu35_1416(String) = Uninitialized[x101] : &:r35_1415 +# 35| r35_1417(glval) = FunctionAddress[String] : +# 35| v35_1418(void) = Call[String] : func:r35_1417, this:r35_1415 +# 35| mu35_1419(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1420(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1415 +# 35| r35_1421(glval) = VariableAddress[x101] : +# 35| r35_1422(glval) = FunctionAddress[~String] : +# 35| v35_1423(void) = Call[~String] : func:r35_1422, this:r35_1421 +# 35| mu35_1424(unknown) = ^CallSideEffect : ~m? +# 35| v35_1425(void) = ^IndirectReadSideEffect[-1] : &:r35_1421, ~m? +# 35| mu35_1426(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1421 +# 35| r35_1427(bool) = Constant[0] : +# 35| v35_1428(void) = ConditionalBranch : r35_1427 #-----| False -> Block 103 #-----| True (back edge) -> Block 102 -# 325| Block 103 -# 325| r325_1(glval) = VariableAddress[x102] : -# 325| mu325_2(String) = Uninitialized[x102] : &:r325_1 -# 325| r325_3(glval) = FunctionAddress[String] : -# 325| v325_4(void) = Call[String] : func:r325_3, this:r325_1 -# 325| mu325_5(unknown) = ^CallSideEffect : ~m? -# 325| mu325_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r325_1 -# 326| r326_1(glval) = VariableAddress[x102] : -# 326| r326_2(glval) = FunctionAddress[~String] : -# 326| v326_3(void) = Call[~String] : func:r326_2, this:r326_1 -# 326| mu326_4(unknown) = ^CallSideEffect : ~m? -# 326| v326_5(void) = ^IndirectReadSideEffect[-1] : &:r326_1, ~m? -# 326| mu326_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r326_1 -# 326| r326_7(bool) = Constant[0] : -# 326| v326_8(void) = ConditionalBranch : r326_7 +# 35| Block 103 +# 35| r35_1429(glval) = VariableAddress[x102] : +# 35| mu35_1430(String) = Uninitialized[x102] : &:r35_1429 +# 35| r35_1431(glval) = FunctionAddress[String] : +# 35| v35_1432(void) = Call[String] : func:r35_1431, this:r35_1429 +# 35| mu35_1433(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1434(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1429 +# 35| r35_1435(glval) = VariableAddress[x102] : +# 35| r35_1436(glval) = FunctionAddress[~String] : +# 35| v35_1437(void) = Call[~String] : func:r35_1436, this:r35_1435 +# 35| mu35_1438(unknown) = ^CallSideEffect : ~m? +# 35| v35_1439(void) = ^IndirectReadSideEffect[-1] : &:r35_1435, ~m? +# 35| mu35_1440(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1435 +# 35| r35_1441(bool) = Constant[0] : +# 35| v35_1442(void) = ConditionalBranch : r35_1441 #-----| False -> Block 104 #-----| True (back edge) -> Block 103 -# 328| Block 104 -# 328| r328_1(glval) = VariableAddress[x103] : -# 328| mu328_2(String) = Uninitialized[x103] : &:r328_1 -# 328| r328_3(glval) = FunctionAddress[String] : -# 328| v328_4(void) = Call[String] : func:r328_3, this:r328_1 -# 328| mu328_5(unknown) = ^CallSideEffect : ~m? -# 328| mu328_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r328_1 -# 329| r329_1(glval) = VariableAddress[x103] : -# 329| r329_2(glval) = FunctionAddress[~String] : -# 329| v329_3(void) = Call[~String] : func:r329_2, this:r329_1 -# 329| mu329_4(unknown) = ^CallSideEffect : ~m? -# 329| v329_5(void) = ^IndirectReadSideEffect[-1] : &:r329_1, ~m? -# 329| mu329_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r329_1 -# 329| r329_7(bool) = Constant[0] : -# 329| v329_8(void) = ConditionalBranch : r329_7 +# 35| Block 104 +# 35| r35_1443(glval) = VariableAddress[x103] : +# 35| mu35_1444(String) = Uninitialized[x103] : &:r35_1443 +# 35| r35_1445(glval) = FunctionAddress[String] : +# 35| v35_1446(void) = Call[String] : func:r35_1445, this:r35_1443 +# 35| mu35_1447(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1448(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1443 +# 35| r35_1449(glval) = VariableAddress[x103] : +# 35| r35_1450(glval) = FunctionAddress[~String] : +# 35| v35_1451(void) = Call[~String] : func:r35_1450, this:r35_1449 +# 35| mu35_1452(unknown) = ^CallSideEffect : ~m? +# 35| v35_1453(void) = ^IndirectReadSideEffect[-1] : &:r35_1449, ~m? +# 35| mu35_1454(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1449 +# 35| r35_1455(bool) = Constant[0] : +# 35| v35_1456(void) = ConditionalBranch : r35_1455 #-----| False -> Block 105 #-----| True (back edge) -> Block 104 -# 331| Block 105 -# 331| r331_1(glval) = VariableAddress[x104] : -# 331| mu331_2(String) = Uninitialized[x104] : &:r331_1 -# 331| r331_3(glval) = FunctionAddress[String] : -# 331| v331_4(void) = Call[String] : func:r331_3, this:r331_1 -# 331| mu331_5(unknown) = ^CallSideEffect : ~m? -# 331| mu331_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r331_1 -# 332| r332_1(glval) = VariableAddress[x104] : -# 332| r332_2(glval) = FunctionAddress[~String] : -# 332| v332_3(void) = Call[~String] : func:r332_2, this:r332_1 -# 332| mu332_4(unknown) = ^CallSideEffect : ~m? -# 332| v332_5(void) = ^IndirectReadSideEffect[-1] : &:r332_1, ~m? -# 332| mu332_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r332_1 -# 332| r332_7(bool) = Constant[0] : -# 332| v332_8(void) = ConditionalBranch : r332_7 +# 35| Block 105 +# 35| r35_1457(glval) = VariableAddress[x104] : +# 35| mu35_1458(String) = Uninitialized[x104] : &:r35_1457 +# 35| r35_1459(glval) = FunctionAddress[String] : +# 35| v35_1460(void) = Call[String] : func:r35_1459, this:r35_1457 +# 35| mu35_1461(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1462(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1457 +# 35| r35_1463(glval) = VariableAddress[x104] : +# 35| r35_1464(glval) = FunctionAddress[~String] : +# 35| v35_1465(void) = Call[~String] : func:r35_1464, this:r35_1463 +# 35| mu35_1466(unknown) = ^CallSideEffect : ~m? +# 35| v35_1467(void) = ^IndirectReadSideEffect[-1] : &:r35_1463, ~m? +# 35| mu35_1468(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1463 +# 35| r35_1469(bool) = Constant[0] : +# 35| v35_1470(void) = ConditionalBranch : r35_1469 #-----| False -> Block 106 #-----| True (back edge) -> Block 105 -# 334| Block 106 -# 334| r334_1(glval) = VariableAddress[x105] : -# 334| mu334_2(String) = Uninitialized[x105] : &:r334_1 -# 334| r334_3(glval) = FunctionAddress[String] : -# 334| v334_4(void) = Call[String] : func:r334_3, this:r334_1 -# 334| mu334_5(unknown) = ^CallSideEffect : ~m? -# 334| mu334_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r334_1 -# 335| r335_1(glval) = VariableAddress[x105] : -# 335| r335_2(glval) = FunctionAddress[~String] : -# 335| v335_3(void) = Call[~String] : func:r335_2, this:r335_1 -# 335| mu335_4(unknown) = ^CallSideEffect : ~m? -# 335| v335_5(void) = ^IndirectReadSideEffect[-1] : &:r335_1, ~m? -# 335| mu335_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r335_1 -# 335| r335_7(bool) = Constant[0] : -# 335| v335_8(void) = ConditionalBranch : r335_7 +# 35| Block 106 +# 35| r35_1471(glval) = VariableAddress[x105] : +# 35| mu35_1472(String) = Uninitialized[x105] : &:r35_1471 +# 35| r35_1473(glval) = FunctionAddress[String] : +# 35| v35_1474(void) = Call[String] : func:r35_1473, this:r35_1471 +# 35| mu35_1475(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1476(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1471 +# 35| r35_1477(glval) = VariableAddress[x105] : +# 35| r35_1478(glval) = FunctionAddress[~String] : +# 35| v35_1479(void) = Call[~String] : func:r35_1478, this:r35_1477 +# 35| mu35_1480(unknown) = ^CallSideEffect : ~m? +# 35| v35_1481(void) = ^IndirectReadSideEffect[-1] : &:r35_1477, ~m? +# 35| mu35_1482(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1477 +# 35| r35_1483(bool) = Constant[0] : +# 35| v35_1484(void) = ConditionalBranch : r35_1483 #-----| False -> Block 107 #-----| True (back edge) -> Block 106 -# 337| Block 107 -# 337| r337_1(glval) = VariableAddress[x106] : -# 337| mu337_2(String) = Uninitialized[x106] : &:r337_1 -# 337| r337_3(glval) = FunctionAddress[String] : -# 337| v337_4(void) = Call[String] : func:r337_3, this:r337_1 -# 337| mu337_5(unknown) = ^CallSideEffect : ~m? -# 337| mu337_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r337_1 -# 338| r338_1(glval) = VariableAddress[x106] : -# 338| r338_2(glval) = FunctionAddress[~String] : -# 338| v338_3(void) = Call[~String] : func:r338_2, this:r338_1 -# 338| mu338_4(unknown) = ^CallSideEffect : ~m? -# 338| v338_5(void) = ^IndirectReadSideEffect[-1] : &:r338_1, ~m? -# 338| mu338_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r338_1 -# 338| r338_7(bool) = Constant[0] : -# 338| v338_8(void) = ConditionalBranch : r338_7 +# 35| Block 107 +# 35| r35_1485(glval) = VariableAddress[x106] : +# 35| mu35_1486(String) = Uninitialized[x106] : &:r35_1485 +# 35| r35_1487(glval) = FunctionAddress[String] : +# 35| v35_1488(void) = Call[String] : func:r35_1487, this:r35_1485 +# 35| mu35_1489(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1490(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1485 +# 35| r35_1491(glval) = VariableAddress[x106] : +# 35| r35_1492(glval) = FunctionAddress[~String] : +# 35| v35_1493(void) = Call[~String] : func:r35_1492, this:r35_1491 +# 35| mu35_1494(unknown) = ^CallSideEffect : ~m? +# 35| v35_1495(void) = ^IndirectReadSideEffect[-1] : &:r35_1491, ~m? +# 35| mu35_1496(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1491 +# 35| r35_1497(bool) = Constant[0] : +# 35| v35_1498(void) = ConditionalBranch : r35_1497 #-----| False -> Block 108 #-----| True (back edge) -> Block 107 -# 340| Block 108 -# 340| r340_1(glval) = VariableAddress[x107] : -# 340| mu340_2(String) = Uninitialized[x107] : &:r340_1 -# 340| r340_3(glval) = FunctionAddress[String] : -# 340| v340_4(void) = Call[String] : func:r340_3, this:r340_1 -# 340| mu340_5(unknown) = ^CallSideEffect : ~m? -# 340| mu340_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r340_1 -# 341| r341_1(glval) = VariableAddress[x107] : -# 341| r341_2(glval) = FunctionAddress[~String] : -# 341| v341_3(void) = Call[~String] : func:r341_2, this:r341_1 -# 341| mu341_4(unknown) = ^CallSideEffect : ~m? -# 341| v341_5(void) = ^IndirectReadSideEffect[-1] : &:r341_1, ~m? -# 341| mu341_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r341_1 -# 341| r341_7(bool) = Constant[0] : -# 341| v341_8(void) = ConditionalBranch : r341_7 +# 35| Block 108 +# 35| r35_1499(glval) = VariableAddress[x107] : +# 35| mu35_1500(String) = Uninitialized[x107] : &:r35_1499 +# 35| r35_1501(glval) = FunctionAddress[String] : +# 35| v35_1502(void) = Call[String] : func:r35_1501, this:r35_1499 +# 35| mu35_1503(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1504(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1499 +# 35| r35_1505(glval) = VariableAddress[x107] : +# 35| r35_1506(glval) = FunctionAddress[~String] : +# 35| v35_1507(void) = Call[~String] : func:r35_1506, this:r35_1505 +# 35| mu35_1508(unknown) = ^CallSideEffect : ~m? +# 35| v35_1509(void) = ^IndirectReadSideEffect[-1] : &:r35_1505, ~m? +# 35| mu35_1510(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1505 +# 35| r35_1511(bool) = Constant[0] : +# 35| v35_1512(void) = ConditionalBranch : r35_1511 #-----| False -> Block 109 #-----| True (back edge) -> Block 108 -# 343| Block 109 -# 343| r343_1(glval) = VariableAddress[x108] : -# 343| mu343_2(String) = Uninitialized[x108] : &:r343_1 -# 343| r343_3(glval) = FunctionAddress[String] : -# 343| v343_4(void) = Call[String] : func:r343_3, this:r343_1 -# 343| mu343_5(unknown) = ^CallSideEffect : ~m? -# 343| mu343_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r343_1 -# 344| r344_1(glval) = VariableAddress[x108] : -# 344| r344_2(glval) = FunctionAddress[~String] : -# 344| v344_3(void) = Call[~String] : func:r344_2, this:r344_1 -# 344| mu344_4(unknown) = ^CallSideEffect : ~m? -# 344| v344_5(void) = ^IndirectReadSideEffect[-1] : &:r344_1, ~m? -# 344| mu344_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r344_1 -# 344| r344_7(bool) = Constant[0] : -# 344| v344_8(void) = ConditionalBranch : r344_7 +# 35| Block 109 +# 35| r35_1513(glval) = VariableAddress[x108] : +# 35| mu35_1514(String) = Uninitialized[x108] : &:r35_1513 +# 35| r35_1515(glval) = FunctionAddress[String] : +# 35| v35_1516(void) = Call[String] : func:r35_1515, this:r35_1513 +# 35| mu35_1517(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1518(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1513 +# 35| r35_1519(glval) = VariableAddress[x108] : +# 35| r35_1520(glval) = FunctionAddress[~String] : +# 35| v35_1521(void) = Call[~String] : func:r35_1520, this:r35_1519 +# 35| mu35_1522(unknown) = ^CallSideEffect : ~m? +# 35| v35_1523(void) = ^IndirectReadSideEffect[-1] : &:r35_1519, ~m? +# 35| mu35_1524(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1519 +# 35| r35_1525(bool) = Constant[0] : +# 35| v35_1526(void) = ConditionalBranch : r35_1525 #-----| False -> Block 110 #-----| True (back edge) -> Block 109 -# 346| Block 110 -# 346| r346_1(glval) = VariableAddress[x109] : -# 346| mu346_2(String) = Uninitialized[x109] : &:r346_1 -# 346| r346_3(glval) = FunctionAddress[String] : -# 346| v346_4(void) = Call[String] : func:r346_3, this:r346_1 -# 346| mu346_5(unknown) = ^CallSideEffect : ~m? -# 346| mu346_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r346_1 -# 347| r347_1(glval) = VariableAddress[x109] : -# 347| r347_2(glval) = FunctionAddress[~String] : -# 347| v347_3(void) = Call[~String] : func:r347_2, this:r347_1 -# 347| mu347_4(unknown) = ^CallSideEffect : ~m? -# 347| v347_5(void) = ^IndirectReadSideEffect[-1] : &:r347_1, ~m? -# 347| mu347_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r347_1 -# 347| r347_7(bool) = Constant[0] : -# 347| v347_8(void) = ConditionalBranch : r347_7 +# 35| Block 110 +# 35| r35_1527(glval) = VariableAddress[x109] : +# 35| mu35_1528(String) = Uninitialized[x109] : &:r35_1527 +# 35| r35_1529(glval) = FunctionAddress[String] : +# 35| v35_1530(void) = Call[String] : func:r35_1529, this:r35_1527 +# 35| mu35_1531(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1532(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1527 +# 35| r35_1533(glval) = VariableAddress[x109] : +# 35| r35_1534(glval) = FunctionAddress[~String] : +# 35| v35_1535(void) = Call[~String] : func:r35_1534, this:r35_1533 +# 35| mu35_1536(unknown) = ^CallSideEffect : ~m? +# 35| v35_1537(void) = ^IndirectReadSideEffect[-1] : &:r35_1533, ~m? +# 35| mu35_1538(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1533 +# 35| r35_1539(bool) = Constant[0] : +# 35| v35_1540(void) = ConditionalBranch : r35_1539 #-----| False -> Block 111 #-----| True (back edge) -> Block 110 -# 349| Block 111 -# 349| r349_1(glval) = VariableAddress[x110] : -# 349| mu349_2(String) = Uninitialized[x110] : &:r349_1 -# 349| r349_3(glval) = FunctionAddress[String] : -# 349| v349_4(void) = Call[String] : func:r349_3, this:r349_1 -# 349| mu349_5(unknown) = ^CallSideEffect : ~m? -# 349| mu349_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r349_1 -# 350| r350_1(glval) = VariableAddress[x110] : -# 350| r350_2(glval) = FunctionAddress[~String] : -# 350| v350_3(void) = Call[~String] : func:r350_2, this:r350_1 -# 350| mu350_4(unknown) = ^CallSideEffect : ~m? -# 350| v350_5(void) = ^IndirectReadSideEffect[-1] : &:r350_1, ~m? -# 350| mu350_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r350_1 -# 350| r350_7(bool) = Constant[0] : -# 350| v350_8(void) = ConditionalBranch : r350_7 +# 35| Block 111 +# 35| r35_1541(glval) = VariableAddress[x110] : +# 35| mu35_1542(String) = Uninitialized[x110] : &:r35_1541 +# 35| r35_1543(glval) = FunctionAddress[String] : +# 35| v35_1544(void) = Call[String] : func:r35_1543, this:r35_1541 +# 35| mu35_1545(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1546(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1541 +# 35| r35_1547(glval) = VariableAddress[x110] : +# 35| r35_1548(glval) = FunctionAddress[~String] : +# 35| v35_1549(void) = Call[~String] : func:r35_1548, this:r35_1547 +# 35| mu35_1550(unknown) = ^CallSideEffect : ~m? +# 35| v35_1551(void) = ^IndirectReadSideEffect[-1] : &:r35_1547, ~m? +# 35| mu35_1552(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1547 +# 35| r35_1553(bool) = Constant[0] : +# 35| v35_1554(void) = ConditionalBranch : r35_1553 #-----| False -> Block 112 #-----| True (back edge) -> Block 111 -# 352| Block 112 -# 352| r352_1(glval) = VariableAddress[x111] : -# 352| mu352_2(String) = Uninitialized[x111] : &:r352_1 -# 352| r352_3(glval) = FunctionAddress[String] : -# 352| v352_4(void) = Call[String] : func:r352_3, this:r352_1 -# 352| mu352_5(unknown) = ^CallSideEffect : ~m? -# 352| mu352_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r352_1 -# 353| r353_1(glval) = VariableAddress[x111] : -# 353| r353_2(glval) = FunctionAddress[~String] : -# 353| v353_3(void) = Call[~String] : func:r353_2, this:r353_1 -# 353| mu353_4(unknown) = ^CallSideEffect : ~m? -# 353| v353_5(void) = ^IndirectReadSideEffect[-1] : &:r353_1, ~m? -# 353| mu353_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r353_1 -# 353| r353_7(bool) = Constant[0] : -# 353| v353_8(void) = ConditionalBranch : r353_7 +# 35| Block 112 +# 35| r35_1555(glval) = VariableAddress[x111] : +# 35| mu35_1556(String) = Uninitialized[x111] : &:r35_1555 +# 35| r35_1557(glval) = FunctionAddress[String] : +# 35| v35_1558(void) = Call[String] : func:r35_1557, this:r35_1555 +# 35| mu35_1559(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1560(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1555 +# 35| r35_1561(glval) = VariableAddress[x111] : +# 35| r35_1562(glval) = FunctionAddress[~String] : +# 35| v35_1563(void) = Call[~String] : func:r35_1562, this:r35_1561 +# 35| mu35_1564(unknown) = ^CallSideEffect : ~m? +# 35| v35_1565(void) = ^IndirectReadSideEffect[-1] : &:r35_1561, ~m? +# 35| mu35_1566(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1561 +# 35| r35_1567(bool) = Constant[0] : +# 35| v35_1568(void) = ConditionalBranch : r35_1567 #-----| False -> Block 113 #-----| True (back edge) -> Block 112 -# 355| Block 113 -# 355| r355_1(glval) = VariableAddress[x112] : -# 355| mu355_2(String) = Uninitialized[x112] : &:r355_1 -# 355| r355_3(glval) = FunctionAddress[String] : -# 355| v355_4(void) = Call[String] : func:r355_3, this:r355_1 -# 355| mu355_5(unknown) = ^CallSideEffect : ~m? -# 355| mu355_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r355_1 -# 356| r356_1(glval) = VariableAddress[x112] : -# 356| r356_2(glval) = FunctionAddress[~String] : -# 356| v356_3(void) = Call[~String] : func:r356_2, this:r356_1 -# 356| mu356_4(unknown) = ^CallSideEffect : ~m? -# 356| v356_5(void) = ^IndirectReadSideEffect[-1] : &:r356_1, ~m? -# 356| mu356_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r356_1 -# 356| r356_7(bool) = Constant[0] : -# 356| v356_8(void) = ConditionalBranch : r356_7 +# 35| Block 113 +# 35| r35_1569(glval) = VariableAddress[x112] : +# 35| mu35_1570(String) = Uninitialized[x112] : &:r35_1569 +# 35| r35_1571(glval) = FunctionAddress[String] : +# 35| v35_1572(void) = Call[String] : func:r35_1571, this:r35_1569 +# 35| mu35_1573(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1574(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1569 +# 35| r35_1575(glval) = VariableAddress[x112] : +# 35| r35_1576(glval) = FunctionAddress[~String] : +# 35| v35_1577(void) = Call[~String] : func:r35_1576, this:r35_1575 +# 35| mu35_1578(unknown) = ^CallSideEffect : ~m? +# 35| v35_1579(void) = ^IndirectReadSideEffect[-1] : &:r35_1575, ~m? +# 35| mu35_1580(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1575 +# 35| r35_1581(bool) = Constant[0] : +# 35| v35_1582(void) = ConditionalBranch : r35_1581 #-----| False -> Block 114 #-----| True (back edge) -> Block 113 -# 358| Block 114 -# 358| r358_1(glval) = VariableAddress[x113] : -# 358| mu358_2(String) = Uninitialized[x113] : &:r358_1 -# 358| r358_3(glval) = FunctionAddress[String] : -# 358| v358_4(void) = Call[String] : func:r358_3, this:r358_1 -# 358| mu358_5(unknown) = ^CallSideEffect : ~m? -# 358| mu358_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r358_1 -# 359| r359_1(glval) = VariableAddress[x113] : -# 359| r359_2(glval) = FunctionAddress[~String] : -# 359| v359_3(void) = Call[~String] : func:r359_2, this:r359_1 -# 359| mu359_4(unknown) = ^CallSideEffect : ~m? -# 359| v359_5(void) = ^IndirectReadSideEffect[-1] : &:r359_1, ~m? -# 359| mu359_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r359_1 -# 359| r359_7(bool) = Constant[0] : -# 359| v359_8(void) = ConditionalBranch : r359_7 +# 35| Block 114 +# 35| r35_1583(glval) = VariableAddress[x113] : +# 35| mu35_1584(String) = Uninitialized[x113] : &:r35_1583 +# 35| r35_1585(glval) = FunctionAddress[String] : +# 35| v35_1586(void) = Call[String] : func:r35_1585, this:r35_1583 +# 35| mu35_1587(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1588(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1583 +# 35| r35_1589(glval) = VariableAddress[x113] : +# 35| r35_1590(glval) = FunctionAddress[~String] : +# 35| v35_1591(void) = Call[~String] : func:r35_1590, this:r35_1589 +# 35| mu35_1592(unknown) = ^CallSideEffect : ~m? +# 35| v35_1593(void) = ^IndirectReadSideEffect[-1] : &:r35_1589, ~m? +# 35| mu35_1594(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1589 +# 35| r35_1595(bool) = Constant[0] : +# 35| v35_1596(void) = ConditionalBranch : r35_1595 #-----| False -> Block 115 #-----| True (back edge) -> Block 114 -# 361| Block 115 -# 361| r361_1(glval) = VariableAddress[x114] : -# 361| mu361_2(String) = Uninitialized[x114] : &:r361_1 -# 361| r361_3(glval) = FunctionAddress[String] : -# 361| v361_4(void) = Call[String] : func:r361_3, this:r361_1 -# 361| mu361_5(unknown) = ^CallSideEffect : ~m? -# 361| mu361_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r361_1 -# 362| r362_1(glval) = VariableAddress[x114] : -# 362| r362_2(glval) = FunctionAddress[~String] : -# 362| v362_3(void) = Call[~String] : func:r362_2, this:r362_1 -# 362| mu362_4(unknown) = ^CallSideEffect : ~m? -# 362| v362_5(void) = ^IndirectReadSideEffect[-1] : &:r362_1, ~m? -# 362| mu362_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r362_1 -# 362| r362_7(bool) = Constant[0] : -# 362| v362_8(void) = ConditionalBranch : r362_7 +# 35| Block 115 +# 35| r35_1597(glval) = VariableAddress[x114] : +# 35| mu35_1598(String) = Uninitialized[x114] : &:r35_1597 +# 35| r35_1599(glval) = FunctionAddress[String] : +# 35| v35_1600(void) = Call[String] : func:r35_1599, this:r35_1597 +# 35| mu35_1601(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1602(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1597 +# 35| r35_1603(glval) = VariableAddress[x114] : +# 35| r35_1604(glval) = FunctionAddress[~String] : +# 35| v35_1605(void) = Call[~String] : func:r35_1604, this:r35_1603 +# 35| mu35_1606(unknown) = ^CallSideEffect : ~m? +# 35| v35_1607(void) = ^IndirectReadSideEffect[-1] : &:r35_1603, ~m? +# 35| mu35_1608(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1603 +# 35| r35_1609(bool) = Constant[0] : +# 35| v35_1610(void) = ConditionalBranch : r35_1609 #-----| False -> Block 116 #-----| True (back edge) -> Block 115 -# 364| Block 116 -# 364| r364_1(glval) = VariableAddress[x115] : -# 364| mu364_2(String) = Uninitialized[x115] : &:r364_1 -# 364| r364_3(glval) = FunctionAddress[String] : -# 364| v364_4(void) = Call[String] : func:r364_3, this:r364_1 -# 364| mu364_5(unknown) = ^CallSideEffect : ~m? -# 364| mu364_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r364_1 -# 365| r365_1(glval) = VariableAddress[x115] : -# 365| r365_2(glval) = FunctionAddress[~String] : -# 365| v365_3(void) = Call[~String] : func:r365_2, this:r365_1 -# 365| mu365_4(unknown) = ^CallSideEffect : ~m? -# 365| v365_5(void) = ^IndirectReadSideEffect[-1] : &:r365_1, ~m? -# 365| mu365_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r365_1 -# 365| r365_7(bool) = Constant[0] : -# 365| v365_8(void) = ConditionalBranch : r365_7 +# 35| Block 116 +# 35| r35_1611(glval) = VariableAddress[x115] : +# 35| mu35_1612(String) = Uninitialized[x115] : &:r35_1611 +# 35| r35_1613(glval) = FunctionAddress[String] : +# 35| v35_1614(void) = Call[String] : func:r35_1613, this:r35_1611 +# 35| mu35_1615(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1616(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1611 +# 35| r35_1617(glval) = VariableAddress[x115] : +# 35| r35_1618(glval) = FunctionAddress[~String] : +# 35| v35_1619(void) = Call[~String] : func:r35_1618, this:r35_1617 +# 35| mu35_1620(unknown) = ^CallSideEffect : ~m? +# 35| v35_1621(void) = ^IndirectReadSideEffect[-1] : &:r35_1617, ~m? +# 35| mu35_1622(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1617 +# 35| r35_1623(bool) = Constant[0] : +# 35| v35_1624(void) = ConditionalBranch : r35_1623 #-----| False -> Block 117 #-----| True (back edge) -> Block 116 -# 367| Block 117 -# 367| r367_1(glval) = VariableAddress[x116] : -# 367| mu367_2(String) = Uninitialized[x116] : &:r367_1 -# 367| r367_3(glval) = FunctionAddress[String] : -# 367| v367_4(void) = Call[String] : func:r367_3, this:r367_1 -# 367| mu367_5(unknown) = ^CallSideEffect : ~m? -# 367| mu367_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r367_1 -# 368| r368_1(glval) = VariableAddress[x116] : -# 368| r368_2(glval) = FunctionAddress[~String] : -# 368| v368_3(void) = Call[~String] : func:r368_2, this:r368_1 -# 368| mu368_4(unknown) = ^CallSideEffect : ~m? -# 368| v368_5(void) = ^IndirectReadSideEffect[-1] : &:r368_1, ~m? -# 368| mu368_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r368_1 -# 368| r368_7(bool) = Constant[0] : -# 368| v368_8(void) = ConditionalBranch : r368_7 +# 35| Block 117 +# 35| r35_1625(glval) = VariableAddress[x116] : +# 35| mu35_1626(String) = Uninitialized[x116] : &:r35_1625 +# 35| r35_1627(glval) = FunctionAddress[String] : +# 35| v35_1628(void) = Call[String] : func:r35_1627, this:r35_1625 +# 35| mu35_1629(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1630(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1625 +# 35| r35_1631(glval) = VariableAddress[x116] : +# 35| r35_1632(glval) = FunctionAddress[~String] : +# 35| v35_1633(void) = Call[~String] : func:r35_1632, this:r35_1631 +# 35| mu35_1634(unknown) = ^CallSideEffect : ~m? +# 35| v35_1635(void) = ^IndirectReadSideEffect[-1] : &:r35_1631, ~m? +# 35| mu35_1636(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1631 +# 35| r35_1637(bool) = Constant[0] : +# 35| v35_1638(void) = ConditionalBranch : r35_1637 #-----| False -> Block 118 #-----| True (back edge) -> Block 117 -# 370| Block 118 -# 370| r370_1(glval) = VariableAddress[x117] : -# 370| mu370_2(String) = Uninitialized[x117] : &:r370_1 -# 370| r370_3(glval) = FunctionAddress[String] : -# 370| v370_4(void) = Call[String] : func:r370_3, this:r370_1 -# 370| mu370_5(unknown) = ^CallSideEffect : ~m? -# 370| mu370_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r370_1 -# 371| r371_1(glval) = VariableAddress[x117] : -# 371| r371_2(glval) = FunctionAddress[~String] : -# 371| v371_3(void) = Call[~String] : func:r371_2, this:r371_1 -# 371| mu371_4(unknown) = ^CallSideEffect : ~m? -# 371| v371_5(void) = ^IndirectReadSideEffect[-1] : &:r371_1, ~m? -# 371| mu371_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r371_1 -# 371| r371_7(bool) = Constant[0] : -# 371| v371_8(void) = ConditionalBranch : r371_7 +# 35| Block 118 +# 35| r35_1639(glval) = VariableAddress[x117] : +# 35| mu35_1640(String) = Uninitialized[x117] : &:r35_1639 +# 35| r35_1641(glval) = FunctionAddress[String] : +# 35| v35_1642(void) = Call[String] : func:r35_1641, this:r35_1639 +# 35| mu35_1643(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1644(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1639 +# 35| r35_1645(glval) = VariableAddress[x117] : +# 35| r35_1646(glval) = FunctionAddress[~String] : +# 35| v35_1647(void) = Call[~String] : func:r35_1646, this:r35_1645 +# 35| mu35_1648(unknown) = ^CallSideEffect : ~m? +# 35| v35_1649(void) = ^IndirectReadSideEffect[-1] : &:r35_1645, ~m? +# 35| mu35_1650(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1645 +# 35| r35_1651(bool) = Constant[0] : +# 35| v35_1652(void) = ConditionalBranch : r35_1651 #-----| False -> Block 119 #-----| True (back edge) -> Block 118 -# 373| Block 119 -# 373| r373_1(glval) = VariableAddress[x118] : -# 373| mu373_2(String) = Uninitialized[x118] : &:r373_1 -# 373| r373_3(glval) = FunctionAddress[String] : -# 373| v373_4(void) = Call[String] : func:r373_3, this:r373_1 -# 373| mu373_5(unknown) = ^CallSideEffect : ~m? -# 373| mu373_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r373_1 -# 374| r374_1(glval) = VariableAddress[x118] : -# 374| r374_2(glval) = FunctionAddress[~String] : -# 374| v374_3(void) = Call[~String] : func:r374_2, this:r374_1 -# 374| mu374_4(unknown) = ^CallSideEffect : ~m? -# 374| v374_5(void) = ^IndirectReadSideEffect[-1] : &:r374_1, ~m? -# 374| mu374_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r374_1 -# 374| r374_7(bool) = Constant[0] : -# 374| v374_8(void) = ConditionalBranch : r374_7 +# 35| Block 119 +# 35| r35_1653(glval) = VariableAddress[x118] : +# 35| mu35_1654(String) = Uninitialized[x118] : &:r35_1653 +# 35| r35_1655(glval) = FunctionAddress[String] : +# 35| v35_1656(void) = Call[String] : func:r35_1655, this:r35_1653 +# 35| mu35_1657(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1658(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1653 +# 35| r35_1659(glval) = VariableAddress[x118] : +# 35| r35_1660(glval) = FunctionAddress[~String] : +# 35| v35_1661(void) = Call[~String] : func:r35_1660, this:r35_1659 +# 35| mu35_1662(unknown) = ^CallSideEffect : ~m? +# 35| v35_1663(void) = ^IndirectReadSideEffect[-1] : &:r35_1659, ~m? +# 35| mu35_1664(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1659 +# 35| r35_1665(bool) = Constant[0] : +# 35| v35_1666(void) = ConditionalBranch : r35_1665 #-----| False -> Block 120 #-----| True (back edge) -> Block 119 -# 376| Block 120 -# 376| r376_1(glval) = VariableAddress[x119] : -# 376| mu376_2(String) = Uninitialized[x119] : &:r376_1 -# 376| r376_3(glval) = FunctionAddress[String] : -# 376| v376_4(void) = Call[String] : func:r376_3, this:r376_1 -# 376| mu376_5(unknown) = ^CallSideEffect : ~m? -# 376| mu376_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r376_1 -# 377| r377_1(glval) = VariableAddress[x119] : -# 377| r377_2(glval) = FunctionAddress[~String] : -# 377| v377_3(void) = Call[~String] : func:r377_2, this:r377_1 -# 377| mu377_4(unknown) = ^CallSideEffect : ~m? -# 377| v377_5(void) = ^IndirectReadSideEffect[-1] : &:r377_1, ~m? -# 377| mu377_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r377_1 -# 377| r377_7(bool) = Constant[0] : -# 377| v377_8(void) = ConditionalBranch : r377_7 +# 35| Block 120 +# 35| r35_1667(glval) = VariableAddress[x119] : +# 35| mu35_1668(String) = Uninitialized[x119] : &:r35_1667 +# 35| r35_1669(glval) = FunctionAddress[String] : +# 35| v35_1670(void) = Call[String] : func:r35_1669, this:r35_1667 +# 35| mu35_1671(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1672(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1667 +# 35| r35_1673(glval) = VariableAddress[x119] : +# 35| r35_1674(glval) = FunctionAddress[~String] : +# 35| v35_1675(void) = Call[~String] : func:r35_1674, this:r35_1673 +# 35| mu35_1676(unknown) = ^CallSideEffect : ~m? +# 35| v35_1677(void) = ^IndirectReadSideEffect[-1] : &:r35_1673, ~m? +# 35| mu35_1678(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1673 +# 35| r35_1679(bool) = Constant[0] : +# 35| v35_1680(void) = ConditionalBranch : r35_1679 #-----| False -> Block 121 #-----| True (back edge) -> Block 120 -# 379| Block 121 -# 379| r379_1(glval) = VariableAddress[x120] : -# 379| mu379_2(String) = Uninitialized[x120] : &:r379_1 -# 379| r379_3(glval) = FunctionAddress[String] : -# 379| v379_4(void) = Call[String] : func:r379_3, this:r379_1 -# 379| mu379_5(unknown) = ^CallSideEffect : ~m? -# 379| mu379_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r379_1 -# 380| r380_1(glval) = VariableAddress[x120] : -# 380| r380_2(glval) = FunctionAddress[~String] : -# 380| v380_3(void) = Call[~String] : func:r380_2, this:r380_1 -# 380| mu380_4(unknown) = ^CallSideEffect : ~m? -# 380| v380_5(void) = ^IndirectReadSideEffect[-1] : &:r380_1, ~m? -# 380| mu380_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r380_1 -# 380| r380_7(bool) = Constant[0] : -# 380| v380_8(void) = ConditionalBranch : r380_7 +# 35| Block 121 +# 35| r35_1681(glval) = VariableAddress[x120] : +# 35| mu35_1682(String) = Uninitialized[x120] : &:r35_1681 +# 35| r35_1683(glval) = FunctionAddress[String] : +# 35| v35_1684(void) = Call[String] : func:r35_1683, this:r35_1681 +# 35| mu35_1685(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1686(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1681 +# 35| r35_1687(glval) = VariableAddress[x120] : +# 35| r35_1688(glval) = FunctionAddress[~String] : +# 35| v35_1689(void) = Call[~String] : func:r35_1688, this:r35_1687 +# 35| mu35_1690(unknown) = ^CallSideEffect : ~m? +# 35| v35_1691(void) = ^IndirectReadSideEffect[-1] : &:r35_1687, ~m? +# 35| mu35_1692(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1687 +# 35| r35_1693(bool) = Constant[0] : +# 35| v35_1694(void) = ConditionalBranch : r35_1693 #-----| False -> Block 122 #-----| True (back edge) -> Block 121 -# 382| Block 122 -# 382| r382_1(glval) = VariableAddress[x121] : -# 382| mu382_2(String) = Uninitialized[x121] : &:r382_1 -# 382| r382_3(glval) = FunctionAddress[String] : -# 382| v382_4(void) = Call[String] : func:r382_3, this:r382_1 -# 382| mu382_5(unknown) = ^CallSideEffect : ~m? -# 382| mu382_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r382_1 -# 383| r383_1(glval) = VariableAddress[x121] : -# 383| r383_2(glval) = FunctionAddress[~String] : -# 383| v383_3(void) = Call[~String] : func:r383_2, this:r383_1 -# 383| mu383_4(unknown) = ^CallSideEffect : ~m? -# 383| v383_5(void) = ^IndirectReadSideEffect[-1] : &:r383_1, ~m? -# 383| mu383_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r383_1 -# 383| r383_7(bool) = Constant[0] : -# 383| v383_8(void) = ConditionalBranch : r383_7 +# 35| Block 122 +# 35| r35_1695(glval) = VariableAddress[x121] : +# 35| mu35_1696(String) = Uninitialized[x121] : &:r35_1695 +# 35| r35_1697(glval) = FunctionAddress[String] : +# 35| v35_1698(void) = Call[String] : func:r35_1697, this:r35_1695 +# 35| mu35_1699(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1700(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1695 +# 35| r35_1701(glval) = VariableAddress[x121] : +# 35| r35_1702(glval) = FunctionAddress[~String] : +# 35| v35_1703(void) = Call[~String] : func:r35_1702, this:r35_1701 +# 35| mu35_1704(unknown) = ^CallSideEffect : ~m? +# 35| v35_1705(void) = ^IndirectReadSideEffect[-1] : &:r35_1701, ~m? +# 35| mu35_1706(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1701 +# 35| r35_1707(bool) = Constant[0] : +# 35| v35_1708(void) = ConditionalBranch : r35_1707 #-----| False -> Block 123 #-----| True (back edge) -> Block 122 -# 385| Block 123 -# 385| r385_1(glval) = VariableAddress[x122] : -# 385| mu385_2(String) = Uninitialized[x122] : &:r385_1 -# 385| r385_3(glval) = FunctionAddress[String] : -# 385| v385_4(void) = Call[String] : func:r385_3, this:r385_1 -# 385| mu385_5(unknown) = ^CallSideEffect : ~m? -# 385| mu385_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r385_1 -# 386| r386_1(glval) = VariableAddress[x122] : -# 386| r386_2(glval) = FunctionAddress[~String] : -# 386| v386_3(void) = Call[~String] : func:r386_2, this:r386_1 -# 386| mu386_4(unknown) = ^CallSideEffect : ~m? -# 386| v386_5(void) = ^IndirectReadSideEffect[-1] : &:r386_1, ~m? -# 386| mu386_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r386_1 -# 386| r386_7(bool) = Constant[0] : -# 386| v386_8(void) = ConditionalBranch : r386_7 +# 35| Block 123 +# 35| r35_1709(glval) = VariableAddress[x122] : +# 35| mu35_1710(String) = Uninitialized[x122] : &:r35_1709 +# 35| r35_1711(glval) = FunctionAddress[String] : +# 35| v35_1712(void) = Call[String] : func:r35_1711, this:r35_1709 +# 35| mu35_1713(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1714(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1709 +# 35| r35_1715(glval) = VariableAddress[x122] : +# 35| r35_1716(glval) = FunctionAddress[~String] : +# 35| v35_1717(void) = Call[~String] : func:r35_1716, this:r35_1715 +# 35| mu35_1718(unknown) = ^CallSideEffect : ~m? +# 35| v35_1719(void) = ^IndirectReadSideEffect[-1] : &:r35_1715, ~m? +# 35| mu35_1720(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1715 +# 35| r35_1721(bool) = Constant[0] : +# 35| v35_1722(void) = ConditionalBranch : r35_1721 #-----| False -> Block 124 #-----| True (back edge) -> Block 123 -# 388| Block 124 -# 388| r388_1(glval) = VariableAddress[x123] : -# 388| mu388_2(String) = Uninitialized[x123] : &:r388_1 -# 388| r388_3(glval) = FunctionAddress[String] : -# 388| v388_4(void) = Call[String] : func:r388_3, this:r388_1 -# 388| mu388_5(unknown) = ^CallSideEffect : ~m? -# 388| mu388_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r388_1 -# 389| r389_1(glval) = VariableAddress[x123] : -# 389| r389_2(glval) = FunctionAddress[~String] : -# 389| v389_3(void) = Call[~String] : func:r389_2, this:r389_1 -# 389| mu389_4(unknown) = ^CallSideEffect : ~m? -# 389| v389_5(void) = ^IndirectReadSideEffect[-1] : &:r389_1, ~m? -# 389| mu389_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r389_1 -# 389| r389_7(bool) = Constant[0] : -# 389| v389_8(void) = ConditionalBranch : r389_7 +# 35| Block 124 +# 35| r35_1723(glval) = VariableAddress[x123] : +# 35| mu35_1724(String) = Uninitialized[x123] : &:r35_1723 +# 35| r35_1725(glval) = FunctionAddress[String] : +# 35| v35_1726(void) = Call[String] : func:r35_1725, this:r35_1723 +# 35| mu35_1727(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1728(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1723 +# 35| r35_1729(glval) = VariableAddress[x123] : +# 35| r35_1730(glval) = FunctionAddress[~String] : +# 35| v35_1731(void) = Call[~String] : func:r35_1730, this:r35_1729 +# 35| mu35_1732(unknown) = ^CallSideEffect : ~m? +# 35| v35_1733(void) = ^IndirectReadSideEffect[-1] : &:r35_1729, ~m? +# 35| mu35_1734(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1729 +# 35| r35_1735(bool) = Constant[0] : +# 35| v35_1736(void) = ConditionalBranch : r35_1735 #-----| False -> Block 125 #-----| True (back edge) -> Block 124 -# 391| Block 125 -# 391| r391_1(glval) = VariableAddress[x124] : -# 391| mu391_2(String) = Uninitialized[x124] : &:r391_1 -# 391| r391_3(glval) = FunctionAddress[String] : -# 391| v391_4(void) = Call[String] : func:r391_3, this:r391_1 -# 391| mu391_5(unknown) = ^CallSideEffect : ~m? -# 391| mu391_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r391_1 -# 392| r392_1(glval) = VariableAddress[x124] : -# 392| r392_2(glval) = FunctionAddress[~String] : -# 392| v392_3(void) = Call[~String] : func:r392_2, this:r392_1 -# 392| mu392_4(unknown) = ^CallSideEffect : ~m? -# 392| v392_5(void) = ^IndirectReadSideEffect[-1] : &:r392_1, ~m? -# 392| mu392_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r392_1 -# 392| r392_7(bool) = Constant[0] : -# 392| v392_8(void) = ConditionalBranch : r392_7 +# 35| Block 125 +# 35| r35_1737(glval) = VariableAddress[x124] : +# 35| mu35_1738(String) = Uninitialized[x124] : &:r35_1737 +# 35| r35_1739(glval) = FunctionAddress[String] : +# 35| v35_1740(void) = Call[String] : func:r35_1739, this:r35_1737 +# 35| mu35_1741(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1742(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1737 +# 35| r35_1743(glval) = VariableAddress[x124] : +# 35| r35_1744(glval) = FunctionAddress[~String] : +# 35| v35_1745(void) = Call[~String] : func:r35_1744, this:r35_1743 +# 35| mu35_1746(unknown) = ^CallSideEffect : ~m? +# 35| v35_1747(void) = ^IndirectReadSideEffect[-1] : &:r35_1743, ~m? +# 35| mu35_1748(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1743 +# 35| r35_1749(bool) = Constant[0] : +# 35| v35_1750(void) = ConditionalBranch : r35_1749 #-----| False -> Block 126 #-----| True (back edge) -> Block 125 -# 394| Block 126 -# 394| r394_1(glval) = VariableAddress[x125] : -# 394| mu394_2(String) = Uninitialized[x125] : &:r394_1 -# 394| r394_3(glval) = FunctionAddress[String] : -# 394| v394_4(void) = Call[String] : func:r394_3, this:r394_1 -# 394| mu394_5(unknown) = ^CallSideEffect : ~m? -# 394| mu394_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r394_1 -# 395| r395_1(glval) = VariableAddress[x125] : -# 395| r395_2(glval) = FunctionAddress[~String] : -# 395| v395_3(void) = Call[~String] : func:r395_2, this:r395_1 -# 395| mu395_4(unknown) = ^CallSideEffect : ~m? -# 395| v395_5(void) = ^IndirectReadSideEffect[-1] : &:r395_1, ~m? -# 395| mu395_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r395_1 -# 395| r395_7(bool) = Constant[0] : -# 395| v395_8(void) = ConditionalBranch : r395_7 +# 35| Block 126 +# 35| r35_1751(glval) = VariableAddress[x125] : +# 35| mu35_1752(String) = Uninitialized[x125] : &:r35_1751 +# 35| r35_1753(glval) = FunctionAddress[String] : +# 35| v35_1754(void) = Call[String] : func:r35_1753, this:r35_1751 +# 35| mu35_1755(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1756(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1751 +# 35| r35_1757(glval) = VariableAddress[x125] : +# 35| r35_1758(glval) = FunctionAddress[~String] : +# 35| v35_1759(void) = Call[~String] : func:r35_1758, this:r35_1757 +# 35| mu35_1760(unknown) = ^CallSideEffect : ~m? +# 35| v35_1761(void) = ^IndirectReadSideEffect[-1] : &:r35_1757, ~m? +# 35| mu35_1762(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1757 +# 35| r35_1763(bool) = Constant[0] : +# 35| v35_1764(void) = ConditionalBranch : r35_1763 #-----| False -> Block 127 #-----| True (back edge) -> Block 126 -# 397| Block 127 -# 397| r397_1(glval) = VariableAddress[x126] : -# 397| mu397_2(String) = Uninitialized[x126] : &:r397_1 -# 397| r397_3(glval) = FunctionAddress[String] : -# 397| v397_4(void) = Call[String] : func:r397_3, this:r397_1 -# 397| mu397_5(unknown) = ^CallSideEffect : ~m? -# 397| mu397_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r397_1 -# 398| r398_1(glval) = VariableAddress[x126] : -# 398| r398_2(glval) = FunctionAddress[~String] : -# 398| v398_3(void) = Call[~String] : func:r398_2, this:r398_1 -# 398| mu398_4(unknown) = ^CallSideEffect : ~m? -# 398| v398_5(void) = ^IndirectReadSideEffect[-1] : &:r398_1, ~m? -# 398| mu398_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r398_1 -# 398| r398_7(bool) = Constant[0] : -# 398| v398_8(void) = ConditionalBranch : r398_7 +# 35| Block 127 +# 35| r35_1765(glval) = VariableAddress[x126] : +# 35| mu35_1766(String) = Uninitialized[x126] : &:r35_1765 +# 35| r35_1767(glval) = FunctionAddress[String] : +# 35| v35_1768(void) = Call[String] : func:r35_1767, this:r35_1765 +# 35| mu35_1769(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1770(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1765 +# 35| r35_1771(glval) = VariableAddress[x126] : +# 35| r35_1772(glval) = FunctionAddress[~String] : +# 35| v35_1773(void) = Call[~String] : func:r35_1772, this:r35_1771 +# 35| mu35_1774(unknown) = ^CallSideEffect : ~m? +# 35| v35_1775(void) = ^IndirectReadSideEffect[-1] : &:r35_1771, ~m? +# 35| mu35_1776(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1771 +# 35| r35_1777(bool) = Constant[0] : +# 35| v35_1778(void) = ConditionalBranch : r35_1777 #-----| False -> Block 128 #-----| True (back edge) -> Block 127 -# 400| Block 128 -# 400| r400_1(glval) = VariableAddress[x127] : -# 400| mu400_2(String) = Uninitialized[x127] : &:r400_1 -# 400| r400_3(glval) = FunctionAddress[String] : -# 400| v400_4(void) = Call[String] : func:r400_3, this:r400_1 -# 400| mu400_5(unknown) = ^CallSideEffect : ~m? -# 400| mu400_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r400_1 -# 401| r401_1(glval) = VariableAddress[x127] : -# 401| r401_2(glval) = FunctionAddress[~String] : -# 401| v401_3(void) = Call[~String] : func:r401_2, this:r401_1 -# 401| mu401_4(unknown) = ^CallSideEffect : ~m? -# 401| v401_5(void) = ^IndirectReadSideEffect[-1] : &:r401_1, ~m? -# 401| mu401_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r401_1 -# 401| r401_7(bool) = Constant[0] : -# 401| v401_8(void) = ConditionalBranch : r401_7 +# 35| Block 128 +# 35| r35_1779(glval) = VariableAddress[x127] : +# 35| mu35_1780(String) = Uninitialized[x127] : &:r35_1779 +# 35| r35_1781(glval) = FunctionAddress[String] : +# 35| v35_1782(void) = Call[String] : func:r35_1781, this:r35_1779 +# 35| mu35_1783(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1784(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1779 +# 35| r35_1785(glval) = VariableAddress[x127] : +# 35| r35_1786(glval) = FunctionAddress[~String] : +# 35| v35_1787(void) = Call[~String] : func:r35_1786, this:r35_1785 +# 35| mu35_1788(unknown) = ^CallSideEffect : ~m? +# 35| v35_1789(void) = ^IndirectReadSideEffect[-1] : &:r35_1785, ~m? +# 35| mu35_1790(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1785 +# 35| r35_1791(bool) = Constant[0] : +# 35| v35_1792(void) = ConditionalBranch : r35_1791 #-----| False -> Block 129 #-----| True (back edge) -> Block 128 -# 403| Block 129 -# 403| r403_1(glval) = VariableAddress[x128] : -# 403| mu403_2(String) = Uninitialized[x128] : &:r403_1 -# 403| r403_3(glval) = FunctionAddress[String] : -# 403| v403_4(void) = Call[String] : func:r403_3, this:r403_1 -# 403| mu403_5(unknown) = ^CallSideEffect : ~m? -# 403| mu403_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r403_1 -# 404| r404_1(glval) = VariableAddress[x128] : -# 404| r404_2(glval) = FunctionAddress[~String] : -# 404| v404_3(void) = Call[~String] : func:r404_2, this:r404_1 -# 404| mu404_4(unknown) = ^CallSideEffect : ~m? -# 404| v404_5(void) = ^IndirectReadSideEffect[-1] : &:r404_1, ~m? -# 404| mu404_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r404_1 -# 404| r404_7(bool) = Constant[0] : -# 404| v404_8(void) = ConditionalBranch : r404_7 +# 35| Block 129 +# 35| r35_1793(glval) = VariableAddress[x128] : +# 35| mu35_1794(String) = Uninitialized[x128] : &:r35_1793 +# 35| r35_1795(glval) = FunctionAddress[String] : +# 35| v35_1796(void) = Call[String] : func:r35_1795, this:r35_1793 +# 35| mu35_1797(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1798(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1793 +# 35| r35_1799(glval) = VariableAddress[x128] : +# 35| r35_1800(glval) = FunctionAddress[~String] : +# 35| v35_1801(void) = Call[~String] : func:r35_1800, this:r35_1799 +# 35| mu35_1802(unknown) = ^CallSideEffect : ~m? +# 35| v35_1803(void) = ^IndirectReadSideEffect[-1] : &:r35_1799, ~m? +# 35| mu35_1804(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1799 +# 35| r35_1805(bool) = Constant[0] : +# 35| v35_1806(void) = ConditionalBranch : r35_1805 #-----| False -> Block 130 #-----| True (back edge) -> Block 129 -# 406| Block 130 -# 406| r406_1(glval) = VariableAddress[x129] : -# 406| mu406_2(String) = Uninitialized[x129] : &:r406_1 -# 406| r406_3(glval) = FunctionAddress[String] : -# 406| v406_4(void) = Call[String] : func:r406_3, this:r406_1 -# 406| mu406_5(unknown) = ^CallSideEffect : ~m? -# 406| mu406_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r406_1 -# 407| r407_1(glval) = VariableAddress[x129] : -# 407| r407_2(glval) = FunctionAddress[~String] : -# 407| v407_3(void) = Call[~String] : func:r407_2, this:r407_1 -# 407| mu407_4(unknown) = ^CallSideEffect : ~m? -# 407| v407_5(void) = ^IndirectReadSideEffect[-1] : &:r407_1, ~m? -# 407| mu407_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r407_1 -# 407| r407_7(bool) = Constant[0] : -# 407| v407_8(void) = ConditionalBranch : r407_7 +# 35| Block 130 +# 35| r35_1807(glval) = VariableAddress[x129] : +# 35| mu35_1808(String) = Uninitialized[x129] : &:r35_1807 +# 35| r35_1809(glval) = FunctionAddress[String] : +# 35| v35_1810(void) = Call[String] : func:r35_1809, this:r35_1807 +# 35| mu35_1811(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1812(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1807 +# 35| r35_1813(glval) = VariableAddress[x129] : +# 35| r35_1814(glval) = FunctionAddress[~String] : +# 35| v35_1815(void) = Call[~String] : func:r35_1814, this:r35_1813 +# 35| mu35_1816(unknown) = ^CallSideEffect : ~m? +# 35| v35_1817(void) = ^IndirectReadSideEffect[-1] : &:r35_1813, ~m? +# 35| mu35_1818(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1813 +# 35| r35_1819(bool) = Constant[0] : +# 35| v35_1820(void) = ConditionalBranch : r35_1819 #-----| False -> Block 131 #-----| True (back edge) -> Block 130 -# 409| Block 131 -# 409| r409_1(glval) = VariableAddress[x130] : -# 409| mu409_2(String) = Uninitialized[x130] : &:r409_1 -# 409| r409_3(glval) = FunctionAddress[String] : -# 409| v409_4(void) = Call[String] : func:r409_3, this:r409_1 -# 409| mu409_5(unknown) = ^CallSideEffect : ~m? -# 409| mu409_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r409_1 -# 410| r410_1(glval) = VariableAddress[x130] : -# 410| r410_2(glval) = FunctionAddress[~String] : -# 410| v410_3(void) = Call[~String] : func:r410_2, this:r410_1 -# 410| mu410_4(unknown) = ^CallSideEffect : ~m? -# 410| v410_5(void) = ^IndirectReadSideEffect[-1] : &:r410_1, ~m? -# 410| mu410_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r410_1 -# 410| r410_7(bool) = Constant[0] : -# 410| v410_8(void) = ConditionalBranch : r410_7 +# 35| Block 131 +# 35| r35_1821(glval) = VariableAddress[x130] : +# 35| mu35_1822(String) = Uninitialized[x130] : &:r35_1821 +# 35| r35_1823(glval) = FunctionAddress[String] : +# 35| v35_1824(void) = Call[String] : func:r35_1823, this:r35_1821 +# 35| mu35_1825(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1826(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1821 +# 35| r35_1827(glval) = VariableAddress[x130] : +# 35| r35_1828(glval) = FunctionAddress[~String] : +# 35| v35_1829(void) = Call[~String] : func:r35_1828, this:r35_1827 +# 35| mu35_1830(unknown) = ^CallSideEffect : ~m? +# 35| v35_1831(void) = ^IndirectReadSideEffect[-1] : &:r35_1827, ~m? +# 35| mu35_1832(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1827 +# 35| r35_1833(bool) = Constant[0] : +# 35| v35_1834(void) = ConditionalBranch : r35_1833 #-----| False -> Block 132 #-----| True (back edge) -> Block 131 -# 412| Block 132 -# 412| r412_1(glval) = VariableAddress[x131] : -# 412| mu412_2(String) = Uninitialized[x131] : &:r412_1 -# 412| r412_3(glval) = FunctionAddress[String] : -# 412| v412_4(void) = Call[String] : func:r412_3, this:r412_1 -# 412| mu412_5(unknown) = ^CallSideEffect : ~m? -# 412| mu412_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r412_1 -# 413| r413_1(glval) = VariableAddress[x131] : -# 413| r413_2(glval) = FunctionAddress[~String] : -# 413| v413_3(void) = Call[~String] : func:r413_2, this:r413_1 -# 413| mu413_4(unknown) = ^CallSideEffect : ~m? -# 413| v413_5(void) = ^IndirectReadSideEffect[-1] : &:r413_1, ~m? -# 413| mu413_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r413_1 -# 413| r413_7(bool) = Constant[0] : -# 413| v413_8(void) = ConditionalBranch : r413_7 +# 35| Block 132 +# 35| r35_1835(glval) = VariableAddress[x131] : +# 35| mu35_1836(String) = Uninitialized[x131] : &:r35_1835 +# 35| r35_1837(glval) = FunctionAddress[String] : +# 35| v35_1838(void) = Call[String] : func:r35_1837, this:r35_1835 +# 35| mu35_1839(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1840(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1835 +# 35| r35_1841(glval) = VariableAddress[x131] : +# 35| r35_1842(glval) = FunctionAddress[~String] : +# 35| v35_1843(void) = Call[~String] : func:r35_1842, this:r35_1841 +# 35| mu35_1844(unknown) = ^CallSideEffect : ~m? +# 35| v35_1845(void) = ^IndirectReadSideEffect[-1] : &:r35_1841, ~m? +# 35| mu35_1846(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1841 +# 35| r35_1847(bool) = Constant[0] : +# 35| v35_1848(void) = ConditionalBranch : r35_1847 #-----| False -> Block 133 #-----| True (back edge) -> Block 132 -# 415| Block 133 -# 415| r415_1(glval) = VariableAddress[x132] : -# 415| mu415_2(String) = Uninitialized[x132] : &:r415_1 -# 415| r415_3(glval) = FunctionAddress[String] : -# 415| v415_4(void) = Call[String] : func:r415_3, this:r415_1 -# 415| mu415_5(unknown) = ^CallSideEffect : ~m? -# 415| mu415_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r415_1 -# 416| r416_1(glval) = VariableAddress[x132] : -# 416| r416_2(glval) = FunctionAddress[~String] : -# 416| v416_3(void) = Call[~String] : func:r416_2, this:r416_1 -# 416| mu416_4(unknown) = ^CallSideEffect : ~m? -# 416| v416_5(void) = ^IndirectReadSideEffect[-1] : &:r416_1, ~m? -# 416| mu416_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r416_1 -# 416| r416_7(bool) = Constant[0] : -# 416| v416_8(void) = ConditionalBranch : r416_7 +# 35| Block 133 +# 35| r35_1849(glval) = VariableAddress[x132] : +# 35| mu35_1850(String) = Uninitialized[x132] : &:r35_1849 +# 35| r35_1851(glval) = FunctionAddress[String] : +# 35| v35_1852(void) = Call[String] : func:r35_1851, this:r35_1849 +# 35| mu35_1853(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1854(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1849 +# 35| r35_1855(glval) = VariableAddress[x132] : +# 35| r35_1856(glval) = FunctionAddress[~String] : +# 35| v35_1857(void) = Call[~String] : func:r35_1856, this:r35_1855 +# 35| mu35_1858(unknown) = ^CallSideEffect : ~m? +# 35| v35_1859(void) = ^IndirectReadSideEffect[-1] : &:r35_1855, ~m? +# 35| mu35_1860(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1855 +# 35| r35_1861(bool) = Constant[0] : +# 35| v35_1862(void) = ConditionalBranch : r35_1861 #-----| False -> Block 134 #-----| True (back edge) -> Block 133 -# 418| Block 134 -# 418| r418_1(glval) = VariableAddress[x133] : -# 418| mu418_2(String) = Uninitialized[x133] : &:r418_1 -# 418| r418_3(glval) = FunctionAddress[String] : -# 418| v418_4(void) = Call[String] : func:r418_3, this:r418_1 -# 418| mu418_5(unknown) = ^CallSideEffect : ~m? -# 418| mu418_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r418_1 -# 419| r419_1(glval) = VariableAddress[x133] : -# 419| r419_2(glval) = FunctionAddress[~String] : -# 419| v419_3(void) = Call[~String] : func:r419_2, this:r419_1 -# 419| mu419_4(unknown) = ^CallSideEffect : ~m? -# 419| v419_5(void) = ^IndirectReadSideEffect[-1] : &:r419_1, ~m? -# 419| mu419_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r419_1 -# 419| r419_7(bool) = Constant[0] : -# 419| v419_8(void) = ConditionalBranch : r419_7 +# 35| Block 134 +# 35| r35_1863(glval) = VariableAddress[x133] : +# 35| mu35_1864(String) = Uninitialized[x133] : &:r35_1863 +# 35| r35_1865(glval) = FunctionAddress[String] : +# 35| v35_1866(void) = Call[String] : func:r35_1865, this:r35_1863 +# 35| mu35_1867(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1868(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1863 +# 35| r35_1869(glval) = VariableAddress[x133] : +# 35| r35_1870(glval) = FunctionAddress[~String] : +# 35| v35_1871(void) = Call[~String] : func:r35_1870, this:r35_1869 +# 35| mu35_1872(unknown) = ^CallSideEffect : ~m? +# 35| v35_1873(void) = ^IndirectReadSideEffect[-1] : &:r35_1869, ~m? +# 35| mu35_1874(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1869 +# 35| r35_1875(bool) = Constant[0] : +# 35| v35_1876(void) = ConditionalBranch : r35_1875 #-----| False -> Block 135 #-----| True (back edge) -> Block 134 -# 421| Block 135 -# 421| r421_1(glval) = VariableAddress[x134] : -# 421| mu421_2(String) = Uninitialized[x134] : &:r421_1 -# 421| r421_3(glval) = FunctionAddress[String] : -# 421| v421_4(void) = Call[String] : func:r421_3, this:r421_1 -# 421| mu421_5(unknown) = ^CallSideEffect : ~m? -# 421| mu421_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r421_1 -# 422| r422_1(glval) = VariableAddress[x134] : -# 422| r422_2(glval) = FunctionAddress[~String] : -# 422| v422_3(void) = Call[~String] : func:r422_2, this:r422_1 -# 422| mu422_4(unknown) = ^CallSideEffect : ~m? -# 422| v422_5(void) = ^IndirectReadSideEffect[-1] : &:r422_1, ~m? -# 422| mu422_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r422_1 -# 422| r422_7(bool) = Constant[0] : -# 422| v422_8(void) = ConditionalBranch : r422_7 +# 35| Block 135 +# 35| r35_1877(glval) = VariableAddress[x134] : +# 35| mu35_1878(String) = Uninitialized[x134] : &:r35_1877 +# 35| r35_1879(glval) = FunctionAddress[String] : +# 35| v35_1880(void) = Call[String] : func:r35_1879, this:r35_1877 +# 35| mu35_1881(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1882(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1877 +# 35| r35_1883(glval) = VariableAddress[x134] : +# 35| r35_1884(glval) = FunctionAddress[~String] : +# 35| v35_1885(void) = Call[~String] : func:r35_1884, this:r35_1883 +# 35| mu35_1886(unknown) = ^CallSideEffect : ~m? +# 35| v35_1887(void) = ^IndirectReadSideEffect[-1] : &:r35_1883, ~m? +# 35| mu35_1888(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1883 +# 35| r35_1889(bool) = Constant[0] : +# 35| v35_1890(void) = ConditionalBranch : r35_1889 #-----| False -> Block 136 #-----| True (back edge) -> Block 135 -# 424| Block 136 -# 424| r424_1(glval) = VariableAddress[x135] : -# 424| mu424_2(String) = Uninitialized[x135] : &:r424_1 -# 424| r424_3(glval) = FunctionAddress[String] : -# 424| v424_4(void) = Call[String] : func:r424_3, this:r424_1 -# 424| mu424_5(unknown) = ^CallSideEffect : ~m? -# 424| mu424_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r424_1 -# 425| r425_1(glval) = VariableAddress[x135] : -# 425| r425_2(glval) = FunctionAddress[~String] : -# 425| v425_3(void) = Call[~String] : func:r425_2, this:r425_1 -# 425| mu425_4(unknown) = ^CallSideEffect : ~m? -# 425| v425_5(void) = ^IndirectReadSideEffect[-1] : &:r425_1, ~m? -# 425| mu425_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r425_1 -# 425| r425_7(bool) = Constant[0] : -# 425| v425_8(void) = ConditionalBranch : r425_7 +# 35| Block 136 +# 35| r35_1891(glval) = VariableAddress[x135] : +# 35| mu35_1892(String) = Uninitialized[x135] : &:r35_1891 +# 35| r35_1893(glval) = FunctionAddress[String] : +# 35| v35_1894(void) = Call[String] : func:r35_1893, this:r35_1891 +# 35| mu35_1895(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1896(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1891 +# 35| r35_1897(glval) = VariableAddress[x135] : +# 35| r35_1898(glval) = FunctionAddress[~String] : +# 35| v35_1899(void) = Call[~String] : func:r35_1898, this:r35_1897 +# 35| mu35_1900(unknown) = ^CallSideEffect : ~m? +# 35| v35_1901(void) = ^IndirectReadSideEffect[-1] : &:r35_1897, ~m? +# 35| mu35_1902(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1897 +# 35| r35_1903(bool) = Constant[0] : +# 35| v35_1904(void) = ConditionalBranch : r35_1903 #-----| False -> Block 137 #-----| True (back edge) -> Block 136 -# 427| Block 137 -# 427| r427_1(glval) = VariableAddress[x136] : -# 427| mu427_2(String) = Uninitialized[x136] : &:r427_1 -# 427| r427_3(glval) = FunctionAddress[String] : -# 427| v427_4(void) = Call[String] : func:r427_3, this:r427_1 -# 427| mu427_5(unknown) = ^CallSideEffect : ~m? -# 427| mu427_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r427_1 -# 428| r428_1(glval) = VariableAddress[x136] : -# 428| r428_2(glval) = FunctionAddress[~String] : -# 428| v428_3(void) = Call[~String] : func:r428_2, this:r428_1 -# 428| mu428_4(unknown) = ^CallSideEffect : ~m? -# 428| v428_5(void) = ^IndirectReadSideEffect[-1] : &:r428_1, ~m? -# 428| mu428_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r428_1 -# 428| r428_7(bool) = Constant[0] : -# 428| v428_8(void) = ConditionalBranch : r428_7 +# 35| Block 137 +# 35| r35_1905(glval) = VariableAddress[x136] : +# 35| mu35_1906(String) = Uninitialized[x136] : &:r35_1905 +# 35| r35_1907(glval) = FunctionAddress[String] : +# 35| v35_1908(void) = Call[String] : func:r35_1907, this:r35_1905 +# 35| mu35_1909(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1910(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1905 +# 35| r35_1911(glval) = VariableAddress[x136] : +# 35| r35_1912(glval) = FunctionAddress[~String] : +# 35| v35_1913(void) = Call[~String] : func:r35_1912, this:r35_1911 +# 35| mu35_1914(unknown) = ^CallSideEffect : ~m? +# 35| v35_1915(void) = ^IndirectReadSideEffect[-1] : &:r35_1911, ~m? +# 35| mu35_1916(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1911 +# 35| r35_1917(bool) = Constant[0] : +# 35| v35_1918(void) = ConditionalBranch : r35_1917 #-----| False -> Block 138 #-----| True (back edge) -> Block 137 -# 430| Block 138 -# 430| r430_1(glval) = VariableAddress[x137] : -# 430| mu430_2(String) = Uninitialized[x137] : &:r430_1 -# 430| r430_3(glval) = FunctionAddress[String] : -# 430| v430_4(void) = Call[String] : func:r430_3, this:r430_1 -# 430| mu430_5(unknown) = ^CallSideEffect : ~m? -# 430| mu430_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r430_1 -# 431| r431_1(glval) = VariableAddress[x137] : -# 431| r431_2(glval) = FunctionAddress[~String] : -# 431| v431_3(void) = Call[~String] : func:r431_2, this:r431_1 -# 431| mu431_4(unknown) = ^CallSideEffect : ~m? -# 431| v431_5(void) = ^IndirectReadSideEffect[-1] : &:r431_1, ~m? -# 431| mu431_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r431_1 -# 431| r431_7(bool) = Constant[0] : -# 431| v431_8(void) = ConditionalBranch : r431_7 +# 35| Block 138 +# 35| r35_1919(glval) = VariableAddress[x137] : +# 35| mu35_1920(String) = Uninitialized[x137] : &:r35_1919 +# 35| r35_1921(glval) = FunctionAddress[String] : +# 35| v35_1922(void) = Call[String] : func:r35_1921, this:r35_1919 +# 35| mu35_1923(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1924(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1919 +# 35| r35_1925(glval) = VariableAddress[x137] : +# 35| r35_1926(glval) = FunctionAddress[~String] : +# 35| v35_1927(void) = Call[~String] : func:r35_1926, this:r35_1925 +# 35| mu35_1928(unknown) = ^CallSideEffect : ~m? +# 35| v35_1929(void) = ^IndirectReadSideEffect[-1] : &:r35_1925, ~m? +# 35| mu35_1930(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1925 +# 35| r35_1931(bool) = Constant[0] : +# 35| v35_1932(void) = ConditionalBranch : r35_1931 #-----| False -> Block 139 #-----| True (back edge) -> Block 138 -# 433| Block 139 -# 433| r433_1(glval) = VariableAddress[x138] : -# 433| mu433_2(String) = Uninitialized[x138] : &:r433_1 -# 433| r433_3(glval) = FunctionAddress[String] : -# 433| v433_4(void) = Call[String] : func:r433_3, this:r433_1 -# 433| mu433_5(unknown) = ^CallSideEffect : ~m? -# 433| mu433_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r433_1 -# 434| r434_1(glval) = VariableAddress[x138] : -# 434| r434_2(glval) = FunctionAddress[~String] : -# 434| v434_3(void) = Call[~String] : func:r434_2, this:r434_1 -# 434| mu434_4(unknown) = ^CallSideEffect : ~m? -# 434| v434_5(void) = ^IndirectReadSideEffect[-1] : &:r434_1, ~m? -# 434| mu434_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r434_1 -# 434| r434_7(bool) = Constant[0] : -# 434| v434_8(void) = ConditionalBranch : r434_7 +# 35| Block 139 +# 35| r35_1933(glval) = VariableAddress[x138] : +# 35| mu35_1934(String) = Uninitialized[x138] : &:r35_1933 +# 35| r35_1935(glval) = FunctionAddress[String] : +# 35| v35_1936(void) = Call[String] : func:r35_1935, this:r35_1933 +# 35| mu35_1937(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1938(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1933 +# 35| r35_1939(glval) = VariableAddress[x138] : +# 35| r35_1940(glval) = FunctionAddress[~String] : +# 35| v35_1941(void) = Call[~String] : func:r35_1940, this:r35_1939 +# 35| mu35_1942(unknown) = ^CallSideEffect : ~m? +# 35| v35_1943(void) = ^IndirectReadSideEffect[-1] : &:r35_1939, ~m? +# 35| mu35_1944(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1939 +# 35| r35_1945(bool) = Constant[0] : +# 35| v35_1946(void) = ConditionalBranch : r35_1945 #-----| False -> Block 140 #-----| True (back edge) -> Block 139 -# 436| Block 140 -# 436| r436_1(glval) = VariableAddress[x139] : -# 436| mu436_2(String) = Uninitialized[x139] : &:r436_1 -# 436| r436_3(glval) = FunctionAddress[String] : -# 436| v436_4(void) = Call[String] : func:r436_3, this:r436_1 -# 436| mu436_5(unknown) = ^CallSideEffect : ~m? -# 436| mu436_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r436_1 -# 437| r437_1(glval) = VariableAddress[x139] : -# 437| r437_2(glval) = FunctionAddress[~String] : -# 437| v437_3(void) = Call[~String] : func:r437_2, this:r437_1 -# 437| mu437_4(unknown) = ^CallSideEffect : ~m? -# 437| v437_5(void) = ^IndirectReadSideEffect[-1] : &:r437_1, ~m? -# 437| mu437_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r437_1 -# 437| r437_7(bool) = Constant[0] : -# 437| v437_8(void) = ConditionalBranch : r437_7 +# 35| Block 140 +# 35| r35_1947(glval) = VariableAddress[x139] : +# 35| mu35_1948(String) = Uninitialized[x139] : &:r35_1947 +# 35| r35_1949(glval) = FunctionAddress[String] : +# 35| v35_1950(void) = Call[String] : func:r35_1949, this:r35_1947 +# 35| mu35_1951(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1952(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1947 +# 35| r35_1953(glval) = VariableAddress[x139] : +# 35| r35_1954(glval) = FunctionAddress[~String] : +# 35| v35_1955(void) = Call[~String] : func:r35_1954, this:r35_1953 +# 35| mu35_1956(unknown) = ^CallSideEffect : ~m? +# 35| v35_1957(void) = ^IndirectReadSideEffect[-1] : &:r35_1953, ~m? +# 35| mu35_1958(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1953 +# 35| r35_1959(bool) = Constant[0] : +# 35| v35_1960(void) = ConditionalBranch : r35_1959 #-----| False -> Block 141 #-----| True (back edge) -> Block 140 -# 439| Block 141 -# 439| r439_1(glval) = VariableAddress[x140] : -# 439| mu439_2(String) = Uninitialized[x140] : &:r439_1 -# 439| r439_3(glval) = FunctionAddress[String] : -# 439| v439_4(void) = Call[String] : func:r439_3, this:r439_1 -# 439| mu439_5(unknown) = ^CallSideEffect : ~m? -# 439| mu439_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r439_1 -# 440| r440_1(glval) = VariableAddress[x140] : -# 440| r440_2(glval) = FunctionAddress[~String] : -# 440| v440_3(void) = Call[~String] : func:r440_2, this:r440_1 -# 440| mu440_4(unknown) = ^CallSideEffect : ~m? -# 440| v440_5(void) = ^IndirectReadSideEffect[-1] : &:r440_1, ~m? -# 440| mu440_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r440_1 -# 440| r440_7(bool) = Constant[0] : -# 440| v440_8(void) = ConditionalBranch : r440_7 +# 35| Block 141 +# 35| r35_1961(glval) = VariableAddress[x140] : +# 35| mu35_1962(String) = Uninitialized[x140] : &:r35_1961 +# 35| r35_1963(glval) = FunctionAddress[String] : +# 35| v35_1964(void) = Call[String] : func:r35_1963, this:r35_1961 +# 35| mu35_1965(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1966(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1961 +# 35| r35_1967(glval) = VariableAddress[x140] : +# 35| r35_1968(glval) = FunctionAddress[~String] : +# 35| v35_1969(void) = Call[~String] : func:r35_1968, this:r35_1967 +# 35| mu35_1970(unknown) = ^CallSideEffect : ~m? +# 35| v35_1971(void) = ^IndirectReadSideEffect[-1] : &:r35_1967, ~m? +# 35| mu35_1972(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1967 +# 35| r35_1973(bool) = Constant[0] : +# 35| v35_1974(void) = ConditionalBranch : r35_1973 #-----| False -> Block 142 #-----| True (back edge) -> Block 141 -# 442| Block 142 -# 442| r442_1(glval) = VariableAddress[x141] : -# 442| mu442_2(String) = Uninitialized[x141] : &:r442_1 -# 442| r442_3(glval) = FunctionAddress[String] : -# 442| v442_4(void) = Call[String] : func:r442_3, this:r442_1 -# 442| mu442_5(unknown) = ^CallSideEffect : ~m? -# 442| mu442_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r442_1 -# 443| r443_1(glval) = VariableAddress[x141] : -# 443| r443_2(glval) = FunctionAddress[~String] : -# 443| v443_3(void) = Call[~String] : func:r443_2, this:r443_1 -# 443| mu443_4(unknown) = ^CallSideEffect : ~m? -# 443| v443_5(void) = ^IndirectReadSideEffect[-1] : &:r443_1, ~m? -# 443| mu443_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r443_1 -# 443| r443_7(bool) = Constant[0] : -# 443| v443_8(void) = ConditionalBranch : r443_7 +# 35| Block 142 +# 35| r35_1975(glval) = VariableAddress[x141] : +# 35| mu35_1976(String) = Uninitialized[x141] : &:r35_1975 +# 35| r35_1977(glval) = FunctionAddress[String] : +# 35| v35_1978(void) = Call[String] : func:r35_1977, this:r35_1975 +# 35| mu35_1979(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1980(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1975 +# 35| r35_1981(glval) = VariableAddress[x141] : +# 35| r35_1982(glval) = FunctionAddress[~String] : +# 35| v35_1983(void) = Call[~String] : func:r35_1982, this:r35_1981 +# 35| mu35_1984(unknown) = ^CallSideEffect : ~m? +# 35| v35_1985(void) = ^IndirectReadSideEffect[-1] : &:r35_1981, ~m? +# 35| mu35_1986(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1981 +# 35| r35_1987(bool) = Constant[0] : +# 35| v35_1988(void) = ConditionalBranch : r35_1987 #-----| False -> Block 143 #-----| True (back edge) -> Block 142 -# 445| Block 143 -# 445| r445_1(glval) = VariableAddress[x142] : -# 445| mu445_2(String) = Uninitialized[x142] : &:r445_1 -# 445| r445_3(glval) = FunctionAddress[String] : -# 445| v445_4(void) = Call[String] : func:r445_3, this:r445_1 -# 445| mu445_5(unknown) = ^CallSideEffect : ~m? -# 445| mu445_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r445_1 -# 446| r446_1(glval) = VariableAddress[x142] : -# 446| r446_2(glval) = FunctionAddress[~String] : -# 446| v446_3(void) = Call[~String] : func:r446_2, this:r446_1 -# 446| mu446_4(unknown) = ^CallSideEffect : ~m? -# 446| v446_5(void) = ^IndirectReadSideEffect[-1] : &:r446_1, ~m? -# 446| mu446_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r446_1 -# 446| r446_7(bool) = Constant[0] : -# 446| v446_8(void) = ConditionalBranch : r446_7 +# 35| Block 143 +# 35| r35_1989(glval) = VariableAddress[x142] : +# 35| mu35_1990(String) = Uninitialized[x142] : &:r35_1989 +# 35| r35_1991(glval) = FunctionAddress[String] : +# 35| v35_1992(void) = Call[String] : func:r35_1991, this:r35_1989 +# 35| mu35_1993(unknown) = ^CallSideEffect : ~m? +# 35| mu35_1994(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1989 +# 35| r35_1995(glval) = VariableAddress[x142] : +# 35| r35_1996(glval) = FunctionAddress[~String] : +# 35| v35_1997(void) = Call[~String] : func:r35_1996, this:r35_1995 +# 35| mu35_1998(unknown) = ^CallSideEffect : ~m? +# 35| v35_1999(void) = ^IndirectReadSideEffect[-1] : &:r35_1995, ~m? +# 35| mu35_2000(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_1995 +# 35| r35_2001(bool) = Constant[0] : +# 35| v35_2002(void) = ConditionalBranch : r35_2001 #-----| False -> Block 144 #-----| True (back edge) -> Block 143 -# 448| Block 144 -# 448| r448_1(glval) = VariableAddress[x143] : -# 448| mu448_2(String) = Uninitialized[x143] : &:r448_1 -# 448| r448_3(glval) = FunctionAddress[String] : -# 448| v448_4(void) = Call[String] : func:r448_3, this:r448_1 -# 448| mu448_5(unknown) = ^CallSideEffect : ~m? -# 448| mu448_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r448_1 -# 449| r449_1(glval) = VariableAddress[x143] : -# 449| r449_2(glval) = FunctionAddress[~String] : -# 449| v449_3(void) = Call[~String] : func:r449_2, this:r449_1 -# 449| mu449_4(unknown) = ^CallSideEffect : ~m? -# 449| v449_5(void) = ^IndirectReadSideEffect[-1] : &:r449_1, ~m? -# 449| mu449_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r449_1 -# 449| r449_7(bool) = Constant[0] : -# 449| v449_8(void) = ConditionalBranch : r449_7 +# 35| Block 144 +# 35| r35_2003(glval) = VariableAddress[x143] : +# 35| mu35_2004(String) = Uninitialized[x143] : &:r35_2003 +# 35| r35_2005(glval) = FunctionAddress[String] : +# 35| v35_2006(void) = Call[String] : func:r35_2005, this:r35_2003 +# 35| mu35_2007(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2008(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2003 +# 35| r35_2009(glval) = VariableAddress[x143] : +# 35| r35_2010(glval) = FunctionAddress[~String] : +# 35| v35_2011(void) = Call[~String] : func:r35_2010, this:r35_2009 +# 35| mu35_2012(unknown) = ^CallSideEffect : ~m? +# 35| v35_2013(void) = ^IndirectReadSideEffect[-1] : &:r35_2009, ~m? +# 35| mu35_2014(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2009 +# 35| r35_2015(bool) = Constant[0] : +# 35| v35_2016(void) = ConditionalBranch : r35_2015 #-----| False -> Block 145 #-----| True (back edge) -> Block 144 -# 451| Block 145 -# 451| r451_1(glval) = VariableAddress[x144] : -# 451| mu451_2(String) = Uninitialized[x144] : &:r451_1 -# 451| r451_3(glval) = FunctionAddress[String] : -# 451| v451_4(void) = Call[String] : func:r451_3, this:r451_1 -# 451| mu451_5(unknown) = ^CallSideEffect : ~m? -# 451| mu451_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r451_1 -# 452| r452_1(glval) = VariableAddress[x144] : -# 452| r452_2(glval) = FunctionAddress[~String] : -# 452| v452_3(void) = Call[~String] : func:r452_2, this:r452_1 -# 452| mu452_4(unknown) = ^CallSideEffect : ~m? -# 452| v452_5(void) = ^IndirectReadSideEffect[-1] : &:r452_1, ~m? -# 452| mu452_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r452_1 -# 452| r452_7(bool) = Constant[0] : -# 452| v452_8(void) = ConditionalBranch : r452_7 +# 35| Block 145 +# 35| r35_2017(glval) = VariableAddress[x144] : +# 35| mu35_2018(String) = Uninitialized[x144] : &:r35_2017 +# 35| r35_2019(glval) = FunctionAddress[String] : +# 35| v35_2020(void) = Call[String] : func:r35_2019, this:r35_2017 +# 35| mu35_2021(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2022(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2017 +# 35| r35_2023(glval) = VariableAddress[x144] : +# 35| r35_2024(glval) = FunctionAddress[~String] : +# 35| v35_2025(void) = Call[~String] : func:r35_2024, this:r35_2023 +# 35| mu35_2026(unknown) = ^CallSideEffect : ~m? +# 35| v35_2027(void) = ^IndirectReadSideEffect[-1] : &:r35_2023, ~m? +# 35| mu35_2028(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2023 +# 35| r35_2029(bool) = Constant[0] : +# 35| v35_2030(void) = ConditionalBranch : r35_2029 #-----| False -> Block 146 #-----| True (back edge) -> Block 145 -# 454| Block 146 -# 454| r454_1(glval) = VariableAddress[x145] : -# 454| mu454_2(String) = Uninitialized[x145] : &:r454_1 -# 454| r454_3(glval) = FunctionAddress[String] : -# 454| v454_4(void) = Call[String] : func:r454_3, this:r454_1 -# 454| mu454_5(unknown) = ^CallSideEffect : ~m? -# 454| mu454_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r454_1 -# 455| r455_1(glval) = VariableAddress[x145] : -# 455| r455_2(glval) = FunctionAddress[~String] : -# 455| v455_3(void) = Call[~String] : func:r455_2, this:r455_1 -# 455| mu455_4(unknown) = ^CallSideEffect : ~m? -# 455| v455_5(void) = ^IndirectReadSideEffect[-1] : &:r455_1, ~m? -# 455| mu455_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r455_1 -# 455| r455_7(bool) = Constant[0] : -# 455| v455_8(void) = ConditionalBranch : r455_7 +# 35| Block 146 +# 35| r35_2031(glval) = VariableAddress[x145] : +# 35| mu35_2032(String) = Uninitialized[x145] : &:r35_2031 +# 35| r35_2033(glval) = FunctionAddress[String] : +# 35| v35_2034(void) = Call[String] : func:r35_2033, this:r35_2031 +# 35| mu35_2035(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2036(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2031 +# 35| r35_2037(glval) = VariableAddress[x145] : +# 35| r35_2038(glval) = FunctionAddress[~String] : +# 35| v35_2039(void) = Call[~String] : func:r35_2038, this:r35_2037 +# 35| mu35_2040(unknown) = ^CallSideEffect : ~m? +# 35| v35_2041(void) = ^IndirectReadSideEffect[-1] : &:r35_2037, ~m? +# 35| mu35_2042(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2037 +# 35| r35_2043(bool) = Constant[0] : +# 35| v35_2044(void) = ConditionalBranch : r35_2043 #-----| False -> Block 147 #-----| True (back edge) -> Block 146 -# 457| Block 147 -# 457| r457_1(glval) = VariableAddress[x146] : -# 457| mu457_2(String) = Uninitialized[x146] : &:r457_1 -# 457| r457_3(glval) = FunctionAddress[String] : -# 457| v457_4(void) = Call[String] : func:r457_3, this:r457_1 -# 457| mu457_5(unknown) = ^CallSideEffect : ~m? -# 457| mu457_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r457_1 -# 458| r458_1(glval) = VariableAddress[x146] : -# 458| r458_2(glval) = FunctionAddress[~String] : -# 458| v458_3(void) = Call[~String] : func:r458_2, this:r458_1 -# 458| mu458_4(unknown) = ^CallSideEffect : ~m? -# 458| v458_5(void) = ^IndirectReadSideEffect[-1] : &:r458_1, ~m? -# 458| mu458_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r458_1 -# 458| r458_7(bool) = Constant[0] : -# 458| v458_8(void) = ConditionalBranch : r458_7 +# 35| Block 147 +# 35| r35_2045(glval) = VariableAddress[x146] : +# 35| mu35_2046(String) = Uninitialized[x146] : &:r35_2045 +# 35| r35_2047(glval) = FunctionAddress[String] : +# 35| v35_2048(void) = Call[String] : func:r35_2047, this:r35_2045 +# 35| mu35_2049(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2050(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2045 +# 35| r35_2051(glval) = VariableAddress[x146] : +# 35| r35_2052(glval) = FunctionAddress[~String] : +# 35| v35_2053(void) = Call[~String] : func:r35_2052, this:r35_2051 +# 35| mu35_2054(unknown) = ^CallSideEffect : ~m? +# 35| v35_2055(void) = ^IndirectReadSideEffect[-1] : &:r35_2051, ~m? +# 35| mu35_2056(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2051 +# 35| r35_2057(bool) = Constant[0] : +# 35| v35_2058(void) = ConditionalBranch : r35_2057 #-----| False -> Block 148 #-----| True (back edge) -> Block 147 -# 460| Block 148 -# 460| r460_1(glval) = VariableAddress[x147] : -# 460| mu460_2(String) = Uninitialized[x147] : &:r460_1 -# 460| r460_3(glval) = FunctionAddress[String] : -# 460| v460_4(void) = Call[String] : func:r460_3, this:r460_1 -# 460| mu460_5(unknown) = ^CallSideEffect : ~m? -# 460| mu460_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r460_1 -# 461| r461_1(glval) = VariableAddress[x147] : -# 461| r461_2(glval) = FunctionAddress[~String] : -# 461| v461_3(void) = Call[~String] : func:r461_2, this:r461_1 -# 461| mu461_4(unknown) = ^CallSideEffect : ~m? -# 461| v461_5(void) = ^IndirectReadSideEffect[-1] : &:r461_1, ~m? -# 461| mu461_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r461_1 -# 461| r461_7(bool) = Constant[0] : -# 461| v461_8(void) = ConditionalBranch : r461_7 +# 35| Block 148 +# 35| r35_2059(glval) = VariableAddress[x147] : +# 35| mu35_2060(String) = Uninitialized[x147] : &:r35_2059 +# 35| r35_2061(glval) = FunctionAddress[String] : +# 35| v35_2062(void) = Call[String] : func:r35_2061, this:r35_2059 +# 35| mu35_2063(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2064(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2059 +# 35| r35_2065(glval) = VariableAddress[x147] : +# 35| r35_2066(glval) = FunctionAddress[~String] : +# 35| v35_2067(void) = Call[~String] : func:r35_2066, this:r35_2065 +# 35| mu35_2068(unknown) = ^CallSideEffect : ~m? +# 35| v35_2069(void) = ^IndirectReadSideEffect[-1] : &:r35_2065, ~m? +# 35| mu35_2070(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2065 +# 35| r35_2071(bool) = Constant[0] : +# 35| v35_2072(void) = ConditionalBranch : r35_2071 #-----| False -> Block 149 #-----| True (back edge) -> Block 148 -# 463| Block 149 -# 463| r463_1(glval) = VariableAddress[x148] : -# 463| mu463_2(String) = Uninitialized[x148] : &:r463_1 -# 463| r463_3(glval) = FunctionAddress[String] : -# 463| v463_4(void) = Call[String] : func:r463_3, this:r463_1 -# 463| mu463_5(unknown) = ^CallSideEffect : ~m? -# 463| mu463_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r463_1 -# 464| r464_1(glval) = VariableAddress[x148] : -# 464| r464_2(glval) = FunctionAddress[~String] : -# 464| v464_3(void) = Call[~String] : func:r464_2, this:r464_1 -# 464| mu464_4(unknown) = ^CallSideEffect : ~m? -# 464| v464_5(void) = ^IndirectReadSideEffect[-1] : &:r464_1, ~m? -# 464| mu464_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r464_1 -# 464| r464_7(bool) = Constant[0] : -# 464| v464_8(void) = ConditionalBranch : r464_7 +# 35| Block 149 +# 35| r35_2073(glval) = VariableAddress[x148] : +# 35| mu35_2074(String) = Uninitialized[x148] : &:r35_2073 +# 35| r35_2075(glval) = FunctionAddress[String] : +# 35| v35_2076(void) = Call[String] : func:r35_2075, this:r35_2073 +# 35| mu35_2077(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2078(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2073 +# 35| r35_2079(glval) = VariableAddress[x148] : +# 35| r35_2080(glval) = FunctionAddress[~String] : +# 35| v35_2081(void) = Call[~String] : func:r35_2080, this:r35_2079 +# 35| mu35_2082(unknown) = ^CallSideEffect : ~m? +# 35| v35_2083(void) = ^IndirectReadSideEffect[-1] : &:r35_2079, ~m? +# 35| mu35_2084(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2079 +# 35| r35_2085(bool) = Constant[0] : +# 35| v35_2086(void) = ConditionalBranch : r35_2085 #-----| False -> Block 150 #-----| True (back edge) -> Block 149 -# 466| Block 150 -# 466| r466_1(glval) = VariableAddress[x149] : -# 466| mu466_2(String) = Uninitialized[x149] : &:r466_1 -# 466| r466_3(glval) = FunctionAddress[String] : -# 466| v466_4(void) = Call[String] : func:r466_3, this:r466_1 -# 466| mu466_5(unknown) = ^CallSideEffect : ~m? -# 466| mu466_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r466_1 -# 467| r467_1(glval) = VariableAddress[x149] : -# 467| r467_2(glval) = FunctionAddress[~String] : -# 467| v467_3(void) = Call[~String] : func:r467_2, this:r467_1 -# 467| mu467_4(unknown) = ^CallSideEffect : ~m? -# 467| v467_5(void) = ^IndirectReadSideEffect[-1] : &:r467_1, ~m? -# 467| mu467_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r467_1 -# 467| r467_7(bool) = Constant[0] : -# 467| v467_8(void) = ConditionalBranch : r467_7 +# 35| Block 150 +# 35| r35_2087(glval) = VariableAddress[x149] : +# 35| mu35_2088(String) = Uninitialized[x149] : &:r35_2087 +# 35| r35_2089(glval) = FunctionAddress[String] : +# 35| v35_2090(void) = Call[String] : func:r35_2089, this:r35_2087 +# 35| mu35_2091(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2092(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2087 +# 35| r35_2093(glval) = VariableAddress[x149] : +# 35| r35_2094(glval) = FunctionAddress[~String] : +# 35| v35_2095(void) = Call[~String] : func:r35_2094, this:r35_2093 +# 35| mu35_2096(unknown) = ^CallSideEffect : ~m? +# 35| v35_2097(void) = ^IndirectReadSideEffect[-1] : &:r35_2093, ~m? +# 35| mu35_2098(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2093 +# 35| r35_2099(bool) = Constant[0] : +# 35| v35_2100(void) = ConditionalBranch : r35_2099 #-----| False -> Block 151 #-----| True (back edge) -> Block 150 -# 469| Block 151 -# 469| r469_1(glval) = VariableAddress[x150] : -# 469| mu469_2(String) = Uninitialized[x150] : &:r469_1 -# 469| r469_3(glval) = FunctionAddress[String] : -# 469| v469_4(void) = Call[String] : func:r469_3, this:r469_1 -# 469| mu469_5(unknown) = ^CallSideEffect : ~m? -# 469| mu469_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r469_1 -# 470| r470_1(glval) = VariableAddress[x150] : -# 470| r470_2(glval) = FunctionAddress[~String] : -# 470| v470_3(void) = Call[~String] : func:r470_2, this:r470_1 -# 470| mu470_4(unknown) = ^CallSideEffect : ~m? -# 470| v470_5(void) = ^IndirectReadSideEffect[-1] : &:r470_1, ~m? -# 470| mu470_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r470_1 -# 470| r470_7(bool) = Constant[0] : -# 470| v470_8(void) = ConditionalBranch : r470_7 +# 35| Block 151 +# 35| r35_2101(glval) = VariableAddress[x150] : +# 35| mu35_2102(String) = Uninitialized[x150] : &:r35_2101 +# 35| r35_2103(glval) = FunctionAddress[String] : +# 35| v35_2104(void) = Call[String] : func:r35_2103, this:r35_2101 +# 35| mu35_2105(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2106(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2101 +# 35| r35_2107(glval) = VariableAddress[x150] : +# 35| r35_2108(glval) = FunctionAddress[~String] : +# 35| v35_2109(void) = Call[~String] : func:r35_2108, this:r35_2107 +# 35| mu35_2110(unknown) = ^CallSideEffect : ~m? +# 35| v35_2111(void) = ^IndirectReadSideEffect[-1] : &:r35_2107, ~m? +# 35| mu35_2112(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2107 +# 35| r35_2113(bool) = Constant[0] : +# 35| v35_2114(void) = ConditionalBranch : r35_2113 #-----| False -> Block 152 #-----| True (back edge) -> Block 151 -# 472| Block 152 -# 472| r472_1(glval) = VariableAddress[x151] : -# 472| mu472_2(String) = Uninitialized[x151] : &:r472_1 -# 472| r472_3(glval) = FunctionAddress[String] : -# 472| v472_4(void) = Call[String] : func:r472_3, this:r472_1 -# 472| mu472_5(unknown) = ^CallSideEffect : ~m? -# 472| mu472_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r472_1 -# 473| r473_1(glval) = VariableAddress[x151] : -# 473| r473_2(glval) = FunctionAddress[~String] : -# 473| v473_3(void) = Call[~String] : func:r473_2, this:r473_1 -# 473| mu473_4(unknown) = ^CallSideEffect : ~m? -# 473| v473_5(void) = ^IndirectReadSideEffect[-1] : &:r473_1, ~m? -# 473| mu473_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r473_1 -# 473| r473_7(bool) = Constant[0] : -# 473| v473_8(void) = ConditionalBranch : r473_7 +# 35| Block 152 +# 35| r35_2115(glval) = VariableAddress[x151] : +# 35| mu35_2116(String) = Uninitialized[x151] : &:r35_2115 +# 35| r35_2117(glval) = FunctionAddress[String] : +# 35| v35_2118(void) = Call[String] : func:r35_2117, this:r35_2115 +# 35| mu35_2119(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2120(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2115 +# 35| r35_2121(glval) = VariableAddress[x151] : +# 35| r35_2122(glval) = FunctionAddress[~String] : +# 35| v35_2123(void) = Call[~String] : func:r35_2122, this:r35_2121 +# 35| mu35_2124(unknown) = ^CallSideEffect : ~m? +# 35| v35_2125(void) = ^IndirectReadSideEffect[-1] : &:r35_2121, ~m? +# 35| mu35_2126(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2121 +# 35| r35_2127(bool) = Constant[0] : +# 35| v35_2128(void) = ConditionalBranch : r35_2127 #-----| False -> Block 153 #-----| True (back edge) -> Block 152 -# 475| Block 153 -# 475| r475_1(glval) = VariableAddress[x152] : -# 475| mu475_2(String) = Uninitialized[x152] : &:r475_1 -# 475| r475_3(glval) = FunctionAddress[String] : -# 475| v475_4(void) = Call[String] : func:r475_3, this:r475_1 -# 475| mu475_5(unknown) = ^CallSideEffect : ~m? -# 475| mu475_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r475_1 -# 476| r476_1(glval) = VariableAddress[x152] : -# 476| r476_2(glval) = FunctionAddress[~String] : -# 476| v476_3(void) = Call[~String] : func:r476_2, this:r476_1 -# 476| mu476_4(unknown) = ^CallSideEffect : ~m? -# 476| v476_5(void) = ^IndirectReadSideEffect[-1] : &:r476_1, ~m? -# 476| mu476_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r476_1 -# 476| r476_7(bool) = Constant[0] : -# 476| v476_8(void) = ConditionalBranch : r476_7 +# 35| Block 153 +# 35| r35_2129(glval) = VariableAddress[x152] : +# 35| mu35_2130(String) = Uninitialized[x152] : &:r35_2129 +# 35| r35_2131(glval) = FunctionAddress[String] : +# 35| v35_2132(void) = Call[String] : func:r35_2131, this:r35_2129 +# 35| mu35_2133(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2134(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2129 +# 35| r35_2135(glval) = VariableAddress[x152] : +# 35| r35_2136(glval) = FunctionAddress[~String] : +# 35| v35_2137(void) = Call[~String] : func:r35_2136, this:r35_2135 +# 35| mu35_2138(unknown) = ^CallSideEffect : ~m? +# 35| v35_2139(void) = ^IndirectReadSideEffect[-1] : &:r35_2135, ~m? +# 35| mu35_2140(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2135 +# 35| r35_2141(bool) = Constant[0] : +# 35| v35_2142(void) = ConditionalBranch : r35_2141 #-----| False -> Block 154 #-----| True (back edge) -> Block 153 -# 478| Block 154 -# 478| r478_1(glval) = VariableAddress[x153] : -# 478| mu478_2(String) = Uninitialized[x153] : &:r478_1 -# 478| r478_3(glval) = FunctionAddress[String] : -# 478| v478_4(void) = Call[String] : func:r478_3, this:r478_1 -# 478| mu478_5(unknown) = ^CallSideEffect : ~m? -# 478| mu478_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r478_1 -# 479| r479_1(glval) = VariableAddress[x153] : -# 479| r479_2(glval) = FunctionAddress[~String] : -# 479| v479_3(void) = Call[~String] : func:r479_2, this:r479_1 -# 479| mu479_4(unknown) = ^CallSideEffect : ~m? -# 479| v479_5(void) = ^IndirectReadSideEffect[-1] : &:r479_1, ~m? -# 479| mu479_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r479_1 -# 479| r479_7(bool) = Constant[0] : -# 479| v479_8(void) = ConditionalBranch : r479_7 +# 35| Block 154 +# 35| r35_2143(glval) = VariableAddress[x153] : +# 35| mu35_2144(String) = Uninitialized[x153] : &:r35_2143 +# 35| r35_2145(glval) = FunctionAddress[String] : +# 35| v35_2146(void) = Call[String] : func:r35_2145, this:r35_2143 +# 35| mu35_2147(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2148(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2143 +# 35| r35_2149(glval) = VariableAddress[x153] : +# 35| r35_2150(glval) = FunctionAddress[~String] : +# 35| v35_2151(void) = Call[~String] : func:r35_2150, this:r35_2149 +# 35| mu35_2152(unknown) = ^CallSideEffect : ~m? +# 35| v35_2153(void) = ^IndirectReadSideEffect[-1] : &:r35_2149, ~m? +# 35| mu35_2154(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2149 +# 35| r35_2155(bool) = Constant[0] : +# 35| v35_2156(void) = ConditionalBranch : r35_2155 #-----| False -> Block 155 #-----| True (back edge) -> Block 154 -# 481| Block 155 -# 481| r481_1(glval) = VariableAddress[x154] : -# 481| mu481_2(String) = Uninitialized[x154] : &:r481_1 -# 481| r481_3(glval) = FunctionAddress[String] : -# 481| v481_4(void) = Call[String] : func:r481_3, this:r481_1 -# 481| mu481_5(unknown) = ^CallSideEffect : ~m? -# 481| mu481_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r481_1 -# 482| r482_1(glval) = VariableAddress[x154] : -# 482| r482_2(glval) = FunctionAddress[~String] : -# 482| v482_3(void) = Call[~String] : func:r482_2, this:r482_1 -# 482| mu482_4(unknown) = ^CallSideEffect : ~m? -# 482| v482_5(void) = ^IndirectReadSideEffect[-1] : &:r482_1, ~m? -# 482| mu482_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r482_1 -# 482| r482_7(bool) = Constant[0] : -# 482| v482_8(void) = ConditionalBranch : r482_7 +# 35| Block 155 +# 35| r35_2157(glval) = VariableAddress[x154] : +# 35| mu35_2158(String) = Uninitialized[x154] : &:r35_2157 +# 35| r35_2159(glval) = FunctionAddress[String] : +# 35| v35_2160(void) = Call[String] : func:r35_2159, this:r35_2157 +# 35| mu35_2161(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2162(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2157 +# 35| r35_2163(glval) = VariableAddress[x154] : +# 35| r35_2164(glval) = FunctionAddress[~String] : +# 35| v35_2165(void) = Call[~String] : func:r35_2164, this:r35_2163 +# 35| mu35_2166(unknown) = ^CallSideEffect : ~m? +# 35| v35_2167(void) = ^IndirectReadSideEffect[-1] : &:r35_2163, ~m? +# 35| mu35_2168(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2163 +# 35| r35_2169(bool) = Constant[0] : +# 35| v35_2170(void) = ConditionalBranch : r35_2169 #-----| False -> Block 156 #-----| True (back edge) -> Block 155 -# 484| Block 156 -# 484| r484_1(glval) = VariableAddress[x155] : -# 484| mu484_2(String) = Uninitialized[x155] : &:r484_1 -# 484| r484_3(glval) = FunctionAddress[String] : -# 484| v484_4(void) = Call[String] : func:r484_3, this:r484_1 -# 484| mu484_5(unknown) = ^CallSideEffect : ~m? -# 484| mu484_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r484_1 -# 485| r485_1(glval) = VariableAddress[x155] : -# 485| r485_2(glval) = FunctionAddress[~String] : -# 485| v485_3(void) = Call[~String] : func:r485_2, this:r485_1 -# 485| mu485_4(unknown) = ^CallSideEffect : ~m? -# 485| v485_5(void) = ^IndirectReadSideEffect[-1] : &:r485_1, ~m? -# 485| mu485_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r485_1 -# 485| r485_7(bool) = Constant[0] : -# 485| v485_8(void) = ConditionalBranch : r485_7 +# 35| Block 156 +# 35| r35_2171(glval) = VariableAddress[x155] : +# 35| mu35_2172(String) = Uninitialized[x155] : &:r35_2171 +# 35| r35_2173(glval) = FunctionAddress[String] : +# 35| v35_2174(void) = Call[String] : func:r35_2173, this:r35_2171 +# 35| mu35_2175(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2176(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2171 +# 35| r35_2177(glval) = VariableAddress[x155] : +# 35| r35_2178(glval) = FunctionAddress[~String] : +# 35| v35_2179(void) = Call[~String] : func:r35_2178, this:r35_2177 +# 35| mu35_2180(unknown) = ^CallSideEffect : ~m? +# 35| v35_2181(void) = ^IndirectReadSideEffect[-1] : &:r35_2177, ~m? +# 35| mu35_2182(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2177 +# 35| r35_2183(bool) = Constant[0] : +# 35| v35_2184(void) = ConditionalBranch : r35_2183 #-----| False -> Block 157 #-----| True (back edge) -> Block 156 -# 487| Block 157 -# 487| r487_1(glval) = VariableAddress[x156] : -# 487| mu487_2(String) = Uninitialized[x156] : &:r487_1 -# 487| r487_3(glval) = FunctionAddress[String] : -# 487| v487_4(void) = Call[String] : func:r487_3, this:r487_1 -# 487| mu487_5(unknown) = ^CallSideEffect : ~m? -# 487| mu487_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r487_1 -# 488| r488_1(glval) = VariableAddress[x156] : -# 488| r488_2(glval) = FunctionAddress[~String] : -# 488| v488_3(void) = Call[~String] : func:r488_2, this:r488_1 -# 488| mu488_4(unknown) = ^CallSideEffect : ~m? -# 488| v488_5(void) = ^IndirectReadSideEffect[-1] : &:r488_1, ~m? -# 488| mu488_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r488_1 -# 488| r488_7(bool) = Constant[0] : -# 488| v488_8(void) = ConditionalBranch : r488_7 +# 35| Block 157 +# 35| r35_2185(glval) = VariableAddress[x156] : +# 35| mu35_2186(String) = Uninitialized[x156] : &:r35_2185 +# 35| r35_2187(glval) = FunctionAddress[String] : +# 35| v35_2188(void) = Call[String] : func:r35_2187, this:r35_2185 +# 35| mu35_2189(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2190(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2185 +# 35| r35_2191(glval) = VariableAddress[x156] : +# 35| r35_2192(glval) = FunctionAddress[~String] : +# 35| v35_2193(void) = Call[~String] : func:r35_2192, this:r35_2191 +# 35| mu35_2194(unknown) = ^CallSideEffect : ~m? +# 35| v35_2195(void) = ^IndirectReadSideEffect[-1] : &:r35_2191, ~m? +# 35| mu35_2196(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2191 +# 35| r35_2197(bool) = Constant[0] : +# 35| v35_2198(void) = ConditionalBranch : r35_2197 #-----| False -> Block 158 #-----| True (back edge) -> Block 157 -# 490| Block 158 -# 490| r490_1(glval) = VariableAddress[x157] : -# 490| mu490_2(String) = Uninitialized[x157] : &:r490_1 -# 490| r490_3(glval) = FunctionAddress[String] : -# 490| v490_4(void) = Call[String] : func:r490_3, this:r490_1 -# 490| mu490_5(unknown) = ^CallSideEffect : ~m? -# 490| mu490_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r490_1 -# 491| r491_1(glval) = VariableAddress[x157] : -# 491| r491_2(glval) = FunctionAddress[~String] : -# 491| v491_3(void) = Call[~String] : func:r491_2, this:r491_1 -# 491| mu491_4(unknown) = ^CallSideEffect : ~m? -# 491| v491_5(void) = ^IndirectReadSideEffect[-1] : &:r491_1, ~m? -# 491| mu491_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r491_1 -# 491| r491_7(bool) = Constant[0] : -# 491| v491_8(void) = ConditionalBranch : r491_7 +# 35| Block 158 +# 35| r35_2199(glval) = VariableAddress[x157] : +# 35| mu35_2200(String) = Uninitialized[x157] : &:r35_2199 +# 35| r35_2201(glval) = FunctionAddress[String] : +# 35| v35_2202(void) = Call[String] : func:r35_2201, this:r35_2199 +# 35| mu35_2203(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2204(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2199 +# 35| r35_2205(glval) = VariableAddress[x157] : +# 35| r35_2206(glval) = FunctionAddress[~String] : +# 35| v35_2207(void) = Call[~String] : func:r35_2206, this:r35_2205 +# 35| mu35_2208(unknown) = ^CallSideEffect : ~m? +# 35| v35_2209(void) = ^IndirectReadSideEffect[-1] : &:r35_2205, ~m? +# 35| mu35_2210(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2205 +# 35| r35_2211(bool) = Constant[0] : +# 35| v35_2212(void) = ConditionalBranch : r35_2211 #-----| False -> Block 159 #-----| True (back edge) -> Block 158 -# 493| Block 159 -# 493| r493_1(glval) = VariableAddress[x158] : -# 493| mu493_2(String) = Uninitialized[x158] : &:r493_1 -# 493| r493_3(glval) = FunctionAddress[String] : -# 493| v493_4(void) = Call[String] : func:r493_3, this:r493_1 -# 493| mu493_5(unknown) = ^CallSideEffect : ~m? -# 493| mu493_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r493_1 -# 494| r494_1(glval) = VariableAddress[x158] : -# 494| r494_2(glval) = FunctionAddress[~String] : -# 494| v494_3(void) = Call[~String] : func:r494_2, this:r494_1 -# 494| mu494_4(unknown) = ^CallSideEffect : ~m? -# 494| v494_5(void) = ^IndirectReadSideEffect[-1] : &:r494_1, ~m? -# 494| mu494_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r494_1 -# 494| r494_7(bool) = Constant[0] : -# 494| v494_8(void) = ConditionalBranch : r494_7 +# 35| Block 159 +# 35| r35_2213(glval) = VariableAddress[x158] : +# 35| mu35_2214(String) = Uninitialized[x158] : &:r35_2213 +# 35| r35_2215(glval) = FunctionAddress[String] : +# 35| v35_2216(void) = Call[String] : func:r35_2215, this:r35_2213 +# 35| mu35_2217(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2218(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2213 +# 35| r35_2219(glval) = VariableAddress[x158] : +# 35| r35_2220(glval) = FunctionAddress[~String] : +# 35| v35_2221(void) = Call[~String] : func:r35_2220, this:r35_2219 +# 35| mu35_2222(unknown) = ^CallSideEffect : ~m? +# 35| v35_2223(void) = ^IndirectReadSideEffect[-1] : &:r35_2219, ~m? +# 35| mu35_2224(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2219 +# 35| r35_2225(bool) = Constant[0] : +# 35| v35_2226(void) = ConditionalBranch : r35_2225 #-----| False -> Block 160 #-----| True (back edge) -> Block 159 -# 496| Block 160 -# 496| r496_1(glval) = VariableAddress[x159] : -# 496| mu496_2(String) = Uninitialized[x159] : &:r496_1 -# 496| r496_3(glval) = FunctionAddress[String] : -# 496| v496_4(void) = Call[String] : func:r496_3, this:r496_1 -# 496| mu496_5(unknown) = ^CallSideEffect : ~m? -# 496| mu496_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r496_1 -# 497| r497_1(glval) = VariableAddress[x159] : -# 497| r497_2(glval) = FunctionAddress[~String] : -# 497| v497_3(void) = Call[~String] : func:r497_2, this:r497_1 -# 497| mu497_4(unknown) = ^CallSideEffect : ~m? -# 497| v497_5(void) = ^IndirectReadSideEffect[-1] : &:r497_1, ~m? -# 497| mu497_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r497_1 -# 497| r497_7(bool) = Constant[0] : -# 497| v497_8(void) = ConditionalBranch : r497_7 +# 35| Block 160 +# 35| r35_2227(glval) = VariableAddress[x159] : +# 35| mu35_2228(String) = Uninitialized[x159] : &:r35_2227 +# 35| r35_2229(glval) = FunctionAddress[String] : +# 35| v35_2230(void) = Call[String] : func:r35_2229, this:r35_2227 +# 35| mu35_2231(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2232(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2227 +# 35| r35_2233(glval) = VariableAddress[x159] : +# 35| r35_2234(glval) = FunctionAddress[~String] : +# 35| v35_2235(void) = Call[~String] : func:r35_2234, this:r35_2233 +# 35| mu35_2236(unknown) = ^CallSideEffect : ~m? +# 35| v35_2237(void) = ^IndirectReadSideEffect[-1] : &:r35_2233, ~m? +# 35| mu35_2238(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2233 +# 35| r35_2239(bool) = Constant[0] : +# 35| v35_2240(void) = ConditionalBranch : r35_2239 #-----| False -> Block 161 #-----| True (back edge) -> Block 160 -# 499| Block 161 -# 499| r499_1(glval) = VariableAddress[x160] : -# 499| mu499_2(String) = Uninitialized[x160] : &:r499_1 -# 499| r499_3(glval) = FunctionAddress[String] : -# 499| v499_4(void) = Call[String] : func:r499_3, this:r499_1 -# 499| mu499_5(unknown) = ^CallSideEffect : ~m? -# 499| mu499_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r499_1 -# 500| r500_1(glval) = VariableAddress[x160] : -# 500| r500_2(glval) = FunctionAddress[~String] : -# 500| v500_3(void) = Call[~String] : func:r500_2, this:r500_1 -# 500| mu500_4(unknown) = ^CallSideEffect : ~m? -# 500| v500_5(void) = ^IndirectReadSideEffect[-1] : &:r500_1, ~m? -# 500| mu500_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r500_1 -# 500| r500_7(bool) = Constant[0] : -# 500| v500_8(void) = ConditionalBranch : r500_7 +# 35| Block 161 +# 35| r35_2241(glval) = VariableAddress[x160] : +# 35| mu35_2242(String) = Uninitialized[x160] : &:r35_2241 +# 35| r35_2243(glval) = FunctionAddress[String] : +# 35| v35_2244(void) = Call[String] : func:r35_2243, this:r35_2241 +# 35| mu35_2245(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2246(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2241 +# 35| r35_2247(glval) = VariableAddress[x160] : +# 35| r35_2248(glval) = FunctionAddress[~String] : +# 35| v35_2249(void) = Call[~String] : func:r35_2248, this:r35_2247 +# 35| mu35_2250(unknown) = ^CallSideEffect : ~m? +# 35| v35_2251(void) = ^IndirectReadSideEffect[-1] : &:r35_2247, ~m? +# 35| mu35_2252(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2247 +# 35| r35_2253(bool) = Constant[0] : +# 35| v35_2254(void) = ConditionalBranch : r35_2253 #-----| False -> Block 162 #-----| True (back edge) -> Block 161 -# 502| Block 162 -# 502| r502_1(glval) = VariableAddress[x161] : -# 502| mu502_2(String) = Uninitialized[x161] : &:r502_1 -# 502| r502_3(glval) = FunctionAddress[String] : -# 502| v502_4(void) = Call[String] : func:r502_3, this:r502_1 -# 502| mu502_5(unknown) = ^CallSideEffect : ~m? -# 502| mu502_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r502_1 -# 503| r503_1(glval) = VariableAddress[x161] : -# 503| r503_2(glval) = FunctionAddress[~String] : -# 503| v503_3(void) = Call[~String] : func:r503_2, this:r503_1 -# 503| mu503_4(unknown) = ^CallSideEffect : ~m? -# 503| v503_5(void) = ^IndirectReadSideEffect[-1] : &:r503_1, ~m? -# 503| mu503_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r503_1 -# 503| r503_7(bool) = Constant[0] : -# 503| v503_8(void) = ConditionalBranch : r503_7 +# 35| Block 162 +# 35| r35_2255(glval) = VariableAddress[x161] : +# 35| mu35_2256(String) = Uninitialized[x161] : &:r35_2255 +# 35| r35_2257(glval) = FunctionAddress[String] : +# 35| v35_2258(void) = Call[String] : func:r35_2257, this:r35_2255 +# 35| mu35_2259(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2260(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2255 +# 35| r35_2261(glval) = VariableAddress[x161] : +# 35| r35_2262(glval) = FunctionAddress[~String] : +# 35| v35_2263(void) = Call[~String] : func:r35_2262, this:r35_2261 +# 35| mu35_2264(unknown) = ^CallSideEffect : ~m? +# 35| v35_2265(void) = ^IndirectReadSideEffect[-1] : &:r35_2261, ~m? +# 35| mu35_2266(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2261 +# 35| r35_2267(bool) = Constant[0] : +# 35| v35_2268(void) = ConditionalBranch : r35_2267 #-----| False -> Block 163 #-----| True (back edge) -> Block 162 -# 505| Block 163 -# 505| r505_1(glval) = VariableAddress[x162] : -# 505| mu505_2(String) = Uninitialized[x162] : &:r505_1 -# 505| r505_3(glval) = FunctionAddress[String] : -# 505| v505_4(void) = Call[String] : func:r505_3, this:r505_1 -# 505| mu505_5(unknown) = ^CallSideEffect : ~m? -# 505| mu505_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r505_1 -# 506| r506_1(glval) = VariableAddress[x162] : -# 506| r506_2(glval) = FunctionAddress[~String] : -# 506| v506_3(void) = Call[~String] : func:r506_2, this:r506_1 -# 506| mu506_4(unknown) = ^CallSideEffect : ~m? -# 506| v506_5(void) = ^IndirectReadSideEffect[-1] : &:r506_1, ~m? -# 506| mu506_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r506_1 -# 506| r506_7(bool) = Constant[0] : -# 506| v506_8(void) = ConditionalBranch : r506_7 +# 35| Block 163 +# 35| r35_2269(glval) = VariableAddress[x162] : +# 35| mu35_2270(String) = Uninitialized[x162] : &:r35_2269 +# 35| r35_2271(glval) = FunctionAddress[String] : +# 35| v35_2272(void) = Call[String] : func:r35_2271, this:r35_2269 +# 35| mu35_2273(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2274(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2269 +# 35| r35_2275(glval) = VariableAddress[x162] : +# 35| r35_2276(glval) = FunctionAddress[~String] : +# 35| v35_2277(void) = Call[~String] : func:r35_2276, this:r35_2275 +# 35| mu35_2278(unknown) = ^CallSideEffect : ~m? +# 35| v35_2279(void) = ^IndirectReadSideEffect[-1] : &:r35_2275, ~m? +# 35| mu35_2280(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2275 +# 35| r35_2281(bool) = Constant[0] : +# 35| v35_2282(void) = ConditionalBranch : r35_2281 #-----| False -> Block 164 #-----| True (back edge) -> Block 163 -# 508| Block 164 -# 508| r508_1(glval) = VariableAddress[x163] : -# 508| mu508_2(String) = Uninitialized[x163] : &:r508_1 -# 508| r508_3(glval) = FunctionAddress[String] : -# 508| v508_4(void) = Call[String] : func:r508_3, this:r508_1 -# 508| mu508_5(unknown) = ^CallSideEffect : ~m? -# 508| mu508_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r508_1 -# 509| r509_1(glval) = VariableAddress[x163] : -# 509| r509_2(glval) = FunctionAddress[~String] : -# 509| v509_3(void) = Call[~String] : func:r509_2, this:r509_1 -# 509| mu509_4(unknown) = ^CallSideEffect : ~m? -# 509| v509_5(void) = ^IndirectReadSideEffect[-1] : &:r509_1, ~m? -# 509| mu509_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r509_1 -# 509| r509_7(bool) = Constant[0] : -# 509| v509_8(void) = ConditionalBranch : r509_7 +# 35| Block 164 +# 35| r35_2283(glval) = VariableAddress[x163] : +# 35| mu35_2284(String) = Uninitialized[x163] : &:r35_2283 +# 35| r35_2285(glval) = FunctionAddress[String] : +# 35| v35_2286(void) = Call[String] : func:r35_2285, this:r35_2283 +# 35| mu35_2287(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2288(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2283 +# 35| r35_2289(glval) = VariableAddress[x163] : +# 35| r35_2290(glval) = FunctionAddress[~String] : +# 35| v35_2291(void) = Call[~String] : func:r35_2290, this:r35_2289 +# 35| mu35_2292(unknown) = ^CallSideEffect : ~m? +# 35| v35_2293(void) = ^IndirectReadSideEffect[-1] : &:r35_2289, ~m? +# 35| mu35_2294(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2289 +# 35| r35_2295(bool) = Constant[0] : +# 35| v35_2296(void) = ConditionalBranch : r35_2295 #-----| False -> Block 165 #-----| True (back edge) -> Block 164 -# 511| Block 165 -# 511| r511_1(glval) = VariableAddress[x164] : -# 511| mu511_2(String) = Uninitialized[x164] : &:r511_1 -# 511| r511_3(glval) = FunctionAddress[String] : -# 511| v511_4(void) = Call[String] : func:r511_3, this:r511_1 -# 511| mu511_5(unknown) = ^CallSideEffect : ~m? -# 511| mu511_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r511_1 -# 512| r512_1(glval) = VariableAddress[x164] : -# 512| r512_2(glval) = FunctionAddress[~String] : -# 512| v512_3(void) = Call[~String] : func:r512_2, this:r512_1 -# 512| mu512_4(unknown) = ^CallSideEffect : ~m? -# 512| v512_5(void) = ^IndirectReadSideEffect[-1] : &:r512_1, ~m? -# 512| mu512_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r512_1 -# 512| r512_7(bool) = Constant[0] : -# 512| v512_8(void) = ConditionalBranch : r512_7 +# 35| Block 165 +# 35| r35_2297(glval) = VariableAddress[x164] : +# 35| mu35_2298(String) = Uninitialized[x164] : &:r35_2297 +# 35| r35_2299(glval) = FunctionAddress[String] : +# 35| v35_2300(void) = Call[String] : func:r35_2299, this:r35_2297 +# 35| mu35_2301(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2302(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2297 +# 35| r35_2303(glval) = VariableAddress[x164] : +# 35| r35_2304(glval) = FunctionAddress[~String] : +# 35| v35_2305(void) = Call[~String] : func:r35_2304, this:r35_2303 +# 35| mu35_2306(unknown) = ^CallSideEffect : ~m? +# 35| v35_2307(void) = ^IndirectReadSideEffect[-1] : &:r35_2303, ~m? +# 35| mu35_2308(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2303 +# 35| r35_2309(bool) = Constant[0] : +# 35| v35_2310(void) = ConditionalBranch : r35_2309 #-----| False -> Block 166 #-----| True (back edge) -> Block 165 -# 514| Block 166 -# 514| r514_1(glval) = VariableAddress[x165] : -# 514| mu514_2(String) = Uninitialized[x165] : &:r514_1 -# 514| r514_3(glval) = FunctionAddress[String] : -# 514| v514_4(void) = Call[String] : func:r514_3, this:r514_1 -# 514| mu514_5(unknown) = ^CallSideEffect : ~m? -# 514| mu514_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r514_1 -# 515| r515_1(glval) = VariableAddress[x165] : -# 515| r515_2(glval) = FunctionAddress[~String] : -# 515| v515_3(void) = Call[~String] : func:r515_2, this:r515_1 -# 515| mu515_4(unknown) = ^CallSideEffect : ~m? -# 515| v515_5(void) = ^IndirectReadSideEffect[-1] : &:r515_1, ~m? -# 515| mu515_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r515_1 -# 515| r515_7(bool) = Constant[0] : -# 515| v515_8(void) = ConditionalBranch : r515_7 +# 35| Block 166 +# 35| r35_2311(glval) = VariableAddress[x165] : +# 35| mu35_2312(String) = Uninitialized[x165] : &:r35_2311 +# 35| r35_2313(glval) = FunctionAddress[String] : +# 35| v35_2314(void) = Call[String] : func:r35_2313, this:r35_2311 +# 35| mu35_2315(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2316(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2311 +# 35| r35_2317(glval) = VariableAddress[x165] : +# 35| r35_2318(glval) = FunctionAddress[~String] : +# 35| v35_2319(void) = Call[~String] : func:r35_2318, this:r35_2317 +# 35| mu35_2320(unknown) = ^CallSideEffect : ~m? +# 35| v35_2321(void) = ^IndirectReadSideEffect[-1] : &:r35_2317, ~m? +# 35| mu35_2322(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2317 +# 35| r35_2323(bool) = Constant[0] : +# 35| v35_2324(void) = ConditionalBranch : r35_2323 #-----| False -> Block 167 #-----| True (back edge) -> Block 166 -# 517| Block 167 -# 517| r517_1(glval) = VariableAddress[x166] : -# 517| mu517_2(String) = Uninitialized[x166] : &:r517_1 -# 517| r517_3(glval) = FunctionAddress[String] : -# 517| v517_4(void) = Call[String] : func:r517_3, this:r517_1 -# 517| mu517_5(unknown) = ^CallSideEffect : ~m? -# 517| mu517_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r517_1 -# 518| r518_1(glval) = VariableAddress[x166] : -# 518| r518_2(glval) = FunctionAddress[~String] : -# 518| v518_3(void) = Call[~String] : func:r518_2, this:r518_1 -# 518| mu518_4(unknown) = ^CallSideEffect : ~m? -# 518| v518_5(void) = ^IndirectReadSideEffect[-1] : &:r518_1, ~m? -# 518| mu518_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r518_1 -# 518| r518_7(bool) = Constant[0] : -# 518| v518_8(void) = ConditionalBranch : r518_7 +# 35| Block 167 +# 35| r35_2325(glval) = VariableAddress[x166] : +# 35| mu35_2326(String) = Uninitialized[x166] : &:r35_2325 +# 35| r35_2327(glval) = FunctionAddress[String] : +# 35| v35_2328(void) = Call[String] : func:r35_2327, this:r35_2325 +# 35| mu35_2329(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2330(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2325 +# 35| r35_2331(glval) = VariableAddress[x166] : +# 35| r35_2332(glval) = FunctionAddress[~String] : +# 35| v35_2333(void) = Call[~String] : func:r35_2332, this:r35_2331 +# 35| mu35_2334(unknown) = ^CallSideEffect : ~m? +# 35| v35_2335(void) = ^IndirectReadSideEffect[-1] : &:r35_2331, ~m? +# 35| mu35_2336(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2331 +# 35| r35_2337(bool) = Constant[0] : +# 35| v35_2338(void) = ConditionalBranch : r35_2337 #-----| False -> Block 168 #-----| True (back edge) -> Block 167 -# 520| Block 168 -# 520| r520_1(glval) = VariableAddress[x167] : -# 520| mu520_2(String) = Uninitialized[x167] : &:r520_1 -# 520| r520_3(glval) = FunctionAddress[String] : -# 520| v520_4(void) = Call[String] : func:r520_3, this:r520_1 -# 520| mu520_5(unknown) = ^CallSideEffect : ~m? -# 520| mu520_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r520_1 -# 521| r521_1(glval) = VariableAddress[x167] : -# 521| r521_2(glval) = FunctionAddress[~String] : -# 521| v521_3(void) = Call[~String] : func:r521_2, this:r521_1 -# 521| mu521_4(unknown) = ^CallSideEffect : ~m? -# 521| v521_5(void) = ^IndirectReadSideEffect[-1] : &:r521_1, ~m? -# 521| mu521_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r521_1 -# 521| r521_7(bool) = Constant[0] : -# 521| v521_8(void) = ConditionalBranch : r521_7 +# 35| Block 168 +# 35| r35_2339(glval) = VariableAddress[x167] : +# 35| mu35_2340(String) = Uninitialized[x167] : &:r35_2339 +# 35| r35_2341(glval) = FunctionAddress[String] : +# 35| v35_2342(void) = Call[String] : func:r35_2341, this:r35_2339 +# 35| mu35_2343(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2344(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2339 +# 35| r35_2345(glval) = VariableAddress[x167] : +# 35| r35_2346(glval) = FunctionAddress[~String] : +# 35| v35_2347(void) = Call[~String] : func:r35_2346, this:r35_2345 +# 35| mu35_2348(unknown) = ^CallSideEffect : ~m? +# 35| v35_2349(void) = ^IndirectReadSideEffect[-1] : &:r35_2345, ~m? +# 35| mu35_2350(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2345 +# 35| r35_2351(bool) = Constant[0] : +# 35| v35_2352(void) = ConditionalBranch : r35_2351 #-----| False -> Block 169 #-----| True (back edge) -> Block 168 -# 523| Block 169 -# 523| r523_1(glval) = VariableAddress[x168] : -# 523| mu523_2(String) = Uninitialized[x168] : &:r523_1 -# 523| r523_3(glval) = FunctionAddress[String] : -# 523| v523_4(void) = Call[String] : func:r523_3, this:r523_1 -# 523| mu523_5(unknown) = ^CallSideEffect : ~m? -# 523| mu523_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r523_1 -# 524| r524_1(glval) = VariableAddress[x168] : -# 524| r524_2(glval) = FunctionAddress[~String] : -# 524| v524_3(void) = Call[~String] : func:r524_2, this:r524_1 -# 524| mu524_4(unknown) = ^CallSideEffect : ~m? -# 524| v524_5(void) = ^IndirectReadSideEffect[-1] : &:r524_1, ~m? -# 524| mu524_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r524_1 -# 524| r524_7(bool) = Constant[0] : -# 524| v524_8(void) = ConditionalBranch : r524_7 +# 35| Block 169 +# 35| r35_2353(glval) = VariableAddress[x168] : +# 35| mu35_2354(String) = Uninitialized[x168] : &:r35_2353 +# 35| r35_2355(glval) = FunctionAddress[String] : +# 35| v35_2356(void) = Call[String] : func:r35_2355, this:r35_2353 +# 35| mu35_2357(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2358(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2353 +# 35| r35_2359(glval) = VariableAddress[x168] : +# 35| r35_2360(glval) = FunctionAddress[~String] : +# 35| v35_2361(void) = Call[~String] : func:r35_2360, this:r35_2359 +# 35| mu35_2362(unknown) = ^CallSideEffect : ~m? +# 35| v35_2363(void) = ^IndirectReadSideEffect[-1] : &:r35_2359, ~m? +# 35| mu35_2364(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2359 +# 35| r35_2365(bool) = Constant[0] : +# 35| v35_2366(void) = ConditionalBranch : r35_2365 #-----| False -> Block 170 #-----| True (back edge) -> Block 169 -# 526| Block 170 -# 526| r526_1(glval) = VariableAddress[x169] : -# 526| mu526_2(String) = Uninitialized[x169] : &:r526_1 -# 526| r526_3(glval) = FunctionAddress[String] : -# 526| v526_4(void) = Call[String] : func:r526_3, this:r526_1 -# 526| mu526_5(unknown) = ^CallSideEffect : ~m? -# 526| mu526_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r526_1 -# 527| r527_1(glval) = VariableAddress[x169] : -# 527| r527_2(glval) = FunctionAddress[~String] : -# 527| v527_3(void) = Call[~String] : func:r527_2, this:r527_1 -# 527| mu527_4(unknown) = ^CallSideEffect : ~m? -# 527| v527_5(void) = ^IndirectReadSideEffect[-1] : &:r527_1, ~m? -# 527| mu527_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r527_1 -# 527| r527_7(bool) = Constant[0] : -# 527| v527_8(void) = ConditionalBranch : r527_7 +# 35| Block 170 +# 35| r35_2367(glval) = VariableAddress[x169] : +# 35| mu35_2368(String) = Uninitialized[x169] : &:r35_2367 +# 35| r35_2369(glval) = FunctionAddress[String] : +# 35| v35_2370(void) = Call[String] : func:r35_2369, this:r35_2367 +# 35| mu35_2371(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2372(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2367 +# 35| r35_2373(glval) = VariableAddress[x169] : +# 35| r35_2374(glval) = FunctionAddress[~String] : +# 35| v35_2375(void) = Call[~String] : func:r35_2374, this:r35_2373 +# 35| mu35_2376(unknown) = ^CallSideEffect : ~m? +# 35| v35_2377(void) = ^IndirectReadSideEffect[-1] : &:r35_2373, ~m? +# 35| mu35_2378(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2373 +# 35| r35_2379(bool) = Constant[0] : +# 35| v35_2380(void) = ConditionalBranch : r35_2379 #-----| False -> Block 171 #-----| True (back edge) -> Block 170 -# 529| Block 171 -# 529| r529_1(glval) = VariableAddress[x170] : -# 529| mu529_2(String) = Uninitialized[x170] : &:r529_1 -# 529| r529_3(glval) = FunctionAddress[String] : -# 529| v529_4(void) = Call[String] : func:r529_3, this:r529_1 -# 529| mu529_5(unknown) = ^CallSideEffect : ~m? -# 529| mu529_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r529_1 -# 530| r530_1(glval) = VariableAddress[x170] : -# 530| r530_2(glval) = FunctionAddress[~String] : -# 530| v530_3(void) = Call[~String] : func:r530_2, this:r530_1 -# 530| mu530_4(unknown) = ^CallSideEffect : ~m? -# 530| v530_5(void) = ^IndirectReadSideEffect[-1] : &:r530_1, ~m? -# 530| mu530_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r530_1 -# 530| r530_7(bool) = Constant[0] : -# 530| v530_8(void) = ConditionalBranch : r530_7 +# 35| Block 171 +# 35| r35_2381(glval) = VariableAddress[x170] : +# 35| mu35_2382(String) = Uninitialized[x170] : &:r35_2381 +# 35| r35_2383(glval) = FunctionAddress[String] : +# 35| v35_2384(void) = Call[String] : func:r35_2383, this:r35_2381 +# 35| mu35_2385(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2386(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2381 +# 35| r35_2387(glval) = VariableAddress[x170] : +# 35| r35_2388(glval) = FunctionAddress[~String] : +# 35| v35_2389(void) = Call[~String] : func:r35_2388, this:r35_2387 +# 35| mu35_2390(unknown) = ^CallSideEffect : ~m? +# 35| v35_2391(void) = ^IndirectReadSideEffect[-1] : &:r35_2387, ~m? +# 35| mu35_2392(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2387 +# 35| r35_2393(bool) = Constant[0] : +# 35| v35_2394(void) = ConditionalBranch : r35_2393 #-----| False -> Block 172 #-----| True (back edge) -> Block 171 -# 532| Block 172 -# 532| r532_1(glval) = VariableAddress[x171] : -# 532| mu532_2(String) = Uninitialized[x171] : &:r532_1 -# 532| r532_3(glval) = FunctionAddress[String] : -# 532| v532_4(void) = Call[String] : func:r532_3, this:r532_1 -# 532| mu532_5(unknown) = ^CallSideEffect : ~m? -# 532| mu532_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r532_1 -# 533| r533_1(glval) = VariableAddress[x171] : -# 533| r533_2(glval) = FunctionAddress[~String] : -# 533| v533_3(void) = Call[~String] : func:r533_2, this:r533_1 -# 533| mu533_4(unknown) = ^CallSideEffect : ~m? -# 533| v533_5(void) = ^IndirectReadSideEffect[-1] : &:r533_1, ~m? -# 533| mu533_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r533_1 -# 533| r533_7(bool) = Constant[0] : -# 533| v533_8(void) = ConditionalBranch : r533_7 +# 35| Block 172 +# 35| r35_2395(glval) = VariableAddress[x171] : +# 35| mu35_2396(String) = Uninitialized[x171] : &:r35_2395 +# 35| r35_2397(glval) = FunctionAddress[String] : +# 35| v35_2398(void) = Call[String] : func:r35_2397, this:r35_2395 +# 35| mu35_2399(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2400(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2395 +# 35| r35_2401(glval) = VariableAddress[x171] : +# 35| r35_2402(glval) = FunctionAddress[~String] : +# 35| v35_2403(void) = Call[~String] : func:r35_2402, this:r35_2401 +# 35| mu35_2404(unknown) = ^CallSideEffect : ~m? +# 35| v35_2405(void) = ^IndirectReadSideEffect[-1] : &:r35_2401, ~m? +# 35| mu35_2406(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2401 +# 35| r35_2407(bool) = Constant[0] : +# 35| v35_2408(void) = ConditionalBranch : r35_2407 #-----| False -> Block 173 #-----| True (back edge) -> Block 172 -# 535| Block 173 -# 535| r535_1(glval) = VariableAddress[x172] : -# 535| mu535_2(String) = Uninitialized[x172] : &:r535_1 -# 535| r535_3(glval) = FunctionAddress[String] : -# 535| v535_4(void) = Call[String] : func:r535_3, this:r535_1 -# 535| mu535_5(unknown) = ^CallSideEffect : ~m? -# 535| mu535_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r535_1 -# 536| r536_1(glval) = VariableAddress[x172] : -# 536| r536_2(glval) = FunctionAddress[~String] : -# 536| v536_3(void) = Call[~String] : func:r536_2, this:r536_1 -# 536| mu536_4(unknown) = ^CallSideEffect : ~m? -# 536| v536_5(void) = ^IndirectReadSideEffect[-1] : &:r536_1, ~m? -# 536| mu536_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r536_1 -# 536| r536_7(bool) = Constant[0] : -# 536| v536_8(void) = ConditionalBranch : r536_7 +# 35| Block 173 +# 35| r35_2409(glval) = VariableAddress[x172] : +# 35| mu35_2410(String) = Uninitialized[x172] : &:r35_2409 +# 35| r35_2411(glval) = FunctionAddress[String] : +# 35| v35_2412(void) = Call[String] : func:r35_2411, this:r35_2409 +# 35| mu35_2413(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2414(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2409 +# 35| r35_2415(glval) = VariableAddress[x172] : +# 35| r35_2416(glval) = FunctionAddress[~String] : +# 35| v35_2417(void) = Call[~String] : func:r35_2416, this:r35_2415 +# 35| mu35_2418(unknown) = ^CallSideEffect : ~m? +# 35| v35_2419(void) = ^IndirectReadSideEffect[-1] : &:r35_2415, ~m? +# 35| mu35_2420(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2415 +# 35| r35_2421(bool) = Constant[0] : +# 35| v35_2422(void) = ConditionalBranch : r35_2421 #-----| False -> Block 174 #-----| True (back edge) -> Block 173 -# 538| Block 174 -# 538| r538_1(glval) = VariableAddress[x173] : -# 538| mu538_2(String) = Uninitialized[x173] : &:r538_1 -# 538| r538_3(glval) = FunctionAddress[String] : -# 538| v538_4(void) = Call[String] : func:r538_3, this:r538_1 -# 538| mu538_5(unknown) = ^CallSideEffect : ~m? -# 538| mu538_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r538_1 -# 539| r539_1(glval) = VariableAddress[x173] : -# 539| r539_2(glval) = FunctionAddress[~String] : -# 539| v539_3(void) = Call[~String] : func:r539_2, this:r539_1 -# 539| mu539_4(unknown) = ^CallSideEffect : ~m? -# 539| v539_5(void) = ^IndirectReadSideEffect[-1] : &:r539_1, ~m? -# 539| mu539_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r539_1 -# 539| r539_7(bool) = Constant[0] : -# 539| v539_8(void) = ConditionalBranch : r539_7 +# 35| Block 174 +# 35| r35_2423(glval) = VariableAddress[x173] : +# 35| mu35_2424(String) = Uninitialized[x173] : &:r35_2423 +# 35| r35_2425(glval) = FunctionAddress[String] : +# 35| v35_2426(void) = Call[String] : func:r35_2425, this:r35_2423 +# 35| mu35_2427(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2428(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2423 +# 35| r35_2429(glval) = VariableAddress[x173] : +# 35| r35_2430(glval) = FunctionAddress[~String] : +# 35| v35_2431(void) = Call[~String] : func:r35_2430, this:r35_2429 +# 35| mu35_2432(unknown) = ^CallSideEffect : ~m? +# 35| v35_2433(void) = ^IndirectReadSideEffect[-1] : &:r35_2429, ~m? +# 35| mu35_2434(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2429 +# 35| r35_2435(bool) = Constant[0] : +# 35| v35_2436(void) = ConditionalBranch : r35_2435 #-----| False -> Block 175 #-----| True (back edge) -> Block 174 -# 541| Block 175 -# 541| r541_1(glval) = VariableAddress[x174] : -# 541| mu541_2(String) = Uninitialized[x174] : &:r541_1 -# 541| r541_3(glval) = FunctionAddress[String] : -# 541| v541_4(void) = Call[String] : func:r541_3, this:r541_1 -# 541| mu541_5(unknown) = ^CallSideEffect : ~m? -# 541| mu541_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r541_1 -# 542| r542_1(glval) = VariableAddress[x174] : -# 542| r542_2(glval) = FunctionAddress[~String] : -# 542| v542_3(void) = Call[~String] : func:r542_2, this:r542_1 -# 542| mu542_4(unknown) = ^CallSideEffect : ~m? -# 542| v542_5(void) = ^IndirectReadSideEffect[-1] : &:r542_1, ~m? -# 542| mu542_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r542_1 -# 542| r542_7(bool) = Constant[0] : -# 542| v542_8(void) = ConditionalBranch : r542_7 +# 35| Block 175 +# 35| r35_2437(glval) = VariableAddress[x174] : +# 35| mu35_2438(String) = Uninitialized[x174] : &:r35_2437 +# 35| r35_2439(glval) = FunctionAddress[String] : +# 35| v35_2440(void) = Call[String] : func:r35_2439, this:r35_2437 +# 35| mu35_2441(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2442(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2437 +# 35| r35_2443(glval) = VariableAddress[x174] : +# 35| r35_2444(glval) = FunctionAddress[~String] : +# 35| v35_2445(void) = Call[~String] : func:r35_2444, this:r35_2443 +# 35| mu35_2446(unknown) = ^CallSideEffect : ~m? +# 35| v35_2447(void) = ^IndirectReadSideEffect[-1] : &:r35_2443, ~m? +# 35| mu35_2448(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2443 +# 35| r35_2449(bool) = Constant[0] : +# 35| v35_2450(void) = ConditionalBranch : r35_2449 #-----| False -> Block 176 #-----| True (back edge) -> Block 175 -# 544| Block 176 -# 544| r544_1(glval) = VariableAddress[x175] : -# 544| mu544_2(String) = Uninitialized[x175] : &:r544_1 -# 544| r544_3(glval) = FunctionAddress[String] : -# 544| v544_4(void) = Call[String] : func:r544_3, this:r544_1 -# 544| mu544_5(unknown) = ^CallSideEffect : ~m? -# 544| mu544_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r544_1 -# 545| r545_1(glval) = VariableAddress[x175] : -# 545| r545_2(glval) = FunctionAddress[~String] : -# 545| v545_3(void) = Call[~String] : func:r545_2, this:r545_1 -# 545| mu545_4(unknown) = ^CallSideEffect : ~m? -# 545| v545_5(void) = ^IndirectReadSideEffect[-1] : &:r545_1, ~m? -# 545| mu545_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r545_1 -# 545| r545_7(bool) = Constant[0] : -# 545| v545_8(void) = ConditionalBranch : r545_7 +# 35| Block 176 +# 35| r35_2451(glval) = VariableAddress[x175] : +# 35| mu35_2452(String) = Uninitialized[x175] : &:r35_2451 +# 35| r35_2453(glval) = FunctionAddress[String] : +# 35| v35_2454(void) = Call[String] : func:r35_2453, this:r35_2451 +# 35| mu35_2455(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2456(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2451 +# 35| r35_2457(glval) = VariableAddress[x175] : +# 35| r35_2458(glval) = FunctionAddress[~String] : +# 35| v35_2459(void) = Call[~String] : func:r35_2458, this:r35_2457 +# 35| mu35_2460(unknown) = ^CallSideEffect : ~m? +# 35| v35_2461(void) = ^IndirectReadSideEffect[-1] : &:r35_2457, ~m? +# 35| mu35_2462(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2457 +# 35| r35_2463(bool) = Constant[0] : +# 35| v35_2464(void) = ConditionalBranch : r35_2463 #-----| False -> Block 177 #-----| True (back edge) -> Block 176 -# 547| Block 177 -# 547| r547_1(glval) = VariableAddress[x176] : -# 547| mu547_2(String) = Uninitialized[x176] : &:r547_1 -# 547| r547_3(glval) = FunctionAddress[String] : -# 547| v547_4(void) = Call[String] : func:r547_3, this:r547_1 -# 547| mu547_5(unknown) = ^CallSideEffect : ~m? -# 547| mu547_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r547_1 -# 548| r548_1(glval) = VariableAddress[x176] : -# 548| r548_2(glval) = FunctionAddress[~String] : -# 548| v548_3(void) = Call[~String] : func:r548_2, this:r548_1 -# 548| mu548_4(unknown) = ^CallSideEffect : ~m? -# 548| v548_5(void) = ^IndirectReadSideEffect[-1] : &:r548_1, ~m? -# 548| mu548_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r548_1 -# 548| r548_7(bool) = Constant[0] : -# 548| v548_8(void) = ConditionalBranch : r548_7 +# 35| Block 177 +# 35| r35_2465(glval) = VariableAddress[x176] : +# 35| mu35_2466(String) = Uninitialized[x176] : &:r35_2465 +# 35| r35_2467(glval) = FunctionAddress[String] : +# 35| v35_2468(void) = Call[String] : func:r35_2467, this:r35_2465 +# 35| mu35_2469(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2470(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2465 +# 35| r35_2471(glval) = VariableAddress[x176] : +# 35| r35_2472(glval) = FunctionAddress[~String] : +# 35| v35_2473(void) = Call[~String] : func:r35_2472, this:r35_2471 +# 35| mu35_2474(unknown) = ^CallSideEffect : ~m? +# 35| v35_2475(void) = ^IndirectReadSideEffect[-1] : &:r35_2471, ~m? +# 35| mu35_2476(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2471 +# 35| r35_2477(bool) = Constant[0] : +# 35| v35_2478(void) = ConditionalBranch : r35_2477 #-----| False -> Block 178 #-----| True (back edge) -> Block 177 -# 550| Block 178 -# 550| r550_1(glval) = VariableAddress[x177] : -# 550| mu550_2(String) = Uninitialized[x177] : &:r550_1 -# 550| r550_3(glval) = FunctionAddress[String] : -# 550| v550_4(void) = Call[String] : func:r550_3, this:r550_1 -# 550| mu550_5(unknown) = ^CallSideEffect : ~m? -# 550| mu550_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r550_1 -# 551| r551_1(glval) = VariableAddress[x177] : -# 551| r551_2(glval) = FunctionAddress[~String] : -# 551| v551_3(void) = Call[~String] : func:r551_2, this:r551_1 -# 551| mu551_4(unknown) = ^CallSideEffect : ~m? -# 551| v551_5(void) = ^IndirectReadSideEffect[-1] : &:r551_1, ~m? -# 551| mu551_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r551_1 -# 551| r551_7(bool) = Constant[0] : -# 551| v551_8(void) = ConditionalBranch : r551_7 +# 35| Block 178 +# 35| r35_2479(glval) = VariableAddress[x177] : +# 35| mu35_2480(String) = Uninitialized[x177] : &:r35_2479 +# 35| r35_2481(glval) = FunctionAddress[String] : +# 35| v35_2482(void) = Call[String] : func:r35_2481, this:r35_2479 +# 35| mu35_2483(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2484(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2479 +# 35| r35_2485(glval) = VariableAddress[x177] : +# 35| r35_2486(glval) = FunctionAddress[~String] : +# 35| v35_2487(void) = Call[~String] : func:r35_2486, this:r35_2485 +# 35| mu35_2488(unknown) = ^CallSideEffect : ~m? +# 35| v35_2489(void) = ^IndirectReadSideEffect[-1] : &:r35_2485, ~m? +# 35| mu35_2490(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2485 +# 35| r35_2491(bool) = Constant[0] : +# 35| v35_2492(void) = ConditionalBranch : r35_2491 #-----| False -> Block 179 #-----| True (back edge) -> Block 178 -# 553| Block 179 -# 553| r553_1(glval) = VariableAddress[x178] : -# 553| mu553_2(String) = Uninitialized[x178] : &:r553_1 -# 553| r553_3(glval) = FunctionAddress[String] : -# 553| v553_4(void) = Call[String] : func:r553_3, this:r553_1 -# 553| mu553_5(unknown) = ^CallSideEffect : ~m? -# 553| mu553_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r553_1 -# 554| r554_1(glval) = VariableAddress[x178] : -# 554| r554_2(glval) = FunctionAddress[~String] : -# 554| v554_3(void) = Call[~String] : func:r554_2, this:r554_1 -# 554| mu554_4(unknown) = ^CallSideEffect : ~m? -# 554| v554_5(void) = ^IndirectReadSideEffect[-1] : &:r554_1, ~m? -# 554| mu554_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r554_1 -# 554| r554_7(bool) = Constant[0] : -# 554| v554_8(void) = ConditionalBranch : r554_7 +# 35| Block 179 +# 35| r35_2493(glval) = VariableAddress[x178] : +# 35| mu35_2494(String) = Uninitialized[x178] : &:r35_2493 +# 35| r35_2495(glval) = FunctionAddress[String] : +# 35| v35_2496(void) = Call[String] : func:r35_2495, this:r35_2493 +# 35| mu35_2497(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2498(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2493 +# 35| r35_2499(glval) = VariableAddress[x178] : +# 35| r35_2500(glval) = FunctionAddress[~String] : +# 35| v35_2501(void) = Call[~String] : func:r35_2500, this:r35_2499 +# 35| mu35_2502(unknown) = ^CallSideEffect : ~m? +# 35| v35_2503(void) = ^IndirectReadSideEffect[-1] : &:r35_2499, ~m? +# 35| mu35_2504(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2499 +# 35| r35_2505(bool) = Constant[0] : +# 35| v35_2506(void) = ConditionalBranch : r35_2505 #-----| False -> Block 180 #-----| True (back edge) -> Block 179 -# 556| Block 180 -# 556| r556_1(glval) = VariableAddress[x179] : -# 556| mu556_2(String) = Uninitialized[x179] : &:r556_1 -# 556| r556_3(glval) = FunctionAddress[String] : -# 556| v556_4(void) = Call[String] : func:r556_3, this:r556_1 -# 556| mu556_5(unknown) = ^CallSideEffect : ~m? -# 556| mu556_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r556_1 -# 557| r557_1(glval) = VariableAddress[x179] : -# 557| r557_2(glval) = FunctionAddress[~String] : -# 557| v557_3(void) = Call[~String] : func:r557_2, this:r557_1 -# 557| mu557_4(unknown) = ^CallSideEffect : ~m? -# 557| v557_5(void) = ^IndirectReadSideEffect[-1] : &:r557_1, ~m? -# 557| mu557_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r557_1 -# 557| r557_7(bool) = Constant[0] : -# 557| v557_8(void) = ConditionalBranch : r557_7 +# 35| Block 180 +# 35| r35_2507(glval) = VariableAddress[x179] : +# 35| mu35_2508(String) = Uninitialized[x179] : &:r35_2507 +# 35| r35_2509(glval) = FunctionAddress[String] : +# 35| v35_2510(void) = Call[String] : func:r35_2509, this:r35_2507 +# 35| mu35_2511(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2512(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2507 +# 35| r35_2513(glval) = VariableAddress[x179] : +# 35| r35_2514(glval) = FunctionAddress[~String] : +# 35| v35_2515(void) = Call[~String] : func:r35_2514, this:r35_2513 +# 35| mu35_2516(unknown) = ^CallSideEffect : ~m? +# 35| v35_2517(void) = ^IndirectReadSideEffect[-1] : &:r35_2513, ~m? +# 35| mu35_2518(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2513 +# 35| r35_2519(bool) = Constant[0] : +# 35| v35_2520(void) = ConditionalBranch : r35_2519 #-----| False -> Block 181 #-----| True (back edge) -> Block 180 -# 559| Block 181 -# 559| r559_1(glval) = VariableAddress[x180] : -# 559| mu559_2(String) = Uninitialized[x180] : &:r559_1 -# 559| r559_3(glval) = FunctionAddress[String] : -# 559| v559_4(void) = Call[String] : func:r559_3, this:r559_1 -# 559| mu559_5(unknown) = ^CallSideEffect : ~m? -# 559| mu559_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r559_1 -# 560| r560_1(glval) = VariableAddress[x180] : -# 560| r560_2(glval) = FunctionAddress[~String] : -# 560| v560_3(void) = Call[~String] : func:r560_2, this:r560_1 -# 560| mu560_4(unknown) = ^CallSideEffect : ~m? -# 560| v560_5(void) = ^IndirectReadSideEffect[-1] : &:r560_1, ~m? -# 560| mu560_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r560_1 -# 560| r560_7(bool) = Constant[0] : -# 560| v560_8(void) = ConditionalBranch : r560_7 +# 35| Block 181 +# 35| r35_2521(glval) = VariableAddress[x180] : +# 35| mu35_2522(String) = Uninitialized[x180] : &:r35_2521 +# 35| r35_2523(glval) = FunctionAddress[String] : +# 35| v35_2524(void) = Call[String] : func:r35_2523, this:r35_2521 +# 35| mu35_2525(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2526(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2521 +# 35| r35_2527(glval) = VariableAddress[x180] : +# 35| r35_2528(glval) = FunctionAddress[~String] : +# 35| v35_2529(void) = Call[~String] : func:r35_2528, this:r35_2527 +# 35| mu35_2530(unknown) = ^CallSideEffect : ~m? +# 35| v35_2531(void) = ^IndirectReadSideEffect[-1] : &:r35_2527, ~m? +# 35| mu35_2532(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2527 +# 35| r35_2533(bool) = Constant[0] : +# 35| v35_2534(void) = ConditionalBranch : r35_2533 #-----| False -> Block 182 #-----| True (back edge) -> Block 181 -# 562| Block 182 -# 562| r562_1(glval) = VariableAddress[x181] : -# 562| mu562_2(String) = Uninitialized[x181] : &:r562_1 -# 562| r562_3(glval) = FunctionAddress[String] : -# 562| v562_4(void) = Call[String] : func:r562_3, this:r562_1 -# 562| mu562_5(unknown) = ^CallSideEffect : ~m? -# 562| mu562_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r562_1 -# 563| r563_1(glval) = VariableAddress[x181] : -# 563| r563_2(glval) = FunctionAddress[~String] : -# 563| v563_3(void) = Call[~String] : func:r563_2, this:r563_1 -# 563| mu563_4(unknown) = ^CallSideEffect : ~m? -# 563| v563_5(void) = ^IndirectReadSideEffect[-1] : &:r563_1, ~m? -# 563| mu563_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r563_1 -# 563| r563_7(bool) = Constant[0] : -# 563| v563_8(void) = ConditionalBranch : r563_7 +# 35| Block 182 +# 35| r35_2535(glval) = VariableAddress[x181] : +# 35| mu35_2536(String) = Uninitialized[x181] : &:r35_2535 +# 35| r35_2537(glval) = FunctionAddress[String] : +# 35| v35_2538(void) = Call[String] : func:r35_2537, this:r35_2535 +# 35| mu35_2539(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2540(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2535 +# 35| r35_2541(glval) = VariableAddress[x181] : +# 35| r35_2542(glval) = FunctionAddress[~String] : +# 35| v35_2543(void) = Call[~String] : func:r35_2542, this:r35_2541 +# 35| mu35_2544(unknown) = ^CallSideEffect : ~m? +# 35| v35_2545(void) = ^IndirectReadSideEffect[-1] : &:r35_2541, ~m? +# 35| mu35_2546(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2541 +# 35| r35_2547(bool) = Constant[0] : +# 35| v35_2548(void) = ConditionalBranch : r35_2547 #-----| False -> Block 183 #-----| True (back edge) -> Block 182 -# 565| Block 183 -# 565| r565_1(glval) = VariableAddress[x182] : -# 565| mu565_2(String) = Uninitialized[x182] : &:r565_1 -# 565| r565_3(glval) = FunctionAddress[String] : -# 565| v565_4(void) = Call[String] : func:r565_3, this:r565_1 -# 565| mu565_5(unknown) = ^CallSideEffect : ~m? -# 565| mu565_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r565_1 -# 566| r566_1(glval) = VariableAddress[x182] : -# 566| r566_2(glval) = FunctionAddress[~String] : -# 566| v566_3(void) = Call[~String] : func:r566_2, this:r566_1 -# 566| mu566_4(unknown) = ^CallSideEffect : ~m? -# 566| v566_5(void) = ^IndirectReadSideEffect[-1] : &:r566_1, ~m? -# 566| mu566_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r566_1 -# 566| r566_7(bool) = Constant[0] : -# 566| v566_8(void) = ConditionalBranch : r566_7 +# 35| Block 183 +# 35| r35_2549(glval) = VariableAddress[x182] : +# 35| mu35_2550(String) = Uninitialized[x182] : &:r35_2549 +# 35| r35_2551(glval) = FunctionAddress[String] : +# 35| v35_2552(void) = Call[String] : func:r35_2551, this:r35_2549 +# 35| mu35_2553(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2554(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2549 +# 35| r35_2555(glval) = VariableAddress[x182] : +# 35| r35_2556(glval) = FunctionAddress[~String] : +# 35| v35_2557(void) = Call[~String] : func:r35_2556, this:r35_2555 +# 35| mu35_2558(unknown) = ^CallSideEffect : ~m? +# 35| v35_2559(void) = ^IndirectReadSideEffect[-1] : &:r35_2555, ~m? +# 35| mu35_2560(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2555 +# 35| r35_2561(bool) = Constant[0] : +# 35| v35_2562(void) = ConditionalBranch : r35_2561 #-----| False -> Block 184 #-----| True (back edge) -> Block 183 -# 568| Block 184 -# 568| r568_1(glval) = VariableAddress[x183] : -# 568| mu568_2(String) = Uninitialized[x183] : &:r568_1 -# 568| r568_3(glval) = FunctionAddress[String] : -# 568| v568_4(void) = Call[String] : func:r568_3, this:r568_1 -# 568| mu568_5(unknown) = ^CallSideEffect : ~m? -# 568| mu568_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r568_1 -# 569| r569_1(glval) = VariableAddress[x183] : -# 569| r569_2(glval) = FunctionAddress[~String] : -# 569| v569_3(void) = Call[~String] : func:r569_2, this:r569_1 -# 569| mu569_4(unknown) = ^CallSideEffect : ~m? -# 569| v569_5(void) = ^IndirectReadSideEffect[-1] : &:r569_1, ~m? -# 569| mu569_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r569_1 -# 569| r569_7(bool) = Constant[0] : -# 569| v569_8(void) = ConditionalBranch : r569_7 +# 35| Block 184 +# 35| r35_2563(glval) = VariableAddress[x183] : +# 35| mu35_2564(String) = Uninitialized[x183] : &:r35_2563 +# 35| r35_2565(glval) = FunctionAddress[String] : +# 35| v35_2566(void) = Call[String] : func:r35_2565, this:r35_2563 +# 35| mu35_2567(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2568(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2563 +# 35| r35_2569(glval) = VariableAddress[x183] : +# 35| r35_2570(glval) = FunctionAddress[~String] : +# 35| v35_2571(void) = Call[~String] : func:r35_2570, this:r35_2569 +# 35| mu35_2572(unknown) = ^CallSideEffect : ~m? +# 35| v35_2573(void) = ^IndirectReadSideEffect[-1] : &:r35_2569, ~m? +# 35| mu35_2574(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2569 +# 35| r35_2575(bool) = Constant[0] : +# 35| v35_2576(void) = ConditionalBranch : r35_2575 #-----| False -> Block 185 #-----| True (back edge) -> Block 184 -# 571| Block 185 -# 571| r571_1(glval) = VariableAddress[x184] : -# 571| mu571_2(String) = Uninitialized[x184] : &:r571_1 -# 571| r571_3(glval) = FunctionAddress[String] : -# 571| v571_4(void) = Call[String] : func:r571_3, this:r571_1 -# 571| mu571_5(unknown) = ^CallSideEffect : ~m? -# 571| mu571_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r571_1 -# 572| r572_1(glval) = VariableAddress[x184] : -# 572| r572_2(glval) = FunctionAddress[~String] : -# 572| v572_3(void) = Call[~String] : func:r572_2, this:r572_1 -# 572| mu572_4(unknown) = ^CallSideEffect : ~m? -# 572| v572_5(void) = ^IndirectReadSideEffect[-1] : &:r572_1, ~m? -# 572| mu572_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r572_1 -# 572| r572_7(bool) = Constant[0] : -# 572| v572_8(void) = ConditionalBranch : r572_7 +# 35| Block 185 +# 35| r35_2577(glval) = VariableAddress[x184] : +# 35| mu35_2578(String) = Uninitialized[x184] : &:r35_2577 +# 35| r35_2579(glval) = FunctionAddress[String] : +# 35| v35_2580(void) = Call[String] : func:r35_2579, this:r35_2577 +# 35| mu35_2581(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2582(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2577 +# 35| r35_2583(glval) = VariableAddress[x184] : +# 35| r35_2584(glval) = FunctionAddress[~String] : +# 35| v35_2585(void) = Call[~String] : func:r35_2584, this:r35_2583 +# 35| mu35_2586(unknown) = ^CallSideEffect : ~m? +# 35| v35_2587(void) = ^IndirectReadSideEffect[-1] : &:r35_2583, ~m? +# 35| mu35_2588(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2583 +# 35| r35_2589(bool) = Constant[0] : +# 35| v35_2590(void) = ConditionalBranch : r35_2589 #-----| False -> Block 186 #-----| True (back edge) -> Block 185 -# 574| Block 186 -# 574| r574_1(glval) = VariableAddress[x185] : -# 574| mu574_2(String) = Uninitialized[x185] : &:r574_1 -# 574| r574_3(glval) = FunctionAddress[String] : -# 574| v574_4(void) = Call[String] : func:r574_3, this:r574_1 -# 574| mu574_5(unknown) = ^CallSideEffect : ~m? -# 574| mu574_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r574_1 -# 575| r575_1(glval) = VariableAddress[x185] : -# 575| r575_2(glval) = FunctionAddress[~String] : -# 575| v575_3(void) = Call[~String] : func:r575_2, this:r575_1 -# 575| mu575_4(unknown) = ^CallSideEffect : ~m? -# 575| v575_5(void) = ^IndirectReadSideEffect[-1] : &:r575_1, ~m? -# 575| mu575_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r575_1 -# 575| r575_7(bool) = Constant[0] : -# 575| v575_8(void) = ConditionalBranch : r575_7 +# 35| Block 186 +# 35| r35_2591(glval) = VariableAddress[x185] : +# 35| mu35_2592(String) = Uninitialized[x185] : &:r35_2591 +# 35| r35_2593(glval) = FunctionAddress[String] : +# 35| v35_2594(void) = Call[String] : func:r35_2593, this:r35_2591 +# 35| mu35_2595(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2596(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2591 +# 35| r35_2597(glval) = VariableAddress[x185] : +# 35| r35_2598(glval) = FunctionAddress[~String] : +# 35| v35_2599(void) = Call[~String] : func:r35_2598, this:r35_2597 +# 35| mu35_2600(unknown) = ^CallSideEffect : ~m? +# 35| v35_2601(void) = ^IndirectReadSideEffect[-1] : &:r35_2597, ~m? +# 35| mu35_2602(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2597 +# 35| r35_2603(bool) = Constant[0] : +# 35| v35_2604(void) = ConditionalBranch : r35_2603 #-----| False -> Block 187 #-----| True (back edge) -> Block 186 -# 577| Block 187 -# 577| r577_1(glval) = VariableAddress[x186] : -# 577| mu577_2(String) = Uninitialized[x186] : &:r577_1 -# 577| r577_3(glval) = FunctionAddress[String] : -# 577| v577_4(void) = Call[String] : func:r577_3, this:r577_1 -# 577| mu577_5(unknown) = ^CallSideEffect : ~m? -# 577| mu577_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r577_1 -# 578| r578_1(glval) = VariableAddress[x186] : -# 578| r578_2(glval) = FunctionAddress[~String] : -# 578| v578_3(void) = Call[~String] : func:r578_2, this:r578_1 -# 578| mu578_4(unknown) = ^CallSideEffect : ~m? -# 578| v578_5(void) = ^IndirectReadSideEffect[-1] : &:r578_1, ~m? -# 578| mu578_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r578_1 -# 578| r578_7(bool) = Constant[0] : -# 578| v578_8(void) = ConditionalBranch : r578_7 +# 35| Block 187 +# 35| r35_2605(glval) = VariableAddress[x186] : +# 35| mu35_2606(String) = Uninitialized[x186] : &:r35_2605 +# 35| r35_2607(glval) = FunctionAddress[String] : +# 35| v35_2608(void) = Call[String] : func:r35_2607, this:r35_2605 +# 35| mu35_2609(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2610(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2605 +# 35| r35_2611(glval) = VariableAddress[x186] : +# 35| r35_2612(glval) = FunctionAddress[~String] : +# 35| v35_2613(void) = Call[~String] : func:r35_2612, this:r35_2611 +# 35| mu35_2614(unknown) = ^CallSideEffect : ~m? +# 35| v35_2615(void) = ^IndirectReadSideEffect[-1] : &:r35_2611, ~m? +# 35| mu35_2616(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2611 +# 35| r35_2617(bool) = Constant[0] : +# 35| v35_2618(void) = ConditionalBranch : r35_2617 #-----| False -> Block 188 #-----| True (back edge) -> Block 187 -# 580| Block 188 -# 580| r580_1(glval) = VariableAddress[x187] : -# 580| mu580_2(String) = Uninitialized[x187] : &:r580_1 -# 580| r580_3(glval) = FunctionAddress[String] : -# 580| v580_4(void) = Call[String] : func:r580_3, this:r580_1 -# 580| mu580_5(unknown) = ^CallSideEffect : ~m? -# 580| mu580_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r580_1 -# 581| r581_1(glval) = VariableAddress[x187] : -# 581| r581_2(glval) = FunctionAddress[~String] : -# 581| v581_3(void) = Call[~String] : func:r581_2, this:r581_1 -# 581| mu581_4(unknown) = ^CallSideEffect : ~m? -# 581| v581_5(void) = ^IndirectReadSideEffect[-1] : &:r581_1, ~m? -# 581| mu581_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r581_1 -# 581| r581_7(bool) = Constant[0] : -# 581| v581_8(void) = ConditionalBranch : r581_7 +# 35| Block 188 +# 35| r35_2619(glval) = VariableAddress[x187] : +# 35| mu35_2620(String) = Uninitialized[x187] : &:r35_2619 +# 35| r35_2621(glval) = FunctionAddress[String] : +# 35| v35_2622(void) = Call[String] : func:r35_2621, this:r35_2619 +# 35| mu35_2623(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2624(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2619 +# 35| r35_2625(glval) = VariableAddress[x187] : +# 35| r35_2626(glval) = FunctionAddress[~String] : +# 35| v35_2627(void) = Call[~String] : func:r35_2626, this:r35_2625 +# 35| mu35_2628(unknown) = ^CallSideEffect : ~m? +# 35| v35_2629(void) = ^IndirectReadSideEffect[-1] : &:r35_2625, ~m? +# 35| mu35_2630(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2625 +# 35| r35_2631(bool) = Constant[0] : +# 35| v35_2632(void) = ConditionalBranch : r35_2631 #-----| False -> Block 189 #-----| True (back edge) -> Block 188 -# 583| Block 189 -# 583| r583_1(glval) = VariableAddress[x188] : -# 583| mu583_2(String) = Uninitialized[x188] : &:r583_1 -# 583| r583_3(glval) = FunctionAddress[String] : -# 583| v583_4(void) = Call[String] : func:r583_3, this:r583_1 -# 583| mu583_5(unknown) = ^CallSideEffect : ~m? -# 583| mu583_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r583_1 -# 584| r584_1(glval) = VariableAddress[x188] : -# 584| r584_2(glval) = FunctionAddress[~String] : -# 584| v584_3(void) = Call[~String] : func:r584_2, this:r584_1 -# 584| mu584_4(unknown) = ^CallSideEffect : ~m? -# 584| v584_5(void) = ^IndirectReadSideEffect[-1] : &:r584_1, ~m? -# 584| mu584_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r584_1 -# 584| r584_7(bool) = Constant[0] : -# 584| v584_8(void) = ConditionalBranch : r584_7 +# 35| Block 189 +# 35| r35_2633(glval) = VariableAddress[x188] : +# 35| mu35_2634(String) = Uninitialized[x188] : &:r35_2633 +# 35| r35_2635(glval) = FunctionAddress[String] : +# 35| v35_2636(void) = Call[String] : func:r35_2635, this:r35_2633 +# 35| mu35_2637(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2638(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2633 +# 35| r35_2639(glval) = VariableAddress[x188] : +# 35| r35_2640(glval) = FunctionAddress[~String] : +# 35| v35_2641(void) = Call[~String] : func:r35_2640, this:r35_2639 +# 35| mu35_2642(unknown) = ^CallSideEffect : ~m? +# 35| v35_2643(void) = ^IndirectReadSideEffect[-1] : &:r35_2639, ~m? +# 35| mu35_2644(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2639 +# 35| r35_2645(bool) = Constant[0] : +# 35| v35_2646(void) = ConditionalBranch : r35_2645 #-----| False -> Block 190 #-----| True (back edge) -> Block 189 -# 586| Block 190 -# 586| r586_1(glval) = VariableAddress[x189] : -# 586| mu586_2(String) = Uninitialized[x189] : &:r586_1 -# 586| r586_3(glval) = FunctionAddress[String] : -# 586| v586_4(void) = Call[String] : func:r586_3, this:r586_1 -# 586| mu586_5(unknown) = ^CallSideEffect : ~m? -# 586| mu586_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r586_1 -# 587| r587_1(glval) = VariableAddress[x189] : -# 587| r587_2(glval) = FunctionAddress[~String] : -# 587| v587_3(void) = Call[~String] : func:r587_2, this:r587_1 -# 587| mu587_4(unknown) = ^CallSideEffect : ~m? -# 587| v587_5(void) = ^IndirectReadSideEffect[-1] : &:r587_1, ~m? -# 587| mu587_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r587_1 -# 587| r587_7(bool) = Constant[0] : -# 587| v587_8(void) = ConditionalBranch : r587_7 +# 35| Block 190 +# 35| r35_2647(glval) = VariableAddress[x189] : +# 35| mu35_2648(String) = Uninitialized[x189] : &:r35_2647 +# 35| r35_2649(glval) = FunctionAddress[String] : +# 35| v35_2650(void) = Call[String] : func:r35_2649, this:r35_2647 +# 35| mu35_2651(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2652(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2647 +# 35| r35_2653(glval) = VariableAddress[x189] : +# 35| r35_2654(glval) = FunctionAddress[~String] : +# 35| v35_2655(void) = Call[~String] : func:r35_2654, this:r35_2653 +# 35| mu35_2656(unknown) = ^CallSideEffect : ~m? +# 35| v35_2657(void) = ^IndirectReadSideEffect[-1] : &:r35_2653, ~m? +# 35| mu35_2658(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2653 +# 35| r35_2659(bool) = Constant[0] : +# 35| v35_2660(void) = ConditionalBranch : r35_2659 #-----| False -> Block 191 #-----| True (back edge) -> Block 190 -# 589| Block 191 -# 589| r589_1(glval) = VariableAddress[x190] : -# 589| mu589_2(String) = Uninitialized[x190] : &:r589_1 -# 589| r589_3(glval) = FunctionAddress[String] : -# 589| v589_4(void) = Call[String] : func:r589_3, this:r589_1 -# 589| mu589_5(unknown) = ^CallSideEffect : ~m? -# 589| mu589_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r589_1 -# 590| r590_1(glval) = VariableAddress[x190] : -# 590| r590_2(glval) = FunctionAddress[~String] : -# 590| v590_3(void) = Call[~String] : func:r590_2, this:r590_1 -# 590| mu590_4(unknown) = ^CallSideEffect : ~m? -# 590| v590_5(void) = ^IndirectReadSideEffect[-1] : &:r590_1, ~m? -# 590| mu590_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r590_1 -# 590| r590_7(bool) = Constant[0] : -# 590| v590_8(void) = ConditionalBranch : r590_7 +# 35| Block 191 +# 35| r35_2661(glval) = VariableAddress[x190] : +# 35| mu35_2662(String) = Uninitialized[x190] : &:r35_2661 +# 35| r35_2663(glval) = FunctionAddress[String] : +# 35| v35_2664(void) = Call[String] : func:r35_2663, this:r35_2661 +# 35| mu35_2665(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2666(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2661 +# 35| r35_2667(glval) = VariableAddress[x190] : +# 35| r35_2668(glval) = FunctionAddress[~String] : +# 35| v35_2669(void) = Call[~String] : func:r35_2668, this:r35_2667 +# 35| mu35_2670(unknown) = ^CallSideEffect : ~m? +# 35| v35_2671(void) = ^IndirectReadSideEffect[-1] : &:r35_2667, ~m? +# 35| mu35_2672(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2667 +# 35| r35_2673(bool) = Constant[0] : +# 35| v35_2674(void) = ConditionalBranch : r35_2673 #-----| False -> Block 192 #-----| True (back edge) -> Block 191 -# 592| Block 192 -# 592| r592_1(glval) = VariableAddress[x191] : -# 592| mu592_2(String) = Uninitialized[x191] : &:r592_1 -# 592| r592_3(glval) = FunctionAddress[String] : -# 592| v592_4(void) = Call[String] : func:r592_3, this:r592_1 -# 592| mu592_5(unknown) = ^CallSideEffect : ~m? -# 592| mu592_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r592_1 -# 593| r593_1(glval) = VariableAddress[x191] : -# 593| r593_2(glval) = FunctionAddress[~String] : -# 593| v593_3(void) = Call[~String] : func:r593_2, this:r593_1 -# 593| mu593_4(unknown) = ^CallSideEffect : ~m? -# 593| v593_5(void) = ^IndirectReadSideEffect[-1] : &:r593_1, ~m? -# 593| mu593_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r593_1 -# 593| r593_7(bool) = Constant[0] : -# 593| v593_8(void) = ConditionalBranch : r593_7 +# 35| Block 192 +# 35| r35_2675(glval) = VariableAddress[x191] : +# 35| mu35_2676(String) = Uninitialized[x191] : &:r35_2675 +# 35| r35_2677(glval) = FunctionAddress[String] : +# 35| v35_2678(void) = Call[String] : func:r35_2677, this:r35_2675 +# 35| mu35_2679(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2680(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2675 +# 35| r35_2681(glval) = VariableAddress[x191] : +# 35| r35_2682(glval) = FunctionAddress[~String] : +# 35| v35_2683(void) = Call[~String] : func:r35_2682, this:r35_2681 +# 35| mu35_2684(unknown) = ^CallSideEffect : ~m? +# 35| v35_2685(void) = ^IndirectReadSideEffect[-1] : &:r35_2681, ~m? +# 35| mu35_2686(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2681 +# 35| r35_2687(bool) = Constant[0] : +# 35| v35_2688(void) = ConditionalBranch : r35_2687 #-----| False -> Block 193 #-----| True (back edge) -> Block 192 -# 595| Block 193 -# 595| r595_1(glval) = VariableAddress[x192] : -# 595| mu595_2(String) = Uninitialized[x192] : &:r595_1 -# 595| r595_3(glval) = FunctionAddress[String] : -# 595| v595_4(void) = Call[String] : func:r595_3, this:r595_1 -# 595| mu595_5(unknown) = ^CallSideEffect : ~m? -# 595| mu595_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r595_1 -# 596| r596_1(glval) = VariableAddress[x192] : -# 596| r596_2(glval) = FunctionAddress[~String] : -# 596| v596_3(void) = Call[~String] : func:r596_2, this:r596_1 -# 596| mu596_4(unknown) = ^CallSideEffect : ~m? -# 596| v596_5(void) = ^IndirectReadSideEffect[-1] : &:r596_1, ~m? -# 596| mu596_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r596_1 -# 596| r596_7(bool) = Constant[0] : -# 596| v596_8(void) = ConditionalBranch : r596_7 +# 35| Block 193 +# 35| r35_2689(glval) = VariableAddress[x192] : +# 35| mu35_2690(String) = Uninitialized[x192] : &:r35_2689 +# 35| r35_2691(glval) = FunctionAddress[String] : +# 35| v35_2692(void) = Call[String] : func:r35_2691, this:r35_2689 +# 35| mu35_2693(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2694(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2689 +# 35| r35_2695(glval) = VariableAddress[x192] : +# 35| r35_2696(glval) = FunctionAddress[~String] : +# 35| v35_2697(void) = Call[~String] : func:r35_2696, this:r35_2695 +# 35| mu35_2698(unknown) = ^CallSideEffect : ~m? +# 35| v35_2699(void) = ^IndirectReadSideEffect[-1] : &:r35_2695, ~m? +# 35| mu35_2700(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2695 +# 35| r35_2701(bool) = Constant[0] : +# 35| v35_2702(void) = ConditionalBranch : r35_2701 #-----| False -> Block 194 #-----| True (back edge) -> Block 193 -# 598| Block 194 -# 598| r598_1(glval) = VariableAddress[x193] : -# 598| mu598_2(String) = Uninitialized[x193] : &:r598_1 -# 598| r598_3(glval) = FunctionAddress[String] : -# 598| v598_4(void) = Call[String] : func:r598_3, this:r598_1 -# 598| mu598_5(unknown) = ^CallSideEffect : ~m? -# 598| mu598_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r598_1 -# 599| r599_1(glval) = VariableAddress[x193] : -# 599| r599_2(glval) = FunctionAddress[~String] : -# 599| v599_3(void) = Call[~String] : func:r599_2, this:r599_1 -# 599| mu599_4(unknown) = ^CallSideEffect : ~m? -# 599| v599_5(void) = ^IndirectReadSideEffect[-1] : &:r599_1, ~m? -# 599| mu599_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r599_1 -# 599| r599_7(bool) = Constant[0] : -# 599| v599_8(void) = ConditionalBranch : r599_7 +# 35| Block 194 +# 35| r35_2703(glval) = VariableAddress[x193] : +# 35| mu35_2704(String) = Uninitialized[x193] : &:r35_2703 +# 35| r35_2705(glval) = FunctionAddress[String] : +# 35| v35_2706(void) = Call[String] : func:r35_2705, this:r35_2703 +# 35| mu35_2707(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2708(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2703 +# 35| r35_2709(glval) = VariableAddress[x193] : +# 35| r35_2710(glval) = FunctionAddress[~String] : +# 35| v35_2711(void) = Call[~String] : func:r35_2710, this:r35_2709 +# 35| mu35_2712(unknown) = ^CallSideEffect : ~m? +# 35| v35_2713(void) = ^IndirectReadSideEffect[-1] : &:r35_2709, ~m? +# 35| mu35_2714(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2709 +# 35| r35_2715(bool) = Constant[0] : +# 35| v35_2716(void) = ConditionalBranch : r35_2715 #-----| False -> Block 195 #-----| True (back edge) -> Block 194 -# 601| Block 195 -# 601| r601_1(glval) = VariableAddress[x194] : -# 601| mu601_2(String) = Uninitialized[x194] : &:r601_1 -# 601| r601_3(glval) = FunctionAddress[String] : -# 601| v601_4(void) = Call[String] : func:r601_3, this:r601_1 -# 601| mu601_5(unknown) = ^CallSideEffect : ~m? -# 601| mu601_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r601_1 -# 602| r602_1(glval) = VariableAddress[x194] : -# 602| r602_2(glval) = FunctionAddress[~String] : -# 602| v602_3(void) = Call[~String] : func:r602_2, this:r602_1 -# 602| mu602_4(unknown) = ^CallSideEffect : ~m? -# 602| v602_5(void) = ^IndirectReadSideEffect[-1] : &:r602_1, ~m? -# 602| mu602_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r602_1 -# 602| r602_7(bool) = Constant[0] : -# 602| v602_8(void) = ConditionalBranch : r602_7 +# 35| Block 195 +# 35| r35_2717(glval) = VariableAddress[x194] : +# 35| mu35_2718(String) = Uninitialized[x194] : &:r35_2717 +# 35| r35_2719(glval) = FunctionAddress[String] : +# 35| v35_2720(void) = Call[String] : func:r35_2719, this:r35_2717 +# 35| mu35_2721(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2722(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2717 +# 35| r35_2723(glval) = VariableAddress[x194] : +# 35| r35_2724(glval) = FunctionAddress[~String] : +# 35| v35_2725(void) = Call[~String] : func:r35_2724, this:r35_2723 +# 35| mu35_2726(unknown) = ^CallSideEffect : ~m? +# 35| v35_2727(void) = ^IndirectReadSideEffect[-1] : &:r35_2723, ~m? +# 35| mu35_2728(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2723 +# 35| r35_2729(bool) = Constant[0] : +# 35| v35_2730(void) = ConditionalBranch : r35_2729 #-----| False -> Block 196 #-----| True (back edge) -> Block 195 -# 604| Block 196 -# 604| r604_1(glval) = VariableAddress[x195] : -# 604| mu604_2(String) = Uninitialized[x195] : &:r604_1 -# 604| r604_3(glval) = FunctionAddress[String] : -# 604| v604_4(void) = Call[String] : func:r604_3, this:r604_1 -# 604| mu604_5(unknown) = ^CallSideEffect : ~m? -# 604| mu604_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r604_1 -# 605| r605_1(glval) = VariableAddress[x195] : -# 605| r605_2(glval) = FunctionAddress[~String] : -# 605| v605_3(void) = Call[~String] : func:r605_2, this:r605_1 -# 605| mu605_4(unknown) = ^CallSideEffect : ~m? -# 605| v605_5(void) = ^IndirectReadSideEffect[-1] : &:r605_1, ~m? -# 605| mu605_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r605_1 -# 605| r605_7(bool) = Constant[0] : -# 605| v605_8(void) = ConditionalBranch : r605_7 +# 35| Block 196 +# 35| r35_2731(glval) = VariableAddress[x195] : +# 35| mu35_2732(String) = Uninitialized[x195] : &:r35_2731 +# 35| r35_2733(glval) = FunctionAddress[String] : +# 35| v35_2734(void) = Call[String] : func:r35_2733, this:r35_2731 +# 35| mu35_2735(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2736(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2731 +# 35| r35_2737(glval) = VariableAddress[x195] : +# 35| r35_2738(glval) = FunctionAddress[~String] : +# 35| v35_2739(void) = Call[~String] : func:r35_2738, this:r35_2737 +# 35| mu35_2740(unknown) = ^CallSideEffect : ~m? +# 35| v35_2741(void) = ^IndirectReadSideEffect[-1] : &:r35_2737, ~m? +# 35| mu35_2742(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2737 +# 35| r35_2743(bool) = Constant[0] : +# 35| v35_2744(void) = ConditionalBranch : r35_2743 #-----| False -> Block 197 #-----| True (back edge) -> Block 196 -# 607| Block 197 -# 607| r607_1(glval) = VariableAddress[x196] : -# 607| mu607_2(String) = Uninitialized[x196] : &:r607_1 -# 607| r607_3(glval) = FunctionAddress[String] : -# 607| v607_4(void) = Call[String] : func:r607_3, this:r607_1 -# 607| mu607_5(unknown) = ^CallSideEffect : ~m? -# 607| mu607_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r607_1 -# 608| r608_1(glval) = VariableAddress[x196] : -# 608| r608_2(glval) = FunctionAddress[~String] : -# 608| v608_3(void) = Call[~String] : func:r608_2, this:r608_1 -# 608| mu608_4(unknown) = ^CallSideEffect : ~m? -# 608| v608_5(void) = ^IndirectReadSideEffect[-1] : &:r608_1, ~m? -# 608| mu608_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r608_1 -# 608| r608_7(bool) = Constant[0] : -# 608| v608_8(void) = ConditionalBranch : r608_7 +# 35| Block 197 +# 35| r35_2745(glval) = VariableAddress[x196] : +# 35| mu35_2746(String) = Uninitialized[x196] : &:r35_2745 +# 35| r35_2747(glval) = FunctionAddress[String] : +# 35| v35_2748(void) = Call[String] : func:r35_2747, this:r35_2745 +# 35| mu35_2749(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2750(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2745 +# 35| r35_2751(glval) = VariableAddress[x196] : +# 35| r35_2752(glval) = FunctionAddress[~String] : +# 35| v35_2753(void) = Call[~String] : func:r35_2752, this:r35_2751 +# 35| mu35_2754(unknown) = ^CallSideEffect : ~m? +# 35| v35_2755(void) = ^IndirectReadSideEffect[-1] : &:r35_2751, ~m? +# 35| mu35_2756(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2751 +# 35| r35_2757(bool) = Constant[0] : +# 35| v35_2758(void) = ConditionalBranch : r35_2757 #-----| False -> Block 198 #-----| True (back edge) -> Block 197 -# 610| Block 198 -# 610| r610_1(glval) = VariableAddress[x197] : -# 610| mu610_2(String) = Uninitialized[x197] : &:r610_1 -# 610| r610_3(glval) = FunctionAddress[String] : -# 610| v610_4(void) = Call[String] : func:r610_3, this:r610_1 -# 610| mu610_5(unknown) = ^CallSideEffect : ~m? -# 610| mu610_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r610_1 -# 611| r611_1(glval) = VariableAddress[x197] : -# 611| r611_2(glval) = FunctionAddress[~String] : -# 611| v611_3(void) = Call[~String] : func:r611_2, this:r611_1 -# 611| mu611_4(unknown) = ^CallSideEffect : ~m? -# 611| v611_5(void) = ^IndirectReadSideEffect[-1] : &:r611_1, ~m? -# 611| mu611_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r611_1 -# 611| r611_7(bool) = Constant[0] : -# 611| v611_8(void) = ConditionalBranch : r611_7 +# 35| Block 198 +# 35| r35_2759(glval) = VariableAddress[x197] : +# 35| mu35_2760(String) = Uninitialized[x197] : &:r35_2759 +# 35| r35_2761(glval) = FunctionAddress[String] : +# 35| v35_2762(void) = Call[String] : func:r35_2761, this:r35_2759 +# 35| mu35_2763(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2764(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2759 +# 35| r35_2765(glval) = VariableAddress[x197] : +# 35| r35_2766(glval) = FunctionAddress[~String] : +# 35| v35_2767(void) = Call[~String] : func:r35_2766, this:r35_2765 +# 35| mu35_2768(unknown) = ^CallSideEffect : ~m? +# 35| v35_2769(void) = ^IndirectReadSideEffect[-1] : &:r35_2765, ~m? +# 35| mu35_2770(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2765 +# 35| r35_2771(bool) = Constant[0] : +# 35| v35_2772(void) = ConditionalBranch : r35_2771 #-----| False -> Block 199 #-----| True (back edge) -> Block 198 -# 613| Block 199 -# 613| r613_1(glval) = VariableAddress[x198] : -# 613| mu613_2(String) = Uninitialized[x198] : &:r613_1 -# 613| r613_3(glval) = FunctionAddress[String] : -# 613| v613_4(void) = Call[String] : func:r613_3, this:r613_1 -# 613| mu613_5(unknown) = ^CallSideEffect : ~m? -# 613| mu613_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r613_1 -# 614| r614_1(glval) = VariableAddress[x198] : -# 614| r614_2(glval) = FunctionAddress[~String] : -# 614| v614_3(void) = Call[~String] : func:r614_2, this:r614_1 -# 614| mu614_4(unknown) = ^CallSideEffect : ~m? -# 614| v614_5(void) = ^IndirectReadSideEffect[-1] : &:r614_1, ~m? -# 614| mu614_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r614_1 -# 614| r614_7(bool) = Constant[0] : -# 614| v614_8(void) = ConditionalBranch : r614_7 +# 35| Block 199 +# 35| r35_2773(glval) = VariableAddress[x198] : +# 35| mu35_2774(String) = Uninitialized[x198] : &:r35_2773 +# 35| r35_2775(glval) = FunctionAddress[String] : +# 35| v35_2776(void) = Call[String] : func:r35_2775, this:r35_2773 +# 35| mu35_2777(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2778(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2773 +# 35| r35_2779(glval) = VariableAddress[x198] : +# 35| r35_2780(glval) = FunctionAddress[~String] : +# 35| v35_2781(void) = Call[~String] : func:r35_2780, this:r35_2779 +# 35| mu35_2782(unknown) = ^CallSideEffect : ~m? +# 35| v35_2783(void) = ^IndirectReadSideEffect[-1] : &:r35_2779, ~m? +# 35| mu35_2784(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2779 +# 35| r35_2785(bool) = Constant[0] : +# 35| v35_2786(void) = ConditionalBranch : r35_2785 #-----| False -> Block 200 #-----| True (back edge) -> Block 199 -# 616| Block 200 -# 616| r616_1(glval) = VariableAddress[x199] : -# 616| mu616_2(String) = Uninitialized[x199] : &:r616_1 -# 616| r616_3(glval) = FunctionAddress[String] : -# 616| v616_4(void) = Call[String] : func:r616_3, this:r616_1 -# 616| mu616_5(unknown) = ^CallSideEffect : ~m? -# 616| mu616_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r616_1 -# 617| r617_1(glval) = VariableAddress[x199] : -# 617| r617_2(glval) = FunctionAddress[~String] : -# 617| v617_3(void) = Call[~String] : func:r617_2, this:r617_1 -# 617| mu617_4(unknown) = ^CallSideEffect : ~m? -# 617| v617_5(void) = ^IndirectReadSideEffect[-1] : &:r617_1, ~m? -# 617| mu617_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r617_1 -# 617| r617_7(bool) = Constant[0] : -# 617| v617_8(void) = ConditionalBranch : r617_7 +# 35| Block 200 +# 35| r35_2787(glval) = VariableAddress[x199] : +# 35| mu35_2788(String) = Uninitialized[x199] : &:r35_2787 +# 35| r35_2789(glval) = FunctionAddress[String] : +# 35| v35_2790(void) = Call[String] : func:r35_2789, this:r35_2787 +# 35| mu35_2791(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2792(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2787 +# 35| r35_2793(glval) = VariableAddress[x199] : +# 35| r35_2794(glval) = FunctionAddress[~String] : +# 35| v35_2795(void) = Call[~String] : func:r35_2794, this:r35_2793 +# 35| mu35_2796(unknown) = ^CallSideEffect : ~m? +# 35| v35_2797(void) = ^IndirectReadSideEffect[-1] : &:r35_2793, ~m? +# 35| mu35_2798(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2793 +# 35| r35_2799(bool) = Constant[0] : +# 35| v35_2800(void) = ConditionalBranch : r35_2799 #-----| False -> Block 201 #-----| True (back edge) -> Block 200 -# 619| Block 201 -# 619| r619_1(glval) = VariableAddress[x200] : -# 619| mu619_2(String) = Uninitialized[x200] : &:r619_1 -# 619| r619_3(glval) = FunctionAddress[String] : -# 619| v619_4(void) = Call[String] : func:r619_3, this:r619_1 -# 619| mu619_5(unknown) = ^CallSideEffect : ~m? -# 619| mu619_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r619_1 -# 620| r620_1(glval) = VariableAddress[x200] : -# 620| r620_2(glval) = FunctionAddress[~String] : -# 620| v620_3(void) = Call[~String] : func:r620_2, this:r620_1 -# 620| mu620_4(unknown) = ^CallSideEffect : ~m? -# 620| v620_5(void) = ^IndirectReadSideEffect[-1] : &:r620_1, ~m? -# 620| mu620_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r620_1 -# 620| r620_7(bool) = Constant[0] : -# 620| v620_8(void) = ConditionalBranch : r620_7 +# 35| Block 201 +# 35| r35_2801(glval) = VariableAddress[x200] : +# 35| mu35_2802(String) = Uninitialized[x200] : &:r35_2801 +# 35| r35_2803(glval) = FunctionAddress[String] : +# 35| v35_2804(void) = Call[String] : func:r35_2803, this:r35_2801 +# 35| mu35_2805(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2806(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2801 +# 35| r35_2807(glval) = VariableAddress[x200] : +# 35| r35_2808(glval) = FunctionAddress[~String] : +# 35| v35_2809(void) = Call[~String] : func:r35_2808, this:r35_2807 +# 35| mu35_2810(unknown) = ^CallSideEffect : ~m? +# 35| v35_2811(void) = ^IndirectReadSideEffect[-1] : &:r35_2807, ~m? +# 35| mu35_2812(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2807 +# 35| r35_2813(bool) = Constant[0] : +# 35| v35_2814(void) = ConditionalBranch : r35_2813 #-----| False -> Block 202 #-----| True (back edge) -> Block 201 -# 622| Block 202 -# 622| r622_1(glval) = VariableAddress[x201] : -# 622| mu622_2(String) = Uninitialized[x201] : &:r622_1 -# 622| r622_3(glval) = FunctionAddress[String] : -# 622| v622_4(void) = Call[String] : func:r622_3, this:r622_1 -# 622| mu622_5(unknown) = ^CallSideEffect : ~m? -# 622| mu622_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r622_1 -# 623| r623_1(glval) = VariableAddress[x201] : -# 623| r623_2(glval) = FunctionAddress[~String] : -# 623| v623_3(void) = Call[~String] : func:r623_2, this:r623_1 -# 623| mu623_4(unknown) = ^CallSideEffect : ~m? -# 623| v623_5(void) = ^IndirectReadSideEffect[-1] : &:r623_1, ~m? -# 623| mu623_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r623_1 -# 623| r623_7(bool) = Constant[0] : -# 623| v623_8(void) = ConditionalBranch : r623_7 +# 35| Block 202 +# 35| r35_2815(glval) = VariableAddress[x201] : +# 35| mu35_2816(String) = Uninitialized[x201] : &:r35_2815 +# 35| r35_2817(glval) = FunctionAddress[String] : +# 35| v35_2818(void) = Call[String] : func:r35_2817, this:r35_2815 +# 35| mu35_2819(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2820(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2815 +# 35| r35_2821(glval) = VariableAddress[x201] : +# 35| r35_2822(glval) = FunctionAddress[~String] : +# 35| v35_2823(void) = Call[~String] : func:r35_2822, this:r35_2821 +# 35| mu35_2824(unknown) = ^CallSideEffect : ~m? +# 35| v35_2825(void) = ^IndirectReadSideEffect[-1] : &:r35_2821, ~m? +# 35| mu35_2826(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2821 +# 35| r35_2827(bool) = Constant[0] : +# 35| v35_2828(void) = ConditionalBranch : r35_2827 #-----| False -> Block 203 #-----| True (back edge) -> Block 202 -# 625| Block 203 -# 625| r625_1(glval) = VariableAddress[x202] : -# 625| mu625_2(String) = Uninitialized[x202] : &:r625_1 -# 625| r625_3(glval) = FunctionAddress[String] : -# 625| v625_4(void) = Call[String] : func:r625_3, this:r625_1 -# 625| mu625_5(unknown) = ^CallSideEffect : ~m? -# 625| mu625_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r625_1 -# 626| r626_1(glval) = VariableAddress[x202] : -# 626| r626_2(glval) = FunctionAddress[~String] : -# 626| v626_3(void) = Call[~String] : func:r626_2, this:r626_1 -# 626| mu626_4(unknown) = ^CallSideEffect : ~m? -# 626| v626_5(void) = ^IndirectReadSideEffect[-1] : &:r626_1, ~m? -# 626| mu626_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r626_1 -# 626| r626_7(bool) = Constant[0] : -# 626| v626_8(void) = ConditionalBranch : r626_7 +# 35| Block 203 +# 35| r35_2829(glval) = VariableAddress[x202] : +# 35| mu35_2830(String) = Uninitialized[x202] : &:r35_2829 +# 35| r35_2831(glval) = FunctionAddress[String] : +# 35| v35_2832(void) = Call[String] : func:r35_2831, this:r35_2829 +# 35| mu35_2833(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2834(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2829 +# 35| r35_2835(glval) = VariableAddress[x202] : +# 35| r35_2836(glval) = FunctionAddress[~String] : +# 35| v35_2837(void) = Call[~String] : func:r35_2836, this:r35_2835 +# 35| mu35_2838(unknown) = ^CallSideEffect : ~m? +# 35| v35_2839(void) = ^IndirectReadSideEffect[-1] : &:r35_2835, ~m? +# 35| mu35_2840(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2835 +# 35| r35_2841(bool) = Constant[0] : +# 35| v35_2842(void) = ConditionalBranch : r35_2841 #-----| False -> Block 204 #-----| True (back edge) -> Block 203 -# 628| Block 204 -# 628| r628_1(glval) = VariableAddress[x203] : -# 628| mu628_2(String) = Uninitialized[x203] : &:r628_1 -# 628| r628_3(glval) = FunctionAddress[String] : -# 628| v628_4(void) = Call[String] : func:r628_3, this:r628_1 -# 628| mu628_5(unknown) = ^CallSideEffect : ~m? -# 628| mu628_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r628_1 -# 629| r629_1(glval) = VariableAddress[x203] : -# 629| r629_2(glval) = FunctionAddress[~String] : -# 629| v629_3(void) = Call[~String] : func:r629_2, this:r629_1 -# 629| mu629_4(unknown) = ^CallSideEffect : ~m? -# 629| v629_5(void) = ^IndirectReadSideEffect[-1] : &:r629_1, ~m? -# 629| mu629_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r629_1 -# 629| r629_7(bool) = Constant[0] : -# 629| v629_8(void) = ConditionalBranch : r629_7 +# 35| Block 204 +# 35| r35_2843(glval) = VariableAddress[x203] : +# 35| mu35_2844(String) = Uninitialized[x203] : &:r35_2843 +# 35| r35_2845(glval) = FunctionAddress[String] : +# 35| v35_2846(void) = Call[String] : func:r35_2845, this:r35_2843 +# 35| mu35_2847(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2848(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2843 +# 35| r35_2849(glval) = VariableAddress[x203] : +# 35| r35_2850(glval) = FunctionAddress[~String] : +# 35| v35_2851(void) = Call[~String] : func:r35_2850, this:r35_2849 +# 35| mu35_2852(unknown) = ^CallSideEffect : ~m? +# 35| v35_2853(void) = ^IndirectReadSideEffect[-1] : &:r35_2849, ~m? +# 35| mu35_2854(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2849 +# 35| r35_2855(bool) = Constant[0] : +# 35| v35_2856(void) = ConditionalBranch : r35_2855 #-----| False -> Block 205 #-----| True (back edge) -> Block 204 -# 631| Block 205 -# 631| r631_1(glval) = VariableAddress[x204] : -# 631| mu631_2(String) = Uninitialized[x204] : &:r631_1 -# 631| r631_3(glval) = FunctionAddress[String] : -# 631| v631_4(void) = Call[String] : func:r631_3, this:r631_1 -# 631| mu631_5(unknown) = ^CallSideEffect : ~m? -# 631| mu631_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r631_1 -# 632| r632_1(glval) = VariableAddress[x204] : -# 632| r632_2(glval) = FunctionAddress[~String] : -# 632| v632_3(void) = Call[~String] : func:r632_2, this:r632_1 -# 632| mu632_4(unknown) = ^CallSideEffect : ~m? -# 632| v632_5(void) = ^IndirectReadSideEffect[-1] : &:r632_1, ~m? -# 632| mu632_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r632_1 -# 632| r632_7(bool) = Constant[0] : -# 632| v632_8(void) = ConditionalBranch : r632_7 +# 35| Block 205 +# 35| r35_2857(glval) = VariableAddress[x204] : +# 35| mu35_2858(String) = Uninitialized[x204] : &:r35_2857 +# 35| r35_2859(glval) = FunctionAddress[String] : +# 35| v35_2860(void) = Call[String] : func:r35_2859, this:r35_2857 +# 35| mu35_2861(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2862(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2857 +# 35| r35_2863(glval) = VariableAddress[x204] : +# 35| r35_2864(glval) = FunctionAddress[~String] : +# 35| v35_2865(void) = Call[~String] : func:r35_2864, this:r35_2863 +# 35| mu35_2866(unknown) = ^CallSideEffect : ~m? +# 35| v35_2867(void) = ^IndirectReadSideEffect[-1] : &:r35_2863, ~m? +# 35| mu35_2868(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2863 +# 35| r35_2869(bool) = Constant[0] : +# 35| v35_2870(void) = ConditionalBranch : r35_2869 #-----| False -> Block 206 #-----| True (back edge) -> Block 205 -# 634| Block 206 -# 634| r634_1(glval) = VariableAddress[x205] : -# 634| mu634_2(String) = Uninitialized[x205] : &:r634_1 -# 634| r634_3(glval) = FunctionAddress[String] : -# 634| v634_4(void) = Call[String] : func:r634_3, this:r634_1 -# 634| mu634_5(unknown) = ^CallSideEffect : ~m? -# 634| mu634_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r634_1 -# 635| r635_1(glval) = VariableAddress[x205] : -# 635| r635_2(glval) = FunctionAddress[~String] : -# 635| v635_3(void) = Call[~String] : func:r635_2, this:r635_1 -# 635| mu635_4(unknown) = ^CallSideEffect : ~m? -# 635| v635_5(void) = ^IndirectReadSideEffect[-1] : &:r635_1, ~m? -# 635| mu635_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r635_1 -# 635| r635_7(bool) = Constant[0] : -# 635| v635_8(void) = ConditionalBranch : r635_7 +# 35| Block 206 +# 35| r35_2871(glval) = VariableAddress[x205] : +# 35| mu35_2872(String) = Uninitialized[x205] : &:r35_2871 +# 35| r35_2873(glval) = FunctionAddress[String] : +# 35| v35_2874(void) = Call[String] : func:r35_2873, this:r35_2871 +# 35| mu35_2875(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2876(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2871 +# 35| r35_2877(glval) = VariableAddress[x205] : +# 35| r35_2878(glval) = FunctionAddress[~String] : +# 35| v35_2879(void) = Call[~String] : func:r35_2878, this:r35_2877 +# 35| mu35_2880(unknown) = ^CallSideEffect : ~m? +# 35| v35_2881(void) = ^IndirectReadSideEffect[-1] : &:r35_2877, ~m? +# 35| mu35_2882(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2877 +# 35| r35_2883(bool) = Constant[0] : +# 35| v35_2884(void) = ConditionalBranch : r35_2883 #-----| False -> Block 207 #-----| True (back edge) -> Block 206 -# 637| Block 207 -# 637| r637_1(glval) = VariableAddress[x206] : -# 637| mu637_2(String) = Uninitialized[x206] : &:r637_1 -# 637| r637_3(glval) = FunctionAddress[String] : -# 637| v637_4(void) = Call[String] : func:r637_3, this:r637_1 -# 637| mu637_5(unknown) = ^CallSideEffect : ~m? -# 637| mu637_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r637_1 -# 638| r638_1(glval) = VariableAddress[x206] : -# 638| r638_2(glval) = FunctionAddress[~String] : -# 638| v638_3(void) = Call[~String] : func:r638_2, this:r638_1 -# 638| mu638_4(unknown) = ^CallSideEffect : ~m? -# 638| v638_5(void) = ^IndirectReadSideEffect[-1] : &:r638_1, ~m? -# 638| mu638_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r638_1 -# 638| r638_7(bool) = Constant[0] : -# 638| v638_8(void) = ConditionalBranch : r638_7 +# 35| Block 207 +# 35| r35_2885(glval) = VariableAddress[x206] : +# 35| mu35_2886(String) = Uninitialized[x206] : &:r35_2885 +# 35| r35_2887(glval) = FunctionAddress[String] : +# 35| v35_2888(void) = Call[String] : func:r35_2887, this:r35_2885 +# 35| mu35_2889(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2890(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2885 +# 35| r35_2891(glval) = VariableAddress[x206] : +# 35| r35_2892(glval) = FunctionAddress[~String] : +# 35| v35_2893(void) = Call[~String] : func:r35_2892, this:r35_2891 +# 35| mu35_2894(unknown) = ^CallSideEffect : ~m? +# 35| v35_2895(void) = ^IndirectReadSideEffect[-1] : &:r35_2891, ~m? +# 35| mu35_2896(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2891 +# 35| r35_2897(bool) = Constant[0] : +# 35| v35_2898(void) = ConditionalBranch : r35_2897 #-----| False -> Block 208 #-----| True (back edge) -> Block 207 -# 640| Block 208 -# 640| r640_1(glval) = VariableAddress[x207] : -# 640| mu640_2(String) = Uninitialized[x207] : &:r640_1 -# 640| r640_3(glval) = FunctionAddress[String] : -# 640| v640_4(void) = Call[String] : func:r640_3, this:r640_1 -# 640| mu640_5(unknown) = ^CallSideEffect : ~m? -# 640| mu640_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r640_1 -# 641| r641_1(glval) = VariableAddress[x207] : -# 641| r641_2(glval) = FunctionAddress[~String] : -# 641| v641_3(void) = Call[~String] : func:r641_2, this:r641_1 -# 641| mu641_4(unknown) = ^CallSideEffect : ~m? -# 641| v641_5(void) = ^IndirectReadSideEffect[-1] : &:r641_1, ~m? -# 641| mu641_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r641_1 -# 641| r641_7(bool) = Constant[0] : -# 641| v641_8(void) = ConditionalBranch : r641_7 +# 35| Block 208 +# 35| r35_2899(glval) = VariableAddress[x207] : +# 35| mu35_2900(String) = Uninitialized[x207] : &:r35_2899 +# 35| r35_2901(glval) = FunctionAddress[String] : +# 35| v35_2902(void) = Call[String] : func:r35_2901, this:r35_2899 +# 35| mu35_2903(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2904(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2899 +# 35| r35_2905(glval) = VariableAddress[x207] : +# 35| r35_2906(glval) = FunctionAddress[~String] : +# 35| v35_2907(void) = Call[~String] : func:r35_2906, this:r35_2905 +# 35| mu35_2908(unknown) = ^CallSideEffect : ~m? +# 35| v35_2909(void) = ^IndirectReadSideEffect[-1] : &:r35_2905, ~m? +# 35| mu35_2910(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2905 +# 35| r35_2911(bool) = Constant[0] : +# 35| v35_2912(void) = ConditionalBranch : r35_2911 #-----| False -> Block 209 #-----| True (back edge) -> Block 208 -# 643| Block 209 -# 643| r643_1(glval) = VariableAddress[x208] : -# 643| mu643_2(String) = Uninitialized[x208] : &:r643_1 -# 643| r643_3(glval) = FunctionAddress[String] : -# 643| v643_4(void) = Call[String] : func:r643_3, this:r643_1 -# 643| mu643_5(unknown) = ^CallSideEffect : ~m? -# 643| mu643_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r643_1 -# 644| r644_1(glval) = VariableAddress[x208] : -# 644| r644_2(glval) = FunctionAddress[~String] : -# 644| v644_3(void) = Call[~String] : func:r644_2, this:r644_1 -# 644| mu644_4(unknown) = ^CallSideEffect : ~m? -# 644| v644_5(void) = ^IndirectReadSideEffect[-1] : &:r644_1, ~m? -# 644| mu644_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r644_1 -# 644| r644_7(bool) = Constant[0] : -# 644| v644_8(void) = ConditionalBranch : r644_7 +# 35| Block 209 +# 35| r35_2913(glval) = VariableAddress[x208] : +# 35| mu35_2914(String) = Uninitialized[x208] : &:r35_2913 +# 35| r35_2915(glval) = FunctionAddress[String] : +# 35| v35_2916(void) = Call[String] : func:r35_2915, this:r35_2913 +# 35| mu35_2917(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2918(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2913 +# 35| r35_2919(glval) = VariableAddress[x208] : +# 35| r35_2920(glval) = FunctionAddress[~String] : +# 35| v35_2921(void) = Call[~String] : func:r35_2920, this:r35_2919 +# 35| mu35_2922(unknown) = ^CallSideEffect : ~m? +# 35| v35_2923(void) = ^IndirectReadSideEffect[-1] : &:r35_2919, ~m? +# 35| mu35_2924(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2919 +# 35| r35_2925(bool) = Constant[0] : +# 35| v35_2926(void) = ConditionalBranch : r35_2925 #-----| False -> Block 210 #-----| True (back edge) -> Block 209 -# 646| Block 210 -# 646| r646_1(glval) = VariableAddress[x209] : -# 646| mu646_2(String) = Uninitialized[x209] : &:r646_1 -# 646| r646_3(glval) = FunctionAddress[String] : -# 646| v646_4(void) = Call[String] : func:r646_3, this:r646_1 -# 646| mu646_5(unknown) = ^CallSideEffect : ~m? -# 646| mu646_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r646_1 -# 647| r647_1(glval) = VariableAddress[x209] : -# 647| r647_2(glval) = FunctionAddress[~String] : -# 647| v647_3(void) = Call[~String] : func:r647_2, this:r647_1 -# 647| mu647_4(unknown) = ^CallSideEffect : ~m? -# 647| v647_5(void) = ^IndirectReadSideEffect[-1] : &:r647_1, ~m? -# 647| mu647_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r647_1 -# 647| r647_7(bool) = Constant[0] : -# 647| v647_8(void) = ConditionalBranch : r647_7 +# 35| Block 210 +# 35| r35_2927(glval) = VariableAddress[x209] : +# 35| mu35_2928(String) = Uninitialized[x209] : &:r35_2927 +# 35| r35_2929(glval) = FunctionAddress[String] : +# 35| v35_2930(void) = Call[String] : func:r35_2929, this:r35_2927 +# 35| mu35_2931(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2932(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2927 +# 35| r35_2933(glval) = VariableAddress[x209] : +# 35| r35_2934(glval) = FunctionAddress[~String] : +# 35| v35_2935(void) = Call[~String] : func:r35_2934, this:r35_2933 +# 35| mu35_2936(unknown) = ^CallSideEffect : ~m? +# 35| v35_2937(void) = ^IndirectReadSideEffect[-1] : &:r35_2933, ~m? +# 35| mu35_2938(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2933 +# 35| r35_2939(bool) = Constant[0] : +# 35| v35_2940(void) = ConditionalBranch : r35_2939 #-----| False -> Block 211 #-----| True (back edge) -> Block 210 -# 649| Block 211 -# 649| r649_1(glval) = VariableAddress[x210] : -# 649| mu649_2(String) = Uninitialized[x210] : &:r649_1 -# 649| r649_3(glval) = FunctionAddress[String] : -# 649| v649_4(void) = Call[String] : func:r649_3, this:r649_1 -# 649| mu649_5(unknown) = ^CallSideEffect : ~m? -# 649| mu649_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r649_1 -# 650| r650_1(glval) = VariableAddress[x210] : -# 650| r650_2(glval) = FunctionAddress[~String] : -# 650| v650_3(void) = Call[~String] : func:r650_2, this:r650_1 -# 650| mu650_4(unknown) = ^CallSideEffect : ~m? -# 650| v650_5(void) = ^IndirectReadSideEffect[-1] : &:r650_1, ~m? -# 650| mu650_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r650_1 -# 650| r650_7(bool) = Constant[0] : -# 650| v650_8(void) = ConditionalBranch : r650_7 +# 35| Block 211 +# 35| r35_2941(glval) = VariableAddress[x210] : +# 35| mu35_2942(String) = Uninitialized[x210] : &:r35_2941 +# 35| r35_2943(glval) = FunctionAddress[String] : +# 35| v35_2944(void) = Call[String] : func:r35_2943, this:r35_2941 +# 35| mu35_2945(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2946(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2941 +# 35| r35_2947(glval) = VariableAddress[x210] : +# 35| r35_2948(glval) = FunctionAddress[~String] : +# 35| v35_2949(void) = Call[~String] : func:r35_2948, this:r35_2947 +# 35| mu35_2950(unknown) = ^CallSideEffect : ~m? +# 35| v35_2951(void) = ^IndirectReadSideEffect[-1] : &:r35_2947, ~m? +# 35| mu35_2952(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2947 +# 35| r35_2953(bool) = Constant[0] : +# 35| v35_2954(void) = ConditionalBranch : r35_2953 #-----| False -> Block 212 #-----| True (back edge) -> Block 211 -# 652| Block 212 -# 652| r652_1(glval) = VariableAddress[x211] : -# 652| mu652_2(String) = Uninitialized[x211] : &:r652_1 -# 652| r652_3(glval) = FunctionAddress[String] : -# 652| v652_4(void) = Call[String] : func:r652_3, this:r652_1 -# 652| mu652_5(unknown) = ^CallSideEffect : ~m? -# 652| mu652_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r652_1 -# 653| r653_1(glval) = VariableAddress[x211] : -# 653| r653_2(glval) = FunctionAddress[~String] : -# 653| v653_3(void) = Call[~String] : func:r653_2, this:r653_1 -# 653| mu653_4(unknown) = ^CallSideEffect : ~m? -# 653| v653_5(void) = ^IndirectReadSideEffect[-1] : &:r653_1, ~m? -# 653| mu653_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r653_1 -# 653| r653_7(bool) = Constant[0] : -# 653| v653_8(void) = ConditionalBranch : r653_7 +# 35| Block 212 +# 35| r35_2955(glval) = VariableAddress[x211] : +# 35| mu35_2956(String) = Uninitialized[x211] : &:r35_2955 +# 35| r35_2957(glval) = FunctionAddress[String] : +# 35| v35_2958(void) = Call[String] : func:r35_2957, this:r35_2955 +# 35| mu35_2959(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2960(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2955 +# 35| r35_2961(glval) = VariableAddress[x211] : +# 35| r35_2962(glval) = FunctionAddress[~String] : +# 35| v35_2963(void) = Call[~String] : func:r35_2962, this:r35_2961 +# 35| mu35_2964(unknown) = ^CallSideEffect : ~m? +# 35| v35_2965(void) = ^IndirectReadSideEffect[-1] : &:r35_2961, ~m? +# 35| mu35_2966(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2961 +# 35| r35_2967(bool) = Constant[0] : +# 35| v35_2968(void) = ConditionalBranch : r35_2967 #-----| False -> Block 213 #-----| True (back edge) -> Block 212 -# 655| Block 213 -# 655| r655_1(glval) = VariableAddress[x212] : -# 655| mu655_2(String) = Uninitialized[x212] : &:r655_1 -# 655| r655_3(glval) = FunctionAddress[String] : -# 655| v655_4(void) = Call[String] : func:r655_3, this:r655_1 -# 655| mu655_5(unknown) = ^CallSideEffect : ~m? -# 655| mu655_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r655_1 -# 656| r656_1(glval) = VariableAddress[x212] : -# 656| r656_2(glval) = FunctionAddress[~String] : -# 656| v656_3(void) = Call[~String] : func:r656_2, this:r656_1 -# 656| mu656_4(unknown) = ^CallSideEffect : ~m? -# 656| v656_5(void) = ^IndirectReadSideEffect[-1] : &:r656_1, ~m? -# 656| mu656_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r656_1 -# 656| r656_7(bool) = Constant[0] : -# 656| v656_8(void) = ConditionalBranch : r656_7 +# 35| Block 213 +# 35| r35_2969(glval) = VariableAddress[x212] : +# 35| mu35_2970(String) = Uninitialized[x212] : &:r35_2969 +# 35| r35_2971(glval) = FunctionAddress[String] : +# 35| v35_2972(void) = Call[String] : func:r35_2971, this:r35_2969 +# 35| mu35_2973(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2974(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2969 +# 35| r35_2975(glval) = VariableAddress[x212] : +# 35| r35_2976(glval) = FunctionAddress[~String] : +# 35| v35_2977(void) = Call[~String] : func:r35_2976, this:r35_2975 +# 35| mu35_2978(unknown) = ^CallSideEffect : ~m? +# 35| v35_2979(void) = ^IndirectReadSideEffect[-1] : &:r35_2975, ~m? +# 35| mu35_2980(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2975 +# 35| r35_2981(bool) = Constant[0] : +# 35| v35_2982(void) = ConditionalBranch : r35_2981 #-----| False -> Block 214 #-----| True (back edge) -> Block 213 -# 658| Block 214 -# 658| r658_1(glval) = VariableAddress[x213] : -# 658| mu658_2(String) = Uninitialized[x213] : &:r658_1 -# 658| r658_3(glval) = FunctionAddress[String] : -# 658| v658_4(void) = Call[String] : func:r658_3, this:r658_1 -# 658| mu658_5(unknown) = ^CallSideEffect : ~m? -# 658| mu658_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r658_1 -# 659| r659_1(glval) = VariableAddress[x213] : -# 659| r659_2(glval) = FunctionAddress[~String] : -# 659| v659_3(void) = Call[~String] : func:r659_2, this:r659_1 -# 659| mu659_4(unknown) = ^CallSideEffect : ~m? -# 659| v659_5(void) = ^IndirectReadSideEffect[-1] : &:r659_1, ~m? -# 659| mu659_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r659_1 -# 659| r659_7(bool) = Constant[0] : -# 659| v659_8(void) = ConditionalBranch : r659_7 +# 35| Block 214 +# 35| r35_2983(glval) = VariableAddress[x213] : +# 35| mu35_2984(String) = Uninitialized[x213] : &:r35_2983 +# 35| r35_2985(glval) = FunctionAddress[String] : +# 35| v35_2986(void) = Call[String] : func:r35_2985, this:r35_2983 +# 35| mu35_2987(unknown) = ^CallSideEffect : ~m? +# 35| mu35_2988(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2983 +# 35| r35_2989(glval) = VariableAddress[x213] : +# 35| r35_2990(glval) = FunctionAddress[~String] : +# 35| v35_2991(void) = Call[~String] : func:r35_2990, this:r35_2989 +# 35| mu35_2992(unknown) = ^CallSideEffect : ~m? +# 35| v35_2993(void) = ^IndirectReadSideEffect[-1] : &:r35_2989, ~m? +# 35| mu35_2994(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2989 +# 35| r35_2995(bool) = Constant[0] : +# 35| v35_2996(void) = ConditionalBranch : r35_2995 #-----| False -> Block 215 #-----| True (back edge) -> Block 214 -# 661| Block 215 -# 661| r661_1(glval) = VariableAddress[x214] : -# 661| mu661_2(String) = Uninitialized[x214] : &:r661_1 -# 661| r661_3(glval) = FunctionAddress[String] : -# 661| v661_4(void) = Call[String] : func:r661_3, this:r661_1 -# 661| mu661_5(unknown) = ^CallSideEffect : ~m? -# 661| mu661_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r661_1 -# 662| r662_1(glval) = VariableAddress[x214] : -# 662| r662_2(glval) = FunctionAddress[~String] : -# 662| v662_3(void) = Call[~String] : func:r662_2, this:r662_1 -# 662| mu662_4(unknown) = ^CallSideEffect : ~m? -# 662| v662_5(void) = ^IndirectReadSideEffect[-1] : &:r662_1, ~m? -# 662| mu662_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r662_1 -# 662| r662_7(bool) = Constant[0] : -# 662| v662_8(void) = ConditionalBranch : r662_7 +# 35| Block 215 +# 35| r35_2997(glval) = VariableAddress[x214] : +# 35| mu35_2998(String) = Uninitialized[x214] : &:r35_2997 +# 35| r35_2999(glval) = FunctionAddress[String] : +# 35| v35_3000(void) = Call[String] : func:r35_2999, this:r35_2997 +# 35| mu35_3001(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3002(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_2997 +# 35| r35_3003(glval) = VariableAddress[x214] : +# 35| r35_3004(glval) = FunctionAddress[~String] : +# 35| v35_3005(void) = Call[~String] : func:r35_3004, this:r35_3003 +# 35| mu35_3006(unknown) = ^CallSideEffect : ~m? +# 35| v35_3007(void) = ^IndirectReadSideEffect[-1] : &:r35_3003, ~m? +# 35| mu35_3008(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3003 +# 35| r35_3009(bool) = Constant[0] : +# 35| v35_3010(void) = ConditionalBranch : r35_3009 #-----| False -> Block 216 #-----| True (back edge) -> Block 215 -# 664| Block 216 -# 664| r664_1(glval) = VariableAddress[x215] : -# 664| mu664_2(String) = Uninitialized[x215] : &:r664_1 -# 664| r664_3(glval) = FunctionAddress[String] : -# 664| v664_4(void) = Call[String] : func:r664_3, this:r664_1 -# 664| mu664_5(unknown) = ^CallSideEffect : ~m? -# 664| mu664_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r664_1 -# 665| r665_1(glval) = VariableAddress[x215] : -# 665| r665_2(glval) = FunctionAddress[~String] : -# 665| v665_3(void) = Call[~String] : func:r665_2, this:r665_1 -# 665| mu665_4(unknown) = ^CallSideEffect : ~m? -# 665| v665_5(void) = ^IndirectReadSideEffect[-1] : &:r665_1, ~m? -# 665| mu665_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r665_1 -# 665| r665_7(bool) = Constant[0] : -# 665| v665_8(void) = ConditionalBranch : r665_7 +# 35| Block 216 +# 35| r35_3011(glval) = VariableAddress[x215] : +# 35| mu35_3012(String) = Uninitialized[x215] : &:r35_3011 +# 35| r35_3013(glval) = FunctionAddress[String] : +# 35| v35_3014(void) = Call[String] : func:r35_3013, this:r35_3011 +# 35| mu35_3015(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3016(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3011 +# 35| r35_3017(glval) = VariableAddress[x215] : +# 35| r35_3018(glval) = FunctionAddress[~String] : +# 35| v35_3019(void) = Call[~String] : func:r35_3018, this:r35_3017 +# 35| mu35_3020(unknown) = ^CallSideEffect : ~m? +# 35| v35_3021(void) = ^IndirectReadSideEffect[-1] : &:r35_3017, ~m? +# 35| mu35_3022(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3017 +# 35| r35_3023(bool) = Constant[0] : +# 35| v35_3024(void) = ConditionalBranch : r35_3023 #-----| False -> Block 217 #-----| True (back edge) -> Block 216 -# 667| Block 217 -# 667| r667_1(glval) = VariableAddress[x216] : -# 667| mu667_2(String) = Uninitialized[x216] : &:r667_1 -# 667| r667_3(glval) = FunctionAddress[String] : -# 667| v667_4(void) = Call[String] : func:r667_3, this:r667_1 -# 667| mu667_5(unknown) = ^CallSideEffect : ~m? -# 667| mu667_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r667_1 -# 668| r668_1(glval) = VariableAddress[x216] : -# 668| r668_2(glval) = FunctionAddress[~String] : -# 668| v668_3(void) = Call[~String] : func:r668_2, this:r668_1 -# 668| mu668_4(unknown) = ^CallSideEffect : ~m? -# 668| v668_5(void) = ^IndirectReadSideEffect[-1] : &:r668_1, ~m? -# 668| mu668_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r668_1 -# 668| r668_7(bool) = Constant[0] : -# 668| v668_8(void) = ConditionalBranch : r668_7 +# 35| Block 217 +# 35| r35_3025(glval) = VariableAddress[x216] : +# 35| mu35_3026(String) = Uninitialized[x216] : &:r35_3025 +# 35| r35_3027(glval) = FunctionAddress[String] : +# 35| v35_3028(void) = Call[String] : func:r35_3027, this:r35_3025 +# 35| mu35_3029(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3030(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3025 +# 35| r35_3031(glval) = VariableAddress[x216] : +# 35| r35_3032(glval) = FunctionAddress[~String] : +# 35| v35_3033(void) = Call[~String] : func:r35_3032, this:r35_3031 +# 35| mu35_3034(unknown) = ^CallSideEffect : ~m? +# 35| v35_3035(void) = ^IndirectReadSideEffect[-1] : &:r35_3031, ~m? +# 35| mu35_3036(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3031 +# 35| r35_3037(bool) = Constant[0] : +# 35| v35_3038(void) = ConditionalBranch : r35_3037 #-----| False -> Block 218 #-----| True (back edge) -> Block 217 -# 670| Block 218 -# 670| r670_1(glval) = VariableAddress[x217] : -# 670| mu670_2(String) = Uninitialized[x217] : &:r670_1 -# 670| r670_3(glval) = FunctionAddress[String] : -# 670| v670_4(void) = Call[String] : func:r670_3, this:r670_1 -# 670| mu670_5(unknown) = ^CallSideEffect : ~m? -# 670| mu670_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r670_1 -# 671| r671_1(glval) = VariableAddress[x217] : -# 671| r671_2(glval) = FunctionAddress[~String] : -# 671| v671_3(void) = Call[~String] : func:r671_2, this:r671_1 -# 671| mu671_4(unknown) = ^CallSideEffect : ~m? -# 671| v671_5(void) = ^IndirectReadSideEffect[-1] : &:r671_1, ~m? -# 671| mu671_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r671_1 -# 671| r671_7(bool) = Constant[0] : -# 671| v671_8(void) = ConditionalBranch : r671_7 +# 35| Block 218 +# 35| r35_3039(glval) = VariableAddress[x217] : +# 35| mu35_3040(String) = Uninitialized[x217] : &:r35_3039 +# 35| r35_3041(glval) = FunctionAddress[String] : +# 35| v35_3042(void) = Call[String] : func:r35_3041, this:r35_3039 +# 35| mu35_3043(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3044(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3039 +# 35| r35_3045(glval) = VariableAddress[x217] : +# 35| r35_3046(glval) = FunctionAddress[~String] : +# 35| v35_3047(void) = Call[~String] : func:r35_3046, this:r35_3045 +# 35| mu35_3048(unknown) = ^CallSideEffect : ~m? +# 35| v35_3049(void) = ^IndirectReadSideEffect[-1] : &:r35_3045, ~m? +# 35| mu35_3050(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3045 +# 35| r35_3051(bool) = Constant[0] : +# 35| v35_3052(void) = ConditionalBranch : r35_3051 #-----| False -> Block 219 #-----| True (back edge) -> Block 218 -# 673| Block 219 -# 673| r673_1(glval) = VariableAddress[x218] : -# 673| mu673_2(String) = Uninitialized[x218] : &:r673_1 -# 673| r673_3(glval) = FunctionAddress[String] : -# 673| v673_4(void) = Call[String] : func:r673_3, this:r673_1 -# 673| mu673_5(unknown) = ^CallSideEffect : ~m? -# 673| mu673_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r673_1 -# 674| r674_1(glval) = VariableAddress[x218] : -# 674| r674_2(glval) = FunctionAddress[~String] : -# 674| v674_3(void) = Call[~String] : func:r674_2, this:r674_1 -# 674| mu674_4(unknown) = ^CallSideEffect : ~m? -# 674| v674_5(void) = ^IndirectReadSideEffect[-1] : &:r674_1, ~m? -# 674| mu674_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r674_1 -# 674| r674_7(bool) = Constant[0] : -# 674| v674_8(void) = ConditionalBranch : r674_7 +# 35| Block 219 +# 35| r35_3053(glval) = VariableAddress[x218] : +# 35| mu35_3054(String) = Uninitialized[x218] : &:r35_3053 +# 35| r35_3055(glval) = FunctionAddress[String] : +# 35| v35_3056(void) = Call[String] : func:r35_3055, this:r35_3053 +# 35| mu35_3057(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3058(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3053 +# 35| r35_3059(glval) = VariableAddress[x218] : +# 35| r35_3060(glval) = FunctionAddress[~String] : +# 35| v35_3061(void) = Call[~String] : func:r35_3060, this:r35_3059 +# 35| mu35_3062(unknown) = ^CallSideEffect : ~m? +# 35| v35_3063(void) = ^IndirectReadSideEffect[-1] : &:r35_3059, ~m? +# 35| mu35_3064(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3059 +# 35| r35_3065(bool) = Constant[0] : +# 35| v35_3066(void) = ConditionalBranch : r35_3065 #-----| False -> Block 220 #-----| True (back edge) -> Block 219 -# 676| Block 220 -# 676| r676_1(glval) = VariableAddress[x219] : -# 676| mu676_2(String) = Uninitialized[x219] : &:r676_1 -# 676| r676_3(glval) = FunctionAddress[String] : -# 676| v676_4(void) = Call[String] : func:r676_3, this:r676_1 -# 676| mu676_5(unknown) = ^CallSideEffect : ~m? -# 676| mu676_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r676_1 -# 677| r677_1(glval) = VariableAddress[x219] : -# 677| r677_2(glval) = FunctionAddress[~String] : -# 677| v677_3(void) = Call[~String] : func:r677_2, this:r677_1 -# 677| mu677_4(unknown) = ^CallSideEffect : ~m? -# 677| v677_5(void) = ^IndirectReadSideEffect[-1] : &:r677_1, ~m? -# 677| mu677_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r677_1 -# 677| r677_7(bool) = Constant[0] : -# 677| v677_8(void) = ConditionalBranch : r677_7 +# 35| Block 220 +# 35| r35_3067(glval) = VariableAddress[x219] : +# 35| mu35_3068(String) = Uninitialized[x219] : &:r35_3067 +# 35| r35_3069(glval) = FunctionAddress[String] : +# 35| v35_3070(void) = Call[String] : func:r35_3069, this:r35_3067 +# 35| mu35_3071(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3072(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3067 +# 35| r35_3073(glval) = VariableAddress[x219] : +# 35| r35_3074(glval) = FunctionAddress[~String] : +# 35| v35_3075(void) = Call[~String] : func:r35_3074, this:r35_3073 +# 35| mu35_3076(unknown) = ^CallSideEffect : ~m? +# 35| v35_3077(void) = ^IndirectReadSideEffect[-1] : &:r35_3073, ~m? +# 35| mu35_3078(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3073 +# 35| r35_3079(bool) = Constant[0] : +# 35| v35_3080(void) = ConditionalBranch : r35_3079 #-----| False -> Block 221 #-----| True (back edge) -> Block 220 -# 679| Block 221 -# 679| r679_1(glval) = VariableAddress[x220] : -# 679| mu679_2(String) = Uninitialized[x220] : &:r679_1 -# 679| r679_3(glval) = FunctionAddress[String] : -# 679| v679_4(void) = Call[String] : func:r679_3, this:r679_1 -# 679| mu679_5(unknown) = ^CallSideEffect : ~m? -# 679| mu679_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r679_1 -# 680| r680_1(glval) = VariableAddress[x220] : -# 680| r680_2(glval) = FunctionAddress[~String] : -# 680| v680_3(void) = Call[~String] : func:r680_2, this:r680_1 -# 680| mu680_4(unknown) = ^CallSideEffect : ~m? -# 680| v680_5(void) = ^IndirectReadSideEffect[-1] : &:r680_1, ~m? -# 680| mu680_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r680_1 -# 680| r680_7(bool) = Constant[0] : -# 680| v680_8(void) = ConditionalBranch : r680_7 +# 35| Block 221 +# 35| r35_3081(glval) = VariableAddress[x220] : +# 35| mu35_3082(String) = Uninitialized[x220] : &:r35_3081 +# 35| r35_3083(glval) = FunctionAddress[String] : +# 35| v35_3084(void) = Call[String] : func:r35_3083, this:r35_3081 +# 35| mu35_3085(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3086(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3081 +# 35| r35_3087(glval) = VariableAddress[x220] : +# 35| r35_3088(glval) = FunctionAddress[~String] : +# 35| v35_3089(void) = Call[~String] : func:r35_3088, this:r35_3087 +# 35| mu35_3090(unknown) = ^CallSideEffect : ~m? +# 35| v35_3091(void) = ^IndirectReadSideEffect[-1] : &:r35_3087, ~m? +# 35| mu35_3092(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3087 +# 35| r35_3093(bool) = Constant[0] : +# 35| v35_3094(void) = ConditionalBranch : r35_3093 #-----| False -> Block 222 #-----| True (back edge) -> Block 221 -# 682| Block 222 -# 682| r682_1(glval) = VariableAddress[x221] : -# 682| mu682_2(String) = Uninitialized[x221] : &:r682_1 -# 682| r682_3(glval) = FunctionAddress[String] : -# 682| v682_4(void) = Call[String] : func:r682_3, this:r682_1 -# 682| mu682_5(unknown) = ^CallSideEffect : ~m? -# 682| mu682_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r682_1 -# 683| r683_1(glval) = VariableAddress[x221] : -# 683| r683_2(glval) = FunctionAddress[~String] : -# 683| v683_3(void) = Call[~String] : func:r683_2, this:r683_1 -# 683| mu683_4(unknown) = ^CallSideEffect : ~m? -# 683| v683_5(void) = ^IndirectReadSideEffect[-1] : &:r683_1, ~m? -# 683| mu683_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r683_1 -# 683| r683_7(bool) = Constant[0] : -# 683| v683_8(void) = ConditionalBranch : r683_7 +# 35| Block 222 +# 35| r35_3095(glval) = VariableAddress[x221] : +# 35| mu35_3096(String) = Uninitialized[x221] : &:r35_3095 +# 35| r35_3097(glval) = FunctionAddress[String] : +# 35| v35_3098(void) = Call[String] : func:r35_3097, this:r35_3095 +# 35| mu35_3099(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3100(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3095 +# 35| r35_3101(glval) = VariableAddress[x221] : +# 35| r35_3102(glval) = FunctionAddress[~String] : +# 35| v35_3103(void) = Call[~String] : func:r35_3102, this:r35_3101 +# 35| mu35_3104(unknown) = ^CallSideEffect : ~m? +# 35| v35_3105(void) = ^IndirectReadSideEffect[-1] : &:r35_3101, ~m? +# 35| mu35_3106(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3101 +# 35| r35_3107(bool) = Constant[0] : +# 35| v35_3108(void) = ConditionalBranch : r35_3107 #-----| False -> Block 223 #-----| True (back edge) -> Block 222 -# 685| Block 223 -# 685| r685_1(glval) = VariableAddress[x222] : -# 685| mu685_2(String) = Uninitialized[x222] : &:r685_1 -# 685| r685_3(glval) = FunctionAddress[String] : -# 685| v685_4(void) = Call[String] : func:r685_3, this:r685_1 -# 685| mu685_5(unknown) = ^CallSideEffect : ~m? -# 685| mu685_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r685_1 -# 686| r686_1(glval) = VariableAddress[x222] : -# 686| r686_2(glval) = FunctionAddress[~String] : -# 686| v686_3(void) = Call[~String] : func:r686_2, this:r686_1 -# 686| mu686_4(unknown) = ^CallSideEffect : ~m? -# 686| v686_5(void) = ^IndirectReadSideEffect[-1] : &:r686_1, ~m? -# 686| mu686_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r686_1 -# 686| r686_7(bool) = Constant[0] : -# 686| v686_8(void) = ConditionalBranch : r686_7 +# 35| Block 223 +# 35| r35_3109(glval) = VariableAddress[x222] : +# 35| mu35_3110(String) = Uninitialized[x222] : &:r35_3109 +# 35| r35_3111(glval) = FunctionAddress[String] : +# 35| v35_3112(void) = Call[String] : func:r35_3111, this:r35_3109 +# 35| mu35_3113(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3114(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3109 +# 35| r35_3115(glval) = VariableAddress[x222] : +# 35| r35_3116(glval) = FunctionAddress[~String] : +# 35| v35_3117(void) = Call[~String] : func:r35_3116, this:r35_3115 +# 35| mu35_3118(unknown) = ^CallSideEffect : ~m? +# 35| v35_3119(void) = ^IndirectReadSideEffect[-1] : &:r35_3115, ~m? +# 35| mu35_3120(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3115 +# 35| r35_3121(bool) = Constant[0] : +# 35| v35_3122(void) = ConditionalBranch : r35_3121 #-----| False -> Block 224 #-----| True (back edge) -> Block 223 -# 688| Block 224 -# 688| r688_1(glval) = VariableAddress[x223] : -# 688| mu688_2(String) = Uninitialized[x223] : &:r688_1 -# 688| r688_3(glval) = FunctionAddress[String] : -# 688| v688_4(void) = Call[String] : func:r688_3, this:r688_1 -# 688| mu688_5(unknown) = ^CallSideEffect : ~m? -# 688| mu688_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r688_1 -# 689| r689_1(glval) = VariableAddress[x223] : -# 689| r689_2(glval) = FunctionAddress[~String] : -# 689| v689_3(void) = Call[~String] : func:r689_2, this:r689_1 -# 689| mu689_4(unknown) = ^CallSideEffect : ~m? -# 689| v689_5(void) = ^IndirectReadSideEffect[-1] : &:r689_1, ~m? -# 689| mu689_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r689_1 -# 689| r689_7(bool) = Constant[0] : -# 689| v689_8(void) = ConditionalBranch : r689_7 +# 35| Block 224 +# 35| r35_3123(glval) = VariableAddress[x223] : +# 35| mu35_3124(String) = Uninitialized[x223] : &:r35_3123 +# 35| r35_3125(glval) = FunctionAddress[String] : +# 35| v35_3126(void) = Call[String] : func:r35_3125, this:r35_3123 +# 35| mu35_3127(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3128(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3123 +# 35| r35_3129(glval) = VariableAddress[x223] : +# 35| r35_3130(glval) = FunctionAddress[~String] : +# 35| v35_3131(void) = Call[~String] : func:r35_3130, this:r35_3129 +# 35| mu35_3132(unknown) = ^CallSideEffect : ~m? +# 35| v35_3133(void) = ^IndirectReadSideEffect[-1] : &:r35_3129, ~m? +# 35| mu35_3134(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3129 +# 35| r35_3135(bool) = Constant[0] : +# 35| v35_3136(void) = ConditionalBranch : r35_3135 #-----| False -> Block 225 #-----| True (back edge) -> Block 224 -# 691| Block 225 -# 691| r691_1(glval) = VariableAddress[x224] : -# 691| mu691_2(String) = Uninitialized[x224] : &:r691_1 -# 691| r691_3(glval) = FunctionAddress[String] : -# 691| v691_4(void) = Call[String] : func:r691_3, this:r691_1 -# 691| mu691_5(unknown) = ^CallSideEffect : ~m? -# 691| mu691_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r691_1 -# 692| r692_1(glval) = VariableAddress[x224] : -# 692| r692_2(glval) = FunctionAddress[~String] : -# 692| v692_3(void) = Call[~String] : func:r692_2, this:r692_1 -# 692| mu692_4(unknown) = ^CallSideEffect : ~m? -# 692| v692_5(void) = ^IndirectReadSideEffect[-1] : &:r692_1, ~m? -# 692| mu692_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r692_1 -# 692| r692_7(bool) = Constant[0] : -# 692| v692_8(void) = ConditionalBranch : r692_7 +# 35| Block 225 +# 35| r35_3137(glval) = VariableAddress[x224] : +# 35| mu35_3138(String) = Uninitialized[x224] : &:r35_3137 +# 35| r35_3139(glval) = FunctionAddress[String] : +# 35| v35_3140(void) = Call[String] : func:r35_3139, this:r35_3137 +# 35| mu35_3141(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3142(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3137 +# 35| r35_3143(glval) = VariableAddress[x224] : +# 35| r35_3144(glval) = FunctionAddress[~String] : +# 35| v35_3145(void) = Call[~String] : func:r35_3144, this:r35_3143 +# 35| mu35_3146(unknown) = ^CallSideEffect : ~m? +# 35| v35_3147(void) = ^IndirectReadSideEffect[-1] : &:r35_3143, ~m? +# 35| mu35_3148(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3143 +# 35| r35_3149(bool) = Constant[0] : +# 35| v35_3150(void) = ConditionalBranch : r35_3149 #-----| False -> Block 226 #-----| True (back edge) -> Block 225 -# 694| Block 226 -# 694| r694_1(glval) = VariableAddress[x225] : -# 694| mu694_2(String) = Uninitialized[x225] : &:r694_1 -# 694| r694_3(glval) = FunctionAddress[String] : -# 694| v694_4(void) = Call[String] : func:r694_3, this:r694_1 -# 694| mu694_5(unknown) = ^CallSideEffect : ~m? -# 694| mu694_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r694_1 -# 695| r695_1(glval) = VariableAddress[x225] : -# 695| r695_2(glval) = FunctionAddress[~String] : -# 695| v695_3(void) = Call[~String] : func:r695_2, this:r695_1 -# 695| mu695_4(unknown) = ^CallSideEffect : ~m? -# 695| v695_5(void) = ^IndirectReadSideEffect[-1] : &:r695_1, ~m? -# 695| mu695_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r695_1 -# 695| r695_7(bool) = Constant[0] : -# 695| v695_8(void) = ConditionalBranch : r695_7 +# 35| Block 226 +# 35| r35_3151(glval) = VariableAddress[x225] : +# 35| mu35_3152(String) = Uninitialized[x225] : &:r35_3151 +# 35| r35_3153(glval) = FunctionAddress[String] : +# 35| v35_3154(void) = Call[String] : func:r35_3153, this:r35_3151 +# 35| mu35_3155(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3156(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3151 +# 35| r35_3157(glval) = VariableAddress[x225] : +# 35| r35_3158(glval) = FunctionAddress[~String] : +# 35| v35_3159(void) = Call[~String] : func:r35_3158, this:r35_3157 +# 35| mu35_3160(unknown) = ^CallSideEffect : ~m? +# 35| v35_3161(void) = ^IndirectReadSideEffect[-1] : &:r35_3157, ~m? +# 35| mu35_3162(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3157 +# 35| r35_3163(bool) = Constant[0] : +# 35| v35_3164(void) = ConditionalBranch : r35_3163 #-----| False -> Block 227 #-----| True (back edge) -> Block 226 -# 697| Block 227 -# 697| r697_1(glval) = VariableAddress[x226] : -# 697| mu697_2(String) = Uninitialized[x226] : &:r697_1 -# 697| r697_3(glval) = FunctionAddress[String] : -# 697| v697_4(void) = Call[String] : func:r697_3, this:r697_1 -# 697| mu697_5(unknown) = ^CallSideEffect : ~m? -# 697| mu697_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r697_1 -# 698| r698_1(glval) = VariableAddress[x226] : -# 698| r698_2(glval) = FunctionAddress[~String] : -# 698| v698_3(void) = Call[~String] : func:r698_2, this:r698_1 -# 698| mu698_4(unknown) = ^CallSideEffect : ~m? -# 698| v698_5(void) = ^IndirectReadSideEffect[-1] : &:r698_1, ~m? -# 698| mu698_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r698_1 -# 698| r698_7(bool) = Constant[0] : -# 698| v698_8(void) = ConditionalBranch : r698_7 +# 35| Block 227 +# 35| r35_3165(glval) = VariableAddress[x226] : +# 35| mu35_3166(String) = Uninitialized[x226] : &:r35_3165 +# 35| r35_3167(glval) = FunctionAddress[String] : +# 35| v35_3168(void) = Call[String] : func:r35_3167, this:r35_3165 +# 35| mu35_3169(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3170(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3165 +# 35| r35_3171(glval) = VariableAddress[x226] : +# 35| r35_3172(glval) = FunctionAddress[~String] : +# 35| v35_3173(void) = Call[~String] : func:r35_3172, this:r35_3171 +# 35| mu35_3174(unknown) = ^CallSideEffect : ~m? +# 35| v35_3175(void) = ^IndirectReadSideEffect[-1] : &:r35_3171, ~m? +# 35| mu35_3176(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3171 +# 35| r35_3177(bool) = Constant[0] : +# 35| v35_3178(void) = ConditionalBranch : r35_3177 #-----| False -> Block 228 #-----| True (back edge) -> Block 227 -# 700| Block 228 -# 700| r700_1(glval) = VariableAddress[x227] : -# 700| mu700_2(String) = Uninitialized[x227] : &:r700_1 -# 700| r700_3(glval) = FunctionAddress[String] : -# 700| v700_4(void) = Call[String] : func:r700_3, this:r700_1 -# 700| mu700_5(unknown) = ^CallSideEffect : ~m? -# 700| mu700_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r700_1 -# 701| r701_1(glval) = VariableAddress[x227] : -# 701| r701_2(glval) = FunctionAddress[~String] : -# 701| v701_3(void) = Call[~String] : func:r701_2, this:r701_1 -# 701| mu701_4(unknown) = ^CallSideEffect : ~m? -# 701| v701_5(void) = ^IndirectReadSideEffect[-1] : &:r701_1, ~m? -# 701| mu701_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r701_1 -# 701| r701_7(bool) = Constant[0] : -# 701| v701_8(void) = ConditionalBranch : r701_7 +# 35| Block 228 +# 35| r35_3179(glval) = VariableAddress[x227] : +# 35| mu35_3180(String) = Uninitialized[x227] : &:r35_3179 +# 35| r35_3181(glval) = FunctionAddress[String] : +# 35| v35_3182(void) = Call[String] : func:r35_3181, this:r35_3179 +# 35| mu35_3183(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3184(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3179 +# 35| r35_3185(glval) = VariableAddress[x227] : +# 35| r35_3186(glval) = FunctionAddress[~String] : +# 35| v35_3187(void) = Call[~String] : func:r35_3186, this:r35_3185 +# 35| mu35_3188(unknown) = ^CallSideEffect : ~m? +# 35| v35_3189(void) = ^IndirectReadSideEffect[-1] : &:r35_3185, ~m? +# 35| mu35_3190(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3185 +# 35| r35_3191(bool) = Constant[0] : +# 35| v35_3192(void) = ConditionalBranch : r35_3191 #-----| False -> Block 229 #-----| True (back edge) -> Block 228 -# 703| Block 229 -# 703| r703_1(glval) = VariableAddress[x228] : -# 703| mu703_2(String) = Uninitialized[x228] : &:r703_1 -# 703| r703_3(glval) = FunctionAddress[String] : -# 703| v703_4(void) = Call[String] : func:r703_3, this:r703_1 -# 703| mu703_5(unknown) = ^CallSideEffect : ~m? -# 703| mu703_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r703_1 -# 704| r704_1(glval) = VariableAddress[x228] : -# 704| r704_2(glval) = FunctionAddress[~String] : -# 704| v704_3(void) = Call[~String] : func:r704_2, this:r704_1 -# 704| mu704_4(unknown) = ^CallSideEffect : ~m? -# 704| v704_5(void) = ^IndirectReadSideEffect[-1] : &:r704_1, ~m? -# 704| mu704_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r704_1 -# 704| r704_7(bool) = Constant[0] : -# 704| v704_8(void) = ConditionalBranch : r704_7 +# 35| Block 229 +# 35| r35_3193(glval) = VariableAddress[x228] : +# 35| mu35_3194(String) = Uninitialized[x228] : &:r35_3193 +# 35| r35_3195(glval) = FunctionAddress[String] : +# 35| v35_3196(void) = Call[String] : func:r35_3195, this:r35_3193 +# 35| mu35_3197(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3198(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3193 +# 35| r35_3199(glval) = VariableAddress[x228] : +# 35| r35_3200(glval) = FunctionAddress[~String] : +# 35| v35_3201(void) = Call[~String] : func:r35_3200, this:r35_3199 +# 35| mu35_3202(unknown) = ^CallSideEffect : ~m? +# 35| v35_3203(void) = ^IndirectReadSideEffect[-1] : &:r35_3199, ~m? +# 35| mu35_3204(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3199 +# 35| r35_3205(bool) = Constant[0] : +# 35| v35_3206(void) = ConditionalBranch : r35_3205 #-----| False -> Block 230 #-----| True (back edge) -> Block 229 -# 706| Block 230 -# 706| r706_1(glval) = VariableAddress[x229] : -# 706| mu706_2(String) = Uninitialized[x229] : &:r706_1 -# 706| r706_3(glval) = FunctionAddress[String] : -# 706| v706_4(void) = Call[String] : func:r706_3, this:r706_1 -# 706| mu706_5(unknown) = ^CallSideEffect : ~m? -# 706| mu706_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r706_1 -# 707| r707_1(glval) = VariableAddress[x229] : -# 707| r707_2(glval) = FunctionAddress[~String] : -# 707| v707_3(void) = Call[~String] : func:r707_2, this:r707_1 -# 707| mu707_4(unknown) = ^CallSideEffect : ~m? -# 707| v707_5(void) = ^IndirectReadSideEffect[-1] : &:r707_1, ~m? -# 707| mu707_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r707_1 -# 707| r707_7(bool) = Constant[0] : -# 707| v707_8(void) = ConditionalBranch : r707_7 +# 35| Block 230 +# 35| r35_3207(glval) = VariableAddress[x229] : +# 35| mu35_3208(String) = Uninitialized[x229] : &:r35_3207 +# 35| r35_3209(glval) = FunctionAddress[String] : +# 35| v35_3210(void) = Call[String] : func:r35_3209, this:r35_3207 +# 35| mu35_3211(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3212(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3207 +# 35| r35_3213(glval) = VariableAddress[x229] : +# 35| r35_3214(glval) = FunctionAddress[~String] : +# 35| v35_3215(void) = Call[~String] : func:r35_3214, this:r35_3213 +# 35| mu35_3216(unknown) = ^CallSideEffect : ~m? +# 35| v35_3217(void) = ^IndirectReadSideEffect[-1] : &:r35_3213, ~m? +# 35| mu35_3218(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3213 +# 35| r35_3219(bool) = Constant[0] : +# 35| v35_3220(void) = ConditionalBranch : r35_3219 #-----| False -> Block 231 #-----| True (back edge) -> Block 230 -# 709| Block 231 -# 709| r709_1(glval) = VariableAddress[x230] : -# 709| mu709_2(String) = Uninitialized[x230] : &:r709_1 -# 709| r709_3(glval) = FunctionAddress[String] : -# 709| v709_4(void) = Call[String] : func:r709_3, this:r709_1 -# 709| mu709_5(unknown) = ^CallSideEffect : ~m? -# 709| mu709_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r709_1 -# 710| r710_1(glval) = VariableAddress[x230] : -# 710| r710_2(glval) = FunctionAddress[~String] : -# 710| v710_3(void) = Call[~String] : func:r710_2, this:r710_1 -# 710| mu710_4(unknown) = ^CallSideEffect : ~m? -# 710| v710_5(void) = ^IndirectReadSideEffect[-1] : &:r710_1, ~m? -# 710| mu710_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r710_1 -# 710| r710_7(bool) = Constant[0] : -# 710| v710_8(void) = ConditionalBranch : r710_7 +# 35| Block 231 +# 35| r35_3221(glval) = VariableAddress[x230] : +# 35| mu35_3222(String) = Uninitialized[x230] : &:r35_3221 +# 35| r35_3223(glval) = FunctionAddress[String] : +# 35| v35_3224(void) = Call[String] : func:r35_3223, this:r35_3221 +# 35| mu35_3225(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3226(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3221 +# 35| r35_3227(glval) = VariableAddress[x230] : +# 35| r35_3228(glval) = FunctionAddress[~String] : +# 35| v35_3229(void) = Call[~String] : func:r35_3228, this:r35_3227 +# 35| mu35_3230(unknown) = ^CallSideEffect : ~m? +# 35| v35_3231(void) = ^IndirectReadSideEffect[-1] : &:r35_3227, ~m? +# 35| mu35_3232(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3227 +# 35| r35_3233(bool) = Constant[0] : +# 35| v35_3234(void) = ConditionalBranch : r35_3233 #-----| False -> Block 232 #-----| True (back edge) -> Block 231 -# 712| Block 232 -# 712| r712_1(glval) = VariableAddress[x231] : -# 712| mu712_2(String) = Uninitialized[x231] : &:r712_1 -# 712| r712_3(glval) = FunctionAddress[String] : -# 712| v712_4(void) = Call[String] : func:r712_3, this:r712_1 -# 712| mu712_5(unknown) = ^CallSideEffect : ~m? -# 712| mu712_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r712_1 -# 713| r713_1(glval) = VariableAddress[x231] : -# 713| r713_2(glval) = FunctionAddress[~String] : -# 713| v713_3(void) = Call[~String] : func:r713_2, this:r713_1 -# 713| mu713_4(unknown) = ^CallSideEffect : ~m? -# 713| v713_5(void) = ^IndirectReadSideEffect[-1] : &:r713_1, ~m? -# 713| mu713_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r713_1 -# 713| r713_7(bool) = Constant[0] : -# 713| v713_8(void) = ConditionalBranch : r713_7 +# 35| Block 232 +# 35| r35_3235(glval) = VariableAddress[x231] : +# 35| mu35_3236(String) = Uninitialized[x231] : &:r35_3235 +# 35| r35_3237(glval) = FunctionAddress[String] : +# 35| v35_3238(void) = Call[String] : func:r35_3237, this:r35_3235 +# 35| mu35_3239(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3240(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3235 +# 35| r35_3241(glval) = VariableAddress[x231] : +# 35| r35_3242(glval) = FunctionAddress[~String] : +# 35| v35_3243(void) = Call[~String] : func:r35_3242, this:r35_3241 +# 35| mu35_3244(unknown) = ^CallSideEffect : ~m? +# 35| v35_3245(void) = ^IndirectReadSideEffect[-1] : &:r35_3241, ~m? +# 35| mu35_3246(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3241 +# 35| r35_3247(bool) = Constant[0] : +# 35| v35_3248(void) = ConditionalBranch : r35_3247 #-----| False -> Block 233 #-----| True (back edge) -> Block 232 -# 715| Block 233 -# 715| r715_1(glval) = VariableAddress[x232] : -# 715| mu715_2(String) = Uninitialized[x232] : &:r715_1 -# 715| r715_3(glval) = FunctionAddress[String] : -# 715| v715_4(void) = Call[String] : func:r715_3, this:r715_1 -# 715| mu715_5(unknown) = ^CallSideEffect : ~m? -# 715| mu715_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r715_1 -# 716| r716_1(glval) = VariableAddress[x232] : -# 716| r716_2(glval) = FunctionAddress[~String] : -# 716| v716_3(void) = Call[~String] : func:r716_2, this:r716_1 -# 716| mu716_4(unknown) = ^CallSideEffect : ~m? -# 716| v716_5(void) = ^IndirectReadSideEffect[-1] : &:r716_1, ~m? -# 716| mu716_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r716_1 -# 716| r716_7(bool) = Constant[0] : -# 716| v716_8(void) = ConditionalBranch : r716_7 +# 35| Block 233 +# 35| r35_3249(glval) = VariableAddress[x232] : +# 35| mu35_3250(String) = Uninitialized[x232] : &:r35_3249 +# 35| r35_3251(glval) = FunctionAddress[String] : +# 35| v35_3252(void) = Call[String] : func:r35_3251, this:r35_3249 +# 35| mu35_3253(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3254(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3249 +# 35| r35_3255(glval) = VariableAddress[x232] : +# 35| r35_3256(glval) = FunctionAddress[~String] : +# 35| v35_3257(void) = Call[~String] : func:r35_3256, this:r35_3255 +# 35| mu35_3258(unknown) = ^CallSideEffect : ~m? +# 35| v35_3259(void) = ^IndirectReadSideEffect[-1] : &:r35_3255, ~m? +# 35| mu35_3260(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3255 +# 35| r35_3261(bool) = Constant[0] : +# 35| v35_3262(void) = ConditionalBranch : r35_3261 #-----| False -> Block 234 #-----| True (back edge) -> Block 233 -# 718| Block 234 -# 718| r718_1(glval) = VariableAddress[x233] : -# 718| mu718_2(String) = Uninitialized[x233] : &:r718_1 -# 718| r718_3(glval) = FunctionAddress[String] : -# 718| v718_4(void) = Call[String] : func:r718_3, this:r718_1 -# 718| mu718_5(unknown) = ^CallSideEffect : ~m? -# 718| mu718_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r718_1 -# 719| r719_1(glval) = VariableAddress[x233] : -# 719| r719_2(glval) = FunctionAddress[~String] : -# 719| v719_3(void) = Call[~String] : func:r719_2, this:r719_1 -# 719| mu719_4(unknown) = ^CallSideEffect : ~m? -# 719| v719_5(void) = ^IndirectReadSideEffect[-1] : &:r719_1, ~m? -# 719| mu719_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r719_1 -# 719| r719_7(bool) = Constant[0] : -# 719| v719_8(void) = ConditionalBranch : r719_7 +# 35| Block 234 +# 35| r35_3263(glval) = VariableAddress[x233] : +# 35| mu35_3264(String) = Uninitialized[x233] : &:r35_3263 +# 35| r35_3265(glval) = FunctionAddress[String] : +# 35| v35_3266(void) = Call[String] : func:r35_3265, this:r35_3263 +# 35| mu35_3267(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3268(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3263 +# 35| r35_3269(glval) = VariableAddress[x233] : +# 35| r35_3270(glval) = FunctionAddress[~String] : +# 35| v35_3271(void) = Call[~String] : func:r35_3270, this:r35_3269 +# 35| mu35_3272(unknown) = ^CallSideEffect : ~m? +# 35| v35_3273(void) = ^IndirectReadSideEffect[-1] : &:r35_3269, ~m? +# 35| mu35_3274(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3269 +# 35| r35_3275(bool) = Constant[0] : +# 35| v35_3276(void) = ConditionalBranch : r35_3275 #-----| False -> Block 235 #-----| True (back edge) -> Block 234 -# 721| Block 235 -# 721| r721_1(glval) = VariableAddress[x234] : -# 721| mu721_2(String) = Uninitialized[x234] : &:r721_1 -# 721| r721_3(glval) = FunctionAddress[String] : -# 721| v721_4(void) = Call[String] : func:r721_3, this:r721_1 -# 721| mu721_5(unknown) = ^CallSideEffect : ~m? -# 721| mu721_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r721_1 -# 722| r722_1(glval) = VariableAddress[x234] : -# 722| r722_2(glval) = FunctionAddress[~String] : -# 722| v722_3(void) = Call[~String] : func:r722_2, this:r722_1 -# 722| mu722_4(unknown) = ^CallSideEffect : ~m? -# 722| v722_5(void) = ^IndirectReadSideEffect[-1] : &:r722_1, ~m? -# 722| mu722_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r722_1 -# 722| r722_7(bool) = Constant[0] : -# 722| v722_8(void) = ConditionalBranch : r722_7 +# 35| Block 235 +# 35| r35_3277(glval) = VariableAddress[x234] : +# 35| mu35_3278(String) = Uninitialized[x234] : &:r35_3277 +# 35| r35_3279(glval) = FunctionAddress[String] : +# 35| v35_3280(void) = Call[String] : func:r35_3279, this:r35_3277 +# 35| mu35_3281(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3282(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3277 +# 35| r35_3283(glval) = VariableAddress[x234] : +# 35| r35_3284(glval) = FunctionAddress[~String] : +# 35| v35_3285(void) = Call[~String] : func:r35_3284, this:r35_3283 +# 35| mu35_3286(unknown) = ^CallSideEffect : ~m? +# 35| v35_3287(void) = ^IndirectReadSideEffect[-1] : &:r35_3283, ~m? +# 35| mu35_3288(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3283 +# 35| r35_3289(bool) = Constant[0] : +# 35| v35_3290(void) = ConditionalBranch : r35_3289 #-----| False -> Block 236 #-----| True (back edge) -> Block 235 -# 724| Block 236 -# 724| r724_1(glval) = VariableAddress[x235] : -# 724| mu724_2(String) = Uninitialized[x235] : &:r724_1 -# 724| r724_3(glval) = FunctionAddress[String] : -# 724| v724_4(void) = Call[String] : func:r724_3, this:r724_1 -# 724| mu724_5(unknown) = ^CallSideEffect : ~m? -# 724| mu724_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r724_1 -# 725| r725_1(glval) = VariableAddress[x235] : -# 725| r725_2(glval) = FunctionAddress[~String] : -# 725| v725_3(void) = Call[~String] : func:r725_2, this:r725_1 -# 725| mu725_4(unknown) = ^CallSideEffect : ~m? -# 725| v725_5(void) = ^IndirectReadSideEffect[-1] : &:r725_1, ~m? -# 725| mu725_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r725_1 -# 725| r725_7(bool) = Constant[0] : -# 725| v725_8(void) = ConditionalBranch : r725_7 +# 35| Block 236 +# 35| r35_3291(glval) = VariableAddress[x235] : +# 35| mu35_3292(String) = Uninitialized[x235] : &:r35_3291 +# 35| r35_3293(glval) = FunctionAddress[String] : +# 35| v35_3294(void) = Call[String] : func:r35_3293, this:r35_3291 +# 35| mu35_3295(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3296(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3291 +# 35| r35_3297(glval) = VariableAddress[x235] : +# 35| r35_3298(glval) = FunctionAddress[~String] : +# 35| v35_3299(void) = Call[~String] : func:r35_3298, this:r35_3297 +# 35| mu35_3300(unknown) = ^CallSideEffect : ~m? +# 35| v35_3301(void) = ^IndirectReadSideEffect[-1] : &:r35_3297, ~m? +# 35| mu35_3302(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3297 +# 35| r35_3303(bool) = Constant[0] : +# 35| v35_3304(void) = ConditionalBranch : r35_3303 #-----| False -> Block 237 #-----| True (back edge) -> Block 236 -# 727| Block 237 -# 727| r727_1(glval) = VariableAddress[x236] : -# 727| mu727_2(String) = Uninitialized[x236] : &:r727_1 -# 727| r727_3(glval) = FunctionAddress[String] : -# 727| v727_4(void) = Call[String] : func:r727_3, this:r727_1 -# 727| mu727_5(unknown) = ^CallSideEffect : ~m? -# 727| mu727_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r727_1 -# 728| r728_1(glval) = VariableAddress[x236] : -# 728| r728_2(glval) = FunctionAddress[~String] : -# 728| v728_3(void) = Call[~String] : func:r728_2, this:r728_1 -# 728| mu728_4(unknown) = ^CallSideEffect : ~m? -# 728| v728_5(void) = ^IndirectReadSideEffect[-1] : &:r728_1, ~m? -# 728| mu728_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r728_1 -# 728| r728_7(bool) = Constant[0] : -# 728| v728_8(void) = ConditionalBranch : r728_7 +# 35| Block 237 +# 35| r35_3305(glval) = VariableAddress[x236] : +# 35| mu35_3306(String) = Uninitialized[x236] : &:r35_3305 +# 35| r35_3307(glval) = FunctionAddress[String] : +# 35| v35_3308(void) = Call[String] : func:r35_3307, this:r35_3305 +# 35| mu35_3309(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3310(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3305 +# 35| r35_3311(glval) = VariableAddress[x236] : +# 35| r35_3312(glval) = FunctionAddress[~String] : +# 35| v35_3313(void) = Call[~String] : func:r35_3312, this:r35_3311 +# 35| mu35_3314(unknown) = ^CallSideEffect : ~m? +# 35| v35_3315(void) = ^IndirectReadSideEffect[-1] : &:r35_3311, ~m? +# 35| mu35_3316(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3311 +# 35| r35_3317(bool) = Constant[0] : +# 35| v35_3318(void) = ConditionalBranch : r35_3317 #-----| False -> Block 238 #-----| True (back edge) -> Block 237 -# 730| Block 238 -# 730| r730_1(glval) = VariableAddress[x237] : -# 730| mu730_2(String) = Uninitialized[x237] : &:r730_1 -# 730| r730_3(glval) = FunctionAddress[String] : -# 730| v730_4(void) = Call[String] : func:r730_3, this:r730_1 -# 730| mu730_5(unknown) = ^CallSideEffect : ~m? -# 730| mu730_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r730_1 -# 731| r731_1(glval) = VariableAddress[x237] : -# 731| r731_2(glval) = FunctionAddress[~String] : -# 731| v731_3(void) = Call[~String] : func:r731_2, this:r731_1 -# 731| mu731_4(unknown) = ^CallSideEffect : ~m? -# 731| v731_5(void) = ^IndirectReadSideEffect[-1] : &:r731_1, ~m? -# 731| mu731_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r731_1 -# 731| r731_7(bool) = Constant[0] : -# 731| v731_8(void) = ConditionalBranch : r731_7 +# 35| Block 238 +# 35| r35_3319(glval) = VariableAddress[x237] : +# 35| mu35_3320(String) = Uninitialized[x237] : &:r35_3319 +# 35| r35_3321(glval) = FunctionAddress[String] : +# 35| v35_3322(void) = Call[String] : func:r35_3321, this:r35_3319 +# 35| mu35_3323(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3324(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3319 +# 35| r35_3325(glval) = VariableAddress[x237] : +# 35| r35_3326(glval) = FunctionAddress[~String] : +# 35| v35_3327(void) = Call[~String] : func:r35_3326, this:r35_3325 +# 35| mu35_3328(unknown) = ^CallSideEffect : ~m? +# 35| v35_3329(void) = ^IndirectReadSideEffect[-1] : &:r35_3325, ~m? +# 35| mu35_3330(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3325 +# 35| r35_3331(bool) = Constant[0] : +# 35| v35_3332(void) = ConditionalBranch : r35_3331 #-----| False -> Block 239 #-----| True (back edge) -> Block 238 -# 733| Block 239 -# 733| r733_1(glval) = VariableAddress[x238] : -# 733| mu733_2(String) = Uninitialized[x238] : &:r733_1 -# 733| r733_3(glval) = FunctionAddress[String] : -# 733| v733_4(void) = Call[String] : func:r733_3, this:r733_1 -# 733| mu733_5(unknown) = ^CallSideEffect : ~m? -# 733| mu733_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r733_1 -# 734| r734_1(glval) = VariableAddress[x238] : -# 734| r734_2(glval) = FunctionAddress[~String] : -# 734| v734_3(void) = Call[~String] : func:r734_2, this:r734_1 -# 734| mu734_4(unknown) = ^CallSideEffect : ~m? -# 734| v734_5(void) = ^IndirectReadSideEffect[-1] : &:r734_1, ~m? -# 734| mu734_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r734_1 -# 734| r734_7(bool) = Constant[0] : -# 734| v734_8(void) = ConditionalBranch : r734_7 +# 35| Block 239 +# 35| r35_3333(glval) = VariableAddress[x238] : +# 35| mu35_3334(String) = Uninitialized[x238] : &:r35_3333 +# 35| r35_3335(glval) = FunctionAddress[String] : +# 35| v35_3336(void) = Call[String] : func:r35_3335, this:r35_3333 +# 35| mu35_3337(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3338(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3333 +# 35| r35_3339(glval) = VariableAddress[x238] : +# 35| r35_3340(glval) = FunctionAddress[~String] : +# 35| v35_3341(void) = Call[~String] : func:r35_3340, this:r35_3339 +# 35| mu35_3342(unknown) = ^CallSideEffect : ~m? +# 35| v35_3343(void) = ^IndirectReadSideEffect[-1] : &:r35_3339, ~m? +# 35| mu35_3344(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3339 +# 35| r35_3345(bool) = Constant[0] : +# 35| v35_3346(void) = ConditionalBranch : r35_3345 #-----| False -> Block 240 #-----| True (back edge) -> Block 239 -# 736| Block 240 -# 736| r736_1(glval) = VariableAddress[x239] : -# 736| mu736_2(String) = Uninitialized[x239] : &:r736_1 -# 736| r736_3(glval) = FunctionAddress[String] : -# 736| v736_4(void) = Call[String] : func:r736_3, this:r736_1 -# 736| mu736_5(unknown) = ^CallSideEffect : ~m? -# 736| mu736_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r736_1 -# 737| r737_1(glval) = VariableAddress[x239] : -# 737| r737_2(glval) = FunctionAddress[~String] : -# 737| v737_3(void) = Call[~String] : func:r737_2, this:r737_1 -# 737| mu737_4(unknown) = ^CallSideEffect : ~m? -# 737| v737_5(void) = ^IndirectReadSideEffect[-1] : &:r737_1, ~m? -# 737| mu737_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r737_1 -# 737| r737_7(bool) = Constant[0] : -# 737| v737_8(void) = ConditionalBranch : r737_7 +# 35| Block 240 +# 35| r35_3347(glval) = VariableAddress[x239] : +# 35| mu35_3348(String) = Uninitialized[x239] : &:r35_3347 +# 35| r35_3349(glval) = FunctionAddress[String] : +# 35| v35_3350(void) = Call[String] : func:r35_3349, this:r35_3347 +# 35| mu35_3351(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3352(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3347 +# 35| r35_3353(glval) = VariableAddress[x239] : +# 35| r35_3354(glval) = FunctionAddress[~String] : +# 35| v35_3355(void) = Call[~String] : func:r35_3354, this:r35_3353 +# 35| mu35_3356(unknown) = ^CallSideEffect : ~m? +# 35| v35_3357(void) = ^IndirectReadSideEffect[-1] : &:r35_3353, ~m? +# 35| mu35_3358(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3353 +# 35| r35_3359(bool) = Constant[0] : +# 35| v35_3360(void) = ConditionalBranch : r35_3359 #-----| False -> Block 241 #-----| True (back edge) -> Block 240 -# 739| Block 241 -# 739| r739_1(glval) = VariableAddress[x240] : -# 739| mu739_2(String) = Uninitialized[x240] : &:r739_1 -# 739| r739_3(glval) = FunctionAddress[String] : -# 739| v739_4(void) = Call[String] : func:r739_3, this:r739_1 -# 739| mu739_5(unknown) = ^CallSideEffect : ~m? -# 739| mu739_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r739_1 -# 740| r740_1(glval) = VariableAddress[x240] : -# 740| r740_2(glval) = FunctionAddress[~String] : -# 740| v740_3(void) = Call[~String] : func:r740_2, this:r740_1 -# 740| mu740_4(unknown) = ^CallSideEffect : ~m? -# 740| v740_5(void) = ^IndirectReadSideEffect[-1] : &:r740_1, ~m? -# 740| mu740_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r740_1 -# 740| r740_7(bool) = Constant[0] : -# 740| v740_8(void) = ConditionalBranch : r740_7 +# 35| Block 241 +# 35| r35_3361(glval) = VariableAddress[x240] : +# 35| mu35_3362(String) = Uninitialized[x240] : &:r35_3361 +# 35| r35_3363(glval) = FunctionAddress[String] : +# 35| v35_3364(void) = Call[String] : func:r35_3363, this:r35_3361 +# 35| mu35_3365(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3366(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3361 +# 35| r35_3367(glval) = VariableAddress[x240] : +# 35| r35_3368(glval) = FunctionAddress[~String] : +# 35| v35_3369(void) = Call[~String] : func:r35_3368, this:r35_3367 +# 35| mu35_3370(unknown) = ^CallSideEffect : ~m? +# 35| v35_3371(void) = ^IndirectReadSideEffect[-1] : &:r35_3367, ~m? +# 35| mu35_3372(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3367 +# 35| r35_3373(bool) = Constant[0] : +# 35| v35_3374(void) = ConditionalBranch : r35_3373 #-----| False -> Block 242 #-----| True (back edge) -> Block 241 -# 742| Block 242 -# 742| r742_1(glval) = VariableAddress[x241] : -# 742| mu742_2(String) = Uninitialized[x241] : &:r742_1 -# 742| r742_3(glval) = FunctionAddress[String] : -# 742| v742_4(void) = Call[String] : func:r742_3, this:r742_1 -# 742| mu742_5(unknown) = ^CallSideEffect : ~m? -# 742| mu742_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r742_1 -# 743| r743_1(glval) = VariableAddress[x241] : -# 743| r743_2(glval) = FunctionAddress[~String] : -# 743| v743_3(void) = Call[~String] : func:r743_2, this:r743_1 -# 743| mu743_4(unknown) = ^CallSideEffect : ~m? -# 743| v743_5(void) = ^IndirectReadSideEffect[-1] : &:r743_1, ~m? -# 743| mu743_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r743_1 -# 743| r743_7(bool) = Constant[0] : -# 743| v743_8(void) = ConditionalBranch : r743_7 +# 35| Block 242 +# 35| r35_3375(glval) = VariableAddress[x241] : +# 35| mu35_3376(String) = Uninitialized[x241] : &:r35_3375 +# 35| r35_3377(glval) = FunctionAddress[String] : +# 35| v35_3378(void) = Call[String] : func:r35_3377, this:r35_3375 +# 35| mu35_3379(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3380(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3375 +# 35| r35_3381(glval) = VariableAddress[x241] : +# 35| r35_3382(glval) = FunctionAddress[~String] : +# 35| v35_3383(void) = Call[~String] : func:r35_3382, this:r35_3381 +# 35| mu35_3384(unknown) = ^CallSideEffect : ~m? +# 35| v35_3385(void) = ^IndirectReadSideEffect[-1] : &:r35_3381, ~m? +# 35| mu35_3386(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3381 +# 35| r35_3387(bool) = Constant[0] : +# 35| v35_3388(void) = ConditionalBranch : r35_3387 #-----| False -> Block 243 #-----| True (back edge) -> Block 242 -# 745| Block 243 -# 745| r745_1(glval) = VariableAddress[x242] : -# 745| mu745_2(String) = Uninitialized[x242] : &:r745_1 -# 745| r745_3(glval) = FunctionAddress[String] : -# 745| v745_4(void) = Call[String] : func:r745_3, this:r745_1 -# 745| mu745_5(unknown) = ^CallSideEffect : ~m? -# 745| mu745_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r745_1 -# 746| r746_1(glval) = VariableAddress[x242] : -# 746| r746_2(glval) = FunctionAddress[~String] : -# 746| v746_3(void) = Call[~String] : func:r746_2, this:r746_1 -# 746| mu746_4(unknown) = ^CallSideEffect : ~m? -# 746| v746_5(void) = ^IndirectReadSideEffect[-1] : &:r746_1, ~m? -# 746| mu746_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r746_1 -# 746| r746_7(bool) = Constant[0] : -# 746| v746_8(void) = ConditionalBranch : r746_7 +# 35| Block 243 +# 35| r35_3389(glval) = VariableAddress[x242] : +# 35| mu35_3390(String) = Uninitialized[x242] : &:r35_3389 +# 35| r35_3391(glval) = FunctionAddress[String] : +# 35| v35_3392(void) = Call[String] : func:r35_3391, this:r35_3389 +# 35| mu35_3393(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3394(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3389 +# 35| r35_3395(glval) = VariableAddress[x242] : +# 35| r35_3396(glval) = FunctionAddress[~String] : +# 35| v35_3397(void) = Call[~String] : func:r35_3396, this:r35_3395 +# 35| mu35_3398(unknown) = ^CallSideEffect : ~m? +# 35| v35_3399(void) = ^IndirectReadSideEffect[-1] : &:r35_3395, ~m? +# 35| mu35_3400(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3395 +# 35| r35_3401(bool) = Constant[0] : +# 35| v35_3402(void) = ConditionalBranch : r35_3401 #-----| False -> Block 244 #-----| True (back edge) -> Block 243 -# 748| Block 244 -# 748| r748_1(glval) = VariableAddress[x243] : -# 748| mu748_2(String) = Uninitialized[x243] : &:r748_1 -# 748| r748_3(glval) = FunctionAddress[String] : -# 748| v748_4(void) = Call[String] : func:r748_3, this:r748_1 -# 748| mu748_5(unknown) = ^CallSideEffect : ~m? -# 748| mu748_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r748_1 -# 749| r749_1(glval) = VariableAddress[x243] : -# 749| r749_2(glval) = FunctionAddress[~String] : -# 749| v749_3(void) = Call[~String] : func:r749_2, this:r749_1 -# 749| mu749_4(unknown) = ^CallSideEffect : ~m? -# 749| v749_5(void) = ^IndirectReadSideEffect[-1] : &:r749_1, ~m? -# 749| mu749_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r749_1 -# 749| r749_7(bool) = Constant[0] : -# 749| v749_8(void) = ConditionalBranch : r749_7 +# 35| Block 244 +# 35| r35_3403(glval) = VariableAddress[x243] : +# 35| mu35_3404(String) = Uninitialized[x243] : &:r35_3403 +# 35| r35_3405(glval) = FunctionAddress[String] : +# 35| v35_3406(void) = Call[String] : func:r35_3405, this:r35_3403 +# 35| mu35_3407(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3408(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3403 +# 35| r35_3409(glval) = VariableAddress[x243] : +# 35| r35_3410(glval) = FunctionAddress[~String] : +# 35| v35_3411(void) = Call[~String] : func:r35_3410, this:r35_3409 +# 35| mu35_3412(unknown) = ^CallSideEffect : ~m? +# 35| v35_3413(void) = ^IndirectReadSideEffect[-1] : &:r35_3409, ~m? +# 35| mu35_3414(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3409 +# 35| r35_3415(bool) = Constant[0] : +# 35| v35_3416(void) = ConditionalBranch : r35_3415 #-----| False -> Block 245 #-----| True (back edge) -> Block 244 -# 751| Block 245 -# 751| r751_1(glval) = VariableAddress[x244] : -# 751| mu751_2(String) = Uninitialized[x244] : &:r751_1 -# 751| r751_3(glval) = FunctionAddress[String] : -# 751| v751_4(void) = Call[String] : func:r751_3, this:r751_1 -# 751| mu751_5(unknown) = ^CallSideEffect : ~m? -# 751| mu751_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r751_1 -# 752| r752_1(glval) = VariableAddress[x244] : -# 752| r752_2(glval) = FunctionAddress[~String] : -# 752| v752_3(void) = Call[~String] : func:r752_2, this:r752_1 -# 752| mu752_4(unknown) = ^CallSideEffect : ~m? -# 752| v752_5(void) = ^IndirectReadSideEffect[-1] : &:r752_1, ~m? -# 752| mu752_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r752_1 -# 752| r752_7(bool) = Constant[0] : -# 752| v752_8(void) = ConditionalBranch : r752_7 +# 35| Block 245 +# 35| r35_3417(glval) = VariableAddress[x244] : +# 35| mu35_3418(String) = Uninitialized[x244] : &:r35_3417 +# 35| r35_3419(glval) = FunctionAddress[String] : +# 35| v35_3420(void) = Call[String] : func:r35_3419, this:r35_3417 +# 35| mu35_3421(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3422(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3417 +# 35| r35_3423(glval) = VariableAddress[x244] : +# 35| r35_3424(glval) = FunctionAddress[~String] : +# 35| v35_3425(void) = Call[~String] : func:r35_3424, this:r35_3423 +# 35| mu35_3426(unknown) = ^CallSideEffect : ~m? +# 35| v35_3427(void) = ^IndirectReadSideEffect[-1] : &:r35_3423, ~m? +# 35| mu35_3428(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3423 +# 35| r35_3429(bool) = Constant[0] : +# 35| v35_3430(void) = ConditionalBranch : r35_3429 #-----| False -> Block 246 #-----| True (back edge) -> Block 245 -# 754| Block 246 -# 754| r754_1(glval) = VariableAddress[x245] : -# 754| mu754_2(String) = Uninitialized[x245] : &:r754_1 -# 754| r754_3(glval) = FunctionAddress[String] : -# 754| v754_4(void) = Call[String] : func:r754_3, this:r754_1 -# 754| mu754_5(unknown) = ^CallSideEffect : ~m? -# 754| mu754_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r754_1 -# 755| r755_1(glval) = VariableAddress[x245] : -# 755| r755_2(glval) = FunctionAddress[~String] : -# 755| v755_3(void) = Call[~String] : func:r755_2, this:r755_1 -# 755| mu755_4(unknown) = ^CallSideEffect : ~m? -# 755| v755_5(void) = ^IndirectReadSideEffect[-1] : &:r755_1, ~m? -# 755| mu755_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r755_1 -# 755| r755_7(bool) = Constant[0] : -# 755| v755_8(void) = ConditionalBranch : r755_7 +# 35| Block 246 +# 35| r35_3431(glval) = VariableAddress[x245] : +# 35| mu35_3432(String) = Uninitialized[x245] : &:r35_3431 +# 35| r35_3433(glval) = FunctionAddress[String] : +# 35| v35_3434(void) = Call[String] : func:r35_3433, this:r35_3431 +# 35| mu35_3435(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3436(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3431 +# 35| r35_3437(glval) = VariableAddress[x245] : +# 35| r35_3438(glval) = FunctionAddress[~String] : +# 35| v35_3439(void) = Call[~String] : func:r35_3438, this:r35_3437 +# 35| mu35_3440(unknown) = ^CallSideEffect : ~m? +# 35| v35_3441(void) = ^IndirectReadSideEffect[-1] : &:r35_3437, ~m? +# 35| mu35_3442(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3437 +# 35| r35_3443(bool) = Constant[0] : +# 35| v35_3444(void) = ConditionalBranch : r35_3443 #-----| False -> Block 247 #-----| True (back edge) -> Block 246 -# 757| Block 247 -# 757| r757_1(glval) = VariableAddress[x246] : -# 757| mu757_2(String) = Uninitialized[x246] : &:r757_1 -# 757| r757_3(glval) = FunctionAddress[String] : -# 757| v757_4(void) = Call[String] : func:r757_3, this:r757_1 -# 757| mu757_5(unknown) = ^CallSideEffect : ~m? -# 757| mu757_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r757_1 -# 758| r758_1(glval) = VariableAddress[x246] : -# 758| r758_2(glval) = FunctionAddress[~String] : -# 758| v758_3(void) = Call[~String] : func:r758_2, this:r758_1 -# 758| mu758_4(unknown) = ^CallSideEffect : ~m? -# 758| v758_5(void) = ^IndirectReadSideEffect[-1] : &:r758_1, ~m? -# 758| mu758_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r758_1 -# 758| r758_7(bool) = Constant[0] : -# 758| v758_8(void) = ConditionalBranch : r758_7 +# 35| Block 247 +# 35| r35_3445(glval) = VariableAddress[x246] : +# 35| mu35_3446(String) = Uninitialized[x246] : &:r35_3445 +# 35| r35_3447(glval) = FunctionAddress[String] : +# 35| v35_3448(void) = Call[String] : func:r35_3447, this:r35_3445 +# 35| mu35_3449(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3450(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3445 +# 35| r35_3451(glval) = VariableAddress[x246] : +# 35| r35_3452(glval) = FunctionAddress[~String] : +# 35| v35_3453(void) = Call[~String] : func:r35_3452, this:r35_3451 +# 35| mu35_3454(unknown) = ^CallSideEffect : ~m? +# 35| v35_3455(void) = ^IndirectReadSideEffect[-1] : &:r35_3451, ~m? +# 35| mu35_3456(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3451 +# 35| r35_3457(bool) = Constant[0] : +# 35| v35_3458(void) = ConditionalBranch : r35_3457 #-----| False -> Block 248 #-----| True (back edge) -> Block 247 -# 760| Block 248 -# 760| r760_1(glval) = VariableAddress[x247] : -# 760| mu760_2(String) = Uninitialized[x247] : &:r760_1 -# 760| r760_3(glval) = FunctionAddress[String] : -# 760| v760_4(void) = Call[String] : func:r760_3, this:r760_1 -# 760| mu760_5(unknown) = ^CallSideEffect : ~m? -# 760| mu760_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r760_1 -# 761| r761_1(glval) = VariableAddress[x247] : -# 761| r761_2(glval) = FunctionAddress[~String] : -# 761| v761_3(void) = Call[~String] : func:r761_2, this:r761_1 -# 761| mu761_4(unknown) = ^CallSideEffect : ~m? -# 761| v761_5(void) = ^IndirectReadSideEffect[-1] : &:r761_1, ~m? -# 761| mu761_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r761_1 -# 761| r761_7(bool) = Constant[0] : -# 761| v761_8(void) = ConditionalBranch : r761_7 +# 35| Block 248 +# 35| r35_3459(glval) = VariableAddress[x247] : +# 35| mu35_3460(String) = Uninitialized[x247] : &:r35_3459 +# 35| r35_3461(glval) = FunctionAddress[String] : +# 35| v35_3462(void) = Call[String] : func:r35_3461, this:r35_3459 +# 35| mu35_3463(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3464(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3459 +# 35| r35_3465(glval) = VariableAddress[x247] : +# 35| r35_3466(glval) = FunctionAddress[~String] : +# 35| v35_3467(void) = Call[~String] : func:r35_3466, this:r35_3465 +# 35| mu35_3468(unknown) = ^CallSideEffect : ~m? +# 35| v35_3469(void) = ^IndirectReadSideEffect[-1] : &:r35_3465, ~m? +# 35| mu35_3470(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3465 +# 35| r35_3471(bool) = Constant[0] : +# 35| v35_3472(void) = ConditionalBranch : r35_3471 #-----| False -> Block 249 #-----| True (back edge) -> Block 248 -# 763| Block 249 -# 763| r763_1(glval) = VariableAddress[x248] : -# 763| mu763_2(String) = Uninitialized[x248] : &:r763_1 -# 763| r763_3(glval) = FunctionAddress[String] : -# 763| v763_4(void) = Call[String] : func:r763_3, this:r763_1 -# 763| mu763_5(unknown) = ^CallSideEffect : ~m? -# 763| mu763_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r763_1 -# 764| r764_1(glval) = VariableAddress[x248] : -# 764| r764_2(glval) = FunctionAddress[~String] : -# 764| v764_3(void) = Call[~String] : func:r764_2, this:r764_1 -# 764| mu764_4(unknown) = ^CallSideEffect : ~m? -# 764| v764_5(void) = ^IndirectReadSideEffect[-1] : &:r764_1, ~m? -# 764| mu764_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r764_1 -# 764| r764_7(bool) = Constant[0] : -# 764| v764_8(void) = ConditionalBranch : r764_7 +# 35| Block 249 +# 35| r35_3473(glval) = VariableAddress[x248] : +# 35| mu35_3474(String) = Uninitialized[x248] : &:r35_3473 +# 35| r35_3475(glval) = FunctionAddress[String] : +# 35| v35_3476(void) = Call[String] : func:r35_3475, this:r35_3473 +# 35| mu35_3477(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3478(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3473 +# 35| r35_3479(glval) = VariableAddress[x248] : +# 35| r35_3480(glval) = FunctionAddress[~String] : +# 35| v35_3481(void) = Call[~String] : func:r35_3480, this:r35_3479 +# 35| mu35_3482(unknown) = ^CallSideEffect : ~m? +# 35| v35_3483(void) = ^IndirectReadSideEffect[-1] : &:r35_3479, ~m? +# 35| mu35_3484(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3479 +# 35| r35_3485(bool) = Constant[0] : +# 35| v35_3486(void) = ConditionalBranch : r35_3485 #-----| False -> Block 250 #-----| True (back edge) -> Block 249 -# 766| Block 250 -# 766| r766_1(glval) = VariableAddress[x249] : -# 766| mu766_2(String) = Uninitialized[x249] : &:r766_1 -# 766| r766_3(glval) = FunctionAddress[String] : -# 766| v766_4(void) = Call[String] : func:r766_3, this:r766_1 -# 766| mu766_5(unknown) = ^CallSideEffect : ~m? -# 766| mu766_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r766_1 -# 767| r767_1(glval) = VariableAddress[x249] : -# 767| r767_2(glval) = FunctionAddress[~String] : -# 767| v767_3(void) = Call[~String] : func:r767_2, this:r767_1 -# 767| mu767_4(unknown) = ^CallSideEffect : ~m? -# 767| v767_5(void) = ^IndirectReadSideEffect[-1] : &:r767_1, ~m? -# 767| mu767_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r767_1 -# 767| r767_7(bool) = Constant[0] : -# 767| v767_8(void) = ConditionalBranch : r767_7 +# 35| Block 250 +# 35| r35_3487(glval) = VariableAddress[x249] : +# 35| mu35_3488(String) = Uninitialized[x249] : &:r35_3487 +# 35| r35_3489(glval) = FunctionAddress[String] : +# 35| v35_3490(void) = Call[String] : func:r35_3489, this:r35_3487 +# 35| mu35_3491(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3492(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3487 +# 35| r35_3493(glval) = VariableAddress[x249] : +# 35| r35_3494(glval) = FunctionAddress[~String] : +# 35| v35_3495(void) = Call[~String] : func:r35_3494, this:r35_3493 +# 35| mu35_3496(unknown) = ^CallSideEffect : ~m? +# 35| v35_3497(void) = ^IndirectReadSideEffect[-1] : &:r35_3493, ~m? +# 35| mu35_3498(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3493 +# 35| r35_3499(bool) = Constant[0] : +# 35| v35_3500(void) = ConditionalBranch : r35_3499 #-----| False -> Block 251 #-----| True (back edge) -> Block 250 -# 769| Block 251 -# 769| r769_1(glval) = VariableAddress[x250] : -# 769| mu769_2(String) = Uninitialized[x250] : &:r769_1 -# 769| r769_3(glval) = FunctionAddress[String] : -# 769| v769_4(void) = Call[String] : func:r769_3, this:r769_1 -# 769| mu769_5(unknown) = ^CallSideEffect : ~m? -# 769| mu769_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r769_1 -# 770| r770_1(glval) = VariableAddress[x250] : -# 770| r770_2(glval) = FunctionAddress[~String] : -# 770| v770_3(void) = Call[~String] : func:r770_2, this:r770_1 -# 770| mu770_4(unknown) = ^CallSideEffect : ~m? -# 770| v770_5(void) = ^IndirectReadSideEffect[-1] : &:r770_1, ~m? -# 770| mu770_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r770_1 -# 770| r770_7(bool) = Constant[0] : -# 770| v770_8(void) = ConditionalBranch : r770_7 +# 35| Block 251 +# 35| r35_3501(glval) = VariableAddress[x250] : +# 35| mu35_3502(String) = Uninitialized[x250] : &:r35_3501 +# 35| r35_3503(glval) = FunctionAddress[String] : +# 35| v35_3504(void) = Call[String] : func:r35_3503, this:r35_3501 +# 35| mu35_3505(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3506(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3501 +# 35| r35_3507(glval) = VariableAddress[x250] : +# 35| r35_3508(glval) = FunctionAddress[~String] : +# 35| v35_3509(void) = Call[~String] : func:r35_3508, this:r35_3507 +# 35| mu35_3510(unknown) = ^CallSideEffect : ~m? +# 35| v35_3511(void) = ^IndirectReadSideEffect[-1] : &:r35_3507, ~m? +# 35| mu35_3512(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3507 +# 35| r35_3513(bool) = Constant[0] : +# 35| v35_3514(void) = ConditionalBranch : r35_3513 #-----| False -> Block 252 #-----| True (back edge) -> Block 251 -# 772| Block 252 -# 772| r772_1(glval) = VariableAddress[x251] : -# 772| mu772_2(String) = Uninitialized[x251] : &:r772_1 -# 772| r772_3(glval) = FunctionAddress[String] : -# 772| v772_4(void) = Call[String] : func:r772_3, this:r772_1 -# 772| mu772_5(unknown) = ^CallSideEffect : ~m? -# 772| mu772_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r772_1 -# 773| r773_1(glval) = VariableAddress[x251] : -# 773| r773_2(glval) = FunctionAddress[~String] : -# 773| v773_3(void) = Call[~String] : func:r773_2, this:r773_1 -# 773| mu773_4(unknown) = ^CallSideEffect : ~m? -# 773| v773_5(void) = ^IndirectReadSideEffect[-1] : &:r773_1, ~m? -# 773| mu773_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r773_1 -# 773| r773_7(bool) = Constant[0] : -# 773| v773_8(void) = ConditionalBranch : r773_7 +# 35| Block 252 +# 35| r35_3515(glval) = VariableAddress[x251] : +# 35| mu35_3516(String) = Uninitialized[x251] : &:r35_3515 +# 35| r35_3517(glval) = FunctionAddress[String] : +# 35| v35_3518(void) = Call[String] : func:r35_3517, this:r35_3515 +# 35| mu35_3519(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3520(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3515 +# 35| r35_3521(glval) = VariableAddress[x251] : +# 35| r35_3522(glval) = FunctionAddress[~String] : +# 35| v35_3523(void) = Call[~String] : func:r35_3522, this:r35_3521 +# 35| mu35_3524(unknown) = ^CallSideEffect : ~m? +# 35| v35_3525(void) = ^IndirectReadSideEffect[-1] : &:r35_3521, ~m? +# 35| mu35_3526(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3521 +# 35| r35_3527(bool) = Constant[0] : +# 35| v35_3528(void) = ConditionalBranch : r35_3527 #-----| False -> Block 253 #-----| True (back edge) -> Block 252 -# 775| Block 253 -# 775| r775_1(glval) = VariableAddress[x252] : -# 775| mu775_2(String) = Uninitialized[x252] : &:r775_1 -# 775| r775_3(glval) = FunctionAddress[String] : -# 775| v775_4(void) = Call[String] : func:r775_3, this:r775_1 -# 775| mu775_5(unknown) = ^CallSideEffect : ~m? -# 775| mu775_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r775_1 -# 776| r776_1(glval) = VariableAddress[x252] : -# 776| r776_2(glval) = FunctionAddress[~String] : -# 776| v776_3(void) = Call[~String] : func:r776_2, this:r776_1 -# 776| mu776_4(unknown) = ^CallSideEffect : ~m? -# 776| v776_5(void) = ^IndirectReadSideEffect[-1] : &:r776_1, ~m? -# 776| mu776_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r776_1 -# 776| r776_7(bool) = Constant[0] : -# 776| v776_8(void) = ConditionalBranch : r776_7 +# 35| Block 253 +# 35| r35_3529(glval) = VariableAddress[x252] : +# 35| mu35_3530(String) = Uninitialized[x252] : &:r35_3529 +# 35| r35_3531(glval) = FunctionAddress[String] : +# 35| v35_3532(void) = Call[String] : func:r35_3531, this:r35_3529 +# 35| mu35_3533(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3534(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3529 +# 35| r35_3535(glval) = VariableAddress[x252] : +# 35| r35_3536(glval) = FunctionAddress[~String] : +# 35| v35_3537(void) = Call[~String] : func:r35_3536, this:r35_3535 +# 35| mu35_3538(unknown) = ^CallSideEffect : ~m? +# 35| v35_3539(void) = ^IndirectReadSideEffect[-1] : &:r35_3535, ~m? +# 35| mu35_3540(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3535 +# 35| r35_3541(bool) = Constant[0] : +# 35| v35_3542(void) = ConditionalBranch : r35_3541 #-----| False -> Block 254 #-----| True (back edge) -> Block 253 -# 778| Block 254 -# 778| r778_1(glval) = VariableAddress[x253] : -# 778| mu778_2(String) = Uninitialized[x253] : &:r778_1 -# 778| r778_3(glval) = FunctionAddress[String] : -# 778| v778_4(void) = Call[String] : func:r778_3, this:r778_1 -# 778| mu778_5(unknown) = ^CallSideEffect : ~m? -# 778| mu778_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r778_1 -# 779| r779_1(glval) = VariableAddress[x253] : -# 779| r779_2(glval) = FunctionAddress[~String] : -# 779| v779_3(void) = Call[~String] : func:r779_2, this:r779_1 -# 779| mu779_4(unknown) = ^CallSideEffect : ~m? -# 779| v779_5(void) = ^IndirectReadSideEffect[-1] : &:r779_1, ~m? -# 779| mu779_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r779_1 -# 779| r779_7(bool) = Constant[0] : -# 779| v779_8(void) = ConditionalBranch : r779_7 +# 35| Block 254 +# 35| r35_3543(glval) = VariableAddress[x253] : +# 35| mu35_3544(String) = Uninitialized[x253] : &:r35_3543 +# 35| r35_3545(glval) = FunctionAddress[String] : +# 35| v35_3546(void) = Call[String] : func:r35_3545, this:r35_3543 +# 35| mu35_3547(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3548(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3543 +# 35| r35_3549(glval) = VariableAddress[x253] : +# 35| r35_3550(glval) = FunctionAddress[~String] : +# 35| v35_3551(void) = Call[~String] : func:r35_3550, this:r35_3549 +# 35| mu35_3552(unknown) = ^CallSideEffect : ~m? +# 35| v35_3553(void) = ^IndirectReadSideEffect[-1] : &:r35_3549, ~m? +# 35| mu35_3554(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3549 +# 35| r35_3555(bool) = Constant[0] : +# 35| v35_3556(void) = ConditionalBranch : r35_3555 #-----| False -> Block 255 #-----| True (back edge) -> Block 254 -# 781| Block 255 -# 781| r781_1(glval) = VariableAddress[x254] : -# 781| mu781_2(String) = Uninitialized[x254] : &:r781_1 -# 781| r781_3(glval) = FunctionAddress[String] : -# 781| v781_4(void) = Call[String] : func:r781_3, this:r781_1 -# 781| mu781_5(unknown) = ^CallSideEffect : ~m? -# 781| mu781_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r781_1 -# 782| r782_1(glval) = VariableAddress[x254] : -# 782| r782_2(glval) = FunctionAddress[~String] : -# 782| v782_3(void) = Call[~String] : func:r782_2, this:r782_1 -# 782| mu782_4(unknown) = ^CallSideEffect : ~m? -# 782| v782_5(void) = ^IndirectReadSideEffect[-1] : &:r782_1, ~m? -# 782| mu782_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r782_1 -# 782| r782_7(bool) = Constant[0] : -# 782| v782_8(void) = ConditionalBranch : r782_7 +# 35| Block 255 +# 35| r35_3557(glval) = VariableAddress[x254] : +# 35| mu35_3558(String) = Uninitialized[x254] : &:r35_3557 +# 35| r35_3559(glval) = FunctionAddress[String] : +# 35| v35_3560(void) = Call[String] : func:r35_3559, this:r35_3557 +# 35| mu35_3561(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3562(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3557 +# 35| r35_3563(glval) = VariableAddress[x254] : +# 35| r35_3564(glval) = FunctionAddress[~String] : +# 35| v35_3565(void) = Call[~String] : func:r35_3564, this:r35_3563 +# 35| mu35_3566(unknown) = ^CallSideEffect : ~m? +# 35| v35_3567(void) = ^IndirectReadSideEffect[-1] : &:r35_3563, ~m? +# 35| mu35_3568(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3563 +# 35| r35_3569(bool) = Constant[0] : +# 35| v35_3570(void) = ConditionalBranch : r35_3569 #-----| False -> Block 256 #-----| True (back edge) -> Block 255 -# 784| Block 256 -# 784| r784_1(glval) = VariableAddress[x255] : -# 784| mu784_2(String) = Uninitialized[x255] : &:r784_1 -# 784| r784_3(glval) = FunctionAddress[String] : -# 784| v784_4(void) = Call[String] : func:r784_3, this:r784_1 -# 784| mu784_5(unknown) = ^CallSideEffect : ~m? -# 784| mu784_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r784_1 -# 785| r785_1(glval) = VariableAddress[x255] : -# 785| r785_2(glval) = FunctionAddress[~String] : -# 785| v785_3(void) = Call[~String] : func:r785_2, this:r785_1 -# 785| mu785_4(unknown) = ^CallSideEffect : ~m? -# 785| v785_5(void) = ^IndirectReadSideEffect[-1] : &:r785_1, ~m? -# 785| mu785_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r785_1 -# 785| r785_7(bool) = Constant[0] : -# 785| v785_8(void) = ConditionalBranch : r785_7 +# 35| Block 256 +# 35| r35_3571(glval) = VariableAddress[x255] : +# 35| mu35_3572(String) = Uninitialized[x255] : &:r35_3571 +# 35| r35_3573(glval) = FunctionAddress[String] : +# 35| v35_3574(void) = Call[String] : func:r35_3573, this:r35_3571 +# 35| mu35_3575(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3576(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3571 +# 35| r35_3577(glval) = VariableAddress[x255] : +# 35| r35_3578(glval) = FunctionAddress[~String] : +# 35| v35_3579(void) = Call[~String] : func:r35_3578, this:r35_3577 +# 35| mu35_3580(unknown) = ^CallSideEffect : ~m? +# 35| v35_3581(void) = ^IndirectReadSideEffect[-1] : &:r35_3577, ~m? +# 35| mu35_3582(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3577 +# 35| r35_3583(bool) = Constant[0] : +# 35| v35_3584(void) = ConditionalBranch : r35_3583 #-----| False -> Block 257 #-----| True (back edge) -> Block 256 -# 787| Block 257 -# 787| r787_1(glval) = VariableAddress[x256] : -# 787| mu787_2(String) = Uninitialized[x256] : &:r787_1 -# 787| r787_3(glval) = FunctionAddress[String] : -# 787| v787_4(void) = Call[String] : func:r787_3, this:r787_1 -# 787| mu787_5(unknown) = ^CallSideEffect : ~m? -# 787| mu787_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r787_1 -# 788| r788_1(glval) = VariableAddress[x256] : -# 788| r788_2(glval) = FunctionAddress[~String] : -# 788| v788_3(void) = Call[~String] : func:r788_2, this:r788_1 -# 788| mu788_4(unknown) = ^CallSideEffect : ~m? -# 788| v788_5(void) = ^IndirectReadSideEffect[-1] : &:r788_1, ~m? -# 788| mu788_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r788_1 -# 788| r788_7(bool) = Constant[0] : -# 788| v788_8(void) = ConditionalBranch : r788_7 +# 35| Block 257 +# 35| r35_3585(glval) = VariableAddress[x256] : +# 35| mu35_3586(String) = Uninitialized[x256] : &:r35_3585 +# 35| r35_3587(glval) = FunctionAddress[String] : +# 35| v35_3588(void) = Call[String] : func:r35_3587, this:r35_3585 +# 35| mu35_3589(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3590(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3585 +# 35| r35_3591(glval) = VariableAddress[x256] : +# 35| r35_3592(glval) = FunctionAddress[~String] : +# 35| v35_3593(void) = Call[~String] : func:r35_3592, this:r35_3591 +# 35| mu35_3594(unknown) = ^CallSideEffect : ~m? +# 35| v35_3595(void) = ^IndirectReadSideEffect[-1] : &:r35_3591, ~m? +# 35| mu35_3596(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3591 +# 35| r35_3597(bool) = Constant[0] : +# 35| v35_3598(void) = ConditionalBranch : r35_3597 #-----| False -> Block 258 #-----| True (back edge) -> Block 257 -# 790| Block 258 -# 790| r790_1(glval) = VariableAddress[x257] : -# 790| mu790_2(String) = Uninitialized[x257] : &:r790_1 -# 790| r790_3(glval) = FunctionAddress[String] : -# 790| v790_4(void) = Call[String] : func:r790_3, this:r790_1 -# 790| mu790_5(unknown) = ^CallSideEffect : ~m? -# 790| mu790_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r790_1 -# 791| r791_1(glval) = VariableAddress[x257] : -# 791| r791_2(glval) = FunctionAddress[~String] : -# 791| v791_3(void) = Call[~String] : func:r791_2, this:r791_1 -# 791| mu791_4(unknown) = ^CallSideEffect : ~m? -# 791| v791_5(void) = ^IndirectReadSideEffect[-1] : &:r791_1, ~m? -# 791| mu791_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r791_1 -# 791| r791_7(bool) = Constant[0] : -# 791| v791_8(void) = ConditionalBranch : r791_7 +# 35| Block 258 +# 35| r35_3599(glval) = VariableAddress[x257] : +# 35| mu35_3600(String) = Uninitialized[x257] : &:r35_3599 +# 35| r35_3601(glval) = FunctionAddress[String] : +# 35| v35_3602(void) = Call[String] : func:r35_3601, this:r35_3599 +# 35| mu35_3603(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3604(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3599 +# 35| r35_3605(glval) = VariableAddress[x257] : +# 35| r35_3606(glval) = FunctionAddress[~String] : +# 35| v35_3607(void) = Call[~String] : func:r35_3606, this:r35_3605 +# 35| mu35_3608(unknown) = ^CallSideEffect : ~m? +# 35| v35_3609(void) = ^IndirectReadSideEffect[-1] : &:r35_3605, ~m? +# 35| mu35_3610(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3605 +# 35| r35_3611(bool) = Constant[0] : +# 35| v35_3612(void) = ConditionalBranch : r35_3611 #-----| False -> Block 259 #-----| True (back edge) -> Block 258 -# 793| Block 259 -# 793| r793_1(glval) = VariableAddress[x258] : -# 793| mu793_2(String) = Uninitialized[x258] : &:r793_1 -# 793| r793_3(glval) = FunctionAddress[String] : -# 793| v793_4(void) = Call[String] : func:r793_3, this:r793_1 -# 793| mu793_5(unknown) = ^CallSideEffect : ~m? -# 793| mu793_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r793_1 -# 794| r794_1(glval) = VariableAddress[x258] : -# 794| r794_2(glval) = FunctionAddress[~String] : -# 794| v794_3(void) = Call[~String] : func:r794_2, this:r794_1 -# 794| mu794_4(unknown) = ^CallSideEffect : ~m? -# 794| v794_5(void) = ^IndirectReadSideEffect[-1] : &:r794_1, ~m? -# 794| mu794_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r794_1 -# 794| r794_7(bool) = Constant[0] : -# 794| v794_8(void) = ConditionalBranch : r794_7 +# 35| Block 259 +# 35| r35_3613(glval) = VariableAddress[x258] : +# 35| mu35_3614(String) = Uninitialized[x258] : &:r35_3613 +# 35| r35_3615(glval) = FunctionAddress[String] : +# 35| v35_3616(void) = Call[String] : func:r35_3615, this:r35_3613 +# 35| mu35_3617(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3618(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3613 +# 35| r35_3619(glval) = VariableAddress[x258] : +# 35| r35_3620(glval) = FunctionAddress[~String] : +# 35| v35_3621(void) = Call[~String] : func:r35_3620, this:r35_3619 +# 35| mu35_3622(unknown) = ^CallSideEffect : ~m? +# 35| v35_3623(void) = ^IndirectReadSideEffect[-1] : &:r35_3619, ~m? +# 35| mu35_3624(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3619 +# 35| r35_3625(bool) = Constant[0] : +# 35| v35_3626(void) = ConditionalBranch : r35_3625 #-----| False -> Block 260 #-----| True (back edge) -> Block 259 -# 796| Block 260 -# 796| r796_1(glval) = VariableAddress[x259] : -# 796| mu796_2(String) = Uninitialized[x259] : &:r796_1 -# 796| r796_3(glval) = FunctionAddress[String] : -# 796| v796_4(void) = Call[String] : func:r796_3, this:r796_1 -# 796| mu796_5(unknown) = ^CallSideEffect : ~m? -# 796| mu796_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r796_1 -# 797| r797_1(glval) = VariableAddress[x259] : -# 797| r797_2(glval) = FunctionAddress[~String] : -# 797| v797_3(void) = Call[~String] : func:r797_2, this:r797_1 -# 797| mu797_4(unknown) = ^CallSideEffect : ~m? -# 797| v797_5(void) = ^IndirectReadSideEffect[-1] : &:r797_1, ~m? -# 797| mu797_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r797_1 -# 797| r797_7(bool) = Constant[0] : -# 797| v797_8(void) = ConditionalBranch : r797_7 +# 35| Block 260 +# 35| r35_3627(glval) = VariableAddress[x259] : +# 35| mu35_3628(String) = Uninitialized[x259] : &:r35_3627 +# 35| r35_3629(glval) = FunctionAddress[String] : +# 35| v35_3630(void) = Call[String] : func:r35_3629, this:r35_3627 +# 35| mu35_3631(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3632(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3627 +# 35| r35_3633(glval) = VariableAddress[x259] : +# 35| r35_3634(glval) = FunctionAddress[~String] : +# 35| v35_3635(void) = Call[~String] : func:r35_3634, this:r35_3633 +# 35| mu35_3636(unknown) = ^CallSideEffect : ~m? +# 35| v35_3637(void) = ^IndirectReadSideEffect[-1] : &:r35_3633, ~m? +# 35| mu35_3638(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3633 +# 35| r35_3639(bool) = Constant[0] : +# 35| v35_3640(void) = ConditionalBranch : r35_3639 #-----| False -> Block 261 #-----| True (back edge) -> Block 260 -# 799| Block 261 -# 799| r799_1(glval) = VariableAddress[x260] : -# 799| mu799_2(String) = Uninitialized[x260] : &:r799_1 -# 799| r799_3(glval) = FunctionAddress[String] : -# 799| v799_4(void) = Call[String] : func:r799_3, this:r799_1 -# 799| mu799_5(unknown) = ^CallSideEffect : ~m? -# 799| mu799_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r799_1 -# 800| r800_1(glval) = VariableAddress[x260] : -# 800| r800_2(glval) = FunctionAddress[~String] : -# 800| v800_3(void) = Call[~String] : func:r800_2, this:r800_1 -# 800| mu800_4(unknown) = ^CallSideEffect : ~m? -# 800| v800_5(void) = ^IndirectReadSideEffect[-1] : &:r800_1, ~m? -# 800| mu800_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r800_1 -# 800| r800_7(bool) = Constant[0] : -# 800| v800_8(void) = ConditionalBranch : r800_7 +# 35| Block 261 +# 35| r35_3641(glval) = VariableAddress[x260] : +# 35| mu35_3642(String) = Uninitialized[x260] : &:r35_3641 +# 35| r35_3643(glval) = FunctionAddress[String] : +# 35| v35_3644(void) = Call[String] : func:r35_3643, this:r35_3641 +# 35| mu35_3645(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3646(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3641 +# 35| r35_3647(glval) = VariableAddress[x260] : +# 35| r35_3648(glval) = FunctionAddress[~String] : +# 35| v35_3649(void) = Call[~String] : func:r35_3648, this:r35_3647 +# 35| mu35_3650(unknown) = ^CallSideEffect : ~m? +# 35| v35_3651(void) = ^IndirectReadSideEffect[-1] : &:r35_3647, ~m? +# 35| mu35_3652(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3647 +# 35| r35_3653(bool) = Constant[0] : +# 35| v35_3654(void) = ConditionalBranch : r35_3653 #-----| False -> Block 262 #-----| True (back edge) -> Block 261 -# 802| Block 262 -# 802| r802_1(glval) = VariableAddress[x261] : -# 802| mu802_2(String) = Uninitialized[x261] : &:r802_1 -# 802| r802_3(glval) = FunctionAddress[String] : -# 802| v802_4(void) = Call[String] : func:r802_3, this:r802_1 -# 802| mu802_5(unknown) = ^CallSideEffect : ~m? -# 802| mu802_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r802_1 -# 803| r803_1(glval) = VariableAddress[x261] : -# 803| r803_2(glval) = FunctionAddress[~String] : -# 803| v803_3(void) = Call[~String] : func:r803_2, this:r803_1 -# 803| mu803_4(unknown) = ^CallSideEffect : ~m? -# 803| v803_5(void) = ^IndirectReadSideEffect[-1] : &:r803_1, ~m? -# 803| mu803_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r803_1 -# 803| r803_7(bool) = Constant[0] : -# 803| v803_8(void) = ConditionalBranch : r803_7 +# 35| Block 262 +# 35| r35_3655(glval) = VariableAddress[x261] : +# 35| mu35_3656(String) = Uninitialized[x261] : &:r35_3655 +# 35| r35_3657(glval) = FunctionAddress[String] : +# 35| v35_3658(void) = Call[String] : func:r35_3657, this:r35_3655 +# 35| mu35_3659(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3660(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3655 +# 35| r35_3661(glval) = VariableAddress[x261] : +# 35| r35_3662(glval) = FunctionAddress[~String] : +# 35| v35_3663(void) = Call[~String] : func:r35_3662, this:r35_3661 +# 35| mu35_3664(unknown) = ^CallSideEffect : ~m? +# 35| v35_3665(void) = ^IndirectReadSideEffect[-1] : &:r35_3661, ~m? +# 35| mu35_3666(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3661 +# 35| r35_3667(bool) = Constant[0] : +# 35| v35_3668(void) = ConditionalBranch : r35_3667 #-----| False -> Block 263 #-----| True (back edge) -> Block 262 -# 805| Block 263 -# 805| r805_1(glval) = VariableAddress[x262] : -# 805| mu805_2(String) = Uninitialized[x262] : &:r805_1 -# 805| r805_3(glval) = FunctionAddress[String] : -# 805| v805_4(void) = Call[String] : func:r805_3, this:r805_1 -# 805| mu805_5(unknown) = ^CallSideEffect : ~m? -# 805| mu805_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r805_1 -# 806| r806_1(glval) = VariableAddress[x262] : -# 806| r806_2(glval) = FunctionAddress[~String] : -# 806| v806_3(void) = Call[~String] : func:r806_2, this:r806_1 -# 806| mu806_4(unknown) = ^CallSideEffect : ~m? -# 806| v806_5(void) = ^IndirectReadSideEffect[-1] : &:r806_1, ~m? -# 806| mu806_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r806_1 -# 806| r806_7(bool) = Constant[0] : -# 806| v806_8(void) = ConditionalBranch : r806_7 +# 35| Block 263 +# 35| r35_3669(glval) = VariableAddress[x262] : +# 35| mu35_3670(String) = Uninitialized[x262] : &:r35_3669 +# 35| r35_3671(glval) = FunctionAddress[String] : +# 35| v35_3672(void) = Call[String] : func:r35_3671, this:r35_3669 +# 35| mu35_3673(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3674(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3669 +# 35| r35_3675(glval) = VariableAddress[x262] : +# 35| r35_3676(glval) = FunctionAddress[~String] : +# 35| v35_3677(void) = Call[~String] : func:r35_3676, this:r35_3675 +# 35| mu35_3678(unknown) = ^CallSideEffect : ~m? +# 35| v35_3679(void) = ^IndirectReadSideEffect[-1] : &:r35_3675, ~m? +# 35| mu35_3680(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3675 +# 35| r35_3681(bool) = Constant[0] : +# 35| v35_3682(void) = ConditionalBranch : r35_3681 #-----| False -> Block 264 #-----| True (back edge) -> Block 263 -# 808| Block 264 -# 808| r808_1(glval) = VariableAddress[x263] : -# 808| mu808_2(String) = Uninitialized[x263] : &:r808_1 -# 808| r808_3(glval) = FunctionAddress[String] : -# 808| v808_4(void) = Call[String] : func:r808_3, this:r808_1 -# 808| mu808_5(unknown) = ^CallSideEffect : ~m? -# 808| mu808_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r808_1 -# 809| r809_1(glval) = VariableAddress[x263] : -# 809| r809_2(glval) = FunctionAddress[~String] : -# 809| v809_3(void) = Call[~String] : func:r809_2, this:r809_1 -# 809| mu809_4(unknown) = ^CallSideEffect : ~m? -# 809| v809_5(void) = ^IndirectReadSideEffect[-1] : &:r809_1, ~m? -# 809| mu809_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r809_1 -# 809| r809_7(bool) = Constant[0] : -# 809| v809_8(void) = ConditionalBranch : r809_7 +# 35| Block 264 +# 35| r35_3683(glval) = VariableAddress[x263] : +# 35| mu35_3684(String) = Uninitialized[x263] : &:r35_3683 +# 35| r35_3685(glval) = FunctionAddress[String] : +# 35| v35_3686(void) = Call[String] : func:r35_3685, this:r35_3683 +# 35| mu35_3687(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3688(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3683 +# 35| r35_3689(glval) = VariableAddress[x263] : +# 35| r35_3690(glval) = FunctionAddress[~String] : +# 35| v35_3691(void) = Call[~String] : func:r35_3690, this:r35_3689 +# 35| mu35_3692(unknown) = ^CallSideEffect : ~m? +# 35| v35_3693(void) = ^IndirectReadSideEffect[-1] : &:r35_3689, ~m? +# 35| mu35_3694(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3689 +# 35| r35_3695(bool) = Constant[0] : +# 35| v35_3696(void) = ConditionalBranch : r35_3695 #-----| False -> Block 265 #-----| True (back edge) -> Block 264 -# 811| Block 265 -# 811| r811_1(glval) = VariableAddress[x264] : -# 811| mu811_2(String) = Uninitialized[x264] : &:r811_1 -# 811| r811_3(glval) = FunctionAddress[String] : -# 811| v811_4(void) = Call[String] : func:r811_3, this:r811_1 -# 811| mu811_5(unknown) = ^CallSideEffect : ~m? -# 811| mu811_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r811_1 -# 812| r812_1(glval) = VariableAddress[x264] : -# 812| r812_2(glval) = FunctionAddress[~String] : -# 812| v812_3(void) = Call[~String] : func:r812_2, this:r812_1 -# 812| mu812_4(unknown) = ^CallSideEffect : ~m? -# 812| v812_5(void) = ^IndirectReadSideEffect[-1] : &:r812_1, ~m? -# 812| mu812_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r812_1 -# 812| r812_7(bool) = Constant[0] : -# 812| v812_8(void) = ConditionalBranch : r812_7 +# 35| Block 265 +# 35| r35_3697(glval) = VariableAddress[x264] : +# 35| mu35_3698(String) = Uninitialized[x264] : &:r35_3697 +# 35| r35_3699(glval) = FunctionAddress[String] : +# 35| v35_3700(void) = Call[String] : func:r35_3699, this:r35_3697 +# 35| mu35_3701(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3702(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3697 +# 35| r35_3703(glval) = VariableAddress[x264] : +# 35| r35_3704(glval) = FunctionAddress[~String] : +# 35| v35_3705(void) = Call[~String] : func:r35_3704, this:r35_3703 +# 35| mu35_3706(unknown) = ^CallSideEffect : ~m? +# 35| v35_3707(void) = ^IndirectReadSideEffect[-1] : &:r35_3703, ~m? +# 35| mu35_3708(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3703 +# 35| r35_3709(bool) = Constant[0] : +# 35| v35_3710(void) = ConditionalBranch : r35_3709 #-----| False -> Block 266 #-----| True (back edge) -> Block 265 -# 814| Block 266 -# 814| r814_1(glval) = VariableAddress[x265] : -# 814| mu814_2(String) = Uninitialized[x265] : &:r814_1 -# 814| r814_3(glval) = FunctionAddress[String] : -# 814| v814_4(void) = Call[String] : func:r814_3, this:r814_1 -# 814| mu814_5(unknown) = ^CallSideEffect : ~m? -# 814| mu814_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r814_1 -# 815| r815_1(glval) = VariableAddress[x265] : -# 815| r815_2(glval) = FunctionAddress[~String] : -# 815| v815_3(void) = Call[~String] : func:r815_2, this:r815_1 -# 815| mu815_4(unknown) = ^CallSideEffect : ~m? -# 815| v815_5(void) = ^IndirectReadSideEffect[-1] : &:r815_1, ~m? -# 815| mu815_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r815_1 -# 815| r815_7(bool) = Constant[0] : -# 815| v815_8(void) = ConditionalBranch : r815_7 +# 35| Block 266 +# 35| r35_3711(glval) = VariableAddress[x265] : +# 35| mu35_3712(String) = Uninitialized[x265] : &:r35_3711 +# 35| r35_3713(glval) = FunctionAddress[String] : +# 35| v35_3714(void) = Call[String] : func:r35_3713, this:r35_3711 +# 35| mu35_3715(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3716(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3711 +# 35| r35_3717(glval) = VariableAddress[x265] : +# 35| r35_3718(glval) = FunctionAddress[~String] : +# 35| v35_3719(void) = Call[~String] : func:r35_3718, this:r35_3717 +# 35| mu35_3720(unknown) = ^CallSideEffect : ~m? +# 35| v35_3721(void) = ^IndirectReadSideEffect[-1] : &:r35_3717, ~m? +# 35| mu35_3722(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3717 +# 35| r35_3723(bool) = Constant[0] : +# 35| v35_3724(void) = ConditionalBranch : r35_3723 #-----| False -> Block 267 #-----| True (back edge) -> Block 266 -# 817| Block 267 -# 817| r817_1(glval) = VariableAddress[x266] : -# 817| mu817_2(String) = Uninitialized[x266] : &:r817_1 -# 817| r817_3(glval) = FunctionAddress[String] : -# 817| v817_4(void) = Call[String] : func:r817_3, this:r817_1 -# 817| mu817_5(unknown) = ^CallSideEffect : ~m? -# 817| mu817_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r817_1 -# 818| r818_1(glval) = VariableAddress[x266] : -# 818| r818_2(glval) = FunctionAddress[~String] : -# 818| v818_3(void) = Call[~String] : func:r818_2, this:r818_1 -# 818| mu818_4(unknown) = ^CallSideEffect : ~m? -# 818| v818_5(void) = ^IndirectReadSideEffect[-1] : &:r818_1, ~m? -# 818| mu818_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r818_1 -# 818| r818_7(bool) = Constant[0] : -# 818| v818_8(void) = ConditionalBranch : r818_7 +# 35| Block 267 +# 35| r35_3725(glval) = VariableAddress[x266] : +# 35| mu35_3726(String) = Uninitialized[x266] : &:r35_3725 +# 35| r35_3727(glval) = FunctionAddress[String] : +# 35| v35_3728(void) = Call[String] : func:r35_3727, this:r35_3725 +# 35| mu35_3729(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3730(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3725 +# 35| r35_3731(glval) = VariableAddress[x266] : +# 35| r35_3732(glval) = FunctionAddress[~String] : +# 35| v35_3733(void) = Call[~String] : func:r35_3732, this:r35_3731 +# 35| mu35_3734(unknown) = ^CallSideEffect : ~m? +# 35| v35_3735(void) = ^IndirectReadSideEffect[-1] : &:r35_3731, ~m? +# 35| mu35_3736(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3731 +# 35| r35_3737(bool) = Constant[0] : +# 35| v35_3738(void) = ConditionalBranch : r35_3737 #-----| False -> Block 268 #-----| True (back edge) -> Block 267 -# 820| Block 268 -# 820| r820_1(glval) = VariableAddress[x267] : -# 820| mu820_2(String) = Uninitialized[x267] : &:r820_1 -# 820| r820_3(glval) = FunctionAddress[String] : -# 820| v820_4(void) = Call[String] : func:r820_3, this:r820_1 -# 820| mu820_5(unknown) = ^CallSideEffect : ~m? -# 820| mu820_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r820_1 -# 821| r821_1(glval) = VariableAddress[x267] : -# 821| r821_2(glval) = FunctionAddress[~String] : -# 821| v821_3(void) = Call[~String] : func:r821_2, this:r821_1 -# 821| mu821_4(unknown) = ^CallSideEffect : ~m? -# 821| v821_5(void) = ^IndirectReadSideEffect[-1] : &:r821_1, ~m? -# 821| mu821_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r821_1 -# 821| r821_7(bool) = Constant[0] : -# 821| v821_8(void) = ConditionalBranch : r821_7 +# 35| Block 268 +# 35| r35_3739(glval) = VariableAddress[x267] : +# 35| mu35_3740(String) = Uninitialized[x267] : &:r35_3739 +# 35| r35_3741(glval) = FunctionAddress[String] : +# 35| v35_3742(void) = Call[String] : func:r35_3741, this:r35_3739 +# 35| mu35_3743(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3744(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3739 +# 35| r35_3745(glval) = VariableAddress[x267] : +# 35| r35_3746(glval) = FunctionAddress[~String] : +# 35| v35_3747(void) = Call[~String] : func:r35_3746, this:r35_3745 +# 35| mu35_3748(unknown) = ^CallSideEffect : ~m? +# 35| v35_3749(void) = ^IndirectReadSideEffect[-1] : &:r35_3745, ~m? +# 35| mu35_3750(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3745 +# 35| r35_3751(bool) = Constant[0] : +# 35| v35_3752(void) = ConditionalBranch : r35_3751 #-----| False -> Block 269 #-----| True (back edge) -> Block 268 -# 823| Block 269 -# 823| r823_1(glval) = VariableAddress[x268] : -# 823| mu823_2(String) = Uninitialized[x268] : &:r823_1 -# 823| r823_3(glval) = FunctionAddress[String] : -# 823| v823_4(void) = Call[String] : func:r823_3, this:r823_1 -# 823| mu823_5(unknown) = ^CallSideEffect : ~m? -# 823| mu823_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r823_1 -# 824| r824_1(glval) = VariableAddress[x268] : -# 824| r824_2(glval) = FunctionAddress[~String] : -# 824| v824_3(void) = Call[~String] : func:r824_2, this:r824_1 -# 824| mu824_4(unknown) = ^CallSideEffect : ~m? -# 824| v824_5(void) = ^IndirectReadSideEffect[-1] : &:r824_1, ~m? -# 824| mu824_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r824_1 -# 824| r824_7(bool) = Constant[0] : -# 824| v824_8(void) = ConditionalBranch : r824_7 +# 35| Block 269 +# 35| r35_3753(glval) = VariableAddress[x268] : +# 35| mu35_3754(String) = Uninitialized[x268] : &:r35_3753 +# 35| r35_3755(glval) = FunctionAddress[String] : +# 35| v35_3756(void) = Call[String] : func:r35_3755, this:r35_3753 +# 35| mu35_3757(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3758(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3753 +# 35| r35_3759(glval) = VariableAddress[x268] : +# 35| r35_3760(glval) = FunctionAddress[~String] : +# 35| v35_3761(void) = Call[~String] : func:r35_3760, this:r35_3759 +# 35| mu35_3762(unknown) = ^CallSideEffect : ~m? +# 35| v35_3763(void) = ^IndirectReadSideEffect[-1] : &:r35_3759, ~m? +# 35| mu35_3764(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3759 +# 35| r35_3765(bool) = Constant[0] : +# 35| v35_3766(void) = ConditionalBranch : r35_3765 #-----| False -> Block 270 #-----| True (back edge) -> Block 269 -# 826| Block 270 -# 826| r826_1(glval) = VariableAddress[x269] : -# 826| mu826_2(String) = Uninitialized[x269] : &:r826_1 -# 826| r826_3(glval) = FunctionAddress[String] : -# 826| v826_4(void) = Call[String] : func:r826_3, this:r826_1 -# 826| mu826_5(unknown) = ^CallSideEffect : ~m? -# 826| mu826_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r826_1 -# 827| r827_1(glval) = VariableAddress[x269] : -# 827| r827_2(glval) = FunctionAddress[~String] : -# 827| v827_3(void) = Call[~String] : func:r827_2, this:r827_1 -# 827| mu827_4(unknown) = ^CallSideEffect : ~m? -# 827| v827_5(void) = ^IndirectReadSideEffect[-1] : &:r827_1, ~m? -# 827| mu827_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r827_1 -# 827| r827_7(bool) = Constant[0] : -# 827| v827_8(void) = ConditionalBranch : r827_7 +# 35| Block 270 +# 35| r35_3767(glval) = VariableAddress[x269] : +# 35| mu35_3768(String) = Uninitialized[x269] : &:r35_3767 +# 35| r35_3769(glval) = FunctionAddress[String] : +# 35| v35_3770(void) = Call[String] : func:r35_3769, this:r35_3767 +# 35| mu35_3771(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3772(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3767 +# 35| r35_3773(glval) = VariableAddress[x269] : +# 35| r35_3774(glval) = FunctionAddress[~String] : +# 35| v35_3775(void) = Call[~String] : func:r35_3774, this:r35_3773 +# 35| mu35_3776(unknown) = ^CallSideEffect : ~m? +# 35| v35_3777(void) = ^IndirectReadSideEffect[-1] : &:r35_3773, ~m? +# 35| mu35_3778(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3773 +# 35| r35_3779(bool) = Constant[0] : +# 35| v35_3780(void) = ConditionalBranch : r35_3779 #-----| False -> Block 271 #-----| True (back edge) -> Block 270 -# 829| Block 271 -# 829| r829_1(glval) = VariableAddress[x270] : -# 829| mu829_2(String) = Uninitialized[x270] : &:r829_1 -# 829| r829_3(glval) = FunctionAddress[String] : -# 829| v829_4(void) = Call[String] : func:r829_3, this:r829_1 -# 829| mu829_5(unknown) = ^CallSideEffect : ~m? -# 829| mu829_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r829_1 -# 830| r830_1(glval) = VariableAddress[x270] : -# 830| r830_2(glval) = FunctionAddress[~String] : -# 830| v830_3(void) = Call[~String] : func:r830_2, this:r830_1 -# 830| mu830_4(unknown) = ^CallSideEffect : ~m? -# 830| v830_5(void) = ^IndirectReadSideEffect[-1] : &:r830_1, ~m? -# 830| mu830_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r830_1 -# 830| r830_7(bool) = Constant[0] : -# 830| v830_8(void) = ConditionalBranch : r830_7 +# 35| Block 271 +# 35| r35_3781(glval) = VariableAddress[x270] : +# 35| mu35_3782(String) = Uninitialized[x270] : &:r35_3781 +# 35| r35_3783(glval) = FunctionAddress[String] : +# 35| v35_3784(void) = Call[String] : func:r35_3783, this:r35_3781 +# 35| mu35_3785(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3786(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3781 +# 35| r35_3787(glval) = VariableAddress[x270] : +# 35| r35_3788(glval) = FunctionAddress[~String] : +# 35| v35_3789(void) = Call[~String] : func:r35_3788, this:r35_3787 +# 35| mu35_3790(unknown) = ^CallSideEffect : ~m? +# 35| v35_3791(void) = ^IndirectReadSideEffect[-1] : &:r35_3787, ~m? +# 35| mu35_3792(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3787 +# 35| r35_3793(bool) = Constant[0] : +# 35| v35_3794(void) = ConditionalBranch : r35_3793 #-----| False -> Block 272 #-----| True (back edge) -> Block 271 -# 832| Block 272 -# 832| r832_1(glval) = VariableAddress[x271] : -# 832| mu832_2(String) = Uninitialized[x271] : &:r832_1 -# 832| r832_3(glval) = FunctionAddress[String] : -# 832| v832_4(void) = Call[String] : func:r832_3, this:r832_1 -# 832| mu832_5(unknown) = ^CallSideEffect : ~m? -# 832| mu832_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r832_1 -# 833| r833_1(glval) = VariableAddress[x271] : -# 833| r833_2(glval) = FunctionAddress[~String] : -# 833| v833_3(void) = Call[~String] : func:r833_2, this:r833_1 -# 833| mu833_4(unknown) = ^CallSideEffect : ~m? -# 833| v833_5(void) = ^IndirectReadSideEffect[-1] : &:r833_1, ~m? -# 833| mu833_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r833_1 -# 833| r833_7(bool) = Constant[0] : -# 833| v833_8(void) = ConditionalBranch : r833_7 +# 35| Block 272 +# 35| r35_3795(glval) = VariableAddress[x271] : +# 35| mu35_3796(String) = Uninitialized[x271] : &:r35_3795 +# 35| r35_3797(glval) = FunctionAddress[String] : +# 35| v35_3798(void) = Call[String] : func:r35_3797, this:r35_3795 +# 35| mu35_3799(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3800(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3795 +# 35| r35_3801(glval) = VariableAddress[x271] : +# 35| r35_3802(glval) = FunctionAddress[~String] : +# 35| v35_3803(void) = Call[~String] : func:r35_3802, this:r35_3801 +# 35| mu35_3804(unknown) = ^CallSideEffect : ~m? +# 35| v35_3805(void) = ^IndirectReadSideEffect[-1] : &:r35_3801, ~m? +# 35| mu35_3806(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3801 +# 35| r35_3807(bool) = Constant[0] : +# 35| v35_3808(void) = ConditionalBranch : r35_3807 #-----| False -> Block 273 #-----| True (back edge) -> Block 272 -# 835| Block 273 -# 835| r835_1(glval) = VariableAddress[x272] : -# 835| mu835_2(String) = Uninitialized[x272] : &:r835_1 -# 835| r835_3(glval) = FunctionAddress[String] : -# 835| v835_4(void) = Call[String] : func:r835_3, this:r835_1 -# 835| mu835_5(unknown) = ^CallSideEffect : ~m? -# 835| mu835_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r835_1 -# 836| r836_1(glval) = VariableAddress[x272] : -# 836| r836_2(glval) = FunctionAddress[~String] : -# 836| v836_3(void) = Call[~String] : func:r836_2, this:r836_1 -# 836| mu836_4(unknown) = ^CallSideEffect : ~m? -# 836| v836_5(void) = ^IndirectReadSideEffect[-1] : &:r836_1, ~m? -# 836| mu836_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r836_1 -# 836| r836_7(bool) = Constant[0] : -# 836| v836_8(void) = ConditionalBranch : r836_7 +# 35| Block 273 +# 35| r35_3809(glval) = VariableAddress[x272] : +# 35| mu35_3810(String) = Uninitialized[x272] : &:r35_3809 +# 35| r35_3811(glval) = FunctionAddress[String] : +# 35| v35_3812(void) = Call[String] : func:r35_3811, this:r35_3809 +# 35| mu35_3813(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3814(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3809 +# 35| r35_3815(glval) = VariableAddress[x272] : +# 35| r35_3816(glval) = FunctionAddress[~String] : +# 35| v35_3817(void) = Call[~String] : func:r35_3816, this:r35_3815 +# 35| mu35_3818(unknown) = ^CallSideEffect : ~m? +# 35| v35_3819(void) = ^IndirectReadSideEffect[-1] : &:r35_3815, ~m? +# 35| mu35_3820(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3815 +# 35| r35_3821(bool) = Constant[0] : +# 35| v35_3822(void) = ConditionalBranch : r35_3821 #-----| False -> Block 274 #-----| True (back edge) -> Block 273 -# 838| Block 274 -# 838| r838_1(glval) = VariableAddress[x273] : -# 838| mu838_2(String) = Uninitialized[x273] : &:r838_1 -# 838| r838_3(glval) = FunctionAddress[String] : -# 838| v838_4(void) = Call[String] : func:r838_3, this:r838_1 -# 838| mu838_5(unknown) = ^CallSideEffect : ~m? -# 838| mu838_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r838_1 -# 839| r839_1(glval) = VariableAddress[x273] : -# 839| r839_2(glval) = FunctionAddress[~String] : -# 839| v839_3(void) = Call[~String] : func:r839_2, this:r839_1 -# 839| mu839_4(unknown) = ^CallSideEffect : ~m? -# 839| v839_5(void) = ^IndirectReadSideEffect[-1] : &:r839_1, ~m? -# 839| mu839_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r839_1 -# 839| r839_7(bool) = Constant[0] : -# 839| v839_8(void) = ConditionalBranch : r839_7 +# 35| Block 274 +# 35| r35_3823(glval) = VariableAddress[x273] : +# 35| mu35_3824(String) = Uninitialized[x273] : &:r35_3823 +# 35| r35_3825(glval) = FunctionAddress[String] : +# 35| v35_3826(void) = Call[String] : func:r35_3825, this:r35_3823 +# 35| mu35_3827(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3828(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3823 +# 35| r35_3829(glval) = VariableAddress[x273] : +# 35| r35_3830(glval) = FunctionAddress[~String] : +# 35| v35_3831(void) = Call[~String] : func:r35_3830, this:r35_3829 +# 35| mu35_3832(unknown) = ^CallSideEffect : ~m? +# 35| v35_3833(void) = ^IndirectReadSideEffect[-1] : &:r35_3829, ~m? +# 35| mu35_3834(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3829 +# 35| r35_3835(bool) = Constant[0] : +# 35| v35_3836(void) = ConditionalBranch : r35_3835 #-----| False -> Block 275 #-----| True (back edge) -> Block 274 -# 841| Block 275 -# 841| r841_1(glval) = VariableAddress[x274] : -# 841| mu841_2(String) = Uninitialized[x274] : &:r841_1 -# 841| r841_3(glval) = FunctionAddress[String] : -# 841| v841_4(void) = Call[String] : func:r841_3, this:r841_1 -# 841| mu841_5(unknown) = ^CallSideEffect : ~m? -# 841| mu841_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r841_1 -# 842| r842_1(glval) = VariableAddress[x274] : -# 842| r842_2(glval) = FunctionAddress[~String] : -# 842| v842_3(void) = Call[~String] : func:r842_2, this:r842_1 -# 842| mu842_4(unknown) = ^CallSideEffect : ~m? -# 842| v842_5(void) = ^IndirectReadSideEffect[-1] : &:r842_1, ~m? -# 842| mu842_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r842_1 -# 842| r842_7(bool) = Constant[0] : -# 842| v842_8(void) = ConditionalBranch : r842_7 +# 35| Block 275 +# 35| r35_3837(glval) = VariableAddress[x274] : +# 35| mu35_3838(String) = Uninitialized[x274] : &:r35_3837 +# 35| r35_3839(glval) = FunctionAddress[String] : +# 35| v35_3840(void) = Call[String] : func:r35_3839, this:r35_3837 +# 35| mu35_3841(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3842(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3837 +# 35| r35_3843(glval) = VariableAddress[x274] : +# 35| r35_3844(glval) = FunctionAddress[~String] : +# 35| v35_3845(void) = Call[~String] : func:r35_3844, this:r35_3843 +# 35| mu35_3846(unknown) = ^CallSideEffect : ~m? +# 35| v35_3847(void) = ^IndirectReadSideEffect[-1] : &:r35_3843, ~m? +# 35| mu35_3848(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3843 +# 35| r35_3849(bool) = Constant[0] : +# 35| v35_3850(void) = ConditionalBranch : r35_3849 #-----| False -> Block 276 #-----| True (back edge) -> Block 275 -# 844| Block 276 -# 844| r844_1(glval) = VariableAddress[x275] : -# 844| mu844_2(String) = Uninitialized[x275] : &:r844_1 -# 844| r844_3(glval) = FunctionAddress[String] : -# 844| v844_4(void) = Call[String] : func:r844_3, this:r844_1 -# 844| mu844_5(unknown) = ^CallSideEffect : ~m? -# 844| mu844_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r844_1 -# 845| r845_1(glval) = VariableAddress[x275] : -# 845| r845_2(glval) = FunctionAddress[~String] : -# 845| v845_3(void) = Call[~String] : func:r845_2, this:r845_1 -# 845| mu845_4(unknown) = ^CallSideEffect : ~m? -# 845| v845_5(void) = ^IndirectReadSideEffect[-1] : &:r845_1, ~m? -# 845| mu845_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r845_1 -# 845| r845_7(bool) = Constant[0] : -# 845| v845_8(void) = ConditionalBranch : r845_7 +# 35| Block 276 +# 35| r35_3851(glval) = VariableAddress[x275] : +# 35| mu35_3852(String) = Uninitialized[x275] : &:r35_3851 +# 35| r35_3853(glval) = FunctionAddress[String] : +# 35| v35_3854(void) = Call[String] : func:r35_3853, this:r35_3851 +# 35| mu35_3855(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3856(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3851 +# 35| r35_3857(glval) = VariableAddress[x275] : +# 35| r35_3858(glval) = FunctionAddress[~String] : +# 35| v35_3859(void) = Call[~String] : func:r35_3858, this:r35_3857 +# 35| mu35_3860(unknown) = ^CallSideEffect : ~m? +# 35| v35_3861(void) = ^IndirectReadSideEffect[-1] : &:r35_3857, ~m? +# 35| mu35_3862(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3857 +# 35| r35_3863(bool) = Constant[0] : +# 35| v35_3864(void) = ConditionalBranch : r35_3863 #-----| False -> Block 277 #-----| True (back edge) -> Block 276 -# 847| Block 277 -# 847| r847_1(glval) = VariableAddress[x276] : -# 847| mu847_2(String) = Uninitialized[x276] : &:r847_1 -# 847| r847_3(glval) = FunctionAddress[String] : -# 847| v847_4(void) = Call[String] : func:r847_3, this:r847_1 -# 847| mu847_5(unknown) = ^CallSideEffect : ~m? -# 847| mu847_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r847_1 -# 848| r848_1(glval) = VariableAddress[x276] : -# 848| r848_2(glval) = FunctionAddress[~String] : -# 848| v848_3(void) = Call[~String] : func:r848_2, this:r848_1 -# 848| mu848_4(unknown) = ^CallSideEffect : ~m? -# 848| v848_5(void) = ^IndirectReadSideEffect[-1] : &:r848_1, ~m? -# 848| mu848_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r848_1 -# 848| r848_7(bool) = Constant[0] : -# 848| v848_8(void) = ConditionalBranch : r848_7 +# 35| Block 277 +# 35| r35_3865(glval) = VariableAddress[x276] : +# 35| mu35_3866(String) = Uninitialized[x276] : &:r35_3865 +# 35| r35_3867(glval) = FunctionAddress[String] : +# 35| v35_3868(void) = Call[String] : func:r35_3867, this:r35_3865 +# 35| mu35_3869(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3870(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3865 +# 35| r35_3871(glval) = VariableAddress[x276] : +# 35| r35_3872(glval) = FunctionAddress[~String] : +# 35| v35_3873(void) = Call[~String] : func:r35_3872, this:r35_3871 +# 35| mu35_3874(unknown) = ^CallSideEffect : ~m? +# 35| v35_3875(void) = ^IndirectReadSideEffect[-1] : &:r35_3871, ~m? +# 35| mu35_3876(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3871 +# 35| r35_3877(bool) = Constant[0] : +# 35| v35_3878(void) = ConditionalBranch : r35_3877 #-----| False -> Block 278 #-----| True (back edge) -> Block 277 -# 850| Block 278 -# 850| r850_1(glval) = VariableAddress[x277] : -# 850| mu850_2(String) = Uninitialized[x277] : &:r850_1 -# 850| r850_3(glval) = FunctionAddress[String] : -# 850| v850_4(void) = Call[String] : func:r850_3, this:r850_1 -# 850| mu850_5(unknown) = ^CallSideEffect : ~m? -# 850| mu850_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r850_1 -# 851| r851_1(glval) = VariableAddress[x277] : -# 851| r851_2(glval) = FunctionAddress[~String] : -# 851| v851_3(void) = Call[~String] : func:r851_2, this:r851_1 -# 851| mu851_4(unknown) = ^CallSideEffect : ~m? -# 851| v851_5(void) = ^IndirectReadSideEffect[-1] : &:r851_1, ~m? -# 851| mu851_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r851_1 -# 851| r851_7(bool) = Constant[0] : -# 851| v851_8(void) = ConditionalBranch : r851_7 +# 35| Block 278 +# 35| r35_3879(glval) = VariableAddress[x277] : +# 35| mu35_3880(String) = Uninitialized[x277] : &:r35_3879 +# 35| r35_3881(glval) = FunctionAddress[String] : +# 35| v35_3882(void) = Call[String] : func:r35_3881, this:r35_3879 +# 35| mu35_3883(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3884(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3879 +# 35| r35_3885(glval) = VariableAddress[x277] : +# 35| r35_3886(glval) = FunctionAddress[~String] : +# 35| v35_3887(void) = Call[~String] : func:r35_3886, this:r35_3885 +# 35| mu35_3888(unknown) = ^CallSideEffect : ~m? +# 35| v35_3889(void) = ^IndirectReadSideEffect[-1] : &:r35_3885, ~m? +# 35| mu35_3890(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3885 +# 35| r35_3891(bool) = Constant[0] : +# 35| v35_3892(void) = ConditionalBranch : r35_3891 #-----| False -> Block 279 #-----| True (back edge) -> Block 278 -# 853| Block 279 -# 853| r853_1(glval) = VariableAddress[x278] : -# 853| mu853_2(String) = Uninitialized[x278] : &:r853_1 -# 853| r853_3(glval) = FunctionAddress[String] : -# 853| v853_4(void) = Call[String] : func:r853_3, this:r853_1 -# 853| mu853_5(unknown) = ^CallSideEffect : ~m? -# 853| mu853_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r853_1 -# 854| r854_1(glval) = VariableAddress[x278] : -# 854| r854_2(glval) = FunctionAddress[~String] : -# 854| v854_3(void) = Call[~String] : func:r854_2, this:r854_1 -# 854| mu854_4(unknown) = ^CallSideEffect : ~m? -# 854| v854_5(void) = ^IndirectReadSideEffect[-1] : &:r854_1, ~m? -# 854| mu854_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r854_1 -# 854| r854_7(bool) = Constant[0] : -# 854| v854_8(void) = ConditionalBranch : r854_7 +# 35| Block 279 +# 35| r35_3893(glval) = VariableAddress[x278] : +# 35| mu35_3894(String) = Uninitialized[x278] : &:r35_3893 +# 35| r35_3895(glval) = FunctionAddress[String] : +# 35| v35_3896(void) = Call[String] : func:r35_3895, this:r35_3893 +# 35| mu35_3897(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3898(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3893 +# 35| r35_3899(glval) = VariableAddress[x278] : +# 35| r35_3900(glval) = FunctionAddress[~String] : +# 35| v35_3901(void) = Call[~String] : func:r35_3900, this:r35_3899 +# 35| mu35_3902(unknown) = ^CallSideEffect : ~m? +# 35| v35_3903(void) = ^IndirectReadSideEffect[-1] : &:r35_3899, ~m? +# 35| mu35_3904(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3899 +# 35| r35_3905(bool) = Constant[0] : +# 35| v35_3906(void) = ConditionalBranch : r35_3905 #-----| False -> Block 280 #-----| True (back edge) -> Block 279 -# 856| Block 280 -# 856| r856_1(glval) = VariableAddress[x279] : -# 856| mu856_2(String) = Uninitialized[x279] : &:r856_1 -# 856| r856_3(glval) = FunctionAddress[String] : -# 856| v856_4(void) = Call[String] : func:r856_3, this:r856_1 -# 856| mu856_5(unknown) = ^CallSideEffect : ~m? -# 856| mu856_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r856_1 -# 857| r857_1(glval) = VariableAddress[x279] : -# 857| r857_2(glval) = FunctionAddress[~String] : -# 857| v857_3(void) = Call[~String] : func:r857_2, this:r857_1 -# 857| mu857_4(unknown) = ^CallSideEffect : ~m? -# 857| v857_5(void) = ^IndirectReadSideEffect[-1] : &:r857_1, ~m? -# 857| mu857_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r857_1 -# 857| r857_7(bool) = Constant[0] : -# 857| v857_8(void) = ConditionalBranch : r857_7 +# 35| Block 280 +# 35| r35_3907(glval) = VariableAddress[x279] : +# 35| mu35_3908(String) = Uninitialized[x279] : &:r35_3907 +# 35| r35_3909(glval) = FunctionAddress[String] : +# 35| v35_3910(void) = Call[String] : func:r35_3909, this:r35_3907 +# 35| mu35_3911(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3912(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3907 +# 35| r35_3913(glval) = VariableAddress[x279] : +# 35| r35_3914(glval) = FunctionAddress[~String] : +# 35| v35_3915(void) = Call[~String] : func:r35_3914, this:r35_3913 +# 35| mu35_3916(unknown) = ^CallSideEffect : ~m? +# 35| v35_3917(void) = ^IndirectReadSideEffect[-1] : &:r35_3913, ~m? +# 35| mu35_3918(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3913 +# 35| r35_3919(bool) = Constant[0] : +# 35| v35_3920(void) = ConditionalBranch : r35_3919 #-----| False -> Block 281 #-----| True (back edge) -> Block 280 -# 859| Block 281 -# 859| r859_1(glval) = VariableAddress[x280] : -# 859| mu859_2(String) = Uninitialized[x280] : &:r859_1 -# 859| r859_3(glval) = FunctionAddress[String] : -# 859| v859_4(void) = Call[String] : func:r859_3, this:r859_1 -# 859| mu859_5(unknown) = ^CallSideEffect : ~m? -# 859| mu859_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r859_1 -# 860| r860_1(glval) = VariableAddress[x280] : -# 860| r860_2(glval) = FunctionAddress[~String] : -# 860| v860_3(void) = Call[~String] : func:r860_2, this:r860_1 -# 860| mu860_4(unknown) = ^CallSideEffect : ~m? -# 860| v860_5(void) = ^IndirectReadSideEffect[-1] : &:r860_1, ~m? -# 860| mu860_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r860_1 -# 860| r860_7(bool) = Constant[0] : -# 860| v860_8(void) = ConditionalBranch : r860_7 +# 35| Block 281 +# 35| r35_3921(glval) = VariableAddress[x280] : +# 35| mu35_3922(String) = Uninitialized[x280] : &:r35_3921 +# 35| r35_3923(glval) = FunctionAddress[String] : +# 35| v35_3924(void) = Call[String] : func:r35_3923, this:r35_3921 +# 35| mu35_3925(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3926(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3921 +# 35| r35_3927(glval) = VariableAddress[x280] : +# 35| r35_3928(glval) = FunctionAddress[~String] : +# 35| v35_3929(void) = Call[~String] : func:r35_3928, this:r35_3927 +# 35| mu35_3930(unknown) = ^CallSideEffect : ~m? +# 35| v35_3931(void) = ^IndirectReadSideEffect[-1] : &:r35_3927, ~m? +# 35| mu35_3932(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3927 +# 35| r35_3933(bool) = Constant[0] : +# 35| v35_3934(void) = ConditionalBranch : r35_3933 #-----| False -> Block 282 #-----| True (back edge) -> Block 281 -# 862| Block 282 -# 862| r862_1(glval) = VariableAddress[x281] : -# 862| mu862_2(String) = Uninitialized[x281] : &:r862_1 -# 862| r862_3(glval) = FunctionAddress[String] : -# 862| v862_4(void) = Call[String] : func:r862_3, this:r862_1 -# 862| mu862_5(unknown) = ^CallSideEffect : ~m? -# 862| mu862_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r862_1 -# 863| r863_1(glval) = VariableAddress[x281] : -# 863| r863_2(glval) = FunctionAddress[~String] : -# 863| v863_3(void) = Call[~String] : func:r863_2, this:r863_1 -# 863| mu863_4(unknown) = ^CallSideEffect : ~m? -# 863| v863_5(void) = ^IndirectReadSideEffect[-1] : &:r863_1, ~m? -# 863| mu863_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r863_1 -# 863| r863_7(bool) = Constant[0] : -# 863| v863_8(void) = ConditionalBranch : r863_7 +# 35| Block 282 +# 35| r35_3935(glval) = VariableAddress[x281] : +# 35| mu35_3936(String) = Uninitialized[x281] : &:r35_3935 +# 35| r35_3937(glval) = FunctionAddress[String] : +# 35| v35_3938(void) = Call[String] : func:r35_3937, this:r35_3935 +# 35| mu35_3939(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3940(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3935 +# 35| r35_3941(glval) = VariableAddress[x281] : +# 35| r35_3942(glval) = FunctionAddress[~String] : +# 35| v35_3943(void) = Call[~String] : func:r35_3942, this:r35_3941 +# 35| mu35_3944(unknown) = ^CallSideEffect : ~m? +# 35| v35_3945(void) = ^IndirectReadSideEffect[-1] : &:r35_3941, ~m? +# 35| mu35_3946(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3941 +# 35| r35_3947(bool) = Constant[0] : +# 35| v35_3948(void) = ConditionalBranch : r35_3947 #-----| False -> Block 283 #-----| True (back edge) -> Block 282 -# 865| Block 283 -# 865| r865_1(glval) = VariableAddress[x282] : -# 865| mu865_2(String) = Uninitialized[x282] : &:r865_1 -# 865| r865_3(glval) = FunctionAddress[String] : -# 865| v865_4(void) = Call[String] : func:r865_3, this:r865_1 -# 865| mu865_5(unknown) = ^CallSideEffect : ~m? -# 865| mu865_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r865_1 -# 866| r866_1(glval) = VariableAddress[x282] : -# 866| r866_2(glval) = FunctionAddress[~String] : -# 866| v866_3(void) = Call[~String] : func:r866_2, this:r866_1 -# 866| mu866_4(unknown) = ^CallSideEffect : ~m? -# 866| v866_5(void) = ^IndirectReadSideEffect[-1] : &:r866_1, ~m? -# 866| mu866_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r866_1 -# 866| r866_7(bool) = Constant[0] : -# 866| v866_8(void) = ConditionalBranch : r866_7 +# 35| Block 283 +# 35| r35_3949(glval) = VariableAddress[x282] : +# 35| mu35_3950(String) = Uninitialized[x282] : &:r35_3949 +# 35| r35_3951(glval) = FunctionAddress[String] : +# 35| v35_3952(void) = Call[String] : func:r35_3951, this:r35_3949 +# 35| mu35_3953(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3954(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3949 +# 35| r35_3955(glval) = VariableAddress[x282] : +# 35| r35_3956(glval) = FunctionAddress[~String] : +# 35| v35_3957(void) = Call[~String] : func:r35_3956, this:r35_3955 +# 35| mu35_3958(unknown) = ^CallSideEffect : ~m? +# 35| v35_3959(void) = ^IndirectReadSideEffect[-1] : &:r35_3955, ~m? +# 35| mu35_3960(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3955 +# 35| r35_3961(bool) = Constant[0] : +# 35| v35_3962(void) = ConditionalBranch : r35_3961 #-----| False -> Block 284 #-----| True (back edge) -> Block 283 -# 868| Block 284 -# 868| r868_1(glval) = VariableAddress[x283] : -# 868| mu868_2(String) = Uninitialized[x283] : &:r868_1 -# 868| r868_3(glval) = FunctionAddress[String] : -# 868| v868_4(void) = Call[String] : func:r868_3, this:r868_1 -# 868| mu868_5(unknown) = ^CallSideEffect : ~m? -# 868| mu868_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r868_1 -# 869| r869_1(glval) = VariableAddress[x283] : -# 869| r869_2(glval) = FunctionAddress[~String] : -# 869| v869_3(void) = Call[~String] : func:r869_2, this:r869_1 -# 869| mu869_4(unknown) = ^CallSideEffect : ~m? -# 869| v869_5(void) = ^IndirectReadSideEffect[-1] : &:r869_1, ~m? -# 869| mu869_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r869_1 -# 869| r869_7(bool) = Constant[0] : -# 869| v869_8(void) = ConditionalBranch : r869_7 +# 35| Block 284 +# 35| r35_3963(glval) = VariableAddress[x283] : +# 35| mu35_3964(String) = Uninitialized[x283] : &:r35_3963 +# 35| r35_3965(glval) = FunctionAddress[String] : +# 35| v35_3966(void) = Call[String] : func:r35_3965, this:r35_3963 +# 35| mu35_3967(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3968(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3963 +# 35| r35_3969(glval) = VariableAddress[x283] : +# 35| r35_3970(glval) = FunctionAddress[~String] : +# 35| v35_3971(void) = Call[~String] : func:r35_3970, this:r35_3969 +# 35| mu35_3972(unknown) = ^CallSideEffect : ~m? +# 35| v35_3973(void) = ^IndirectReadSideEffect[-1] : &:r35_3969, ~m? +# 35| mu35_3974(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3969 +# 35| r35_3975(bool) = Constant[0] : +# 35| v35_3976(void) = ConditionalBranch : r35_3975 #-----| False -> Block 285 #-----| True (back edge) -> Block 284 -# 871| Block 285 -# 871| r871_1(glval) = VariableAddress[x284] : -# 871| mu871_2(String) = Uninitialized[x284] : &:r871_1 -# 871| r871_3(glval) = FunctionAddress[String] : -# 871| v871_4(void) = Call[String] : func:r871_3, this:r871_1 -# 871| mu871_5(unknown) = ^CallSideEffect : ~m? -# 871| mu871_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r871_1 -# 872| r872_1(glval) = VariableAddress[x284] : -# 872| r872_2(glval) = FunctionAddress[~String] : -# 872| v872_3(void) = Call[~String] : func:r872_2, this:r872_1 -# 872| mu872_4(unknown) = ^CallSideEffect : ~m? -# 872| v872_5(void) = ^IndirectReadSideEffect[-1] : &:r872_1, ~m? -# 872| mu872_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r872_1 -# 872| r872_7(bool) = Constant[0] : -# 872| v872_8(void) = ConditionalBranch : r872_7 +# 35| Block 285 +# 35| r35_3977(glval) = VariableAddress[x284] : +# 35| mu35_3978(String) = Uninitialized[x284] : &:r35_3977 +# 35| r35_3979(glval) = FunctionAddress[String] : +# 35| v35_3980(void) = Call[String] : func:r35_3979, this:r35_3977 +# 35| mu35_3981(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3982(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3977 +# 35| r35_3983(glval) = VariableAddress[x284] : +# 35| r35_3984(glval) = FunctionAddress[~String] : +# 35| v35_3985(void) = Call[~String] : func:r35_3984, this:r35_3983 +# 35| mu35_3986(unknown) = ^CallSideEffect : ~m? +# 35| v35_3987(void) = ^IndirectReadSideEffect[-1] : &:r35_3983, ~m? +# 35| mu35_3988(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3983 +# 35| r35_3989(bool) = Constant[0] : +# 35| v35_3990(void) = ConditionalBranch : r35_3989 #-----| False -> Block 286 #-----| True (back edge) -> Block 285 -# 874| Block 286 -# 874| r874_1(glval) = VariableAddress[x285] : -# 874| mu874_2(String) = Uninitialized[x285] : &:r874_1 -# 874| r874_3(glval) = FunctionAddress[String] : -# 874| v874_4(void) = Call[String] : func:r874_3, this:r874_1 -# 874| mu874_5(unknown) = ^CallSideEffect : ~m? -# 874| mu874_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r874_1 -# 875| r875_1(glval) = VariableAddress[x285] : -# 875| r875_2(glval) = FunctionAddress[~String] : -# 875| v875_3(void) = Call[~String] : func:r875_2, this:r875_1 -# 875| mu875_4(unknown) = ^CallSideEffect : ~m? -# 875| v875_5(void) = ^IndirectReadSideEffect[-1] : &:r875_1, ~m? -# 875| mu875_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r875_1 -# 875| r875_7(bool) = Constant[0] : -# 875| v875_8(void) = ConditionalBranch : r875_7 +# 35| Block 286 +# 35| r35_3991(glval) = VariableAddress[x285] : +# 35| mu35_3992(String) = Uninitialized[x285] : &:r35_3991 +# 35| r35_3993(glval) = FunctionAddress[String] : +# 35| v35_3994(void) = Call[String] : func:r35_3993, this:r35_3991 +# 35| mu35_3995(unknown) = ^CallSideEffect : ~m? +# 35| mu35_3996(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3991 +# 35| r35_3997(glval) = VariableAddress[x285] : +# 35| r35_3998(glval) = FunctionAddress[~String] : +# 35| v35_3999(void) = Call[~String] : func:r35_3998, this:r35_3997 +# 35| mu35_4000(unknown) = ^CallSideEffect : ~m? +# 35| v35_4001(void) = ^IndirectReadSideEffect[-1] : &:r35_3997, ~m? +# 35| mu35_4002(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_3997 +# 35| r35_4003(bool) = Constant[0] : +# 35| v35_4004(void) = ConditionalBranch : r35_4003 #-----| False -> Block 287 #-----| True (back edge) -> Block 286 -# 877| Block 287 -# 877| r877_1(glval) = VariableAddress[x286] : -# 877| mu877_2(String) = Uninitialized[x286] : &:r877_1 -# 877| r877_3(glval) = FunctionAddress[String] : -# 877| v877_4(void) = Call[String] : func:r877_3, this:r877_1 -# 877| mu877_5(unknown) = ^CallSideEffect : ~m? -# 877| mu877_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r877_1 -# 878| r878_1(glval) = VariableAddress[x286] : -# 878| r878_2(glval) = FunctionAddress[~String] : -# 878| v878_3(void) = Call[~String] : func:r878_2, this:r878_1 -# 878| mu878_4(unknown) = ^CallSideEffect : ~m? -# 878| v878_5(void) = ^IndirectReadSideEffect[-1] : &:r878_1, ~m? -# 878| mu878_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r878_1 -# 878| r878_7(bool) = Constant[0] : -# 878| v878_8(void) = ConditionalBranch : r878_7 +# 35| Block 287 +# 35| r35_4005(glval) = VariableAddress[x286] : +# 35| mu35_4006(String) = Uninitialized[x286] : &:r35_4005 +# 35| r35_4007(glval) = FunctionAddress[String] : +# 35| v35_4008(void) = Call[String] : func:r35_4007, this:r35_4005 +# 35| mu35_4009(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4010(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4005 +# 35| r35_4011(glval) = VariableAddress[x286] : +# 35| r35_4012(glval) = FunctionAddress[~String] : +# 35| v35_4013(void) = Call[~String] : func:r35_4012, this:r35_4011 +# 35| mu35_4014(unknown) = ^CallSideEffect : ~m? +# 35| v35_4015(void) = ^IndirectReadSideEffect[-1] : &:r35_4011, ~m? +# 35| mu35_4016(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4011 +# 35| r35_4017(bool) = Constant[0] : +# 35| v35_4018(void) = ConditionalBranch : r35_4017 #-----| False -> Block 288 #-----| True (back edge) -> Block 287 -# 880| Block 288 -# 880| r880_1(glval) = VariableAddress[x287] : -# 880| mu880_2(String) = Uninitialized[x287] : &:r880_1 -# 880| r880_3(glval) = FunctionAddress[String] : -# 880| v880_4(void) = Call[String] : func:r880_3, this:r880_1 -# 880| mu880_5(unknown) = ^CallSideEffect : ~m? -# 880| mu880_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r880_1 -# 881| r881_1(glval) = VariableAddress[x287] : -# 881| r881_2(glval) = FunctionAddress[~String] : -# 881| v881_3(void) = Call[~String] : func:r881_2, this:r881_1 -# 881| mu881_4(unknown) = ^CallSideEffect : ~m? -# 881| v881_5(void) = ^IndirectReadSideEffect[-1] : &:r881_1, ~m? -# 881| mu881_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r881_1 -# 881| r881_7(bool) = Constant[0] : -# 881| v881_8(void) = ConditionalBranch : r881_7 +# 35| Block 288 +# 35| r35_4019(glval) = VariableAddress[x287] : +# 35| mu35_4020(String) = Uninitialized[x287] : &:r35_4019 +# 35| r35_4021(glval) = FunctionAddress[String] : +# 35| v35_4022(void) = Call[String] : func:r35_4021, this:r35_4019 +# 35| mu35_4023(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4024(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4019 +# 35| r35_4025(glval) = VariableAddress[x287] : +# 35| r35_4026(glval) = FunctionAddress[~String] : +# 35| v35_4027(void) = Call[~String] : func:r35_4026, this:r35_4025 +# 35| mu35_4028(unknown) = ^CallSideEffect : ~m? +# 35| v35_4029(void) = ^IndirectReadSideEffect[-1] : &:r35_4025, ~m? +# 35| mu35_4030(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4025 +# 35| r35_4031(bool) = Constant[0] : +# 35| v35_4032(void) = ConditionalBranch : r35_4031 #-----| False -> Block 289 #-----| True (back edge) -> Block 288 -# 883| Block 289 -# 883| r883_1(glval) = VariableAddress[x288] : -# 883| mu883_2(String) = Uninitialized[x288] : &:r883_1 -# 883| r883_3(glval) = FunctionAddress[String] : -# 883| v883_4(void) = Call[String] : func:r883_3, this:r883_1 -# 883| mu883_5(unknown) = ^CallSideEffect : ~m? -# 883| mu883_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r883_1 -# 884| r884_1(glval) = VariableAddress[x288] : -# 884| r884_2(glval) = FunctionAddress[~String] : -# 884| v884_3(void) = Call[~String] : func:r884_2, this:r884_1 -# 884| mu884_4(unknown) = ^CallSideEffect : ~m? -# 884| v884_5(void) = ^IndirectReadSideEffect[-1] : &:r884_1, ~m? -# 884| mu884_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r884_1 -# 884| r884_7(bool) = Constant[0] : -# 884| v884_8(void) = ConditionalBranch : r884_7 +# 35| Block 289 +# 35| r35_4033(glval) = VariableAddress[x288] : +# 35| mu35_4034(String) = Uninitialized[x288] : &:r35_4033 +# 35| r35_4035(glval) = FunctionAddress[String] : +# 35| v35_4036(void) = Call[String] : func:r35_4035, this:r35_4033 +# 35| mu35_4037(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4038(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4033 +# 35| r35_4039(glval) = VariableAddress[x288] : +# 35| r35_4040(glval) = FunctionAddress[~String] : +# 35| v35_4041(void) = Call[~String] : func:r35_4040, this:r35_4039 +# 35| mu35_4042(unknown) = ^CallSideEffect : ~m? +# 35| v35_4043(void) = ^IndirectReadSideEffect[-1] : &:r35_4039, ~m? +# 35| mu35_4044(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4039 +# 35| r35_4045(bool) = Constant[0] : +# 35| v35_4046(void) = ConditionalBranch : r35_4045 #-----| False -> Block 290 #-----| True (back edge) -> Block 289 -# 886| Block 290 -# 886| r886_1(glval) = VariableAddress[x289] : -# 886| mu886_2(String) = Uninitialized[x289] : &:r886_1 -# 886| r886_3(glval) = FunctionAddress[String] : -# 886| v886_4(void) = Call[String] : func:r886_3, this:r886_1 -# 886| mu886_5(unknown) = ^CallSideEffect : ~m? -# 886| mu886_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r886_1 -# 887| r887_1(glval) = VariableAddress[x289] : -# 887| r887_2(glval) = FunctionAddress[~String] : -# 887| v887_3(void) = Call[~String] : func:r887_2, this:r887_1 -# 887| mu887_4(unknown) = ^CallSideEffect : ~m? -# 887| v887_5(void) = ^IndirectReadSideEffect[-1] : &:r887_1, ~m? -# 887| mu887_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r887_1 -# 887| r887_7(bool) = Constant[0] : -# 887| v887_8(void) = ConditionalBranch : r887_7 +# 35| Block 290 +# 35| r35_4047(glval) = VariableAddress[x289] : +# 35| mu35_4048(String) = Uninitialized[x289] : &:r35_4047 +# 35| r35_4049(glval) = FunctionAddress[String] : +# 35| v35_4050(void) = Call[String] : func:r35_4049, this:r35_4047 +# 35| mu35_4051(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4052(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4047 +# 35| r35_4053(glval) = VariableAddress[x289] : +# 35| r35_4054(glval) = FunctionAddress[~String] : +# 35| v35_4055(void) = Call[~String] : func:r35_4054, this:r35_4053 +# 35| mu35_4056(unknown) = ^CallSideEffect : ~m? +# 35| v35_4057(void) = ^IndirectReadSideEffect[-1] : &:r35_4053, ~m? +# 35| mu35_4058(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4053 +# 35| r35_4059(bool) = Constant[0] : +# 35| v35_4060(void) = ConditionalBranch : r35_4059 #-----| False -> Block 291 #-----| True (back edge) -> Block 290 -# 889| Block 291 -# 889| r889_1(glval) = VariableAddress[x290] : -# 889| mu889_2(String) = Uninitialized[x290] : &:r889_1 -# 889| r889_3(glval) = FunctionAddress[String] : -# 889| v889_4(void) = Call[String] : func:r889_3, this:r889_1 -# 889| mu889_5(unknown) = ^CallSideEffect : ~m? -# 889| mu889_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r889_1 -# 890| r890_1(glval) = VariableAddress[x290] : -# 890| r890_2(glval) = FunctionAddress[~String] : -# 890| v890_3(void) = Call[~String] : func:r890_2, this:r890_1 -# 890| mu890_4(unknown) = ^CallSideEffect : ~m? -# 890| v890_5(void) = ^IndirectReadSideEffect[-1] : &:r890_1, ~m? -# 890| mu890_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r890_1 -# 890| r890_7(bool) = Constant[0] : -# 890| v890_8(void) = ConditionalBranch : r890_7 +# 35| Block 291 +# 35| r35_4061(glval) = VariableAddress[x290] : +# 35| mu35_4062(String) = Uninitialized[x290] : &:r35_4061 +# 35| r35_4063(glval) = FunctionAddress[String] : +# 35| v35_4064(void) = Call[String] : func:r35_4063, this:r35_4061 +# 35| mu35_4065(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4066(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4061 +# 35| r35_4067(glval) = VariableAddress[x290] : +# 35| r35_4068(glval) = FunctionAddress[~String] : +# 35| v35_4069(void) = Call[~String] : func:r35_4068, this:r35_4067 +# 35| mu35_4070(unknown) = ^CallSideEffect : ~m? +# 35| v35_4071(void) = ^IndirectReadSideEffect[-1] : &:r35_4067, ~m? +# 35| mu35_4072(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4067 +# 35| r35_4073(bool) = Constant[0] : +# 35| v35_4074(void) = ConditionalBranch : r35_4073 #-----| False -> Block 292 #-----| True (back edge) -> Block 291 -# 892| Block 292 -# 892| r892_1(glval) = VariableAddress[x291] : -# 892| mu892_2(String) = Uninitialized[x291] : &:r892_1 -# 892| r892_3(glval) = FunctionAddress[String] : -# 892| v892_4(void) = Call[String] : func:r892_3, this:r892_1 -# 892| mu892_5(unknown) = ^CallSideEffect : ~m? -# 892| mu892_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r892_1 -# 893| r893_1(glval) = VariableAddress[x291] : -# 893| r893_2(glval) = FunctionAddress[~String] : -# 893| v893_3(void) = Call[~String] : func:r893_2, this:r893_1 -# 893| mu893_4(unknown) = ^CallSideEffect : ~m? -# 893| v893_5(void) = ^IndirectReadSideEffect[-1] : &:r893_1, ~m? -# 893| mu893_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r893_1 -# 893| r893_7(bool) = Constant[0] : -# 893| v893_8(void) = ConditionalBranch : r893_7 +# 35| Block 292 +# 35| r35_4075(glval) = VariableAddress[x291] : +# 35| mu35_4076(String) = Uninitialized[x291] : &:r35_4075 +# 35| r35_4077(glval) = FunctionAddress[String] : +# 35| v35_4078(void) = Call[String] : func:r35_4077, this:r35_4075 +# 35| mu35_4079(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4080(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4075 +# 35| r35_4081(glval) = VariableAddress[x291] : +# 35| r35_4082(glval) = FunctionAddress[~String] : +# 35| v35_4083(void) = Call[~String] : func:r35_4082, this:r35_4081 +# 35| mu35_4084(unknown) = ^CallSideEffect : ~m? +# 35| v35_4085(void) = ^IndirectReadSideEffect[-1] : &:r35_4081, ~m? +# 35| mu35_4086(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4081 +# 35| r35_4087(bool) = Constant[0] : +# 35| v35_4088(void) = ConditionalBranch : r35_4087 #-----| False -> Block 293 #-----| True (back edge) -> Block 292 -# 895| Block 293 -# 895| r895_1(glval) = VariableAddress[x292] : -# 895| mu895_2(String) = Uninitialized[x292] : &:r895_1 -# 895| r895_3(glval) = FunctionAddress[String] : -# 895| v895_4(void) = Call[String] : func:r895_3, this:r895_1 -# 895| mu895_5(unknown) = ^CallSideEffect : ~m? -# 895| mu895_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r895_1 -# 896| r896_1(glval) = VariableAddress[x292] : -# 896| r896_2(glval) = FunctionAddress[~String] : -# 896| v896_3(void) = Call[~String] : func:r896_2, this:r896_1 -# 896| mu896_4(unknown) = ^CallSideEffect : ~m? -# 896| v896_5(void) = ^IndirectReadSideEffect[-1] : &:r896_1, ~m? -# 896| mu896_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r896_1 -# 896| r896_7(bool) = Constant[0] : -# 896| v896_8(void) = ConditionalBranch : r896_7 +# 35| Block 293 +# 35| r35_4089(glval) = VariableAddress[x292] : +# 35| mu35_4090(String) = Uninitialized[x292] : &:r35_4089 +# 35| r35_4091(glval) = FunctionAddress[String] : +# 35| v35_4092(void) = Call[String] : func:r35_4091, this:r35_4089 +# 35| mu35_4093(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4094(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4089 +# 35| r35_4095(glval) = VariableAddress[x292] : +# 35| r35_4096(glval) = FunctionAddress[~String] : +# 35| v35_4097(void) = Call[~String] : func:r35_4096, this:r35_4095 +# 35| mu35_4098(unknown) = ^CallSideEffect : ~m? +# 35| v35_4099(void) = ^IndirectReadSideEffect[-1] : &:r35_4095, ~m? +# 35| mu35_4100(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4095 +# 35| r35_4101(bool) = Constant[0] : +# 35| v35_4102(void) = ConditionalBranch : r35_4101 #-----| False -> Block 294 #-----| True (back edge) -> Block 293 -# 898| Block 294 -# 898| r898_1(glval) = VariableAddress[x293] : -# 898| mu898_2(String) = Uninitialized[x293] : &:r898_1 -# 898| r898_3(glval) = FunctionAddress[String] : -# 898| v898_4(void) = Call[String] : func:r898_3, this:r898_1 -# 898| mu898_5(unknown) = ^CallSideEffect : ~m? -# 898| mu898_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r898_1 -# 899| r899_1(glval) = VariableAddress[x293] : -# 899| r899_2(glval) = FunctionAddress[~String] : -# 899| v899_3(void) = Call[~String] : func:r899_2, this:r899_1 -# 899| mu899_4(unknown) = ^CallSideEffect : ~m? -# 899| v899_5(void) = ^IndirectReadSideEffect[-1] : &:r899_1, ~m? -# 899| mu899_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r899_1 -# 899| r899_7(bool) = Constant[0] : -# 899| v899_8(void) = ConditionalBranch : r899_7 +# 35| Block 294 +# 35| r35_4103(glval) = VariableAddress[x293] : +# 35| mu35_4104(String) = Uninitialized[x293] : &:r35_4103 +# 35| r35_4105(glval) = FunctionAddress[String] : +# 35| v35_4106(void) = Call[String] : func:r35_4105, this:r35_4103 +# 35| mu35_4107(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4108(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4103 +# 35| r35_4109(glval) = VariableAddress[x293] : +# 35| r35_4110(glval) = FunctionAddress[~String] : +# 35| v35_4111(void) = Call[~String] : func:r35_4110, this:r35_4109 +# 35| mu35_4112(unknown) = ^CallSideEffect : ~m? +# 35| v35_4113(void) = ^IndirectReadSideEffect[-1] : &:r35_4109, ~m? +# 35| mu35_4114(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4109 +# 35| r35_4115(bool) = Constant[0] : +# 35| v35_4116(void) = ConditionalBranch : r35_4115 #-----| False -> Block 295 #-----| True (back edge) -> Block 294 -# 901| Block 295 -# 901| r901_1(glval) = VariableAddress[x294] : -# 901| mu901_2(String) = Uninitialized[x294] : &:r901_1 -# 901| r901_3(glval) = FunctionAddress[String] : -# 901| v901_4(void) = Call[String] : func:r901_3, this:r901_1 -# 901| mu901_5(unknown) = ^CallSideEffect : ~m? -# 901| mu901_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r901_1 -# 902| r902_1(glval) = VariableAddress[x294] : -# 902| r902_2(glval) = FunctionAddress[~String] : -# 902| v902_3(void) = Call[~String] : func:r902_2, this:r902_1 -# 902| mu902_4(unknown) = ^CallSideEffect : ~m? -# 902| v902_5(void) = ^IndirectReadSideEffect[-1] : &:r902_1, ~m? -# 902| mu902_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r902_1 -# 902| r902_7(bool) = Constant[0] : -# 902| v902_8(void) = ConditionalBranch : r902_7 +# 35| Block 295 +# 35| r35_4117(glval) = VariableAddress[x294] : +# 35| mu35_4118(String) = Uninitialized[x294] : &:r35_4117 +# 35| r35_4119(glval) = FunctionAddress[String] : +# 35| v35_4120(void) = Call[String] : func:r35_4119, this:r35_4117 +# 35| mu35_4121(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4122(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4117 +# 35| r35_4123(glval) = VariableAddress[x294] : +# 35| r35_4124(glval) = FunctionAddress[~String] : +# 35| v35_4125(void) = Call[~String] : func:r35_4124, this:r35_4123 +# 35| mu35_4126(unknown) = ^CallSideEffect : ~m? +# 35| v35_4127(void) = ^IndirectReadSideEffect[-1] : &:r35_4123, ~m? +# 35| mu35_4128(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4123 +# 35| r35_4129(bool) = Constant[0] : +# 35| v35_4130(void) = ConditionalBranch : r35_4129 #-----| False -> Block 296 #-----| True (back edge) -> Block 295 -# 904| Block 296 -# 904| r904_1(glval) = VariableAddress[x295] : -# 904| mu904_2(String) = Uninitialized[x295] : &:r904_1 -# 904| r904_3(glval) = FunctionAddress[String] : -# 904| v904_4(void) = Call[String] : func:r904_3, this:r904_1 -# 904| mu904_5(unknown) = ^CallSideEffect : ~m? -# 904| mu904_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r904_1 -# 905| r905_1(glval) = VariableAddress[x295] : -# 905| r905_2(glval) = FunctionAddress[~String] : -# 905| v905_3(void) = Call[~String] : func:r905_2, this:r905_1 -# 905| mu905_4(unknown) = ^CallSideEffect : ~m? -# 905| v905_5(void) = ^IndirectReadSideEffect[-1] : &:r905_1, ~m? -# 905| mu905_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r905_1 -# 905| r905_7(bool) = Constant[0] : -# 905| v905_8(void) = ConditionalBranch : r905_7 +# 35| Block 296 +# 35| r35_4131(glval) = VariableAddress[x295] : +# 35| mu35_4132(String) = Uninitialized[x295] : &:r35_4131 +# 35| r35_4133(glval) = FunctionAddress[String] : +# 35| v35_4134(void) = Call[String] : func:r35_4133, this:r35_4131 +# 35| mu35_4135(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4136(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4131 +# 35| r35_4137(glval) = VariableAddress[x295] : +# 35| r35_4138(glval) = FunctionAddress[~String] : +# 35| v35_4139(void) = Call[~String] : func:r35_4138, this:r35_4137 +# 35| mu35_4140(unknown) = ^CallSideEffect : ~m? +# 35| v35_4141(void) = ^IndirectReadSideEffect[-1] : &:r35_4137, ~m? +# 35| mu35_4142(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4137 +# 35| r35_4143(bool) = Constant[0] : +# 35| v35_4144(void) = ConditionalBranch : r35_4143 #-----| False -> Block 297 #-----| True (back edge) -> Block 296 -# 907| Block 297 -# 907| r907_1(glval) = VariableAddress[x296] : -# 907| mu907_2(String) = Uninitialized[x296] : &:r907_1 -# 907| r907_3(glval) = FunctionAddress[String] : -# 907| v907_4(void) = Call[String] : func:r907_3, this:r907_1 -# 907| mu907_5(unknown) = ^CallSideEffect : ~m? -# 907| mu907_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r907_1 -# 908| r908_1(glval) = VariableAddress[x296] : -# 908| r908_2(glval) = FunctionAddress[~String] : -# 908| v908_3(void) = Call[~String] : func:r908_2, this:r908_1 -# 908| mu908_4(unknown) = ^CallSideEffect : ~m? -# 908| v908_5(void) = ^IndirectReadSideEffect[-1] : &:r908_1, ~m? -# 908| mu908_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r908_1 -# 908| r908_7(bool) = Constant[0] : -# 908| v908_8(void) = ConditionalBranch : r908_7 +# 35| Block 297 +# 35| r35_4145(glval) = VariableAddress[x296] : +# 35| mu35_4146(String) = Uninitialized[x296] : &:r35_4145 +# 35| r35_4147(glval) = FunctionAddress[String] : +# 35| v35_4148(void) = Call[String] : func:r35_4147, this:r35_4145 +# 35| mu35_4149(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4150(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4145 +# 35| r35_4151(glval) = VariableAddress[x296] : +# 35| r35_4152(glval) = FunctionAddress[~String] : +# 35| v35_4153(void) = Call[~String] : func:r35_4152, this:r35_4151 +# 35| mu35_4154(unknown) = ^CallSideEffect : ~m? +# 35| v35_4155(void) = ^IndirectReadSideEffect[-1] : &:r35_4151, ~m? +# 35| mu35_4156(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4151 +# 35| r35_4157(bool) = Constant[0] : +# 35| v35_4158(void) = ConditionalBranch : r35_4157 #-----| False -> Block 298 #-----| True (back edge) -> Block 297 -# 910| Block 298 -# 910| r910_1(glval) = VariableAddress[x297] : -# 910| mu910_2(String) = Uninitialized[x297] : &:r910_1 -# 910| r910_3(glval) = FunctionAddress[String] : -# 910| v910_4(void) = Call[String] : func:r910_3, this:r910_1 -# 910| mu910_5(unknown) = ^CallSideEffect : ~m? -# 910| mu910_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r910_1 -# 911| r911_1(glval) = VariableAddress[x297] : -# 911| r911_2(glval) = FunctionAddress[~String] : -# 911| v911_3(void) = Call[~String] : func:r911_2, this:r911_1 -# 911| mu911_4(unknown) = ^CallSideEffect : ~m? -# 911| v911_5(void) = ^IndirectReadSideEffect[-1] : &:r911_1, ~m? -# 911| mu911_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r911_1 -# 911| r911_7(bool) = Constant[0] : -# 911| v911_8(void) = ConditionalBranch : r911_7 +# 35| Block 298 +# 35| r35_4159(glval) = VariableAddress[x297] : +# 35| mu35_4160(String) = Uninitialized[x297] : &:r35_4159 +# 35| r35_4161(glval) = FunctionAddress[String] : +# 35| v35_4162(void) = Call[String] : func:r35_4161, this:r35_4159 +# 35| mu35_4163(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4164(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4159 +# 35| r35_4165(glval) = VariableAddress[x297] : +# 35| r35_4166(glval) = FunctionAddress[~String] : +# 35| v35_4167(void) = Call[~String] : func:r35_4166, this:r35_4165 +# 35| mu35_4168(unknown) = ^CallSideEffect : ~m? +# 35| v35_4169(void) = ^IndirectReadSideEffect[-1] : &:r35_4165, ~m? +# 35| mu35_4170(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4165 +# 35| r35_4171(bool) = Constant[0] : +# 35| v35_4172(void) = ConditionalBranch : r35_4171 #-----| False -> Block 299 #-----| True (back edge) -> Block 298 -# 913| Block 299 -# 913| r913_1(glval) = VariableAddress[x298] : -# 913| mu913_2(String) = Uninitialized[x298] : &:r913_1 -# 913| r913_3(glval) = FunctionAddress[String] : -# 913| v913_4(void) = Call[String] : func:r913_3, this:r913_1 -# 913| mu913_5(unknown) = ^CallSideEffect : ~m? -# 913| mu913_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r913_1 -# 914| r914_1(glval) = VariableAddress[x298] : -# 914| r914_2(glval) = FunctionAddress[~String] : -# 914| v914_3(void) = Call[~String] : func:r914_2, this:r914_1 -# 914| mu914_4(unknown) = ^CallSideEffect : ~m? -# 914| v914_5(void) = ^IndirectReadSideEffect[-1] : &:r914_1, ~m? -# 914| mu914_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r914_1 -# 914| r914_7(bool) = Constant[0] : -# 914| v914_8(void) = ConditionalBranch : r914_7 +# 35| Block 299 +# 35| r35_4173(glval) = VariableAddress[x298] : +# 35| mu35_4174(String) = Uninitialized[x298] : &:r35_4173 +# 35| r35_4175(glval) = FunctionAddress[String] : +# 35| v35_4176(void) = Call[String] : func:r35_4175, this:r35_4173 +# 35| mu35_4177(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4178(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4173 +# 35| r35_4179(glval) = VariableAddress[x298] : +# 35| r35_4180(glval) = FunctionAddress[~String] : +# 35| v35_4181(void) = Call[~String] : func:r35_4180, this:r35_4179 +# 35| mu35_4182(unknown) = ^CallSideEffect : ~m? +# 35| v35_4183(void) = ^IndirectReadSideEffect[-1] : &:r35_4179, ~m? +# 35| mu35_4184(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4179 +# 35| r35_4185(bool) = Constant[0] : +# 35| v35_4186(void) = ConditionalBranch : r35_4185 #-----| False -> Block 300 #-----| True (back edge) -> Block 299 -# 916| Block 300 -# 916| r916_1(glval) = VariableAddress[x299] : -# 916| mu916_2(String) = Uninitialized[x299] : &:r916_1 -# 916| r916_3(glval) = FunctionAddress[String] : -# 916| v916_4(void) = Call[String] : func:r916_3, this:r916_1 -# 916| mu916_5(unknown) = ^CallSideEffect : ~m? -# 916| mu916_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r916_1 -# 917| r917_1(glval) = VariableAddress[x299] : -# 917| r917_2(glval) = FunctionAddress[~String] : -# 917| v917_3(void) = Call[~String] : func:r917_2, this:r917_1 -# 917| mu917_4(unknown) = ^CallSideEffect : ~m? -# 917| v917_5(void) = ^IndirectReadSideEffect[-1] : &:r917_1, ~m? -# 917| mu917_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r917_1 -# 917| r917_7(bool) = Constant[0] : -# 917| v917_8(void) = ConditionalBranch : r917_7 +# 35| Block 300 +# 35| r35_4187(glval) = VariableAddress[x299] : +# 35| mu35_4188(String) = Uninitialized[x299] : &:r35_4187 +# 35| r35_4189(glval) = FunctionAddress[String] : +# 35| v35_4190(void) = Call[String] : func:r35_4189, this:r35_4187 +# 35| mu35_4191(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4192(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4187 +# 35| r35_4193(glval) = VariableAddress[x299] : +# 35| r35_4194(glval) = FunctionAddress[~String] : +# 35| v35_4195(void) = Call[~String] : func:r35_4194, this:r35_4193 +# 35| mu35_4196(unknown) = ^CallSideEffect : ~m? +# 35| v35_4197(void) = ^IndirectReadSideEffect[-1] : &:r35_4193, ~m? +# 35| mu35_4198(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4193 +# 35| r35_4199(bool) = Constant[0] : +# 35| v35_4200(void) = ConditionalBranch : r35_4199 #-----| False -> Block 301 #-----| True (back edge) -> Block 300 -# 919| Block 301 -# 919| r919_1(glval) = VariableAddress[x300] : -# 919| mu919_2(String) = Uninitialized[x300] : &:r919_1 -# 919| r919_3(glval) = FunctionAddress[String] : -# 919| v919_4(void) = Call[String] : func:r919_3, this:r919_1 -# 919| mu919_5(unknown) = ^CallSideEffect : ~m? -# 919| mu919_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r919_1 -# 920| r920_1(glval) = VariableAddress[x300] : -# 920| r920_2(glval) = FunctionAddress[~String] : -# 920| v920_3(void) = Call[~String] : func:r920_2, this:r920_1 -# 920| mu920_4(unknown) = ^CallSideEffect : ~m? -# 920| v920_5(void) = ^IndirectReadSideEffect[-1] : &:r920_1, ~m? -# 920| mu920_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r920_1 -# 920| r920_7(bool) = Constant[0] : -# 920| v920_8(void) = ConditionalBranch : r920_7 +# 35| Block 301 +# 35| r35_4201(glval) = VariableAddress[x300] : +# 35| mu35_4202(String) = Uninitialized[x300] : &:r35_4201 +# 35| r35_4203(glval) = FunctionAddress[String] : +# 35| v35_4204(void) = Call[String] : func:r35_4203, this:r35_4201 +# 35| mu35_4205(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4206(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4201 +# 35| r35_4207(glval) = VariableAddress[x300] : +# 35| r35_4208(glval) = FunctionAddress[~String] : +# 35| v35_4209(void) = Call[~String] : func:r35_4208, this:r35_4207 +# 35| mu35_4210(unknown) = ^CallSideEffect : ~m? +# 35| v35_4211(void) = ^IndirectReadSideEffect[-1] : &:r35_4207, ~m? +# 35| mu35_4212(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4207 +# 35| r35_4213(bool) = Constant[0] : +# 35| v35_4214(void) = ConditionalBranch : r35_4213 #-----| False -> Block 302 #-----| True (back edge) -> Block 301 -# 922| Block 302 -# 922| r922_1(glval) = VariableAddress[x301] : -# 922| mu922_2(String) = Uninitialized[x301] : &:r922_1 -# 922| r922_3(glval) = FunctionAddress[String] : -# 922| v922_4(void) = Call[String] : func:r922_3, this:r922_1 -# 922| mu922_5(unknown) = ^CallSideEffect : ~m? -# 922| mu922_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r922_1 -# 923| r923_1(glval) = VariableAddress[x301] : -# 923| r923_2(glval) = FunctionAddress[~String] : -# 923| v923_3(void) = Call[~String] : func:r923_2, this:r923_1 -# 923| mu923_4(unknown) = ^CallSideEffect : ~m? -# 923| v923_5(void) = ^IndirectReadSideEffect[-1] : &:r923_1, ~m? -# 923| mu923_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r923_1 -# 923| r923_7(bool) = Constant[0] : -# 923| v923_8(void) = ConditionalBranch : r923_7 +# 35| Block 302 +# 35| r35_4215(glval) = VariableAddress[x301] : +# 35| mu35_4216(String) = Uninitialized[x301] : &:r35_4215 +# 35| r35_4217(glval) = FunctionAddress[String] : +# 35| v35_4218(void) = Call[String] : func:r35_4217, this:r35_4215 +# 35| mu35_4219(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4220(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4215 +# 35| r35_4221(glval) = VariableAddress[x301] : +# 35| r35_4222(glval) = FunctionAddress[~String] : +# 35| v35_4223(void) = Call[~String] : func:r35_4222, this:r35_4221 +# 35| mu35_4224(unknown) = ^CallSideEffect : ~m? +# 35| v35_4225(void) = ^IndirectReadSideEffect[-1] : &:r35_4221, ~m? +# 35| mu35_4226(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4221 +# 35| r35_4227(bool) = Constant[0] : +# 35| v35_4228(void) = ConditionalBranch : r35_4227 #-----| False -> Block 303 #-----| True (back edge) -> Block 302 -# 925| Block 303 -# 925| r925_1(glval) = VariableAddress[x302] : -# 925| mu925_2(String) = Uninitialized[x302] : &:r925_1 -# 925| r925_3(glval) = FunctionAddress[String] : -# 925| v925_4(void) = Call[String] : func:r925_3, this:r925_1 -# 925| mu925_5(unknown) = ^CallSideEffect : ~m? -# 925| mu925_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r925_1 -# 926| r926_1(glval) = VariableAddress[x302] : -# 926| r926_2(glval) = FunctionAddress[~String] : -# 926| v926_3(void) = Call[~String] : func:r926_2, this:r926_1 -# 926| mu926_4(unknown) = ^CallSideEffect : ~m? -# 926| v926_5(void) = ^IndirectReadSideEffect[-1] : &:r926_1, ~m? -# 926| mu926_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r926_1 -# 926| r926_7(bool) = Constant[0] : -# 926| v926_8(void) = ConditionalBranch : r926_7 +# 35| Block 303 +# 35| r35_4229(glval) = VariableAddress[x302] : +# 35| mu35_4230(String) = Uninitialized[x302] : &:r35_4229 +# 35| r35_4231(glval) = FunctionAddress[String] : +# 35| v35_4232(void) = Call[String] : func:r35_4231, this:r35_4229 +# 35| mu35_4233(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4234(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4229 +# 35| r35_4235(glval) = VariableAddress[x302] : +# 35| r35_4236(glval) = FunctionAddress[~String] : +# 35| v35_4237(void) = Call[~String] : func:r35_4236, this:r35_4235 +# 35| mu35_4238(unknown) = ^CallSideEffect : ~m? +# 35| v35_4239(void) = ^IndirectReadSideEffect[-1] : &:r35_4235, ~m? +# 35| mu35_4240(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4235 +# 35| r35_4241(bool) = Constant[0] : +# 35| v35_4242(void) = ConditionalBranch : r35_4241 #-----| False -> Block 304 #-----| True (back edge) -> Block 303 -# 928| Block 304 -# 928| r928_1(glval) = VariableAddress[x303] : -# 928| mu928_2(String) = Uninitialized[x303] : &:r928_1 -# 928| r928_3(glval) = FunctionAddress[String] : -# 928| v928_4(void) = Call[String] : func:r928_3, this:r928_1 -# 928| mu928_5(unknown) = ^CallSideEffect : ~m? -# 928| mu928_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r928_1 -# 929| r929_1(glval) = VariableAddress[x303] : -# 929| r929_2(glval) = FunctionAddress[~String] : -# 929| v929_3(void) = Call[~String] : func:r929_2, this:r929_1 -# 929| mu929_4(unknown) = ^CallSideEffect : ~m? -# 929| v929_5(void) = ^IndirectReadSideEffect[-1] : &:r929_1, ~m? -# 929| mu929_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r929_1 -# 929| r929_7(bool) = Constant[0] : -# 929| v929_8(void) = ConditionalBranch : r929_7 +# 35| Block 304 +# 35| r35_4243(glval) = VariableAddress[x303] : +# 35| mu35_4244(String) = Uninitialized[x303] : &:r35_4243 +# 35| r35_4245(glval) = FunctionAddress[String] : +# 35| v35_4246(void) = Call[String] : func:r35_4245, this:r35_4243 +# 35| mu35_4247(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4248(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4243 +# 35| r35_4249(glval) = VariableAddress[x303] : +# 35| r35_4250(glval) = FunctionAddress[~String] : +# 35| v35_4251(void) = Call[~String] : func:r35_4250, this:r35_4249 +# 35| mu35_4252(unknown) = ^CallSideEffect : ~m? +# 35| v35_4253(void) = ^IndirectReadSideEffect[-1] : &:r35_4249, ~m? +# 35| mu35_4254(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4249 +# 35| r35_4255(bool) = Constant[0] : +# 35| v35_4256(void) = ConditionalBranch : r35_4255 #-----| False -> Block 305 #-----| True (back edge) -> Block 304 -# 931| Block 305 -# 931| r931_1(glval) = VariableAddress[x304] : -# 931| mu931_2(String) = Uninitialized[x304] : &:r931_1 -# 931| r931_3(glval) = FunctionAddress[String] : -# 931| v931_4(void) = Call[String] : func:r931_3, this:r931_1 -# 931| mu931_5(unknown) = ^CallSideEffect : ~m? -# 931| mu931_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r931_1 -# 932| r932_1(glval) = VariableAddress[x304] : -# 932| r932_2(glval) = FunctionAddress[~String] : -# 932| v932_3(void) = Call[~String] : func:r932_2, this:r932_1 -# 932| mu932_4(unknown) = ^CallSideEffect : ~m? -# 932| v932_5(void) = ^IndirectReadSideEffect[-1] : &:r932_1, ~m? -# 932| mu932_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r932_1 -# 932| r932_7(bool) = Constant[0] : -# 932| v932_8(void) = ConditionalBranch : r932_7 +# 35| Block 305 +# 35| r35_4257(glval) = VariableAddress[x304] : +# 35| mu35_4258(String) = Uninitialized[x304] : &:r35_4257 +# 35| r35_4259(glval) = FunctionAddress[String] : +# 35| v35_4260(void) = Call[String] : func:r35_4259, this:r35_4257 +# 35| mu35_4261(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4262(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4257 +# 35| r35_4263(glval) = VariableAddress[x304] : +# 35| r35_4264(glval) = FunctionAddress[~String] : +# 35| v35_4265(void) = Call[~String] : func:r35_4264, this:r35_4263 +# 35| mu35_4266(unknown) = ^CallSideEffect : ~m? +# 35| v35_4267(void) = ^IndirectReadSideEffect[-1] : &:r35_4263, ~m? +# 35| mu35_4268(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4263 +# 35| r35_4269(bool) = Constant[0] : +# 35| v35_4270(void) = ConditionalBranch : r35_4269 #-----| False -> Block 306 #-----| True (back edge) -> Block 305 -# 934| Block 306 -# 934| r934_1(glval) = VariableAddress[x305] : -# 934| mu934_2(String) = Uninitialized[x305] : &:r934_1 -# 934| r934_3(glval) = FunctionAddress[String] : -# 934| v934_4(void) = Call[String] : func:r934_3, this:r934_1 -# 934| mu934_5(unknown) = ^CallSideEffect : ~m? -# 934| mu934_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r934_1 -# 935| r935_1(glval) = VariableAddress[x305] : -# 935| r935_2(glval) = FunctionAddress[~String] : -# 935| v935_3(void) = Call[~String] : func:r935_2, this:r935_1 -# 935| mu935_4(unknown) = ^CallSideEffect : ~m? -# 935| v935_5(void) = ^IndirectReadSideEffect[-1] : &:r935_1, ~m? -# 935| mu935_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r935_1 -# 935| r935_7(bool) = Constant[0] : -# 935| v935_8(void) = ConditionalBranch : r935_7 +# 35| Block 306 +# 35| r35_4271(glval) = VariableAddress[x305] : +# 35| mu35_4272(String) = Uninitialized[x305] : &:r35_4271 +# 35| r35_4273(glval) = FunctionAddress[String] : +# 35| v35_4274(void) = Call[String] : func:r35_4273, this:r35_4271 +# 35| mu35_4275(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4276(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4271 +# 35| r35_4277(glval) = VariableAddress[x305] : +# 35| r35_4278(glval) = FunctionAddress[~String] : +# 35| v35_4279(void) = Call[~String] : func:r35_4278, this:r35_4277 +# 35| mu35_4280(unknown) = ^CallSideEffect : ~m? +# 35| v35_4281(void) = ^IndirectReadSideEffect[-1] : &:r35_4277, ~m? +# 35| mu35_4282(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4277 +# 35| r35_4283(bool) = Constant[0] : +# 35| v35_4284(void) = ConditionalBranch : r35_4283 #-----| False -> Block 307 #-----| True (back edge) -> Block 306 -# 937| Block 307 -# 937| r937_1(glval) = VariableAddress[x306] : -# 937| mu937_2(String) = Uninitialized[x306] : &:r937_1 -# 937| r937_3(glval) = FunctionAddress[String] : -# 937| v937_4(void) = Call[String] : func:r937_3, this:r937_1 -# 937| mu937_5(unknown) = ^CallSideEffect : ~m? -# 937| mu937_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r937_1 -# 938| r938_1(glval) = VariableAddress[x306] : -# 938| r938_2(glval) = FunctionAddress[~String] : -# 938| v938_3(void) = Call[~String] : func:r938_2, this:r938_1 -# 938| mu938_4(unknown) = ^CallSideEffect : ~m? -# 938| v938_5(void) = ^IndirectReadSideEffect[-1] : &:r938_1, ~m? -# 938| mu938_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r938_1 -# 938| r938_7(bool) = Constant[0] : -# 938| v938_8(void) = ConditionalBranch : r938_7 +# 35| Block 307 +# 35| r35_4285(glval) = VariableAddress[x306] : +# 35| mu35_4286(String) = Uninitialized[x306] : &:r35_4285 +# 35| r35_4287(glval) = FunctionAddress[String] : +# 35| v35_4288(void) = Call[String] : func:r35_4287, this:r35_4285 +# 35| mu35_4289(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4290(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4285 +# 35| r35_4291(glval) = VariableAddress[x306] : +# 35| r35_4292(glval) = FunctionAddress[~String] : +# 35| v35_4293(void) = Call[~String] : func:r35_4292, this:r35_4291 +# 35| mu35_4294(unknown) = ^CallSideEffect : ~m? +# 35| v35_4295(void) = ^IndirectReadSideEffect[-1] : &:r35_4291, ~m? +# 35| mu35_4296(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4291 +# 35| r35_4297(bool) = Constant[0] : +# 35| v35_4298(void) = ConditionalBranch : r35_4297 #-----| False -> Block 308 #-----| True (back edge) -> Block 307 -# 940| Block 308 -# 940| r940_1(glval) = VariableAddress[x307] : -# 940| mu940_2(String) = Uninitialized[x307] : &:r940_1 -# 940| r940_3(glval) = FunctionAddress[String] : -# 940| v940_4(void) = Call[String] : func:r940_3, this:r940_1 -# 940| mu940_5(unknown) = ^CallSideEffect : ~m? -# 940| mu940_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r940_1 -# 941| r941_1(glval) = VariableAddress[x307] : -# 941| r941_2(glval) = FunctionAddress[~String] : -# 941| v941_3(void) = Call[~String] : func:r941_2, this:r941_1 -# 941| mu941_4(unknown) = ^CallSideEffect : ~m? -# 941| v941_5(void) = ^IndirectReadSideEffect[-1] : &:r941_1, ~m? -# 941| mu941_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r941_1 -# 941| r941_7(bool) = Constant[0] : -# 941| v941_8(void) = ConditionalBranch : r941_7 +# 35| Block 308 +# 35| r35_4299(glval) = VariableAddress[x307] : +# 35| mu35_4300(String) = Uninitialized[x307] : &:r35_4299 +# 35| r35_4301(glval) = FunctionAddress[String] : +# 35| v35_4302(void) = Call[String] : func:r35_4301, this:r35_4299 +# 35| mu35_4303(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4304(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4299 +# 35| r35_4305(glval) = VariableAddress[x307] : +# 35| r35_4306(glval) = FunctionAddress[~String] : +# 35| v35_4307(void) = Call[~String] : func:r35_4306, this:r35_4305 +# 35| mu35_4308(unknown) = ^CallSideEffect : ~m? +# 35| v35_4309(void) = ^IndirectReadSideEffect[-1] : &:r35_4305, ~m? +# 35| mu35_4310(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4305 +# 35| r35_4311(bool) = Constant[0] : +# 35| v35_4312(void) = ConditionalBranch : r35_4311 #-----| False -> Block 309 #-----| True (back edge) -> Block 308 -# 943| Block 309 -# 943| r943_1(glval) = VariableAddress[x308] : -# 943| mu943_2(String) = Uninitialized[x308] : &:r943_1 -# 943| r943_3(glval) = FunctionAddress[String] : -# 943| v943_4(void) = Call[String] : func:r943_3, this:r943_1 -# 943| mu943_5(unknown) = ^CallSideEffect : ~m? -# 943| mu943_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r943_1 -# 944| r944_1(glval) = VariableAddress[x308] : -# 944| r944_2(glval) = FunctionAddress[~String] : -# 944| v944_3(void) = Call[~String] : func:r944_2, this:r944_1 -# 944| mu944_4(unknown) = ^CallSideEffect : ~m? -# 944| v944_5(void) = ^IndirectReadSideEffect[-1] : &:r944_1, ~m? -# 944| mu944_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r944_1 -# 944| r944_7(bool) = Constant[0] : -# 944| v944_8(void) = ConditionalBranch : r944_7 +# 35| Block 309 +# 35| r35_4313(glval) = VariableAddress[x308] : +# 35| mu35_4314(String) = Uninitialized[x308] : &:r35_4313 +# 35| r35_4315(glval) = FunctionAddress[String] : +# 35| v35_4316(void) = Call[String] : func:r35_4315, this:r35_4313 +# 35| mu35_4317(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4318(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4313 +# 35| r35_4319(glval) = VariableAddress[x308] : +# 35| r35_4320(glval) = FunctionAddress[~String] : +# 35| v35_4321(void) = Call[~String] : func:r35_4320, this:r35_4319 +# 35| mu35_4322(unknown) = ^CallSideEffect : ~m? +# 35| v35_4323(void) = ^IndirectReadSideEffect[-1] : &:r35_4319, ~m? +# 35| mu35_4324(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4319 +# 35| r35_4325(bool) = Constant[0] : +# 35| v35_4326(void) = ConditionalBranch : r35_4325 #-----| False -> Block 310 #-----| True (back edge) -> Block 309 -# 946| Block 310 -# 946| r946_1(glval) = VariableAddress[x309] : -# 946| mu946_2(String) = Uninitialized[x309] : &:r946_1 -# 946| r946_3(glval) = FunctionAddress[String] : -# 946| v946_4(void) = Call[String] : func:r946_3, this:r946_1 -# 946| mu946_5(unknown) = ^CallSideEffect : ~m? -# 946| mu946_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r946_1 -# 947| r947_1(glval) = VariableAddress[x309] : -# 947| r947_2(glval) = FunctionAddress[~String] : -# 947| v947_3(void) = Call[~String] : func:r947_2, this:r947_1 -# 947| mu947_4(unknown) = ^CallSideEffect : ~m? -# 947| v947_5(void) = ^IndirectReadSideEffect[-1] : &:r947_1, ~m? -# 947| mu947_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r947_1 -# 947| r947_7(bool) = Constant[0] : -# 947| v947_8(void) = ConditionalBranch : r947_7 +# 35| Block 310 +# 35| r35_4327(glval) = VariableAddress[x309] : +# 35| mu35_4328(String) = Uninitialized[x309] : &:r35_4327 +# 35| r35_4329(glval) = FunctionAddress[String] : +# 35| v35_4330(void) = Call[String] : func:r35_4329, this:r35_4327 +# 35| mu35_4331(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4332(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4327 +# 35| r35_4333(glval) = VariableAddress[x309] : +# 35| r35_4334(glval) = FunctionAddress[~String] : +# 35| v35_4335(void) = Call[~String] : func:r35_4334, this:r35_4333 +# 35| mu35_4336(unknown) = ^CallSideEffect : ~m? +# 35| v35_4337(void) = ^IndirectReadSideEffect[-1] : &:r35_4333, ~m? +# 35| mu35_4338(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4333 +# 35| r35_4339(bool) = Constant[0] : +# 35| v35_4340(void) = ConditionalBranch : r35_4339 #-----| False -> Block 311 #-----| True (back edge) -> Block 310 -# 949| Block 311 -# 949| r949_1(glval) = VariableAddress[x310] : -# 949| mu949_2(String) = Uninitialized[x310] : &:r949_1 -# 949| r949_3(glval) = FunctionAddress[String] : -# 949| v949_4(void) = Call[String] : func:r949_3, this:r949_1 -# 949| mu949_5(unknown) = ^CallSideEffect : ~m? -# 949| mu949_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r949_1 -# 950| r950_1(glval) = VariableAddress[x310] : -# 950| r950_2(glval) = FunctionAddress[~String] : -# 950| v950_3(void) = Call[~String] : func:r950_2, this:r950_1 -# 950| mu950_4(unknown) = ^CallSideEffect : ~m? -# 950| v950_5(void) = ^IndirectReadSideEffect[-1] : &:r950_1, ~m? -# 950| mu950_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r950_1 -# 950| r950_7(bool) = Constant[0] : -# 950| v950_8(void) = ConditionalBranch : r950_7 +# 35| Block 311 +# 35| r35_4341(glval) = VariableAddress[x310] : +# 35| mu35_4342(String) = Uninitialized[x310] : &:r35_4341 +# 35| r35_4343(glval) = FunctionAddress[String] : +# 35| v35_4344(void) = Call[String] : func:r35_4343, this:r35_4341 +# 35| mu35_4345(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4346(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4341 +# 35| r35_4347(glval) = VariableAddress[x310] : +# 35| r35_4348(glval) = FunctionAddress[~String] : +# 35| v35_4349(void) = Call[~String] : func:r35_4348, this:r35_4347 +# 35| mu35_4350(unknown) = ^CallSideEffect : ~m? +# 35| v35_4351(void) = ^IndirectReadSideEffect[-1] : &:r35_4347, ~m? +# 35| mu35_4352(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4347 +# 35| r35_4353(bool) = Constant[0] : +# 35| v35_4354(void) = ConditionalBranch : r35_4353 #-----| False -> Block 312 #-----| True (back edge) -> Block 311 -# 952| Block 312 -# 952| r952_1(glval) = VariableAddress[x311] : -# 952| mu952_2(String) = Uninitialized[x311] : &:r952_1 -# 952| r952_3(glval) = FunctionAddress[String] : -# 952| v952_4(void) = Call[String] : func:r952_3, this:r952_1 -# 952| mu952_5(unknown) = ^CallSideEffect : ~m? -# 952| mu952_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r952_1 -# 953| r953_1(glval) = VariableAddress[x311] : -# 953| r953_2(glval) = FunctionAddress[~String] : -# 953| v953_3(void) = Call[~String] : func:r953_2, this:r953_1 -# 953| mu953_4(unknown) = ^CallSideEffect : ~m? -# 953| v953_5(void) = ^IndirectReadSideEffect[-1] : &:r953_1, ~m? -# 953| mu953_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r953_1 -# 953| r953_7(bool) = Constant[0] : -# 953| v953_8(void) = ConditionalBranch : r953_7 +# 35| Block 312 +# 35| r35_4355(glval) = VariableAddress[x311] : +# 35| mu35_4356(String) = Uninitialized[x311] : &:r35_4355 +# 35| r35_4357(glval) = FunctionAddress[String] : +# 35| v35_4358(void) = Call[String] : func:r35_4357, this:r35_4355 +# 35| mu35_4359(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4360(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4355 +# 35| r35_4361(glval) = VariableAddress[x311] : +# 35| r35_4362(glval) = FunctionAddress[~String] : +# 35| v35_4363(void) = Call[~String] : func:r35_4362, this:r35_4361 +# 35| mu35_4364(unknown) = ^CallSideEffect : ~m? +# 35| v35_4365(void) = ^IndirectReadSideEffect[-1] : &:r35_4361, ~m? +# 35| mu35_4366(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4361 +# 35| r35_4367(bool) = Constant[0] : +# 35| v35_4368(void) = ConditionalBranch : r35_4367 #-----| False -> Block 313 #-----| True (back edge) -> Block 312 -# 955| Block 313 -# 955| r955_1(glval) = VariableAddress[x312] : -# 955| mu955_2(String) = Uninitialized[x312] : &:r955_1 -# 955| r955_3(glval) = FunctionAddress[String] : -# 955| v955_4(void) = Call[String] : func:r955_3, this:r955_1 -# 955| mu955_5(unknown) = ^CallSideEffect : ~m? -# 955| mu955_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r955_1 -# 956| r956_1(glval) = VariableAddress[x312] : -# 956| r956_2(glval) = FunctionAddress[~String] : -# 956| v956_3(void) = Call[~String] : func:r956_2, this:r956_1 -# 956| mu956_4(unknown) = ^CallSideEffect : ~m? -# 956| v956_5(void) = ^IndirectReadSideEffect[-1] : &:r956_1, ~m? -# 956| mu956_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r956_1 -# 956| r956_7(bool) = Constant[0] : -# 956| v956_8(void) = ConditionalBranch : r956_7 +# 35| Block 313 +# 35| r35_4369(glval) = VariableAddress[x312] : +# 35| mu35_4370(String) = Uninitialized[x312] : &:r35_4369 +# 35| r35_4371(glval) = FunctionAddress[String] : +# 35| v35_4372(void) = Call[String] : func:r35_4371, this:r35_4369 +# 35| mu35_4373(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4374(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4369 +# 35| r35_4375(glval) = VariableAddress[x312] : +# 35| r35_4376(glval) = FunctionAddress[~String] : +# 35| v35_4377(void) = Call[~String] : func:r35_4376, this:r35_4375 +# 35| mu35_4378(unknown) = ^CallSideEffect : ~m? +# 35| v35_4379(void) = ^IndirectReadSideEffect[-1] : &:r35_4375, ~m? +# 35| mu35_4380(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4375 +# 35| r35_4381(bool) = Constant[0] : +# 35| v35_4382(void) = ConditionalBranch : r35_4381 #-----| False -> Block 314 #-----| True (back edge) -> Block 313 -# 958| Block 314 -# 958| r958_1(glval) = VariableAddress[x313] : -# 958| mu958_2(String) = Uninitialized[x313] : &:r958_1 -# 958| r958_3(glval) = FunctionAddress[String] : -# 958| v958_4(void) = Call[String] : func:r958_3, this:r958_1 -# 958| mu958_5(unknown) = ^CallSideEffect : ~m? -# 958| mu958_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r958_1 -# 959| r959_1(glval) = VariableAddress[x313] : -# 959| r959_2(glval) = FunctionAddress[~String] : -# 959| v959_3(void) = Call[~String] : func:r959_2, this:r959_1 -# 959| mu959_4(unknown) = ^CallSideEffect : ~m? -# 959| v959_5(void) = ^IndirectReadSideEffect[-1] : &:r959_1, ~m? -# 959| mu959_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r959_1 -# 959| r959_7(bool) = Constant[0] : -# 959| v959_8(void) = ConditionalBranch : r959_7 +# 35| Block 314 +# 35| r35_4383(glval) = VariableAddress[x313] : +# 35| mu35_4384(String) = Uninitialized[x313] : &:r35_4383 +# 35| r35_4385(glval) = FunctionAddress[String] : +# 35| v35_4386(void) = Call[String] : func:r35_4385, this:r35_4383 +# 35| mu35_4387(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4388(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4383 +# 35| r35_4389(glval) = VariableAddress[x313] : +# 35| r35_4390(glval) = FunctionAddress[~String] : +# 35| v35_4391(void) = Call[~String] : func:r35_4390, this:r35_4389 +# 35| mu35_4392(unknown) = ^CallSideEffect : ~m? +# 35| v35_4393(void) = ^IndirectReadSideEffect[-1] : &:r35_4389, ~m? +# 35| mu35_4394(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4389 +# 35| r35_4395(bool) = Constant[0] : +# 35| v35_4396(void) = ConditionalBranch : r35_4395 #-----| False -> Block 315 #-----| True (back edge) -> Block 314 -# 961| Block 315 -# 961| r961_1(glval) = VariableAddress[x314] : -# 961| mu961_2(String) = Uninitialized[x314] : &:r961_1 -# 961| r961_3(glval) = FunctionAddress[String] : -# 961| v961_4(void) = Call[String] : func:r961_3, this:r961_1 -# 961| mu961_5(unknown) = ^CallSideEffect : ~m? -# 961| mu961_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r961_1 -# 962| r962_1(glval) = VariableAddress[x314] : -# 962| r962_2(glval) = FunctionAddress[~String] : -# 962| v962_3(void) = Call[~String] : func:r962_2, this:r962_1 -# 962| mu962_4(unknown) = ^CallSideEffect : ~m? -# 962| v962_5(void) = ^IndirectReadSideEffect[-1] : &:r962_1, ~m? -# 962| mu962_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r962_1 -# 962| r962_7(bool) = Constant[0] : -# 962| v962_8(void) = ConditionalBranch : r962_7 +# 35| Block 315 +# 35| r35_4397(glval) = VariableAddress[x314] : +# 35| mu35_4398(String) = Uninitialized[x314] : &:r35_4397 +# 35| r35_4399(glval) = FunctionAddress[String] : +# 35| v35_4400(void) = Call[String] : func:r35_4399, this:r35_4397 +# 35| mu35_4401(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4402(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4397 +# 35| r35_4403(glval) = VariableAddress[x314] : +# 35| r35_4404(glval) = FunctionAddress[~String] : +# 35| v35_4405(void) = Call[~String] : func:r35_4404, this:r35_4403 +# 35| mu35_4406(unknown) = ^CallSideEffect : ~m? +# 35| v35_4407(void) = ^IndirectReadSideEffect[-1] : &:r35_4403, ~m? +# 35| mu35_4408(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4403 +# 35| r35_4409(bool) = Constant[0] : +# 35| v35_4410(void) = ConditionalBranch : r35_4409 #-----| False -> Block 316 #-----| True (back edge) -> Block 315 -# 964| Block 316 -# 964| r964_1(glval) = VariableAddress[x315] : -# 964| mu964_2(String) = Uninitialized[x315] : &:r964_1 -# 964| r964_3(glval) = FunctionAddress[String] : -# 964| v964_4(void) = Call[String] : func:r964_3, this:r964_1 -# 964| mu964_5(unknown) = ^CallSideEffect : ~m? -# 964| mu964_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r964_1 -# 965| r965_1(glval) = VariableAddress[x315] : -# 965| r965_2(glval) = FunctionAddress[~String] : -# 965| v965_3(void) = Call[~String] : func:r965_2, this:r965_1 -# 965| mu965_4(unknown) = ^CallSideEffect : ~m? -# 965| v965_5(void) = ^IndirectReadSideEffect[-1] : &:r965_1, ~m? -# 965| mu965_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r965_1 -# 965| r965_7(bool) = Constant[0] : -# 965| v965_8(void) = ConditionalBranch : r965_7 +# 35| Block 316 +# 35| r35_4411(glval) = VariableAddress[x315] : +# 35| mu35_4412(String) = Uninitialized[x315] : &:r35_4411 +# 35| r35_4413(glval) = FunctionAddress[String] : +# 35| v35_4414(void) = Call[String] : func:r35_4413, this:r35_4411 +# 35| mu35_4415(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4416(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4411 +# 35| r35_4417(glval) = VariableAddress[x315] : +# 35| r35_4418(glval) = FunctionAddress[~String] : +# 35| v35_4419(void) = Call[~String] : func:r35_4418, this:r35_4417 +# 35| mu35_4420(unknown) = ^CallSideEffect : ~m? +# 35| v35_4421(void) = ^IndirectReadSideEffect[-1] : &:r35_4417, ~m? +# 35| mu35_4422(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4417 +# 35| r35_4423(bool) = Constant[0] : +# 35| v35_4424(void) = ConditionalBranch : r35_4423 #-----| False -> Block 317 #-----| True (back edge) -> Block 316 -# 967| Block 317 -# 967| r967_1(glval) = VariableAddress[x316] : -# 967| mu967_2(String) = Uninitialized[x316] : &:r967_1 -# 967| r967_3(glval) = FunctionAddress[String] : -# 967| v967_4(void) = Call[String] : func:r967_3, this:r967_1 -# 967| mu967_5(unknown) = ^CallSideEffect : ~m? -# 967| mu967_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r967_1 -# 968| r968_1(glval) = VariableAddress[x316] : -# 968| r968_2(glval) = FunctionAddress[~String] : -# 968| v968_3(void) = Call[~String] : func:r968_2, this:r968_1 -# 968| mu968_4(unknown) = ^CallSideEffect : ~m? -# 968| v968_5(void) = ^IndirectReadSideEffect[-1] : &:r968_1, ~m? -# 968| mu968_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r968_1 -# 968| r968_7(bool) = Constant[0] : -# 968| v968_8(void) = ConditionalBranch : r968_7 +# 35| Block 317 +# 35| r35_4425(glval) = VariableAddress[x316] : +# 35| mu35_4426(String) = Uninitialized[x316] : &:r35_4425 +# 35| r35_4427(glval) = FunctionAddress[String] : +# 35| v35_4428(void) = Call[String] : func:r35_4427, this:r35_4425 +# 35| mu35_4429(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4430(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4425 +# 35| r35_4431(glval) = VariableAddress[x316] : +# 35| r35_4432(glval) = FunctionAddress[~String] : +# 35| v35_4433(void) = Call[~String] : func:r35_4432, this:r35_4431 +# 35| mu35_4434(unknown) = ^CallSideEffect : ~m? +# 35| v35_4435(void) = ^IndirectReadSideEffect[-1] : &:r35_4431, ~m? +# 35| mu35_4436(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4431 +# 35| r35_4437(bool) = Constant[0] : +# 35| v35_4438(void) = ConditionalBranch : r35_4437 #-----| False -> Block 318 #-----| True (back edge) -> Block 317 -# 970| Block 318 -# 970| r970_1(glval) = VariableAddress[x317] : -# 970| mu970_2(String) = Uninitialized[x317] : &:r970_1 -# 970| r970_3(glval) = FunctionAddress[String] : -# 970| v970_4(void) = Call[String] : func:r970_3, this:r970_1 -# 970| mu970_5(unknown) = ^CallSideEffect : ~m? -# 970| mu970_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r970_1 -# 971| r971_1(glval) = VariableAddress[x317] : -# 971| r971_2(glval) = FunctionAddress[~String] : -# 971| v971_3(void) = Call[~String] : func:r971_2, this:r971_1 -# 971| mu971_4(unknown) = ^CallSideEffect : ~m? -# 971| v971_5(void) = ^IndirectReadSideEffect[-1] : &:r971_1, ~m? -# 971| mu971_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r971_1 -# 971| r971_7(bool) = Constant[0] : -# 971| v971_8(void) = ConditionalBranch : r971_7 +# 35| Block 318 +# 35| r35_4439(glval) = VariableAddress[x317] : +# 35| mu35_4440(String) = Uninitialized[x317] : &:r35_4439 +# 35| r35_4441(glval) = FunctionAddress[String] : +# 35| v35_4442(void) = Call[String] : func:r35_4441, this:r35_4439 +# 35| mu35_4443(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4444(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4439 +# 35| r35_4445(glval) = VariableAddress[x317] : +# 35| r35_4446(glval) = FunctionAddress[~String] : +# 35| v35_4447(void) = Call[~String] : func:r35_4446, this:r35_4445 +# 35| mu35_4448(unknown) = ^CallSideEffect : ~m? +# 35| v35_4449(void) = ^IndirectReadSideEffect[-1] : &:r35_4445, ~m? +# 35| mu35_4450(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4445 +# 35| r35_4451(bool) = Constant[0] : +# 35| v35_4452(void) = ConditionalBranch : r35_4451 #-----| False -> Block 319 #-----| True (back edge) -> Block 318 -# 973| Block 319 -# 973| r973_1(glval) = VariableAddress[x318] : -# 973| mu973_2(String) = Uninitialized[x318] : &:r973_1 -# 973| r973_3(glval) = FunctionAddress[String] : -# 973| v973_4(void) = Call[String] : func:r973_3, this:r973_1 -# 973| mu973_5(unknown) = ^CallSideEffect : ~m? -# 973| mu973_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r973_1 -# 974| r974_1(glval) = VariableAddress[x318] : -# 974| r974_2(glval) = FunctionAddress[~String] : -# 974| v974_3(void) = Call[~String] : func:r974_2, this:r974_1 -# 974| mu974_4(unknown) = ^CallSideEffect : ~m? -# 974| v974_5(void) = ^IndirectReadSideEffect[-1] : &:r974_1, ~m? -# 974| mu974_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r974_1 -# 974| r974_7(bool) = Constant[0] : -# 974| v974_8(void) = ConditionalBranch : r974_7 +# 35| Block 319 +# 35| r35_4453(glval) = VariableAddress[x318] : +# 35| mu35_4454(String) = Uninitialized[x318] : &:r35_4453 +# 35| r35_4455(glval) = FunctionAddress[String] : +# 35| v35_4456(void) = Call[String] : func:r35_4455, this:r35_4453 +# 35| mu35_4457(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4458(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4453 +# 35| r35_4459(glval) = VariableAddress[x318] : +# 35| r35_4460(glval) = FunctionAddress[~String] : +# 35| v35_4461(void) = Call[~String] : func:r35_4460, this:r35_4459 +# 35| mu35_4462(unknown) = ^CallSideEffect : ~m? +# 35| v35_4463(void) = ^IndirectReadSideEffect[-1] : &:r35_4459, ~m? +# 35| mu35_4464(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4459 +# 35| r35_4465(bool) = Constant[0] : +# 35| v35_4466(void) = ConditionalBranch : r35_4465 #-----| False -> Block 320 #-----| True (back edge) -> Block 319 -# 976| Block 320 -# 976| r976_1(glval) = VariableAddress[x319] : -# 976| mu976_2(String) = Uninitialized[x319] : &:r976_1 -# 976| r976_3(glval) = FunctionAddress[String] : -# 976| v976_4(void) = Call[String] : func:r976_3, this:r976_1 -# 976| mu976_5(unknown) = ^CallSideEffect : ~m? -# 976| mu976_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r976_1 -# 977| r977_1(glval) = VariableAddress[x319] : -# 977| r977_2(glval) = FunctionAddress[~String] : -# 977| v977_3(void) = Call[~String] : func:r977_2, this:r977_1 -# 977| mu977_4(unknown) = ^CallSideEffect : ~m? -# 977| v977_5(void) = ^IndirectReadSideEffect[-1] : &:r977_1, ~m? -# 977| mu977_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r977_1 -# 977| r977_7(bool) = Constant[0] : -# 977| v977_8(void) = ConditionalBranch : r977_7 +# 35| Block 320 +# 35| r35_4467(glval) = VariableAddress[x319] : +# 35| mu35_4468(String) = Uninitialized[x319] : &:r35_4467 +# 35| r35_4469(glval) = FunctionAddress[String] : +# 35| v35_4470(void) = Call[String] : func:r35_4469, this:r35_4467 +# 35| mu35_4471(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4472(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4467 +# 35| r35_4473(glval) = VariableAddress[x319] : +# 35| r35_4474(glval) = FunctionAddress[~String] : +# 35| v35_4475(void) = Call[~String] : func:r35_4474, this:r35_4473 +# 35| mu35_4476(unknown) = ^CallSideEffect : ~m? +# 35| v35_4477(void) = ^IndirectReadSideEffect[-1] : &:r35_4473, ~m? +# 35| mu35_4478(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4473 +# 35| r35_4479(bool) = Constant[0] : +# 35| v35_4480(void) = ConditionalBranch : r35_4479 #-----| False -> Block 321 #-----| True (back edge) -> Block 320 -# 979| Block 321 -# 979| r979_1(glval) = VariableAddress[x320] : -# 979| mu979_2(String) = Uninitialized[x320] : &:r979_1 -# 979| r979_3(glval) = FunctionAddress[String] : -# 979| v979_4(void) = Call[String] : func:r979_3, this:r979_1 -# 979| mu979_5(unknown) = ^CallSideEffect : ~m? -# 979| mu979_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r979_1 -# 980| r980_1(glval) = VariableAddress[x320] : -# 980| r980_2(glval) = FunctionAddress[~String] : -# 980| v980_3(void) = Call[~String] : func:r980_2, this:r980_1 -# 980| mu980_4(unknown) = ^CallSideEffect : ~m? -# 980| v980_5(void) = ^IndirectReadSideEffect[-1] : &:r980_1, ~m? -# 980| mu980_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r980_1 -# 980| r980_7(bool) = Constant[0] : -# 980| v980_8(void) = ConditionalBranch : r980_7 +# 35| Block 321 +# 35| r35_4481(glval) = VariableAddress[x320] : +# 35| mu35_4482(String) = Uninitialized[x320] : &:r35_4481 +# 35| r35_4483(glval) = FunctionAddress[String] : +# 35| v35_4484(void) = Call[String] : func:r35_4483, this:r35_4481 +# 35| mu35_4485(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4486(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4481 +# 35| r35_4487(glval) = VariableAddress[x320] : +# 35| r35_4488(glval) = FunctionAddress[~String] : +# 35| v35_4489(void) = Call[~String] : func:r35_4488, this:r35_4487 +# 35| mu35_4490(unknown) = ^CallSideEffect : ~m? +# 35| v35_4491(void) = ^IndirectReadSideEffect[-1] : &:r35_4487, ~m? +# 35| mu35_4492(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4487 +# 35| r35_4493(bool) = Constant[0] : +# 35| v35_4494(void) = ConditionalBranch : r35_4493 #-----| False -> Block 322 #-----| True (back edge) -> Block 321 -# 982| Block 322 -# 982| r982_1(glval) = VariableAddress[x321] : -# 982| mu982_2(String) = Uninitialized[x321] : &:r982_1 -# 982| r982_3(glval) = FunctionAddress[String] : -# 982| v982_4(void) = Call[String] : func:r982_3, this:r982_1 -# 982| mu982_5(unknown) = ^CallSideEffect : ~m? -# 982| mu982_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r982_1 -# 983| r983_1(glval) = VariableAddress[x321] : -# 983| r983_2(glval) = FunctionAddress[~String] : -# 983| v983_3(void) = Call[~String] : func:r983_2, this:r983_1 -# 983| mu983_4(unknown) = ^CallSideEffect : ~m? -# 983| v983_5(void) = ^IndirectReadSideEffect[-1] : &:r983_1, ~m? -# 983| mu983_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r983_1 -# 983| r983_7(bool) = Constant[0] : -# 983| v983_8(void) = ConditionalBranch : r983_7 +# 35| Block 322 +# 35| r35_4495(glval) = VariableAddress[x321] : +# 35| mu35_4496(String) = Uninitialized[x321] : &:r35_4495 +# 35| r35_4497(glval) = FunctionAddress[String] : +# 35| v35_4498(void) = Call[String] : func:r35_4497, this:r35_4495 +# 35| mu35_4499(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4500(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4495 +# 35| r35_4501(glval) = VariableAddress[x321] : +# 35| r35_4502(glval) = FunctionAddress[~String] : +# 35| v35_4503(void) = Call[~String] : func:r35_4502, this:r35_4501 +# 35| mu35_4504(unknown) = ^CallSideEffect : ~m? +# 35| v35_4505(void) = ^IndirectReadSideEffect[-1] : &:r35_4501, ~m? +# 35| mu35_4506(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4501 +# 35| r35_4507(bool) = Constant[0] : +# 35| v35_4508(void) = ConditionalBranch : r35_4507 #-----| False -> Block 323 #-----| True (back edge) -> Block 322 -# 985| Block 323 -# 985| r985_1(glval) = VariableAddress[x322] : -# 985| mu985_2(String) = Uninitialized[x322] : &:r985_1 -# 985| r985_3(glval) = FunctionAddress[String] : -# 985| v985_4(void) = Call[String] : func:r985_3, this:r985_1 -# 985| mu985_5(unknown) = ^CallSideEffect : ~m? -# 985| mu985_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r985_1 -# 986| r986_1(glval) = VariableAddress[x322] : -# 986| r986_2(glval) = FunctionAddress[~String] : -# 986| v986_3(void) = Call[~String] : func:r986_2, this:r986_1 -# 986| mu986_4(unknown) = ^CallSideEffect : ~m? -# 986| v986_5(void) = ^IndirectReadSideEffect[-1] : &:r986_1, ~m? -# 986| mu986_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r986_1 -# 986| r986_7(bool) = Constant[0] : -# 986| v986_8(void) = ConditionalBranch : r986_7 +# 35| Block 323 +# 35| r35_4509(glval) = VariableAddress[x322] : +# 35| mu35_4510(String) = Uninitialized[x322] : &:r35_4509 +# 35| r35_4511(glval) = FunctionAddress[String] : +# 35| v35_4512(void) = Call[String] : func:r35_4511, this:r35_4509 +# 35| mu35_4513(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4514(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4509 +# 35| r35_4515(glval) = VariableAddress[x322] : +# 35| r35_4516(glval) = FunctionAddress[~String] : +# 35| v35_4517(void) = Call[~String] : func:r35_4516, this:r35_4515 +# 35| mu35_4518(unknown) = ^CallSideEffect : ~m? +# 35| v35_4519(void) = ^IndirectReadSideEffect[-1] : &:r35_4515, ~m? +# 35| mu35_4520(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4515 +# 35| r35_4521(bool) = Constant[0] : +# 35| v35_4522(void) = ConditionalBranch : r35_4521 #-----| False -> Block 324 #-----| True (back edge) -> Block 323 -# 988| Block 324 -# 988| r988_1(glval) = VariableAddress[x323] : -# 988| mu988_2(String) = Uninitialized[x323] : &:r988_1 -# 988| r988_3(glval) = FunctionAddress[String] : -# 988| v988_4(void) = Call[String] : func:r988_3, this:r988_1 -# 988| mu988_5(unknown) = ^CallSideEffect : ~m? -# 988| mu988_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r988_1 -# 989| r989_1(glval) = VariableAddress[x323] : -# 989| r989_2(glval) = FunctionAddress[~String] : -# 989| v989_3(void) = Call[~String] : func:r989_2, this:r989_1 -# 989| mu989_4(unknown) = ^CallSideEffect : ~m? -# 989| v989_5(void) = ^IndirectReadSideEffect[-1] : &:r989_1, ~m? -# 989| mu989_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r989_1 -# 989| r989_7(bool) = Constant[0] : -# 989| v989_8(void) = ConditionalBranch : r989_7 +# 35| Block 324 +# 35| r35_4523(glval) = VariableAddress[x323] : +# 35| mu35_4524(String) = Uninitialized[x323] : &:r35_4523 +# 35| r35_4525(glval) = FunctionAddress[String] : +# 35| v35_4526(void) = Call[String] : func:r35_4525, this:r35_4523 +# 35| mu35_4527(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4528(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4523 +# 35| r35_4529(glval) = VariableAddress[x323] : +# 35| r35_4530(glval) = FunctionAddress[~String] : +# 35| v35_4531(void) = Call[~String] : func:r35_4530, this:r35_4529 +# 35| mu35_4532(unknown) = ^CallSideEffect : ~m? +# 35| v35_4533(void) = ^IndirectReadSideEffect[-1] : &:r35_4529, ~m? +# 35| mu35_4534(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4529 +# 35| r35_4535(bool) = Constant[0] : +# 35| v35_4536(void) = ConditionalBranch : r35_4535 #-----| False -> Block 325 #-----| True (back edge) -> Block 324 -# 991| Block 325 -# 991| r991_1(glval) = VariableAddress[x324] : -# 991| mu991_2(String) = Uninitialized[x324] : &:r991_1 -# 991| r991_3(glval) = FunctionAddress[String] : -# 991| v991_4(void) = Call[String] : func:r991_3, this:r991_1 -# 991| mu991_5(unknown) = ^CallSideEffect : ~m? -# 991| mu991_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r991_1 -# 992| r992_1(glval) = VariableAddress[x324] : -# 992| r992_2(glval) = FunctionAddress[~String] : -# 992| v992_3(void) = Call[~String] : func:r992_2, this:r992_1 -# 992| mu992_4(unknown) = ^CallSideEffect : ~m? -# 992| v992_5(void) = ^IndirectReadSideEffect[-1] : &:r992_1, ~m? -# 992| mu992_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r992_1 -# 992| r992_7(bool) = Constant[0] : -# 992| v992_8(void) = ConditionalBranch : r992_7 +# 35| Block 325 +# 35| r35_4537(glval) = VariableAddress[x324] : +# 35| mu35_4538(String) = Uninitialized[x324] : &:r35_4537 +# 35| r35_4539(glval) = FunctionAddress[String] : +# 35| v35_4540(void) = Call[String] : func:r35_4539, this:r35_4537 +# 35| mu35_4541(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4542(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4537 +# 35| r35_4543(glval) = VariableAddress[x324] : +# 35| r35_4544(glval) = FunctionAddress[~String] : +# 35| v35_4545(void) = Call[~String] : func:r35_4544, this:r35_4543 +# 35| mu35_4546(unknown) = ^CallSideEffect : ~m? +# 35| v35_4547(void) = ^IndirectReadSideEffect[-1] : &:r35_4543, ~m? +# 35| mu35_4548(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4543 +# 35| r35_4549(bool) = Constant[0] : +# 35| v35_4550(void) = ConditionalBranch : r35_4549 #-----| False -> Block 326 #-----| True (back edge) -> Block 325 -# 994| Block 326 -# 994| r994_1(glval) = VariableAddress[x325] : -# 994| mu994_2(String) = Uninitialized[x325] : &:r994_1 -# 994| r994_3(glval) = FunctionAddress[String] : -# 994| v994_4(void) = Call[String] : func:r994_3, this:r994_1 -# 994| mu994_5(unknown) = ^CallSideEffect : ~m? -# 994| mu994_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r994_1 -# 995| r995_1(glval) = VariableAddress[x325] : -# 995| r995_2(glval) = FunctionAddress[~String] : -# 995| v995_3(void) = Call[~String] : func:r995_2, this:r995_1 -# 995| mu995_4(unknown) = ^CallSideEffect : ~m? -# 995| v995_5(void) = ^IndirectReadSideEffect[-1] : &:r995_1, ~m? -# 995| mu995_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r995_1 -# 995| r995_7(bool) = Constant[0] : -# 995| v995_8(void) = ConditionalBranch : r995_7 +# 35| Block 326 +# 35| r35_4551(glval) = VariableAddress[x325] : +# 35| mu35_4552(String) = Uninitialized[x325] : &:r35_4551 +# 35| r35_4553(glval) = FunctionAddress[String] : +# 35| v35_4554(void) = Call[String] : func:r35_4553, this:r35_4551 +# 35| mu35_4555(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4556(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4551 +# 35| r35_4557(glval) = VariableAddress[x325] : +# 35| r35_4558(glval) = FunctionAddress[~String] : +# 35| v35_4559(void) = Call[~String] : func:r35_4558, this:r35_4557 +# 35| mu35_4560(unknown) = ^CallSideEffect : ~m? +# 35| v35_4561(void) = ^IndirectReadSideEffect[-1] : &:r35_4557, ~m? +# 35| mu35_4562(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4557 +# 35| r35_4563(bool) = Constant[0] : +# 35| v35_4564(void) = ConditionalBranch : r35_4563 #-----| False -> Block 327 #-----| True (back edge) -> Block 326 -# 997| Block 327 -# 997| r997_1(glval) = VariableAddress[x326] : -# 997| mu997_2(String) = Uninitialized[x326] : &:r997_1 -# 997| r997_3(glval) = FunctionAddress[String] : -# 997| v997_4(void) = Call[String] : func:r997_3, this:r997_1 -# 997| mu997_5(unknown) = ^CallSideEffect : ~m? -# 997| mu997_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r997_1 -# 998| r998_1(glval) = VariableAddress[x326] : -# 998| r998_2(glval) = FunctionAddress[~String] : -# 998| v998_3(void) = Call[~String] : func:r998_2, this:r998_1 -# 998| mu998_4(unknown) = ^CallSideEffect : ~m? -# 998| v998_5(void) = ^IndirectReadSideEffect[-1] : &:r998_1, ~m? -# 998| mu998_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r998_1 -# 998| r998_7(bool) = Constant[0] : -# 998| v998_8(void) = ConditionalBranch : r998_7 +# 35| Block 327 +# 35| r35_4565(glval) = VariableAddress[x326] : +# 35| mu35_4566(String) = Uninitialized[x326] : &:r35_4565 +# 35| r35_4567(glval) = FunctionAddress[String] : +# 35| v35_4568(void) = Call[String] : func:r35_4567, this:r35_4565 +# 35| mu35_4569(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4570(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4565 +# 35| r35_4571(glval) = VariableAddress[x326] : +# 35| r35_4572(glval) = FunctionAddress[~String] : +# 35| v35_4573(void) = Call[~String] : func:r35_4572, this:r35_4571 +# 35| mu35_4574(unknown) = ^CallSideEffect : ~m? +# 35| v35_4575(void) = ^IndirectReadSideEffect[-1] : &:r35_4571, ~m? +# 35| mu35_4576(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4571 +# 35| r35_4577(bool) = Constant[0] : +# 35| v35_4578(void) = ConditionalBranch : r35_4577 #-----| False -> Block 328 #-----| True (back edge) -> Block 327 -# 1000| Block 328 -# 1000| r1000_1(glval) = VariableAddress[x327] : -# 1000| mu1000_2(String) = Uninitialized[x327] : &:r1000_1 -# 1000| r1000_3(glval) = FunctionAddress[String] : -# 1000| v1000_4(void) = Call[String] : func:r1000_3, this:r1000_1 -# 1000| mu1000_5(unknown) = ^CallSideEffect : ~m? -# 1000| mu1000_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1000_1 -# 1001| r1001_1(glval) = VariableAddress[x327] : -# 1001| r1001_2(glval) = FunctionAddress[~String] : -# 1001| v1001_3(void) = Call[~String] : func:r1001_2, this:r1001_1 -# 1001| mu1001_4(unknown) = ^CallSideEffect : ~m? -# 1001| v1001_5(void) = ^IndirectReadSideEffect[-1] : &:r1001_1, ~m? -# 1001| mu1001_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1001_1 -# 1001| r1001_7(bool) = Constant[0] : -# 1001| v1001_8(void) = ConditionalBranch : r1001_7 +# 35| Block 328 +# 35| r35_4579(glval) = VariableAddress[x327] : +# 35| mu35_4580(String) = Uninitialized[x327] : &:r35_4579 +# 35| r35_4581(glval) = FunctionAddress[String] : +# 35| v35_4582(void) = Call[String] : func:r35_4581, this:r35_4579 +# 35| mu35_4583(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4584(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4579 +# 35| r35_4585(glval) = VariableAddress[x327] : +# 35| r35_4586(glval) = FunctionAddress[~String] : +# 35| v35_4587(void) = Call[~String] : func:r35_4586, this:r35_4585 +# 35| mu35_4588(unknown) = ^CallSideEffect : ~m? +# 35| v35_4589(void) = ^IndirectReadSideEffect[-1] : &:r35_4585, ~m? +# 35| mu35_4590(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4585 +# 35| r35_4591(bool) = Constant[0] : +# 35| v35_4592(void) = ConditionalBranch : r35_4591 #-----| False -> Block 329 #-----| True (back edge) -> Block 328 -# 1003| Block 329 -# 1003| r1003_1(glval) = VariableAddress[x328] : -# 1003| mu1003_2(String) = Uninitialized[x328] : &:r1003_1 -# 1003| r1003_3(glval) = FunctionAddress[String] : -# 1003| v1003_4(void) = Call[String] : func:r1003_3, this:r1003_1 -# 1003| mu1003_5(unknown) = ^CallSideEffect : ~m? -# 1003| mu1003_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1003_1 -# 1004| r1004_1(glval) = VariableAddress[x328] : -# 1004| r1004_2(glval) = FunctionAddress[~String] : -# 1004| v1004_3(void) = Call[~String] : func:r1004_2, this:r1004_1 -# 1004| mu1004_4(unknown) = ^CallSideEffect : ~m? -# 1004| v1004_5(void) = ^IndirectReadSideEffect[-1] : &:r1004_1, ~m? -# 1004| mu1004_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1004_1 -# 1004| r1004_7(bool) = Constant[0] : -# 1004| v1004_8(void) = ConditionalBranch : r1004_7 +# 35| Block 329 +# 35| r35_4593(glval) = VariableAddress[x328] : +# 35| mu35_4594(String) = Uninitialized[x328] : &:r35_4593 +# 35| r35_4595(glval) = FunctionAddress[String] : +# 35| v35_4596(void) = Call[String] : func:r35_4595, this:r35_4593 +# 35| mu35_4597(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4598(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4593 +# 35| r35_4599(glval) = VariableAddress[x328] : +# 35| r35_4600(glval) = FunctionAddress[~String] : +# 35| v35_4601(void) = Call[~String] : func:r35_4600, this:r35_4599 +# 35| mu35_4602(unknown) = ^CallSideEffect : ~m? +# 35| v35_4603(void) = ^IndirectReadSideEffect[-1] : &:r35_4599, ~m? +# 35| mu35_4604(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4599 +# 35| r35_4605(bool) = Constant[0] : +# 35| v35_4606(void) = ConditionalBranch : r35_4605 #-----| False -> Block 330 #-----| True (back edge) -> Block 329 -# 1006| Block 330 -# 1006| r1006_1(glval) = VariableAddress[x329] : -# 1006| mu1006_2(String) = Uninitialized[x329] : &:r1006_1 -# 1006| r1006_3(glval) = FunctionAddress[String] : -# 1006| v1006_4(void) = Call[String] : func:r1006_3, this:r1006_1 -# 1006| mu1006_5(unknown) = ^CallSideEffect : ~m? -# 1006| mu1006_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1006_1 -# 1007| r1007_1(glval) = VariableAddress[x329] : -# 1007| r1007_2(glval) = FunctionAddress[~String] : -# 1007| v1007_3(void) = Call[~String] : func:r1007_2, this:r1007_1 -# 1007| mu1007_4(unknown) = ^CallSideEffect : ~m? -# 1007| v1007_5(void) = ^IndirectReadSideEffect[-1] : &:r1007_1, ~m? -# 1007| mu1007_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1007_1 -# 1007| r1007_7(bool) = Constant[0] : -# 1007| v1007_8(void) = ConditionalBranch : r1007_7 +# 35| Block 330 +# 35| r35_4607(glval) = VariableAddress[x329] : +# 35| mu35_4608(String) = Uninitialized[x329] : &:r35_4607 +# 35| r35_4609(glval) = FunctionAddress[String] : +# 35| v35_4610(void) = Call[String] : func:r35_4609, this:r35_4607 +# 35| mu35_4611(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4612(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4607 +# 35| r35_4613(glval) = VariableAddress[x329] : +# 35| r35_4614(glval) = FunctionAddress[~String] : +# 35| v35_4615(void) = Call[~String] : func:r35_4614, this:r35_4613 +# 35| mu35_4616(unknown) = ^CallSideEffect : ~m? +# 35| v35_4617(void) = ^IndirectReadSideEffect[-1] : &:r35_4613, ~m? +# 35| mu35_4618(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4613 +# 35| r35_4619(bool) = Constant[0] : +# 35| v35_4620(void) = ConditionalBranch : r35_4619 #-----| False -> Block 331 #-----| True (back edge) -> Block 330 -# 1009| Block 331 -# 1009| r1009_1(glval) = VariableAddress[x330] : -# 1009| mu1009_2(String) = Uninitialized[x330] : &:r1009_1 -# 1009| r1009_3(glval) = FunctionAddress[String] : -# 1009| v1009_4(void) = Call[String] : func:r1009_3, this:r1009_1 -# 1009| mu1009_5(unknown) = ^CallSideEffect : ~m? -# 1009| mu1009_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1009_1 -# 1010| r1010_1(glval) = VariableAddress[x330] : -# 1010| r1010_2(glval) = FunctionAddress[~String] : -# 1010| v1010_3(void) = Call[~String] : func:r1010_2, this:r1010_1 -# 1010| mu1010_4(unknown) = ^CallSideEffect : ~m? -# 1010| v1010_5(void) = ^IndirectReadSideEffect[-1] : &:r1010_1, ~m? -# 1010| mu1010_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1010_1 -# 1010| r1010_7(bool) = Constant[0] : -# 1010| v1010_8(void) = ConditionalBranch : r1010_7 +# 35| Block 331 +# 35| r35_4621(glval) = VariableAddress[x330] : +# 35| mu35_4622(String) = Uninitialized[x330] : &:r35_4621 +# 35| r35_4623(glval) = FunctionAddress[String] : +# 35| v35_4624(void) = Call[String] : func:r35_4623, this:r35_4621 +# 35| mu35_4625(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4626(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4621 +# 35| r35_4627(glval) = VariableAddress[x330] : +# 35| r35_4628(glval) = FunctionAddress[~String] : +# 35| v35_4629(void) = Call[~String] : func:r35_4628, this:r35_4627 +# 35| mu35_4630(unknown) = ^CallSideEffect : ~m? +# 35| v35_4631(void) = ^IndirectReadSideEffect[-1] : &:r35_4627, ~m? +# 35| mu35_4632(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4627 +# 35| r35_4633(bool) = Constant[0] : +# 35| v35_4634(void) = ConditionalBranch : r35_4633 #-----| False -> Block 332 #-----| True (back edge) -> Block 331 -# 1012| Block 332 -# 1012| r1012_1(glval) = VariableAddress[x331] : -# 1012| mu1012_2(String) = Uninitialized[x331] : &:r1012_1 -# 1012| r1012_3(glval) = FunctionAddress[String] : -# 1012| v1012_4(void) = Call[String] : func:r1012_3, this:r1012_1 -# 1012| mu1012_5(unknown) = ^CallSideEffect : ~m? -# 1012| mu1012_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1012_1 -# 1013| r1013_1(glval) = VariableAddress[x331] : -# 1013| r1013_2(glval) = FunctionAddress[~String] : -# 1013| v1013_3(void) = Call[~String] : func:r1013_2, this:r1013_1 -# 1013| mu1013_4(unknown) = ^CallSideEffect : ~m? -# 1013| v1013_5(void) = ^IndirectReadSideEffect[-1] : &:r1013_1, ~m? -# 1013| mu1013_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1013_1 -# 1013| r1013_7(bool) = Constant[0] : -# 1013| v1013_8(void) = ConditionalBranch : r1013_7 +# 35| Block 332 +# 35| r35_4635(glval) = VariableAddress[x331] : +# 35| mu35_4636(String) = Uninitialized[x331] : &:r35_4635 +# 35| r35_4637(glval) = FunctionAddress[String] : +# 35| v35_4638(void) = Call[String] : func:r35_4637, this:r35_4635 +# 35| mu35_4639(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4640(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4635 +# 35| r35_4641(glval) = VariableAddress[x331] : +# 35| r35_4642(glval) = FunctionAddress[~String] : +# 35| v35_4643(void) = Call[~String] : func:r35_4642, this:r35_4641 +# 35| mu35_4644(unknown) = ^CallSideEffect : ~m? +# 35| v35_4645(void) = ^IndirectReadSideEffect[-1] : &:r35_4641, ~m? +# 35| mu35_4646(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4641 +# 35| r35_4647(bool) = Constant[0] : +# 35| v35_4648(void) = ConditionalBranch : r35_4647 #-----| False -> Block 333 #-----| True (back edge) -> Block 332 -# 1015| Block 333 -# 1015| r1015_1(glval) = VariableAddress[x332] : -# 1015| mu1015_2(String) = Uninitialized[x332] : &:r1015_1 -# 1015| r1015_3(glval) = FunctionAddress[String] : -# 1015| v1015_4(void) = Call[String] : func:r1015_3, this:r1015_1 -# 1015| mu1015_5(unknown) = ^CallSideEffect : ~m? -# 1015| mu1015_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1015_1 -# 1016| r1016_1(glval) = VariableAddress[x332] : -# 1016| r1016_2(glval) = FunctionAddress[~String] : -# 1016| v1016_3(void) = Call[~String] : func:r1016_2, this:r1016_1 -# 1016| mu1016_4(unknown) = ^CallSideEffect : ~m? -# 1016| v1016_5(void) = ^IndirectReadSideEffect[-1] : &:r1016_1, ~m? -# 1016| mu1016_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1016_1 -# 1016| r1016_7(bool) = Constant[0] : -# 1016| v1016_8(void) = ConditionalBranch : r1016_7 +# 35| Block 333 +# 35| r35_4649(glval) = VariableAddress[x332] : +# 35| mu35_4650(String) = Uninitialized[x332] : &:r35_4649 +# 35| r35_4651(glval) = FunctionAddress[String] : +# 35| v35_4652(void) = Call[String] : func:r35_4651, this:r35_4649 +# 35| mu35_4653(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4654(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4649 +# 35| r35_4655(glval) = VariableAddress[x332] : +# 35| r35_4656(glval) = FunctionAddress[~String] : +# 35| v35_4657(void) = Call[~String] : func:r35_4656, this:r35_4655 +# 35| mu35_4658(unknown) = ^CallSideEffect : ~m? +# 35| v35_4659(void) = ^IndirectReadSideEffect[-1] : &:r35_4655, ~m? +# 35| mu35_4660(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4655 +# 35| r35_4661(bool) = Constant[0] : +# 35| v35_4662(void) = ConditionalBranch : r35_4661 #-----| False -> Block 334 #-----| True (back edge) -> Block 333 -# 1018| Block 334 -# 1018| r1018_1(glval) = VariableAddress[x333] : -# 1018| mu1018_2(String) = Uninitialized[x333] : &:r1018_1 -# 1018| r1018_3(glval) = FunctionAddress[String] : -# 1018| v1018_4(void) = Call[String] : func:r1018_3, this:r1018_1 -# 1018| mu1018_5(unknown) = ^CallSideEffect : ~m? -# 1018| mu1018_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1018_1 -# 1019| r1019_1(glval) = VariableAddress[x333] : -# 1019| r1019_2(glval) = FunctionAddress[~String] : -# 1019| v1019_3(void) = Call[~String] : func:r1019_2, this:r1019_1 -# 1019| mu1019_4(unknown) = ^CallSideEffect : ~m? -# 1019| v1019_5(void) = ^IndirectReadSideEffect[-1] : &:r1019_1, ~m? -# 1019| mu1019_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1019_1 -# 1019| r1019_7(bool) = Constant[0] : -# 1019| v1019_8(void) = ConditionalBranch : r1019_7 +# 35| Block 334 +# 35| r35_4663(glval) = VariableAddress[x333] : +# 35| mu35_4664(String) = Uninitialized[x333] : &:r35_4663 +# 35| r35_4665(glval) = FunctionAddress[String] : +# 35| v35_4666(void) = Call[String] : func:r35_4665, this:r35_4663 +# 35| mu35_4667(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4668(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4663 +# 35| r35_4669(glval) = VariableAddress[x333] : +# 35| r35_4670(glval) = FunctionAddress[~String] : +# 35| v35_4671(void) = Call[~String] : func:r35_4670, this:r35_4669 +# 35| mu35_4672(unknown) = ^CallSideEffect : ~m? +# 35| v35_4673(void) = ^IndirectReadSideEffect[-1] : &:r35_4669, ~m? +# 35| mu35_4674(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4669 +# 35| r35_4675(bool) = Constant[0] : +# 35| v35_4676(void) = ConditionalBranch : r35_4675 #-----| False -> Block 335 #-----| True (back edge) -> Block 334 -# 1021| Block 335 -# 1021| r1021_1(glval) = VariableAddress[x334] : -# 1021| mu1021_2(String) = Uninitialized[x334] : &:r1021_1 -# 1021| r1021_3(glval) = FunctionAddress[String] : -# 1021| v1021_4(void) = Call[String] : func:r1021_3, this:r1021_1 -# 1021| mu1021_5(unknown) = ^CallSideEffect : ~m? -# 1021| mu1021_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1021_1 -# 1022| r1022_1(glval) = VariableAddress[x334] : -# 1022| r1022_2(glval) = FunctionAddress[~String] : -# 1022| v1022_3(void) = Call[~String] : func:r1022_2, this:r1022_1 -# 1022| mu1022_4(unknown) = ^CallSideEffect : ~m? -# 1022| v1022_5(void) = ^IndirectReadSideEffect[-1] : &:r1022_1, ~m? -# 1022| mu1022_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1022_1 -# 1022| r1022_7(bool) = Constant[0] : -# 1022| v1022_8(void) = ConditionalBranch : r1022_7 +# 35| Block 335 +# 35| r35_4677(glval) = VariableAddress[x334] : +# 35| mu35_4678(String) = Uninitialized[x334] : &:r35_4677 +# 35| r35_4679(glval) = FunctionAddress[String] : +# 35| v35_4680(void) = Call[String] : func:r35_4679, this:r35_4677 +# 35| mu35_4681(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4682(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4677 +# 35| r35_4683(glval) = VariableAddress[x334] : +# 35| r35_4684(glval) = FunctionAddress[~String] : +# 35| v35_4685(void) = Call[~String] : func:r35_4684, this:r35_4683 +# 35| mu35_4686(unknown) = ^CallSideEffect : ~m? +# 35| v35_4687(void) = ^IndirectReadSideEffect[-1] : &:r35_4683, ~m? +# 35| mu35_4688(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4683 +# 35| r35_4689(bool) = Constant[0] : +# 35| v35_4690(void) = ConditionalBranch : r35_4689 #-----| False -> Block 336 #-----| True (back edge) -> Block 335 -# 1024| Block 336 -# 1024| r1024_1(glval) = VariableAddress[x335] : -# 1024| mu1024_2(String) = Uninitialized[x335] : &:r1024_1 -# 1024| r1024_3(glval) = FunctionAddress[String] : -# 1024| v1024_4(void) = Call[String] : func:r1024_3, this:r1024_1 -# 1024| mu1024_5(unknown) = ^CallSideEffect : ~m? -# 1024| mu1024_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1024_1 -# 1025| r1025_1(glval) = VariableAddress[x335] : -# 1025| r1025_2(glval) = FunctionAddress[~String] : -# 1025| v1025_3(void) = Call[~String] : func:r1025_2, this:r1025_1 -# 1025| mu1025_4(unknown) = ^CallSideEffect : ~m? -# 1025| v1025_5(void) = ^IndirectReadSideEffect[-1] : &:r1025_1, ~m? -# 1025| mu1025_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1025_1 -# 1025| r1025_7(bool) = Constant[0] : -# 1025| v1025_8(void) = ConditionalBranch : r1025_7 +# 35| Block 336 +# 35| r35_4691(glval) = VariableAddress[x335] : +# 35| mu35_4692(String) = Uninitialized[x335] : &:r35_4691 +# 35| r35_4693(glval) = FunctionAddress[String] : +# 35| v35_4694(void) = Call[String] : func:r35_4693, this:r35_4691 +# 35| mu35_4695(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4696(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4691 +# 35| r35_4697(glval) = VariableAddress[x335] : +# 35| r35_4698(glval) = FunctionAddress[~String] : +# 35| v35_4699(void) = Call[~String] : func:r35_4698, this:r35_4697 +# 35| mu35_4700(unknown) = ^CallSideEffect : ~m? +# 35| v35_4701(void) = ^IndirectReadSideEffect[-1] : &:r35_4697, ~m? +# 35| mu35_4702(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4697 +# 35| r35_4703(bool) = Constant[0] : +# 35| v35_4704(void) = ConditionalBranch : r35_4703 #-----| False -> Block 337 #-----| True (back edge) -> Block 336 -# 1027| Block 337 -# 1027| r1027_1(glval) = VariableAddress[x336] : -# 1027| mu1027_2(String) = Uninitialized[x336] : &:r1027_1 -# 1027| r1027_3(glval) = FunctionAddress[String] : -# 1027| v1027_4(void) = Call[String] : func:r1027_3, this:r1027_1 -# 1027| mu1027_5(unknown) = ^CallSideEffect : ~m? -# 1027| mu1027_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1027_1 -# 1028| r1028_1(glval) = VariableAddress[x336] : -# 1028| r1028_2(glval) = FunctionAddress[~String] : -# 1028| v1028_3(void) = Call[~String] : func:r1028_2, this:r1028_1 -# 1028| mu1028_4(unknown) = ^CallSideEffect : ~m? -# 1028| v1028_5(void) = ^IndirectReadSideEffect[-1] : &:r1028_1, ~m? -# 1028| mu1028_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1028_1 -# 1028| r1028_7(bool) = Constant[0] : -# 1028| v1028_8(void) = ConditionalBranch : r1028_7 +# 35| Block 337 +# 35| r35_4705(glval) = VariableAddress[x336] : +# 35| mu35_4706(String) = Uninitialized[x336] : &:r35_4705 +# 35| r35_4707(glval) = FunctionAddress[String] : +# 35| v35_4708(void) = Call[String] : func:r35_4707, this:r35_4705 +# 35| mu35_4709(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4710(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4705 +# 35| r35_4711(glval) = VariableAddress[x336] : +# 35| r35_4712(glval) = FunctionAddress[~String] : +# 35| v35_4713(void) = Call[~String] : func:r35_4712, this:r35_4711 +# 35| mu35_4714(unknown) = ^CallSideEffect : ~m? +# 35| v35_4715(void) = ^IndirectReadSideEffect[-1] : &:r35_4711, ~m? +# 35| mu35_4716(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4711 +# 35| r35_4717(bool) = Constant[0] : +# 35| v35_4718(void) = ConditionalBranch : r35_4717 #-----| False -> Block 338 #-----| True (back edge) -> Block 337 -# 1030| Block 338 -# 1030| r1030_1(glval) = VariableAddress[x337] : -# 1030| mu1030_2(String) = Uninitialized[x337] : &:r1030_1 -# 1030| r1030_3(glval) = FunctionAddress[String] : -# 1030| v1030_4(void) = Call[String] : func:r1030_3, this:r1030_1 -# 1030| mu1030_5(unknown) = ^CallSideEffect : ~m? -# 1030| mu1030_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1030_1 -# 1031| r1031_1(glval) = VariableAddress[x337] : -# 1031| r1031_2(glval) = FunctionAddress[~String] : -# 1031| v1031_3(void) = Call[~String] : func:r1031_2, this:r1031_1 -# 1031| mu1031_4(unknown) = ^CallSideEffect : ~m? -# 1031| v1031_5(void) = ^IndirectReadSideEffect[-1] : &:r1031_1, ~m? -# 1031| mu1031_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1031_1 -# 1031| r1031_7(bool) = Constant[0] : -# 1031| v1031_8(void) = ConditionalBranch : r1031_7 +# 35| Block 338 +# 35| r35_4719(glval) = VariableAddress[x337] : +# 35| mu35_4720(String) = Uninitialized[x337] : &:r35_4719 +# 35| r35_4721(glval) = FunctionAddress[String] : +# 35| v35_4722(void) = Call[String] : func:r35_4721, this:r35_4719 +# 35| mu35_4723(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4724(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4719 +# 35| r35_4725(glval) = VariableAddress[x337] : +# 35| r35_4726(glval) = FunctionAddress[~String] : +# 35| v35_4727(void) = Call[~String] : func:r35_4726, this:r35_4725 +# 35| mu35_4728(unknown) = ^CallSideEffect : ~m? +# 35| v35_4729(void) = ^IndirectReadSideEffect[-1] : &:r35_4725, ~m? +# 35| mu35_4730(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4725 +# 35| r35_4731(bool) = Constant[0] : +# 35| v35_4732(void) = ConditionalBranch : r35_4731 #-----| False -> Block 339 #-----| True (back edge) -> Block 338 -# 1033| Block 339 -# 1033| r1033_1(glval) = VariableAddress[x338] : -# 1033| mu1033_2(String) = Uninitialized[x338] : &:r1033_1 -# 1033| r1033_3(glval) = FunctionAddress[String] : -# 1033| v1033_4(void) = Call[String] : func:r1033_3, this:r1033_1 -# 1033| mu1033_5(unknown) = ^CallSideEffect : ~m? -# 1033| mu1033_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1033_1 -# 1034| r1034_1(glval) = VariableAddress[x338] : -# 1034| r1034_2(glval) = FunctionAddress[~String] : -# 1034| v1034_3(void) = Call[~String] : func:r1034_2, this:r1034_1 -# 1034| mu1034_4(unknown) = ^CallSideEffect : ~m? -# 1034| v1034_5(void) = ^IndirectReadSideEffect[-1] : &:r1034_1, ~m? -# 1034| mu1034_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1034_1 -# 1034| r1034_7(bool) = Constant[0] : -# 1034| v1034_8(void) = ConditionalBranch : r1034_7 +# 35| Block 339 +# 35| r35_4733(glval) = VariableAddress[x338] : +# 35| mu35_4734(String) = Uninitialized[x338] : &:r35_4733 +# 35| r35_4735(glval) = FunctionAddress[String] : +# 35| v35_4736(void) = Call[String] : func:r35_4735, this:r35_4733 +# 35| mu35_4737(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4738(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4733 +# 35| r35_4739(glval) = VariableAddress[x338] : +# 35| r35_4740(glval) = FunctionAddress[~String] : +# 35| v35_4741(void) = Call[~String] : func:r35_4740, this:r35_4739 +# 35| mu35_4742(unknown) = ^CallSideEffect : ~m? +# 35| v35_4743(void) = ^IndirectReadSideEffect[-1] : &:r35_4739, ~m? +# 35| mu35_4744(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4739 +# 35| r35_4745(bool) = Constant[0] : +# 35| v35_4746(void) = ConditionalBranch : r35_4745 #-----| False -> Block 340 #-----| True (back edge) -> Block 339 -# 1036| Block 340 -# 1036| r1036_1(glval) = VariableAddress[x339] : -# 1036| mu1036_2(String) = Uninitialized[x339] : &:r1036_1 -# 1036| r1036_3(glval) = FunctionAddress[String] : -# 1036| v1036_4(void) = Call[String] : func:r1036_3, this:r1036_1 -# 1036| mu1036_5(unknown) = ^CallSideEffect : ~m? -# 1036| mu1036_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1036_1 -# 1037| r1037_1(glval) = VariableAddress[x339] : -# 1037| r1037_2(glval) = FunctionAddress[~String] : -# 1037| v1037_3(void) = Call[~String] : func:r1037_2, this:r1037_1 -# 1037| mu1037_4(unknown) = ^CallSideEffect : ~m? -# 1037| v1037_5(void) = ^IndirectReadSideEffect[-1] : &:r1037_1, ~m? -# 1037| mu1037_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1037_1 -# 1037| r1037_7(bool) = Constant[0] : -# 1037| v1037_8(void) = ConditionalBranch : r1037_7 +# 35| Block 340 +# 35| r35_4747(glval) = VariableAddress[x339] : +# 35| mu35_4748(String) = Uninitialized[x339] : &:r35_4747 +# 35| r35_4749(glval) = FunctionAddress[String] : +# 35| v35_4750(void) = Call[String] : func:r35_4749, this:r35_4747 +# 35| mu35_4751(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4752(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4747 +# 35| r35_4753(glval) = VariableAddress[x339] : +# 35| r35_4754(glval) = FunctionAddress[~String] : +# 35| v35_4755(void) = Call[~String] : func:r35_4754, this:r35_4753 +# 35| mu35_4756(unknown) = ^CallSideEffect : ~m? +# 35| v35_4757(void) = ^IndirectReadSideEffect[-1] : &:r35_4753, ~m? +# 35| mu35_4758(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4753 +# 35| r35_4759(bool) = Constant[0] : +# 35| v35_4760(void) = ConditionalBranch : r35_4759 #-----| False -> Block 341 #-----| True (back edge) -> Block 340 -# 1039| Block 341 -# 1039| r1039_1(glval) = VariableAddress[x340] : -# 1039| mu1039_2(String) = Uninitialized[x340] : &:r1039_1 -# 1039| r1039_3(glval) = FunctionAddress[String] : -# 1039| v1039_4(void) = Call[String] : func:r1039_3, this:r1039_1 -# 1039| mu1039_5(unknown) = ^CallSideEffect : ~m? -# 1039| mu1039_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1039_1 -# 1040| r1040_1(glval) = VariableAddress[x340] : -# 1040| r1040_2(glval) = FunctionAddress[~String] : -# 1040| v1040_3(void) = Call[~String] : func:r1040_2, this:r1040_1 -# 1040| mu1040_4(unknown) = ^CallSideEffect : ~m? -# 1040| v1040_5(void) = ^IndirectReadSideEffect[-1] : &:r1040_1, ~m? -# 1040| mu1040_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1040_1 -# 1040| r1040_7(bool) = Constant[0] : -# 1040| v1040_8(void) = ConditionalBranch : r1040_7 +# 35| Block 341 +# 35| r35_4761(glval) = VariableAddress[x340] : +# 35| mu35_4762(String) = Uninitialized[x340] : &:r35_4761 +# 35| r35_4763(glval) = FunctionAddress[String] : +# 35| v35_4764(void) = Call[String] : func:r35_4763, this:r35_4761 +# 35| mu35_4765(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4766(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4761 +# 35| r35_4767(glval) = VariableAddress[x340] : +# 35| r35_4768(glval) = FunctionAddress[~String] : +# 35| v35_4769(void) = Call[~String] : func:r35_4768, this:r35_4767 +# 35| mu35_4770(unknown) = ^CallSideEffect : ~m? +# 35| v35_4771(void) = ^IndirectReadSideEffect[-1] : &:r35_4767, ~m? +# 35| mu35_4772(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4767 +# 35| r35_4773(bool) = Constant[0] : +# 35| v35_4774(void) = ConditionalBranch : r35_4773 #-----| False -> Block 342 #-----| True (back edge) -> Block 341 -# 1042| Block 342 -# 1042| r1042_1(glval) = VariableAddress[x341] : -# 1042| mu1042_2(String) = Uninitialized[x341] : &:r1042_1 -# 1042| r1042_3(glval) = FunctionAddress[String] : -# 1042| v1042_4(void) = Call[String] : func:r1042_3, this:r1042_1 -# 1042| mu1042_5(unknown) = ^CallSideEffect : ~m? -# 1042| mu1042_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1042_1 -# 1043| r1043_1(glval) = VariableAddress[x341] : -# 1043| r1043_2(glval) = FunctionAddress[~String] : -# 1043| v1043_3(void) = Call[~String] : func:r1043_2, this:r1043_1 -# 1043| mu1043_4(unknown) = ^CallSideEffect : ~m? -# 1043| v1043_5(void) = ^IndirectReadSideEffect[-1] : &:r1043_1, ~m? -# 1043| mu1043_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1043_1 -# 1043| r1043_7(bool) = Constant[0] : -# 1043| v1043_8(void) = ConditionalBranch : r1043_7 +# 35| Block 342 +# 35| r35_4775(glval) = VariableAddress[x341] : +# 35| mu35_4776(String) = Uninitialized[x341] : &:r35_4775 +# 35| r35_4777(glval) = FunctionAddress[String] : +# 35| v35_4778(void) = Call[String] : func:r35_4777, this:r35_4775 +# 35| mu35_4779(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4780(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4775 +# 35| r35_4781(glval) = VariableAddress[x341] : +# 35| r35_4782(glval) = FunctionAddress[~String] : +# 35| v35_4783(void) = Call[~String] : func:r35_4782, this:r35_4781 +# 35| mu35_4784(unknown) = ^CallSideEffect : ~m? +# 35| v35_4785(void) = ^IndirectReadSideEffect[-1] : &:r35_4781, ~m? +# 35| mu35_4786(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4781 +# 35| r35_4787(bool) = Constant[0] : +# 35| v35_4788(void) = ConditionalBranch : r35_4787 #-----| False -> Block 343 #-----| True (back edge) -> Block 342 -# 1045| Block 343 -# 1045| r1045_1(glval) = VariableAddress[x342] : -# 1045| mu1045_2(String) = Uninitialized[x342] : &:r1045_1 -# 1045| r1045_3(glval) = FunctionAddress[String] : -# 1045| v1045_4(void) = Call[String] : func:r1045_3, this:r1045_1 -# 1045| mu1045_5(unknown) = ^CallSideEffect : ~m? -# 1045| mu1045_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1045_1 -# 1046| r1046_1(glval) = VariableAddress[x342] : -# 1046| r1046_2(glval) = FunctionAddress[~String] : -# 1046| v1046_3(void) = Call[~String] : func:r1046_2, this:r1046_1 -# 1046| mu1046_4(unknown) = ^CallSideEffect : ~m? -# 1046| v1046_5(void) = ^IndirectReadSideEffect[-1] : &:r1046_1, ~m? -# 1046| mu1046_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1046_1 -# 1046| r1046_7(bool) = Constant[0] : -# 1046| v1046_8(void) = ConditionalBranch : r1046_7 +# 35| Block 343 +# 35| r35_4789(glval) = VariableAddress[x342] : +# 35| mu35_4790(String) = Uninitialized[x342] : &:r35_4789 +# 35| r35_4791(glval) = FunctionAddress[String] : +# 35| v35_4792(void) = Call[String] : func:r35_4791, this:r35_4789 +# 35| mu35_4793(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4794(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4789 +# 35| r35_4795(glval) = VariableAddress[x342] : +# 35| r35_4796(glval) = FunctionAddress[~String] : +# 35| v35_4797(void) = Call[~String] : func:r35_4796, this:r35_4795 +# 35| mu35_4798(unknown) = ^CallSideEffect : ~m? +# 35| v35_4799(void) = ^IndirectReadSideEffect[-1] : &:r35_4795, ~m? +# 35| mu35_4800(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4795 +# 35| r35_4801(bool) = Constant[0] : +# 35| v35_4802(void) = ConditionalBranch : r35_4801 #-----| False -> Block 344 #-----| True (back edge) -> Block 343 -# 1048| Block 344 -# 1048| r1048_1(glval) = VariableAddress[x343] : -# 1048| mu1048_2(String) = Uninitialized[x343] : &:r1048_1 -# 1048| r1048_3(glval) = FunctionAddress[String] : -# 1048| v1048_4(void) = Call[String] : func:r1048_3, this:r1048_1 -# 1048| mu1048_5(unknown) = ^CallSideEffect : ~m? -# 1048| mu1048_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1048_1 -# 1049| r1049_1(glval) = VariableAddress[x343] : -# 1049| r1049_2(glval) = FunctionAddress[~String] : -# 1049| v1049_3(void) = Call[~String] : func:r1049_2, this:r1049_1 -# 1049| mu1049_4(unknown) = ^CallSideEffect : ~m? -# 1049| v1049_5(void) = ^IndirectReadSideEffect[-1] : &:r1049_1, ~m? -# 1049| mu1049_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1049_1 -# 1049| r1049_7(bool) = Constant[0] : -# 1049| v1049_8(void) = ConditionalBranch : r1049_7 +# 35| Block 344 +# 35| r35_4803(glval) = VariableAddress[x343] : +# 35| mu35_4804(String) = Uninitialized[x343] : &:r35_4803 +# 35| r35_4805(glval) = FunctionAddress[String] : +# 35| v35_4806(void) = Call[String] : func:r35_4805, this:r35_4803 +# 35| mu35_4807(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4808(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4803 +# 35| r35_4809(glval) = VariableAddress[x343] : +# 35| r35_4810(glval) = FunctionAddress[~String] : +# 35| v35_4811(void) = Call[~String] : func:r35_4810, this:r35_4809 +# 35| mu35_4812(unknown) = ^CallSideEffect : ~m? +# 35| v35_4813(void) = ^IndirectReadSideEffect[-1] : &:r35_4809, ~m? +# 35| mu35_4814(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4809 +# 35| r35_4815(bool) = Constant[0] : +# 35| v35_4816(void) = ConditionalBranch : r35_4815 #-----| False -> Block 345 #-----| True (back edge) -> Block 344 -# 1051| Block 345 -# 1051| r1051_1(glval) = VariableAddress[x344] : -# 1051| mu1051_2(String) = Uninitialized[x344] : &:r1051_1 -# 1051| r1051_3(glval) = FunctionAddress[String] : -# 1051| v1051_4(void) = Call[String] : func:r1051_3, this:r1051_1 -# 1051| mu1051_5(unknown) = ^CallSideEffect : ~m? -# 1051| mu1051_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1051_1 -# 1052| r1052_1(glval) = VariableAddress[x344] : -# 1052| r1052_2(glval) = FunctionAddress[~String] : -# 1052| v1052_3(void) = Call[~String] : func:r1052_2, this:r1052_1 -# 1052| mu1052_4(unknown) = ^CallSideEffect : ~m? -# 1052| v1052_5(void) = ^IndirectReadSideEffect[-1] : &:r1052_1, ~m? -# 1052| mu1052_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1052_1 -# 1052| r1052_7(bool) = Constant[0] : -# 1052| v1052_8(void) = ConditionalBranch : r1052_7 +# 35| Block 345 +# 35| r35_4817(glval) = VariableAddress[x344] : +# 35| mu35_4818(String) = Uninitialized[x344] : &:r35_4817 +# 35| r35_4819(glval) = FunctionAddress[String] : +# 35| v35_4820(void) = Call[String] : func:r35_4819, this:r35_4817 +# 35| mu35_4821(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4822(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4817 +# 35| r35_4823(glval) = VariableAddress[x344] : +# 35| r35_4824(glval) = FunctionAddress[~String] : +# 35| v35_4825(void) = Call[~String] : func:r35_4824, this:r35_4823 +# 35| mu35_4826(unknown) = ^CallSideEffect : ~m? +# 35| v35_4827(void) = ^IndirectReadSideEffect[-1] : &:r35_4823, ~m? +# 35| mu35_4828(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4823 +# 35| r35_4829(bool) = Constant[0] : +# 35| v35_4830(void) = ConditionalBranch : r35_4829 #-----| False -> Block 346 #-----| True (back edge) -> Block 345 -# 1054| Block 346 -# 1054| r1054_1(glval) = VariableAddress[x345] : -# 1054| mu1054_2(String) = Uninitialized[x345] : &:r1054_1 -# 1054| r1054_3(glval) = FunctionAddress[String] : -# 1054| v1054_4(void) = Call[String] : func:r1054_3, this:r1054_1 -# 1054| mu1054_5(unknown) = ^CallSideEffect : ~m? -# 1054| mu1054_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1054_1 -# 1055| r1055_1(glval) = VariableAddress[x345] : -# 1055| r1055_2(glval) = FunctionAddress[~String] : -# 1055| v1055_3(void) = Call[~String] : func:r1055_2, this:r1055_1 -# 1055| mu1055_4(unknown) = ^CallSideEffect : ~m? -# 1055| v1055_5(void) = ^IndirectReadSideEffect[-1] : &:r1055_1, ~m? -# 1055| mu1055_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1055_1 -# 1055| r1055_7(bool) = Constant[0] : -# 1055| v1055_8(void) = ConditionalBranch : r1055_7 +# 35| Block 346 +# 35| r35_4831(glval) = VariableAddress[x345] : +# 35| mu35_4832(String) = Uninitialized[x345] : &:r35_4831 +# 35| r35_4833(glval) = FunctionAddress[String] : +# 35| v35_4834(void) = Call[String] : func:r35_4833, this:r35_4831 +# 35| mu35_4835(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4836(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4831 +# 35| r35_4837(glval) = VariableAddress[x345] : +# 35| r35_4838(glval) = FunctionAddress[~String] : +# 35| v35_4839(void) = Call[~String] : func:r35_4838, this:r35_4837 +# 35| mu35_4840(unknown) = ^CallSideEffect : ~m? +# 35| v35_4841(void) = ^IndirectReadSideEffect[-1] : &:r35_4837, ~m? +# 35| mu35_4842(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4837 +# 35| r35_4843(bool) = Constant[0] : +# 35| v35_4844(void) = ConditionalBranch : r35_4843 #-----| False -> Block 347 #-----| True (back edge) -> Block 346 -# 1057| Block 347 -# 1057| r1057_1(glval) = VariableAddress[x346] : -# 1057| mu1057_2(String) = Uninitialized[x346] : &:r1057_1 -# 1057| r1057_3(glval) = FunctionAddress[String] : -# 1057| v1057_4(void) = Call[String] : func:r1057_3, this:r1057_1 -# 1057| mu1057_5(unknown) = ^CallSideEffect : ~m? -# 1057| mu1057_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1057_1 -# 1058| r1058_1(glval) = VariableAddress[x346] : -# 1058| r1058_2(glval) = FunctionAddress[~String] : -# 1058| v1058_3(void) = Call[~String] : func:r1058_2, this:r1058_1 -# 1058| mu1058_4(unknown) = ^CallSideEffect : ~m? -# 1058| v1058_5(void) = ^IndirectReadSideEffect[-1] : &:r1058_1, ~m? -# 1058| mu1058_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1058_1 -# 1058| r1058_7(bool) = Constant[0] : -# 1058| v1058_8(void) = ConditionalBranch : r1058_7 +# 35| Block 347 +# 35| r35_4845(glval) = VariableAddress[x346] : +# 35| mu35_4846(String) = Uninitialized[x346] : &:r35_4845 +# 35| r35_4847(glval) = FunctionAddress[String] : +# 35| v35_4848(void) = Call[String] : func:r35_4847, this:r35_4845 +# 35| mu35_4849(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4850(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4845 +# 35| r35_4851(glval) = VariableAddress[x346] : +# 35| r35_4852(glval) = FunctionAddress[~String] : +# 35| v35_4853(void) = Call[~String] : func:r35_4852, this:r35_4851 +# 35| mu35_4854(unknown) = ^CallSideEffect : ~m? +# 35| v35_4855(void) = ^IndirectReadSideEffect[-1] : &:r35_4851, ~m? +# 35| mu35_4856(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4851 +# 35| r35_4857(bool) = Constant[0] : +# 35| v35_4858(void) = ConditionalBranch : r35_4857 #-----| False -> Block 348 #-----| True (back edge) -> Block 347 -# 1060| Block 348 -# 1060| r1060_1(glval) = VariableAddress[x347] : -# 1060| mu1060_2(String) = Uninitialized[x347] : &:r1060_1 -# 1060| r1060_3(glval) = FunctionAddress[String] : -# 1060| v1060_4(void) = Call[String] : func:r1060_3, this:r1060_1 -# 1060| mu1060_5(unknown) = ^CallSideEffect : ~m? -# 1060| mu1060_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1060_1 -# 1061| r1061_1(glval) = VariableAddress[x347] : -# 1061| r1061_2(glval) = FunctionAddress[~String] : -# 1061| v1061_3(void) = Call[~String] : func:r1061_2, this:r1061_1 -# 1061| mu1061_4(unknown) = ^CallSideEffect : ~m? -# 1061| v1061_5(void) = ^IndirectReadSideEffect[-1] : &:r1061_1, ~m? -# 1061| mu1061_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1061_1 -# 1061| r1061_7(bool) = Constant[0] : -# 1061| v1061_8(void) = ConditionalBranch : r1061_7 +# 35| Block 348 +# 35| r35_4859(glval) = VariableAddress[x347] : +# 35| mu35_4860(String) = Uninitialized[x347] : &:r35_4859 +# 35| r35_4861(glval) = FunctionAddress[String] : +# 35| v35_4862(void) = Call[String] : func:r35_4861, this:r35_4859 +# 35| mu35_4863(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4864(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4859 +# 35| r35_4865(glval) = VariableAddress[x347] : +# 35| r35_4866(glval) = FunctionAddress[~String] : +# 35| v35_4867(void) = Call[~String] : func:r35_4866, this:r35_4865 +# 35| mu35_4868(unknown) = ^CallSideEffect : ~m? +# 35| v35_4869(void) = ^IndirectReadSideEffect[-1] : &:r35_4865, ~m? +# 35| mu35_4870(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4865 +# 35| r35_4871(bool) = Constant[0] : +# 35| v35_4872(void) = ConditionalBranch : r35_4871 #-----| False -> Block 349 #-----| True (back edge) -> Block 348 -# 1063| Block 349 -# 1063| r1063_1(glval) = VariableAddress[x348] : -# 1063| mu1063_2(String) = Uninitialized[x348] : &:r1063_1 -# 1063| r1063_3(glval) = FunctionAddress[String] : -# 1063| v1063_4(void) = Call[String] : func:r1063_3, this:r1063_1 -# 1063| mu1063_5(unknown) = ^CallSideEffect : ~m? -# 1063| mu1063_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1063_1 -# 1064| r1064_1(glval) = VariableAddress[x348] : -# 1064| r1064_2(glval) = FunctionAddress[~String] : -# 1064| v1064_3(void) = Call[~String] : func:r1064_2, this:r1064_1 -# 1064| mu1064_4(unknown) = ^CallSideEffect : ~m? -# 1064| v1064_5(void) = ^IndirectReadSideEffect[-1] : &:r1064_1, ~m? -# 1064| mu1064_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1064_1 -# 1064| r1064_7(bool) = Constant[0] : -# 1064| v1064_8(void) = ConditionalBranch : r1064_7 +# 35| Block 349 +# 35| r35_4873(glval) = VariableAddress[x348] : +# 35| mu35_4874(String) = Uninitialized[x348] : &:r35_4873 +# 35| r35_4875(glval) = FunctionAddress[String] : +# 35| v35_4876(void) = Call[String] : func:r35_4875, this:r35_4873 +# 35| mu35_4877(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4878(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4873 +# 35| r35_4879(glval) = VariableAddress[x348] : +# 35| r35_4880(glval) = FunctionAddress[~String] : +# 35| v35_4881(void) = Call[~String] : func:r35_4880, this:r35_4879 +# 35| mu35_4882(unknown) = ^CallSideEffect : ~m? +# 35| v35_4883(void) = ^IndirectReadSideEffect[-1] : &:r35_4879, ~m? +# 35| mu35_4884(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4879 +# 35| r35_4885(bool) = Constant[0] : +# 35| v35_4886(void) = ConditionalBranch : r35_4885 #-----| False -> Block 350 #-----| True (back edge) -> Block 349 -# 1066| Block 350 -# 1066| r1066_1(glval) = VariableAddress[x349] : -# 1066| mu1066_2(String) = Uninitialized[x349] : &:r1066_1 -# 1066| r1066_3(glval) = FunctionAddress[String] : -# 1066| v1066_4(void) = Call[String] : func:r1066_3, this:r1066_1 -# 1066| mu1066_5(unknown) = ^CallSideEffect : ~m? -# 1066| mu1066_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1066_1 -# 1067| r1067_1(glval) = VariableAddress[x349] : -# 1067| r1067_2(glval) = FunctionAddress[~String] : -# 1067| v1067_3(void) = Call[~String] : func:r1067_2, this:r1067_1 -# 1067| mu1067_4(unknown) = ^CallSideEffect : ~m? -# 1067| v1067_5(void) = ^IndirectReadSideEffect[-1] : &:r1067_1, ~m? -# 1067| mu1067_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1067_1 -# 1067| r1067_7(bool) = Constant[0] : -# 1067| v1067_8(void) = ConditionalBranch : r1067_7 +# 35| Block 350 +# 35| r35_4887(glval) = VariableAddress[x349] : +# 35| mu35_4888(String) = Uninitialized[x349] : &:r35_4887 +# 35| r35_4889(glval) = FunctionAddress[String] : +# 35| v35_4890(void) = Call[String] : func:r35_4889, this:r35_4887 +# 35| mu35_4891(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4892(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4887 +# 35| r35_4893(glval) = VariableAddress[x349] : +# 35| r35_4894(glval) = FunctionAddress[~String] : +# 35| v35_4895(void) = Call[~String] : func:r35_4894, this:r35_4893 +# 35| mu35_4896(unknown) = ^CallSideEffect : ~m? +# 35| v35_4897(void) = ^IndirectReadSideEffect[-1] : &:r35_4893, ~m? +# 35| mu35_4898(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4893 +# 35| r35_4899(bool) = Constant[0] : +# 35| v35_4900(void) = ConditionalBranch : r35_4899 #-----| False -> Block 351 #-----| True (back edge) -> Block 350 -# 1069| Block 351 -# 1069| r1069_1(glval) = VariableAddress[x350] : -# 1069| mu1069_2(String) = Uninitialized[x350] : &:r1069_1 -# 1069| r1069_3(glval) = FunctionAddress[String] : -# 1069| v1069_4(void) = Call[String] : func:r1069_3, this:r1069_1 -# 1069| mu1069_5(unknown) = ^CallSideEffect : ~m? -# 1069| mu1069_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1069_1 -# 1070| r1070_1(glval) = VariableAddress[x350] : -# 1070| r1070_2(glval) = FunctionAddress[~String] : -# 1070| v1070_3(void) = Call[~String] : func:r1070_2, this:r1070_1 -# 1070| mu1070_4(unknown) = ^CallSideEffect : ~m? -# 1070| v1070_5(void) = ^IndirectReadSideEffect[-1] : &:r1070_1, ~m? -# 1070| mu1070_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1070_1 -# 1070| r1070_7(bool) = Constant[0] : -# 1070| v1070_8(void) = ConditionalBranch : r1070_7 +# 35| Block 351 +# 35| r35_4901(glval) = VariableAddress[x350] : +# 35| mu35_4902(String) = Uninitialized[x350] : &:r35_4901 +# 35| r35_4903(glval) = FunctionAddress[String] : +# 35| v35_4904(void) = Call[String] : func:r35_4903, this:r35_4901 +# 35| mu35_4905(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4906(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4901 +# 35| r35_4907(glval) = VariableAddress[x350] : +# 35| r35_4908(glval) = FunctionAddress[~String] : +# 35| v35_4909(void) = Call[~String] : func:r35_4908, this:r35_4907 +# 35| mu35_4910(unknown) = ^CallSideEffect : ~m? +# 35| v35_4911(void) = ^IndirectReadSideEffect[-1] : &:r35_4907, ~m? +# 35| mu35_4912(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4907 +# 35| r35_4913(bool) = Constant[0] : +# 35| v35_4914(void) = ConditionalBranch : r35_4913 #-----| False -> Block 352 #-----| True (back edge) -> Block 351 -# 1072| Block 352 -# 1072| r1072_1(glval) = VariableAddress[x351] : -# 1072| mu1072_2(String) = Uninitialized[x351] : &:r1072_1 -# 1072| r1072_3(glval) = FunctionAddress[String] : -# 1072| v1072_4(void) = Call[String] : func:r1072_3, this:r1072_1 -# 1072| mu1072_5(unknown) = ^CallSideEffect : ~m? -# 1072| mu1072_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1072_1 -# 1073| r1073_1(glval) = VariableAddress[x351] : -# 1073| r1073_2(glval) = FunctionAddress[~String] : -# 1073| v1073_3(void) = Call[~String] : func:r1073_2, this:r1073_1 -# 1073| mu1073_4(unknown) = ^CallSideEffect : ~m? -# 1073| v1073_5(void) = ^IndirectReadSideEffect[-1] : &:r1073_1, ~m? -# 1073| mu1073_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1073_1 -# 1073| r1073_7(bool) = Constant[0] : -# 1073| v1073_8(void) = ConditionalBranch : r1073_7 +# 35| Block 352 +# 35| r35_4915(glval) = VariableAddress[x351] : +# 35| mu35_4916(String) = Uninitialized[x351] : &:r35_4915 +# 35| r35_4917(glval) = FunctionAddress[String] : +# 35| v35_4918(void) = Call[String] : func:r35_4917, this:r35_4915 +# 35| mu35_4919(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4920(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4915 +# 35| r35_4921(glval) = VariableAddress[x351] : +# 35| r35_4922(glval) = FunctionAddress[~String] : +# 35| v35_4923(void) = Call[~String] : func:r35_4922, this:r35_4921 +# 35| mu35_4924(unknown) = ^CallSideEffect : ~m? +# 35| v35_4925(void) = ^IndirectReadSideEffect[-1] : &:r35_4921, ~m? +# 35| mu35_4926(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4921 +# 35| r35_4927(bool) = Constant[0] : +# 35| v35_4928(void) = ConditionalBranch : r35_4927 #-----| False -> Block 353 #-----| True (back edge) -> Block 352 -# 1075| Block 353 -# 1075| r1075_1(glval) = VariableAddress[x352] : -# 1075| mu1075_2(String) = Uninitialized[x352] : &:r1075_1 -# 1075| r1075_3(glval) = FunctionAddress[String] : -# 1075| v1075_4(void) = Call[String] : func:r1075_3, this:r1075_1 -# 1075| mu1075_5(unknown) = ^CallSideEffect : ~m? -# 1075| mu1075_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1075_1 -# 1076| r1076_1(glval) = VariableAddress[x352] : -# 1076| r1076_2(glval) = FunctionAddress[~String] : -# 1076| v1076_3(void) = Call[~String] : func:r1076_2, this:r1076_1 -# 1076| mu1076_4(unknown) = ^CallSideEffect : ~m? -# 1076| v1076_5(void) = ^IndirectReadSideEffect[-1] : &:r1076_1, ~m? -# 1076| mu1076_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1076_1 -# 1076| r1076_7(bool) = Constant[0] : -# 1076| v1076_8(void) = ConditionalBranch : r1076_7 +# 35| Block 353 +# 35| r35_4929(glval) = VariableAddress[x352] : +# 35| mu35_4930(String) = Uninitialized[x352] : &:r35_4929 +# 35| r35_4931(glval) = FunctionAddress[String] : +# 35| v35_4932(void) = Call[String] : func:r35_4931, this:r35_4929 +# 35| mu35_4933(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4934(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4929 +# 35| r35_4935(glval) = VariableAddress[x352] : +# 35| r35_4936(glval) = FunctionAddress[~String] : +# 35| v35_4937(void) = Call[~String] : func:r35_4936, this:r35_4935 +# 35| mu35_4938(unknown) = ^CallSideEffect : ~m? +# 35| v35_4939(void) = ^IndirectReadSideEffect[-1] : &:r35_4935, ~m? +# 35| mu35_4940(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4935 +# 35| r35_4941(bool) = Constant[0] : +# 35| v35_4942(void) = ConditionalBranch : r35_4941 #-----| False -> Block 354 #-----| True (back edge) -> Block 353 -# 1078| Block 354 -# 1078| r1078_1(glval) = VariableAddress[x353] : -# 1078| mu1078_2(String) = Uninitialized[x353] : &:r1078_1 -# 1078| r1078_3(glval) = FunctionAddress[String] : -# 1078| v1078_4(void) = Call[String] : func:r1078_3, this:r1078_1 -# 1078| mu1078_5(unknown) = ^CallSideEffect : ~m? -# 1078| mu1078_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1078_1 -# 1079| r1079_1(glval) = VariableAddress[x353] : -# 1079| r1079_2(glval) = FunctionAddress[~String] : -# 1079| v1079_3(void) = Call[~String] : func:r1079_2, this:r1079_1 -# 1079| mu1079_4(unknown) = ^CallSideEffect : ~m? -# 1079| v1079_5(void) = ^IndirectReadSideEffect[-1] : &:r1079_1, ~m? -# 1079| mu1079_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1079_1 -# 1079| r1079_7(bool) = Constant[0] : -# 1079| v1079_8(void) = ConditionalBranch : r1079_7 +# 35| Block 354 +# 35| r35_4943(glval) = VariableAddress[x353] : +# 35| mu35_4944(String) = Uninitialized[x353] : &:r35_4943 +# 35| r35_4945(glval) = FunctionAddress[String] : +# 35| v35_4946(void) = Call[String] : func:r35_4945, this:r35_4943 +# 35| mu35_4947(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4948(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4943 +# 35| r35_4949(glval) = VariableAddress[x353] : +# 35| r35_4950(glval) = FunctionAddress[~String] : +# 35| v35_4951(void) = Call[~String] : func:r35_4950, this:r35_4949 +# 35| mu35_4952(unknown) = ^CallSideEffect : ~m? +# 35| v35_4953(void) = ^IndirectReadSideEffect[-1] : &:r35_4949, ~m? +# 35| mu35_4954(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4949 +# 35| r35_4955(bool) = Constant[0] : +# 35| v35_4956(void) = ConditionalBranch : r35_4955 #-----| False -> Block 355 #-----| True (back edge) -> Block 354 -# 1081| Block 355 -# 1081| r1081_1(glval) = VariableAddress[x354] : -# 1081| mu1081_2(String) = Uninitialized[x354] : &:r1081_1 -# 1081| r1081_3(glval) = FunctionAddress[String] : -# 1081| v1081_4(void) = Call[String] : func:r1081_3, this:r1081_1 -# 1081| mu1081_5(unknown) = ^CallSideEffect : ~m? -# 1081| mu1081_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1081_1 -# 1082| r1082_1(glval) = VariableAddress[x354] : -# 1082| r1082_2(glval) = FunctionAddress[~String] : -# 1082| v1082_3(void) = Call[~String] : func:r1082_2, this:r1082_1 -# 1082| mu1082_4(unknown) = ^CallSideEffect : ~m? -# 1082| v1082_5(void) = ^IndirectReadSideEffect[-1] : &:r1082_1, ~m? -# 1082| mu1082_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1082_1 -# 1082| r1082_7(bool) = Constant[0] : -# 1082| v1082_8(void) = ConditionalBranch : r1082_7 +# 35| Block 355 +# 35| r35_4957(glval) = VariableAddress[x354] : +# 35| mu35_4958(String) = Uninitialized[x354] : &:r35_4957 +# 35| r35_4959(glval) = FunctionAddress[String] : +# 35| v35_4960(void) = Call[String] : func:r35_4959, this:r35_4957 +# 35| mu35_4961(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4962(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4957 +# 35| r35_4963(glval) = VariableAddress[x354] : +# 35| r35_4964(glval) = FunctionAddress[~String] : +# 35| v35_4965(void) = Call[~String] : func:r35_4964, this:r35_4963 +# 35| mu35_4966(unknown) = ^CallSideEffect : ~m? +# 35| v35_4967(void) = ^IndirectReadSideEffect[-1] : &:r35_4963, ~m? +# 35| mu35_4968(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4963 +# 35| r35_4969(bool) = Constant[0] : +# 35| v35_4970(void) = ConditionalBranch : r35_4969 #-----| False -> Block 356 #-----| True (back edge) -> Block 355 -# 1084| Block 356 -# 1084| r1084_1(glval) = VariableAddress[x355] : -# 1084| mu1084_2(String) = Uninitialized[x355] : &:r1084_1 -# 1084| r1084_3(glval) = FunctionAddress[String] : -# 1084| v1084_4(void) = Call[String] : func:r1084_3, this:r1084_1 -# 1084| mu1084_5(unknown) = ^CallSideEffect : ~m? -# 1084| mu1084_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1084_1 -# 1085| r1085_1(glval) = VariableAddress[x355] : -# 1085| r1085_2(glval) = FunctionAddress[~String] : -# 1085| v1085_3(void) = Call[~String] : func:r1085_2, this:r1085_1 -# 1085| mu1085_4(unknown) = ^CallSideEffect : ~m? -# 1085| v1085_5(void) = ^IndirectReadSideEffect[-1] : &:r1085_1, ~m? -# 1085| mu1085_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1085_1 -# 1085| r1085_7(bool) = Constant[0] : -# 1085| v1085_8(void) = ConditionalBranch : r1085_7 +# 35| Block 356 +# 35| r35_4971(glval) = VariableAddress[x355] : +# 35| mu35_4972(String) = Uninitialized[x355] : &:r35_4971 +# 35| r35_4973(glval) = FunctionAddress[String] : +# 35| v35_4974(void) = Call[String] : func:r35_4973, this:r35_4971 +# 35| mu35_4975(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4976(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4971 +# 35| r35_4977(glval) = VariableAddress[x355] : +# 35| r35_4978(glval) = FunctionAddress[~String] : +# 35| v35_4979(void) = Call[~String] : func:r35_4978, this:r35_4977 +# 35| mu35_4980(unknown) = ^CallSideEffect : ~m? +# 35| v35_4981(void) = ^IndirectReadSideEffect[-1] : &:r35_4977, ~m? +# 35| mu35_4982(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4977 +# 35| r35_4983(bool) = Constant[0] : +# 35| v35_4984(void) = ConditionalBranch : r35_4983 #-----| False -> Block 357 #-----| True (back edge) -> Block 356 -# 1087| Block 357 -# 1087| r1087_1(glval) = VariableAddress[x356] : -# 1087| mu1087_2(String) = Uninitialized[x356] : &:r1087_1 -# 1087| r1087_3(glval) = FunctionAddress[String] : -# 1087| v1087_4(void) = Call[String] : func:r1087_3, this:r1087_1 -# 1087| mu1087_5(unknown) = ^CallSideEffect : ~m? -# 1087| mu1087_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1087_1 -# 1088| r1088_1(glval) = VariableAddress[x356] : -# 1088| r1088_2(glval) = FunctionAddress[~String] : -# 1088| v1088_3(void) = Call[~String] : func:r1088_2, this:r1088_1 -# 1088| mu1088_4(unknown) = ^CallSideEffect : ~m? -# 1088| v1088_5(void) = ^IndirectReadSideEffect[-1] : &:r1088_1, ~m? -# 1088| mu1088_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1088_1 -# 1088| r1088_7(bool) = Constant[0] : -# 1088| v1088_8(void) = ConditionalBranch : r1088_7 +# 35| Block 357 +# 35| r35_4985(glval) = VariableAddress[x356] : +# 35| mu35_4986(String) = Uninitialized[x356] : &:r35_4985 +# 35| r35_4987(glval) = FunctionAddress[String] : +# 35| v35_4988(void) = Call[String] : func:r35_4987, this:r35_4985 +# 35| mu35_4989(unknown) = ^CallSideEffect : ~m? +# 35| mu35_4990(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4985 +# 35| r35_4991(glval) = VariableAddress[x356] : +# 35| r35_4992(glval) = FunctionAddress[~String] : +# 35| v35_4993(void) = Call[~String] : func:r35_4992, this:r35_4991 +# 35| mu35_4994(unknown) = ^CallSideEffect : ~m? +# 35| v35_4995(void) = ^IndirectReadSideEffect[-1] : &:r35_4991, ~m? +# 35| mu35_4996(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4991 +# 35| r35_4997(bool) = Constant[0] : +# 35| v35_4998(void) = ConditionalBranch : r35_4997 #-----| False -> Block 358 #-----| True (back edge) -> Block 357 -# 1090| Block 358 -# 1090| r1090_1(glval) = VariableAddress[x357] : -# 1090| mu1090_2(String) = Uninitialized[x357] : &:r1090_1 -# 1090| r1090_3(glval) = FunctionAddress[String] : -# 1090| v1090_4(void) = Call[String] : func:r1090_3, this:r1090_1 -# 1090| mu1090_5(unknown) = ^CallSideEffect : ~m? -# 1090| mu1090_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1090_1 -# 1091| r1091_1(glval) = VariableAddress[x357] : -# 1091| r1091_2(glval) = FunctionAddress[~String] : -# 1091| v1091_3(void) = Call[~String] : func:r1091_2, this:r1091_1 -# 1091| mu1091_4(unknown) = ^CallSideEffect : ~m? -# 1091| v1091_5(void) = ^IndirectReadSideEffect[-1] : &:r1091_1, ~m? -# 1091| mu1091_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1091_1 -# 1091| r1091_7(bool) = Constant[0] : -# 1091| v1091_8(void) = ConditionalBranch : r1091_7 +# 35| Block 358 +# 35| r35_4999(glval) = VariableAddress[x357] : +# 35| mu35_5000(String) = Uninitialized[x357] : &:r35_4999 +# 35| r35_5001(glval) = FunctionAddress[String] : +# 35| v35_5002(void) = Call[String] : func:r35_5001, this:r35_4999 +# 35| mu35_5003(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5004(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_4999 +# 35| r35_5005(glval) = VariableAddress[x357] : +# 35| r35_5006(glval) = FunctionAddress[~String] : +# 35| v35_5007(void) = Call[~String] : func:r35_5006, this:r35_5005 +# 35| mu35_5008(unknown) = ^CallSideEffect : ~m? +# 35| v35_5009(void) = ^IndirectReadSideEffect[-1] : &:r35_5005, ~m? +# 35| mu35_5010(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5005 +# 35| r35_5011(bool) = Constant[0] : +# 35| v35_5012(void) = ConditionalBranch : r35_5011 #-----| False -> Block 359 #-----| True (back edge) -> Block 358 -# 1093| Block 359 -# 1093| r1093_1(glval) = VariableAddress[x358] : -# 1093| mu1093_2(String) = Uninitialized[x358] : &:r1093_1 -# 1093| r1093_3(glval) = FunctionAddress[String] : -# 1093| v1093_4(void) = Call[String] : func:r1093_3, this:r1093_1 -# 1093| mu1093_5(unknown) = ^CallSideEffect : ~m? -# 1093| mu1093_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1093_1 -# 1094| r1094_1(glval) = VariableAddress[x358] : -# 1094| r1094_2(glval) = FunctionAddress[~String] : -# 1094| v1094_3(void) = Call[~String] : func:r1094_2, this:r1094_1 -# 1094| mu1094_4(unknown) = ^CallSideEffect : ~m? -# 1094| v1094_5(void) = ^IndirectReadSideEffect[-1] : &:r1094_1, ~m? -# 1094| mu1094_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1094_1 -# 1094| r1094_7(bool) = Constant[0] : -# 1094| v1094_8(void) = ConditionalBranch : r1094_7 +# 35| Block 359 +# 35| r35_5013(glval) = VariableAddress[x358] : +# 35| mu35_5014(String) = Uninitialized[x358] : &:r35_5013 +# 35| r35_5015(glval) = FunctionAddress[String] : +# 35| v35_5016(void) = Call[String] : func:r35_5015, this:r35_5013 +# 35| mu35_5017(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5018(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5013 +# 35| r35_5019(glval) = VariableAddress[x358] : +# 35| r35_5020(glval) = FunctionAddress[~String] : +# 35| v35_5021(void) = Call[~String] : func:r35_5020, this:r35_5019 +# 35| mu35_5022(unknown) = ^CallSideEffect : ~m? +# 35| v35_5023(void) = ^IndirectReadSideEffect[-1] : &:r35_5019, ~m? +# 35| mu35_5024(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5019 +# 35| r35_5025(bool) = Constant[0] : +# 35| v35_5026(void) = ConditionalBranch : r35_5025 #-----| False -> Block 360 #-----| True (back edge) -> Block 359 -# 1096| Block 360 -# 1096| r1096_1(glval) = VariableAddress[x359] : -# 1096| mu1096_2(String) = Uninitialized[x359] : &:r1096_1 -# 1096| r1096_3(glval) = FunctionAddress[String] : -# 1096| v1096_4(void) = Call[String] : func:r1096_3, this:r1096_1 -# 1096| mu1096_5(unknown) = ^CallSideEffect : ~m? -# 1096| mu1096_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1096_1 -# 1097| r1097_1(glval) = VariableAddress[x359] : -# 1097| r1097_2(glval) = FunctionAddress[~String] : -# 1097| v1097_3(void) = Call[~String] : func:r1097_2, this:r1097_1 -# 1097| mu1097_4(unknown) = ^CallSideEffect : ~m? -# 1097| v1097_5(void) = ^IndirectReadSideEffect[-1] : &:r1097_1, ~m? -# 1097| mu1097_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1097_1 -# 1097| r1097_7(bool) = Constant[0] : -# 1097| v1097_8(void) = ConditionalBranch : r1097_7 +# 35| Block 360 +# 35| r35_5027(glval) = VariableAddress[x359] : +# 35| mu35_5028(String) = Uninitialized[x359] : &:r35_5027 +# 35| r35_5029(glval) = FunctionAddress[String] : +# 35| v35_5030(void) = Call[String] : func:r35_5029, this:r35_5027 +# 35| mu35_5031(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5032(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5027 +# 35| r35_5033(glval) = VariableAddress[x359] : +# 35| r35_5034(glval) = FunctionAddress[~String] : +# 35| v35_5035(void) = Call[~String] : func:r35_5034, this:r35_5033 +# 35| mu35_5036(unknown) = ^CallSideEffect : ~m? +# 35| v35_5037(void) = ^IndirectReadSideEffect[-1] : &:r35_5033, ~m? +# 35| mu35_5038(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5033 +# 35| r35_5039(bool) = Constant[0] : +# 35| v35_5040(void) = ConditionalBranch : r35_5039 #-----| False -> Block 361 #-----| True (back edge) -> Block 360 -# 1099| Block 361 -# 1099| r1099_1(glval) = VariableAddress[x360] : -# 1099| mu1099_2(String) = Uninitialized[x360] : &:r1099_1 -# 1099| r1099_3(glval) = FunctionAddress[String] : -# 1099| v1099_4(void) = Call[String] : func:r1099_3, this:r1099_1 -# 1099| mu1099_5(unknown) = ^CallSideEffect : ~m? -# 1099| mu1099_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1099_1 -# 1100| r1100_1(glval) = VariableAddress[x360] : -# 1100| r1100_2(glval) = FunctionAddress[~String] : -# 1100| v1100_3(void) = Call[~String] : func:r1100_2, this:r1100_1 -# 1100| mu1100_4(unknown) = ^CallSideEffect : ~m? -# 1100| v1100_5(void) = ^IndirectReadSideEffect[-1] : &:r1100_1, ~m? -# 1100| mu1100_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1100_1 -# 1100| r1100_7(bool) = Constant[0] : -# 1100| v1100_8(void) = ConditionalBranch : r1100_7 +# 35| Block 361 +# 35| r35_5041(glval) = VariableAddress[x360] : +# 35| mu35_5042(String) = Uninitialized[x360] : &:r35_5041 +# 35| r35_5043(glval) = FunctionAddress[String] : +# 35| v35_5044(void) = Call[String] : func:r35_5043, this:r35_5041 +# 35| mu35_5045(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5046(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5041 +# 35| r35_5047(glval) = VariableAddress[x360] : +# 35| r35_5048(glval) = FunctionAddress[~String] : +# 35| v35_5049(void) = Call[~String] : func:r35_5048, this:r35_5047 +# 35| mu35_5050(unknown) = ^CallSideEffect : ~m? +# 35| v35_5051(void) = ^IndirectReadSideEffect[-1] : &:r35_5047, ~m? +# 35| mu35_5052(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5047 +# 35| r35_5053(bool) = Constant[0] : +# 35| v35_5054(void) = ConditionalBranch : r35_5053 #-----| False -> Block 362 #-----| True (back edge) -> Block 361 -# 1102| Block 362 -# 1102| r1102_1(glval) = VariableAddress[x361] : -# 1102| mu1102_2(String) = Uninitialized[x361] : &:r1102_1 -# 1102| r1102_3(glval) = FunctionAddress[String] : -# 1102| v1102_4(void) = Call[String] : func:r1102_3, this:r1102_1 -# 1102| mu1102_5(unknown) = ^CallSideEffect : ~m? -# 1102| mu1102_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1102_1 -# 1103| r1103_1(glval) = VariableAddress[x361] : -# 1103| r1103_2(glval) = FunctionAddress[~String] : -# 1103| v1103_3(void) = Call[~String] : func:r1103_2, this:r1103_1 -# 1103| mu1103_4(unknown) = ^CallSideEffect : ~m? -# 1103| v1103_5(void) = ^IndirectReadSideEffect[-1] : &:r1103_1, ~m? -# 1103| mu1103_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1103_1 -# 1103| r1103_7(bool) = Constant[0] : -# 1103| v1103_8(void) = ConditionalBranch : r1103_7 +# 35| Block 362 +# 35| r35_5055(glval) = VariableAddress[x361] : +# 35| mu35_5056(String) = Uninitialized[x361] : &:r35_5055 +# 35| r35_5057(glval) = FunctionAddress[String] : +# 35| v35_5058(void) = Call[String] : func:r35_5057, this:r35_5055 +# 35| mu35_5059(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5060(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5055 +# 35| r35_5061(glval) = VariableAddress[x361] : +# 35| r35_5062(glval) = FunctionAddress[~String] : +# 35| v35_5063(void) = Call[~String] : func:r35_5062, this:r35_5061 +# 35| mu35_5064(unknown) = ^CallSideEffect : ~m? +# 35| v35_5065(void) = ^IndirectReadSideEffect[-1] : &:r35_5061, ~m? +# 35| mu35_5066(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5061 +# 35| r35_5067(bool) = Constant[0] : +# 35| v35_5068(void) = ConditionalBranch : r35_5067 #-----| False -> Block 363 #-----| True (back edge) -> Block 362 -# 1105| Block 363 -# 1105| r1105_1(glval) = VariableAddress[x362] : -# 1105| mu1105_2(String) = Uninitialized[x362] : &:r1105_1 -# 1105| r1105_3(glval) = FunctionAddress[String] : -# 1105| v1105_4(void) = Call[String] : func:r1105_3, this:r1105_1 -# 1105| mu1105_5(unknown) = ^CallSideEffect : ~m? -# 1105| mu1105_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1105_1 -# 1106| r1106_1(glval) = VariableAddress[x362] : -# 1106| r1106_2(glval) = FunctionAddress[~String] : -# 1106| v1106_3(void) = Call[~String] : func:r1106_2, this:r1106_1 -# 1106| mu1106_4(unknown) = ^CallSideEffect : ~m? -# 1106| v1106_5(void) = ^IndirectReadSideEffect[-1] : &:r1106_1, ~m? -# 1106| mu1106_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1106_1 -# 1106| r1106_7(bool) = Constant[0] : -# 1106| v1106_8(void) = ConditionalBranch : r1106_7 +# 35| Block 363 +# 35| r35_5069(glval) = VariableAddress[x362] : +# 35| mu35_5070(String) = Uninitialized[x362] : &:r35_5069 +# 35| r35_5071(glval) = FunctionAddress[String] : +# 35| v35_5072(void) = Call[String] : func:r35_5071, this:r35_5069 +# 35| mu35_5073(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5074(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5069 +# 35| r35_5075(glval) = VariableAddress[x362] : +# 35| r35_5076(glval) = FunctionAddress[~String] : +# 35| v35_5077(void) = Call[~String] : func:r35_5076, this:r35_5075 +# 35| mu35_5078(unknown) = ^CallSideEffect : ~m? +# 35| v35_5079(void) = ^IndirectReadSideEffect[-1] : &:r35_5075, ~m? +# 35| mu35_5080(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5075 +# 35| r35_5081(bool) = Constant[0] : +# 35| v35_5082(void) = ConditionalBranch : r35_5081 #-----| False -> Block 364 #-----| True (back edge) -> Block 363 -# 1108| Block 364 -# 1108| r1108_1(glval) = VariableAddress[x363] : -# 1108| mu1108_2(String) = Uninitialized[x363] : &:r1108_1 -# 1108| r1108_3(glval) = FunctionAddress[String] : -# 1108| v1108_4(void) = Call[String] : func:r1108_3, this:r1108_1 -# 1108| mu1108_5(unknown) = ^CallSideEffect : ~m? -# 1108| mu1108_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1108_1 -# 1109| r1109_1(glval) = VariableAddress[x363] : -# 1109| r1109_2(glval) = FunctionAddress[~String] : -# 1109| v1109_3(void) = Call[~String] : func:r1109_2, this:r1109_1 -# 1109| mu1109_4(unknown) = ^CallSideEffect : ~m? -# 1109| v1109_5(void) = ^IndirectReadSideEffect[-1] : &:r1109_1, ~m? -# 1109| mu1109_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1109_1 -# 1109| r1109_7(bool) = Constant[0] : -# 1109| v1109_8(void) = ConditionalBranch : r1109_7 +# 35| Block 364 +# 35| r35_5083(glval) = VariableAddress[x363] : +# 35| mu35_5084(String) = Uninitialized[x363] : &:r35_5083 +# 35| r35_5085(glval) = FunctionAddress[String] : +# 35| v35_5086(void) = Call[String] : func:r35_5085, this:r35_5083 +# 35| mu35_5087(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5088(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5083 +# 35| r35_5089(glval) = VariableAddress[x363] : +# 35| r35_5090(glval) = FunctionAddress[~String] : +# 35| v35_5091(void) = Call[~String] : func:r35_5090, this:r35_5089 +# 35| mu35_5092(unknown) = ^CallSideEffect : ~m? +# 35| v35_5093(void) = ^IndirectReadSideEffect[-1] : &:r35_5089, ~m? +# 35| mu35_5094(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5089 +# 35| r35_5095(bool) = Constant[0] : +# 35| v35_5096(void) = ConditionalBranch : r35_5095 #-----| False -> Block 365 #-----| True (back edge) -> Block 364 -# 1111| Block 365 -# 1111| r1111_1(glval) = VariableAddress[x364] : -# 1111| mu1111_2(String) = Uninitialized[x364] : &:r1111_1 -# 1111| r1111_3(glval) = FunctionAddress[String] : -# 1111| v1111_4(void) = Call[String] : func:r1111_3, this:r1111_1 -# 1111| mu1111_5(unknown) = ^CallSideEffect : ~m? -# 1111| mu1111_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1111_1 -# 1112| r1112_1(glval) = VariableAddress[x364] : -# 1112| r1112_2(glval) = FunctionAddress[~String] : -# 1112| v1112_3(void) = Call[~String] : func:r1112_2, this:r1112_1 -# 1112| mu1112_4(unknown) = ^CallSideEffect : ~m? -# 1112| v1112_5(void) = ^IndirectReadSideEffect[-1] : &:r1112_1, ~m? -# 1112| mu1112_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1112_1 -# 1112| r1112_7(bool) = Constant[0] : -# 1112| v1112_8(void) = ConditionalBranch : r1112_7 +# 35| Block 365 +# 35| r35_5097(glval) = VariableAddress[x364] : +# 35| mu35_5098(String) = Uninitialized[x364] : &:r35_5097 +# 35| r35_5099(glval) = FunctionAddress[String] : +# 35| v35_5100(void) = Call[String] : func:r35_5099, this:r35_5097 +# 35| mu35_5101(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5102(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5097 +# 35| r35_5103(glval) = VariableAddress[x364] : +# 35| r35_5104(glval) = FunctionAddress[~String] : +# 35| v35_5105(void) = Call[~String] : func:r35_5104, this:r35_5103 +# 35| mu35_5106(unknown) = ^CallSideEffect : ~m? +# 35| v35_5107(void) = ^IndirectReadSideEffect[-1] : &:r35_5103, ~m? +# 35| mu35_5108(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5103 +# 35| r35_5109(bool) = Constant[0] : +# 35| v35_5110(void) = ConditionalBranch : r35_5109 #-----| False -> Block 366 #-----| True (back edge) -> Block 365 -# 1114| Block 366 -# 1114| r1114_1(glval) = VariableAddress[x365] : -# 1114| mu1114_2(String) = Uninitialized[x365] : &:r1114_1 -# 1114| r1114_3(glval) = FunctionAddress[String] : -# 1114| v1114_4(void) = Call[String] : func:r1114_3, this:r1114_1 -# 1114| mu1114_5(unknown) = ^CallSideEffect : ~m? -# 1114| mu1114_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1114_1 -# 1115| r1115_1(glval) = VariableAddress[x365] : -# 1115| r1115_2(glval) = FunctionAddress[~String] : -# 1115| v1115_3(void) = Call[~String] : func:r1115_2, this:r1115_1 -# 1115| mu1115_4(unknown) = ^CallSideEffect : ~m? -# 1115| v1115_5(void) = ^IndirectReadSideEffect[-1] : &:r1115_1, ~m? -# 1115| mu1115_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1115_1 -# 1115| r1115_7(bool) = Constant[0] : -# 1115| v1115_8(void) = ConditionalBranch : r1115_7 +# 35| Block 366 +# 35| r35_5111(glval) = VariableAddress[x365] : +# 35| mu35_5112(String) = Uninitialized[x365] : &:r35_5111 +# 35| r35_5113(glval) = FunctionAddress[String] : +# 35| v35_5114(void) = Call[String] : func:r35_5113, this:r35_5111 +# 35| mu35_5115(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5116(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5111 +# 35| r35_5117(glval) = VariableAddress[x365] : +# 35| r35_5118(glval) = FunctionAddress[~String] : +# 35| v35_5119(void) = Call[~String] : func:r35_5118, this:r35_5117 +# 35| mu35_5120(unknown) = ^CallSideEffect : ~m? +# 35| v35_5121(void) = ^IndirectReadSideEffect[-1] : &:r35_5117, ~m? +# 35| mu35_5122(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5117 +# 35| r35_5123(bool) = Constant[0] : +# 35| v35_5124(void) = ConditionalBranch : r35_5123 #-----| False -> Block 367 #-----| True (back edge) -> Block 366 -# 1117| Block 367 -# 1117| r1117_1(glval) = VariableAddress[x366] : -# 1117| mu1117_2(String) = Uninitialized[x366] : &:r1117_1 -# 1117| r1117_3(glval) = FunctionAddress[String] : -# 1117| v1117_4(void) = Call[String] : func:r1117_3, this:r1117_1 -# 1117| mu1117_5(unknown) = ^CallSideEffect : ~m? -# 1117| mu1117_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1117_1 -# 1118| r1118_1(glval) = VariableAddress[x366] : -# 1118| r1118_2(glval) = FunctionAddress[~String] : -# 1118| v1118_3(void) = Call[~String] : func:r1118_2, this:r1118_1 -# 1118| mu1118_4(unknown) = ^CallSideEffect : ~m? -# 1118| v1118_5(void) = ^IndirectReadSideEffect[-1] : &:r1118_1, ~m? -# 1118| mu1118_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1118_1 -# 1118| r1118_7(bool) = Constant[0] : -# 1118| v1118_8(void) = ConditionalBranch : r1118_7 +# 35| Block 367 +# 35| r35_5125(glval) = VariableAddress[x366] : +# 35| mu35_5126(String) = Uninitialized[x366] : &:r35_5125 +# 35| r35_5127(glval) = FunctionAddress[String] : +# 35| v35_5128(void) = Call[String] : func:r35_5127, this:r35_5125 +# 35| mu35_5129(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5130(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5125 +# 35| r35_5131(glval) = VariableAddress[x366] : +# 35| r35_5132(glval) = FunctionAddress[~String] : +# 35| v35_5133(void) = Call[~String] : func:r35_5132, this:r35_5131 +# 35| mu35_5134(unknown) = ^CallSideEffect : ~m? +# 35| v35_5135(void) = ^IndirectReadSideEffect[-1] : &:r35_5131, ~m? +# 35| mu35_5136(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5131 +# 35| r35_5137(bool) = Constant[0] : +# 35| v35_5138(void) = ConditionalBranch : r35_5137 #-----| False -> Block 368 #-----| True (back edge) -> Block 367 -# 1120| Block 368 -# 1120| r1120_1(glval) = VariableAddress[x367] : -# 1120| mu1120_2(String) = Uninitialized[x367] : &:r1120_1 -# 1120| r1120_3(glval) = FunctionAddress[String] : -# 1120| v1120_4(void) = Call[String] : func:r1120_3, this:r1120_1 -# 1120| mu1120_5(unknown) = ^CallSideEffect : ~m? -# 1120| mu1120_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1120_1 -# 1121| r1121_1(glval) = VariableAddress[x367] : -# 1121| r1121_2(glval) = FunctionAddress[~String] : -# 1121| v1121_3(void) = Call[~String] : func:r1121_2, this:r1121_1 -# 1121| mu1121_4(unknown) = ^CallSideEffect : ~m? -# 1121| v1121_5(void) = ^IndirectReadSideEffect[-1] : &:r1121_1, ~m? -# 1121| mu1121_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1121_1 -# 1121| r1121_7(bool) = Constant[0] : -# 1121| v1121_8(void) = ConditionalBranch : r1121_7 +# 35| Block 368 +# 35| r35_5139(glval) = VariableAddress[x367] : +# 35| mu35_5140(String) = Uninitialized[x367] : &:r35_5139 +# 35| r35_5141(glval) = FunctionAddress[String] : +# 35| v35_5142(void) = Call[String] : func:r35_5141, this:r35_5139 +# 35| mu35_5143(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5144(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5139 +# 35| r35_5145(glval) = VariableAddress[x367] : +# 35| r35_5146(glval) = FunctionAddress[~String] : +# 35| v35_5147(void) = Call[~String] : func:r35_5146, this:r35_5145 +# 35| mu35_5148(unknown) = ^CallSideEffect : ~m? +# 35| v35_5149(void) = ^IndirectReadSideEffect[-1] : &:r35_5145, ~m? +# 35| mu35_5150(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5145 +# 35| r35_5151(bool) = Constant[0] : +# 35| v35_5152(void) = ConditionalBranch : r35_5151 #-----| False -> Block 369 #-----| True (back edge) -> Block 368 -# 1123| Block 369 -# 1123| r1123_1(glval) = VariableAddress[x368] : -# 1123| mu1123_2(String) = Uninitialized[x368] : &:r1123_1 -# 1123| r1123_3(glval) = FunctionAddress[String] : -# 1123| v1123_4(void) = Call[String] : func:r1123_3, this:r1123_1 -# 1123| mu1123_5(unknown) = ^CallSideEffect : ~m? -# 1123| mu1123_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1123_1 -# 1124| r1124_1(glval) = VariableAddress[x368] : -# 1124| r1124_2(glval) = FunctionAddress[~String] : -# 1124| v1124_3(void) = Call[~String] : func:r1124_2, this:r1124_1 -# 1124| mu1124_4(unknown) = ^CallSideEffect : ~m? -# 1124| v1124_5(void) = ^IndirectReadSideEffect[-1] : &:r1124_1, ~m? -# 1124| mu1124_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1124_1 -# 1124| r1124_7(bool) = Constant[0] : -# 1124| v1124_8(void) = ConditionalBranch : r1124_7 +# 35| Block 369 +# 35| r35_5153(glval) = VariableAddress[x368] : +# 35| mu35_5154(String) = Uninitialized[x368] : &:r35_5153 +# 35| r35_5155(glval) = FunctionAddress[String] : +# 35| v35_5156(void) = Call[String] : func:r35_5155, this:r35_5153 +# 35| mu35_5157(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5158(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5153 +# 35| r35_5159(glval) = VariableAddress[x368] : +# 35| r35_5160(glval) = FunctionAddress[~String] : +# 35| v35_5161(void) = Call[~String] : func:r35_5160, this:r35_5159 +# 35| mu35_5162(unknown) = ^CallSideEffect : ~m? +# 35| v35_5163(void) = ^IndirectReadSideEffect[-1] : &:r35_5159, ~m? +# 35| mu35_5164(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5159 +# 35| r35_5165(bool) = Constant[0] : +# 35| v35_5166(void) = ConditionalBranch : r35_5165 #-----| False -> Block 370 #-----| True (back edge) -> Block 369 -# 1126| Block 370 -# 1126| r1126_1(glval) = VariableAddress[x369] : -# 1126| mu1126_2(String) = Uninitialized[x369] : &:r1126_1 -# 1126| r1126_3(glval) = FunctionAddress[String] : -# 1126| v1126_4(void) = Call[String] : func:r1126_3, this:r1126_1 -# 1126| mu1126_5(unknown) = ^CallSideEffect : ~m? -# 1126| mu1126_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1126_1 -# 1127| r1127_1(glval) = VariableAddress[x369] : -# 1127| r1127_2(glval) = FunctionAddress[~String] : -# 1127| v1127_3(void) = Call[~String] : func:r1127_2, this:r1127_1 -# 1127| mu1127_4(unknown) = ^CallSideEffect : ~m? -# 1127| v1127_5(void) = ^IndirectReadSideEffect[-1] : &:r1127_1, ~m? -# 1127| mu1127_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1127_1 -# 1127| r1127_7(bool) = Constant[0] : -# 1127| v1127_8(void) = ConditionalBranch : r1127_7 +# 35| Block 370 +# 35| r35_5167(glval) = VariableAddress[x369] : +# 35| mu35_5168(String) = Uninitialized[x369] : &:r35_5167 +# 35| r35_5169(glval) = FunctionAddress[String] : +# 35| v35_5170(void) = Call[String] : func:r35_5169, this:r35_5167 +# 35| mu35_5171(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5172(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5167 +# 35| r35_5173(glval) = VariableAddress[x369] : +# 35| r35_5174(glval) = FunctionAddress[~String] : +# 35| v35_5175(void) = Call[~String] : func:r35_5174, this:r35_5173 +# 35| mu35_5176(unknown) = ^CallSideEffect : ~m? +# 35| v35_5177(void) = ^IndirectReadSideEffect[-1] : &:r35_5173, ~m? +# 35| mu35_5178(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5173 +# 35| r35_5179(bool) = Constant[0] : +# 35| v35_5180(void) = ConditionalBranch : r35_5179 #-----| False -> Block 371 #-----| True (back edge) -> Block 370 -# 1129| Block 371 -# 1129| r1129_1(glval) = VariableAddress[x370] : -# 1129| mu1129_2(String) = Uninitialized[x370] : &:r1129_1 -# 1129| r1129_3(glval) = FunctionAddress[String] : -# 1129| v1129_4(void) = Call[String] : func:r1129_3, this:r1129_1 -# 1129| mu1129_5(unknown) = ^CallSideEffect : ~m? -# 1129| mu1129_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1129_1 -# 1130| r1130_1(glval) = VariableAddress[x370] : -# 1130| r1130_2(glval) = FunctionAddress[~String] : -# 1130| v1130_3(void) = Call[~String] : func:r1130_2, this:r1130_1 -# 1130| mu1130_4(unknown) = ^CallSideEffect : ~m? -# 1130| v1130_5(void) = ^IndirectReadSideEffect[-1] : &:r1130_1, ~m? -# 1130| mu1130_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1130_1 -# 1130| r1130_7(bool) = Constant[0] : -# 1130| v1130_8(void) = ConditionalBranch : r1130_7 +# 35| Block 371 +# 35| r35_5181(glval) = VariableAddress[x370] : +# 35| mu35_5182(String) = Uninitialized[x370] : &:r35_5181 +# 35| r35_5183(glval) = FunctionAddress[String] : +# 35| v35_5184(void) = Call[String] : func:r35_5183, this:r35_5181 +# 35| mu35_5185(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5186(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5181 +# 35| r35_5187(glval) = VariableAddress[x370] : +# 35| r35_5188(glval) = FunctionAddress[~String] : +# 35| v35_5189(void) = Call[~String] : func:r35_5188, this:r35_5187 +# 35| mu35_5190(unknown) = ^CallSideEffect : ~m? +# 35| v35_5191(void) = ^IndirectReadSideEffect[-1] : &:r35_5187, ~m? +# 35| mu35_5192(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5187 +# 35| r35_5193(bool) = Constant[0] : +# 35| v35_5194(void) = ConditionalBranch : r35_5193 #-----| False -> Block 372 #-----| True (back edge) -> Block 371 -# 1132| Block 372 -# 1132| r1132_1(glval) = VariableAddress[x371] : -# 1132| mu1132_2(String) = Uninitialized[x371] : &:r1132_1 -# 1132| r1132_3(glval) = FunctionAddress[String] : -# 1132| v1132_4(void) = Call[String] : func:r1132_3, this:r1132_1 -# 1132| mu1132_5(unknown) = ^CallSideEffect : ~m? -# 1132| mu1132_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1132_1 -# 1133| r1133_1(glval) = VariableAddress[x371] : -# 1133| r1133_2(glval) = FunctionAddress[~String] : -# 1133| v1133_3(void) = Call[~String] : func:r1133_2, this:r1133_1 -# 1133| mu1133_4(unknown) = ^CallSideEffect : ~m? -# 1133| v1133_5(void) = ^IndirectReadSideEffect[-1] : &:r1133_1, ~m? -# 1133| mu1133_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1133_1 -# 1133| r1133_7(bool) = Constant[0] : -# 1133| v1133_8(void) = ConditionalBranch : r1133_7 +# 35| Block 372 +# 35| r35_5195(glval) = VariableAddress[x371] : +# 35| mu35_5196(String) = Uninitialized[x371] : &:r35_5195 +# 35| r35_5197(glval) = FunctionAddress[String] : +# 35| v35_5198(void) = Call[String] : func:r35_5197, this:r35_5195 +# 35| mu35_5199(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5200(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5195 +# 35| r35_5201(glval) = VariableAddress[x371] : +# 35| r35_5202(glval) = FunctionAddress[~String] : +# 35| v35_5203(void) = Call[~String] : func:r35_5202, this:r35_5201 +# 35| mu35_5204(unknown) = ^CallSideEffect : ~m? +# 35| v35_5205(void) = ^IndirectReadSideEffect[-1] : &:r35_5201, ~m? +# 35| mu35_5206(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5201 +# 35| r35_5207(bool) = Constant[0] : +# 35| v35_5208(void) = ConditionalBranch : r35_5207 #-----| False -> Block 373 #-----| True (back edge) -> Block 372 -# 1135| Block 373 -# 1135| r1135_1(glval) = VariableAddress[x372] : -# 1135| mu1135_2(String) = Uninitialized[x372] : &:r1135_1 -# 1135| r1135_3(glval) = FunctionAddress[String] : -# 1135| v1135_4(void) = Call[String] : func:r1135_3, this:r1135_1 -# 1135| mu1135_5(unknown) = ^CallSideEffect : ~m? -# 1135| mu1135_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1135_1 -# 1136| r1136_1(glval) = VariableAddress[x372] : -# 1136| r1136_2(glval) = FunctionAddress[~String] : -# 1136| v1136_3(void) = Call[~String] : func:r1136_2, this:r1136_1 -# 1136| mu1136_4(unknown) = ^CallSideEffect : ~m? -# 1136| v1136_5(void) = ^IndirectReadSideEffect[-1] : &:r1136_1, ~m? -# 1136| mu1136_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1136_1 -# 1136| r1136_7(bool) = Constant[0] : -# 1136| v1136_8(void) = ConditionalBranch : r1136_7 +# 35| Block 373 +# 35| r35_5209(glval) = VariableAddress[x372] : +# 35| mu35_5210(String) = Uninitialized[x372] : &:r35_5209 +# 35| r35_5211(glval) = FunctionAddress[String] : +# 35| v35_5212(void) = Call[String] : func:r35_5211, this:r35_5209 +# 35| mu35_5213(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5214(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5209 +# 35| r35_5215(glval) = VariableAddress[x372] : +# 35| r35_5216(glval) = FunctionAddress[~String] : +# 35| v35_5217(void) = Call[~String] : func:r35_5216, this:r35_5215 +# 35| mu35_5218(unknown) = ^CallSideEffect : ~m? +# 35| v35_5219(void) = ^IndirectReadSideEffect[-1] : &:r35_5215, ~m? +# 35| mu35_5220(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5215 +# 35| r35_5221(bool) = Constant[0] : +# 35| v35_5222(void) = ConditionalBranch : r35_5221 #-----| False -> Block 374 #-----| True (back edge) -> Block 373 -# 1138| Block 374 -# 1138| r1138_1(glval) = VariableAddress[x373] : -# 1138| mu1138_2(String) = Uninitialized[x373] : &:r1138_1 -# 1138| r1138_3(glval) = FunctionAddress[String] : -# 1138| v1138_4(void) = Call[String] : func:r1138_3, this:r1138_1 -# 1138| mu1138_5(unknown) = ^CallSideEffect : ~m? -# 1138| mu1138_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1138_1 -# 1139| r1139_1(glval) = VariableAddress[x373] : -# 1139| r1139_2(glval) = FunctionAddress[~String] : -# 1139| v1139_3(void) = Call[~String] : func:r1139_2, this:r1139_1 -# 1139| mu1139_4(unknown) = ^CallSideEffect : ~m? -# 1139| v1139_5(void) = ^IndirectReadSideEffect[-1] : &:r1139_1, ~m? -# 1139| mu1139_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1139_1 -# 1139| r1139_7(bool) = Constant[0] : -# 1139| v1139_8(void) = ConditionalBranch : r1139_7 +# 35| Block 374 +# 35| r35_5223(glval) = VariableAddress[x373] : +# 35| mu35_5224(String) = Uninitialized[x373] : &:r35_5223 +# 35| r35_5225(glval) = FunctionAddress[String] : +# 35| v35_5226(void) = Call[String] : func:r35_5225, this:r35_5223 +# 35| mu35_5227(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5228(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5223 +# 35| r35_5229(glval) = VariableAddress[x373] : +# 35| r35_5230(glval) = FunctionAddress[~String] : +# 35| v35_5231(void) = Call[~String] : func:r35_5230, this:r35_5229 +# 35| mu35_5232(unknown) = ^CallSideEffect : ~m? +# 35| v35_5233(void) = ^IndirectReadSideEffect[-1] : &:r35_5229, ~m? +# 35| mu35_5234(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5229 +# 35| r35_5235(bool) = Constant[0] : +# 35| v35_5236(void) = ConditionalBranch : r35_5235 #-----| False -> Block 375 #-----| True (back edge) -> Block 374 -# 1141| Block 375 -# 1141| r1141_1(glval) = VariableAddress[x374] : -# 1141| mu1141_2(String) = Uninitialized[x374] : &:r1141_1 -# 1141| r1141_3(glval) = FunctionAddress[String] : -# 1141| v1141_4(void) = Call[String] : func:r1141_3, this:r1141_1 -# 1141| mu1141_5(unknown) = ^CallSideEffect : ~m? -# 1141| mu1141_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1141_1 -# 1142| r1142_1(glval) = VariableAddress[x374] : -# 1142| r1142_2(glval) = FunctionAddress[~String] : -# 1142| v1142_3(void) = Call[~String] : func:r1142_2, this:r1142_1 -# 1142| mu1142_4(unknown) = ^CallSideEffect : ~m? -# 1142| v1142_5(void) = ^IndirectReadSideEffect[-1] : &:r1142_1, ~m? -# 1142| mu1142_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1142_1 -# 1142| r1142_7(bool) = Constant[0] : -# 1142| v1142_8(void) = ConditionalBranch : r1142_7 +# 35| Block 375 +# 35| r35_5237(glval) = VariableAddress[x374] : +# 35| mu35_5238(String) = Uninitialized[x374] : &:r35_5237 +# 35| r35_5239(glval) = FunctionAddress[String] : +# 35| v35_5240(void) = Call[String] : func:r35_5239, this:r35_5237 +# 35| mu35_5241(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5242(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5237 +# 35| r35_5243(glval) = VariableAddress[x374] : +# 35| r35_5244(glval) = FunctionAddress[~String] : +# 35| v35_5245(void) = Call[~String] : func:r35_5244, this:r35_5243 +# 35| mu35_5246(unknown) = ^CallSideEffect : ~m? +# 35| v35_5247(void) = ^IndirectReadSideEffect[-1] : &:r35_5243, ~m? +# 35| mu35_5248(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5243 +# 35| r35_5249(bool) = Constant[0] : +# 35| v35_5250(void) = ConditionalBranch : r35_5249 #-----| False -> Block 376 #-----| True (back edge) -> Block 375 -# 1144| Block 376 -# 1144| r1144_1(glval) = VariableAddress[x375] : -# 1144| mu1144_2(String) = Uninitialized[x375] : &:r1144_1 -# 1144| r1144_3(glval) = FunctionAddress[String] : -# 1144| v1144_4(void) = Call[String] : func:r1144_3, this:r1144_1 -# 1144| mu1144_5(unknown) = ^CallSideEffect : ~m? -# 1144| mu1144_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1144_1 -# 1145| r1145_1(glval) = VariableAddress[x375] : -# 1145| r1145_2(glval) = FunctionAddress[~String] : -# 1145| v1145_3(void) = Call[~String] : func:r1145_2, this:r1145_1 -# 1145| mu1145_4(unknown) = ^CallSideEffect : ~m? -# 1145| v1145_5(void) = ^IndirectReadSideEffect[-1] : &:r1145_1, ~m? -# 1145| mu1145_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1145_1 -# 1145| r1145_7(bool) = Constant[0] : -# 1145| v1145_8(void) = ConditionalBranch : r1145_7 +# 35| Block 376 +# 35| r35_5251(glval) = VariableAddress[x375] : +# 35| mu35_5252(String) = Uninitialized[x375] : &:r35_5251 +# 35| r35_5253(glval) = FunctionAddress[String] : +# 35| v35_5254(void) = Call[String] : func:r35_5253, this:r35_5251 +# 35| mu35_5255(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5256(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5251 +# 35| r35_5257(glval) = VariableAddress[x375] : +# 35| r35_5258(glval) = FunctionAddress[~String] : +# 35| v35_5259(void) = Call[~String] : func:r35_5258, this:r35_5257 +# 35| mu35_5260(unknown) = ^CallSideEffect : ~m? +# 35| v35_5261(void) = ^IndirectReadSideEffect[-1] : &:r35_5257, ~m? +# 35| mu35_5262(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5257 +# 35| r35_5263(bool) = Constant[0] : +# 35| v35_5264(void) = ConditionalBranch : r35_5263 #-----| False -> Block 377 #-----| True (back edge) -> Block 376 -# 1147| Block 377 -# 1147| r1147_1(glval) = VariableAddress[x376] : -# 1147| mu1147_2(String) = Uninitialized[x376] : &:r1147_1 -# 1147| r1147_3(glval) = FunctionAddress[String] : -# 1147| v1147_4(void) = Call[String] : func:r1147_3, this:r1147_1 -# 1147| mu1147_5(unknown) = ^CallSideEffect : ~m? -# 1147| mu1147_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1147_1 -# 1148| r1148_1(glval) = VariableAddress[x376] : -# 1148| r1148_2(glval) = FunctionAddress[~String] : -# 1148| v1148_3(void) = Call[~String] : func:r1148_2, this:r1148_1 -# 1148| mu1148_4(unknown) = ^CallSideEffect : ~m? -# 1148| v1148_5(void) = ^IndirectReadSideEffect[-1] : &:r1148_1, ~m? -# 1148| mu1148_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1148_1 -# 1148| r1148_7(bool) = Constant[0] : -# 1148| v1148_8(void) = ConditionalBranch : r1148_7 +# 35| Block 377 +# 35| r35_5265(glval) = VariableAddress[x376] : +# 35| mu35_5266(String) = Uninitialized[x376] : &:r35_5265 +# 35| r35_5267(glval) = FunctionAddress[String] : +# 35| v35_5268(void) = Call[String] : func:r35_5267, this:r35_5265 +# 35| mu35_5269(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5270(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5265 +# 35| r35_5271(glval) = VariableAddress[x376] : +# 35| r35_5272(glval) = FunctionAddress[~String] : +# 35| v35_5273(void) = Call[~String] : func:r35_5272, this:r35_5271 +# 35| mu35_5274(unknown) = ^CallSideEffect : ~m? +# 35| v35_5275(void) = ^IndirectReadSideEffect[-1] : &:r35_5271, ~m? +# 35| mu35_5276(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5271 +# 35| r35_5277(bool) = Constant[0] : +# 35| v35_5278(void) = ConditionalBranch : r35_5277 #-----| False -> Block 378 #-----| True (back edge) -> Block 377 -# 1150| Block 378 -# 1150| r1150_1(glval) = VariableAddress[x377] : -# 1150| mu1150_2(String) = Uninitialized[x377] : &:r1150_1 -# 1150| r1150_3(glval) = FunctionAddress[String] : -# 1150| v1150_4(void) = Call[String] : func:r1150_3, this:r1150_1 -# 1150| mu1150_5(unknown) = ^CallSideEffect : ~m? -# 1150| mu1150_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1150_1 -# 1151| r1151_1(glval) = VariableAddress[x377] : -# 1151| r1151_2(glval) = FunctionAddress[~String] : -# 1151| v1151_3(void) = Call[~String] : func:r1151_2, this:r1151_1 -# 1151| mu1151_4(unknown) = ^CallSideEffect : ~m? -# 1151| v1151_5(void) = ^IndirectReadSideEffect[-1] : &:r1151_1, ~m? -# 1151| mu1151_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1151_1 -# 1151| r1151_7(bool) = Constant[0] : -# 1151| v1151_8(void) = ConditionalBranch : r1151_7 +# 35| Block 378 +# 35| r35_5279(glval) = VariableAddress[x377] : +# 35| mu35_5280(String) = Uninitialized[x377] : &:r35_5279 +# 35| r35_5281(glval) = FunctionAddress[String] : +# 35| v35_5282(void) = Call[String] : func:r35_5281, this:r35_5279 +# 35| mu35_5283(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5284(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5279 +# 35| r35_5285(glval) = VariableAddress[x377] : +# 35| r35_5286(glval) = FunctionAddress[~String] : +# 35| v35_5287(void) = Call[~String] : func:r35_5286, this:r35_5285 +# 35| mu35_5288(unknown) = ^CallSideEffect : ~m? +# 35| v35_5289(void) = ^IndirectReadSideEffect[-1] : &:r35_5285, ~m? +# 35| mu35_5290(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5285 +# 35| r35_5291(bool) = Constant[0] : +# 35| v35_5292(void) = ConditionalBranch : r35_5291 #-----| False -> Block 379 #-----| True (back edge) -> Block 378 -# 1153| Block 379 -# 1153| r1153_1(glval) = VariableAddress[x378] : -# 1153| mu1153_2(String) = Uninitialized[x378] : &:r1153_1 -# 1153| r1153_3(glval) = FunctionAddress[String] : -# 1153| v1153_4(void) = Call[String] : func:r1153_3, this:r1153_1 -# 1153| mu1153_5(unknown) = ^CallSideEffect : ~m? -# 1153| mu1153_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1153_1 -# 1154| r1154_1(glval) = VariableAddress[x378] : -# 1154| r1154_2(glval) = FunctionAddress[~String] : -# 1154| v1154_3(void) = Call[~String] : func:r1154_2, this:r1154_1 -# 1154| mu1154_4(unknown) = ^CallSideEffect : ~m? -# 1154| v1154_5(void) = ^IndirectReadSideEffect[-1] : &:r1154_1, ~m? -# 1154| mu1154_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1154_1 -# 1154| r1154_7(bool) = Constant[0] : -# 1154| v1154_8(void) = ConditionalBranch : r1154_7 +# 35| Block 379 +# 35| r35_5293(glval) = VariableAddress[x378] : +# 35| mu35_5294(String) = Uninitialized[x378] : &:r35_5293 +# 35| r35_5295(glval) = FunctionAddress[String] : +# 35| v35_5296(void) = Call[String] : func:r35_5295, this:r35_5293 +# 35| mu35_5297(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5298(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5293 +# 35| r35_5299(glval) = VariableAddress[x378] : +# 35| r35_5300(glval) = FunctionAddress[~String] : +# 35| v35_5301(void) = Call[~String] : func:r35_5300, this:r35_5299 +# 35| mu35_5302(unknown) = ^CallSideEffect : ~m? +# 35| v35_5303(void) = ^IndirectReadSideEffect[-1] : &:r35_5299, ~m? +# 35| mu35_5304(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5299 +# 35| r35_5305(bool) = Constant[0] : +# 35| v35_5306(void) = ConditionalBranch : r35_5305 #-----| False -> Block 380 #-----| True (back edge) -> Block 379 -# 1156| Block 380 -# 1156| r1156_1(glval) = VariableAddress[x379] : -# 1156| mu1156_2(String) = Uninitialized[x379] : &:r1156_1 -# 1156| r1156_3(glval) = FunctionAddress[String] : -# 1156| v1156_4(void) = Call[String] : func:r1156_3, this:r1156_1 -# 1156| mu1156_5(unknown) = ^CallSideEffect : ~m? -# 1156| mu1156_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1156_1 -# 1157| r1157_1(glval) = VariableAddress[x379] : -# 1157| r1157_2(glval) = FunctionAddress[~String] : -# 1157| v1157_3(void) = Call[~String] : func:r1157_2, this:r1157_1 -# 1157| mu1157_4(unknown) = ^CallSideEffect : ~m? -# 1157| v1157_5(void) = ^IndirectReadSideEffect[-1] : &:r1157_1, ~m? -# 1157| mu1157_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1157_1 -# 1157| r1157_7(bool) = Constant[0] : -# 1157| v1157_8(void) = ConditionalBranch : r1157_7 +# 35| Block 380 +# 35| r35_5307(glval) = VariableAddress[x379] : +# 35| mu35_5308(String) = Uninitialized[x379] : &:r35_5307 +# 35| r35_5309(glval) = FunctionAddress[String] : +# 35| v35_5310(void) = Call[String] : func:r35_5309, this:r35_5307 +# 35| mu35_5311(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5312(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5307 +# 35| r35_5313(glval) = VariableAddress[x379] : +# 35| r35_5314(glval) = FunctionAddress[~String] : +# 35| v35_5315(void) = Call[~String] : func:r35_5314, this:r35_5313 +# 35| mu35_5316(unknown) = ^CallSideEffect : ~m? +# 35| v35_5317(void) = ^IndirectReadSideEffect[-1] : &:r35_5313, ~m? +# 35| mu35_5318(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5313 +# 35| r35_5319(bool) = Constant[0] : +# 35| v35_5320(void) = ConditionalBranch : r35_5319 #-----| False -> Block 381 #-----| True (back edge) -> Block 380 -# 1159| Block 381 -# 1159| r1159_1(glval) = VariableAddress[x380] : -# 1159| mu1159_2(String) = Uninitialized[x380] : &:r1159_1 -# 1159| r1159_3(glval) = FunctionAddress[String] : -# 1159| v1159_4(void) = Call[String] : func:r1159_3, this:r1159_1 -# 1159| mu1159_5(unknown) = ^CallSideEffect : ~m? -# 1159| mu1159_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1159_1 -# 1160| r1160_1(glval) = VariableAddress[x380] : -# 1160| r1160_2(glval) = FunctionAddress[~String] : -# 1160| v1160_3(void) = Call[~String] : func:r1160_2, this:r1160_1 -# 1160| mu1160_4(unknown) = ^CallSideEffect : ~m? -# 1160| v1160_5(void) = ^IndirectReadSideEffect[-1] : &:r1160_1, ~m? -# 1160| mu1160_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1160_1 -# 1160| r1160_7(bool) = Constant[0] : -# 1160| v1160_8(void) = ConditionalBranch : r1160_7 +# 35| Block 381 +# 35| r35_5321(glval) = VariableAddress[x380] : +# 35| mu35_5322(String) = Uninitialized[x380] : &:r35_5321 +# 35| r35_5323(glval) = FunctionAddress[String] : +# 35| v35_5324(void) = Call[String] : func:r35_5323, this:r35_5321 +# 35| mu35_5325(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5326(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5321 +# 35| r35_5327(glval) = VariableAddress[x380] : +# 35| r35_5328(glval) = FunctionAddress[~String] : +# 35| v35_5329(void) = Call[~String] : func:r35_5328, this:r35_5327 +# 35| mu35_5330(unknown) = ^CallSideEffect : ~m? +# 35| v35_5331(void) = ^IndirectReadSideEffect[-1] : &:r35_5327, ~m? +# 35| mu35_5332(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5327 +# 35| r35_5333(bool) = Constant[0] : +# 35| v35_5334(void) = ConditionalBranch : r35_5333 #-----| False -> Block 382 #-----| True (back edge) -> Block 381 -# 1162| Block 382 -# 1162| r1162_1(glval) = VariableAddress[x381] : -# 1162| mu1162_2(String) = Uninitialized[x381] : &:r1162_1 -# 1162| r1162_3(glval) = FunctionAddress[String] : -# 1162| v1162_4(void) = Call[String] : func:r1162_3, this:r1162_1 -# 1162| mu1162_5(unknown) = ^CallSideEffect : ~m? -# 1162| mu1162_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1162_1 -# 1163| r1163_1(glval) = VariableAddress[x381] : -# 1163| r1163_2(glval) = FunctionAddress[~String] : -# 1163| v1163_3(void) = Call[~String] : func:r1163_2, this:r1163_1 -# 1163| mu1163_4(unknown) = ^CallSideEffect : ~m? -# 1163| v1163_5(void) = ^IndirectReadSideEffect[-1] : &:r1163_1, ~m? -# 1163| mu1163_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1163_1 -# 1163| r1163_7(bool) = Constant[0] : -# 1163| v1163_8(void) = ConditionalBranch : r1163_7 +# 35| Block 382 +# 35| r35_5335(glval) = VariableAddress[x381] : +# 35| mu35_5336(String) = Uninitialized[x381] : &:r35_5335 +# 35| r35_5337(glval) = FunctionAddress[String] : +# 35| v35_5338(void) = Call[String] : func:r35_5337, this:r35_5335 +# 35| mu35_5339(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5340(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5335 +# 35| r35_5341(glval) = VariableAddress[x381] : +# 35| r35_5342(glval) = FunctionAddress[~String] : +# 35| v35_5343(void) = Call[~String] : func:r35_5342, this:r35_5341 +# 35| mu35_5344(unknown) = ^CallSideEffect : ~m? +# 35| v35_5345(void) = ^IndirectReadSideEffect[-1] : &:r35_5341, ~m? +# 35| mu35_5346(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5341 +# 35| r35_5347(bool) = Constant[0] : +# 35| v35_5348(void) = ConditionalBranch : r35_5347 #-----| False -> Block 383 #-----| True (back edge) -> Block 382 -# 1165| Block 383 -# 1165| r1165_1(glval) = VariableAddress[x382] : -# 1165| mu1165_2(String) = Uninitialized[x382] : &:r1165_1 -# 1165| r1165_3(glval) = FunctionAddress[String] : -# 1165| v1165_4(void) = Call[String] : func:r1165_3, this:r1165_1 -# 1165| mu1165_5(unknown) = ^CallSideEffect : ~m? -# 1165| mu1165_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1165_1 -# 1166| r1166_1(glval) = VariableAddress[x382] : -# 1166| r1166_2(glval) = FunctionAddress[~String] : -# 1166| v1166_3(void) = Call[~String] : func:r1166_2, this:r1166_1 -# 1166| mu1166_4(unknown) = ^CallSideEffect : ~m? -# 1166| v1166_5(void) = ^IndirectReadSideEffect[-1] : &:r1166_1, ~m? -# 1166| mu1166_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1166_1 -# 1166| r1166_7(bool) = Constant[0] : -# 1166| v1166_8(void) = ConditionalBranch : r1166_7 +# 35| Block 383 +# 35| r35_5349(glval) = VariableAddress[x382] : +# 35| mu35_5350(String) = Uninitialized[x382] : &:r35_5349 +# 35| r35_5351(glval) = FunctionAddress[String] : +# 35| v35_5352(void) = Call[String] : func:r35_5351, this:r35_5349 +# 35| mu35_5353(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5354(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5349 +# 35| r35_5355(glval) = VariableAddress[x382] : +# 35| r35_5356(glval) = FunctionAddress[~String] : +# 35| v35_5357(void) = Call[~String] : func:r35_5356, this:r35_5355 +# 35| mu35_5358(unknown) = ^CallSideEffect : ~m? +# 35| v35_5359(void) = ^IndirectReadSideEffect[-1] : &:r35_5355, ~m? +# 35| mu35_5360(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5355 +# 35| r35_5361(bool) = Constant[0] : +# 35| v35_5362(void) = ConditionalBranch : r35_5361 #-----| False -> Block 384 #-----| True (back edge) -> Block 383 -# 1168| Block 384 -# 1168| r1168_1(glval) = VariableAddress[x383] : -# 1168| mu1168_2(String) = Uninitialized[x383] : &:r1168_1 -# 1168| r1168_3(glval) = FunctionAddress[String] : -# 1168| v1168_4(void) = Call[String] : func:r1168_3, this:r1168_1 -# 1168| mu1168_5(unknown) = ^CallSideEffect : ~m? -# 1168| mu1168_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1168_1 -# 1169| r1169_1(glval) = VariableAddress[x383] : -# 1169| r1169_2(glval) = FunctionAddress[~String] : -# 1169| v1169_3(void) = Call[~String] : func:r1169_2, this:r1169_1 -# 1169| mu1169_4(unknown) = ^CallSideEffect : ~m? -# 1169| v1169_5(void) = ^IndirectReadSideEffect[-1] : &:r1169_1, ~m? -# 1169| mu1169_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1169_1 -# 1169| r1169_7(bool) = Constant[0] : -# 1169| v1169_8(void) = ConditionalBranch : r1169_7 +# 35| Block 384 +# 35| r35_5363(glval) = VariableAddress[x383] : +# 35| mu35_5364(String) = Uninitialized[x383] : &:r35_5363 +# 35| r35_5365(glval) = FunctionAddress[String] : +# 35| v35_5366(void) = Call[String] : func:r35_5365, this:r35_5363 +# 35| mu35_5367(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5368(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5363 +# 35| r35_5369(glval) = VariableAddress[x383] : +# 35| r35_5370(glval) = FunctionAddress[~String] : +# 35| v35_5371(void) = Call[~String] : func:r35_5370, this:r35_5369 +# 35| mu35_5372(unknown) = ^CallSideEffect : ~m? +# 35| v35_5373(void) = ^IndirectReadSideEffect[-1] : &:r35_5369, ~m? +# 35| mu35_5374(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5369 +# 35| r35_5375(bool) = Constant[0] : +# 35| v35_5376(void) = ConditionalBranch : r35_5375 #-----| False -> Block 385 #-----| True (back edge) -> Block 384 -# 1171| Block 385 -# 1171| r1171_1(glval) = VariableAddress[x384] : -# 1171| mu1171_2(String) = Uninitialized[x384] : &:r1171_1 -# 1171| r1171_3(glval) = FunctionAddress[String] : -# 1171| v1171_4(void) = Call[String] : func:r1171_3, this:r1171_1 -# 1171| mu1171_5(unknown) = ^CallSideEffect : ~m? -# 1171| mu1171_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1171_1 -# 1172| r1172_1(glval) = VariableAddress[x384] : -# 1172| r1172_2(glval) = FunctionAddress[~String] : -# 1172| v1172_3(void) = Call[~String] : func:r1172_2, this:r1172_1 -# 1172| mu1172_4(unknown) = ^CallSideEffect : ~m? -# 1172| v1172_5(void) = ^IndirectReadSideEffect[-1] : &:r1172_1, ~m? -# 1172| mu1172_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1172_1 -# 1172| r1172_7(bool) = Constant[0] : -# 1172| v1172_8(void) = ConditionalBranch : r1172_7 +# 35| Block 385 +# 35| r35_5377(glval) = VariableAddress[x384] : +# 35| mu35_5378(String) = Uninitialized[x384] : &:r35_5377 +# 35| r35_5379(glval) = FunctionAddress[String] : +# 35| v35_5380(void) = Call[String] : func:r35_5379, this:r35_5377 +# 35| mu35_5381(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5382(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5377 +# 35| r35_5383(glval) = VariableAddress[x384] : +# 35| r35_5384(glval) = FunctionAddress[~String] : +# 35| v35_5385(void) = Call[~String] : func:r35_5384, this:r35_5383 +# 35| mu35_5386(unknown) = ^CallSideEffect : ~m? +# 35| v35_5387(void) = ^IndirectReadSideEffect[-1] : &:r35_5383, ~m? +# 35| mu35_5388(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5383 +# 35| r35_5389(bool) = Constant[0] : +# 35| v35_5390(void) = ConditionalBranch : r35_5389 #-----| False -> Block 386 #-----| True (back edge) -> Block 385 -# 1174| Block 386 -# 1174| r1174_1(glval) = VariableAddress[x385] : -# 1174| mu1174_2(String) = Uninitialized[x385] : &:r1174_1 -# 1174| r1174_3(glval) = FunctionAddress[String] : -# 1174| v1174_4(void) = Call[String] : func:r1174_3, this:r1174_1 -# 1174| mu1174_5(unknown) = ^CallSideEffect : ~m? -# 1174| mu1174_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1174_1 -# 1175| r1175_1(glval) = VariableAddress[x385] : -# 1175| r1175_2(glval) = FunctionAddress[~String] : -# 1175| v1175_3(void) = Call[~String] : func:r1175_2, this:r1175_1 -# 1175| mu1175_4(unknown) = ^CallSideEffect : ~m? -# 1175| v1175_5(void) = ^IndirectReadSideEffect[-1] : &:r1175_1, ~m? -# 1175| mu1175_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1175_1 -# 1175| r1175_7(bool) = Constant[0] : -# 1175| v1175_8(void) = ConditionalBranch : r1175_7 +# 35| Block 386 +# 35| r35_5391(glval) = VariableAddress[x385] : +# 35| mu35_5392(String) = Uninitialized[x385] : &:r35_5391 +# 35| r35_5393(glval) = FunctionAddress[String] : +# 35| v35_5394(void) = Call[String] : func:r35_5393, this:r35_5391 +# 35| mu35_5395(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5396(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5391 +# 35| r35_5397(glval) = VariableAddress[x385] : +# 35| r35_5398(glval) = FunctionAddress[~String] : +# 35| v35_5399(void) = Call[~String] : func:r35_5398, this:r35_5397 +# 35| mu35_5400(unknown) = ^CallSideEffect : ~m? +# 35| v35_5401(void) = ^IndirectReadSideEffect[-1] : &:r35_5397, ~m? +# 35| mu35_5402(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5397 +# 35| r35_5403(bool) = Constant[0] : +# 35| v35_5404(void) = ConditionalBranch : r35_5403 #-----| False -> Block 387 #-----| True (back edge) -> Block 386 -# 1177| Block 387 -# 1177| r1177_1(glval) = VariableAddress[x386] : -# 1177| mu1177_2(String) = Uninitialized[x386] : &:r1177_1 -# 1177| r1177_3(glval) = FunctionAddress[String] : -# 1177| v1177_4(void) = Call[String] : func:r1177_3, this:r1177_1 -# 1177| mu1177_5(unknown) = ^CallSideEffect : ~m? -# 1177| mu1177_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1177_1 -# 1178| r1178_1(glval) = VariableAddress[x386] : -# 1178| r1178_2(glval) = FunctionAddress[~String] : -# 1178| v1178_3(void) = Call[~String] : func:r1178_2, this:r1178_1 -# 1178| mu1178_4(unknown) = ^CallSideEffect : ~m? -# 1178| v1178_5(void) = ^IndirectReadSideEffect[-1] : &:r1178_1, ~m? -# 1178| mu1178_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1178_1 -# 1178| r1178_7(bool) = Constant[0] : -# 1178| v1178_8(void) = ConditionalBranch : r1178_7 +# 35| Block 387 +# 35| r35_5405(glval) = VariableAddress[x386] : +# 35| mu35_5406(String) = Uninitialized[x386] : &:r35_5405 +# 35| r35_5407(glval) = FunctionAddress[String] : +# 35| v35_5408(void) = Call[String] : func:r35_5407, this:r35_5405 +# 35| mu35_5409(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5410(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5405 +# 35| r35_5411(glval) = VariableAddress[x386] : +# 35| r35_5412(glval) = FunctionAddress[~String] : +# 35| v35_5413(void) = Call[~String] : func:r35_5412, this:r35_5411 +# 35| mu35_5414(unknown) = ^CallSideEffect : ~m? +# 35| v35_5415(void) = ^IndirectReadSideEffect[-1] : &:r35_5411, ~m? +# 35| mu35_5416(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5411 +# 35| r35_5417(bool) = Constant[0] : +# 35| v35_5418(void) = ConditionalBranch : r35_5417 #-----| False -> Block 388 #-----| True (back edge) -> Block 387 -# 1180| Block 388 -# 1180| r1180_1(glval) = VariableAddress[x387] : -# 1180| mu1180_2(String) = Uninitialized[x387] : &:r1180_1 -# 1180| r1180_3(glval) = FunctionAddress[String] : -# 1180| v1180_4(void) = Call[String] : func:r1180_3, this:r1180_1 -# 1180| mu1180_5(unknown) = ^CallSideEffect : ~m? -# 1180| mu1180_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1180_1 -# 1181| r1181_1(glval) = VariableAddress[x387] : -# 1181| r1181_2(glval) = FunctionAddress[~String] : -# 1181| v1181_3(void) = Call[~String] : func:r1181_2, this:r1181_1 -# 1181| mu1181_4(unknown) = ^CallSideEffect : ~m? -# 1181| v1181_5(void) = ^IndirectReadSideEffect[-1] : &:r1181_1, ~m? -# 1181| mu1181_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1181_1 -# 1181| r1181_7(bool) = Constant[0] : -# 1181| v1181_8(void) = ConditionalBranch : r1181_7 +# 35| Block 388 +# 35| r35_5419(glval) = VariableAddress[x387] : +# 35| mu35_5420(String) = Uninitialized[x387] : &:r35_5419 +# 35| r35_5421(glval) = FunctionAddress[String] : +# 35| v35_5422(void) = Call[String] : func:r35_5421, this:r35_5419 +# 35| mu35_5423(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5424(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5419 +# 35| r35_5425(glval) = VariableAddress[x387] : +# 35| r35_5426(glval) = FunctionAddress[~String] : +# 35| v35_5427(void) = Call[~String] : func:r35_5426, this:r35_5425 +# 35| mu35_5428(unknown) = ^CallSideEffect : ~m? +# 35| v35_5429(void) = ^IndirectReadSideEffect[-1] : &:r35_5425, ~m? +# 35| mu35_5430(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5425 +# 35| r35_5431(bool) = Constant[0] : +# 35| v35_5432(void) = ConditionalBranch : r35_5431 #-----| False -> Block 389 #-----| True (back edge) -> Block 388 -# 1183| Block 389 -# 1183| r1183_1(glval) = VariableAddress[x388] : -# 1183| mu1183_2(String) = Uninitialized[x388] : &:r1183_1 -# 1183| r1183_3(glval) = FunctionAddress[String] : -# 1183| v1183_4(void) = Call[String] : func:r1183_3, this:r1183_1 -# 1183| mu1183_5(unknown) = ^CallSideEffect : ~m? -# 1183| mu1183_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1183_1 -# 1184| r1184_1(glval) = VariableAddress[x388] : -# 1184| r1184_2(glval) = FunctionAddress[~String] : -# 1184| v1184_3(void) = Call[~String] : func:r1184_2, this:r1184_1 -# 1184| mu1184_4(unknown) = ^CallSideEffect : ~m? -# 1184| v1184_5(void) = ^IndirectReadSideEffect[-1] : &:r1184_1, ~m? -# 1184| mu1184_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1184_1 -# 1184| r1184_7(bool) = Constant[0] : -# 1184| v1184_8(void) = ConditionalBranch : r1184_7 +# 35| Block 389 +# 35| r35_5433(glval) = VariableAddress[x388] : +# 35| mu35_5434(String) = Uninitialized[x388] : &:r35_5433 +# 35| r35_5435(glval) = FunctionAddress[String] : +# 35| v35_5436(void) = Call[String] : func:r35_5435, this:r35_5433 +# 35| mu35_5437(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5438(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5433 +# 35| r35_5439(glval) = VariableAddress[x388] : +# 35| r35_5440(glval) = FunctionAddress[~String] : +# 35| v35_5441(void) = Call[~String] : func:r35_5440, this:r35_5439 +# 35| mu35_5442(unknown) = ^CallSideEffect : ~m? +# 35| v35_5443(void) = ^IndirectReadSideEffect[-1] : &:r35_5439, ~m? +# 35| mu35_5444(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5439 +# 35| r35_5445(bool) = Constant[0] : +# 35| v35_5446(void) = ConditionalBranch : r35_5445 #-----| False -> Block 390 #-----| True (back edge) -> Block 389 -# 1186| Block 390 -# 1186| r1186_1(glval) = VariableAddress[x389] : -# 1186| mu1186_2(String) = Uninitialized[x389] : &:r1186_1 -# 1186| r1186_3(glval) = FunctionAddress[String] : -# 1186| v1186_4(void) = Call[String] : func:r1186_3, this:r1186_1 -# 1186| mu1186_5(unknown) = ^CallSideEffect : ~m? -# 1186| mu1186_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1186_1 -# 1187| r1187_1(glval) = VariableAddress[x389] : -# 1187| r1187_2(glval) = FunctionAddress[~String] : -# 1187| v1187_3(void) = Call[~String] : func:r1187_2, this:r1187_1 -# 1187| mu1187_4(unknown) = ^CallSideEffect : ~m? -# 1187| v1187_5(void) = ^IndirectReadSideEffect[-1] : &:r1187_1, ~m? -# 1187| mu1187_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1187_1 -# 1187| r1187_7(bool) = Constant[0] : -# 1187| v1187_8(void) = ConditionalBranch : r1187_7 +# 35| Block 390 +# 35| r35_5447(glval) = VariableAddress[x389] : +# 35| mu35_5448(String) = Uninitialized[x389] : &:r35_5447 +# 35| r35_5449(glval) = FunctionAddress[String] : +# 35| v35_5450(void) = Call[String] : func:r35_5449, this:r35_5447 +# 35| mu35_5451(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5452(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5447 +# 35| r35_5453(glval) = VariableAddress[x389] : +# 35| r35_5454(glval) = FunctionAddress[~String] : +# 35| v35_5455(void) = Call[~String] : func:r35_5454, this:r35_5453 +# 35| mu35_5456(unknown) = ^CallSideEffect : ~m? +# 35| v35_5457(void) = ^IndirectReadSideEffect[-1] : &:r35_5453, ~m? +# 35| mu35_5458(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5453 +# 35| r35_5459(bool) = Constant[0] : +# 35| v35_5460(void) = ConditionalBranch : r35_5459 #-----| False -> Block 391 #-----| True (back edge) -> Block 390 -# 1189| Block 391 -# 1189| r1189_1(glval) = VariableAddress[x390] : -# 1189| mu1189_2(String) = Uninitialized[x390] : &:r1189_1 -# 1189| r1189_3(glval) = FunctionAddress[String] : -# 1189| v1189_4(void) = Call[String] : func:r1189_3, this:r1189_1 -# 1189| mu1189_5(unknown) = ^CallSideEffect : ~m? -# 1189| mu1189_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1189_1 -# 1190| r1190_1(glval) = VariableAddress[x390] : -# 1190| r1190_2(glval) = FunctionAddress[~String] : -# 1190| v1190_3(void) = Call[~String] : func:r1190_2, this:r1190_1 -# 1190| mu1190_4(unknown) = ^CallSideEffect : ~m? -# 1190| v1190_5(void) = ^IndirectReadSideEffect[-1] : &:r1190_1, ~m? -# 1190| mu1190_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1190_1 -# 1190| r1190_7(bool) = Constant[0] : -# 1190| v1190_8(void) = ConditionalBranch : r1190_7 +# 35| Block 391 +# 35| r35_5461(glval) = VariableAddress[x390] : +# 35| mu35_5462(String) = Uninitialized[x390] : &:r35_5461 +# 35| r35_5463(glval) = FunctionAddress[String] : +# 35| v35_5464(void) = Call[String] : func:r35_5463, this:r35_5461 +# 35| mu35_5465(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5466(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5461 +# 35| r35_5467(glval) = VariableAddress[x390] : +# 35| r35_5468(glval) = FunctionAddress[~String] : +# 35| v35_5469(void) = Call[~String] : func:r35_5468, this:r35_5467 +# 35| mu35_5470(unknown) = ^CallSideEffect : ~m? +# 35| v35_5471(void) = ^IndirectReadSideEffect[-1] : &:r35_5467, ~m? +# 35| mu35_5472(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5467 +# 35| r35_5473(bool) = Constant[0] : +# 35| v35_5474(void) = ConditionalBranch : r35_5473 #-----| False -> Block 392 #-----| True (back edge) -> Block 391 -# 1192| Block 392 -# 1192| r1192_1(glval) = VariableAddress[x391] : -# 1192| mu1192_2(String) = Uninitialized[x391] : &:r1192_1 -# 1192| r1192_3(glval) = FunctionAddress[String] : -# 1192| v1192_4(void) = Call[String] : func:r1192_3, this:r1192_1 -# 1192| mu1192_5(unknown) = ^CallSideEffect : ~m? -# 1192| mu1192_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1192_1 -# 1193| r1193_1(glval) = VariableAddress[x391] : -# 1193| r1193_2(glval) = FunctionAddress[~String] : -# 1193| v1193_3(void) = Call[~String] : func:r1193_2, this:r1193_1 -# 1193| mu1193_4(unknown) = ^CallSideEffect : ~m? -# 1193| v1193_5(void) = ^IndirectReadSideEffect[-1] : &:r1193_1, ~m? -# 1193| mu1193_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1193_1 -# 1193| r1193_7(bool) = Constant[0] : -# 1193| v1193_8(void) = ConditionalBranch : r1193_7 +# 35| Block 392 +# 35| r35_5475(glval) = VariableAddress[x391] : +# 35| mu35_5476(String) = Uninitialized[x391] : &:r35_5475 +# 35| r35_5477(glval) = FunctionAddress[String] : +# 35| v35_5478(void) = Call[String] : func:r35_5477, this:r35_5475 +# 35| mu35_5479(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5480(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5475 +# 35| r35_5481(glval) = VariableAddress[x391] : +# 35| r35_5482(glval) = FunctionAddress[~String] : +# 35| v35_5483(void) = Call[~String] : func:r35_5482, this:r35_5481 +# 35| mu35_5484(unknown) = ^CallSideEffect : ~m? +# 35| v35_5485(void) = ^IndirectReadSideEffect[-1] : &:r35_5481, ~m? +# 35| mu35_5486(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5481 +# 35| r35_5487(bool) = Constant[0] : +# 35| v35_5488(void) = ConditionalBranch : r35_5487 #-----| False -> Block 393 #-----| True (back edge) -> Block 392 -# 1195| Block 393 -# 1195| r1195_1(glval) = VariableAddress[x392] : -# 1195| mu1195_2(String) = Uninitialized[x392] : &:r1195_1 -# 1195| r1195_3(glval) = FunctionAddress[String] : -# 1195| v1195_4(void) = Call[String] : func:r1195_3, this:r1195_1 -# 1195| mu1195_5(unknown) = ^CallSideEffect : ~m? -# 1195| mu1195_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1195_1 -# 1196| r1196_1(glval) = VariableAddress[x392] : -# 1196| r1196_2(glval) = FunctionAddress[~String] : -# 1196| v1196_3(void) = Call[~String] : func:r1196_2, this:r1196_1 -# 1196| mu1196_4(unknown) = ^CallSideEffect : ~m? -# 1196| v1196_5(void) = ^IndirectReadSideEffect[-1] : &:r1196_1, ~m? -# 1196| mu1196_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1196_1 -# 1196| r1196_7(bool) = Constant[0] : -# 1196| v1196_8(void) = ConditionalBranch : r1196_7 +# 35| Block 393 +# 35| r35_5489(glval) = VariableAddress[x392] : +# 35| mu35_5490(String) = Uninitialized[x392] : &:r35_5489 +# 35| r35_5491(glval) = FunctionAddress[String] : +# 35| v35_5492(void) = Call[String] : func:r35_5491, this:r35_5489 +# 35| mu35_5493(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5494(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5489 +# 35| r35_5495(glval) = VariableAddress[x392] : +# 35| r35_5496(glval) = FunctionAddress[~String] : +# 35| v35_5497(void) = Call[~String] : func:r35_5496, this:r35_5495 +# 35| mu35_5498(unknown) = ^CallSideEffect : ~m? +# 35| v35_5499(void) = ^IndirectReadSideEffect[-1] : &:r35_5495, ~m? +# 35| mu35_5500(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5495 +# 35| r35_5501(bool) = Constant[0] : +# 35| v35_5502(void) = ConditionalBranch : r35_5501 #-----| False -> Block 394 #-----| True (back edge) -> Block 393 -# 1198| Block 394 -# 1198| r1198_1(glval) = VariableAddress[x393] : -# 1198| mu1198_2(String) = Uninitialized[x393] : &:r1198_1 -# 1198| r1198_3(glval) = FunctionAddress[String] : -# 1198| v1198_4(void) = Call[String] : func:r1198_3, this:r1198_1 -# 1198| mu1198_5(unknown) = ^CallSideEffect : ~m? -# 1198| mu1198_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1198_1 -# 1199| r1199_1(glval) = VariableAddress[x393] : -# 1199| r1199_2(glval) = FunctionAddress[~String] : -# 1199| v1199_3(void) = Call[~String] : func:r1199_2, this:r1199_1 -# 1199| mu1199_4(unknown) = ^CallSideEffect : ~m? -# 1199| v1199_5(void) = ^IndirectReadSideEffect[-1] : &:r1199_1, ~m? -# 1199| mu1199_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1199_1 -# 1199| r1199_7(bool) = Constant[0] : -# 1199| v1199_8(void) = ConditionalBranch : r1199_7 +# 35| Block 394 +# 35| r35_5503(glval) = VariableAddress[x393] : +# 35| mu35_5504(String) = Uninitialized[x393] : &:r35_5503 +# 35| r35_5505(glval) = FunctionAddress[String] : +# 35| v35_5506(void) = Call[String] : func:r35_5505, this:r35_5503 +# 35| mu35_5507(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5508(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5503 +# 35| r35_5509(glval) = VariableAddress[x393] : +# 35| r35_5510(glval) = FunctionAddress[~String] : +# 35| v35_5511(void) = Call[~String] : func:r35_5510, this:r35_5509 +# 35| mu35_5512(unknown) = ^CallSideEffect : ~m? +# 35| v35_5513(void) = ^IndirectReadSideEffect[-1] : &:r35_5509, ~m? +# 35| mu35_5514(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5509 +# 35| r35_5515(bool) = Constant[0] : +# 35| v35_5516(void) = ConditionalBranch : r35_5515 #-----| False -> Block 395 #-----| True (back edge) -> Block 394 -# 1201| Block 395 -# 1201| r1201_1(glval) = VariableAddress[x394] : -# 1201| mu1201_2(String) = Uninitialized[x394] : &:r1201_1 -# 1201| r1201_3(glval) = FunctionAddress[String] : -# 1201| v1201_4(void) = Call[String] : func:r1201_3, this:r1201_1 -# 1201| mu1201_5(unknown) = ^CallSideEffect : ~m? -# 1201| mu1201_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1201_1 -# 1202| r1202_1(glval) = VariableAddress[x394] : -# 1202| r1202_2(glval) = FunctionAddress[~String] : -# 1202| v1202_3(void) = Call[~String] : func:r1202_2, this:r1202_1 -# 1202| mu1202_4(unknown) = ^CallSideEffect : ~m? -# 1202| v1202_5(void) = ^IndirectReadSideEffect[-1] : &:r1202_1, ~m? -# 1202| mu1202_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1202_1 -# 1202| r1202_7(bool) = Constant[0] : -# 1202| v1202_8(void) = ConditionalBranch : r1202_7 +# 35| Block 395 +# 35| r35_5517(glval) = VariableAddress[x394] : +# 35| mu35_5518(String) = Uninitialized[x394] : &:r35_5517 +# 35| r35_5519(glval) = FunctionAddress[String] : +# 35| v35_5520(void) = Call[String] : func:r35_5519, this:r35_5517 +# 35| mu35_5521(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5522(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5517 +# 35| r35_5523(glval) = VariableAddress[x394] : +# 35| r35_5524(glval) = FunctionAddress[~String] : +# 35| v35_5525(void) = Call[~String] : func:r35_5524, this:r35_5523 +# 35| mu35_5526(unknown) = ^CallSideEffect : ~m? +# 35| v35_5527(void) = ^IndirectReadSideEffect[-1] : &:r35_5523, ~m? +# 35| mu35_5528(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5523 +# 35| r35_5529(bool) = Constant[0] : +# 35| v35_5530(void) = ConditionalBranch : r35_5529 #-----| False -> Block 396 #-----| True (back edge) -> Block 395 -# 1204| Block 396 -# 1204| r1204_1(glval) = VariableAddress[x395] : -# 1204| mu1204_2(String) = Uninitialized[x395] : &:r1204_1 -# 1204| r1204_3(glval) = FunctionAddress[String] : -# 1204| v1204_4(void) = Call[String] : func:r1204_3, this:r1204_1 -# 1204| mu1204_5(unknown) = ^CallSideEffect : ~m? -# 1204| mu1204_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1204_1 -# 1205| r1205_1(glval) = VariableAddress[x395] : -# 1205| r1205_2(glval) = FunctionAddress[~String] : -# 1205| v1205_3(void) = Call[~String] : func:r1205_2, this:r1205_1 -# 1205| mu1205_4(unknown) = ^CallSideEffect : ~m? -# 1205| v1205_5(void) = ^IndirectReadSideEffect[-1] : &:r1205_1, ~m? -# 1205| mu1205_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1205_1 -# 1205| r1205_7(bool) = Constant[0] : -# 1205| v1205_8(void) = ConditionalBranch : r1205_7 +# 35| Block 396 +# 35| r35_5531(glval) = VariableAddress[x395] : +# 35| mu35_5532(String) = Uninitialized[x395] : &:r35_5531 +# 35| r35_5533(glval) = FunctionAddress[String] : +# 35| v35_5534(void) = Call[String] : func:r35_5533, this:r35_5531 +# 35| mu35_5535(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5536(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5531 +# 35| r35_5537(glval) = VariableAddress[x395] : +# 35| r35_5538(glval) = FunctionAddress[~String] : +# 35| v35_5539(void) = Call[~String] : func:r35_5538, this:r35_5537 +# 35| mu35_5540(unknown) = ^CallSideEffect : ~m? +# 35| v35_5541(void) = ^IndirectReadSideEffect[-1] : &:r35_5537, ~m? +# 35| mu35_5542(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5537 +# 35| r35_5543(bool) = Constant[0] : +# 35| v35_5544(void) = ConditionalBranch : r35_5543 #-----| False -> Block 397 #-----| True (back edge) -> Block 396 -# 1207| Block 397 -# 1207| r1207_1(glval) = VariableAddress[x396] : -# 1207| mu1207_2(String) = Uninitialized[x396] : &:r1207_1 -# 1207| r1207_3(glval) = FunctionAddress[String] : -# 1207| v1207_4(void) = Call[String] : func:r1207_3, this:r1207_1 -# 1207| mu1207_5(unknown) = ^CallSideEffect : ~m? -# 1207| mu1207_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1207_1 -# 1208| r1208_1(glval) = VariableAddress[x396] : -# 1208| r1208_2(glval) = FunctionAddress[~String] : -# 1208| v1208_3(void) = Call[~String] : func:r1208_2, this:r1208_1 -# 1208| mu1208_4(unknown) = ^CallSideEffect : ~m? -# 1208| v1208_5(void) = ^IndirectReadSideEffect[-1] : &:r1208_1, ~m? -# 1208| mu1208_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1208_1 -# 1208| r1208_7(bool) = Constant[0] : -# 1208| v1208_8(void) = ConditionalBranch : r1208_7 +# 35| Block 397 +# 35| r35_5545(glval) = VariableAddress[x396] : +# 35| mu35_5546(String) = Uninitialized[x396] : &:r35_5545 +# 35| r35_5547(glval) = FunctionAddress[String] : +# 35| v35_5548(void) = Call[String] : func:r35_5547, this:r35_5545 +# 35| mu35_5549(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5550(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5545 +# 35| r35_5551(glval) = VariableAddress[x396] : +# 35| r35_5552(glval) = FunctionAddress[~String] : +# 35| v35_5553(void) = Call[~String] : func:r35_5552, this:r35_5551 +# 35| mu35_5554(unknown) = ^CallSideEffect : ~m? +# 35| v35_5555(void) = ^IndirectReadSideEffect[-1] : &:r35_5551, ~m? +# 35| mu35_5556(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5551 +# 35| r35_5557(bool) = Constant[0] : +# 35| v35_5558(void) = ConditionalBranch : r35_5557 #-----| False -> Block 398 #-----| True (back edge) -> Block 397 -# 1210| Block 398 -# 1210| r1210_1(glval) = VariableAddress[x397] : -# 1210| mu1210_2(String) = Uninitialized[x397] : &:r1210_1 -# 1210| r1210_3(glval) = FunctionAddress[String] : -# 1210| v1210_4(void) = Call[String] : func:r1210_3, this:r1210_1 -# 1210| mu1210_5(unknown) = ^CallSideEffect : ~m? -# 1210| mu1210_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1210_1 -# 1211| r1211_1(glval) = VariableAddress[x397] : -# 1211| r1211_2(glval) = FunctionAddress[~String] : -# 1211| v1211_3(void) = Call[~String] : func:r1211_2, this:r1211_1 -# 1211| mu1211_4(unknown) = ^CallSideEffect : ~m? -# 1211| v1211_5(void) = ^IndirectReadSideEffect[-1] : &:r1211_1, ~m? -# 1211| mu1211_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1211_1 -# 1211| r1211_7(bool) = Constant[0] : -# 1211| v1211_8(void) = ConditionalBranch : r1211_7 +# 35| Block 398 +# 35| r35_5559(glval) = VariableAddress[x397] : +# 35| mu35_5560(String) = Uninitialized[x397] : &:r35_5559 +# 35| r35_5561(glval) = FunctionAddress[String] : +# 35| v35_5562(void) = Call[String] : func:r35_5561, this:r35_5559 +# 35| mu35_5563(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5564(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5559 +# 35| r35_5565(glval) = VariableAddress[x397] : +# 35| r35_5566(glval) = FunctionAddress[~String] : +# 35| v35_5567(void) = Call[~String] : func:r35_5566, this:r35_5565 +# 35| mu35_5568(unknown) = ^CallSideEffect : ~m? +# 35| v35_5569(void) = ^IndirectReadSideEffect[-1] : &:r35_5565, ~m? +# 35| mu35_5570(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5565 +# 35| r35_5571(bool) = Constant[0] : +# 35| v35_5572(void) = ConditionalBranch : r35_5571 #-----| False -> Block 399 #-----| True (back edge) -> Block 398 -# 1213| Block 399 -# 1213| r1213_1(glval) = VariableAddress[x398] : -# 1213| mu1213_2(String) = Uninitialized[x398] : &:r1213_1 -# 1213| r1213_3(glval) = FunctionAddress[String] : -# 1213| v1213_4(void) = Call[String] : func:r1213_3, this:r1213_1 -# 1213| mu1213_5(unknown) = ^CallSideEffect : ~m? -# 1213| mu1213_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1213_1 -# 1214| r1214_1(glval) = VariableAddress[x398] : -# 1214| r1214_2(glval) = FunctionAddress[~String] : -# 1214| v1214_3(void) = Call[~String] : func:r1214_2, this:r1214_1 -# 1214| mu1214_4(unknown) = ^CallSideEffect : ~m? -# 1214| v1214_5(void) = ^IndirectReadSideEffect[-1] : &:r1214_1, ~m? -# 1214| mu1214_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1214_1 -# 1214| r1214_7(bool) = Constant[0] : -# 1214| v1214_8(void) = ConditionalBranch : r1214_7 +# 35| Block 399 +# 35| r35_5573(glval) = VariableAddress[x398] : +# 35| mu35_5574(String) = Uninitialized[x398] : &:r35_5573 +# 35| r35_5575(glval) = FunctionAddress[String] : +# 35| v35_5576(void) = Call[String] : func:r35_5575, this:r35_5573 +# 35| mu35_5577(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5578(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5573 +# 35| r35_5579(glval) = VariableAddress[x398] : +# 35| r35_5580(glval) = FunctionAddress[~String] : +# 35| v35_5581(void) = Call[~String] : func:r35_5580, this:r35_5579 +# 35| mu35_5582(unknown) = ^CallSideEffect : ~m? +# 35| v35_5583(void) = ^IndirectReadSideEffect[-1] : &:r35_5579, ~m? +# 35| mu35_5584(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5579 +# 35| r35_5585(bool) = Constant[0] : +# 35| v35_5586(void) = ConditionalBranch : r35_5585 #-----| False -> Block 400 #-----| True (back edge) -> Block 399 -# 1216| Block 400 -# 1216| r1216_1(glval) = VariableAddress[x399] : -# 1216| mu1216_2(String) = Uninitialized[x399] : &:r1216_1 -# 1216| r1216_3(glval) = FunctionAddress[String] : -# 1216| v1216_4(void) = Call[String] : func:r1216_3, this:r1216_1 -# 1216| mu1216_5(unknown) = ^CallSideEffect : ~m? -# 1216| mu1216_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1216_1 -# 1217| r1217_1(glval) = VariableAddress[x399] : -# 1217| r1217_2(glval) = FunctionAddress[~String] : -# 1217| v1217_3(void) = Call[~String] : func:r1217_2, this:r1217_1 -# 1217| mu1217_4(unknown) = ^CallSideEffect : ~m? -# 1217| v1217_5(void) = ^IndirectReadSideEffect[-1] : &:r1217_1, ~m? -# 1217| mu1217_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1217_1 -# 1217| r1217_7(bool) = Constant[0] : -# 1217| v1217_8(void) = ConditionalBranch : r1217_7 +# 35| Block 400 +# 35| r35_5587(glval) = VariableAddress[x399] : +# 35| mu35_5588(String) = Uninitialized[x399] : &:r35_5587 +# 35| r35_5589(glval) = FunctionAddress[String] : +# 35| v35_5590(void) = Call[String] : func:r35_5589, this:r35_5587 +# 35| mu35_5591(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5592(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5587 +# 35| r35_5593(glval) = VariableAddress[x399] : +# 35| r35_5594(glval) = FunctionAddress[~String] : +# 35| v35_5595(void) = Call[~String] : func:r35_5594, this:r35_5593 +# 35| mu35_5596(unknown) = ^CallSideEffect : ~m? +# 35| v35_5597(void) = ^IndirectReadSideEffect[-1] : &:r35_5593, ~m? +# 35| mu35_5598(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5593 +# 35| r35_5599(bool) = Constant[0] : +# 35| v35_5600(void) = ConditionalBranch : r35_5599 #-----| False -> Block 401 #-----| True (back edge) -> Block 400 -# 1219| Block 401 -# 1219| r1219_1(glval) = VariableAddress[x400] : -# 1219| mu1219_2(String) = Uninitialized[x400] : &:r1219_1 -# 1219| r1219_3(glval) = FunctionAddress[String] : -# 1219| v1219_4(void) = Call[String] : func:r1219_3, this:r1219_1 -# 1219| mu1219_5(unknown) = ^CallSideEffect : ~m? -# 1219| mu1219_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1219_1 -# 1220| r1220_1(glval) = VariableAddress[x400] : -# 1220| r1220_2(glval) = FunctionAddress[~String] : -# 1220| v1220_3(void) = Call[~String] : func:r1220_2, this:r1220_1 -# 1220| mu1220_4(unknown) = ^CallSideEffect : ~m? -# 1220| v1220_5(void) = ^IndirectReadSideEffect[-1] : &:r1220_1, ~m? -# 1220| mu1220_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1220_1 -# 1220| r1220_7(bool) = Constant[0] : -# 1220| v1220_8(void) = ConditionalBranch : r1220_7 +# 35| Block 401 +# 35| r35_5601(glval) = VariableAddress[x400] : +# 35| mu35_5602(String) = Uninitialized[x400] : &:r35_5601 +# 35| r35_5603(glval) = FunctionAddress[String] : +# 35| v35_5604(void) = Call[String] : func:r35_5603, this:r35_5601 +# 35| mu35_5605(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5606(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5601 +# 35| r35_5607(glval) = VariableAddress[x400] : +# 35| r35_5608(glval) = FunctionAddress[~String] : +# 35| v35_5609(void) = Call[~String] : func:r35_5608, this:r35_5607 +# 35| mu35_5610(unknown) = ^CallSideEffect : ~m? +# 35| v35_5611(void) = ^IndirectReadSideEffect[-1] : &:r35_5607, ~m? +# 35| mu35_5612(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5607 +# 35| r35_5613(bool) = Constant[0] : +# 35| v35_5614(void) = ConditionalBranch : r35_5613 #-----| False -> Block 402 #-----| True (back edge) -> Block 401 -# 1222| Block 402 -# 1222| r1222_1(glval) = VariableAddress[x401] : -# 1222| mu1222_2(String) = Uninitialized[x401] : &:r1222_1 -# 1222| r1222_3(glval) = FunctionAddress[String] : -# 1222| v1222_4(void) = Call[String] : func:r1222_3, this:r1222_1 -# 1222| mu1222_5(unknown) = ^CallSideEffect : ~m? -# 1222| mu1222_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1222_1 -# 1223| r1223_1(glval) = VariableAddress[x401] : -# 1223| r1223_2(glval) = FunctionAddress[~String] : -# 1223| v1223_3(void) = Call[~String] : func:r1223_2, this:r1223_1 -# 1223| mu1223_4(unknown) = ^CallSideEffect : ~m? -# 1223| v1223_5(void) = ^IndirectReadSideEffect[-1] : &:r1223_1, ~m? -# 1223| mu1223_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1223_1 -# 1223| r1223_7(bool) = Constant[0] : -# 1223| v1223_8(void) = ConditionalBranch : r1223_7 +# 35| Block 402 +# 35| r35_5615(glval) = VariableAddress[x401] : +# 35| mu35_5616(String) = Uninitialized[x401] : &:r35_5615 +# 35| r35_5617(glval) = FunctionAddress[String] : +# 35| v35_5618(void) = Call[String] : func:r35_5617, this:r35_5615 +# 35| mu35_5619(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5620(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5615 +# 35| r35_5621(glval) = VariableAddress[x401] : +# 35| r35_5622(glval) = FunctionAddress[~String] : +# 35| v35_5623(void) = Call[~String] : func:r35_5622, this:r35_5621 +# 35| mu35_5624(unknown) = ^CallSideEffect : ~m? +# 35| v35_5625(void) = ^IndirectReadSideEffect[-1] : &:r35_5621, ~m? +# 35| mu35_5626(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5621 +# 35| r35_5627(bool) = Constant[0] : +# 35| v35_5628(void) = ConditionalBranch : r35_5627 #-----| False -> Block 403 #-----| True (back edge) -> Block 402 -# 1225| Block 403 -# 1225| r1225_1(glval) = VariableAddress[x402] : -# 1225| mu1225_2(String) = Uninitialized[x402] : &:r1225_1 -# 1225| r1225_3(glval) = FunctionAddress[String] : -# 1225| v1225_4(void) = Call[String] : func:r1225_3, this:r1225_1 -# 1225| mu1225_5(unknown) = ^CallSideEffect : ~m? -# 1225| mu1225_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1225_1 -# 1226| r1226_1(glval) = VariableAddress[x402] : -# 1226| r1226_2(glval) = FunctionAddress[~String] : -# 1226| v1226_3(void) = Call[~String] : func:r1226_2, this:r1226_1 -# 1226| mu1226_4(unknown) = ^CallSideEffect : ~m? -# 1226| v1226_5(void) = ^IndirectReadSideEffect[-1] : &:r1226_1, ~m? -# 1226| mu1226_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1226_1 -# 1226| r1226_7(bool) = Constant[0] : -# 1226| v1226_8(void) = ConditionalBranch : r1226_7 +# 35| Block 403 +# 35| r35_5629(glval) = VariableAddress[x402] : +# 35| mu35_5630(String) = Uninitialized[x402] : &:r35_5629 +# 35| r35_5631(glval) = FunctionAddress[String] : +# 35| v35_5632(void) = Call[String] : func:r35_5631, this:r35_5629 +# 35| mu35_5633(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5634(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5629 +# 35| r35_5635(glval) = VariableAddress[x402] : +# 35| r35_5636(glval) = FunctionAddress[~String] : +# 35| v35_5637(void) = Call[~String] : func:r35_5636, this:r35_5635 +# 35| mu35_5638(unknown) = ^CallSideEffect : ~m? +# 35| v35_5639(void) = ^IndirectReadSideEffect[-1] : &:r35_5635, ~m? +# 35| mu35_5640(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5635 +# 35| r35_5641(bool) = Constant[0] : +# 35| v35_5642(void) = ConditionalBranch : r35_5641 #-----| False -> Block 404 #-----| True (back edge) -> Block 403 -# 1228| Block 404 -# 1228| r1228_1(glval) = VariableAddress[x403] : -# 1228| mu1228_2(String) = Uninitialized[x403] : &:r1228_1 -# 1228| r1228_3(glval) = FunctionAddress[String] : -# 1228| v1228_4(void) = Call[String] : func:r1228_3, this:r1228_1 -# 1228| mu1228_5(unknown) = ^CallSideEffect : ~m? -# 1228| mu1228_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1228_1 -# 1229| r1229_1(glval) = VariableAddress[x403] : -# 1229| r1229_2(glval) = FunctionAddress[~String] : -# 1229| v1229_3(void) = Call[~String] : func:r1229_2, this:r1229_1 -# 1229| mu1229_4(unknown) = ^CallSideEffect : ~m? -# 1229| v1229_5(void) = ^IndirectReadSideEffect[-1] : &:r1229_1, ~m? -# 1229| mu1229_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1229_1 -# 1229| r1229_7(bool) = Constant[0] : -# 1229| v1229_8(void) = ConditionalBranch : r1229_7 +# 35| Block 404 +# 35| r35_5643(glval) = VariableAddress[x403] : +# 35| mu35_5644(String) = Uninitialized[x403] : &:r35_5643 +# 35| r35_5645(glval) = FunctionAddress[String] : +# 35| v35_5646(void) = Call[String] : func:r35_5645, this:r35_5643 +# 35| mu35_5647(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5648(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5643 +# 35| r35_5649(glval) = VariableAddress[x403] : +# 35| r35_5650(glval) = FunctionAddress[~String] : +# 35| v35_5651(void) = Call[~String] : func:r35_5650, this:r35_5649 +# 35| mu35_5652(unknown) = ^CallSideEffect : ~m? +# 35| v35_5653(void) = ^IndirectReadSideEffect[-1] : &:r35_5649, ~m? +# 35| mu35_5654(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5649 +# 35| r35_5655(bool) = Constant[0] : +# 35| v35_5656(void) = ConditionalBranch : r35_5655 #-----| False -> Block 405 #-----| True (back edge) -> Block 404 -# 1231| Block 405 -# 1231| r1231_1(glval) = VariableAddress[x404] : -# 1231| mu1231_2(String) = Uninitialized[x404] : &:r1231_1 -# 1231| r1231_3(glval) = FunctionAddress[String] : -# 1231| v1231_4(void) = Call[String] : func:r1231_3, this:r1231_1 -# 1231| mu1231_5(unknown) = ^CallSideEffect : ~m? -# 1231| mu1231_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1231_1 -# 1232| r1232_1(glval) = VariableAddress[x404] : -# 1232| r1232_2(glval) = FunctionAddress[~String] : -# 1232| v1232_3(void) = Call[~String] : func:r1232_2, this:r1232_1 -# 1232| mu1232_4(unknown) = ^CallSideEffect : ~m? -# 1232| v1232_5(void) = ^IndirectReadSideEffect[-1] : &:r1232_1, ~m? -# 1232| mu1232_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1232_1 -# 1232| r1232_7(bool) = Constant[0] : -# 1232| v1232_8(void) = ConditionalBranch : r1232_7 +# 35| Block 405 +# 35| r35_5657(glval) = VariableAddress[x404] : +# 35| mu35_5658(String) = Uninitialized[x404] : &:r35_5657 +# 35| r35_5659(glval) = FunctionAddress[String] : +# 35| v35_5660(void) = Call[String] : func:r35_5659, this:r35_5657 +# 35| mu35_5661(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5662(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5657 +# 35| r35_5663(glval) = VariableAddress[x404] : +# 35| r35_5664(glval) = FunctionAddress[~String] : +# 35| v35_5665(void) = Call[~String] : func:r35_5664, this:r35_5663 +# 35| mu35_5666(unknown) = ^CallSideEffect : ~m? +# 35| v35_5667(void) = ^IndirectReadSideEffect[-1] : &:r35_5663, ~m? +# 35| mu35_5668(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5663 +# 35| r35_5669(bool) = Constant[0] : +# 35| v35_5670(void) = ConditionalBranch : r35_5669 #-----| False -> Block 406 #-----| True (back edge) -> Block 405 -# 1234| Block 406 -# 1234| r1234_1(glval) = VariableAddress[x405] : -# 1234| mu1234_2(String) = Uninitialized[x405] : &:r1234_1 -# 1234| r1234_3(glval) = FunctionAddress[String] : -# 1234| v1234_4(void) = Call[String] : func:r1234_3, this:r1234_1 -# 1234| mu1234_5(unknown) = ^CallSideEffect : ~m? -# 1234| mu1234_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1234_1 -# 1235| r1235_1(glval) = VariableAddress[x405] : -# 1235| r1235_2(glval) = FunctionAddress[~String] : -# 1235| v1235_3(void) = Call[~String] : func:r1235_2, this:r1235_1 -# 1235| mu1235_4(unknown) = ^CallSideEffect : ~m? -# 1235| v1235_5(void) = ^IndirectReadSideEffect[-1] : &:r1235_1, ~m? -# 1235| mu1235_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1235_1 -# 1235| r1235_7(bool) = Constant[0] : -# 1235| v1235_8(void) = ConditionalBranch : r1235_7 +# 35| Block 406 +# 35| r35_5671(glval) = VariableAddress[x405] : +# 35| mu35_5672(String) = Uninitialized[x405] : &:r35_5671 +# 35| r35_5673(glval) = FunctionAddress[String] : +# 35| v35_5674(void) = Call[String] : func:r35_5673, this:r35_5671 +# 35| mu35_5675(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5676(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5671 +# 35| r35_5677(glval) = VariableAddress[x405] : +# 35| r35_5678(glval) = FunctionAddress[~String] : +# 35| v35_5679(void) = Call[~String] : func:r35_5678, this:r35_5677 +# 35| mu35_5680(unknown) = ^CallSideEffect : ~m? +# 35| v35_5681(void) = ^IndirectReadSideEffect[-1] : &:r35_5677, ~m? +# 35| mu35_5682(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5677 +# 35| r35_5683(bool) = Constant[0] : +# 35| v35_5684(void) = ConditionalBranch : r35_5683 #-----| False -> Block 407 #-----| True (back edge) -> Block 406 -# 1237| Block 407 -# 1237| r1237_1(glval) = VariableAddress[x406] : -# 1237| mu1237_2(String) = Uninitialized[x406] : &:r1237_1 -# 1237| r1237_3(glval) = FunctionAddress[String] : -# 1237| v1237_4(void) = Call[String] : func:r1237_3, this:r1237_1 -# 1237| mu1237_5(unknown) = ^CallSideEffect : ~m? -# 1237| mu1237_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1237_1 -# 1238| r1238_1(glval) = VariableAddress[x406] : -# 1238| r1238_2(glval) = FunctionAddress[~String] : -# 1238| v1238_3(void) = Call[~String] : func:r1238_2, this:r1238_1 -# 1238| mu1238_4(unknown) = ^CallSideEffect : ~m? -# 1238| v1238_5(void) = ^IndirectReadSideEffect[-1] : &:r1238_1, ~m? -# 1238| mu1238_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1238_1 -# 1238| r1238_7(bool) = Constant[0] : -# 1238| v1238_8(void) = ConditionalBranch : r1238_7 +# 35| Block 407 +# 35| r35_5685(glval) = VariableAddress[x406] : +# 35| mu35_5686(String) = Uninitialized[x406] : &:r35_5685 +# 35| r35_5687(glval) = FunctionAddress[String] : +# 35| v35_5688(void) = Call[String] : func:r35_5687, this:r35_5685 +# 35| mu35_5689(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5690(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5685 +# 35| r35_5691(glval) = VariableAddress[x406] : +# 35| r35_5692(glval) = FunctionAddress[~String] : +# 35| v35_5693(void) = Call[~String] : func:r35_5692, this:r35_5691 +# 35| mu35_5694(unknown) = ^CallSideEffect : ~m? +# 35| v35_5695(void) = ^IndirectReadSideEffect[-1] : &:r35_5691, ~m? +# 35| mu35_5696(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5691 +# 35| r35_5697(bool) = Constant[0] : +# 35| v35_5698(void) = ConditionalBranch : r35_5697 #-----| False -> Block 408 #-----| True (back edge) -> Block 407 -# 1240| Block 408 -# 1240| r1240_1(glval) = VariableAddress[x407] : -# 1240| mu1240_2(String) = Uninitialized[x407] : &:r1240_1 -# 1240| r1240_3(glval) = FunctionAddress[String] : -# 1240| v1240_4(void) = Call[String] : func:r1240_3, this:r1240_1 -# 1240| mu1240_5(unknown) = ^CallSideEffect : ~m? -# 1240| mu1240_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1240_1 -# 1241| r1241_1(glval) = VariableAddress[x407] : -# 1241| r1241_2(glval) = FunctionAddress[~String] : -# 1241| v1241_3(void) = Call[~String] : func:r1241_2, this:r1241_1 -# 1241| mu1241_4(unknown) = ^CallSideEffect : ~m? -# 1241| v1241_5(void) = ^IndirectReadSideEffect[-1] : &:r1241_1, ~m? -# 1241| mu1241_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1241_1 -# 1241| r1241_7(bool) = Constant[0] : -# 1241| v1241_8(void) = ConditionalBranch : r1241_7 +# 35| Block 408 +# 35| r35_5699(glval) = VariableAddress[x407] : +# 35| mu35_5700(String) = Uninitialized[x407] : &:r35_5699 +# 35| r35_5701(glval) = FunctionAddress[String] : +# 35| v35_5702(void) = Call[String] : func:r35_5701, this:r35_5699 +# 35| mu35_5703(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5704(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5699 +# 35| r35_5705(glval) = VariableAddress[x407] : +# 35| r35_5706(glval) = FunctionAddress[~String] : +# 35| v35_5707(void) = Call[~String] : func:r35_5706, this:r35_5705 +# 35| mu35_5708(unknown) = ^CallSideEffect : ~m? +# 35| v35_5709(void) = ^IndirectReadSideEffect[-1] : &:r35_5705, ~m? +# 35| mu35_5710(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5705 +# 35| r35_5711(bool) = Constant[0] : +# 35| v35_5712(void) = ConditionalBranch : r35_5711 #-----| False -> Block 409 #-----| True (back edge) -> Block 408 -# 1243| Block 409 -# 1243| r1243_1(glval) = VariableAddress[x408] : -# 1243| mu1243_2(String) = Uninitialized[x408] : &:r1243_1 -# 1243| r1243_3(glval) = FunctionAddress[String] : -# 1243| v1243_4(void) = Call[String] : func:r1243_3, this:r1243_1 -# 1243| mu1243_5(unknown) = ^CallSideEffect : ~m? -# 1243| mu1243_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1243_1 -# 1244| r1244_1(glval) = VariableAddress[x408] : -# 1244| r1244_2(glval) = FunctionAddress[~String] : -# 1244| v1244_3(void) = Call[~String] : func:r1244_2, this:r1244_1 -# 1244| mu1244_4(unknown) = ^CallSideEffect : ~m? -# 1244| v1244_5(void) = ^IndirectReadSideEffect[-1] : &:r1244_1, ~m? -# 1244| mu1244_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1244_1 -# 1244| r1244_7(bool) = Constant[0] : -# 1244| v1244_8(void) = ConditionalBranch : r1244_7 +# 35| Block 409 +# 35| r35_5713(glval) = VariableAddress[x408] : +# 35| mu35_5714(String) = Uninitialized[x408] : &:r35_5713 +# 35| r35_5715(glval) = FunctionAddress[String] : +# 35| v35_5716(void) = Call[String] : func:r35_5715, this:r35_5713 +# 35| mu35_5717(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5718(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5713 +# 35| r35_5719(glval) = VariableAddress[x408] : +# 35| r35_5720(glval) = FunctionAddress[~String] : +# 35| v35_5721(void) = Call[~String] : func:r35_5720, this:r35_5719 +# 35| mu35_5722(unknown) = ^CallSideEffect : ~m? +# 35| v35_5723(void) = ^IndirectReadSideEffect[-1] : &:r35_5719, ~m? +# 35| mu35_5724(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5719 +# 35| r35_5725(bool) = Constant[0] : +# 35| v35_5726(void) = ConditionalBranch : r35_5725 #-----| False -> Block 410 #-----| True (back edge) -> Block 409 -# 1246| Block 410 -# 1246| r1246_1(glval) = VariableAddress[x409] : -# 1246| mu1246_2(String) = Uninitialized[x409] : &:r1246_1 -# 1246| r1246_3(glval) = FunctionAddress[String] : -# 1246| v1246_4(void) = Call[String] : func:r1246_3, this:r1246_1 -# 1246| mu1246_5(unknown) = ^CallSideEffect : ~m? -# 1246| mu1246_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1246_1 -# 1247| r1247_1(glval) = VariableAddress[x409] : -# 1247| r1247_2(glval) = FunctionAddress[~String] : -# 1247| v1247_3(void) = Call[~String] : func:r1247_2, this:r1247_1 -# 1247| mu1247_4(unknown) = ^CallSideEffect : ~m? -# 1247| v1247_5(void) = ^IndirectReadSideEffect[-1] : &:r1247_1, ~m? -# 1247| mu1247_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1247_1 -# 1247| r1247_7(bool) = Constant[0] : -# 1247| v1247_8(void) = ConditionalBranch : r1247_7 +# 35| Block 410 +# 35| r35_5727(glval) = VariableAddress[x409] : +# 35| mu35_5728(String) = Uninitialized[x409] : &:r35_5727 +# 35| r35_5729(glval) = FunctionAddress[String] : +# 35| v35_5730(void) = Call[String] : func:r35_5729, this:r35_5727 +# 35| mu35_5731(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5732(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5727 +# 35| r35_5733(glval) = VariableAddress[x409] : +# 35| r35_5734(glval) = FunctionAddress[~String] : +# 35| v35_5735(void) = Call[~String] : func:r35_5734, this:r35_5733 +# 35| mu35_5736(unknown) = ^CallSideEffect : ~m? +# 35| v35_5737(void) = ^IndirectReadSideEffect[-1] : &:r35_5733, ~m? +# 35| mu35_5738(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5733 +# 35| r35_5739(bool) = Constant[0] : +# 35| v35_5740(void) = ConditionalBranch : r35_5739 #-----| False -> Block 411 #-----| True (back edge) -> Block 410 -# 1249| Block 411 -# 1249| r1249_1(glval) = VariableAddress[x410] : -# 1249| mu1249_2(String) = Uninitialized[x410] : &:r1249_1 -# 1249| r1249_3(glval) = FunctionAddress[String] : -# 1249| v1249_4(void) = Call[String] : func:r1249_3, this:r1249_1 -# 1249| mu1249_5(unknown) = ^CallSideEffect : ~m? -# 1249| mu1249_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1249_1 -# 1250| r1250_1(glval) = VariableAddress[x410] : -# 1250| r1250_2(glval) = FunctionAddress[~String] : -# 1250| v1250_3(void) = Call[~String] : func:r1250_2, this:r1250_1 -# 1250| mu1250_4(unknown) = ^CallSideEffect : ~m? -# 1250| v1250_5(void) = ^IndirectReadSideEffect[-1] : &:r1250_1, ~m? -# 1250| mu1250_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1250_1 -# 1250| r1250_7(bool) = Constant[0] : -# 1250| v1250_8(void) = ConditionalBranch : r1250_7 +# 35| Block 411 +# 35| r35_5741(glval) = VariableAddress[x410] : +# 35| mu35_5742(String) = Uninitialized[x410] : &:r35_5741 +# 35| r35_5743(glval) = FunctionAddress[String] : +# 35| v35_5744(void) = Call[String] : func:r35_5743, this:r35_5741 +# 35| mu35_5745(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5746(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5741 +# 35| r35_5747(glval) = VariableAddress[x410] : +# 35| r35_5748(glval) = FunctionAddress[~String] : +# 35| v35_5749(void) = Call[~String] : func:r35_5748, this:r35_5747 +# 35| mu35_5750(unknown) = ^CallSideEffect : ~m? +# 35| v35_5751(void) = ^IndirectReadSideEffect[-1] : &:r35_5747, ~m? +# 35| mu35_5752(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5747 +# 35| r35_5753(bool) = Constant[0] : +# 35| v35_5754(void) = ConditionalBranch : r35_5753 #-----| False -> Block 412 #-----| True (back edge) -> Block 411 -# 1252| Block 412 -# 1252| r1252_1(glval) = VariableAddress[x411] : -# 1252| mu1252_2(String) = Uninitialized[x411] : &:r1252_1 -# 1252| r1252_3(glval) = FunctionAddress[String] : -# 1252| v1252_4(void) = Call[String] : func:r1252_3, this:r1252_1 -# 1252| mu1252_5(unknown) = ^CallSideEffect : ~m? -# 1252| mu1252_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1252_1 -# 1253| r1253_1(glval) = VariableAddress[x411] : -# 1253| r1253_2(glval) = FunctionAddress[~String] : -# 1253| v1253_3(void) = Call[~String] : func:r1253_2, this:r1253_1 -# 1253| mu1253_4(unknown) = ^CallSideEffect : ~m? -# 1253| v1253_5(void) = ^IndirectReadSideEffect[-1] : &:r1253_1, ~m? -# 1253| mu1253_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1253_1 -# 1253| r1253_7(bool) = Constant[0] : -# 1253| v1253_8(void) = ConditionalBranch : r1253_7 +# 35| Block 412 +# 35| r35_5755(glval) = VariableAddress[x411] : +# 35| mu35_5756(String) = Uninitialized[x411] : &:r35_5755 +# 35| r35_5757(glval) = FunctionAddress[String] : +# 35| v35_5758(void) = Call[String] : func:r35_5757, this:r35_5755 +# 35| mu35_5759(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5760(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5755 +# 35| r35_5761(glval) = VariableAddress[x411] : +# 35| r35_5762(glval) = FunctionAddress[~String] : +# 35| v35_5763(void) = Call[~String] : func:r35_5762, this:r35_5761 +# 35| mu35_5764(unknown) = ^CallSideEffect : ~m? +# 35| v35_5765(void) = ^IndirectReadSideEffect[-1] : &:r35_5761, ~m? +# 35| mu35_5766(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5761 +# 35| r35_5767(bool) = Constant[0] : +# 35| v35_5768(void) = ConditionalBranch : r35_5767 #-----| False -> Block 413 #-----| True (back edge) -> Block 412 -# 1255| Block 413 -# 1255| r1255_1(glval) = VariableAddress[x412] : -# 1255| mu1255_2(String) = Uninitialized[x412] : &:r1255_1 -# 1255| r1255_3(glval) = FunctionAddress[String] : -# 1255| v1255_4(void) = Call[String] : func:r1255_3, this:r1255_1 -# 1255| mu1255_5(unknown) = ^CallSideEffect : ~m? -# 1255| mu1255_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1255_1 -# 1256| r1256_1(glval) = VariableAddress[x412] : -# 1256| r1256_2(glval) = FunctionAddress[~String] : -# 1256| v1256_3(void) = Call[~String] : func:r1256_2, this:r1256_1 -# 1256| mu1256_4(unknown) = ^CallSideEffect : ~m? -# 1256| v1256_5(void) = ^IndirectReadSideEffect[-1] : &:r1256_1, ~m? -# 1256| mu1256_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1256_1 -# 1256| r1256_7(bool) = Constant[0] : -# 1256| v1256_8(void) = ConditionalBranch : r1256_7 +# 35| Block 413 +# 35| r35_5769(glval) = VariableAddress[x412] : +# 35| mu35_5770(String) = Uninitialized[x412] : &:r35_5769 +# 35| r35_5771(glval) = FunctionAddress[String] : +# 35| v35_5772(void) = Call[String] : func:r35_5771, this:r35_5769 +# 35| mu35_5773(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5774(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5769 +# 35| r35_5775(glval) = VariableAddress[x412] : +# 35| r35_5776(glval) = FunctionAddress[~String] : +# 35| v35_5777(void) = Call[~String] : func:r35_5776, this:r35_5775 +# 35| mu35_5778(unknown) = ^CallSideEffect : ~m? +# 35| v35_5779(void) = ^IndirectReadSideEffect[-1] : &:r35_5775, ~m? +# 35| mu35_5780(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5775 +# 35| r35_5781(bool) = Constant[0] : +# 35| v35_5782(void) = ConditionalBranch : r35_5781 #-----| False -> Block 414 #-----| True (back edge) -> Block 413 -# 1258| Block 414 -# 1258| r1258_1(glval) = VariableAddress[x413] : -# 1258| mu1258_2(String) = Uninitialized[x413] : &:r1258_1 -# 1258| r1258_3(glval) = FunctionAddress[String] : -# 1258| v1258_4(void) = Call[String] : func:r1258_3, this:r1258_1 -# 1258| mu1258_5(unknown) = ^CallSideEffect : ~m? -# 1258| mu1258_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1258_1 -# 1259| r1259_1(glval) = VariableAddress[x413] : -# 1259| r1259_2(glval) = FunctionAddress[~String] : -# 1259| v1259_3(void) = Call[~String] : func:r1259_2, this:r1259_1 -# 1259| mu1259_4(unknown) = ^CallSideEffect : ~m? -# 1259| v1259_5(void) = ^IndirectReadSideEffect[-1] : &:r1259_1, ~m? -# 1259| mu1259_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1259_1 -# 1259| r1259_7(bool) = Constant[0] : -# 1259| v1259_8(void) = ConditionalBranch : r1259_7 +# 35| Block 414 +# 35| r35_5783(glval) = VariableAddress[x413] : +# 35| mu35_5784(String) = Uninitialized[x413] : &:r35_5783 +# 35| r35_5785(glval) = FunctionAddress[String] : +# 35| v35_5786(void) = Call[String] : func:r35_5785, this:r35_5783 +# 35| mu35_5787(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5788(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5783 +# 35| r35_5789(glval) = VariableAddress[x413] : +# 35| r35_5790(glval) = FunctionAddress[~String] : +# 35| v35_5791(void) = Call[~String] : func:r35_5790, this:r35_5789 +# 35| mu35_5792(unknown) = ^CallSideEffect : ~m? +# 35| v35_5793(void) = ^IndirectReadSideEffect[-1] : &:r35_5789, ~m? +# 35| mu35_5794(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5789 +# 35| r35_5795(bool) = Constant[0] : +# 35| v35_5796(void) = ConditionalBranch : r35_5795 #-----| False -> Block 415 #-----| True (back edge) -> Block 414 -# 1261| Block 415 -# 1261| r1261_1(glval) = VariableAddress[x414] : -# 1261| mu1261_2(String) = Uninitialized[x414] : &:r1261_1 -# 1261| r1261_3(glval) = FunctionAddress[String] : -# 1261| v1261_4(void) = Call[String] : func:r1261_3, this:r1261_1 -# 1261| mu1261_5(unknown) = ^CallSideEffect : ~m? -# 1261| mu1261_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1261_1 -# 1262| r1262_1(glval) = VariableAddress[x414] : -# 1262| r1262_2(glval) = FunctionAddress[~String] : -# 1262| v1262_3(void) = Call[~String] : func:r1262_2, this:r1262_1 -# 1262| mu1262_4(unknown) = ^CallSideEffect : ~m? -# 1262| v1262_5(void) = ^IndirectReadSideEffect[-1] : &:r1262_1, ~m? -# 1262| mu1262_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1262_1 -# 1262| r1262_7(bool) = Constant[0] : -# 1262| v1262_8(void) = ConditionalBranch : r1262_7 +# 35| Block 415 +# 35| r35_5797(glval) = VariableAddress[x414] : +# 35| mu35_5798(String) = Uninitialized[x414] : &:r35_5797 +# 35| r35_5799(glval) = FunctionAddress[String] : +# 35| v35_5800(void) = Call[String] : func:r35_5799, this:r35_5797 +# 35| mu35_5801(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5802(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5797 +# 35| r35_5803(glval) = VariableAddress[x414] : +# 35| r35_5804(glval) = FunctionAddress[~String] : +# 35| v35_5805(void) = Call[~String] : func:r35_5804, this:r35_5803 +# 35| mu35_5806(unknown) = ^CallSideEffect : ~m? +# 35| v35_5807(void) = ^IndirectReadSideEffect[-1] : &:r35_5803, ~m? +# 35| mu35_5808(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5803 +# 35| r35_5809(bool) = Constant[0] : +# 35| v35_5810(void) = ConditionalBranch : r35_5809 #-----| False -> Block 416 #-----| True (back edge) -> Block 415 -# 1264| Block 416 -# 1264| r1264_1(glval) = VariableAddress[x415] : -# 1264| mu1264_2(String) = Uninitialized[x415] : &:r1264_1 -# 1264| r1264_3(glval) = FunctionAddress[String] : -# 1264| v1264_4(void) = Call[String] : func:r1264_3, this:r1264_1 -# 1264| mu1264_5(unknown) = ^CallSideEffect : ~m? -# 1264| mu1264_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1264_1 -# 1265| r1265_1(glval) = VariableAddress[x415] : -# 1265| r1265_2(glval) = FunctionAddress[~String] : -# 1265| v1265_3(void) = Call[~String] : func:r1265_2, this:r1265_1 -# 1265| mu1265_4(unknown) = ^CallSideEffect : ~m? -# 1265| v1265_5(void) = ^IndirectReadSideEffect[-1] : &:r1265_1, ~m? -# 1265| mu1265_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1265_1 -# 1265| r1265_7(bool) = Constant[0] : -# 1265| v1265_8(void) = ConditionalBranch : r1265_7 +# 35| Block 416 +# 35| r35_5811(glval) = VariableAddress[x415] : +# 35| mu35_5812(String) = Uninitialized[x415] : &:r35_5811 +# 35| r35_5813(glval) = FunctionAddress[String] : +# 35| v35_5814(void) = Call[String] : func:r35_5813, this:r35_5811 +# 35| mu35_5815(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5816(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5811 +# 35| r35_5817(glval) = VariableAddress[x415] : +# 35| r35_5818(glval) = FunctionAddress[~String] : +# 35| v35_5819(void) = Call[~String] : func:r35_5818, this:r35_5817 +# 35| mu35_5820(unknown) = ^CallSideEffect : ~m? +# 35| v35_5821(void) = ^IndirectReadSideEffect[-1] : &:r35_5817, ~m? +# 35| mu35_5822(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5817 +# 35| r35_5823(bool) = Constant[0] : +# 35| v35_5824(void) = ConditionalBranch : r35_5823 #-----| False -> Block 417 #-----| True (back edge) -> Block 416 -# 1267| Block 417 -# 1267| r1267_1(glval) = VariableAddress[x416] : -# 1267| mu1267_2(String) = Uninitialized[x416] : &:r1267_1 -# 1267| r1267_3(glval) = FunctionAddress[String] : -# 1267| v1267_4(void) = Call[String] : func:r1267_3, this:r1267_1 -# 1267| mu1267_5(unknown) = ^CallSideEffect : ~m? -# 1267| mu1267_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1267_1 -# 1268| r1268_1(glval) = VariableAddress[x416] : -# 1268| r1268_2(glval) = FunctionAddress[~String] : -# 1268| v1268_3(void) = Call[~String] : func:r1268_2, this:r1268_1 -# 1268| mu1268_4(unknown) = ^CallSideEffect : ~m? -# 1268| v1268_5(void) = ^IndirectReadSideEffect[-1] : &:r1268_1, ~m? -# 1268| mu1268_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1268_1 -# 1268| r1268_7(bool) = Constant[0] : -# 1268| v1268_8(void) = ConditionalBranch : r1268_7 +# 35| Block 417 +# 35| r35_5825(glval) = VariableAddress[x416] : +# 35| mu35_5826(String) = Uninitialized[x416] : &:r35_5825 +# 35| r35_5827(glval) = FunctionAddress[String] : +# 35| v35_5828(void) = Call[String] : func:r35_5827, this:r35_5825 +# 35| mu35_5829(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5830(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5825 +# 35| r35_5831(glval) = VariableAddress[x416] : +# 35| r35_5832(glval) = FunctionAddress[~String] : +# 35| v35_5833(void) = Call[~String] : func:r35_5832, this:r35_5831 +# 35| mu35_5834(unknown) = ^CallSideEffect : ~m? +# 35| v35_5835(void) = ^IndirectReadSideEffect[-1] : &:r35_5831, ~m? +# 35| mu35_5836(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5831 +# 35| r35_5837(bool) = Constant[0] : +# 35| v35_5838(void) = ConditionalBranch : r35_5837 #-----| False -> Block 418 #-----| True (back edge) -> Block 417 -# 1270| Block 418 -# 1270| r1270_1(glval) = VariableAddress[x417] : -# 1270| mu1270_2(String) = Uninitialized[x417] : &:r1270_1 -# 1270| r1270_3(glval) = FunctionAddress[String] : -# 1270| v1270_4(void) = Call[String] : func:r1270_3, this:r1270_1 -# 1270| mu1270_5(unknown) = ^CallSideEffect : ~m? -# 1270| mu1270_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1270_1 -# 1271| r1271_1(glval) = VariableAddress[x417] : -# 1271| r1271_2(glval) = FunctionAddress[~String] : -# 1271| v1271_3(void) = Call[~String] : func:r1271_2, this:r1271_1 -# 1271| mu1271_4(unknown) = ^CallSideEffect : ~m? -# 1271| v1271_5(void) = ^IndirectReadSideEffect[-1] : &:r1271_1, ~m? -# 1271| mu1271_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1271_1 -# 1271| r1271_7(bool) = Constant[0] : -# 1271| v1271_8(void) = ConditionalBranch : r1271_7 +# 35| Block 418 +# 35| r35_5839(glval) = VariableAddress[x417] : +# 35| mu35_5840(String) = Uninitialized[x417] : &:r35_5839 +# 35| r35_5841(glval) = FunctionAddress[String] : +# 35| v35_5842(void) = Call[String] : func:r35_5841, this:r35_5839 +# 35| mu35_5843(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5844(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5839 +# 35| r35_5845(glval) = VariableAddress[x417] : +# 35| r35_5846(glval) = FunctionAddress[~String] : +# 35| v35_5847(void) = Call[~String] : func:r35_5846, this:r35_5845 +# 35| mu35_5848(unknown) = ^CallSideEffect : ~m? +# 35| v35_5849(void) = ^IndirectReadSideEffect[-1] : &:r35_5845, ~m? +# 35| mu35_5850(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5845 +# 35| r35_5851(bool) = Constant[0] : +# 35| v35_5852(void) = ConditionalBranch : r35_5851 #-----| False -> Block 419 #-----| True (back edge) -> Block 418 -# 1273| Block 419 -# 1273| r1273_1(glval) = VariableAddress[x418] : -# 1273| mu1273_2(String) = Uninitialized[x418] : &:r1273_1 -# 1273| r1273_3(glval) = FunctionAddress[String] : -# 1273| v1273_4(void) = Call[String] : func:r1273_3, this:r1273_1 -# 1273| mu1273_5(unknown) = ^CallSideEffect : ~m? -# 1273| mu1273_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1273_1 -# 1274| r1274_1(glval) = VariableAddress[x418] : -# 1274| r1274_2(glval) = FunctionAddress[~String] : -# 1274| v1274_3(void) = Call[~String] : func:r1274_2, this:r1274_1 -# 1274| mu1274_4(unknown) = ^CallSideEffect : ~m? -# 1274| v1274_5(void) = ^IndirectReadSideEffect[-1] : &:r1274_1, ~m? -# 1274| mu1274_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1274_1 -# 1274| r1274_7(bool) = Constant[0] : -# 1274| v1274_8(void) = ConditionalBranch : r1274_7 +# 35| Block 419 +# 35| r35_5853(glval) = VariableAddress[x418] : +# 35| mu35_5854(String) = Uninitialized[x418] : &:r35_5853 +# 35| r35_5855(glval) = FunctionAddress[String] : +# 35| v35_5856(void) = Call[String] : func:r35_5855, this:r35_5853 +# 35| mu35_5857(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5858(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5853 +# 35| r35_5859(glval) = VariableAddress[x418] : +# 35| r35_5860(glval) = FunctionAddress[~String] : +# 35| v35_5861(void) = Call[~String] : func:r35_5860, this:r35_5859 +# 35| mu35_5862(unknown) = ^CallSideEffect : ~m? +# 35| v35_5863(void) = ^IndirectReadSideEffect[-1] : &:r35_5859, ~m? +# 35| mu35_5864(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5859 +# 35| r35_5865(bool) = Constant[0] : +# 35| v35_5866(void) = ConditionalBranch : r35_5865 #-----| False -> Block 420 #-----| True (back edge) -> Block 419 -# 1276| Block 420 -# 1276| r1276_1(glval) = VariableAddress[x419] : -# 1276| mu1276_2(String) = Uninitialized[x419] : &:r1276_1 -# 1276| r1276_3(glval) = FunctionAddress[String] : -# 1276| v1276_4(void) = Call[String] : func:r1276_3, this:r1276_1 -# 1276| mu1276_5(unknown) = ^CallSideEffect : ~m? -# 1276| mu1276_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1276_1 -# 1277| r1277_1(glval) = VariableAddress[x419] : -# 1277| r1277_2(glval) = FunctionAddress[~String] : -# 1277| v1277_3(void) = Call[~String] : func:r1277_2, this:r1277_1 -# 1277| mu1277_4(unknown) = ^CallSideEffect : ~m? -# 1277| v1277_5(void) = ^IndirectReadSideEffect[-1] : &:r1277_1, ~m? -# 1277| mu1277_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1277_1 -# 1277| r1277_7(bool) = Constant[0] : -# 1277| v1277_8(void) = ConditionalBranch : r1277_7 +# 35| Block 420 +# 35| r35_5867(glval) = VariableAddress[x419] : +# 35| mu35_5868(String) = Uninitialized[x419] : &:r35_5867 +# 35| r35_5869(glval) = FunctionAddress[String] : +# 35| v35_5870(void) = Call[String] : func:r35_5869, this:r35_5867 +# 35| mu35_5871(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5872(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5867 +# 35| r35_5873(glval) = VariableAddress[x419] : +# 35| r35_5874(glval) = FunctionAddress[~String] : +# 35| v35_5875(void) = Call[~String] : func:r35_5874, this:r35_5873 +# 35| mu35_5876(unknown) = ^CallSideEffect : ~m? +# 35| v35_5877(void) = ^IndirectReadSideEffect[-1] : &:r35_5873, ~m? +# 35| mu35_5878(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5873 +# 35| r35_5879(bool) = Constant[0] : +# 35| v35_5880(void) = ConditionalBranch : r35_5879 #-----| False -> Block 421 #-----| True (back edge) -> Block 420 -# 1279| Block 421 -# 1279| r1279_1(glval) = VariableAddress[x420] : -# 1279| mu1279_2(String) = Uninitialized[x420] : &:r1279_1 -# 1279| r1279_3(glval) = FunctionAddress[String] : -# 1279| v1279_4(void) = Call[String] : func:r1279_3, this:r1279_1 -# 1279| mu1279_5(unknown) = ^CallSideEffect : ~m? -# 1279| mu1279_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1279_1 -# 1280| r1280_1(glval) = VariableAddress[x420] : -# 1280| r1280_2(glval) = FunctionAddress[~String] : -# 1280| v1280_3(void) = Call[~String] : func:r1280_2, this:r1280_1 -# 1280| mu1280_4(unknown) = ^CallSideEffect : ~m? -# 1280| v1280_5(void) = ^IndirectReadSideEffect[-1] : &:r1280_1, ~m? -# 1280| mu1280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1280_1 -# 1280| r1280_7(bool) = Constant[0] : -# 1280| v1280_8(void) = ConditionalBranch : r1280_7 +# 35| Block 421 +# 35| r35_5881(glval) = VariableAddress[x420] : +# 35| mu35_5882(String) = Uninitialized[x420] : &:r35_5881 +# 35| r35_5883(glval) = FunctionAddress[String] : +# 35| v35_5884(void) = Call[String] : func:r35_5883, this:r35_5881 +# 35| mu35_5885(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5886(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5881 +# 35| r35_5887(glval) = VariableAddress[x420] : +# 35| r35_5888(glval) = FunctionAddress[~String] : +# 35| v35_5889(void) = Call[~String] : func:r35_5888, this:r35_5887 +# 35| mu35_5890(unknown) = ^CallSideEffect : ~m? +# 35| v35_5891(void) = ^IndirectReadSideEffect[-1] : &:r35_5887, ~m? +# 35| mu35_5892(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5887 +# 35| r35_5893(bool) = Constant[0] : +# 35| v35_5894(void) = ConditionalBranch : r35_5893 #-----| False -> Block 422 #-----| True (back edge) -> Block 421 -# 1282| Block 422 -# 1282| r1282_1(glval) = VariableAddress[x421] : -# 1282| mu1282_2(String) = Uninitialized[x421] : &:r1282_1 -# 1282| r1282_3(glval) = FunctionAddress[String] : -# 1282| v1282_4(void) = Call[String] : func:r1282_3, this:r1282_1 -# 1282| mu1282_5(unknown) = ^CallSideEffect : ~m? -# 1282| mu1282_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1282_1 -# 1283| r1283_1(glval) = VariableAddress[x421] : -# 1283| r1283_2(glval) = FunctionAddress[~String] : -# 1283| v1283_3(void) = Call[~String] : func:r1283_2, this:r1283_1 -# 1283| mu1283_4(unknown) = ^CallSideEffect : ~m? -# 1283| v1283_5(void) = ^IndirectReadSideEffect[-1] : &:r1283_1, ~m? -# 1283| mu1283_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1283_1 -# 1283| r1283_7(bool) = Constant[0] : -# 1283| v1283_8(void) = ConditionalBranch : r1283_7 +# 35| Block 422 +# 35| r35_5895(glval) = VariableAddress[x421] : +# 35| mu35_5896(String) = Uninitialized[x421] : &:r35_5895 +# 35| r35_5897(glval) = FunctionAddress[String] : +# 35| v35_5898(void) = Call[String] : func:r35_5897, this:r35_5895 +# 35| mu35_5899(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5900(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5895 +# 35| r35_5901(glval) = VariableAddress[x421] : +# 35| r35_5902(glval) = FunctionAddress[~String] : +# 35| v35_5903(void) = Call[~String] : func:r35_5902, this:r35_5901 +# 35| mu35_5904(unknown) = ^CallSideEffect : ~m? +# 35| v35_5905(void) = ^IndirectReadSideEffect[-1] : &:r35_5901, ~m? +# 35| mu35_5906(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5901 +# 35| r35_5907(bool) = Constant[0] : +# 35| v35_5908(void) = ConditionalBranch : r35_5907 #-----| False -> Block 423 #-----| True (back edge) -> Block 422 -# 1285| Block 423 -# 1285| r1285_1(glval) = VariableAddress[x422] : -# 1285| mu1285_2(String) = Uninitialized[x422] : &:r1285_1 -# 1285| r1285_3(glval) = FunctionAddress[String] : -# 1285| v1285_4(void) = Call[String] : func:r1285_3, this:r1285_1 -# 1285| mu1285_5(unknown) = ^CallSideEffect : ~m? -# 1285| mu1285_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1285_1 -# 1286| r1286_1(glval) = VariableAddress[x422] : -# 1286| r1286_2(glval) = FunctionAddress[~String] : -# 1286| v1286_3(void) = Call[~String] : func:r1286_2, this:r1286_1 -# 1286| mu1286_4(unknown) = ^CallSideEffect : ~m? -# 1286| v1286_5(void) = ^IndirectReadSideEffect[-1] : &:r1286_1, ~m? -# 1286| mu1286_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1286_1 -# 1286| r1286_7(bool) = Constant[0] : -# 1286| v1286_8(void) = ConditionalBranch : r1286_7 +# 35| Block 423 +# 35| r35_5909(glval) = VariableAddress[x422] : +# 35| mu35_5910(String) = Uninitialized[x422] : &:r35_5909 +# 35| r35_5911(glval) = FunctionAddress[String] : +# 35| v35_5912(void) = Call[String] : func:r35_5911, this:r35_5909 +# 35| mu35_5913(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5914(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5909 +# 35| r35_5915(glval) = VariableAddress[x422] : +# 35| r35_5916(glval) = FunctionAddress[~String] : +# 35| v35_5917(void) = Call[~String] : func:r35_5916, this:r35_5915 +# 35| mu35_5918(unknown) = ^CallSideEffect : ~m? +# 35| v35_5919(void) = ^IndirectReadSideEffect[-1] : &:r35_5915, ~m? +# 35| mu35_5920(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5915 +# 35| r35_5921(bool) = Constant[0] : +# 35| v35_5922(void) = ConditionalBranch : r35_5921 #-----| False -> Block 424 #-----| True (back edge) -> Block 423 -# 1288| Block 424 -# 1288| r1288_1(glval) = VariableAddress[x423] : -# 1288| mu1288_2(String) = Uninitialized[x423] : &:r1288_1 -# 1288| r1288_3(glval) = FunctionAddress[String] : -# 1288| v1288_4(void) = Call[String] : func:r1288_3, this:r1288_1 -# 1288| mu1288_5(unknown) = ^CallSideEffect : ~m? -# 1288| mu1288_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1288_1 -# 1289| r1289_1(glval) = VariableAddress[x423] : -# 1289| r1289_2(glval) = FunctionAddress[~String] : -# 1289| v1289_3(void) = Call[~String] : func:r1289_2, this:r1289_1 -# 1289| mu1289_4(unknown) = ^CallSideEffect : ~m? -# 1289| v1289_5(void) = ^IndirectReadSideEffect[-1] : &:r1289_1, ~m? -# 1289| mu1289_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1289_1 -# 1289| r1289_7(bool) = Constant[0] : -# 1289| v1289_8(void) = ConditionalBranch : r1289_7 +# 35| Block 424 +# 35| r35_5923(glval) = VariableAddress[x423] : +# 35| mu35_5924(String) = Uninitialized[x423] : &:r35_5923 +# 35| r35_5925(glval) = FunctionAddress[String] : +# 35| v35_5926(void) = Call[String] : func:r35_5925, this:r35_5923 +# 35| mu35_5927(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5928(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5923 +# 35| r35_5929(glval) = VariableAddress[x423] : +# 35| r35_5930(glval) = FunctionAddress[~String] : +# 35| v35_5931(void) = Call[~String] : func:r35_5930, this:r35_5929 +# 35| mu35_5932(unknown) = ^CallSideEffect : ~m? +# 35| v35_5933(void) = ^IndirectReadSideEffect[-1] : &:r35_5929, ~m? +# 35| mu35_5934(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5929 +# 35| r35_5935(bool) = Constant[0] : +# 35| v35_5936(void) = ConditionalBranch : r35_5935 #-----| False -> Block 425 #-----| True (back edge) -> Block 424 -# 1291| Block 425 -# 1291| r1291_1(glval) = VariableAddress[x424] : -# 1291| mu1291_2(String) = Uninitialized[x424] : &:r1291_1 -# 1291| r1291_3(glval) = FunctionAddress[String] : -# 1291| v1291_4(void) = Call[String] : func:r1291_3, this:r1291_1 -# 1291| mu1291_5(unknown) = ^CallSideEffect : ~m? -# 1291| mu1291_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1291_1 -# 1292| r1292_1(glval) = VariableAddress[x424] : -# 1292| r1292_2(glval) = FunctionAddress[~String] : -# 1292| v1292_3(void) = Call[~String] : func:r1292_2, this:r1292_1 -# 1292| mu1292_4(unknown) = ^CallSideEffect : ~m? -# 1292| v1292_5(void) = ^IndirectReadSideEffect[-1] : &:r1292_1, ~m? -# 1292| mu1292_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1292_1 -# 1292| r1292_7(bool) = Constant[0] : -# 1292| v1292_8(void) = ConditionalBranch : r1292_7 +# 35| Block 425 +# 35| r35_5937(glval) = VariableAddress[x424] : +# 35| mu35_5938(String) = Uninitialized[x424] : &:r35_5937 +# 35| r35_5939(glval) = FunctionAddress[String] : +# 35| v35_5940(void) = Call[String] : func:r35_5939, this:r35_5937 +# 35| mu35_5941(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5942(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5937 +# 35| r35_5943(glval) = VariableAddress[x424] : +# 35| r35_5944(glval) = FunctionAddress[~String] : +# 35| v35_5945(void) = Call[~String] : func:r35_5944, this:r35_5943 +# 35| mu35_5946(unknown) = ^CallSideEffect : ~m? +# 35| v35_5947(void) = ^IndirectReadSideEffect[-1] : &:r35_5943, ~m? +# 35| mu35_5948(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5943 +# 35| r35_5949(bool) = Constant[0] : +# 35| v35_5950(void) = ConditionalBranch : r35_5949 #-----| False -> Block 426 #-----| True (back edge) -> Block 425 -# 1294| Block 426 -# 1294| r1294_1(glval) = VariableAddress[x425] : -# 1294| mu1294_2(String) = Uninitialized[x425] : &:r1294_1 -# 1294| r1294_3(glval) = FunctionAddress[String] : -# 1294| v1294_4(void) = Call[String] : func:r1294_3, this:r1294_1 -# 1294| mu1294_5(unknown) = ^CallSideEffect : ~m? -# 1294| mu1294_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1294_1 -# 1295| r1295_1(glval) = VariableAddress[x425] : -# 1295| r1295_2(glval) = FunctionAddress[~String] : -# 1295| v1295_3(void) = Call[~String] : func:r1295_2, this:r1295_1 -# 1295| mu1295_4(unknown) = ^CallSideEffect : ~m? -# 1295| v1295_5(void) = ^IndirectReadSideEffect[-1] : &:r1295_1, ~m? -# 1295| mu1295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1295_1 -# 1295| r1295_7(bool) = Constant[0] : -# 1295| v1295_8(void) = ConditionalBranch : r1295_7 +# 35| Block 426 +# 35| r35_5951(glval) = VariableAddress[x425] : +# 35| mu35_5952(String) = Uninitialized[x425] : &:r35_5951 +# 35| r35_5953(glval) = FunctionAddress[String] : +# 35| v35_5954(void) = Call[String] : func:r35_5953, this:r35_5951 +# 35| mu35_5955(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5956(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5951 +# 35| r35_5957(glval) = VariableAddress[x425] : +# 35| r35_5958(glval) = FunctionAddress[~String] : +# 35| v35_5959(void) = Call[~String] : func:r35_5958, this:r35_5957 +# 35| mu35_5960(unknown) = ^CallSideEffect : ~m? +# 35| v35_5961(void) = ^IndirectReadSideEffect[-1] : &:r35_5957, ~m? +# 35| mu35_5962(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5957 +# 35| r35_5963(bool) = Constant[0] : +# 35| v35_5964(void) = ConditionalBranch : r35_5963 #-----| False -> Block 427 #-----| True (back edge) -> Block 426 -# 1297| Block 427 -# 1297| r1297_1(glval) = VariableAddress[x426] : -# 1297| mu1297_2(String) = Uninitialized[x426] : &:r1297_1 -# 1297| r1297_3(glval) = FunctionAddress[String] : -# 1297| v1297_4(void) = Call[String] : func:r1297_3, this:r1297_1 -# 1297| mu1297_5(unknown) = ^CallSideEffect : ~m? -# 1297| mu1297_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1297_1 -# 1298| r1298_1(glval) = VariableAddress[x426] : -# 1298| r1298_2(glval) = FunctionAddress[~String] : -# 1298| v1298_3(void) = Call[~String] : func:r1298_2, this:r1298_1 -# 1298| mu1298_4(unknown) = ^CallSideEffect : ~m? -# 1298| v1298_5(void) = ^IndirectReadSideEffect[-1] : &:r1298_1, ~m? -# 1298| mu1298_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1298_1 -# 1298| r1298_7(bool) = Constant[0] : -# 1298| v1298_8(void) = ConditionalBranch : r1298_7 +# 35| Block 427 +# 35| r35_5965(glval) = VariableAddress[x426] : +# 35| mu35_5966(String) = Uninitialized[x426] : &:r35_5965 +# 35| r35_5967(glval) = FunctionAddress[String] : +# 35| v35_5968(void) = Call[String] : func:r35_5967, this:r35_5965 +# 35| mu35_5969(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5970(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5965 +# 35| r35_5971(glval) = VariableAddress[x426] : +# 35| r35_5972(glval) = FunctionAddress[~String] : +# 35| v35_5973(void) = Call[~String] : func:r35_5972, this:r35_5971 +# 35| mu35_5974(unknown) = ^CallSideEffect : ~m? +# 35| v35_5975(void) = ^IndirectReadSideEffect[-1] : &:r35_5971, ~m? +# 35| mu35_5976(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5971 +# 35| r35_5977(bool) = Constant[0] : +# 35| v35_5978(void) = ConditionalBranch : r35_5977 #-----| False -> Block 428 #-----| True (back edge) -> Block 427 -# 1300| Block 428 -# 1300| r1300_1(glval) = VariableAddress[x427] : -# 1300| mu1300_2(String) = Uninitialized[x427] : &:r1300_1 -# 1300| r1300_3(glval) = FunctionAddress[String] : -# 1300| v1300_4(void) = Call[String] : func:r1300_3, this:r1300_1 -# 1300| mu1300_5(unknown) = ^CallSideEffect : ~m? -# 1300| mu1300_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1300_1 -# 1301| r1301_1(glval) = VariableAddress[x427] : -# 1301| r1301_2(glval) = FunctionAddress[~String] : -# 1301| v1301_3(void) = Call[~String] : func:r1301_2, this:r1301_1 -# 1301| mu1301_4(unknown) = ^CallSideEffect : ~m? -# 1301| v1301_5(void) = ^IndirectReadSideEffect[-1] : &:r1301_1, ~m? -# 1301| mu1301_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1301_1 -# 1301| r1301_7(bool) = Constant[0] : -# 1301| v1301_8(void) = ConditionalBranch : r1301_7 +# 35| Block 428 +# 35| r35_5979(glval) = VariableAddress[x427] : +# 35| mu35_5980(String) = Uninitialized[x427] : &:r35_5979 +# 35| r35_5981(glval) = FunctionAddress[String] : +# 35| v35_5982(void) = Call[String] : func:r35_5981, this:r35_5979 +# 35| mu35_5983(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5984(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5979 +# 35| r35_5985(glval) = VariableAddress[x427] : +# 35| r35_5986(glval) = FunctionAddress[~String] : +# 35| v35_5987(void) = Call[~String] : func:r35_5986, this:r35_5985 +# 35| mu35_5988(unknown) = ^CallSideEffect : ~m? +# 35| v35_5989(void) = ^IndirectReadSideEffect[-1] : &:r35_5985, ~m? +# 35| mu35_5990(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5985 +# 35| r35_5991(bool) = Constant[0] : +# 35| v35_5992(void) = ConditionalBranch : r35_5991 #-----| False -> Block 429 #-----| True (back edge) -> Block 428 -# 1303| Block 429 -# 1303| r1303_1(glval) = VariableAddress[x428] : -# 1303| mu1303_2(String) = Uninitialized[x428] : &:r1303_1 -# 1303| r1303_3(glval) = FunctionAddress[String] : -# 1303| v1303_4(void) = Call[String] : func:r1303_3, this:r1303_1 -# 1303| mu1303_5(unknown) = ^CallSideEffect : ~m? -# 1303| mu1303_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1303_1 -# 1304| r1304_1(glval) = VariableAddress[x428] : -# 1304| r1304_2(glval) = FunctionAddress[~String] : -# 1304| v1304_3(void) = Call[~String] : func:r1304_2, this:r1304_1 -# 1304| mu1304_4(unknown) = ^CallSideEffect : ~m? -# 1304| v1304_5(void) = ^IndirectReadSideEffect[-1] : &:r1304_1, ~m? -# 1304| mu1304_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1304_1 -# 1304| r1304_7(bool) = Constant[0] : -# 1304| v1304_8(void) = ConditionalBranch : r1304_7 +# 35| Block 429 +# 35| r35_5993(glval) = VariableAddress[x428] : +# 35| mu35_5994(String) = Uninitialized[x428] : &:r35_5993 +# 35| r35_5995(glval) = FunctionAddress[String] : +# 35| v35_5996(void) = Call[String] : func:r35_5995, this:r35_5993 +# 35| mu35_5997(unknown) = ^CallSideEffect : ~m? +# 35| mu35_5998(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5993 +# 35| r35_5999(glval) = VariableAddress[x428] : +# 35| r35_6000(glval) = FunctionAddress[~String] : +# 35| v35_6001(void) = Call[~String] : func:r35_6000, this:r35_5999 +# 35| mu35_6002(unknown) = ^CallSideEffect : ~m? +# 35| v35_6003(void) = ^IndirectReadSideEffect[-1] : &:r35_5999, ~m? +# 35| mu35_6004(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_5999 +# 35| r35_6005(bool) = Constant[0] : +# 35| v35_6006(void) = ConditionalBranch : r35_6005 #-----| False -> Block 430 #-----| True (back edge) -> Block 429 -# 1306| Block 430 -# 1306| r1306_1(glval) = VariableAddress[x429] : -# 1306| mu1306_2(String) = Uninitialized[x429] : &:r1306_1 -# 1306| r1306_3(glval) = FunctionAddress[String] : -# 1306| v1306_4(void) = Call[String] : func:r1306_3, this:r1306_1 -# 1306| mu1306_5(unknown) = ^CallSideEffect : ~m? -# 1306| mu1306_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1306_1 -# 1307| r1307_1(glval) = VariableAddress[x429] : -# 1307| r1307_2(glval) = FunctionAddress[~String] : -# 1307| v1307_3(void) = Call[~String] : func:r1307_2, this:r1307_1 -# 1307| mu1307_4(unknown) = ^CallSideEffect : ~m? -# 1307| v1307_5(void) = ^IndirectReadSideEffect[-1] : &:r1307_1, ~m? -# 1307| mu1307_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1307_1 -# 1307| r1307_7(bool) = Constant[0] : -# 1307| v1307_8(void) = ConditionalBranch : r1307_7 +# 35| Block 430 +# 35| r35_6007(glval) = VariableAddress[x429] : +# 35| mu35_6008(String) = Uninitialized[x429] : &:r35_6007 +# 35| r35_6009(glval) = FunctionAddress[String] : +# 35| v35_6010(void) = Call[String] : func:r35_6009, this:r35_6007 +# 35| mu35_6011(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6012(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6007 +# 35| r35_6013(glval) = VariableAddress[x429] : +# 35| r35_6014(glval) = FunctionAddress[~String] : +# 35| v35_6015(void) = Call[~String] : func:r35_6014, this:r35_6013 +# 35| mu35_6016(unknown) = ^CallSideEffect : ~m? +# 35| v35_6017(void) = ^IndirectReadSideEffect[-1] : &:r35_6013, ~m? +# 35| mu35_6018(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6013 +# 35| r35_6019(bool) = Constant[0] : +# 35| v35_6020(void) = ConditionalBranch : r35_6019 #-----| False -> Block 431 #-----| True (back edge) -> Block 430 -# 1309| Block 431 -# 1309| r1309_1(glval) = VariableAddress[x430] : -# 1309| mu1309_2(String) = Uninitialized[x430] : &:r1309_1 -# 1309| r1309_3(glval) = FunctionAddress[String] : -# 1309| v1309_4(void) = Call[String] : func:r1309_3, this:r1309_1 -# 1309| mu1309_5(unknown) = ^CallSideEffect : ~m? -# 1309| mu1309_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1309_1 -# 1310| r1310_1(glval) = VariableAddress[x430] : -# 1310| r1310_2(glval) = FunctionAddress[~String] : -# 1310| v1310_3(void) = Call[~String] : func:r1310_2, this:r1310_1 -# 1310| mu1310_4(unknown) = ^CallSideEffect : ~m? -# 1310| v1310_5(void) = ^IndirectReadSideEffect[-1] : &:r1310_1, ~m? -# 1310| mu1310_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1310_1 -# 1310| r1310_7(bool) = Constant[0] : -# 1310| v1310_8(void) = ConditionalBranch : r1310_7 +# 35| Block 431 +# 35| r35_6021(glval) = VariableAddress[x430] : +# 35| mu35_6022(String) = Uninitialized[x430] : &:r35_6021 +# 35| r35_6023(glval) = FunctionAddress[String] : +# 35| v35_6024(void) = Call[String] : func:r35_6023, this:r35_6021 +# 35| mu35_6025(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6026(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6021 +# 35| r35_6027(glval) = VariableAddress[x430] : +# 35| r35_6028(glval) = FunctionAddress[~String] : +# 35| v35_6029(void) = Call[~String] : func:r35_6028, this:r35_6027 +# 35| mu35_6030(unknown) = ^CallSideEffect : ~m? +# 35| v35_6031(void) = ^IndirectReadSideEffect[-1] : &:r35_6027, ~m? +# 35| mu35_6032(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6027 +# 35| r35_6033(bool) = Constant[0] : +# 35| v35_6034(void) = ConditionalBranch : r35_6033 #-----| False -> Block 432 #-----| True (back edge) -> Block 431 -# 1312| Block 432 -# 1312| r1312_1(glval) = VariableAddress[x431] : -# 1312| mu1312_2(String) = Uninitialized[x431] : &:r1312_1 -# 1312| r1312_3(glval) = FunctionAddress[String] : -# 1312| v1312_4(void) = Call[String] : func:r1312_3, this:r1312_1 -# 1312| mu1312_5(unknown) = ^CallSideEffect : ~m? -# 1312| mu1312_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1312_1 -# 1313| r1313_1(glval) = VariableAddress[x431] : -# 1313| r1313_2(glval) = FunctionAddress[~String] : -# 1313| v1313_3(void) = Call[~String] : func:r1313_2, this:r1313_1 -# 1313| mu1313_4(unknown) = ^CallSideEffect : ~m? -# 1313| v1313_5(void) = ^IndirectReadSideEffect[-1] : &:r1313_1, ~m? -# 1313| mu1313_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1313_1 -# 1313| r1313_7(bool) = Constant[0] : -# 1313| v1313_8(void) = ConditionalBranch : r1313_7 +# 35| Block 432 +# 35| r35_6035(glval) = VariableAddress[x431] : +# 35| mu35_6036(String) = Uninitialized[x431] : &:r35_6035 +# 35| r35_6037(glval) = FunctionAddress[String] : +# 35| v35_6038(void) = Call[String] : func:r35_6037, this:r35_6035 +# 35| mu35_6039(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6040(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6035 +# 35| r35_6041(glval) = VariableAddress[x431] : +# 35| r35_6042(glval) = FunctionAddress[~String] : +# 35| v35_6043(void) = Call[~String] : func:r35_6042, this:r35_6041 +# 35| mu35_6044(unknown) = ^CallSideEffect : ~m? +# 35| v35_6045(void) = ^IndirectReadSideEffect[-1] : &:r35_6041, ~m? +# 35| mu35_6046(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6041 +# 35| r35_6047(bool) = Constant[0] : +# 35| v35_6048(void) = ConditionalBranch : r35_6047 #-----| False -> Block 433 #-----| True (back edge) -> Block 432 -# 1315| Block 433 -# 1315| r1315_1(glval) = VariableAddress[x432] : -# 1315| mu1315_2(String) = Uninitialized[x432] : &:r1315_1 -# 1315| r1315_3(glval) = FunctionAddress[String] : -# 1315| v1315_4(void) = Call[String] : func:r1315_3, this:r1315_1 -# 1315| mu1315_5(unknown) = ^CallSideEffect : ~m? -# 1315| mu1315_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1315_1 -# 1316| r1316_1(glval) = VariableAddress[x432] : -# 1316| r1316_2(glval) = FunctionAddress[~String] : -# 1316| v1316_3(void) = Call[~String] : func:r1316_2, this:r1316_1 -# 1316| mu1316_4(unknown) = ^CallSideEffect : ~m? -# 1316| v1316_5(void) = ^IndirectReadSideEffect[-1] : &:r1316_1, ~m? -# 1316| mu1316_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1316_1 -# 1316| r1316_7(bool) = Constant[0] : -# 1316| v1316_8(void) = ConditionalBranch : r1316_7 +# 35| Block 433 +# 35| r35_6049(glval) = VariableAddress[x432] : +# 35| mu35_6050(String) = Uninitialized[x432] : &:r35_6049 +# 35| r35_6051(glval) = FunctionAddress[String] : +# 35| v35_6052(void) = Call[String] : func:r35_6051, this:r35_6049 +# 35| mu35_6053(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6054(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6049 +# 35| r35_6055(glval) = VariableAddress[x432] : +# 35| r35_6056(glval) = FunctionAddress[~String] : +# 35| v35_6057(void) = Call[~String] : func:r35_6056, this:r35_6055 +# 35| mu35_6058(unknown) = ^CallSideEffect : ~m? +# 35| v35_6059(void) = ^IndirectReadSideEffect[-1] : &:r35_6055, ~m? +# 35| mu35_6060(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6055 +# 35| r35_6061(bool) = Constant[0] : +# 35| v35_6062(void) = ConditionalBranch : r35_6061 #-----| False -> Block 434 #-----| True (back edge) -> Block 433 -# 1318| Block 434 -# 1318| r1318_1(glval) = VariableAddress[x433] : -# 1318| mu1318_2(String) = Uninitialized[x433] : &:r1318_1 -# 1318| r1318_3(glval) = FunctionAddress[String] : -# 1318| v1318_4(void) = Call[String] : func:r1318_3, this:r1318_1 -# 1318| mu1318_5(unknown) = ^CallSideEffect : ~m? -# 1318| mu1318_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1318_1 -# 1319| r1319_1(glval) = VariableAddress[x433] : -# 1319| r1319_2(glval) = FunctionAddress[~String] : -# 1319| v1319_3(void) = Call[~String] : func:r1319_2, this:r1319_1 -# 1319| mu1319_4(unknown) = ^CallSideEffect : ~m? -# 1319| v1319_5(void) = ^IndirectReadSideEffect[-1] : &:r1319_1, ~m? -# 1319| mu1319_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1319_1 -# 1319| r1319_7(bool) = Constant[0] : -# 1319| v1319_8(void) = ConditionalBranch : r1319_7 +# 35| Block 434 +# 35| r35_6063(glval) = VariableAddress[x433] : +# 35| mu35_6064(String) = Uninitialized[x433] : &:r35_6063 +# 35| r35_6065(glval) = FunctionAddress[String] : +# 35| v35_6066(void) = Call[String] : func:r35_6065, this:r35_6063 +# 35| mu35_6067(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6068(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6063 +# 35| r35_6069(glval) = VariableAddress[x433] : +# 35| r35_6070(glval) = FunctionAddress[~String] : +# 35| v35_6071(void) = Call[~String] : func:r35_6070, this:r35_6069 +# 35| mu35_6072(unknown) = ^CallSideEffect : ~m? +# 35| v35_6073(void) = ^IndirectReadSideEffect[-1] : &:r35_6069, ~m? +# 35| mu35_6074(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6069 +# 35| r35_6075(bool) = Constant[0] : +# 35| v35_6076(void) = ConditionalBranch : r35_6075 #-----| False -> Block 435 #-----| True (back edge) -> Block 434 -# 1321| Block 435 -# 1321| r1321_1(glval) = VariableAddress[x434] : -# 1321| mu1321_2(String) = Uninitialized[x434] : &:r1321_1 -# 1321| r1321_3(glval) = FunctionAddress[String] : -# 1321| v1321_4(void) = Call[String] : func:r1321_3, this:r1321_1 -# 1321| mu1321_5(unknown) = ^CallSideEffect : ~m? -# 1321| mu1321_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1321_1 -# 1322| r1322_1(glval) = VariableAddress[x434] : -# 1322| r1322_2(glval) = FunctionAddress[~String] : -# 1322| v1322_3(void) = Call[~String] : func:r1322_2, this:r1322_1 -# 1322| mu1322_4(unknown) = ^CallSideEffect : ~m? -# 1322| v1322_5(void) = ^IndirectReadSideEffect[-1] : &:r1322_1, ~m? -# 1322| mu1322_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1322_1 -# 1322| r1322_7(bool) = Constant[0] : -# 1322| v1322_8(void) = ConditionalBranch : r1322_7 +# 35| Block 435 +# 35| r35_6077(glval) = VariableAddress[x434] : +# 35| mu35_6078(String) = Uninitialized[x434] : &:r35_6077 +# 35| r35_6079(glval) = FunctionAddress[String] : +# 35| v35_6080(void) = Call[String] : func:r35_6079, this:r35_6077 +# 35| mu35_6081(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6082(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6077 +# 35| r35_6083(glval) = VariableAddress[x434] : +# 35| r35_6084(glval) = FunctionAddress[~String] : +# 35| v35_6085(void) = Call[~String] : func:r35_6084, this:r35_6083 +# 35| mu35_6086(unknown) = ^CallSideEffect : ~m? +# 35| v35_6087(void) = ^IndirectReadSideEffect[-1] : &:r35_6083, ~m? +# 35| mu35_6088(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6083 +# 35| r35_6089(bool) = Constant[0] : +# 35| v35_6090(void) = ConditionalBranch : r35_6089 #-----| False -> Block 436 #-----| True (back edge) -> Block 435 -# 1324| Block 436 -# 1324| r1324_1(glval) = VariableAddress[x435] : -# 1324| mu1324_2(String) = Uninitialized[x435] : &:r1324_1 -# 1324| r1324_3(glval) = FunctionAddress[String] : -# 1324| v1324_4(void) = Call[String] : func:r1324_3, this:r1324_1 -# 1324| mu1324_5(unknown) = ^CallSideEffect : ~m? -# 1324| mu1324_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1324_1 -# 1325| r1325_1(glval) = VariableAddress[x435] : -# 1325| r1325_2(glval) = FunctionAddress[~String] : -# 1325| v1325_3(void) = Call[~String] : func:r1325_2, this:r1325_1 -# 1325| mu1325_4(unknown) = ^CallSideEffect : ~m? -# 1325| v1325_5(void) = ^IndirectReadSideEffect[-1] : &:r1325_1, ~m? -# 1325| mu1325_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1325_1 -# 1325| r1325_7(bool) = Constant[0] : -# 1325| v1325_8(void) = ConditionalBranch : r1325_7 +# 35| Block 436 +# 35| r35_6091(glval) = VariableAddress[x435] : +# 35| mu35_6092(String) = Uninitialized[x435] : &:r35_6091 +# 35| r35_6093(glval) = FunctionAddress[String] : +# 35| v35_6094(void) = Call[String] : func:r35_6093, this:r35_6091 +# 35| mu35_6095(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6096(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6091 +# 35| r35_6097(glval) = VariableAddress[x435] : +# 35| r35_6098(glval) = FunctionAddress[~String] : +# 35| v35_6099(void) = Call[~String] : func:r35_6098, this:r35_6097 +# 35| mu35_6100(unknown) = ^CallSideEffect : ~m? +# 35| v35_6101(void) = ^IndirectReadSideEffect[-1] : &:r35_6097, ~m? +# 35| mu35_6102(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6097 +# 35| r35_6103(bool) = Constant[0] : +# 35| v35_6104(void) = ConditionalBranch : r35_6103 #-----| False -> Block 437 #-----| True (back edge) -> Block 436 -# 1327| Block 437 -# 1327| r1327_1(glval) = VariableAddress[x436] : -# 1327| mu1327_2(String) = Uninitialized[x436] : &:r1327_1 -# 1327| r1327_3(glval) = FunctionAddress[String] : -# 1327| v1327_4(void) = Call[String] : func:r1327_3, this:r1327_1 -# 1327| mu1327_5(unknown) = ^CallSideEffect : ~m? -# 1327| mu1327_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1327_1 -# 1328| r1328_1(glval) = VariableAddress[x436] : -# 1328| r1328_2(glval) = FunctionAddress[~String] : -# 1328| v1328_3(void) = Call[~String] : func:r1328_2, this:r1328_1 -# 1328| mu1328_4(unknown) = ^CallSideEffect : ~m? -# 1328| v1328_5(void) = ^IndirectReadSideEffect[-1] : &:r1328_1, ~m? -# 1328| mu1328_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1328_1 -# 1328| r1328_7(bool) = Constant[0] : -# 1328| v1328_8(void) = ConditionalBranch : r1328_7 +# 35| Block 437 +# 35| r35_6105(glval) = VariableAddress[x436] : +# 35| mu35_6106(String) = Uninitialized[x436] : &:r35_6105 +# 35| r35_6107(glval) = FunctionAddress[String] : +# 35| v35_6108(void) = Call[String] : func:r35_6107, this:r35_6105 +# 35| mu35_6109(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6105 +# 35| r35_6111(glval) = VariableAddress[x436] : +# 35| r35_6112(glval) = FunctionAddress[~String] : +# 35| v35_6113(void) = Call[~String] : func:r35_6112, this:r35_6111 +# 35| mu35_6114(unknown) = ^CallSideEffect : ~m? +# 35| v35_6115(void) = ^IndirectReadSideEffect[-1] : &:r35_6111, ~m? +# 35| mu35_6116(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6111 +# 35| r35_6117(bool) = Constant[0] : +# 35| v35_6118(void) = ConditionalBranch : r35_6117 #-----| False -> Block 438 #-----| True (back edge) -> Block 437 -# 1330| Block 438 -# 1330| r1330_1(glval) = VariableAddress[x437] : -# 1330| mu1330_2(String) = Uninitialized[x437] : &:r1330_1 -# 1330| r1330_3(glval) = FunctionAddress[String] : -# 1330| v1330_4(void) = Call[String] : func:r1330_3, this:r1330_1 -# 1330| mu1330_5(unknown) = ^CallSideEffect : ~m? -# 1330| mu1330_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1330_1 -# 1331| r1331_1(glval) = VariableAddress[x437] : -# 1331| r1331_2(glval) = FunctionAddress[~String] : -# 1331| v1331_3(void) = Call[~String] : func:r1331_2, this:r1331_1 -# 1331| mu1331_4(unknown) = ^CallSideEffect : ~m? -# 1331| v1331_5(void) = ^IndirectReadSideEffect[-1] : &:r1331_1, ~m? -# 1331| mu1331_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1331_1 -# 1331| r1331_7(bool) = Constant[0] : -# 1331| v1331_8(void) = ConditionalBranch : r1331_7 +# 35| Block 438 +# 35| r35_6119(glval) = VariableAddress[x437] : +# 35| mu35_6120(String) = Uninitialized[x437] : &:r35_6119 +# 35| r35_6121(glval) = FunctionAddress[String] : +# 35| v35_6122(void) = Call[String] : func:r35_6121, this:r35_6119 +# 35| mu35_6123(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6119 +# 35| r35_6125(glval) = VariableAddress[x437] : +# 35| r35_6126(glval) = FunctionAddress[~String] : +# 35| v35_6127(void) = Call[~String] : func:r35_6126, this:r35_6125 +# 35| mu35_6128(unknown) = ^CallSideEffect : ~m? +# 35| v35_6129(void) = ^IndirectReadSideEffect[-1] : &:r35_6125, ~m? +# 35| mu35_6130(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6125 +# 35| r35_6131(bool) = Constant[0] : +# 35| v35_6132(void) = ConditionalBranch : r35_6131 #-----| False -> Block 439 #-----| True (back edge) -> Block 438 -# 1333| Block 439 -# 1333| r1333_1(glval) = VariableAddress[x438] : -# 1333| mu1333_2(String) = Uninitialized[x438] : &:r1333_1 -# 1333| r1333_3(glval) = FunctionAddress[String] : -# 1333| v1333_4(void) = Call[String] : func:r1333_3, this:r1333_1 -# 1333| mu1333_5(unknown) = ^CallSideEffect : ~m? -# 1333| mu1333_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1333_1 -# 1334| r1334_1(glval) = VariableAddress[x438] : -# 1334| r1334_2(glval) = FunctionAddress[~String] : -# 1334| v1334_3(void) = Call[~String] : func:r1334_2, this:r1334_1 -# 1334| mu1334_4(unknown) = ^CallSideEffect : ~m? -# 1334| v1334_5(void) = ^IndirectReadSideEffect[-1] : &:r1334_1, ~m? -# 1334| mu1334_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1334_1 -# 1334| r1334_7(bool) = Constant[0] : -# 1334| v1334_8(void) = ConditionalBranch : r1334_7 +# 35| Block 439 +# 35| r35_6133(glval) = VariableAddress[x438] : +# 35| mu35_6134(String) = Uninitialized[x438] : &:r35_6133 +# 35| r35_6135(glval) = FunctionAddress[String] : +# 35| v35_6136(void) = Call[String] : func:r35_6135, this:r35_6133 +# 35| mu35_6137(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6133 +# 35| r35_6139(glval) = VariableAddress[x438] : +# 35| r35_6140(glval) = FunctionAddress[~String] : +# 35| v35_6141(void) = Call[~String] : func:r35_6140, this:r35_6139 +# 35| mu35_6142(unknown) = ^CallSideEffect : ~m? +# 35| v35_6143(void) = ^IndirectReadSideEffect[-1] : &:r35_6139, ~m? +# 35| mu35_6144(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6139 +# 35| r35_6145(bool) = Constant[0] : +# 35| v35_6146(void) = ConditionalBranch : r35_6145 #-----| False -> Block 440 #-----| True (back edge) -> Block 439 -# 1336| Block 440 -# 1336| r1336_1(glval) = VariableAddress[x439] : -# 1336| mu1336_2(String) = Uninitialized[x439] : &:r1336_1 -# 1336| r1336_3(glval) = FunctionAddress[String] : -# 1336| v1336_4(void) = Call[String] : func:r1336_3, this:r1336_1 -# 1336| mu1336_5(unknown) = ^CallSideEffect : ~m? -# 1336| mu1336_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1336_1 -# 1337| r1337_1(glval) = VariableAddress[x439] : -# 1337| r1337_2(glval) = FunctionAddress[~String] : -# 1337| v1337_3(void) = Call[~String] : func:r1337_2, this:r1337_1 -# 1337| mu1337_4(unknown) = ^CallSideEffect : ~m? -# 1337| v1337_5(void) = ^IndirectReadSideEffect[-1] : &:r1337_1, ~m? -# 1337| mu1337_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1337_1 -# 1337| r1337_7(bool) = Constant[0] : -# 1337| v1337_8(void) = ConditionalBranch : r1337_7 +# 35| Block 440 +# 35| r35_6147(glval) = VariableAddress[x439] : +# 35| mu35_6148(String) = Uninitialized[x439] : &:r35_6147 +# 35| r35_6149(glval) = FunctionAddress[String] : +# 35| v35_6150(void) = Call[String] : func:r35_6149, this:r35_6147 +# 35| mu35_6151(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6147 +# 35| r35_6153(glval) = VariableAddress[x439] : +# 35| r35_6154(glval) = FunctionAddress[~String] : +# 35| v35_6155(void) = Call[~String] : func:r35_6154, this:r35_6153 +# 35| mu35_6156(unknown) = ^CallSideEffect : ~m? +# 35| v35_6157(void) = ^IndirectReadSideEffect[-1] : &:r35_6153, ~m? +# 35| mu35_6158(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6153 +# 35| r35_6159(bool) = Constant[0] : +# 35| v35_6160(void) = ConditionalBranch : r35_6159 #-----| False -> Block 441 #-----| True (back edge) -> Block 440 -# 1339| Block 441 -# 1339| r1339_1(glval) = VariableAddress[x440] : -# 1339| mu1339_2(String) = Uninitialized[x440] : &:r1339_1 -# 1339| r1339_3(glval) = FunctionAddress[String] : -# 1339| v1339_4(void) = Call[String] : func:r1339_3, this:r1339_1 -# 1339| mu1339_5(unknown) = ^CallSideEffect : ~m? -# 1339| mu1339_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1339_1 -# 1340| r1340_1(glval) = VariableAddress[x440] : -# 1340| r1340_2(glval) = FunctionAddress[~String] : -# 1340| v1340_3(void) = Call[~String] : func:r1340_2, this:r1340_1 -# 1340| mu1340_4(unknown) = ^CallSideEffect : ~m? -# 1340| v1340_5(void) = ^IndirectReadSideEffect[-1] : &:r1340_1, ~m? -# 1340| mu1340_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1340_1 -# 1340| r1340_7(bool) = Constant[0] : -# 1340| v1340_8(void) = ConditionalBranch : r1340_7 +# 35| Block 441 +# 35| r35_6161(glval) = VariableAddress[x440] : +# 35| mu35_6162(String) = Uninitialized[x440] : &:r35_6161 +# 35| r35_6163(glval) = FunctionAddress[String] : +# 35| v35_6164(void) = Call[String] : func:r35_6163, this:r35_6161 +# 35| mu35_6165(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6161 +# 35| r35_6167(glval) = VariableAddress[x440] : +# 35| r35_6168(glval) = FunctionAddress[~String] : +# 35| v35_6169(void) = Call[~String] : func:r35_6168, this:r35_6167 +# 35| mu35_6170(unknown) = ^CallSideEffect : ~m? +# 35| v35_6171(void) = ^IndirectReadSideEffect[-1] : &:r35_6167, ~m? +# 35| mu35_6172(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6167 +# 35| r35_6173(bool) = Constant[0] : +# 35| v35_6174(void) = ConditionalBranch : r35_6173 #-----| False -> Block 442 #-----| True (back edge) -> Block 441 -# 1342| Block 442 -# 1342| r1342_1(glval) = VariableAddress[x441] : -# 1342| mu1342_2(String) = Uninitialized[x441] : &:r1342_1 -# 1342| r1342_3(glval) = FunctionAddress[String] : -# 1342| v1342_4(void) = Call[String] : func:r1342_3, this:r1342_1 -# 1342| mu1342_5(unknown) = ^CallSideEffect : ~m? -# 1342| mu1342_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1342_1 -# 1343| r1343_1(glval) = VariableAddress[x441] : -# 1343| r1343_2(glval) = FunctionAddress[~String] : -# 1343| v1343_3(void) = Call[~String] : func:r1343_2, this:r1343_1 -# 1343| mu1343_4(unknown) = ^CallSideEffect : ~m? -# 1343| v1343_5(void) = ^IndirectReadSideEffect[-1] : &:r1343_1, ~m? -# 1343| mu1343_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1343_1 -# 1343| r1343_7(bool) = Constant[0] : -# 1343| v1343_8(void) = ConditionalBranch : r1343_7 +# 35| Block 442 +# 35| r35_6175(glval) = VariableAddress[x441] : +# 35| mu35_6176(String) = Uninitialized[x441] : &:r35_6175 +# 35| r35_6177(glval) = FunctionAddress[String] : +# 35| v35_6178(void) = Call[String] : func:r35_6177, this:r35_6175 +# 35| mu35_6179(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6175 +# 35| r35_6181(glval) = VariableAddress[x441] : +# 35| r35_6182(glval) = FunctionAddress[~String] : +# 35| v35_6183(void) = Call[~String] : func:r35_6182, this:r35_6181 +# 35| mu35_6184(unknown) = ^CallSideEffect : ~m? +# 35| v35_6185(void) = ^IndirectReadSideEffect[-1] : &:r35_6181, ~m? +# 35| mu35_6186(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6181 +# 35| r35_6187(bool) = Constant[0] : +# 35| v35_6188(void) = ConditionalBranch : r35_6187 #-----| False -> Block 443 #-----| True (back edge) -> Block 442 -# 1345| Block 443 -# 1345| r1345_1(glval) = VariableAddress[x442] : -# 1345| mu1345_2(String) = Uninitialized[x442] : &:r1345_1 -# 1345| r1345_3(glval) = FunctionAddress[String] : -# 1345| v1345_4(void) = Call[String] : func:r1345_3, this:r1345_1 -# 1345| mu1345_5(unknown) = ^CallSideEffect : ~m? -# 1345| mu1345_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1345_1 -# 1346| r1346_1(glval) = VariableAddress[x442] : -# 1346| r1346_2(glval) = FunctionAddress[~String] : -# 1346| v1346_3(void) = Call[~String] : func:r1346_2, this:r1346_1 -# 1346| mu1346_4(unknown) = ^CallSideEffect : ~m? -# 1346| v1346_5(void) = ^IndirectReadSideEffect[-1] : &:r1346_1, ~m? -# 1346| mu1346_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1346_1 -# 1346| r1346_7(bool) = Constant[0] : -# 1346| v1346_8(void) = ConditionalBranch : r1346_7 +# 35| Block 443 +# 35| r35_6189(glval) = VariableAddress[x442] : +# 35| mu35_6190(String) = Uninitialized[x442] : &:r35_6189 +# 35| r35_6191(glval) = FunctionAddress[String] : +# 35| v35_6192(void) = Call[String] : func:r35_6191, this:r35_6189 +# 35| mu35_6193(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6189 +# 35| r35_6195(glval) = VariableAddress[x442] : +# 35| r35_6196(glval) = FunctionAddress[~String] : +# 35| v35_6197(void) = Call[~String] : func:r35_6196, this:r35_6195 +# 35| mu35_6198(unknown) = ^CallSideEffect : ~m? +# 35| v35_6199(void) = ^IndirectReadSideEffect[-1] : &:r35_6195, ~m? +# 35| mu35_6200(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6195 +# 35| r35_6201(bool) = Constant[0] : +# 35| v35_6202(void) = ConditionalBranch : r35_6201 #-----| False -> Block 444 #-----| True (back edge) -> Block 443 -# 1348| Block 444 -# 1348| r1348_1(glval) = VariableAddress[x443] : -# 1348| mu1348_2(String) = Uninitialized[x443] : &:r1348_1 -# 1348| r1348_3(glval) = FunctionAddress[String] : -# 1348| v1348_4(void) = Call[String] : func:r1348_3, this:r1348_1 -# 1348| mu1348_5(unknown) = ^CallSideEffect : ~m? -# 1348| mu1348_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1348_1 -# 1349| r1349_1(glval) = VariableAddress[x443] : -# 1349| r1349_2(glval) = FunctionAddress[~String] : -# 1349| v1349_3(void) = Call[~String] : func:r1349_2, this:r1349_1 -# 1349| mu1349_4(unknown) = ^CallSideEffect : ~m? -# 1349| v1349_5(void) = ^IndirectReadSideEffect[-1] : &:r1349_1, ~m? -# 1349| mu1349_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1349_1 -# 1349| r1349_7(bool) = Constant[0] : -# 1349| v1349_8(void) = ConditionalBranch : r1349_7 +# 35| Block 444 +# 35| r35_6203(glval) = VariableAddress[x443] : +# 35| mu35_6204(String) = Uninitialized[x443] : &:r35_6203 +# 35| r35_6205(glval) = FunctionAddress[String] : +# 35| v35_6206(void) = Call[String] : func:r35_6205, this:r35_6203 +# 35| mu35_6207(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6203 +# 35| r35_6209(glval) = VariableAddress[x443] : +# 35| r35_6210(glval) = FunctionAddress[~String] : +# 35| v35_6211(void) = Call[~String] : func:r35_6210, this:r35_6209 +# 35| mu35_6212(unknown) = ^CallSideEffect : ~m? +# 35| v35_6213(void) = ^IndirectReadSideEffect[-1] : &:r35_6209, ~m? +# 35| mu35_6214(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6209 +# 35| r35_6215(bool) = Constant[0] : +# 35| v35_6216(void) = ConditionalBranch : r35_6215 #-----| False -> Block 445 #-----| True (back edge) -> Block 444 -# 1351| Block 445 -# 1351| r1351_1(glval) = VariableAddress[x444] : -# 1351| mu1351_2(String) = Uninitialized[x444] : &:r1351_1 -# 1351| r1351_3(glval) = FunctionAddress[String] : -# 1351| v1351_4(void) = Call[String] : func:r1351_3, this:r1351_1 -# 1351| mu1351_5(unknown) = ^CallSideEffect : ~m? -# 1351| mu1351_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1351_1 -# 1352| r1352_1(glval) = VariableAddress[x444] : -# 1352| r1352_2(glval) = FunctionAddress[~String] : -# 1352| v1352_3(void) = Call[~String] : func:r1352_2, this:r1352_1 -# 1352| mu1352_4(unknown) = ^CallSideEffect : ~m? -# 1352| v1352_5(void) = ^IndirectReadSideEffect[-1] : &:r1352_1, ~m? -# 1352| mu1352_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1352_1 -# 1352| r1352_7(bool) = Constant[0] : -# 1352| v1352_8(void) = ConditionalBranch : r1352_7 +# 35| Block 445 +# 35| r35_6217(glval) = VariableAddress[x444] : +# 35| mu35_6218(String) = Uninitialized[x444] : &:r35_6217 +# 35| r35_6219(glval) = FunctionAddress[String] : +# 35| v35_6220(void) = Call[String] : func:r35_6219, this:r35_6217 +# 35| mu35_6221(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6217 +# 35| r35_6223(glval) = VariableAddress[x444] : +# 35| r35_6224(glval) = FunctionAddress[~String] : +# 35| v35_6225(void) = Call[~String] : func:r35_6224, this:r35_6223 +# 35| mu35_6226(unknown) = ^CallSideEffect : ~m? +# 35| v35_6227(void) = ^IndirectReadSideEffect[-1] : &:r35_6223, ~m? +# 35| mu35_6228(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6223 +# 35| r35_6229(bool) = Constant[0] : +# 35| v35_6230(void) = ConditionalBranch : r35_6229 #-----| False -> Block 446 #-----| True (back edge) -> Block 445 -# 1354| Block 446 -# 1354| r1354_1(glval) = VariableAddress[x445] : -# 1354| mu1354_2(String) = Uninitialized[x445] : &:r1354_1 -# 1354| r1354_3(glval) = FunctionAddress[String] : -# 1354| v1354_4(void) = Call[String] : func:r1354_3, this:r1354_1 -# 1354| mu1354_5(unknown) = ^CallSideEffect : ~m? -# 1354| mu1354_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1354_1 -# 1355| r1355_1(glval) = VariableAddress[x445] : -# 1355| r1355_2(glval) = FunctionAddress[~String] : -# 1355| v1355_3(void) = Call[~String] : func:r1355_2, this:r1355_1 -# 1355| mu1355_4(unknown) = ^CallSideEffect : ~m? -# 1355| v1355_5(void) = ^IndirectReadSideEffect[-1] : &:r1355_1, ~m? -# 1355| mu1355_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1355_1 -# 1355| r1355_7(bool) = Constant[0] : -# 1355| v1355_8(void) = ConditionalBranch : r1355_7 +# 35| Block 446 +# 35| r35_6231(glval) = VariableAddress[x445] : +# 35| mu35_6232(String) = Uninitialized[x445] : &:r35_6231 +# 35| r35_6233(glval) = FunctionAddress[String] : +# 35| v35_6234(void) = Call[String] : func:r35_6233, this:r35_6231 +# 35| mu35_6235(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6231 +# 35| r35_6237(glval) = VariableAddress[x445] : +# 35| r35_6238(glval) = FunctionAddress[~String] : +# 35| v35_6239(void) = Call[~String] : func:r35_6238, this:r35_6237 +# 35| mu35_6240(unknown) = ^CallSideEffect : ~m? +# 35| v35_6241(void) = ^IndirectReadSideEffect[-1] : &:r35_6237, ~m? +# 35| mu35_6242(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6237 +# 35| r35_6243(bool) = Constant[0] : +# 35| v35_6244(void) = ConditionalBranch : r35_6243 #-----| False -> Block 447 #-----| True (back edge) -> Block 446 -# 1357| Block 447 -# 1357| r1357_1(glval) = VariableAddress[x446] : -# 1357| mu1357_2(String) = Uninitialized[x446] : &:r1357_1 -# 1357| r1357_3(glval) = FunctionAddress[String] : -# 1357| v1357_4(void) = Call[String] : func:r1357_3, this:r1357_1 -# 1357| mu1357_5(unknown) = ^CallSideEffect : ~m? -# 1357| mu1357_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1357_1 -# 1358| r1358_1(glval) = VariableAddress[x446] : -# 1358| r1358_2(glval) = FunctionAddress[~String] : -# 1358| v1358_3(void) = Call[~String] : func:r1358_2, this:r1358_1 -# 1358| mu1358_4(unknown) = ^CallSideEffect : ~m? -# 1358| v1358_5(void) = ^IndirectReadSideEffect[-1] : &:r1358_1, ~m? -# 1358| mu1358_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1358_1 -# 1358| r1358_7(bool) = Constant[0] : -# 1358| v1358_8(void) = ConditionalBranch : r1358_7 +# 35| Block 447 +# 35| r35_6245(glval) = VariableAddress[x446] : +# 35| mu35_6246(String) = Uninitialized[x446] : &:r35_6245 +# 35| r35_6247(glval) = FunctionAddress[String] : +# 35| v35_6248(void) = Call[String] : func:r35_6247, this:r35_6245 +# 35| mu35_6249(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6245 +# 35| r35_6251(glval) = VariableAddress[x446] : +# 35| r35_6252(glval) = FunctionAddress[~String] : +# 35| v35_6253(void) = Call[~String] : func:r35_6252, this:r35_6251 +# 35| mu35_6254(unknown) = ^CallSideEffect : ~m? +# 35| v35_6255(void) = ^IndirectReadSideEffect[-1] : &:r35_6251, ~m? +# 35| mu35_6256(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6251 +# 35| r35_6257(bool) = Constant[0] : +# 35| v35_6258(void) = ConditionalBranch : r35_6257 #-----| False -> Block 448 #-----| True (back edge) -> Block 447 -# 1360| Block 448 -# 1360| r1360_1(glval) = VariableAddress[x447] : -# 1360| mu1360_2(String) = Uninitialized[x447] : &:r1360_1 -# 1360| r1360_3(glval) = FunctionAddress[String] : -# 1360| v1360_4(void) = Call[String] : func:r1360_3, this:r1360_1 -# 1360| mu1360_5(unknown) = ^CallSideEffect : ~m? -# 1360| mu1360_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1360_1 -# 1361| r1361_1(glval) = VariableAddress[x447] : -# 1361| r1361_2(glval) = FunctionAddress[~String] : -# 1361| v1361_3(void) = Call[~String] : func:r1361_2, this:r1361_1 -# 1361| mu1361_4(unknown) = ^CallSideEffect : ~m? -# 1361| v1361_5(void) = ^IndirectReadSideEffect[-1] : &:r1361_1, ~m? -# 1361| mu1361_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1361_1 -# 1361| r1361_7(bool) = Constant[0] : -# 1361| v1361_8(void) = ConditionalBranch : r1361_7 +# 35| Block 448 +# 35| r35_6259(glval) = VariableAddress[x447] : +# 35| mu35_6260(String) = Uninitialized[x447] : &:r35_6259 +# 35| r35_6261(glval) = FunctionAddress[String] : +# 35| v35_6262(void) = Call[String] : func:r35_6261, this:r35_6259 +# 35| mu35_6263(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6259 +# 35| r35_6265(glval) = VariableAddress[x447] : +# 35| r35_6266(glval) = FunctionAddress[~String] : +# 35| v35_6267(void) = Call[~String] : func:r35_6266, this:r35_6265 +# 35| mu35_6268(unknown) = ^CallSideEffect : ~m? +# 35| v35_6269(void) = ^IndirectReadSideEffect[-1] : &:r35_6265, ~m? +# 35| mu35_6270(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6265 +# 35| r35_6271(bool) = Constant[0] : +# 35| v35_6272(void) = ConditionalBranch : r35_6271 #-----| False -> Block 449 #-----| True (back edge) -> Block 448 -# 1363| Block 449 -# 1363| r1363_1(glval) = VariableAddress[x448] : -# 1363| mu1363_2(String) = Uninitialized[x448] : &:r1363_1 -# 1363| r1363_3(glval) = FunctionAddress[String] : -# 1363| v1363_4(void) = Call[String] : func:r1363_3, this:r1363_1 -# 1363| mu1363_5(unknown) = ^CallSideEffect : ~m? -# 1363| mu1363_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1363_1 -# 1364| r1364_1(glval) = VariableAddress[x448] : -# 1364| r1364_2(glval) = FunctionAddress[~String] : -# 1364| v1364_3(void) = Call[~String] : func:r1364_2, this:r1364_1 -# 1364| mu1364_4(unknown) = ^CallSideEffect : ~m? -# 1364| v1364_5(void) = ^IndirectReadSideEffect[-1] : &:r1364_1, ~m? -# 1364| mu1364_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1364_1 -# 1364| r1364_7(bool) = Constant[0] : -# 1364| v1364_8(void) = ConditionalBranch : r1364_7 +# 35| Block 449 +# 35| r35_6273(glval) = VariableAddress[x448] : +# 35| mu35_6274(String) = Uninitialized[x448] : &:r35_6273 +# 35| r35_6275(glval) = FunctionAddress[String] : +# 35| v35_6276(void) = Call[String] : func:r35_6275, this:r35_6273 +# 35| mu35_6277(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6273 +# 35| r35_6279(glval) = VariableAddress[x448] : +# 35| r35_6280(glval) = FunctionAddress[~String] : +# 35| v35_6281(void) = Call[~String] : func:r35_6280, this:r35_6279 +# 35| mu35_6282(unknown) = ^CallSideEffect : ~m? +# 35| v35_6283(void) = ^IndirectReadSideEffect[-1] : &:r35_6279, ~m? +# 35| mu35_6284(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6279 +# 35| r35_6285(bool) = Constant[0] : +# 35| v35_6286(void) = ConditionalBranch : r35_6285 #-----| False -> Block 450 #-----| True (back edge) -> Block 449 -# 1366| Block 450 -# 1366| r1366_1(glval) = VariableAddress[x449] : -# 1366| mu1366_2(String) = Uninitialized[x449] : &:r1366_1 -# 1366| r1366_3(glval) = FunctionAddress[String] : -# 1366| v1366_4(void) = Call[String] : func:r1366_3, this:r1366_1 -# 1366| mu1366_5(unknown) = ^CallSideEffect : ~m? -# 1366| mu1366_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1366_1 -# 1367| r1367_1(glval) = VariableAddress[x449] : -# 1367| r1367_2(glval) = FunctionAddress[~String] : -# 1367| v1367_3(void) = Call[~String] : func:r1367_2, this:r1367_1 -# 1367| mu1367_4(unknown) = ^CallSideEffect : ~m? -# 1367| v1367_5(void) = ^IndirectReadSideEffect[-1] : &:r1367_1, ~m? -# 1367| mu1367_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1367_1 -# 1367| r1367_7(bool) = Constant[0] : -# 1367| v1367_8(void) = ConditionalBranch : r1367_7 +# 35| Block 450 +# 35| r35_6287(glval) = VariableAddress[x449] : +# 35| mu35_6288(String) = Uninitialized[x449] : &:r35_6287 +# 35| r35_6289(glval) = FunctionAddress[String] : +# 35| v35_6290(void) = Call[String] : func:r35_6289, this:r35_6287 +# 35| mu35_6291(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6287 +# 35| r35_6293(glval) = VariableAddress[x449] : +# 35| r35_6294(glval) = FunctionAddress[~String] : +# 35| v35_6295(void) = Call[~String] : func:r35_6294, this:r35_6293 +# 35| mu35_6296(unknown) = ^CallSideEffect : ~m? +# 35| v35_6297(void) = ^IndirectReadSideEffect[-1] : &:r35_6293, ~m? +# 35| mu35_6298(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6293 +# 35| r35_6299(bool) = Constant[0] : +# 35| v35_6300(void) = ConditionalBranch : r35_6299 #-----| False -> Block 451 #-----| True (back edge) -> Block 450 -# 1369| Block 451 -# 1369| r1369_1(glval) = VariableAddress[x450] : -# 1369| mu1369_2(String) = Uninitialized[x450] : &:r1369_1 -# 1369| r1369_3(glval) = FunctionAddress[String] : -# 1369| v1369_4(void) = Call[String] : func:r1369_3, this:r1369_1 -# 1369| mu1369_5(unknown) = ^CallSideEffect : ~m? -# 1369| mu1369_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1369_1 -# 1370| r1370_1(glval) = VariableAddress[x450] : -# 1370| r1370_2(glval) = FunctionAddress[~String] : -# 1370| v1370_3(void) = Call[~String] : func:r1370_2, this:r1370_1 -# 1370| mu1370_4(unknown) = ^CallSideEffect : ~m? -# 1370| v1370_5(void) = ^IndirectReadSideEffect[-1] : &:r1370_1, ~m? -# 1370| mu1370_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1370_1 -# 1370| r1370_7(bool) = Constant[0] : -# 1370| v1370_8(void) = ConditionalBranch : r1370_7 +# 35| Block 451 +# 35| r35_6301(glval) = VariableAddress[x450] : +# 35| mu35_6302(String) = Uninitialized[x450] : &:r35_6301 +# 35| r35_6303(glval) = FunctionAddress[String] : +# 35| v35_6304(void) = Call[String] : func:r35_6303, this:r35_6301 +# 35| mu35_6305(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6301 +# 35| r35_6307(glval) = VariableAddress[x450] : +# 35| r35_6308(glval) = FunctionAddress[~String] : +# 35| v35_6309(void) = Call[~String] : func:r35_6308, this:r35_6307 +# 35| mu35_6310(unknown) = ^CallSideEffect : ~m? +# 35| v35_6311(void) = ^IndirectReadSideEffect[-1] : &:r35_6307, ~m? +# 35| mu35_6312(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6307 +# 35| r35_6313(bool) = Constant[0] : +# 35| v35_6314(void) = ConditionalBranch : r35_6313 #-----| False -> Block 452 #-----| True (back edge) -> Block 451 -# 1372| Block 452 -# 1372| r1372_1(glval) = VariableAddress[x451] : -# 1372| mu1372_2(String) = Uninitialized[x451] : &:r1372_1 -# 1372| r1372_3(glval) = FunctionAddress[String] : -# 1372| v1372_4(void) = Call[String] : func:r1372_3, this:r1372_1 -# 1372| mu1372_5(unknown) = ^CallSideEffect : ~m? -# 1372| mu1372_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1372_1 -# 1373| r1373_1(glval) = VariableAddress[x451] : -# 1373| r1373_2(glval) = FunctionAddress[~String] : -# 1373| v1373_3(void) = Call[~String] : func:r1373_2, this:r1373_1 -# 1373| mu1373_4(unknown) = ^CallSideEffect : ~m? -# 1373| v1373_5(void) = ^IndirectReadSideEffect[-1] : &:r1373_1, ~m? -# 1373| mu1373_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1373_1 -# 1373| r1373_7(bool) = Constant[0] : -# 1373| v1373_8(void) = ConditionalBranch : r1373_7 +# 35| Block 452 +# 35| r35_6315(glval) = VariableAddress[x451] : +# 35| mu35_6316(String) = Uninitialized[x451] : &:r35_6315 +# 35| r35_6317(glval) = FunctionAddress[String] : +# 35| v35_6318(void) = Call[String] : func:r35_6317, this:r35_6315 +# 35| mu35_6319(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6315 +# 35| r35_6321(glval) = VariableAddress[x451] : +# 35| r35_6322(glval) = FunctionAddress[~String] : +# 35| v35_6323(void) = Call[~String] : func:r35_6322, this:r35_6321 +# 35| mu35_6324(unknown) = ^CallSideEffect : ~m? +# 35| v35_6325(void) = ^IndirectReadSideEffect[-1] : &:r35_6321, ~m? +# 35| mu35_6326(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6321 +# 35| r35_6327(bool) = Constant[0] : +# 35| v35_6328(void) = ConditionalBranch : r35_6327 #-----| False -> Block 453 #-----| True (back edge) -> Block 452 -# 1375| Block 453 -# 1375| r1375_1(glval) = VariableAddress[x452] : -# 1375| mu1375_2(String) = Uninitialized[x452] : &:r1375_1 -# 1375| r1375_3(glval) = FunctionAddress[String] : -# 1375| v1375_4(void) = Call[String] : func:r1375_3, this:r1375_1 -# 1375| mu1375_5(unknown) = ^CallSideEffect : ~m? -# 1375| mu1375_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1375_1 -# 1376| r1376_1(glval) = VariableAddress[x452] : -# 1376| r1376_2(glval) = FunctionAddress[~String] : -# 1376| v1376_3(void) = Call[~String] : func:r1376_2, this:r1376_1 -# 1376| mu1376_4(unknown) = ^CallSideEffect : ~m? -# 1376| v1376_5(void) = ^IndirectReadSideEffect[-1] : &:r1376_1, ~m? -# 1376| mu1376_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 -# 1376| r1376_7(bool) = Constant[0] : -# 1376| v1376_8(void) = ConditionalBranch : r1376_7 +# 35| Block 453 +# 35| r35_6329(glval) = VariableAddress[x452] : +# 35| mu35_6330(String) = Uninitialized[x452] : &:r35_6329 +# 35| r35_6331(glval) = FunctionAddress[String] : +# 35| v35_6332(void) = Call[String] : func:r35_6331, this:r35_6329 +# 35| mu35_6333(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6329 +# 35| r35_6335(glval) = VariableAddress[x452] : +# 35| r35_6336(glval) = FunctionAddress[~String] : +# 35| v35_6337(void) = Call[~String] : func:r35_6336, this:r35_6335 +# 35| mu35_6338(unknown) = ^CallSideEffect : ~m? +# 35| v35_6339(void) = ^IndirectReadSideEffect[-1] : &:r35_6335, ~m? +# 35| mu35_6340(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6335 +# 35| r35_6341(bool) = Constant[0] : +# 35| v35_6342(void) = ConditionalBranch : r35_6341 #-----| False -> Block 454 #-----| True (back edge) -> Block 453 -# 1378| Block 454 -# 1378| r1378_1(glval) = VariableAddress[x453] : -# 1378| mu1378_2(String) = Uninitialized[x453] : &:r1378_1 -# 1378| r1378_3(glval) = FunctionAddress[String] : -# 1378| v1378_4(void) = Call[String] : func:r1378_3, this:r1378_1 -# 1378| mu1378_5(unknown) = ^CallSideEffect : ~m? -# 1378| mu1378_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1378_1 -# 1379| r1379_1(glval) = VariableAddress[x453] : -# 1379| r1379_2(glval) = FunctionAddress[~String] : -# 1379| v1379_3(void) = Call[~String] : func:r1379_2, this:r1379_1 -# 1379| mu1379_4(unknown) = ^CallSideEffect : ~m? -# 1379| v1379_5(void) = ^IndirectReadSideEffect[-1] : &:r1379_1, ~m? -# 1379| mu1379_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1379_1 -# 1379| r1379_7(bool) = Constant[0] : -# 1379| v1379_8(void) = ConditionalBranch : r1379_7 +# 35| Block 454 +# 35| r35_6343(glval) = VariableAddress[x453] : +# 35| mu35_6344(String) = Uninitialized[x453] : &:r35_6343 +# 35| r35_6345(glval) = FunctionAddress[String] : +# 35| v35_6346(void) = Call[String] : func:r35_6345, this:r35_6343 +# 35| mu35_6347(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6343 +# 35| r35_6349(glval) = VariableAddress[x453] : +# 35| r35_6350(glval) = FunctionAddress[~String] : +# 35| v35_6351(void) = Call[~String] : func:r35_6350, this:r35_6349 +# 35| mu35_6352(unknown) = ^CallSideEffect : ~m? +# 35| v35_6353(void) = ^IndirectReadSideEffect[-1] : &:r35_6349, ~m? +# 35| mu35_6354(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6349 +# 35| r35_6355(bool) = Constant[0] : +# 35| v35_6356(void) = ConditionalBranch : r35_6355 #-----| False -> Block 455 #-----| True (back edge) -> Block 454 -# 1381| Block 455 -# 1381| r1381_1(glval) = VariableAddress[x454] : -# 1381| mu1381_2(String) = Uninitialized[x454] : &:r1381_1 -# 1381| r1381_3(glval) = FunctionAddress[String] : -# 1381| v1381_4(void) = Call[String] : func:r1381_3, this:r1381_1 -# 1381| mu1381_5(unknown) = ^CallSideEffect : ~m? -# 1381| mu1381_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1381_1 -# 1382| r1382_1(glval) = VariableAddress[x454] : -# 1382| r1382_2(glval) = FunctionAddress[~String] : -# 1382| v1382_3(void) = Call[~String] : func:r1382_2, this:r1382_1 -# 1382| mu1382_4(unknown) = ^CallSideEffect : ~m? -# 1382| v1382_5(void) = ^IndirectReadSideEffect[-1] : &:r1382_1, ~m? -# 1382| mu1382_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1382_1 -# 1382| r1382_7(bool) = Constant[0] : -# 1382| v1382_8(void) = ConditionalBranch : r1382_7 +# 35| Block 455 +# 35| r35_6357(glval) = VariableAddress[x454] : +# 35| mu35_6358(String) = Uninitialized[x454] : &:r35_6357 +# 35| r35_6359(glval) = FunctionAddress[String] : +# 35| v35_6360(void) = Call[String] : func:r35_6359, this:r35_6357 +# 35| mu35_6361(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6362(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6357 +# 35| r35_6363(glval) = VariableAddress[x454] : +# 35| r35_6364(glval) = FunctionAddress[~String] : +# 35| v35_6365(void) = Call[~String] : func:r35_6364, this:r35_6363 +# 35| mu35_6366(unknown) = ^CallSideEffect : ~m? +# 35| v35_6367(void) = ^IndirectReadSideEffect[-1] : &:r35_6363, ~m? +# 35| mu35_6368(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6363 +# 35| r35_6369(bool) = Constant[0] : +# 35| v35_6370(void) = ConditionalBranch : r35_6369 #-----| False -> Block 456 #-----| True (back edge) -> Block 455 -# 1384| Block 456 -# 1384| r1384_1(glval) = VariableAddress[x455] : -# 1384| mu1384_2(String) = Uninitialized[x455] : &:r1384_1 -# 1384| r1384_3(glval) = FunctionAddress[String] : -# 1384| v1384_4(void) = Call[String] : func:r1384_3, this:r1384_1 -# 1384| mu1384_5(unknown) = ^CallSideEffect : ~m? -# 1384| mu1384_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1384_1 -# 1385| r1385_1(glval) = VariableAddress[x455] : -# 1385| r1385_2(glval) = FunctionAddress[~String] : -# 1385| v1385_3(void) = Call[~String] : func:r1385_2, this:r1385_1 -# 1385| mu1385_4(unknown) = ^CallSideEffect : ~m? -# 1385| v1385_5(void) = ^IndirectReadSideEffect[-1] : &:r1385_1, ~m? -# 1385| mu1385_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1385_1 -# 1385| r1385_7(bool) = Constant[0] : -# 1385| v1385_8(void) = ConditionalBranch : r1385_7 +# 35| Block 456 +# 35| r35_6371(glval) = VariableAddress[x455] : +# 35| mu35_6372(String) = Uninitialized[x455] : &:r35_6371 +# 35| r35_6373(glval) = FunctionAddress[String] : +# 35| v35_6374(void) = Call[String] : func:r35_6373, this:r35_6371 +# 35| mu35_6375(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6376(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6371 +# 35| r35_6377(glval) = VariableAddress[x455] : +# 35| r35_6378(glval) = FunctionAddress[~String] : +# 35| v35_6379(void) = Call[~String] : func:r35_6378, this:r35_6377 +# 35| mu35_6380(unknown) = ^CallSideEffect : ~m? +# 35| v35_6381(void) = ^IndirectReadSideEffect[-1] : &:r35_6377, ~m? +# 35| mu35_6382(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6377 +# 35| r35_6383(bool) = Constant[0] : +# 35| v35_6384(void) = ConditionalBranch : r35_6383 #-----| False -> Block 457 #-----| True (back edge) -> Block 456 -# 1387| Block 457 -# 1387| r1387_1(glval) = VariableAddress[x456] : -# 1387| mu1387_2(String) = Uninitialized[x456] : &:r1387_1 -# 1387| r1387_3(glval) = FunctionAddress[String] : -# 1387| v1387_4(void) = Call[String] : func:r1387_3, this:r1387_1 -# 1387| mu1387_5(unknown) = ^CallSideEffect : ~m? -# 1387| mu1387_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1387_1 -# 1388| r1388_1(glval) = VariableAddress[x456] : -# 1388| r1388_2(glval) = FunctionAddress[~String] : -# 1388| v1388_3(void) = Call[~String] : func:r1388_2, this:r1388_1 -# 1388| mu1388_4(unknown) = ^CallSideEffect : ~m? -# 1388| v1388_5(void) = ^IndirectReadSideEffect[-1] : &:r1388_1, ~m? -# 1388| mu1388_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1388_1 -# 1388| r1388_7(bool) = Constant[0] : -# 1388| v1388_8(void) = ConditionalBranch : r1388_7 +# 35| Block 457 +# 35| r35_6385(glval) = VariableAddress[x456] : +# 35| mu35_6386(String) = Uninitialized[x456] : &:r35_6385 +# 35| r35_6387(glval) = FunctionAddress[String] : +# 35| v35_6388(void) = Call[String] : func:r35_6387, this:r35_6385 +# 35| mu35_6389(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6390(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6385 +# 35| r35_6391(glval) = VariableAddress[x456] : +# 35| r35_6392(glval) = FunctionAddress[~String] : +# 35| v35_6393(void) = Call[~String] : func:r35_6392, this:r35_6391 +# 35| mu35_6394(unknown) = ^CallSideEffect : ~m? +# 35| v35_6395(void) = ^IndirectReadSideEffect[-1] : &:r35_6391, ~m? +# 35| mu35_6396(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6391 +# 35| r35_6397(bool) = Constant[0] : +# 35| v35_6398(void) = ConditionalBranch : r35_6397 #-----| False -> Block 458 #-----| True (back edge) -> Block 457 -# 1390| Block 458 -# 1390| r1390_1(glval) = VariableAddress[x457] : -# 1390| mu1390_2(String) = Uninitialized[x457] : &:r1390_1 -# 1390| r1390_3(glval) = FunctionAddress[String] : -# 1390| v1390_4(void) = Call[String] : func:r1390_3, this:r1390_1 -# 1390| mu1390_5(unknown) = ^CallSideEffect : ~m? -# 1390| mu1390_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1390_1 -# 1391| r1391_1(glval) = VariableAddress[x457] : -# 1391| r1391_2(glval) = FunctionAddress[~String] : -# 1391| v1391_3(void) = Call[~String] : func:r1391_2, this:r1391_1 -# 1391| mu1391_4(unknown) = ^CallSideEffect : ~m? -# 1391| v1391_5(void) = ^IndirectReadSideEffect[-1] : &:r1391_1, ~m? -# 1391| mu1391_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1391_1 -# 1391| r1391_7(bool) = Constant[0] : -# 1391| v1391_8(void) = ConditionalBranch : r1391_7 +# 35| Block 458 +# 35| r35_6399(glval) = VariableAddress[x457] : +# 35| mu35_6400(String) = Uninitialized[x457] : &:r35_6399 +# 35| r35_6401(glval) = FunctionAddress[String] : +# 35| v35_6402(void) = Call[String] : func:r35_6401, this:r35_6399 +# 35| mu35_6403(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6404(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6399 +# 35| r35_6405(glval) = VariableAddress[x457] : +# 35| r35_6406(glval) = FunctionAddress[~String] : +# 35| v35_6407(void) = Call[~String] : func:r35_6406, this:r35_6405 +# 35| mu35_6408(unknown) = ^CallSideEffect : ~m? +# 35| v35_6409(void) = ^IndirectReadSideEffect[-1] : &:r35_6405, ~m? +# 35| mu35_6410(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6405 +# 35| r35_6411(bool) = Constant[0] : +# 35| v35_6412(void) = ConditionalBranch : r35_6411 #-----| False -> Block 459 #-----| True (back edge) -> Block 458 -# 1393| Block 459 -# 1393| r1393_1(glval) = VariableAddress[x458] : -# 1393| mu1393_2(String) = Uninitialized[x458] : &:r1393_1 -# 1393| r1393_3(glval) = FunctionAddress[String] : -# 1393| v1393_4(void) = Call[String] : func:r1393_3, this:r1393_1 -# 1393| mu1393_5(unknown) = ^CallSideEffect : ~m? -# 1393| mu1393_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1393_1 -# 1394| r1394_1(glval) = VariableAddress[x458] : -# 1394| r1394_2(glval) = FunctionAddress[~String] : -# 1394| v1394_3(void) = Call[~String] : func:r1394_2, this:r1394_1 -# 1394| mu1394_4(unknown) = ^CallSideEffect : ~m? -# 1394| v1394_5(void) = ^IndirectReadSideEffect[-1] : &:r1394_1, ~m? -# 1394| mu1394_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1394_1 -# 1394| r1394_7(bool) = Constant[0] : -# 1394| v1394_8(void) = ConditionalBranch : r1394_7 +# 35| Block 459 +# 35| r35_6413(glval) = VariableAddress[x458] : +# 35| mu35_6414(String) = Uninitialized[x458] : &:r35_6413 +# 35| r35_6415(glval) = FunctionAddress[String] : +# 35| v35_6416(void) = Call[String] : func:r35_6415, this:r35_6413 +# 35| mu35_6417(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6418(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6413 +# 35| r35_6419(glval) = VariableAddress[x458] : +# 35| r35_6420(glval) = FunctionAddress[~String] : +# 35| v35_6421(void) = Call[~String] : func:r35_6420, this:r35_6419 +# 35| mu35_6422(unknown) = ^CallSideEffect : ~m? +# 35| v35_6423(void) = ^IndirectReadSideEffect[-1] : &:r35_6419, ~m? +# 35| mu35_6424(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6419 +# 35| r35_6425(bool) = Constant[0] : +# 35| v35_6426(void) = ConditionalBranch : r35_6425 #-----| False -> Block 460 #-----| True (back edge) -> Block 459 -# 1396| Block 460 -# 1396| r1396_1(glval) = VariableAddress[x459] : -# 1396| mu1396_2(String) = Uninitialized[x459] : &:r1396_1 -# 1396| r1396_3(glval) = FunctionAddress[String] : -# 1396| v1396_4(void) = Call[String] : func:r1396_3, this:r1396_1 -# 1396| mu1396_5(unknown) = ^CallSideEffect : ~m? -# 1396| mu1396_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1396_1 -# 1397| r1397_1(glval) = VariableAddress[x459] : -# 1397| r1397_2(glval) = FunctionAddress[~String] : -# 1397| v1397_3(void) = Call[~String] : func:r1397_2, this:r1397_1 -# 1397| mu1397_4(unknown) = ^CallSideEffect : ~m? -# 1397| v1397_5(void) = ^IndirectReadSideEffect[-1] : &:r1397_1, ~m? -# 1397| mu1397_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1397_1 -# 1397| r1397_7(bool) = Constant[0] : -# 1397| v1397_8(void) = ConditionalBranch : r1397_7 +# 35| Block 460 +# 35| r35_6427(glval) = VariableAddress[x459] : +# 35| mu35_6428(String) = Uninitialized[x459] : &:r35_6427 +# 35| r35_6429(glval) = FunctionAddress[String] : +# 35| v35_6430(void) = Call[String] : func:r35_6429, this:r35_6427 +# 35| mu35_6431(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6432(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6427 +# 35| r35_6433(glval) = VariableAddress[x459] : +# 35| r35_6434(glval) = FunctionAddress[~String] : +# 35| v35_6435(void) = Call[~String] : func:r35_6434, this:r35_6433 +# 35| mu35_6436(unknown) = ^CallSideEffect : ~m? +# 35| v35_6437(void) = ^IndirectReadSideEffect[-1] : &:r35_6433, ~m? +# 35| mu35_6438(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6433 +# 35| r35_6439(bool) = Constant[0] : +# 35| v35_6440(void) = ConditionalBranch : r35_6439 #-----| False -> Block 461 #-----| True (back edge) -> Block 460 -# 1399| Block 461 -# 1399| r1399_1(glval) = VariableAddress[x460] : -# 1399| mu1399_2(String) = Uninitialized[x460] : &:r1399_1 -# 1399| r1399_3(glval) = FunctionAddress[String] : -# 1399| v1399_4(void) = Call[String] : func:r1399_3, this:r1399_1 -# 1399| mu1399_5(unknown) = ^CallSideEffect : ~m? -# 1399| mu1399_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 -# 1400| r1400_1(glval) = VariableAddress[x460] : -# 1400| r1400_2(glval) = FunctionAddress[~String] : -# 1400| v1400_3(void) = Call[~String] : func:r1400_2, this:r1400_1 -# 1400| mu1400_4(unknown) = ^CallSideEffect : ~m? -# 1400| v1400_5(void) = ^IndirectReadSideEffect[-1] : &:r1400_1, ~m? -# 1400| mu1400_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1400_1 -# 1400| r1400_7(bool) = Constant[0] : -# 1400| v1400_8(void) = ConditionalBranch : r1400_7 +# 35| Block 461 +# 35| r35_6441(glval) = VariableAddress[x460] : +# 35| mu35_6442(String) = Uninitialized[x460] : &:r35_6441 +# 35| r35_6443(glval) = FunctionAddress[String] : +# 35| v35_6444(void) = Call[String] : func:r35_6443, this:r35_6441 +# 35| mu35_6445(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6446(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6441 +# 35| r35_6447(glval) = VariableAddress[x460] : +# 35| r35_6448(glval) = FunctionAddress[~String] : +# 35| v35_6449(void) = Call[~String] : func:r35_6448, this:r35_6447 +# 35| mu35_6450(unknown) = ^CallSideEffect : ~m? +# 35| v35_6451(void) = ^IndirectReadSideEffect[-1] : &:r35_6447, ~m? +# 35| mu35_6452(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6447 +# 35| r35_6453(bool) = Constant[0] : +# 35| v35_6454(void) = ConditionalBranch : r35_6453 #-----| False -> Block 462 #-----| True (back edge) -> Block 461 -# 1402| Block 462 -# 1402| r1402_1(glval) = VariableAddress[x461] : -# 1402| mu1402_2(String) = Uninitialized[x461] : &:r1402_1 -# 1402| r1402_3(glval) = FunctionAddress[String] : -# 1402| v1402_4(void) = Call[String] : func:r1402_3, this:r1402_1 -# 1402| mu1402_5(unknown) = ^CallSideEffect : ~m? -# 1402| mu1402_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1402_1 -# 1403| r1403_1(glval) = VariableAddress[x461] : -# 1403| r1403_2(glval) = FunctionAddress[~String] : -# 1403| v1403_3(void) = Call[~String] : func:r1403_2, this:r1403_1 -# 1403| mu1403_4(unknown) = ^CallSideEffect : ~m? -# 1403| v1403_5(void) = ^IndirectReadSideEffect[-1] : &:r1403_1, ~m? -# 1403| mu1403_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1403_1 -# 1403| r1403_7(bool) = Constant[0] : -# 1403| v1403_8(void) = ConditionalBranch : r1403_7 +# 35| Block 462 +# 35| r35_6455(glval) = VariableAddress[x461] : +# 35| mu35_6456(String) = Uninitialized[x461] : &:r35_6455 +# 35| r35_6457(glval) = FunctionAddress[String] : +# 35| v35_6458(void) = Call[String] : func:r35_6457, this:r35_6455 +# 35| mu35_6459(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6460(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6455 +# 35| r35_6461(glval) = VariableAddress[x461] : +# 35| r35_6462(glval) = FunctionAddress[~String] : +# 35| v35_6463(void) = Call[~String] : func:r35_6462, this:r35_6461 +# 35| mu35_6464(unknown) = ^CallSideEffect : ~m? +# 35| v35_6465(void) = ^IndirectReadSideEffect[-1] : &:r35_6461, ~m? +# 35| mu35_6466(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6461 +# 35| r35_6467(bool) = Constant[0] : +# 35| v35_6468(void) = ConditionalBranch : r35_6467 #-----| False -> Block 463 #-----| True (back edge) -> Block 462 -# 1405| Block 463 -# 1405| r1405_1(glval) = VariableAddress[x462] : -# 1405| mu1405_2(String) = Uninitialized[x462] : &:r1405_1 -# 1405| r1405_3(glval) = FunctionAddress[String] : -# 1405| v1405_4(void) = Call[String] : func:r1405_3, this:r1405_1 -# 1405| mu1405_5(unknown) = ^CallSideEffect : ~m? -# 1405| mu1405_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1405_1 -# 1406| r1406_1(glval) = VariableAddress[x462] : -# 1406| r1406_2(glval) = FunctionAddress[~String] : -# 1406| v1406_3(void) = Call[~String] : func:r1406_2, this:r1406_1 -# 1406| mu1406_4(unknown) = ^CallSideEffect : ~m? -# 1406| v1406_5(void) = ^IndirectReadSideEffect[-1] : &:r1406_1, ~m? -# 1406| mu1406_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1406_1 -# 1406| r1406_7(bool) = Constant[0] : -# 1406| v1406_8(void) = ConditionalBranch : r1406_7 +# 35| Block 463 +# 35| r35_6469(glval) = VariableAddress[x462] : +# 35| mu35_6470(String) = Uninitialized[x462] : &:r35_6469 +# 35| r35_6471(glval) = FunctionAddress[String] : +# 35| v35_6472(void) = Call[String] : func:r35_6471, this:r35_6469 +# 35| mu35_6473(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6474(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6469 +# 35| r35_6475(glval) = VariableAddress[x462] : +# 35| r35_6476(glval) = FunctionAddress[~String] : +# 35| v35_6477(void) = Call[~String] : func:r35_6476, this:r35_6475 +# 35| mu35_6478(unknown) = ^CallSideEffect : ~m? +# 35| v35_6479(void) = ^IndirectReadSideEffect[-1] : &:r35_6475, ~m? +# 35| mu35_6480(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6475 +# 35| r35_6481(bool) = Constant[0] : +# 35| v35_6482(void) = ConditionalBranch : r35_6481 #-----| False -> Block 464 #-----| True (back edge) -> Block 463 -# 1408| Block 464 -# 1408| r1408_1(glval) = VariableAddress[x463] : -# 1408| mu1408_2(String) = Uninitialized[x463] : &:r1408_1 -# 1408| r1408_3(glval) = FunctionAddress[String] : -# 1408| v1408_4(void) = Call[String] : func:r1408_3, this:r1408_1 -# 1408| mu1408_5(unknown) = ^CallSideEffect : ~m? -# 1408| mu1408_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1408_1 -# 1409| r1409_1(glval) = VariableAddress[x463] : -# 1409| r1409_2(glval) = FunctionAddress[~String] : -# 1409| v1409_3(void) = Call[~String] : func:r1409_2, this:r1409_1 -# 1409| mu1409_4(unknown) = ^CallSideEffect : ~m? -# 1409| v1409_5(void) = ^IndirectReadSideEffect[-1] : &:r1409_1, ~m? -# 1409| mu1409_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1409_1 -# 1409| r1409_7(bool) = Constant[0] : -# 1409| v1409_8(void) = ConditionalBranch : r1409_7 +# 35| Block 464 +# 35| r35_6483(glval) = VariableAddress[x463] : +# 35| mu35_6484(String) = Uninitialized[x463] : &:r35_6483 +# 35| r35_6485(glval) = FunctionAddress[String] : +# 35| v35_6486(void) = Call[String] : func:r35_6485, this:r35_6483 +# 35| mu35_6487(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6488(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6483 +# 35| r35_6489(glval) = VariableAddress[x463] : +# 35| r35_6490(glval) = FunctionAddress[~String] : +# 35| v35_6491(void) = Call[~String] : func:r35_6490, this:r35_6489 +# 35| mu35_6492(unknown) = ^CallSideEffect : ~m? +# 35| v35_6493(void) = ^IndirectReadSideEffect[-1] : &:r35_6489, ~m? +# 35| mu35_6494(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6489 +# 35| r35_6495(bool) = Constant[0] : +# 35| v35_6496(void) = ConditionalBranch : r35_6495 #-----| False -> Block 465 #-----| True (back edge) -> Block 464 -# 1411| Block 465 -# 1411| r1411_1(glval) = VariableAddress[x464] : -# 1411| mu1411_2(String) = Uninitialized[x464] : &:r1411_1 -# 1411| r1411_3(glval) = FunctionAddress[String] : -# 1411| v1411_4(void) = Call[String] : func:r1411_3, this:r1411_1 -# 1411| mu1411_5(unknown) = ^CallSideEffect : ~m? -# 1411| mu1411_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1411_1 -# 1412| r1412_1(glval) = VariableAddress[x464] : -# 1412| r1412_2(glval) = FunctionAddress[~String] : -# 1412| v1412_3(void) = Call[~String] : func:r1412_2, this:r1412_1 -# 1412| mu1412_4(unknown) = ^CallSideEffect : ~m? -# 1412| v1412_5(void) = ^IndirectReadSideEffect[-1] : &:r1412_1, ~m? -# 1412| mu1412_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1412_1 -# 1412| r1412_7(bool) = Constant[0] : -# 1412| v1412_8(void) = ConditionalBranch : r1412_7 +# 35| Block 465 +# 35| r35_6497(glval) = VariableAddress[x464] : +# 35| mu35_6498(String) = Uninitialized[x464] : &:r35_6497 +# 35| r35_6499(glval) = FunctionAddress[String] : +# 35| v35_6500(void) = Call[String] : func:r35_6499, this:r35_6497 +# 35| mu35_6501(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6502(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6497 +# 35| r35_6503(glval) = VariableAddress[x464] : +# 35| r35_6504(glval) = FunctionAddress[~String] : +# 35| v35_6505(void) = Call[~String] : func:r35_6504, this:r35_6503 +# 35| mu35_6506(unknown) = ^CallSideEffect : ~m? +# 35| v35_6507(void) = ^IndirectReadSideEffect[-1] : &:r35_6503, ~m? +# 35| mu35_6508(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6503 +# 35| r35_6509(bool) = Constant[0] : +# 35| v35_6510(void) = ConditionalBranch : r35_6509 #-----| False -> Block 466 #-----| True (back edge) -> Block 465 -# 1414| Block 466 -# 1414| r1414_1(glval) = VariableAddress[x465] : -# 1414| mu1414_2(String) = Uninitialized[x465] : &:r1414_1 -# 1414| r1414_3(glval) = FunctionAddress[String] : -# 1414| v1414_4(void) = Call[String] : func:r1414_3, this:r1414_1 -# 1414| mu1414_5(unknown) = ^CallSideEffect : ~m? -# 1414| mu1414_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1414_1 -# 1415| r1415_1(glval) = VariableAddress[x465] : -# 1415| r1415_2(glval) = FunctionAddress[~String] : -# 1415| v1415_3(void) = Call[~String] : func:r1415_2, this:r1415_1 -# 1415| mu1415_4(unknown) = ^CallSideEffect : ~m? -# 1415| v1415_5(void) = ^IndirectReadSideEffect[-1] : &:r1415_1, ~m? -# 1415| mu1415_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1415_1 -# 1415| r1415_7(bool) = Constant[0] : -# 1415| v1415_8(void) = ConditionalBranch : r1415_7 +# 35| Block 466 +# 35| r35_6511(glval) = VariableAddress[x465] : +# 35| mu35_6512(String) = Uninitialized[x465] : &:r35_6511 +# 35| r35_6513(glval) = FunctionAddress[String] : +# 35| v35_6514(void) = Call[String] : func:r35_6513, this:r35_6511 +# 35| mu35_6515(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6516(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6511 +# 35| r35_6517(glval) = VariableAddress[x465] : +# 35| r35_6518(glval) = FunctionAddress[~String] : +# 35| v35_6519(void) = Call[~String] : func:r35_6518, this:r35_6517 +# 35| mu35_6520(unknown) = ^CallSideEffect : ~m? +# 35| v35_6521(void) = ^IndirectReadSideEffect[-1] : &:r35_6517, ~m? +# 35| mu35_6522(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6517 +# 35| r35_6523(bool) = Constant[0] : +# 35| v35_6524(void) = ConditionalBranch : r35_6523 #-----| False -> Block 467 #-----| True (back edge) -> Block 466 -# 1417| Block 467 -# 1417| r1417_1(glval) = VariableAddress[x466] : -# 1417| mu1417_2(String) = Uninitialized[x466] : &:r1417_1 -# 1417| r1417_3(glval) = FunctionAddress[String] : -# 1417| v1417_4(void) = Call[String] : func:r1417_3, this:r1417_1 -# 1417| mu1417_5(unknown) = ^CallSideEffect : ~m? -# 1417| mu1417_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1417_1 -# 1418| r1418_1(glval) = VariableAddress[x466] : -# 1418| r1418_2(glval) = FunctionAddress[~String] : -# 1418| v1418_3(void) = Call[~String] : func:r1418_2, this:r1418_1 -# 1418| mu1418_4(unknown) = ^CallSideEffect : ~m? -# 1418| v1418_5(void) = ^IndirectReadSideEffect[-1] : &:r1418_1, ~m? -# 1418| mu1418_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1418_1 -# 1418| r1418_7(bool) = Constant[0] : -# 1418| v1418_8(void) = ConditionalBranch : r1418_7 +# 35| Block 467 +# 35| r35_6525(glval) = VariableAddress[x466] : +# 35| mu35_6526(String) = Uninitialized[x466] : &:r35_6525 +# 35| r35_6527(glval) = FunctionAddress[String] : +# 35| v35_6528(void) = Call[String] : func:r35_6527, this:r35_6525 +# 35| mu35_6529(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6530(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6525 +# 35| r35_6531(glval) = VariableAddress[x466] : +# 35| r35_6532(glval) = FunctionAddress[~String] : +# 35| v35_6533(void) = Call[~String] : func:r35_6532, this:r35_6531 +# 35| mu35_6534(unknown) = ^CallSideEffect : ~m? +# 35| v35_6535(void) = ^IndirectReadSideEffect[-1] : &:r35_6531, ~m? +# 35| mu35_6536(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6531 +# 35| r35_6537(bool) = Constant[0] : +# 35| v35_6538(void) = ConditionalBranch : r35_6537 #-----| False -> Block 468 #-----| True (back edge) -> Block 467 -# 1420| Block 468 -# 1420| r1420_1(glval) = VariableAddress[x467] : -# 1420| mu1420_2(String) = Uninitialized[x467] : &:r1420_1 -# 1420| r1420_3(glval) = FunctionAddress[String] : -# 1420| v1420_4(void) = Call[String] : func:r1420_3, this:r1420_1 -# 1420| mu1420_5(unknown) = ^CallSideEffect : ~m? -# 1420| mu1420_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1420_1 -# 1421| r1421_1(glval) = VariableAddress[x467] : -# 1421| r1421_2(glval) = FunctionAddress[~String] : -# 1421| v1421_3(void) = Call[~String] : func:r1421_2, this:r1421_1 -# 1421| mu1421_4(unknown) = ^CallSideEffect : ~m? -# 1421| v1421_5(void) = ^IndirectReadSideEffect[-1] : &:r1421_1, ~m? -# 1421| mu1421_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_1 -# 1421| r1421_7(bool) = Constant[0] : -# 1421| v1421_8(void) = ConditionalBranch : r1421_7 +# 35| Block 468 +# 35| r35_6539(glval) = VariableAddress[x467] : +# 35| mu35_6540(String) = Uninitialized[x467] : &:r35_6539 +# 35| r35_6541(glval) = FunctionAddress[String] : +# 35| v35_6542(void) = Call[String] : func:r35_6541, this:r35_6539 +# 35| mu35_6543(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6544(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6539 +# 35| r35_6545(glval) = VariableAddress[x467] : +# 35| r35_6546(glval) = FunctionAddress[~String] : +# 35| v35_6547(void) = Call[~String] : func:r35_6546, this:r35_6545 +# 35| mu35_6548(unknown) = ^CallSideEffect : ~m? +# 35| v35_6549(void) = ^IndirectReadSideEffect[-1] : &:r35_6545, ~m? +# 35| mu35_6550(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6545 +# 35| r35_6551(bool) = Constant[0] : +# 35| v35_6552(void) = ConditionalBranch : r35_6551 #-----| False -> Block 469 #-----| True (back edge) -> Block 468 -# 1423| Block 469 -# 1423| r1423_1(glval) = VariableAddress[x468] : -# 1423| mu1423_2(String) = Uninitialized[x468] : &:r1423_1 -# 1423| r1423_3(glval) = FunctionAddress[String] : -# 1423| v1423_4(void) = Call[String] : func:r1423_3, this:r1423_1 -# 1423| mu1423_5(unknown) = ^CallSideEffect : ~m? -# 1423| mu1423_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1423_1 -# 1424| r1424_1(glval) = VariableAddress[x468] : -# 1424| r1424_2(glval) = FunctionAddress[~String] : -# 1424| v1424_3(void) = Call[~String] : func:r1424_2, this:r1424_1 -# 1424| mu1424_4(unknown) = ^CallSideEffect : ~m? -# 1424| v1424_5(void) = ^IndirectReadSideEffect[-1] : &:r1424_1, ~m? -# 1424| mu1424_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1424_1 -# 1424| r1424_7(bool) = Constant[0] : -# 1424| v1424_8(void) = ConditionalBranch : r1424_7 +# 35| Block 469 +# 35| r35_6553(glval) = VariableAddress[x468] : +# 35| mu35_6554(String) = Uninitialized[x468] : &:r35_6553 +# 35| r35_6555(glval) = FunctionAddress[String] : +# 35| v35_6556(void) = Call[String] : func:r35_6555, this:r35_6553 +# 35| mu35_6557(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6558(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6553 +# 35| r35_6559(glval) = VariableAddress[x468] : +# 35| r35_6560(glval) = FunctionAddress[~String] : +# 35| v35_6561(void) = Call[~String] : func:r35_6560, this:r35_6559 +# 35| mu35_6562(unknown) = ^CallSideEffect : ~m? +# 35| v35_6563(void) = ^IndirectReadSideEffect[-1] : &:r35_6559, ~m? +# 35| mu35_6564(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6559 +# 35| r35_6565(bool) = Constant[0] : +# 35| v35_6566(void) = ConditionalBranch : r35_6565 #-----| False -> Block 470 #-----| True (back edge) -> Block 469 -# 1426| Block 470 -# 1426| r1426_1(glval) = VariableAddress[x469] : -# 1426| mu1426_2(String) = Uninitialized[x469] : &:r1426_1 -# 1426| r1426_3(glval) = FunctionAddress[String] : -# 1426| v1426_4(void) = Call[String] : func:r1426_3, this:r1426_1 -# 1426| mu1426_5(unknown) = ^CallSideEffect : ~m? -# 1426| mu1426_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_1 -# 1427| r1427_1(glval) = VariableAddress[x469] : -# 1427| r1427_2(glval) = FunctionAddress[~String] : -# 1427| v1427_3(void) = Call[~String] : func:r1427_2, this:r1427_1 -# 1427| mu1427_4(unknown) = ^CallSideEffect : ~m? -# 1427| v1427_5(void) = ^IndirectReadSideEffect[-1] : &:r1427_1, ~m? -# 1427| mu1427_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1427_1 -# 1427| r1427_7(bool) = Constant[0] : -# 1427| v1427_8(void) = ConditionalBranch : r1427_7 +# 35| Block 470 +# 35| r35_6567(glval) = VariableAddress[x469] : +# 35| mu35_6568(String) = Uninitialized[x469] : &:r35_6567 +# 35| r35_6569(glval) = FunctionAddress[String] : +# 35| v35_6570(void) = Call[String] : func:r35_6569, this:r35_6567 +# 35| mu35_6571(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6572(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6567 +# 35| r35_6573(glval) = VariableAddress[x469] : +# 35| r35_6574(glval) = FunctionAddress[~String] : +# 35| v35_6575(void) = Call[~String] : func:r35_6574, this:r35_6573 +# 35| mu35_6576(unknown) = ^CallSideEffect : ~m? +# 35| v35_6577(void) = ^IndirectReadSideEffect[-1] : &:r35_6573, ~m? +# 35| mu35_6578(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6573 +# 35| r35_6579(bool) = Constant[0] : +# 35| v35_6580(void) = ConditionalBranch : r35_6579 #-----| False -> Block 471 #-----| True (back edge) -> Block 470 -# 1429| Block 471 -# 1429| r1429_1(glval) = VariableAddress[x470] : -# 1429| mu1429_2(String) = Uninitialized[x470] : &:r1429_1 -# 1429| r1429_3(glval) = FunctionAddress[String] : -# 1429| v1429_4(void) = Call[String] : func:r1429_3, this:r1429_1 -# 1429| mu1429_5(unknown) = ^CallSideEffect : ~m? -# 1429| mu1429_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1429_1 -# 1430| r1430_1(glval) = VariableAddress[x470] : -# 1430| r1430_2(glval) = FunctionAddress[~String] : -# 1430| v1430_3(void) = Call[~String] : func:r1430_2, this:r1430_1 -# 1430| mu1430_4(unknown) = ^CallSideEffect : ~m? -# 1430| v1430_5(void) = ^IndirectReadSideEffect[-1] : &:r1430_1, ~m? -# 1430| mu1430_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1430_1 -# 1430| r1430_7(bool) = Constant[0] : -# 1430| v1430_8(void) = ConditionalBranch : r1430_7 +# 35| Block 471 +# 35| r35_6581(glval) = VariableAddress[x470] : +# 35| mu35_6582(String) = Uninitialized[x470] : &:r35_6581 +# 35| r35_6583(glval) = FunctionAddress[String] : +# 35| v35_6584(void) = Call[String] : func:r35_6583, this:r35_6581 +# 35| mu35_6585(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6586(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6581 +# 35| r35_6587(glval) = VariableAddress[x470] : +# 35| r35_6588(glval) = FunctionAddress[~String] : +# 35| v35_6589(void) = Call[~String] : func:r35_6588, this:r35_6587 +# 35| mu35_6590(unknown) = ^CallSideEffect : ~m? +# 35| v35_6591(void) = ^IndirectReadSideEffect[-1] : &:r35_6587, ~m? +# 35| mu35_6592(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6587 +# 35| r35_6593(bool) = Constant[0] : +# 35| v35_6594(void) = ConditionalBranch : r35_6593 #-----| False -> Block 472 #-----| True (back edge) -> Block 471 -# 1432| Block 472 -# 1432| r1432_1(glval) = VariableAddress[x471] : -# 1432| mu1432_2(String) = Uninitialized[x471] : &:r1432_1 -# 1432| r1432_3(glval) = FunctionAddress[String] : -# 1432| v1432_4(void) = Call[String] : func:r1432_3, this:r1432_1 -# 1432| mu1432_5(unknown) = ^CallSideEffect : ~m? -# 1432| mu1432_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1432_1 -# 1433| r1433_1(glval) = VariableAddress[x471] : -# 1433| r1433_2(glval) = FunctionAddress[~String] : -# 1433| v1433_3(void) = Call[~String] : func:r1433_2, this:r1433_1 -# 1433| mu1433_4(unknown) = ^CallSideEffect : ~m? -# 1433| v1433_5(void) = ^IndirectReadSideEffect[-1] : &:r1433_1, ~m? -# 1433| mu1433_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1433_1 -# 1433| r1433_7(bool) = Constant[0] : -# 1433| v1433_8(void) = ConditionalBranch : r1433_7 +# 35| Block 472 +# 35| r35_6595(glval) = VariableAddress[x471] : +# 35| mu35_6596(String) = Uninitialized[x471] : &:r35_6595 +# 35| r35_6597(glval) = FunctionAddress[String] : +# 35| v35_6598(void) = Call[String] : func:r35_6597, this:r35_6595 +# 35| mu35_6599(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6600(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6595 +# 35| r35_6601(glval) = VariableAddress[x471] : +# 35| r35_6602(glval) = FunctionAddress[~String] : +# 35| v35_6603(void) = Call[~String] : func:r35_6602, this:r35_6601 +# 35| mu35_6604(unknown) = ^CallSideEffect : ~m? +# 35| v35_6605(void) = ^IndirectReadSideEffect[-1] : &:r35_6601, ~m? +# 35| mu35_6606(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6601 +# 35| r35_6607(bool) = Constant[0] : +# 35| v35_6608(void) = ConditionalBranch : r35_6607 #-----| False -> Block 473 #-----| True (back edge) -> Block 472 -# 1435| Block 473 -# 1435| r1435_1(glval) = VariableAddress[x472] : -# 1435| mu1435_2(String) = Uninitialized[x472] : &:r1435_1 -# 1435| r1435_3(glval) = FunctionAddress[String] : -# 1435| v1435_4(void) = Call[String] : func:r1435_3, this:r1435_1 -# 1435| mu1435_5(unknown) = ^CallSideEffect : ~m? -# 1435| mu1435_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1435_1 -# 1436| r1436_1(glval) = VariableAddress[x472] : -# 1436| r1436_2(glval) = FunctionAddress[~String] : -# 1436| v1436_3(void) = Call[~String] : func:r1436_2, this:r1436_1 -# 1436| mu1436_4(unknown) = ^CallSideEffect : ~m? -# 1436| v1436_5(void) = ^IndirectReadSideEffect[-1] : &:r1436_1, ~m? -# 1436| mu1436_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1436_1 -# 1436| r1436_7(bool) = Constant[0] : -# 1436| v1436_8(void) = ConditionalBranch : r1436_7 +# 35| Block 473 +# 35| r35_6609(glval) = VariableAddress[x472] : +# 35| mu35_6610(String) = Uninitialized[x472] : &:r35_6609 +# 35| r35_6611(glval) = FunctionAddress[String] : +# 35| v35_6612(void) = Call[String] : func:r35_6611, this:r35_6609 +# 35| mu35_6613(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6614(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6609 +# 35| r35_6615(glval) = VariableAddress[x472] : +# 35| r35_6616(glval) = FunctionAddress[~String] : +# 35| v35_6617(void) = Call[~String] : func:r35_6616, this:r35_6615 +# 35| mu35_6618(unknown) = ^CallSideEffect : ~m? +# 35| v35_6619(void) = ^IndirectReadSideEffect[-1] : &:r35_6615, ~m? +# 35| mu35_6620(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6615 +# 35| r35_6621(bool) = Constant[0] : +# 35| v35_6622(void) = ConditionalBranch : r35_6621 #-----| False -> Block 474 #-----| True (back edge) -> Block 473 -# 1438| Block 474 -# 1438| r1438_1(glval) = VariableAddress[x473] : -# 1438| mu1438_2(String) = Uninitialized[x473] : &:r1438_1 -# 1438| r1438_3(glval) = FunctionAddress[String] : -# 1438| v1438_4(void) = Call[String] : func:r1438_3, this:r1438_1 -# 1438| mu1438_5(unknown) = ^CallSideEffect : ~m? -# 1438| mu1438_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1438_1 -# 1439| r1439_1(glval) = VariableAddress[x473] : -# 1439| r1439_2(glval) = FunctionAddress[~String] : -# 1439| v1439_3(void) = Call[~String] : func:r1439_2, this:r1439_1 -# 1439| mu1439_4(unknown) = ^CallSideEffect : ~m? -# 1439| v1439_5(void) = ^IndirectReadSideEffect[-1] : &:r1439_1, ~m? -# 1439| mu1439_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1439_1 -# 1439| r1439_7(bool) = Constant[0] : -# 1439| v1439_8(void) = ConditionalBranch : r1439_7 +# 35| Block 474 +# 35| r35_6623(glval) = VariableAddress[x473] : +# 35| mu35_6624(String) = Uninitialized[x473] : &:r35_6623 +# 35| r35_6625(glval) = FunctionAddress[String] : +# 35| v35_6626(void) = Call[String] : func:r35_6625, this:r35_6623 +# 35| mu35_6627(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6628(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6623 +# 35| r35_6629(glval) = VariableAddress[x473] : +# 35| r35_6630(glval) = FunctionAddress[~String] : +# 35| v35_6631(void) = Call[~String] : func:r35_6630, this:r35_6629 +# 35| mu35_6632(unknown) = ^CallSideEffect : ~m? +# 35| v35_6633(void) = ^IndirectReadSideEffect[-1] : &:r35_6629, ~m? +# 35| mu35_6634(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6629 +# 35| r35_6635(bool) = Constant[0] : +# 35| v35_6636(void) = ConditionalBranch : r35_6635 #-----| False -> Block 475 #-----| True (back edge) -> Block 474 -# 1441| Block 475 -# 1441| r1441_1(glval) = VariableAddress[x474] : -# 1441| mu1441_2(String) = Uninitialized[x474] : &:r1441_1 -# 1441| r1441_3(glval) = FunctionAddress[String] : -# 1441| v1441_4(void) = Call[String] : func:r1441_3, this:r1441_1 -# 1441| mu1441_5(unknown) = ^CallSideEffect : ~m? -# 1441| mu1441_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1441_1 -# 1442| r1442_1(glval) = VariableAddress[x474] : -# 1442| r1442_2(glval) = FunctionAddress[~String] : -# 1442| v1442_3(void) = Call[~String] : func:r1442_2, this:r1442_1 -# 1442| mu1442_4(unknown) = ^CallSideEffect : ~m? -# 1442| v1442_5(void) = ^IndirectReadSideEffect[-1] : &:r1442_1, ~m? -# 1442| mu1442_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1442_1 -# 1442| r1442_7(bool) = Constant[0] : -# 1442| v1442_8(void) = ConditionalBranch : r1442_7 +# 35| Block 475 +# 35| r35_6637(glval) = VariableAddress[x474] : +# 35| mu35_6638(String) = Uninitialized[x474] : &:r35_6637 +# 35| r35_6639(glval) = FunctionAddress[String] : +# 35| v35_6640(void) = Call[String] : func:r35_6639, this:r35_6637 +# 35| mu35_6641(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6642(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6637 +# 35| r35_6643(glval) = VariableAddress[x474] : +# 35| r35_6644(glval) = FunctionAddress[~String] : +# 35| v35_6645(void) = Call[~String] : func:r35_6644, this:r35_6643 +# 35| mu35_6646(unknown) = ^CallSideEffect : ~m? +# 35| v35_6647(void) = ^IndirectReadSideEffect[-1] : &:r35_6643, ~m? +# 35| mu35_6648(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6643 +# 35| r35_6649(bool) = Constant[0] : +# 35| v35_6650(void) = ConditionalBranch : r35_6649 #-----| False -> Block 476 #-----| True (back edge) -> Block 475 -# 1444| Block 476 -# 1444| r1444_1(glval) = VariableAddress[x475] : -# 1444| mu1444_2(String) = Uninitialized[x475] : &:r1444_1 -# 1444| r1444_3(glval) = FunctionAddress[String] : -# 1444| v1444_4(void) = Call[String] : func:r1444_3, this:r1444_1 -# 1444| mu1444_5(unknown) = ^CallSideEffect : ~m? -# 1444| mu1444_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1444_1 -# 1445| r1445_1(glval) = VariableAddress[x475] : -# 1445| r1445_2(glval) = FunctionAddress[~String] : -# 1445| v1445_3(void) = Call[~String] : func:r1445_2, this:r1445_1 -# 1445| mu1445_4(unknown) = ^CallSideEffect : ~m? -# 1445| v1445_5(void) = ^IndirectReadSideEffect[-1] : &:r1445_1, ~m? -# 1445| mu1445_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1445_1 -# 1445| r1445_7(bool) = Constant[0] : -# 1445| v1445_8(void) = ConditionalBranch : r1445_7 +# 35| Block 476 +# 35| r35_6651(glval) = VariableAddress[x475] : +# 35| mu35_6652(String) = Uninitialized[x475] : &:r35_6651 +# 35| r35_6653(glval) = FunctionAddress[String] : +# 35| v35_6654(void) = Call[String] : func:r35_6653, this:r35_6651 +# 35| mu35_6655(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6656(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6651 +# 35| r35_6657(glval) = VariableAddress[x475] : +# 35| r35_6658(glval) = FunctionAddress[~String] : +# 35| v35_6659(void) = Call[~String] : func:r35_6658, this:r35_6657 +# 35| mu35_6660(unknown) = ^CallSideEffect : ~m? +# 35| v35_6661(void) = ^IndirectReadSideEffect[-1] : &:r35_6657, ~m? +# 35| mu35_6662(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6657 +# 35| r35_6663(bool) = Constant[0] : +# 35| v35_6664(void) = ConditionalBranch : r35_6663 #-----| False -> Block 477 #-----| True (back edge) -> Block 476 -# 1447| Block 477 -# 1447| r1447_1(glval) = VariableAddress[x476] : -# 1447| mu1447_2(String) = Uninitialized[x476] : &:r1447_1 -# 1447| r1447_3(glval) = FunctionAddress[String] : -# 1447| v1447_4(void) = Call[String] : func:r1447_3, this:r1447_1 -# 1447| mu1447_5(unknown) = ^CallSideEffect : ~m? -# 1447| mu1447_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1447_1 -# 1448| r1448_1(glval) = VariableAddress[x476] : -# 1448| r1448_2(glval) = FunctionAddress[~String] : -# 1448| v1448_3(void) = Call[~String] : func:r1448_2, this:r1448_1 -# 1448| mu1448_4(unknown) = ^CallSideEffect : ~m? -# 1448| v1448_5(void) = ^IndirectReadSideEffect[-1] : &:r1448_1, ~m? -# 1448| mu1448_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1448_1 -# 1448| r1448_7(bool) = Constant[0] : -# 1448| v1448_8(void) = ConditionalBranch : r1448_7 +# 35| Block 477 +# 35| r35_6665(glval) = VariableAddress[x476] : +# 35| mu35_6666(String) = Uninitialized[x476] : &:r35_6665 +# 35| r35_6667(glval) = FunctionAddress[String] : +# 35| v35_6668(void) = Call[String] : func:r35_6667, this:r35_6665 +# 35| mu35_6669(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6670(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6665 +# 35| r35_6671(glval) = VariableAddress[x476] : +# 35| r35_6672(glval) = FunctionAddress[~String] : +# 35| v35_6673(void) = Call[~String] : func:r35_6672, this:r35_6671 +# 35| mu35_6674(unknown) = ^CallSideEffect : ~m? +# 35| v35_6675(void) = ^IndirectReadSideEffect[-1] : &:r35_6671, ~m? +# 35| mu35_6676(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6671 +# 35| r35_6677(bool) = Constant[0] : +# 35| v35_6678(void) = ConditionalBranch : r35_6677 #-----| False -> Block 478 #-----| True (back edge) -> Block 477 -# 1450| Block 478 -# 1450| r1450_1(glval) = VariableAddress[x477] : -# 1450| mu1450_2(String) = Uninitialized[x477] : &:r1450_1 -# 1450| r1450_3(glval) = FunctionAddress[String] : -# 1450| v1450_4(void) = Call[String] : func:r1450_3, this:r1450_1 -# 1450| mu1450_5(unknown) = ^CallSideEffect : ~m? -# 1450| mu1450_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1450_1 -# 1451| r1451_1(glval) = VariableAddress[x477] : -# 1451| r1451_2(glval) = FunctionAddress[~String] : -# 1451| v1451_3(void) = Call[~String] : func:r1451_2, this:r1451_1 -# 1451| mu1451_4(unknown) = ^CallSideEffect : ~m? -# 1451| v1451_5(void) = ^IndirectReadSideEffect[-1] : &:r1451_1, ~m? -# 1451| mu1451_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1451_1 -# 1451| r1451_7(bool) = Constant[0] : -# 1451| v1451_8(void) = ConditionalBranch : r1451_7 +# 35| Block 478 +# 35| r35_6679(glval) = VariableAddress[x477] : +# 35| mu35_6680(String) = Uninitialized[x477] : &:r35_6679 +# 35| r35_6681(glval) = FunctionAddress[String] : +# 35| v35_6682(void) = Call[String] : func:r35_6681, this:r35_6679 +# 35| mu35_6683(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6684(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6679 +# 35| r35_6685(glval) = VariableAddress[x477] : +# 35| r35_6686(glval) = FunctionAddress[~String] : +# 35| v35_6687(void) = Call[~String] : func:r35_6686, this:r35_6685 +# 35| mu35_6688(unknown) = ^CallSideEffect : ~m? +# 35| v35_6689(void) = ^IndirectReadSideEffect[-1] : &:r35_6685, ~m? +# 35| mu35_6690(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6685 +# 35| r35_6691(bool) = Constant[0] : +# 35| v35_6692(void) = ConditionalBranch : r35_6691 #-----| False -> Block 479 #-----| True (back edge) -> Block 478 -# 1453| Block 479 -# 1453| r1453_1(glval) = VariableAddress[x478] : -# 1453| mu1453_2(String) = Uninitialized[x478] : &:r1453_1 -# 1453| r1453_3(glval) = FunctionAddress[String] : -# 1453| v1453_4(void) = Call[String] : func:r1453_3, this:r1453_1 -# 1453| mu1453_5(unknown) = ^CallSideEffect : ~m? -# 1453| mu1453_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1453_1 -# 1454| r1454_1(glval) = VariableAddress[x478] : -# 1454| r1454_2(glval) = FunctionAddress[~String] : -# 1454| v1454_3(void) = Call[~String] : func:r1454_2, this:r1454_1 -# 1454| mu1454_4(unknown) = ^CallSideEffect : ~m? -# 1454| v1454_5(void) = ^IndirectReadSideEffect[-1] : &:r1454_1, ~m? -# 1454| mu1454_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1454_1 -# 1454| r1454_7(bool) = Constant[0] : -# 1454| v1454_8(void) = ConditionalBranch : r1454_7 +# 35| Block 479 +# 35| r35_6693(glval) = VariableAddress[x478] : +# 35| mu35_6694(String) = Uninitialized[x478] : &:r35_6693 +# 35| r35_6695(glval) = FunctionAddress[String] : +# 35| v35_6696(void) = Call[String] : func:r35_6695, this:r35_6693 +# 35| mu35_6697(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6698(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6693 +# 35| r35_6699(glval) = VariableAddress[x478] : +# 35| r35_6700(glval) = FunctionAddress[~String] : +# 35| v35_6701(void) = Call[~String] : func:r35_6700, this:r35_6699 +# 35| mu35_6702(unknown) = ^CallSideEffect : ~m? +# 35| v35_6703(void) = ^IndirectReadSideEffect[-1] : &:r35_6699, ~m? +# 35| mu35_6704(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6699 +# 35| r35_6705(bool) = Constant[0] : +# 35| v35_6706(void) = ConditionalBranch : r35_6705 #-----| False -> Block 480 #-----| True (back edge) -> Block 479 -# 1456| Block 480 -# 1456| r1456_1(glval) = VariableAddress[x479] : -# 1456| mu1456_2(String) = Uninitialized[x479] : &:r1456_1 -# 1456| r1456_3(glval) = FunctionAddress[String] : -# 1456| v1456_4(void) = Call[String] : func:r1456_3, this:r1456_1 -# 1456| mu1456_5(unknown) = ^CallSideEffect : ~m? -# 1456| mu1456_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1456_1 -# 1457| r1457_1(glval) = VariableAddress[x479] : -# 1457| r1457_2(glval) = FunctionAddress[~String] : -# 1457| v1457_3(void) = Call[~String] : func:r1457_2, this:r1457_1 -# 1457| mu1457_4(unknown) = ^CallSideEffect : ~m? -# 1457| v1457_5(void) = ^IndirectReadSideEffect[-1] : &:r1457_1, ~m? -# 1457| mu1457_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1457_1 -# 1457| r1457_7(bool) = Constant[0] : -# 1457| v1457_8(void) = ConditionalBranch : r1457_7 +# 35| Block 480 +# 35| r35_6707(glval) = VariableAddress[x479] : +# 35| mu35_6708(String) = Uninitialized[x479] : &:r35_6707 +# 35| r35_6709(glval) = FunctionAddress[String] : +# 35| v35_6710(void) = Call[String] : func:r35_6709, this:r35_6707 +# 35| mu35_6711(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6712(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6707 +# 35| r35_6713(glval) = VariableAddress[x479] : +# 35| r35_6714(glval) = FunctionAddress[~String] : +# 35| v35_6715(void) = Call[~String] : func:r35_6714, this:r35_6713 +# 35| mu35_6716(unknown) = ^CallSideEffect : ~m? +# 35| v35_6717(void) = ^IndirectReadSideEffect[-1] : &:r35_6713, ~m? +# 35| mu35_6718(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6713 +# 35| r35_6719(bool) = Constant[0] : +# 35| v35_6720(void) = ConditionalBranch : r35_6719 #-----| False -> Block 481 #-----| True (back edge) -> Block 480 -# 1459| Block 481 -# 1459| r1459_1(glval) = VariableAddress[x480] : -# 1459| mu1459_2(String) = Uninitialized[x480] : &:r1459_1 -# 1459| r1459_3(glval) = FunctionAddress[String] : -# 1459| v1459_4(void) = Call[String] : func:r1459_3, this:r1459_1 -# 1459| mu1459_5(unknown) = ^CallSideEffect : ~m? -# 1459| mu1459_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1459_1 -# 1460| r1460_1(glval) = VariableAddress[x480] : -# 1460| r1460_2(glval) = FunctionAddress[~String] : -# 1460| v1460_3(void) = Call[~String] : func:r1460_2, this:r1460_1 -# 1460| mu1460_4(unknown) = ^CallSideEffect : ~m? -# 1460| v1460_5(void) = ^IndirectReadSideEffect[-1] : &:r1460_1, ~m? -# 1460| mu1460_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1460_1 -# 1460| r1460_7(bool) = Constant[0] : -# 1460| v1460_8(void) = ConditionalBranch : r1460_7 +# 35| Block 481 +# 35| r35_6721(glval) = VariableAddress[x480] : +# 35| mu35_6722(String) = Uninitialized[x480] : &:r35_6721 +# 35| r35_6723(glval) = FunctionAddress[String] : +# 35| v35_6724(void) = Call[String] : func:r35_6723, this:r35_6721 +# 35| mu35_6725(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6726(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6721 +# 35| r35_6727(glval) = VariableAddress[x480] : +# 35| r35_6728(glval) = FunctionAddress[~String] : +# 35| v35_6729(void) = Call[~String] : func:r35_6728, this:r35_6727 +# 35| mu35_6730(unknown) = ^CallSideEffect : ~m? +# 35| v35_6731(void) = ^IndirectReadSideEffect[-1] : &:r35_6727, ~m? +# 35| mu35_6732(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6727 +# 35| r35_6733(bool) = Constant[0] : +# 35| v35_6734(void) = ConditionalBranch : r35_6733 #-----| False -> Block 482 #-----| True (back edge) -> Block 481 -# 1462| Block 482 -# 1462| r1462_1(glval) = VariableAddress[x481] : -# 1462| mu1462_2(String) = Uninitialized[x481] : &:r1462_1 -# 1462| r1462_3(glval) = FunctionAddress[String] : -# 1462| v1462_4(void) = Call[String] : func:r1462_3, this:r1462_1 -# 1462| mu1462_5(unknown) = ^CallSideEffect : ~m? -# 1462| mu1462_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1462_1 -# 1463| r1463_1(glval) = VariableAddress[x481] : -# 1463| r1463_2(glval) = FunctionAddress[~String] : -# 1463| v1463_3(void) = Call[~String] : func:r1463_2, this:r1463_1 -# 1463| mu1463_4(unknown) = ^CallSideEffect : ~m? -# 1463| v1463_5(void) = ^IndirectReadSideEffect[-1] : &:r1463_1, ~m? -# 1463| mu1463_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1463_1 -# 1463| r1463_7(bool) = Constant[0] : -# 1463| v1463_8(void) = ConditionalBranch : r1463_7 +# 35| Block 482 +# 35| r35_6735(glval) = VariableAddress[x481] : +# 35| mu35_6736(String) = Uninitialized[x481] : &:r35_6735 +# 35| r35_6737(glval) = FunctionAddress[String] : +# 35| v35_6738(void) = Call[String] : func:r35_6737, this:r35_6735 +# 35| mu35_6739(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6740(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6735 +# 35| r35_6741(glval) = VariableAddress[x481] : +# 35| r35_6742(glval) = FunctionAddress[~String] : +# 35| v35_6743(void) = Call[~String] : func:r35_6742, this:r35_6741 +# 35| mu35_6744(unknown) = ^CallSideEffect : ~m? +# 35| v35_6745(void) = ^IndirectReadSideEffect[-1] : &:r35_6741, ~m? +# 35| mu35_6746(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6741 +# 35| r35_6747(bool) = Constant[0] : +# 35| v35_6748(void) = ConditionalBranch : r35_6747 #-----| False -> Block 483 #-----| True (back edge) -> Block 482 -# 1465| Block 483 -# 1465| r1465_1(glval) = VariableAddress[x482] : -# 1465| mu1465_2(String) = Uninitialized[x482] : &:r1465_1 -# 1465| r1465_3(glval) = FunctionAddress[String] : -# 1465| v1465_4(void) = Call[String] : func:r1465_3, this:r1465_1 -# 1465| mu1465_5(unknown) = ^CallSideEffect : ~m? -# 1465| mu1465_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1465_1 -# 1466| r1466_1(glval) = VariableAddress[x482] : -# 1466| r1466_2(glval) = FunctionAddress[~String] : -# 1466| v1466_3(void) = Call[~String] : func:r1466_2, this:r1466_1 -# 1466| mu1466_4(unknown) = ^CallSideEffect : ~m? -# 1466| v1466_5(void) = ^IndirectReadSideEffect[-1] : &:r1466_1, ~m? -# 1466| mu1466_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1466_1 -# 1466| r1466_7(bool) = Constant[0] : -# 1466| v1466_8(void) = ConditionalBranch : r1466_7 +# 35| Block 483 +# 35| r35_6749(glval) = VariableAddress[x482] : +# 35| mu35_6750(String) = Uninitialized[x482] : &:r35_6749 +# 35| r35_6751(glval) = FunctionAddress[String] : +# 35| v35_6752(void) = Call[String] : func:r35_6751, this:r35_6749 +# 35| mu35_6753(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6754(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6749 +# 35| r35_6755(glval) = VariableAddress[x482] : +# 35| r35_6756(glval) = FunctionAddress[~String] : +# 35| v35_6757(void) = Call[~String] : func:r35_6756, this:r35_6755 +# 35| mu35_6758(unknown) = ^CallSideEffect : ~m? +# 35| v35_6759(void) = ^IndirectReadSideEffect[-1] : &:r35_6755, ~m? +# 35| mu35_6760(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6755 +# 35| r35_6761(bool) = Constant[0] : +# 35| v35_6762(void) = ConditionalBranch : r35_6761 #-----| False -> Block 484 #-----| True (back edge) -> Block 483 -# 1468| Block 484 -# 1468| r1468_1(glval) = VariableAddress[x483] : -# 1468| mu1468_2(String) = Uninitialized[x483] : &:r1468_1 -# 1468| r1468_3(glval) = FunctionAddress[String] : -# 1468| v1468_4(void) = Call[String] : func:r1468_3, this:r1468_1 -# 1468| mu1468_5(unknown) = ^CallSideEffect : ~m? -# 1468| mu1468_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1468_1 -# 1469| r1469_1(glval) = VariableAddress[x483] : -# 1469| r1469_2(glval) = FunctionAddress[~String] : -# 1469| v1469_3(void) = Call[~String] : func:r1469_2, this:r1469_1 -# 1469| mu1469_4(unknown) = ^CallSideEffect : ~m? -# 1469| v1469_5(void) = ^IndirectReadSideEffect[-1] : &:r1469_1, ~m? -# 1469| mu1469_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1469_1 -# 1469| r1469_7(bool) = Constant[0] : -# 1469| v1469_8(void) = ConditionalBranch : r1469_7 +# 35| Block 484 +# 35| r35_6763(glval) = VariableAddress[x483] : +# 35| mu35_6764(String) = Uninitialized[x483] : &:r35_6763 +# 35| r35_6765(glval) = FunctionAddress[String] : +# 35| v35_6766(void) = Call[String] : func:r35_6765, this:r35_6763 +# 35| mu35_6767(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6768(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6763 +# 35| r35_6769(glval) = VariableAddress[x483] : +# 35| r35_6770(glval) = FunctionAddress[~String] : +# 35| v35_6771(void) = Call[~String] : func:r35_6770, this:r35_6769 +# 35| mu35_6772(unknown) = ^CallSideEffect : ~m? +# 35| v35_6773(void) = ^IndirectReadSideEffect[-1] : &:r35_6769, ~m? +# 35| mu35_6774(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6769 +# 35| r35_6775(bool) = Constant[0] : +# 35| v35_6776(void) = ConditionalBranch : r35_6775 #-----| False -> Block 485 #-----| True (back edge) -> Block 484 -# 1471| Block 485 -# 1471| r1471_1(glval) = VariableAddress[x484] : -# 1471| mu1471_2(String) = Uninitialized[x484] : &:r1471_1 -# 1471| r1471_3(glval) = FunctionAddress[String] : -# 1471| v1471_4(void) = Call[String] : func:r1471_3, this:r1471_1 -# 1471| mu1471_5(unknown) = ^CallSideEffect : ~m? -# 1471| mu1471_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1471_1 -# 1472| r1472_1(glval) = VariableAddress[x484] : -# 1472| r1472_2(glval) = FunctionAddress[~String] : -# 1472| v1472_3(void) = Call[~String] : func:r1472_2, this:r1472_1 -# 1472| mu1472_4(unknown) = ^CallSideEffect : ~m? -# 1472| v1472_5(void) = ^IndirectReadSideEffect[-1] : &:r1472_1, ~m? -# 1472| mu1472_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1472_1 -# 1472| r1472_7(bool) = Constant[0] : -# 1472| v1472_8(void) = ConditionalBranch : r1472_7 +# 35| Block 485 +# 35| r35_6777(glval) = VariableAddress[x484] : +# 35| mu35_6778(String) = Uninitialized[x484] : &:r35_6777 +# 35| r35_6779(glval) = FunctionAddress[String] : +# 35| v35_6780(void) = Call[String] : func:r35_6779, this:r35_6777 +# 35| mu35_6781(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6782(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6777 +# 35| r35_6783(glval) = VariableAddress[x484] : +# 35| r35_6784(glval) = FunctionAddress[~String] : +# 35| v35_6785(void) = Call[~String] : func:r35_6784, this:r35_6783 +# 35| mu35_6786(unknown) = ^CallSideEffect : ~m? +# 35| v35_6787(void) = ^IndirectReadSideEffect[-1] : &:r35_6783, ~m? +# 35| mu35_6788(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6783 +# 35| r35_6789(bool) = Constant[0] : +# 35| v35_6790(void) = ConditionalBranch : r35_6789 #-----| False -> Block 486 #-----| True (back edge) -> Block 485 -# 1474| Block 486 -# 1474| r1474_1(glval) = VariableAddress[x485] : -# 1474| mu1474_2(String) = Uninitialized[x485] : &:r1474_1 -# 1474| r1474_3(glval) = FunctionAddress[String] : -# 1474| v1474_4(void) = Call[String] : func:r1474_3, this:r1474_1 -# 1474| mu1474_5(unknown) = ^CallSideEffect : ~m? -# 1474| mu1474_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1474_1 -# 1475| r1475_1(glval) = VariableAddress[x485] : -# 1475| r1475_2(glval) = FunctionAddress[~String] : -# 1475| v1475_3(void) = Call[~String] : func:r1475_2, this:r1475_1 -# 1475| mu1475_4(unknown) = ^CallSideEffect : ~m? -# 1475| v1475_5(void) = ^IndirectReadSideEffect[-1] : &:r1475_1, ~m? -# 1475| mu1475_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1475_1 -# 1475| r1475_7(bool) = Constant[0] : -# 1475| v1475_8(void) = ConditionalBranch : r1475_7 +# 35| Block 486 +# 35| r35_6791(glval) = VariableAddress[x485] : +# 35| mu35_6792(String) = Uninitialized[x485] : &:r35_6791 +# 35| r35_6793(glval) = FunctionAddress[String] : +# 35| v35_6794(void) = Call[String] : func:r35_6793, this:r35_6791 +# 35| mu35_6795(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6796(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6791 +# 35| r35_6797(glval) = VariableAddress[x485] : +# 35| r35_6798(glval) = FunctionAddress[~String] : +# 35| v35_6799(void) = Call[~String] : func:r35_6798, this:r35_6797 +# 35| mu35_6800(unknown) = ^CallSideEffect : ~m? +# 35| v35_6801(void) = ^IndirectReadSideEffect[-1] : &:r35_6797, ~m? +# 35| mu35_6802(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6797 +# 35| r35_6803(bool) = Constant[0] : +# 35| v35_6804(void) = ConditionalBranch : r35_6803 #-----| False -> Block 487 #-----| True (back edge) -> Block 486 -# 1477| Block 487 -# 1477| r1477_1(glval) = VariableAddress[x486] : -# 1477| mu1477_2(String) = Uninitialized[x486] : &:r1477_1 -# 1477| r1477_3(glval) = FunctionAddress[String] : -# 1477| v1477_4(void) = Call[String] : func:r1477_3, this:r1477_1 -# 1477| mu1477_5(unknown) = ^CallSideEffect : ~m? -# 1477| mu1477_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1477_1 -# 1478| r1478_1(glval) = VariableAddress[x486] : -# 1478| r1478_2(glval) = FunctionAddress[~String] : -# 1478| v1478_3(void) = Call[~String] : func:r1478_2, this:r1478_1 -# 1478| mu1478_4(unknown) = ^CallSideEffect : ~m? -# 1478| v1478_5(void) = ^IndirectReadSideEffect[-1] : &:r1478_1, ~m? -# 1478| mu1478_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1478_1 -# 1478| r1478_7(bool) = Constant[0] : -# 1478| v1478_8(void) = ConditionalBranch : r1478_7 +# 35| Block 487 +# 35| r35_6805(glval) = VariableAddress[x486] : +# 35| mu35_6806(String) = Uninitialized[x486] : &:r35_6805 +# 35| r35_6807(glval) = FunctionAddress[String] : +# 35| v35_6808(void) = Call[String] : func:r35_6807, this:r35_6805 +# 35| mu35_6809(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6810(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6805 +# 35| r35_6811(glval) = VariableAddress[x486] : +# 35| r35_6812(glval) = FunctionAddress[~String] : +# 35| v35_6813(void) = Call[~String] : func:r35_6812, this:r35_6811 +# 35| mu35_6814(unknown) = ^CallSideEffect : ~m? +# 35| v35_6815(void) = ^IndirectReadSideEffect[-1] : &:r35_6811, ~m? +# 35| mu35_6816(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6811 +# 35| r35_6817(bool) = Constant[0] : +# 35| v35_6818(void) = ConditionalBranch : r35_6817 #-----| False -> Block 488 #-----| True (back edge) -> Block 487 -# 1480| Block 488 -# 1480| r1480_1(glval) = VariableAddress[x487] : -# 1480| mu1480_2(String) = Uninitialized[x487] : &:r1480_1 -# 1480| r1480_3(glval) = FunctionAddress[String] : -# 1480| v1480_4(void) = Call[String] : func:r1480_3, this:r1480_1 -# 1480| mu1480_5(unknown) = ^CallSideEffect : ~m? -# 1480| mu1480_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1480_1 -# 1481| r1481_1(glval) = VariableAddress[x487] : -# 1481| r1481_2(glval) = FunctionAddress[~String] : -# 1481| v1481_3(void) = Call[~String] : func:r1481_2, this:r1481_1 -# 1481| mu1481_4(unknown) = ^CallSideEffect : ~m? -# 1481| v1481_5(void) = ^IndirectReadSideEffect[-1] : &:r1481_1, ~m? -# 1481| mu1481_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1481_1 -# 1481| r1481_7(bool) = Constant[0] : -# 1481| v1481_8(void) = ConditionalBranch : r1481_7 +# 35| Block 488 +# 35| r35_6819(glval) = VariableAddress[x487] : +# 35| mu35_6820(String) = Uninitialized[x487] : &:r35_6819 +# 35| r35_6821(glval) = FunctionAddress[String] : +# 35| v35_6822(void) = Call[String] : func:r35_6821, this:r35_6819 +# 35| mu35_6823(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6824(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6819 +# 35| r35_6825(glval) = VariableAddress[x487] : +# 35| r35_6826(glval) = FunctionAddress[~String] : +# 35| v35_6827(void) = Call[~String] : func:r35_6826, this:r35_6825 +# 35| mu35_6828(unknown) = ^CallSideEffect : ~m? +# 35| v35_6829(void) = ^IndirectReadSideEffect[-1] : &:r35_6825, ~m? +# 35| mu35_6830(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6825 +# 35| r35_6831(bool) = Constant[0] : +# 35| v35_6832(void) = ConditionalBranch : r35_6831 #-----| False -> Block 489 #-----| True (back edge) -> Block 488 -# 1483| Block 489 -# 1483| r1483_1(glval) = VariableAddress[x488] : -# 1483| mu1483_2(String) = Uninitialized[x488] : &:r1483_1 -# 1483| r1483_3(glval) = FunctionAddress[String] : -# 1483| v1483_4(void) = Call[String] : func:r1483_3, this:r1483_1 -# 1483| mu1483_5(unknown) = ^CallSideEffect : ~m? -# 1483| mu1483_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1483_1 -# 1484| r1484_1(glval) = VariableAddress[x488] : -# 1484| r1484_2(glval) = FunctionAddress[~String] : -# 1484| v1484_3(void) = Call[~String] : func:r1484_2, this:r1484_1 -# 1484| mu1484_4(unknown) = ^CallSideEffect : ~m? -# 1484| v1484_5(void) = ^IndirectReadSideEffect[-1] : &:r1484_1, ~m? -# 1484| mu1484_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1484_1 -# 1484| r1484_7(bool) = Constant[0] : -# 1484| v1484_8(void) = ConditionalBranch : r1484_7 +# 35| Block 489 +# 35| r35_6833(glval) = VariableAddress[x488] : +# 35| mu35_6834(String) = Uninitialized[x488] : &:r35_6833 +# 35| r35_6835(glval) = FunctionAddress[String] : +# 35| v35_6836(void) = Call[String] : func:r35_6835, this:r35_6833 +# 35| mu35_6837(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6838(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6833 +# 35| r35_6839(glval) = VariableAddress[x488] : +# 35| r35_6840(glval) = FunctionAddress[~String] : +# 35| v35_6841(void) = Call[~String] : func:r35_6840, this:r35_6839 +# 35| mu35_6842(unknown) = ^CallSideEffect : ~m? +# 35| v35_6843(void) = ^IndirectReadSideEffect[-1] : &:r35_6839, ~m? +# 35| mu35_6844(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6839 +# 35| r35_6845(bool) = Constant[0] : +# 35| v35_6846(void) = ConditionalBranch : r35_6845 #-----| False -> Block 490 #-----| True (back edge) -> Block 489 -# 1486| Block 490 -# 1486| r1486_1(glval) = VariableAddress[x489] : -# 1486| mu1486_2(String) = Uninitialized[x489] : &:r1486_1 -# 1486| r1486_3(glval) = FunctionAddress[String] : -# 1486| v1486_4(void) = Call[String] : func:r1486_3, this:r1486_1 -# 1486| mu1486_5(unknown) = ^CallSideEffect : ~m? -# 1486| mu1486_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1486_1 -# 1487| r1487_1(glval) = VariableAddress[x489] : -# 1487| r1487_2(glval) = FunctionAddress[~String] : -# 1487| v1487_3(void) = Call[~String] : func:r1487_2, this:r1487_1 -# 1487| mu1487_4(unknown) = ^CallSideEffect : ~m? -# 1487| v1487_5(void) = ^IndirectReadSideEffect[-1] : &:r1487_1, ~m? -# 1487| mu1487_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1487_1 -# 1487| r1487_7(bool) = Constant[0] : -# 1487| v1487_8(void) = ConditionalBranch : r1487_7 +# 35| Block 490 +# 35| r35_6847(glval) = VariableAddress[x489] : +# 35| mu35_6848(String) = Uninitialized[x489] : &:r35_6847 +# 35| r35_6849(glval) = FunctionAddress[String] : +# 35| v35_6850(void) = Call[String] : func:r35_6849, this:r35_6847 +# 35| mu35_6851(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6852(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6847 +# 35| r35_6853(glval) = VariableAddress[x489] : +# 35| r35_6854(glval) = FunctionAddress[~String] : +# 35| v35_6855(void) = Call[~String] : func:r35_6854, this:r35_6853 +# 35| mu35_6856(unknown) = ^CallSideEffect : ~m? +# 35| v35_6857(void) = ^IndirectReadSideEffect[-1] : &:r35_6853, ~m? +# 35| mu35_6858(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6853 +# 35| r35_6859(bool) = Constant[0] : +# 35| v35_6860(void) = ConditionalBranch : r35_6859 #-----| False -> Block 491 #-----| True (back edge) -> Block 490 -# 1489| Block 491 -# 1489| r1489_1(glval) = VariableAddress[x490] : -# 1489| mu1489_2(String) = Uninitialized[x490] : &:r1489_1 -# 1489| r1489_3(glval) = FunctionAddress[String] : -# 1489| v1489_4(void) = Call[String] : func:r1489_3, this:r1489_1 -# 1489| mu1489_5(unknown) = ^CallSideEffect : ~m? -# 1489| mu1489_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1489_1 -# 1490| r1490_1(glval) = VariableAddress[x490] : -# 1490| r1490_2(glval) = FunctionAddress[~String] : -# 1490| v1490_3(void) = Call[~String] : func:r1490_2, this:r1490_1 -# 1490| mu1490_4(unknown) = ^CallSideEffect : ~m? -# 1490| v1490_5(void) = ^IndirectReadSideEffect[-1] : &:r1490_1, ~m? -# 1490| mu1490_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1490_1 -# 1490| r1490_7(bool) = Constant[0] : -# 1490| v1490_8(void) = ConditionalBranch : r1490_7 +# 35| Block 491 +# 35| r35_6861(glval) = VariableAddress[x490] : +# 35| mu35_6862(String) = Uninitialized[x490] : &:r35_6861 +# 35| r35_6863(glval) = FunctionAddress[String] : +# 35| v35_6864(void) = Call[String] : func:r35_6863, this:r35_6861 +# 35| mu35_6865(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6866(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6861 +# 35| r35_6867(glval) = VariableAddress[x490] : +# 35| r35_6868(glval) = FunctionAddress[~String] : +# 35| v35_6869(void) = Call[~String] : func:r35_6868, this:r35_6867 +# 35| mu35_6870(unknown) = ^CallSideEffect : ~m? +# 35| v35_6871(void) = ^IndirectReadSideEffect[-1] : &:r35_6867, ~m? +# 35| mu35_6872(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6867 +# 35| r35_6873(bool) = Constant[0] : +# 35| v35_6874(void) = ConditionalBranch : r35_6873 #-----| False -> Block 492 #-----| True (back edge) -> Block 491 -# 1492| Block 492 -# 1492| r1492_1(glval) = VariableAddress[x491] : -# 1492| mu1492_2(String) = Uninitialized[x491] : &:r1492_1 -# 1492| r1492_3(glval) = FunctionAddress[String] : -# 1492| v1492_4(void) = Call[String] : func:r1492_3, this:r1492_1 -# 1492| mu1492_5(unknown) = ^CallSideEffect : ~m? -# 1492| mu1492_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1492_1 -# 1493| r1493_1(glval) = VariableAddress[x491] : -# 1493| r1493_2(glval) = FunctionAddress[~String] : -# 1493| v1493_3(void) = Call[~String] : func:r1493_2, this:r1493_1 -# 1493| mu1493_4(unknown) = ^CallSideEffect : ~m? -# 1493| v1493_5(void) = ^IndirectReadSideEffect[-1] : &:r1493_1, ~m? -# 1493| mu1493_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1493_1 -# 1493| r1493_7(bool) = Constant[0] : -# 1493| v1493_8(void) = ConditionalBranch : r1493_7 +# 35| Block 492 +# 35| r35_6875(glval) = VariableAddress[x491] : +# 35| mu35_6876(String) = Uninitialized[x491] : &:r35_6875 +# 35| r35_6877(glval) = FunctionAddress[String] : +# 35| v35_6878(void) = Call[String] : func:r35_6877, this:r35_6875 +# 35| mu35_6879(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6880(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6875 +# 35| r35_6881(glval) = VariableAddress[x491] : +# 35| r35_6882(glval) = FunctionAddress[~String] : +# 35| v35_6883(void) = Call[~String] : func:r35_6882, this:r35_6881 +# 35| mu35_6884(unknown) = ^CallSideEffect : ~m? +# 35| v35_6885(void) = ^IndirectReadSideEffect[-1] : &:r35_6881, ~m? +# 35| mu35_6886(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6881 +# 35| r35_6887(bool) = Constant[0] : +# 35| v35_6888(void) = ConditionalBranch : r35_6887 #-----| False -> Block 493 #-----| True (back edge) -> Block 492 -# 1495| Block 493 -# 1495| r1495_1(glval) = VariableAddress[x492] : -# 1495| mu1495_2(String) = Uninitialized[x492] : &:r1495_1 -# 1495| r1495_3(glval) = FunctionAddress[String] : -# 1495| v1495_4(void) = Call[String] : func:r1495_3, this:r1495_1 -# 1495| mu1495_5(unknown) = ^CallSideEffect : ~m? -# 1495| mu1495_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1495_1 -# 1496| r1496_1(glval) = VariableAddress[x492] : -# 1496| r1496_2(glval) = FunctionAddress[~String] : -# 1496| v1496_3(void) = Call[~String] : func:r1496_2, this:r1496_1 -# 1496| mu1496_4(unknown) = ^CallSideEffect : ~m? -# 1496| v1496_5(void) = ^IndirectReadSideEffect[-1] : &:r1496_1, ~m? -# 1496| mu1496_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1496_1 -# 1496| r1496_7(bool) = Constant[0] : -# 1496| v1496_8(void) = ConditionalBranch : r1496_7 +# 35| Block 493 +# 35| r35_6889(glval) = VariableAddress[x492] : +# 35| mu35_6890(String) = Uninitialized[x492] : &:r35_6889 +# 35| r35_6891(glval) = FunctionAddress[String] : +# 35| v35_6892(void) = Call[String] : func:r35_6891, this:r35_6889 +# 35| mu35_6893(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6894(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6889 +# 35| r35_6895(glval) = VariableAddress[x492] : +# 35| r35_6896(glval) = FunctionAddress[~String] : +# 35| v35_6897(void) = Call[~String] : func:r35_6896, this:r35_6895 +# 35| mu35_6898(unknown) = ^CallSideEffect : ~m? +# 35| v35_6899(void) = ^IndirectReadSideEffect[-1] : &:r35_6895, ~m? +# 35| mu35_6900(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6895 +# 35| r35_6901(bool) = Constant[0] : +# 35| v35_6902(void) = ConditionalBranch : r35_6901 #-----| False -> Block 494 #-----| True (back edge) -> Block 493 -# 1498| Block 494 -# 1498| r1498_1(glval) = VariableAddress[x493] : -# 1498| mu1498_2(String) = Uninitialized[x493] : &:r1498_1 -# 1498| r1498_3(glval) = FunctionAddress[String] : -# 1498| v1498_4(void) = Call[String] : func:r1498_3, this:r1498_1 -# 1498| mu1498_5(unknown) = ^CallSideEffect : ~m? -# 1498| mu1498_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1498_1 -# 1499| r1499_1(glval) = VariableAddress[x493] : -# 1499| r1499_2(glval) = FunctionAddress[~String] : -# 1499| v1499_3(void) = Call[~String] : func:r1499_2, this:r1499_1 -# 1499| mu1499_4(unknown) = ^CallSideEffect : ~m? -# 1499| v1499_5(void) = ^IndirectReadSideEffect[-1] : &:r1499_1, ~m? -# 1499| mu1499_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1499_1 -# 1499| r1499_7(bool) = Constant[0] : -# 1499| v1499_8(void) = ConditionalBranch : r1499_7 +# 35| Block 494 +# 35| r35_6903(glval) = VariableAddress[x493] : +# 35| mu35_6904(String) = Uninitialized[x493] : &:r35_6903 +# 35| r35_6905(glval) = FunctionAddress[String] : +# 35| v35_6906(void) = Call[String] : func:r35_6905, this:r35_6903 +# 35| mu35_6907(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6908(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6903 +# 35| r35_6909(glval) = VariableAddress[x493] : +# 35| r35_6910(glval) = FunctionAddress[~String] : +# 35| v35_6911(void) = Call[~String] : func:r35_6910, this:r35_6909 +# 35| mu35_6912(unknown) = ^CallSideEffect : ~m? +# 35| v35_6913(void) = ^IndirectReadSideEffect[-1] : &:r35_6909, ~m? +# 35| mu35_6914(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6909 +# 35| r35_6915(bool) = Constant[0] : +# 35| v35_6916(void) = ConditionalBranch : r35_6915 #-----| False -> Block 495 #-----| True (back edge) -> Block 494 -# 1501| Block 495 -# 1501| r1501_1(glval) = VariableAddress[x494] : -# 1501| mu1501_2(String) = Uninitialized[x494] : &:r1501_1 -# 1501| r1501_3(glval) = FunctionAddress[String] : -# 1501| v1501_4(void) = Call[String] : func:r1501_3, this:r1501_1 -# 1501| mu1501_5(unknown) = ^CallSideEffect : ~m? -# 1501| mu1501_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1501_1 -# 1502| r1502_1(glval) = VariableAddress[x494] : -# 1502| r1502_2(glval) = FunctionAddress[~String] : -# 1502| v1502_3(void) = Call[~String] : func:r1502_2, this:r1502_1 -# 1502| mu1502_4(unknown) = ^CallSideEffect : ~m? -# 1502| v1502_5(void) = ^IndirectReadSideEffect[-1] : &:r1502_1, ~m? -# 1502| mu1502_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1502_1 -# 1502| r1502_7(bool) = Constant[0] : -# 1502| v1502_8(void) = ConditionalBranch : r1502_7 +# 35| Block 495 +# 35| r35_6917(glval) = VariableAddress[x494] : +# 35| mu35_6918(String) = Uninitialized[x494] : &:r35_6917 +# 35| r35_6919(glval) = FunctionAddress[String] : +# 35| v35_6920(void) = Call[String] : func:r35_6919, this:r35_6917 +# 35| mu35_6921(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6922(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6917 +# 35| r35_6923(glval) = VariableAddress[x494] : +# 35| r35_6924(glval) = FunctionAddress[~String] : +# 35| v35_6925(void) = Call[~String] : func:r35_6924, this:r35_6923 +# 35| mu35_6926(unknown) = ^CallSideEffect : ~m? +# 35| v35_6927(void) = ^IndirectReadSideEffect[-1] : &:r35_6923, ~m? +# 35| mu35_6928(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6923 +# 35| r35_6929(bool) = Constant[0] : +# 35| v35_6930(void) = ConditionalBranch : r35_6929 #-----| False -> Block 496 #-----| True (back edge) -> Block 495 -# 1504| Block 496 -# 1504| r1504_1(glval) = VariableAddress[x495] : -# 1504| mu1504_2(String) = Uninitialized[x495] : &:r1504_1 -# 1504| r1504_3(glval) = FunctionAddress[String] : -# 1504| v1504_4(void) = Call[String] : func:r1504_3, this:r1504_1 -# 1504| mu1504_5(unknown) = ^CallSideEffect : ~m? -# 1504| mu1504_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1504_1 -# 1505| r1505_1(glval) = VariableAddress[x495] : -# 1505| r1505_2(glval) = FunctionAddress[~String] : -# 1505| v1505_3(void) = Call[~String] : func:r1505_2, this:r1505_1 -# 1505| mu1505_4(unknown) = ^CallSideEffect : ~m? -# 1505| v1505_5(void) = ^IndirectReadSideEffect[-1] : &:r1505_1, ~m? -# 1505| mu1505_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1505_1 -# 1505| r1505_7(bool) = Constant[0] : -# 1505| v1505_8(void) = ConditionalBranch : r1505_7 +# 35| Block 496 +# 35| r35_6931(glval) = VariableAddress[x495] : +# 35| mu35_6932(String) = Uninitialized[x495] : &:r35_6931 +# 35| r35_6933(glval) = FunctionAddress[String] : +# 35| v35_6934(void) = Call[String] : func:r35_6933, this:r35_6931 +# 35| mu35_6935(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6936(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6931 +# 35| r35_6937(glval) = VariableAddress[x495] : +# 35| r35_6938(glval) = FunctionAddress[~String] : +# 35| v35_6939(void) = Call[~String] : func:r35_6938, this:r35_6937 +# 35| mu35_6940(unknown) = ^CallSideEffect : ~m? +# 35| v35_6941(void) = ^IndirectReadSideEffect[-1] : &:r35_6937, ~m? +# 35| mu35_6942(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6937 +# 35| r35_6943(bool) = Constant[0] : +# 35| v35_6944(void) = ConditionalBranch : r35_6943 #-----| False -> Block 497 #-----| True (back edge) -> Block 496 -# 1507| Block 497 -# 1507| r1507_1(glval) = VariableAddress[x496] : -# 1507| mu1507_2(String) = Uninitialized[x496] : &:r1507_1 -# 1507| r1507_3(glval) = FunctionAddress[String] : -# 1507| v1507_4(void) = Call[String] : func:r1507_3, this:r1507_1 -# 1507| mu1507_5(unknown) = ^CallSideEffect : ~m? -# 1507| mu1507_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1507_1 -# 1508| r1508_1(glval) = VariableAddress[x496] : -# 1508| r1508_2(glval) = FunctionAddress[~String] : -# 1508| v1508_3(void) = Call[~String] : func:r1508_2, this:r1508_1 -# 1508| mu1508_4(unknown) = ^CallSideEffect : ~m? -# 1508| v1508_5(void) = ^IndirectReadSideEffect[-1] : &:r1508_1, ~m? -# 1508| mu1508_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1508_1 -# 1508| r1508_7(bool) = Constant[0] : -# 1508| v1508_8(void) = ConditionalBranch : r1508_7 +# 35| Block 497 +# 35| r35_6945(glval) = VariableAddress[x496] : +# 35| mu35_6946(String) = Uninitialized[x496] : &:r35_6945 +# 35| r35_6947(glval) = FunctionAddress[String] : +# 35| v35_6948(void) = Call[String] : func:r35_6947, this:r35_6945 +# 35| mu35_6949(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6950(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6945 +# 35| r35_6951(glval) = VariableAddress[x496] : +# 35| r35_6952(glval) = FunctionAddress[~String] : +# 35| v35_6953(void) = Call[~String] : func:r35_6952, this:r35_6951 +# 35| mu35_6954(unknown) = ^CallSideEffect : ~m? +# 35| v35_6955(void) = ^IndirectReadSideEffect[-1] : &:r35_6951, ~m? +# 35| mu35_6956(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6951 +# 35| r35_6957(bool) = Constant[0] : +# 35| v35_6958(void) = ConditionalBranch : r35_6957 #-----| False -> Block 498 #-----| True (back edge) -> Block 497 -# 1510| Block 498 -# 1510| r1510_1(glval) = VariableAddress[x497] : -# 1510| mu1510_2(String) = Uninitialized[x497] : &:r1510_1 -# 1510| r1510_3(glval) = FunctionAddress[String] : -# 1510| v1510_4(void) = Call[String] : func:r1510_3, this:r1510_1 -# 1510| mu1510_5(unknown) = ^CallSideEffect : ~m? -# 1510| mu1510_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1510_1 -# 1511| r1511_1(glval) = VariableAddress[x497] : -# 1511| r1511_2(glval) = FunctionAddress[~String] : -# 1511| v1511_3(void) = Call[~String] : func:r1511_2, this:r1511_1 -# 1511| mu1511_4(unknown) = ^CallSideEffect : ~m? -# 1511| v1511_5(void) = ^IndirectReadSideEffect[-1] : &:r1511_1, ~m? -# 1511| mu1511_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1511_1 -# 1511| r1511_7(bool) = Constant[0] : -# 1511| v1511_8(void) = ConditionalBranch : r1511_7 +# 35| Block 498 +# 35| r35_6959(glval) = VariableAddress[x497] : +# 35| mu35_6960(String) = Uninitialized[x497] : &:r35_6959 +# 35| r35_6961(glval) = FunctionAddress[String] : +# 35| v35_6962(void) = Call[String] : func:r35_6961, this:r35_6959 +# 35| mu35_6963(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6964(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6959 +# 35| r35_6965(glval) = VariableAddress[x497] : +# 35| r35_6966(glval) = FunctionAddress[~String] : +# 35| v35_6967(void) = Call[~String] : func:r35_6966, this:r35_6965 +# 35| mu35_6968(unknown) = ^CallSideEffect : ~m? +# 35| v35_6969(void) = ^IndirectReadSideEffect[-1] : &:r35_6965, ~m? +# 35| mu35_6970(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6965 +# 35| r35_6971(bool) = Constant[0] : +# 35| v35_6972(void) = ConditionalBranch : r35_6971 #-----| False -> Block 499 #-----| True (back edge) -> Block 498 -# 1513| Block 499 -# 1513| r1513_1(glval) = VariableAddress[x498] : -# 1513| mu1513_2(String) = Uninitialized[x498] : &:r1513_1 -# 1513| r1513_3(glval) = FunctionAddress[String] : -# 1513| v1513_4(void) = Call[String] : func:r1513_3, this:r1513_1 -# 1513| mu1513_5(unknown) = ^CallSideEffect : ~m? -# 1513| mu1513_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1513_1 -# 1514| r1514_1(glval) = VariableAddress[x498] : -# 1514| r1514_2(glval) = FunctionAddress[~String] : -# 1514| v1514_3(void) = Call[~String] : func:r1514_2, this:r1514_1 -# 1514| mu1514_4(unknown) = ^CallSideEffect : ~m? -# 1514| v1514_5(void) = ^IndirectReadSideEffect[-1] : &:r1514_1, ~m? -# 1514| mu1514_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1514_1 -# 1514| r1514_7(bool) = Constant[0] : -# 1514| v1514_8(void) = ConditionalBranch : r1514_7 +# 35| Block 499 +# 35| r35_6973(glval) = VariableAddress[x498] : +# 35| mu35_6974(String) = Uninitialized[x498] : &:r35_6973 +# 35| r35_6975(glval) = FunctionAddress[String] : +# 35| v35_6976(void) = Call[String] : func:r35_6975, this:r35_6973 +# 35| mu35_6977(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6978(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6973 +# 35| r35_6979(glval) = VariableAddress[x498] : +# 35| r35_6980(glval) = FunctionAddress[~String] : +# 35| v35_6981(void) = Call[~String] : func:r35_6980, this:r35_6979 +# 35| mu35_6982(unknown) = ^CallSideEffect : ~m? +# 35| v35_6983(void) = ^IndirectReadSideEffect[-1] : &:r35_6979, ~m? +# 35| mu35_6984(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6979 +# 35| r35_6985(bool) = Constant[0] : +# 35| v35_6986(void) = ConditionalBranch : r35_6985 #-----| False -> Block 500 #-----| True (back edge) -> Block 499 -# 1516| Block 500 -# 1516| r1516_1(glval) = VariableAddress[x499] : -# 1516| mu1516_2(String) = Uninitialized[x499] : &:r1516_1 -# 1516| r1516_3(glval) = FunctionAddress[String] : -# 1516| v1516_4(void) = Call[String] : func:r1516_3, this:r1516_1 -# 1516| mu1516_5(unknown) = ^CallSideEffect : ~m? -# 1516| mu1516_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1516_1 -# 1517| r1517_1(glval) = VariableAddress[x499] : -# 1517| r1517_2(glval) = FunctionAddress[~String] : -# 1517| v1517_3(void) = Call[~String] : func:r1517_2, this:r1517_1 -# 1517| mu1517_4(unknown) = ^CallSideEffect : ~m? -# 1517| v1517_5(void) = ^IndirectReadSideEffect[-1] : &:r1517_1, ~m? -# 1517| mu1517_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1517_1 -# 1517| r1517_7(bool) = Constant[0] : -# 1517| v1517_8(void) = ConditionalBranch : r1517_7 +# 35| Block 500 +# 35| r35_6987(glval) = VariableAddress[x499] : +# 35| mu35_6988(String) = Uninitialized[x499] : &:r35_6987 +# 35| r35_6989(glval) = FunctionAddress[String] : +# 35| v35_6990(void) = Call[String] : func:r35_6989, this:r35_6987 +# 35| mu35_6991(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6992(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6987 +# 35| r35_6993(glval) = VariableAddress[x499] : +# 35| r35_6994(glval) = FunctionAddress[~String] : +# 35| v35_6995(void) = Call[~String] : func:r35_6994, this:r35_6993 +# 35| mu35_6996(unknown) = ^CallSideEffect : ~m? +# 35| v35_6997(void) = ^IndirectReadSideEffect[-1] : &:r35_6993, ~m? +# 35| mu35_6998(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_6993 +# 35| r35_6999(bool) = Constant[0] : +# 35| v35_7000(void) = ConditionalBranch : r35_6999 #-----| False -> Block 501 #-----| True (back edge) -> Block 500 -# 1519| Block 501 -# 1519| r1519_1(glval) = VariableAddress[x500] : -# 1519| mu1519_2(String) = Uninitialized[x500] : &:r1519_1 -# 1519| r1519_3(glval) = FunctionAddress[String] : -# 1519| v1519_4(void) = Call[String] : func:r1519_3, this:r1519_1 -# 1519| mu1519_5(unknown) = ^CallSideEffect : ~m? -# 1519| mu1519_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1519_1 -# 1520| r1520_1(glval) = VariableAddress[x500] : -# 1520| r1520_2(glval) = FunctionAddress[~String] : -# 1520| v1520_3(void) = Call[~String] : func:r1520_2, this:r1520_1 -# 1520| mu1520_4(unknown) = ^CallSideEffect : ~m? -# 1520| v1520_5(void) = ^IndirectReadSideEffect[-1] : &:r1520_1, ~m? -# 1520| mu1520_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1520_1 -# 1520| r1520_7(bool) = Constant[0] : -# 1520| v1520_8(void) = ConditionalBranch : r1520_7 +# 35| Block 501 +# 35| r35_7001(glval) = VariableAddress[x500] : +# 35| mu35_7002(String) = Uninitialized[x500] : &:r35_7001 +# 35| r35_7003(glval) = FunctionAddress[String] : +# 35| v35_7004(void) = Call[String] : func:r35_7003, this:r35_7001 +# 35| mu35_7005(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7006(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7001 +# 35| r35_7007(glval) = VariableAddress[x500] : +# 35| r35_7008(glval) = FunctionAddress[~String] : +# 35| v35_7009(void) = Call[~String] : func:r35_7008, this:r35_7007 +# 35| mu35_7010(unknown) = ^CallSideEffect : ~m? +# 35| v35_7011(void) = ^IndirectReadSideEffect[-1] : &:r35_7007, ~m? +# 35| mu35_7012(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7007 +# 35| r35_7013(bool) = Constant[0] : +# 35| v35_7014(void) = ConditionalBranch : r35_7013 #-----| False -> Block 502 #-----| True (back edge) -> Block 501 -# 1522| Block 502 -# 1522| r1522_1(glval) = VariableAddress[x501] : -# 1522| mu1522_2(String) = Uninitialized[x501] : &:r1522_1 -# 1522| r1522_3(glval) = FunctionAddress[String] : -# 1522| v1522_4(void) = Call[String] : func:r1522_3, this:r1522_1 -# 1522| mu1522_5(unknown) = ^CallSideEffect : ~m? -# 1522| mu1522_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1522_1 -# 1523| r1523_1(glval) = VariableAddress[x501] : -# 1523| r1523_2(glval) = FunctionAddress[~String] : -# 1523| v1523_3(void) = Call[~String] : func:r1523_2, this:r1523_1 -# 1523| mu1523_4(unknown) = ^CallSideEffect : ~m? -# 1523| v1523_5(void) = ^IndirectReadSideEffect[-1] : &:r1523_1, ~m? -# 1523| mu1523_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1523_1 -# 1523| r1523_7(bool) = Constant[0] : -# 1523| v1523_8(void) = ConditionalBranch : r1523_7 +# 35| Block 502 +# 35| r35_7015(glval) = VariableAddress[x501] : +# 35| mu35_7016(String) = Uninitialized[x501] : &:r35_7015 +# 35| r35_7017(glval) = FunctionAddress[String] : +# 35| v35_7018(void) = Call[String] : func:r35_7017, this:r35_7015 +# 35| mu35_7019(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7020(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7015 +# 35| r35_7021(glval) = VariableAddress[x501] : +# 35| r35_7022(glval) = FunctionAddress[~String] : +# 35| v35_7023(void) = Call[~String] : func:r35_7022, this:r35_7021 +# 35| mu35_7024(unknown) = ^CallSideEffect : ~m? +# 35| v35_7025(void) = ^IndirectReadSideEffect[-1] : &:r35_7021, ~m? +# 35| mu35_7026(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7021 +# 35| r35_7027(bool) = Constant[0] : +# 35| v35_7028(void) = ConditionalBranch : r35_7027 #-----| False -> Block 503 #-----| True (back edge) -> Block 502 -# 1525| Block 503 -# 1525| r1525_1(glval) = VariableAddress[x502] : -# 1525| mu1525_2(String) = Uninitialized[x502] : &:r1525_1 -# 1525| r1525_3(glval) = FunctionAddress[String] : -# 1525| v1525_4(void) = Call[String] : func:r1525_3, this:r1525_1 -# 1525| mu1525_5(unknown) = ^CallSideEffect : ~m? -# 1525| mu1525_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1525_1 -# 1526| r1526_1(glval) = VariableAddress[x502] : -# 1526| r1526_2(glval) = FunctionAddress[~String] : -# 1526| v1526_3(void) = Call[~String] : func:r1526_2, this:r1526_1 -# 1526| mu1526_4(unknown) = ^CallSideEffect : ~m? -# 1526| v1526_5(void) = ^IndirectReadSideEffect[-1] : &:r1526_1, ~m? -# 1526| mu1526_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1526_1 -# 1526| r1526_7(bool) = Constant[0] : -# 1526| v1526_8(void) = ConditionalBranch : r1526_7 +# 35| Block 503 +# 35| r35_7029(glval) = VariableAddress[x502] : +# 35| mu35_7030(String) = Uninitialized[x502] : &:r35_7029 +# 35| r35_7031(glval) = FunctionAddress[String] : +# 35| v35_7032(void) = Call[String] : func:r35_7031, this:r35_7029 +# 35| mu35_7033(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7034(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7029 +# 35| r35_7035(glval) = VariableAddress[x502] : +# 35| r35_7036(glval) = FunctionAddress[~String] : +# 35| v35_7037(void) = Call[~String] : func:r35_7036, this:r35_7035 +# 35| mu35_7038(unknown) = ^CallSideEffect : ~m? +# 35| v35_7039(void) = ^IndirectReadSideEffect[-1] : &:r35_7035, ~m? +# 35| mu35_7040(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7035 +# 35| r35_7041(bool) = Constant[0] : +# 35| v35_7042(void) = ConditionalBranch : r35_7041 #-----| False -> Block 504 #-----| True (back edge) -> Block 503 -# 1528| Block 504 -# 1528| r1528_1(glval) = VariableAddress[x503] : -# 1528| mu1528_2(String) = Uninitialized[x503] : &:r1528_1 -# 1528| r1528_3(glval) = FunctionAddress[String] : -# 1528| v1528_4(void) = Call[String] : func:r1528_3, this:r1528_1 -# 1528| mu1528_5(unknown) = ^CallSideEffect : ~m? -# 1528| mu1528_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1528_1 -# 1529| r1529_1(glval) = VariableAddress[x503] : -# 1529| r1529_2(glval) = FunctionAddress[~String] : -# 1529| v1529_3(void) = Call[~String] : func:r1529_2, this:r1529_1 -# 1529| mu1529_4(unknown) = ^CallSideEffect : ~m? -# 1529| v1529_5(void) = ^IndirectReadSideEffect[-1] : &:r1529_1, ~m? -# 1529| mu1529_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1529_1 -# 1529| r1529_7(bool) = Constant[0] : -# 1529| v1529_8(void) = ConditionalBranch : r1529_7 +# 35| Block 504 +# 35| r35_7043(glval) = VariableAddress[x503] : +# 35| mu35_7044(String) = Uninitialized[x503] : &:r35_7043 +# 35| r35_7045(glval) = FunctionAddress[String] : +# 35| v35_7046(void) = Call[String] : func:r35_7045, this:r35_7043 +# 35| mu35_7047(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7048(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7043 +# 35| r35_7049(glval) = VariableAddress[x503] : +# 35| r35_7050(glval) = FunctionAddress[~String] : +# 35| v35_7051(void) = Call[~String] : func:r35_7050, this:r35_7049 +# 35| mu35_7052(unknown) = ^CallSideEffect : ~m? +# 35| v35_7053(void) = ^IndirectReadSideEffect[-1] : &:r35_7049, ~m? +# 35| mu35_7054(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7049 +# 35| r35_7055(bool) = Constant[0] : +# 35| v35_7056(void) = ConditionalBranch : r35_7055 #-----| False -> Block 505 #-----| True (back edge) -> Block 504 -# 1531| Block 505 -# 1531| r1531_1(glval) = VariableAddress[x504] : -# 1531| mu1531_2(String) = Uninitialized[x504] : &:r1531_1 -# 1531| r1531_3(glval) = FunctionAddress[String] : -# 1531| v1531_4(void) = Call[String] : func:r1531_3, this:r1531_1 -# 1531| mu1531_5(unknown) = ^CallSideEffect : ~m? -# 1531| mu1531_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1531_1 -# 1532| r1532_1(glval) = VariableAddress[x504] : -# 1532| r1532_2(glval) = FunctionAddress[~String] : -# 1532| v1532_3(void) = Call[~String] : func:r1532_2, this:r1532_1 -# 1532| mu1532_4(unknown) = ^CallSideEffect : ~m? -# 1532| v1532_5(void) = ^IndirectReadSideEffect[-1] : &:r1532_1, ~m? -# 1532| mu1532_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1532_1 -# 1532| r1532_7(bool) = Constant[0] : -# 1532| v1532_8(void) = ConditionalBranch : r1532_7 +# 35| Block 505 +# 35| r35_7057(glval) = VariableAddress[x504] : +# 35| mu35_7058(String) = Uninitialized[x504] : &:r35_7057 +# 35| r35_7059(glval) = FunctionAddress[String] : +# 35| v35_7060(void) = Call[String] : func:r35_7059, this:r35_7057 +# 35| mu35_7061(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7062(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7057 +# 35| r35_7063(glval) = VariableAddress[x504] : +# 35| r35_7064(glval) = FunctionAddress[~String] : +# 35| v35_7065(void) = Call[~String] : func:r35_7064, this:r35_7063 +# 35| mu35_7066(unknown) = ^CallSideEffect : ~m? +# 35| v35_7067(void) = ^IndirectReadSideEffect[-1] : &:r35_7063, ~m? +# 35| mu35_7068(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7063 +# 35| r35_7069(bool) = Constant[0] : +# 35| v35_7070(void) = ConditionalBranch : r35_7069 #-----| False -> Block 506 #-----| True (back edge) -> Block 505 -# 1534| Block 506 -# 1534| r1534_1(glval) = VariableAddress[x505] : -# 1534| mu1534_2(String) = Uninitialized[x505] : &:r1534_1 -# 1534| r1534_3(glval) = FunctionAddress[String] : -# 1534| v1534_4(void) = Call[String] : func:r1534_3, this:r1534_1 -# 1534| mu1534_5(unknown) = ^CallSideEffect : ~m? -# 1534| mu1534_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1534_1 -# 1535| r1535_1(glval) = VariableAddress[x505] : -# 1535| r1535_2(glval) = FunctionAddress[~String] : -# 1535| v1535_3(void) = Call[~String] : func:r1535_2, this:r1535_1 -# 1535| mu1535_4(unknown) = ^CallSideEffect : ~m? -# 1535| v1535_5(void) = ^IndirectReadSideEffect[-1] : &:r1535_1, ~m? -# 1535| mu1535_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1535_1 -# 1535| r1535_7(bool) = Constant[0] : -# 1535| v1535_8(void) = ConditionalBranch : r1535_7 +# 35| Block 506 +# 35| r35_7071(glval) = VariableAddress[x505] : +# 35| mu35_7072(String) = Uninitialized[x505] : &:r35_7071 +# 35| r35_7073(glval) = FunctionAddress[String] : +# 35| v35_7074(void) = Call[String] : func:r35_7073, this:r35_7071 +# 35| mu35_7075(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7076(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7071 +# 35| r35_7077(glval) = VariableAddress[x505] : +# 35| r35_7078(glval) = FunctionAddress[~String] : +# 35| v35_7079(void) = Call[~String] : func:r35_7078, this:r35_7077 +# 35| mu35_7080(unknown) = ^CallSideEffect : ~m? +# 35| v35_7081(void) = ^IndirectReadSideEffect[-1] : &:r35_7077, ~m? +# 35| mu35_7082(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7077 +# 35| r35_7083(bool) = Constant[0] : +# 35| v35_7084(void) = ConditionalBranch : r35_7083 #-----| False -> Block 507 #-----| True (back edge) -> Block 506 -# 1537| Block 507 -# 1537| r1537_1(glval) = VariableAddress[x506] : -# 1537| mu1537_2(String) = Uninitialized[x506] : &:r1537_1 -# 1537| r1537_3(glval) = FunctionAddress[String] : -# 1537| v1537_4(void) = Call[String] : func:r1537_3, this:r1537_1 -# 1537| mu1537_5(unknown) = ^CallSideEffect : ~m? -# 1537| mu1537_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1537_1 -# 1538| r1538_1(glval) = VariableAddress[x506] : -# 1538| r1538_2(glval) = FunctionAddress[~String] : -# 1538| v1538_3(void) = Call[~String] : func:r1538_2, this:r1538_1 -# 1538| mu1538_4(unknown) = ^CallSideEffect : ~m? -# 1538| v1538_5(void) = ^IndirectReadSideEffect[-1] : &:r1538_1, ~m? -# 1538| mu1538_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1538_1 -# 1538| r1538_7(bool) = Constant[0] : -# 1538| v1538_8(void) = ConditionalBranch : r1538_7 +# 35| Block 507 +# 35| r35_7085(glval) = VariableAddress[x506] : +# 35| mu35_7086(String) = Uninitialized[x506] : &:r35_7085 +# 35| r35_7087(glval) = FunctionAddress[String] : +# 35| v35_7088(void) = Call[String] : func:r35_7087, this:r35_7085 +# 35| mu35_7089(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7090(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7085 +# 35| r35_7091(glval) = VariableAddress[x506] : +# 35| r35_7092(glval) = FunctionAddress[~String] : +# 35| v35_7093(void) = Call[~String] : func:r35_7092, this:r35_7091 +# 35| mu35_7094(unknown) = ^CallSideEffect : ~m? +# 35| v35_7095(void) = ^IndirectReadSideEffect[-1] : &:r35_7091, ~m? +# 35| mu35_7096(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7091 +# 35| r35_7097(bool) = Constant[0] : +# 35| v35_7098(void) = ConditionalBranch : r35_7097 #-----| False -> Block 508 #-----| True (back edge) -> Block 507 -# 1540| Block 508 -# 1540| r1540_1(glval) = VariableAddress[x507] : -# 1540| mu1540_2(String) = Uninitialized[x507] : &:r1540_1 -# 1540| r1540_3(glval) = FunctionAddress[String] : -# 1540| v1540_4(void) = Call[String] : func:r1540_3, this:r1540_1 -# 1540| mu1540_5(unknown) = ^CallSideEffect : ~m? -# 1540| mu1540_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1540_1 -# 1541| r1541_1(glval) = VariableAddress[x507] : -# 1541| r1541_2(glval) = FunctionAddress[~String] : -# 1541| v1541_3(void) = Call[~String] : func:r1541_2, this:r1541_1 -# 1541| mu1541_4(unknown) = ^CallSideEffect : ~m? -# 1541| v1541_5(void) = ^IndirectReadSideEffect[-1] : &:r1541_1, ~m? -# 1541| mu1541_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1541_1 -# 1541| r1541_7(bool) = Constant[0] : -# 1541| v1541_8(void) = ConditionalBranch : r1541_7 +# 35| Block 508 +# 35| r35_7099(glval) = VariableAddress[x507] : +# 35| mu35_7100(String) = Uninitialized[x507] : &:r35_7099 +# 35| r35_7101(glval) = FunctionAddress[String] : +# 35| v35_7102(void) = Call[String] : func:r35_7101, this:r35_7099 +# 35| mu35_7103(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7099 +# 35| r35_7105(glval) = VariableAddress[x507] : +# 35| r35_7106(glval) = FunctionAddress[~String] : +# 35| v35_7107(void) = Call[~String] : func:r35_7106, this:r35_7105 +# 35| mu35_7108(unknown) = ^CallSideEffect : ~m? +# 35| v35_7109(void) = ^IndirectReadSideEffect[-1] : &:r35_7105, ~m? +# 35| mu35_7110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7105 +# 35| r35_7111(bool) = Constant[0] : +# 35| v35_7112(void) = ConditionalBranch : r35_7111 #-----| False -> Block 509 #-----| True (back edge) -> Block 508 -# 1543| Block 509 -# 1543| r1543_1(glval) = VariableAddress[x508] : -# 1543| mu1543_2(String) = Uninitialized[x508] : &:r1543_1 -# 1543| r1543_3(glval) = FunctionAddress[String] : -# 1543| v1543_4(void) = Call[String] : func:r1543_3, this:r1543_1 -# 1543| mu1543_5(unknown) = ^CallSideEffect : ~m? -# 1543| mu1543_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1543_1 -# 1544| r1544_1(glval) = VariableAddress[x508] : -# 1544| r1544_2(glval) = FunctionAddress[~String] : -# 1544| v1544_3(void) = Call[~String] : func:r1544_2, this:r1544_1 -# 1544| mu1544_4(unknown) = ^CallSideEffect : ~m? -# 1544| v1544_5(void) = ^IndirectReadSideEffect[-1] : &:r1544_1, ~m? -# 1544| mu1544_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1544_1 -# 1544| r1544_7(bool) = Constant[0] : -# 1544| v1544_8(void) = ConditionalBranch : r1544_7 +# 35| Block 509 +# 35| r35_7113(glval) = VariableAddress[x508] : +# 35| mu35_7114(String) = Uninitialized[x508] : &:r35_7113 +# 35| r35_7115(glval) = FunctionAddress[String] : +# 35| v35_7116(void) = Call[String] : func:r35_7115, this:r35_7113 +# 35| mu35_7117(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7113 +# 35| r35_7119(glval) = VariableAddress[x508] : +# 35| r35_7120(glval) = FunctionAddress[~String] : +# 35| v35_7121(void) = Call[~String] : func:r35_7120, this:r35_7119 +# 35| mu35_7122(unknown) = ^CallSideEffect : ~m? +# 35| v35_7123(void) = ^IndirectReadSideEffect[-1] : &:r35_7119, ~m? +# 35| mu35_7124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7119 +# 35| r35_7125(bool) = Constant[0] : +# 35| v35_7126(void) = ConditionalBranch : r35_7125 #-----| False -> Block 510 #-----| True (back edge) -> Block 509 -# 1546| Block 510 -# 1546| r1546_1(glval) = VariableAddress[x509] : -# 1546| mu1546_2(String) = Uninitialized[x509] : &:r1546_1 -# 1546| r1546_3(glval) = FunctionAddress[String] : -# 1546| v1546_4(void) = Call[String] : func:r1546_3, this:r1546_1 -# 1546| mu1546_5(unknown) = ^CallSideEffect : ~m? -# 1546| mu1546_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1546_1 -# 1547| r1547_1(glval) = VariableAddress[x509] : -# 1547| r1547_2(glval) = FunctionAddress[~String] : -# 1547| v1547_3(void) = Call[~String] : func:r1547_2, this:r1547_1 -# 1547| mu1547_4(unknown) = ^CallSideEffect : ~m? -# 1547| v1547_5(void) = ^IndirectReadSideEffect[-1] : &:r1547_1, ~m? -# 1547| mu1547_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1547_1 -# 1547| r1547_7(bool) = Constant[0] : -# 1547| v1547_8(void) = ConditionalBranch : r1547_7 +# 35| Block 510 +# 35| r35_7127(glval) = VariableAddress[x509] : +# 35| mu35_7128(String) = Uninitialized[x509] : &:r35_7127 +# 35| r35_7129(glval) = FunctionAddress[String] : +# 35| v35_7130(void) = Call[String] : func:r35_7129, this:r35_7127 +# 35| mu35_7131(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7127 +# 35| r35_7133(glval) = VariableAddress[x509] : +# 35| r35_7134(glval) = FunctionAddress[~String] : +# 35| v35_7135(void) = Call[~String] : func:r35_7134, this:r35_7133 +# 35| mu35_7136(unknown) = ^CallSideEffect : ~m? +# 35| v35_7137(void) = ^IndirectReadSideEffect[-1] : &:r35_7133, ~m? +# 35| mu35_7138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7133 +# 35| r35_7139(bool) = Constant[0] : +# 35| v35_7140(void) = ConditionalBranch : r35_7139 #-----| False -> Block 511 #-----| True (back edge) -> Block 510 -# 1549| Block 511 -# 1549| r1549_1(glval) = VariableAddress[x510] : -# 1549| mu1549_2(String) = Uninitialized[x510] : &:r1549_1 -# 1549| r1549_3(glval) = FunctionAddress[String] : -# 1549| v1549_4(void) = Call[String] : func:r1549_3, this:r1549_1 -# 1549| mu1549_5(unknown) = ^CallSideEffect : ~m? -# 1549| mu1549_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1549_1 -# 1550| r1550_1(glval) = VariableAddress[x510] : -# 1550| r1550_2(glval) = FunctionAddress[~String] : -# 1550| v1550_3(void) = Call[~String] : func:r1550_2, this:r1550_1 -# 1550| mu1550_4(unknown) = ^CallSideEffect : ~m? -# 1550| v1550_5(void) = ^IndirectReadSideEffect[-1] : &:r1550_1, ~m? -# 1550| mu1550_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1550_1 -# 1550| r1550_7(bool) = Constant[0] : -# 1550| v1550_8(void) = ConditionalBranch : r1550_7 +# 35| Block 511 +# 35| r35_7141(glval) = VariableAddress[x510] : +# 35| mu35_7142(String) = Uninitialized[x510] : &:r35_7141 +# 35| r35_7143(glval) = FunctionAddress[String] : +# 35| v35_7144(void) = Call[String] : func:r35_7143, this:r35_7141 +# 35| mu35_7145(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7141 +# 35| r35_7147(glval) = VariableAddress[x510] : +# 35| r35_7148(glval) = FunctionAddress[~String] : +# 35| v35_7149(void) = Call[~String] : func:r35_7148, this:r35_7147 +# 35| mu35_7150(unknown) = ^CallSideEffect : ~m? +# 35| v35_7151(void) = ^IndirectReadSideEffect[-1] : &:r35_7147, ~m? +# 35| mu35_7152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7147 +# 35| r35_7153(bool) = Constant[0] : +# 35| v35_7154(void) = ConditionalBranch : r35_7153 #-----| False -> Block 512 #-----| True (back edge) -> Block 511 -# 1552| Block 512 -# 1552| r1552_1(glval) = VariableAddress[x511] : -# 1552| mu1552_2(String) = Uninitialized[x511] : &:r1552_1 -# 1552| r1552_3(glval) = FunctionAddress[String] : -# 1552| v1552_4(void) = Call[String] : func:r1552_3, this:r1552_1 -# 1552| mu1552_5(unknown) = ^CallSideEffect : ~m? -# 1552| mu1552_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1552_1 -# 1553| r1553_1(glval) = VariableAddress[x511] : -# 1553| r1553_2(glval) = FunctionAddress[~String] : -# 1553| v1553_3(void) = Call[~String] : func:r1553_2, this:r1553_1 -# 1553| mu1553_4(unknown) = ^CallSideEffect : ~m? -# 1553| v1553_5(void) = ^IndirectReadSideEffect[-1] : &:r1553_1, ~m? -# 1553| mu1553_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1553_1 -# 1553| r1553_7(bool) = Constant[0] : -# 1553| v1553_8(void) = ConditionalBranch : r1553_7 +# 35| Block 512 +# 35| r35_7155(glval) = VariableAddress[x511] : +# 35| mu35_7156(String) = Uninitialized[x511] : &:r35_7155 +# 35| r35_7157(glval) = FunctionAddress[String] : +# 35| v35_7158(void) = Call[String] : func:r35_7157, this:r35_7155 +# 35| mu35_7159(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7155 +# 35| r35_7161(glval) = VariableAddress[x511] : +# 35| r35_7162(glval) = FunctionAddress[~String] : +# 35| v35_7163(void) = Call[~String] : func:r35_7162, this:r35_7161 +# 35| mu35_7164(unknown) = ^CallSideEffect : ~m? +# 35| v35_7165(void) = ^IndirectReadSideEffect[-1] : &:r35_7161, ~m? +# 35| mu35_7166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7161 +# 35| r35_7167(bool) = Constant[0] : +# 35| v35_7168(void) = ConditionalBranch : r35_7167 #-----| False -> Block 513 #-----| True (back edge) -> Block 512 -# 1555| Block 513 -# 1555| r1555_1(glval) = VariableAddress[x512] : -# 1555| mu1555_2(String) = Uninitialized[x512] : &:r1555_1 -# 1555| r1555_3(glval) = FunctionAddress[String] : -# 1555| v1555_4(void) = Call[String] : func:r1555_3, this:r1555_1 -# 1555| mu1555_5(unknown) = ^CallSideEffect : ~m? -# 1555| mu1555_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1555_1 -# 1556| r1556_1(glval) = VariableAddress[x512] : -# 1556| r1556_2(glval) = FunctionAddress[~String] : -# 1556| v1556_3(void) = Call[~String] : func:r1556_2, this:r1556_1 -# 1556| mu1556_4(unknown) = ^CallSideEffect : ~m? -# 1556| v1556_5(void) = ^IndirectReadSideEffect[-1] : &:r1556_1, ~m? -# 1556| mu1556_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1556_1 -# 1556| r1556_7(bool) = Constant[0] : -# 1556| v1556_8(void) = ConditionalBranch : r1556_7 +# 35| Block 513 +# 35| r35_7169(glval) = VariableAddress[x512] : +# 35| mu35_7170(String) = Uninitialized[x512] : &:r35_7169 +# 35| r35_7171(glval) = FunctionAddress[String] : +# 35| v35_7172(void) = Call[String] : func:r35_7171, this:r35_7169 +# 35| mu35_7173(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7169 +# 35| r35_7175(glval) = VariableAddress[x512] : +# 35| r35_7176(glval) = FunctionAddress[~String] : +# 35| v35_7177(void) = Call[~String] : func:r35_7176, this:r35_7175 +# 35| mu35_7178(unknown) = ^CallSideEffect : ~m? +# 35| v35_7179(void) = ^IndirectReadSideEffect[-1] : &:r35_7175, ~m? +# 35| mu35_7180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7175 +# 35| r35_7181(bool) = Constant[0] : +# 35| v35_7182(void) = ConditionalBranch : r35_7181 #-----| False -> Block 514 #-----| True (back edge) -> Block 513 -# 1558| Block 514 -# 1558| r1558_1(glval) = VariableAddress[x513] : -# 1558| mu1558_2(String) = Uninitialized[x513] : &:r1558_1 -# 1558| r1558_3(glval) = FunctionAddress[String] : -# 1558| v1558_4(void) = Call[String] : func:r1558_3, this:r1558_1 -# 1558| mu1558_5(unknown) = ^CallSideEffect : ~m? -# 1558| mu1558_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1558_1 -# 1559| r1559_1(glval) = VariableAddress[x513] : -# 1559| r1559_2(glval) = FunctionAddress[~String] : -# 1559| v1559_3(void) = Call[~String] : func:r1559_2, this:r1559_1 -# 1559| mu1559_4(unknown) = ^CallSideEffect : ~m? -# 1559| v1559_5(void) = ^IndirectReadSideEffect[-1] : &:r1559_1, ~m? -# 1559| mu1559_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1559_1 -# 1559| r1559_7(bool) = Constant[0] : -# 1559| v1559_8(void) = ConditionalBranch : r1559_7 +# 35| Block 514 +# 35| r35_7183(glval) = VariableAddress[x513] : +# 35| mu35_7184(String) = Uninitialized[x513] : &:r35_7183 +# 35| r35_7185(glval) = FunctionAddress[String] : +# 35| v35_7186(void) = Call[String] : func:r35_7185, this:r35_7183 +# 35| mu35_7187(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7183 +# 35| r35_7189(glval) = VariableAddress[x513] : +# 35| r35_7190(glval) = FunctionAddress[~String] : +# 35| v35_7191(void) = Call[~String] : func:r35_7190, this:r35_7189 +# 35| mu35_7192(unknown) = ^CallSideEffect : ~m? +# 35| v35_7193(void) = ^IndirectReadSideEffect[-1] : &:r35_7189, ~m? +# 35| mu35_7194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7189 +# 35| r35_7195(bool) = Constant[0] : +# 35| v35_7196(void) = ConditionalBranch : r35_7195 #-----| False -> Block 515 #-----| True (back edge) -> Block 514 -# 1561| Block 515 -# 1561| r1561_1(glval) = VariableAddress[x514] : -# 1561| mu1561_2(String) = Uninitialized[x514] : &:r1561_1 -# 1561| r1561_3(glval) = FunctionAddress[String] : -# 1561| v1561_4(void) = Call[String] : func:r1561_3, this:r1561_1 -# 1561| mu1561_5(unknown) = ^CallSideEffect : ~m? -# 1561| mu1561_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1561_1 -# 1562| r1562_1(glval) = VariableAddress[x514] : -# 1562| r1562_2(glval) = FunctionAddress[~String] : -# 1562| v1562_3(void) = Call[~String] : func:r1562_2, this:r1562_1 -# 1562| mu1562_4(unknown) = ^CallSideEffect : ~m? -# 1562| v1562_5(void) = ^IndirectReadSideEffect[-1] : &:r1562_1, ~m? -# 1562| mu1562_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1562_1 -# 1562| r1562_7(bool) = Constant[0] : -# 1562| v1562_8(void) = ConditionalBranch : r1562_7 +# 35| Block 515 +# 35| r35_7197(glval) = VariableAddress[x514] : +# 35| mu35_7198(String) = Uninitialized[x514] : &:r35_7197 +# 35| r35_7199(glval) = FunctionAddress[String] : +# 35| v35_7200(void) = Call[String] : func:r35_7199, this:r35_7197 +# 35| mu35_7201(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7197 +# 35| r35_7203(glval) = VariableAddress[x514] : +# 35| r35_7204(glval) = FunctionAddress[~String] : +# 35| v35_7205(void) = Call[~String] : func:r35_7204, this:r35_7203 +# 35| mu35_7206(unknown) = ^CallSideEffect : ~m? +# 35| v35_7207(void) = ^IndirectReadSideEffect[-1] : &:r35_7203, ~m? +# 35| mu35_7208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7203 +# 35| r35_7209(bool) = Constant[0] : +# 35| v35_7210(void) = ConditionalBranch : r35_7209 #-----| False -> Block 516 #-----| True (back edge) -> Block 515 -# 1564| Block 516 -# 1564| r1564_1(glval) = VariableAddress[x515] : -# 1564| mu1564_2(String) = Uninitialized[x515] : &:r1564_1 -# 1564| r1564_3(glval) = FunctionAddress[String] : -# 1564| v1564_4(void) = Call[String] : func:r1564_3, this:r1564_1 -# 1564| mu1564_5(unknown) = ^CallSideEffect : ~m? -# 1564| mu1564_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1564_1 -# 1565| r1565_1(glval) = VariableAddress[x515] : -# 1565| r1565_2(glval) = FunctionAddress[~String] : -# 1565| v1565_3(void) = Call[~String] : func:r1565_2, this:r1565_1 -# 1565| mu1565_4(unknown) = ^CallSideEffect : ~m? -# 1565| v1565_5(void) = ^IndirectReadSideEffect[-1] : &:r1565_1, ~m? -# 1565| mu1565_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1565_1 -# 1565| r1565_7(bool) = Constant[0] : -# 1565| v1565_8(void) = ConditionalBranch : r1565_7 +# 35| Block 516 +# 35| r35_7211(glval) = VariableAddress[x515] : +# 35| mu35_7212(String) = Uninitialized[x515] : &:r35_7211 +# 35| r35_7213(glval) = FunctionAddress[String] : +# 35| v35_7214(void) = Call[String] : func:r35_7213, this:r35_7211 +# 35| mu35_7215(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7211 +# 35| r35_7217(glval) = VariableAddress[x515] : +# 35| r35_7218(glval) = FunctionAddress[~String] : +# 35| v35_7219(void) = Call[~String] : func:r35_7218, this:r35_7217 +# 35| mu35_7220(unknown) = ^CallSideEffect : ~m? +# 35| v35_7221(void) = ^IndirectReadSideEffect[-1] : &:r35_7217, ~m? +# 35| mu35_7222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7217 +# 35| r35_7223(bool) = Constant[0] : +# 35| v35_7224(void) = ConditionalBranch : r35_7223 #-----| False -> Block 517 #-----| True (back edge) -> Block 516 -# 1567| Block 517 -# 1567| r1567_1(glval) = VariableAddress[x516] : -# 1567| mu1567_2(String) = Uninitialized[x516] : &:r1567_1 -# 1567| r1567_3(glval) = FunctionAddress[String] : -# 1567| v1567_4(void) = Call[String] : func:r1567_3, this:r1567_1 -# 1567| mu1567_5(unknown) = ^CallSideEffect : ~m? -# 1567| mu1567_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1567_1 -# 1568| r1568_1(glval) = VariableAddress[x516] : -# 1568| r1568_2(glval) = FunctionAddress[~String] : -# 1568| v1568_3(void) = Call[~String] : func:r1568_2, this:r1568_1 -# 1568| mu1568_4(unknown) = ^CallSideEffect : ~m? -# 1568| v1568_5(void) = ^IndirectReadSideEffect[-1] : &:r1568_1, ~m? -# 1568| mu1568_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1568_1 -# 1568| r1568_7(bool) = Constant[0] : -# 1568| v1568_8(void) = ConditionalBranch : r1568_7 +# 35| Block 517 +# 35| r35_7225(glval) = VariableAddress[x516] : +# 35| mu35_7226(String) = Uninitialized[x516] : &:r35_7225 +# 35| r35_7227(glval) = FunctionAddress[String] : +# 35| v35_7228(void) = Call[String] : func:r35_7227, this:r35_7225 +# 35| mu35_7229(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7225 +# 35| r35_7231(glval) = VariableAddress[x516] : +# 35| r35_7232(glval) = FunctionAddress[~String] : +# 35| v35_7233(void) = Call[~String] : func:r35_7232, this:r35_7231 +# 35| mu35_7234(unknown) = ^CallSideEffect : ~m? +# 35| v35_7235(void) = ^IndirectReadSideEffect[-1] : &:r35_7231, ~m? +# 35| mu35_7236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7231 +# 35| r35_7237(bool) = Constant[0] : +# 35| v35_7238(void) = ConditionalBranch : r35_7237 #-----| False -> Block 518 #-----| True (back edge) -> Block 517 -# 1570| Block 518 -# 1570| r1570_1(glval) = VariableAddress[x517] : -# 1570| mu1570_2(String) = Uninitialized[x517] : &:r1570_1 -# 1570| r1570_3(glval) = FunctionAddress[String] : -# 1570| v1570_4(void) = Call[String] : func:r1570_3, this:r1570_1 -# 1570| mu1570_5(unknown) = ^CallSideEffect : ~m? -# 1570| mu1570_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1570_1 -# 1571| r1571_1(glval) = VariableAddress[x517] : -# 1571| r1571_2(glval) = FunctionAddress[~String] : -# 1571| v1571_3(void) = Call[~String] : func:r1571_2, this:r1571_1 -# 1571| mu1571_4(unknown) = ^CallSideEffect : ~m? -# 1571| v1571_5(void) = ^IndirectReadSideEffect[-1] : &:r1571_1, ~m? -# 1571| mu1571_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1571_1 -# 1571| r1571_7(bool) = Constant[0] : -# 1571| v1571_8(void) = ConditionalBranch : r1571_7 +# 35| Block 518 +# 35| r35_7239(glval) = VariableAddress[x517] : +# 35| mu35_7240(String) = Uninitialized[x517] : &:r35_7239 +# 35| r35_7241(glval) = FunctionAddress[String] : +# 35| v35_7242(void) = Call[String] : func:r35_7241, this:r35_7239 +# 35| mu35_7243(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7239 +# 35| r35_7245(glval) = VariableAddress[x517] : +# 35| r35_7246(glval) = FunctionAddress[~String] : +# 35| v35_7247(void) = Call[~String] : func:r35_7246, this:r35_7245 +# 35| mu35_7248(unknown) = ^CallSideEffect : ~m? +# 35| v35_7249(void) = ^IndirectReadSideEffect[-1] : &:r35_7245, ~m? +# 35| mu35_7250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7245 +# 35| r35_7251(bool) = Constant[0] : +# 35| v35_7252(void) = ConditionalBranch : r35_7251 #-----| False -> Block 519 #-----| True (back edge) -> Block 518 -# 1573| Block 519 -# 1573| r1573_1(glval) = VariableAddress[x518] : -# 1573| mu1573_2(String) = Uninitialized[x518] : &:r1573_1 -# 1573| r1573_3(glval) = FunctionAddress[String] : -# 1573| v1573_4(void) = Call[String] : func:r1573_3, this:r1573_1 -# 1573| mu1573_5(unknown) = ^CallSideEffect : ~m? -# 1573| mu1573_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1573_1 -# 1574| r1574_1(glval) = VariableAddress[x518] : -# 1574| r1574_2(glval) = FunctionAddress[~String] : -# 1574| v1574_3(void) = Call[~String] : func:r1574_2, this:r1574_1 -# 1574| mu1574_4(unknown) = ^CallSideEffect : ~m? -# 1574| v1574_5(void) = ^IndirectReadSideEffect[-1] : &:r1574_1, ~m? -# 1574| mu1574_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1574_1 -# 1574| r1574_7(bool) = Constant[0] : -# 1574| v1574_8(void) = ConditionalBranch : r1574_7 +# 35| Block 519 +# 35| r35_7253(glval) = VariableAddress[x518] : +# 35| mu35_7254(String) = Uninitialized[x518] : &:r35_7253 +# 35| r35_7255(glval) = FunctionAddress[String] : +# 35| v35_7256(void) = Call[String] : func:r35_7255, this:r35_7253 +# 35| mu35_7257(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7253 +# 35| r35_7259(glval) = VariableAddress[x518] : +# 35| r35_7260(glval) = FunctionAddress[~String] : +# 35| v35_7261(void) = Call[~String] : func:r35_7260, this:r35_7259 +# 35| mu35_7262(unknown) = ^CallSideEffect : ~m? +# 35| v35_7263(void) = ^IndirectReadSideEffect[-1] : &:r35_7259, ~m? +# 35| mu35_7264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7259 +# 35| r35_7265(bool) = Constant[0] : +# 35| v35_7266(void) = ConditionalBranch : r35_7265 #-----| False -> Block 520 #-----| True (back edge) -> Block 519 -# 1576| Block 520 -# 1576| r1576_1(glval) = VariableAddress[x519] : -# 1576| mu1576_2(String) = Uninitialized[x519] : &:r1576_1 -# 1576| r1576_3(glval) = FunctionAddress[String] : -# 1576| v1576_4(void) = Call[String] : func:r1576_3, this:r1576_1 -# 1576| mu1576_5(unknown) = ^CallSideEffect : ~m? -# 1576| mu1576_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1576_1 -# 1577| r1577_1(glval) = VariableAddress[x519] : -# 1577| r1577_2(glval) = FunctionAddress[~String] : -# 1577| v1577_3(void) = Call[~String] : func:r1577_2, this:r1577_1 -# 1577| mu1577_4(unknown) = ^CallSideEffect : ~m? -# 1577| v1577_5(void) = ^IndirectReadSideEffect[-1] : &:r1577_1, ~m? -# 1577| mu1577_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1577_1 -# 1577| r1577_7(bool) = Constant[0] : -# 1577| v1577_8(void) = ConditionalBranch : r1577_7 +# 35| Block 520 +# 35| r35_7267(glval) = VariableAddress[x519] : +# 35| mu35_7268(String) = Uninitialized[x519] : &:r35_7267 +# 35| r35_7269(glval) = FunctionAddress[String] : +# 35| v35_7270(void) = Call[String] : func:r35_7269, this:r35_7267 +# 35| mu35_7271(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7267 +# 35| r35_7273(glval) = VariableAddress[x519] : +# 35| r35_7274(glval) = FunctionAddress[~String] : +# 35| v35_7275(void) = Call[~String] : func:r35_7274, this:r35_7273 +# 35| mu35_7276(unknown) = ^CallSideEffect : ~m? +# 35| v35_7277(void) = ^IndirectReadSideEffect[-1] : &:r35_7273, ~m? +# 35| mu35_7278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7273 +# 35| r35_7279(bool) = Constant[0] : +# 35| v35_7280(void) = ConditionalBranch : r35_7279 #-----| False -> Block 521 #-----| True (back edge) -> Block 520 -# 1579| Block 521 -# 1579| r1579_1(glval) = VariableAddress[x520] : -# 1579| mu1579_2(String) = Uninitialized[x520] : &:r1579_1 -# 1579| r1579_3(glval) = FunctionAddress[String] : -# 1579| v1579_4(void) = Call[String] : func:r1579_3, this:r1579_1 -# 1579| mu1579_5(unknown) = ^CallSideEffect : ~m? -# 1579| mu1579_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1579_1 -# 1580| r1580_1(glval) = VariableAddress[x520] : -# 1580| r1580_2(glval) = FunctionAddress[~String] : -# 1580| v1580_3(void) = Call[~String] : func:r1580_2, this:r1580_1 -# 1580| mu1580_4(unknown) = ^CallSideEffect : ~m? -# 1580| v1580_5(void) = ^IndirectReadSideEffect[-1] : &:r1580_1, ~m? -# 1580| mu1580_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1580_1 -# 1580| r1580_7(bool) = Constant[0] : -# 1580| v1580_8(void) = ConditionalBranch : r1580_7 +# 35| Block 521 +# 35| r35_7281(glval) = VariableAddress[x520] : +# 35| mu35_7282(String) = Uninitialized[x520] : &:r35_7281 +# 35| r35_7283(glval) = FunctionAddress[String] : +# 35| v35_7284(void) = Call[String] : func:r35_7283, this:r35_7281 +# 35| mu35_7285(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7281 +# 35| r35_7287(glval) = VariableAddress[x520] : +# 35| r35_7288(glval) = FunctionAddress[~String] : +# 35| v35_7289(void) = Call[~String] : func:r35_7288, this:r35_7287 +# 35| mu35_7290(unknown) = ^CallSideEffect : ~m? +# 35| v35_7291(void) = ^IndirectReadSideEffect[-1] : &:r35_7287, ~m? +# 35| mu35_7292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7287 +# 35| r35_7293(bool) = Constant[0] : +# 35| v35_7294(void) = ConditionalBranch : r35_7293 #-----| False -> Block 522 #-----| True (back edge) -> Block 521 -# 1582| Block 522 -# 1582| r1582_1(glval) = VariableAddress[x521] : -# 1582| mu1582_2(String) = Uninitialized[x521] : &:r1582_1 -# 1582| r1582_3(glval) = FunctionAddress[String] : -# 1582| v1582_4(void) = Call[String] : func:r1582_3, this:r1582_1 -# 1582| mu1582_5(unknown) = ^CallSideEffect : ~m? -# 1582| mu1582_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1582_1 -# 1583| r1583_1(glval) = VariableAddress[x521] : -# 1583| r1583_2(glval) = FunctionAddress[~String] : -# 1583| v1583_3(void) = Call[~String] : func:r1583_2, this:r1583_1 -# 1583| mu1583_4(unknown) = ^CallSideEffect : ~m? -# 1583| v1583_5(void) = ^IndirectReadSideEffect[-1] : &:r1583_1, ~m? -# 1583| mu1583_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1583_1 -# 1583| r1583_7(bool) = Constant[0] : -# 1583| v1583_8(void) = ConditionalBranch : r1583_7 +# 35| Block 522 +# 35| r35_7295(glval) = VariableAddress[x521] : +# 35| mu35_7296(String) = Uninitialized[x521] : &:r35_7295 +# 35| r35_7297(glval) = FunctionAddress[String] : +# 35| v35_7298(void) = Call[String] : func:r35_7297, this:r35_7295 +# 35| mu35_7299(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7295 +# 35| r35_7301(glval) = VariableAddress[x521] : +# 35| r35_7302(glval) = FunctionAddress[~String] : +# 35| v35_7303(void) = Call[~String] : func:r35_7302, this:r35_7301 +# 35| mu35_7304(unknown) = ^CallSideEffect : ~m? +# 35| v35_7305(void) = ^IndirectReadSideEffect[-1] : &:r35_7301, ~m? +# 35| mu35_7306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7301 +# 35| r35_7307(bool) = Constant[0] : +# 35| v35_7308(void) = ConditionalBranch : r35_7307 #-----| False -> Block 523 #-----| True (back edge) -> Block 522 -# 1585| Block 523 -# 1585| r1585_1(glval) = VariableAddress[x522] : -# 1585| mu1585_2(String) = Uninitialized[x522] : &:r1585_1 -# 1585| r1585_3(glval) = FunctionAddress[String] : -# 1585| v1585_4(void) = Call[String] : func:r1585_3, this:r1585_1 -# 1585| mu1585_5(unknown) = ^CallSideEffect : ~m? -# 1585| mu1585_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1585_1 -# 1586| r1586_1(glval) = VariableAddress[x522] : -# 1586| r1586_2(glval) = FunctionAddress[~String] : -# 1586| v1586_3(void) = Call[~String] : func:r1586_2, this:r1586_1 -# 1586| mu1586_4(unknown) = ^CallSideEffect : ~m? -# 1586| v1586_5(void) = ^IndirectReadSideEffect[-1] : &:r1586_1, ~m? -# 1586| mu1586_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1586_1 -# 1586| r1586_7(bool) = Constant[0] : -# 1586| v1586_8(void) = ConditionalBranch : r1586_7 +# 35| Block 523 +# 35| r35_7309(glval) = VariableAddress[x522] : +# 35| mu35_7310(String) = Uninitialized[x522] : &:r35_7309 +# 35| r35_7311(glval) = FunctionAddress[String] : +# 35| v35_7312(void) = Call[String] : func:r35_7311, this:r35_7309 +# 35| mu35_7313(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7309 +# 35| r35_7315(glval) = VariableAddress[x522] : +# 35| r35_7316(glval) = FunctionAddress[~String] : +# 35| v35_7317(void) = Call[~String] : func:r35_7316, this:r35_7315 +# 35| mu35_7318(unknown) = ^CallSideEffect : ~m? +# 35| v35_7319(void) = ^IndirectReadSideEffect[-1] : &:r35_7315, ~m? +# 35| mu35_7320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7315 +# 35| r35_7321(bool) = Constant[0] : +# 35| v35_7322(void) = ConditionalBranch : r35_7321 #-----| False -> Block 524 #-----| True (back edge) -> Block 523 -# 1588| Block 524 -# 1588| r1588_1(glval) = VariableAddress[x523] : -# 1588| mu1588_2(String) = Uninitialized[x523] : &:r1588_1 -# 1588| r1588_3(glval) = FunctionAddress[String] : -# 1588| v1588_4(void) = Call[String] : func:r1588_3, this:r1588_1 -# 1588| mu1588_5(unknown) = ^CallSideEffect : ~m? -# 1588| mu1588_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1588_1 -# 1589| r1589_1(glval) = VariableAddress[x523] : -# 1589| r1589_2(glval) = FunctionAddress[~String] : -# 1589| v1589_3(void) = Call[~String] : func:r1589_2, this:r1589_1 -# 1589| mu1589_4(unknown) = ^CallSideEffect : ~m? -# 1589| v1589_5(void) = ^IndirectReadSideEffect[-1] : &:r1589_1, ~m? -# 1589| mu1589_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1589_1 -# 1589| r1589_7(bool) = Constant[0] : -# 1589| v1589_8(void) = ConditionalBranch : r1589_7 +# 35| Block 524 +# 35| r35_7323(glval) = VariableAddress[x523] : +# 35| mu35_7324(String) = Uninitialized[x523] : &:r35_7323 +# 35| r35_7325(glval) = FunctionAddress[String] : +# 35| v35_7326(void) = Call[String] : func:r35_7325, this:r35_7323 +# 35| mu35_7327(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7323 +# 35| r35_7329(glval) = VariableAddress[x523] : +# 35| r35_7330(glval) = FunctionAddress[~String] : +# 35| v35_7331(void) = Call[~String] : func:r35_7330, this:r35_7329 +# 35| mu35_7332(unknown) = ^CallSideEffect : ~m? +# 35| v35_7333(void) = ^IndirectReadSideEffect[-1] : &:r35_7329, ~m? +# 35| mu35_7334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7329 +# 35| r35_7335(bool) = Constant[0] : +# 35| v35_7336(void) = ConditionalBranch : r35_7335 #-----| False -> Block 525 #-----| True (back edge) -> Block 524 -# 1591| Block 525 -# 1591| r1591_1(glval) = VariableAddress[x524] : -# 1591| mu1591_2(String) = Uninitialized[x524] : &:r1591_1 -# 1591| r1591_3(glval) = FunctionAddress[String] : -# 1591| v1591_4(void) = Call[String] : func:r1591_3, this:r1591_1 -# 1591| mu1591_5(unknown) = ^CallSideEffect : ~m? -# 1591| mu1591_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1591_1 -# 1592| r1592_1(glval) = VariableAddress[x524] : -# 1592| r1592_2(glval) = FunctionAddress[~String] : -# 1592| v1592_3(void) = Call[~String] : func:r1592_2, this:r1592_1 -# 1592| mu1592_4(unknown) = ^CallSideEffect : ~m? -# 1592| v1592_5(void) = ^IndirectReadSideEffect[-1] : &:r1592_1, ~m? -# 1592| mu1592_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1592_1 -# 1592| r1592_7(bool) = Constant[0] : -# 1592| v1592_8(void) = ConditionalBranch : r1592_7 +# 35| Block 525 +# 35| r35_7337(glval) = VariableAddress[x524] : +# 35| mu35_7338(String) = Uninitialized[x524] : &:r35_7337 +# 35| r35_7339(glval) = FunctionAddress[String] : +# 35| v35_7340(void) = Call[String] : func:r35_7339, this:r35_7337 +# 35| mu35_7341(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7337 +# 35| r35_7343(glval) = VariableAddress[x524] : +# 35| r35_7344(glval) = FunctionAddress[~String] : +# 35| v35_7345(void) = Call[~String] : func:r35_7344, this:r35_7343 +# 35| mu35_7346(unknown) = ^CallSideEffect : ~m? +# 35| v35_7347(void) = ^IndirectReadSideEffect[-1] : &:r35_7343, ~m? +# 35| mu35_7348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7343 +# 35| r35_7349(bool) = Constant[0] : +# 35| v35_7350(void) = ConditionalBranch : r35_7349 #-----| False -> Block 526 #-----| True (back edge) -> Block 525 -# 1594| Block 526 -# 1594| r1594_1(glval) = VariableAddress[x525] : -# 1594| mu1594_2(String) = Uninitialized[x525] : &:r1594_1 -# 1594| r1594_3(glval) = FunctionAddress[String] : -# 1594| v1594_4(void) = Call[String] : func:r1594_3, this:r1594_1 -# 1594| mu1594_5(unknown) = ^CallSideEffect : ~m? -# 1594| mu1594_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1594_1 -# 1595| r1595_1(glval) = VariableAddress[x525] : -# 1595| r1595_2(glval) = FunctionAddress[~String] : -# 1595| v1595_3(void) = Call[~String] : func:r1595_2, this:r1595_1 -# 1595| mu1595_4(unknown) = ^CallSideEffect : ~m? -# 1595| v1595_5(void) = ^IndirectReadSideEffect[-1] : &:r1595_1, ~m? -# 1595| mu1595_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1595_1 -# 1595| r1595_7(bool) = Constant[0] : -# 1595| v1595_8(void) = ConditionalBranch : r1595_7 +# 35| Block 526 +# 35| r35_7351(glval) = VariableAddress[x525] : +# 35| mu35_7352(String) = Uninitialized[x525] : &:r35_7351 +# 35| r35_7353(glval) = FunctionAddress[String] : +# 35| v35_7354(void) = Call[String] : func:r35_7353, this:r35_7351 +# 35| mu35_7355(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7356(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7351 +# 35| r35_7357(glval) = VariableAddress[x525] : +# 35| r35_7358(glval) = FunctionAddress[~String] : +# 35| v35_7359(void) = Call[~String] : func:r35_7358, this:r35_7357 +# 35| mu35_7360(unknown) = ^CallSideEffect : ~m? +# 35| v35_7361(void) = ^IndirectReadSideEffect[-1] : &:r35_7357, ~m? +# 35| mu35_7362(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7357 +# 35| r35_7363(bool) = Constant[0] : +# 35| v35_7364(void) = ConditionalBranch : r35_7363 #-----| False -> Block 527 #-----| True (back edge) -> Block 526 -# 1597| Block 527 -# 1597| r1597_1(glval) = VariableAddress[x526] : -# 1597| mu1597_2(String) = Uninitialized[x526] : &:r1597_1 -# 1597| r1597_3(glval) = FunctionAddress[String] : -# 1597| v1597_4(void) = Call[String] : func:r1597_3, this:r1597_1 -# 1597| mu1597_5(unknown) = ^CallSideEffect : ~m? -# 1597| mu1597_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1597_1 -# 1598| r1598_1(glval) = VariableAddress[x526] : -# 1598| r1598_2(glval) = FunctionAddress[~String] : -# 1598| v1598_3(void) = Call[~String] : func:r1598_2, this:r1598_1 -# 1598| mu1598_4(unknown) = ^CallSideEffect : ~m? -# 1598| v1598_5(void) = ^IndirectReadSideEffect[-1] : &:r1598_1, ~m? -# 1598| mu1598_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1598_1 -# 1598| r1598_7(bool) = Constant[0] : -# 1598| v1598_8(void) = ConditionalBranch : r1598_7 +# 35| Block 527 +# 35| r35_7365(glval) = VariableAddress[x526] : +# 35| mu35_7366(String) = Uninitialized[x526] : &:r35_7365 +# 35| r35_7367(glval) = FunctionAddress[String] : +# 35| v35_7368(void) = Call[String] : func:r35_7367, this:r35_7365 +# 35| mu35_7369(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7370(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7365 +# 35| r35_7371(glval) = VariableAddress[x526] : +# 35| r35_7372(glval) = FunctionAddress[~String] : +# 35| v35_7373(void) = Call[~String] : func:r35_7372, this:r35_7371 +# 35| mu35_7374(unknown) = ^CallSideEffect : ~m? +# 35| v35_7375(void) = ^IndirectReadSideEffect[-1] : &:r35_7371, ~m? +# 35| mu35_7376(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7371 +# 35| r35_7377(bool) = Constant[0] : +# 35| v35_7378(void) = ConditionalBranch : r35_7377 #-----| False -> Block 528 #-----| True (back edge) -> Block 527 -# 1600| Block 528 -# 1600| r1600_1(glval) = VariableAddress[x527] : -# 1600| mu1600_2(String) = Uninitialized[x527] : &:r1600_1 -# 1600| r1600_3(glval) = FunctionAddress[String] : -# 1600| v1600_4(void) = Call[String] : func:r1600_3, this:r1600_1 -# 1600| mu1600_5(unknown) = ^CallSideEffect : ~m? -# 1600| mu1600_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1600_1 -# 1601| r1601_1(glval) = VariableAddress[x527] : -# 1601| r1601_2(glval) = FunctionAddress[~String] : -# 1601| v1601_3(void) = Call[~String] : func:r1601_2, this:r1601_1 -# 1601| mu1601_4(unknown) = ^CallSideEffect : ~m? -# 1601| v1601_5(void) = ^IndirectReadSideEffect[-1] : &:r1601_1, ~m? -# 1601| mu1601_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1601_1 -# 1601| r1601_7(bool) = Constant[0] : -# 1601| v1601_8(void) = ConditionalBranch : r1601_7 +# 35| Block 528 +# 35| r35_7379(glval) = VariableAddress[x527] : +# 35| mu35_7380(String) = Uninitialized[x527] : &:r35_7379 +# 35| r35_7381(glval) = FunctionAddress[String] : +# 35| v35_7382(void) = Call[String] : func:r35_7381, this:r35_7379 +# 35| mu35_7383(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7384(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7379 +# 35| r35_7385(glval) = VariableAddress[x527] : +# 35| r35_7386(glval) = FunctionAddress[~String] : +# 35| v35_7387(void) = Call[~String] : func:r35_7386, this:r35_7385 +# 35| mu35_7388(unknown) = ^CallSideEffect : ~m? +# 35| v35_7389(void) = ^IndirectReadSideEffect[-1] : &:r35_7385, ~m? +# 35| mu35_7390(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7385 +# 35| r35_7391(bool) = Constant[0] : +# 35| v35_7392(void) = ConditionalBranch : r35_7391 #-----| False -> Block 529 #-----| True (back edge) -> Block 528 -# 1603| Block 529 -# 1603| r1603_1(glval) = VariableAddress[x528] : -# 1603| mu1603_2(String) = Uninitialized[x528] : &:r1603_1 -# 1603| r1603_3(glval) = FunctionAddress[String] : -# 1603| v1603_4(void) = Call[String] : func:r1603_3, this:r1603_1 -# 1603| mu1603_5(unknown) = ^CallSideEffect : ~m? -# 1603| mu1603_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1603_1 -# 1604| r1604_1(glval) = VariableAddress[x528] : -# 1604| r1604_2(glval) = FunctionAddress[~String] : -# 1604| v1604_3(void) = Call[~String] : func:r1604_2, this:r1604_1 -# 1604| mu1604_4(unknown) = ^CallSideEffect : ~m? -# 1604| v1604_5(void) = ^IndirectReadSideEffect[-1] : &:r1604_1, ~m? -# 1604| mu1604_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1604_1 -# 1604| r1604_7(bool) = Constant[0] : -# 1604| v1604_8(void) = ConditionalBranch : r1604_7 +# 35| Block 529 +# 35| r35_7393(glval) = VariableAddress[x528] : +# 35| mu35_7394(String) = Uninitialized[x528] : &:r35_7393 +# 35| r35_7395(glval) = FunctionAddress[String] : +# 35| v35_7396(void) = Call[String] : func:r35_7395, this:r35_7393 +# 35| mu35_7397(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7398(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7393 +# 35| r35_7399(glval) = VariableAddress[x528] : +# 35| r35_7400(glval) = FunctionAddress[~String] : +# 35| v35_7401(void) = Call[~String] : func:r35_7400, this:r35_7399 +# 35| mu35_7402(unknown) = ^CallSideEffect : ~m? +# 35| v35_7403(void) = ^IndirectReadSideEffect[-1] : &:r35_7399, ~m? +# 35| mu35_7404(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7399 +# 35| r35_7405(bool) = Constant[0] : +# 35| v35_7406(void) = ConditionalBranch : r35_7405 #-----| False -> Block 530 #-----| True (back edge) -> Block 529 -# 1606| Block 530 -# 1606| r1606_1(glval) = VariableAddress[x529] : -# 1606| mu1606_2(String) = Uninitialized[x529] : &:r1606_1 -# 1606| r1606_3(glval) = FunctionAddress[String] : -# 1606| v1606_4(void) = Call[String] : func:r1606_3, this:r1606_1 -# 1606| mu1606_5(unknown) = ^CallSideEffect : ~m? -# 1606| mu1606_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1606_1 -# 1607| r1607_1(glval) = VariableAddress[x529] : -# 1607| r1607_2(glval) = FunctionAddress[~String] : -# 1607| v1607_3(void) = Call[~String] : func:r1607_2, this:r1607_1 -# 1607| mu1607_4(unknown) = ^CallSideEffect : ~m? -# 1607| v1607_5(void) = ^IndirectReadSideEffect[-1] : &:r1607_1, ~m? -# 1607| mu1607_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1607_1 -# 1607| r1607_7(bool) = Constant[0] : -# 1607| v1607_8(void) = ConditionalBranch : r1607_7 +# 35| Block 530 +# 35| r35_7407(glval) = VariableAddress[x529] : +# 35| mu35_7408(String) = Uninitialized[x529] : &:r35_7407 +# 35| r35_7409(glval) = FunctionAddress[String] : +# 35| v35_7410(void) = Call[String] : func:r35_7409, this:r35_7407 +# 35| mu35_7411(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7412(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7407 +# 35| r35_7413(glval) = VariableAddress[x529] : +# 35| r35_7414(glval) = FunctionAddress[~String] : +# 35| v35_7415(void) = Call[~String] : func:r35_7414, this:r35_7413 +# 35| mu35_7416(unknown) = ^CallSideEffect : ~m? +# 35| v35_7417(void) = ^IndirectReadSideEffect[-1] : &:r35_7413, ~m? +# 35| mu35_7418(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7413 +# 35| r35_7419(bool) = Constant[0] : +# 35| v35_7420(void) = ConditionalBranch : r35_7419 #-----| False -> Block 531 #-----| True (back edge) -> Block 530 -# 1609| Block 531 -# 1609| r1609_1(glval) = VariableAddress[x530] : -# 1609| mu1609_2(String) = Uninitialized[x530] : &:r1609_1 -# 1609| r1609_3(glval) = FunctionAddress[String] : -# 1609| v1609_4(void) = Call[String] : func:r1609_3, this:r1609_1 -# 1609| mu1609_5(unknown) = ^CallSideEffect : ~m? -# 1609| mu1609_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1609_1 -# 1610| r1610_1(glval) = VariableAddress[x530] : -# 1610| r1610_2(glval) = FunctionAddress[~String] : -# 1610| v1610_3(void) = Call[~String] : func:r1610_2, this:r1610_1 -# 1610| mu1610_4(unknown) = ^CallSideEffect : ~m? -# 1610| v1610_5(void) = ^IndirectReadSideEffect[-1] : &:r1610_1, ~m? -# 1610| mu1610_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1610_1 -# 1610| r1610_7(bool) = Constant[0] : -# 1610| v1610_8(void) = ConditionalBranch : r1610_7 +# 35| Block 531 +# 35| r35_7421(glval) = VariableAddress[x530] : +# 35| mu35_7422(String) = Uninitialized[x530] : &:r35_7421 +# 35| r35_7423(glval) = FunctionAddress[String] : +# 35| v35_7424(void) = Call[String] : func:r35_7423, this:r35_7421 +# 35| mu35_7425(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7426(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7421 +# 35| r35_7427(glval) = VariableAddress[x530] : +# 35| r35_7428(glval) = FunctionAddress[~String] : +# 35| v35_7429(void) = Call[~String] : func:r35_7428, this:r35_7427 +# 35| mu35_7430(unknown) = ^CallSideEffect : ~m? +# 35| v35_7431(void) = ^IndirectReadSideEffect[-1] : &:r35_7427, ~m? +# 35| mu35_7432(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7427 +# 35| r35_7433(bool) = Constant[0] : +# 35| v35_7434(void) = ConditionalBranch : r35_7433 #-----| False -> Block 532 #-----| True (back edge) -> Block 531 -# 1612| Block 532 -# 1612| r1612_1(glval) = VariableAddress[x531] : -# 1612| mu1612_2(String) = Uninitialized[x531] : &:r1612_1 -# 1612| r1612_3(glval) = FunctionAddress[String] : -# 1612| v1612_4(void) = Call[String] : func:r1612_3, this:r1612_1 -# 1612| mu1612_5(unknown) = ^CallSideEffect : ~m? -# 1612| mu1612_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1612_1 -# 1613| r1613_1(glval) = VariableAddress[x531] : -# 1613| r1613_2(glval) = FunctionAddress[~String] : -# 1613| v1613_3(void) = Call[~String] : func:r1613_2, this:r1613_1 -# 1613| mu1613_4(unknown) = ^CallSideEffect : ~m? -# 1613| v1613_5(void) = ^IndirectReadSideEffect[-1] : &:r1613_1, ~m? -# 1613| mu1613_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1613_1 -# 1613| r1613_7(bool) = Constant[0] : -# 1613| v1613_8(void) = ConditionalBranch : r1613_7 +# 35| Block 532 +# 35| r35_7435(glval) = VariableAddress[x531] : +# 35| mu35_7436(String) = Uninitialized[x531] : &:r35_7435 +# 35| r35_7437(glval) = FunctionAddress[String] : +# 35| v35_7438(void) = Call[String] : func:r35_7437, this:r35_7435 +# 35| mu35_7439(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7440(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7435 +# 35| r35_7441(glval) = VariableAddress[x531] : +# 35| r35_7442(glval) = FunctionAddress[~String] : +# 35| v35_7443(void) = Call[~String] : func:r35_7442, this:r35_7441 +# 35| mu35_7444(unknown) = ^CallSideEffect : ~m? +# 35| v35_7445(void) = ^IndirectReadSideEffect[-1] : &:r35_7441, ~m? +# 35| mu35_7446(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7441 +# 35| r35_7447(bool) = Constant[0] : +# 35| v35_7448(void) = ConditionalBranch : r35_7447 #-----| False -> Block 533 #-----| True (back edge) -> Block 532 -# 1615| Block 533 -# 1615| r1615_1(glval) = VariableAddress[x532] : -# 1615| mu1615_2(String) = Uninitialized[x532] : &:r1615_1 -# 1615| r1615_3(glval) = FunctionAddress[String] : -# 1615| v1615_4(void) = Call[String] : func:r1615_3, this:r1615_1 -# 1615| mu1615_5(unknown) = ^CallSideEffect : ~m? -# 1615| mu1615_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1615_1 -# 1616| r1616_1(glval) = VariableAddress[x532] : -# 1616| r1616_2(glval) = FunctionAddress[~String] : -# 1616| v1616_3(void) = Call[~String] : func:r1616_2, this:r1616_1 -# 1616| mu1616_4(unknown) = ^CallSideEffect : ~m? -# 1616| v1616_5(void) = ^IndirectReadSideEffect[-1] : &:r1616_1, ~m? -# 1616| mu1616_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1616_1 -# 1616| r1616_7(bool) = Constant[0] : -# 1616| v1616_8(void) = ConditionalBranch : r1616_7 +# 35| Block 533 +# 35| r35_7449(glval) = VariableAddress[x532] : +# 35| mu35_7450(String) = Uninitialized[x532] : &:r35_7449 +# 35| r35_7451(glval) = FunctionAddress[String] : +# 35| v35_7452(void) = Call[String] : func:r35_7451, this:r35_7449 +# 35| mu35_7453(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7454(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7449 +# 35| r35_7455(glval) = VariableAddress[x532] : +# 35| r35_7456(glval) = FunctionAddress[~String] : +# 35| v35_7457(void) = Call[~String] : func:r35_7456, this:r35_7455 +# 35| mu35_7458(unknown) = ^CallSideEffect : ~m? +# 35| v35_7459(void) = ^IndirectReadSideEffect[-1] : &:r35_7455, ~m? +# 35| mu35_7460(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7455 +# 35| r35_7461(bool) = Constant[0] : +# 35| v35_7462(void) = ConditionalBranch : r35_7461 #-----| False -> Block 534 #-----| True (back edge) -> Block 533 -# 1618| Block 534 -# 1618| r1618_1(glval) = VariableAddress[x533] : -# 1618| mu1618_2(String) = Uninitialized[x533] : &:r1618_1 -# 1618| r1618_3(glval) = FunctionAddress[String] : -# 1618| v1618_4(void) = Call[String] : func:r1618_3, this:r1618_1 -# 1618| mu1618_5(unknown) = ^CallSideEffect : ~m? -# 1618| mu1618_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1618_1 -# 1619| r1619_1(glval) = VariableAddress[x533] : -# 1619| r1619_2(glval) = FunctionAddress[~String] : -# 1619| v1619_3(void) = Call[~String] : func:r1619_2, this:r1619_1 -# 1619| mu1619_4(unknown) = ^CallSideEffect : ~m? -# 1619| v1619_5(void) = ^IndirectReadSideEffect[-1] : &:r1619_1, ~m? -# 1619| mu1619_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1619_1 -# 1619| r1619_7(bool) = Constant[0] : -# 1619| v1619_8(void) = ConditionalBranch : r1619_7 +# 35| Block 534 +# 35| r35_7463(glval) = VariableAddress[x533] : +# 35| mu35_7464(String) = Uninitialized[x533] : &:r35_7463 +# 35| r35_7465(glval) = FunctionAddress[String] : +# 35| v35_7466(void) = Call[String] : func:r35_7465, this:r35_7463 +# 35| mu35_7467(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7468(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7463 +# 35| r35_7469(glval) = VariableAddress[x533] : +# 35| r35_7470(glval) = FunctionAddress[~String] : +# 35| v35_7471(void) = Call[~String] : func:r35_7470, this:r35_7469 +# 35| mu35_7472(unknown) = ^CallSideEffect : ~m? +# 35| v35_7473(void) = ^IndirectReadSideEffect[-1] : &:r35_7469, ~m? +# 35| mu35_7474(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7469 +# 35| r35_7475(bool) = Constant[0] : +# 35| v35_7476(void) = ConditionalBranch : r35_7475 #-----| False -> Block 535 #-----| True (back edge) -> Block 534 -# 1621| Block 535 -# 1621| r1621_1(glval) = VariableAddress[x534] : -# 1621| mu1621_2(String) = Uninitialized[x534] : &:r1621_1 -# 1621| r1621_3(glval) = FunctionAddress[String] : -# 1621| v1621_4(void) = Call[String] : func:r1621_3, this:r1621_1 -# 1621| mu1621_5(unknown) = ^CallSideEffect : ~m? -# 1621| mu1621_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1621_1 -# 1622| r1622_1(glval) = VariableAddress[x534] : -# 1622| r1622_2(glval) = FunctionAddress[~String] : -# 1622| v1622_3(void) = Call[~String] : func:r1622_2, this:r1622_1 -# 1622| mu1622_4(unknown) = ^CallSideEffect : ~m? -# 1622| v1622_5(void) = ^IndirectReadSideEffect[-1] : &:r1622_1, ~m? -# 1622| mu1622_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1622_1 -# 1622| r1622_7(bool) = Constant[0] : -# 1622| v1622_8(void) = ConditionalBranch : r1622_7 +# 35| Block 535 +# 35| r35_7477(glval) = VariableAddress[x534] : +# 35| mu35_7478(String) = Uninitialized[x534] : &:r35_7477 +# 35| r35_7479(glval) = FunctionAddress[String] : +# 35| v35_7480(void) = Call[String] : func:r35_7479, this:r35_7477 +# 35| mu35_7481(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7482(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7477 +# 35| r35_7483(glval) = VariableAddress[x534] : +# 35| r35_7484(glval) = FunctionAddress[~String] : +# 35| v35_7485(void) = Call[~String] : func:r35_7484, this:r35_7483 +# 35| mu35_7486(unknown) = ^CallSideEffect : ~m? +# 35| v35_7487(void) = ^IndirectReadSideEffect[-1] : &:r35_7483, ~m? +# 35| mu35_7488(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7483 +# 35| r35_7489(bool) = Constant[0] : +# 35| v35_7490(void) = ConditionalBranch : r35_7489 #-----| False -> Block 536 #-----| True (back edge) -> Block 535 -# 1624| Block 536 -# 1624| r1624_1(glval) = VariableAddress[x535] : -# 1624| mu1624_2(String) = Uninitialized[x535] : &:r1624_1 -# 1624| r1624_3(glval) = FunctionAddress[String] : -# 1624| v1624_4(void) = Call[String] : func:r1624_3, this:r1624_1 -# 1624| mu1624_5(unknown) = ^CallSideEffect : ~m? -# 1624| mu1624_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1624_1 -# 1625| r1625_1(glval) = VariableAddress[x535] : -# 1625| r1625_2(glval) = FunctionAddress[~String] : -# 1625| v1625_3(void) = Call[~String] : func:r1625_2, this:r1625_1 -# 1625| mu1625_4(unknown) = ^CallSideEffect : ~m? -# 1625| v1625_5(void) = ^IndirectReadSideEffect[-1] : &:r1625_1, ~m? -# 1625| mu1625_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1625_1 -# 1625| r1625_7(bool) = Constant[0] : -# 1625| v1625_8(void) = ConditionalBranch : r1625_7 +# 35| Block 536 +# 35| r35_7491(glval) = VariableAddress[x535] : +# 35| mu35_7492(String) = Uninitialized[x535] : &:r35_7491 +# 35| r35_7493(glval) = FunctionAddress[String] : +# 35| v35_7494(void) = Call[String] : func:r35_7493, this:r35_7491 +# 35| mu35_7495(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7496(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7491 +# 35| r35_7497(glval) = VariableAddress[x535] : +# 35| r35_7498(glval) = FunctionAddress[~String] : +# 35| v35_7499(void) = Call[~String] : func:r35_7498, this:r35_7497 +# 35| mu35_7500(unknown) = ^CallSideEffect : ~m? +# 35| v35_7501(void) = ^IndirectReadSideEffect[-1] : &:r35_7497, ~m? +# 35| mu35_7502(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7497 +# 35| r35_7503(bool) = Constant[0] : +# 35| v35_7504(void) = ConditionalBranch : r35_7503 #-----| False -> Block 537 #-----| True (back edge) -> Block 536 -# 1627| Block 537 -# 1627| r1627_1(glval) = VariableAddress[x536] : -# 1627| mu1627_2(String) = Uninitialized[x536] : &:r1627_1 -# 1627| r1627_3(glval) = FunctionAddress[String] : -# 1627| v1627_4(void) = Call[String] : func:r1627_3, this:r1627_1 -# 1627| mu1627_5(unknown) = ^CallSideEffect : ~m? -# 1627| mu1627_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1627_1 -# 1628| r1628_1(glval) = VariableAddress[x536] : -# 1628| r1628_2(glval) = FunctionAddress[~String] : -# 1628| v1628_3(void) = Call[~String] : func:r1628_2, this:r1628_1 -# 1628| mu1628_4(unknown) = ^CallSideEffect : ~m? -# 1628| v1628_5(void) = ^IndirectReadSideEffect[-1] : &:r1628_1, ~m? -# 1628| mu1628_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1628_1 -# 1628| r1628_7(bool) = Constant[0] : -# 1628| v1628_8(void) = ConditionalBranch : r1628_7 +# 35| Block 537 +# 35| r35_7505(glval) = VariableAddress[x536] : +# 35| mu35_7506(String) = Uninitialized[x536] : &:r35_7505 +# 35| r35_7507(glval) = FunctionAddress[String] : +# 35| v35_7508(void) = Call[String] : func:r35_7507, this:r35_7505 +# 35| mu35_7509(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7510(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7505 +# 35| r35_7511(glval) = VariableAddress[x536] : +# 35| r35_7512(glval) = FunctionAddress[~String] : +# 35| v35_7513(void) = Call[~String] : func:r35_7512, this:r35_7511 +# 35| mu35_7514(unknown) = ^CallSideEffect : ~m? +# 35| v35_7515(void) = ^IndirectReadSideEffect[-1] : &:r35_7511, ~m? +# 35| mu35_7516(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7511 +# 35| r35_7517(bool) = Constant[0] : +# 35| v35_7518(void) = ConditionalBranch : r35_7517 #-----| False -> Block 538 #-----| True (back edge) -> Block 537 -# 1630| Block 538 -# 1630| r1630_1(glval) = VariableAddress[x537] : -# 1630| mu1630_2(String) = Uninitialized[x537] : &:r1630_1 -# 1630| r1630_3(glval) = FunctionAddress[String] : -# 1630| v1630_4(void) = Call[String] : func:r1630_3, this:r1630_1 -# 1630| mu1630_5(unknown) = ^CallSideEffect : ~m? -# 1630| mu1630_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1630_1 -# 1631| r1631_1(glval) = VariableAddress[x537] : -# 1631| r1631_2(glval) = FunctionAddress[~String] : -# 1631| v1631_3(void) = Call[~String] : func:r1631_2, this:r1631_1 -# 1631| mu1631_4(unknown) = ^CallSideEffect : ~m? -# 1631| v1631_5(void) = ^IndirectReadSideEffect[-1] : &:r1631_1, ~m? -# 1631| mu1631_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1631_1 -# 1631| r1631_7(bool) = Constant[0] : -# 1631| v1631_8(void) = ConditionalBranch : r1631_7 +# 35| Block 538 +# 35| r35_7519(glval) = VariableAddress[x537] : +# 35| mu35_7520(String) = Uninitialized[x537] : &:r35_7519 +# 35| r35_7521(glval) = FunctionAddress[String] : +# 35| v35_7522(void) = Call[String] : func:r35_7521, this:r35_7519 +# 35| mu35_7523(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7524(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7519 +# 35| r35_7525(glval) = VariableAddress[x537] : +# 35| r35_7526(glval) = FunctionAddress[~String] : +# 35| v35_7527(void) = Call[~String] : func:r35_7526, this:r35_7525 +# 35| mu35_7528(unknown) = ^CallSideEffect : ~m? +# 35| v35_7529(void) = ^IndirectReadSideEffect[-1] : &:r35_7525, ~m? +# 35| mu35_7530(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7525 +# 35| r35_7531(bool) = Constant[0] : +# 35| v35_7532(void) = ConditionalBranch : r35_7531 #-----| False -> Block 539 #-----| True (back edge) -> Block 538 -# 1633| Block 539 -# 1633| r1633_1(glval) = VariableAddress[x538] : -# 1633| mu1633_2(String) = Uninitialized[x538] : &:r1633_1 -# 1633| r1633_3(glval) = FunctionAddress[String] : -# 1633| v1633_4(void) = Call[String] : func:r1633_3, this:r1633_1 -# 1633| mu1633_5(unknown) = ^CallSideEffect : ~m? -# 1633| mu1633_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1633_1 -# 1634| r1634_1(glval) = VariableAddress[x538] : -# 1634| r1634_2(glval) = FunctionAddress[~String] : -# 1634| v1634_3(void) = Call[~String] : func:r1634_2, this:r1634_1 -# 1634| mu1634_4(unknown) = ^CallSideEffect : ~m? -# 1634| v1634_5(void) = ^IndirectReadSideEffect[-1] : &:r1634_1, ~m? -# 1634| mu1634_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1634_1 -# 1634| r1634_7(bool) = Constant[0] : -# 1634| v1634_8(void) = ConditionalBranch : r1634_7 +# 35| Block 539 +# 35| r35_7533(glval) = VariableAddress[x538] : +# 35| mu35_7534(String) = Uninitialized[x538] : &:r35_7533 +# 35| r35_7535(glval) = FunctionAddress[String] : +# 35| v35_7536(void) = Call[String] : func:r35_7535, this:r35_7533 +# 35| mu35_7537(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7538(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7533 +# 35| r35_7539(glval) = VariableAddress[x538] : +# 35| r35_7540(glval) = FunctionAddress[~String] : +# 35| v35_7541(void) = Call[~String] : func:r35_7540, this:r35_7539 +# 35| mu35_7542(unknown) = ^CallSideEffect : ~m? +# 35| v35_7543(void) = ^IndirectReadSideEffect[-1] : &:r35_7539, ~m? +# 35| mu35_7544(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7539 +# 35| r35_7545(bool) = Constant[0] : +# 35| v35_7546(void) = ConditionalBranch : r35_7545 #-----| False -> Block 540 #-----| True (back edge) -> Block 539 -# 1636| Block 540 -# 1636| r1636_1(glval) = VariableAddress[x539] : -# 1636| mu1636_2(String) = Uninitialized[x539] : &:r1636_1 -# 1636| r1636_3(glval) = FunctionAddress[String] : -# 1636| v1636_4(void) = Call[String] : func:r1636_3, this:r1636_1 -# 1636| mu1636_5(unknown) = ^CallSideEffect : ~m? -# 1636| mu1636_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1636_1 -# 1637| r1637_1(glval) = VariableAddress[x539] : -# 1637| r1637_2(glval) = FunctionAddress[~String] : -# 1637| v1637_3(void) = Call[~String] : func:r1637_2, this:r1637_1 -# 1637| mu1637_4(unknown) = ^CallSideEffect : ~m? -# 1637| v1637_5(void) = ^IndirectReadSideEffect[-1] : &:r1637_1, ~m? -# 1637| mu1637_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1637_1 -# 1637| r1637_7(bool) = Constant[0] : -# 1637| v1637_8(void) = ConditionalBranch : r1637_7 +# 35| Block 540 +# 35| r35_7547(glval) = VariableAddress[x539] : +# 35| mu35_7548(String) = Uninitialized[x539] : &:r35_7547 +# 35| r35_7549(glval) = FunctionAddress[String] : +# 35| v35_7550(void) = Call[String] : func:r35_7549, this:r35_7547 +# 35| mu35_7551(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7552(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7547 +# 35| r35_7553(glval) = VariableAddress[x539] : +# 35| r35_7554(glval) = FunctionAddress[~String] : +# 35| v35_7555(void) = Call[~String] : func:r35_7554, this:r35_7553 +# 35| mu35_7556(unknown) = ^CallSideEffect : ~m? +# 35| v35_7557(void) = ^IndirectReadSideEffect[-1] : &:r35_7553, ~m? +# 35| mu35_7558(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7553 +# 35| r35_7559(bool) = Constant[0] : +# 35| v35_7560(void) = ConditionalBranch : r35_7559 #-----| False -> Block 541 #-----| True (back edge) -> Block 540 -# 1639| Block 541 -# 1639| r1639_1(glval) = VariableAddress[x540] : -# 1639| mu1639_2(String) = Uninitialized[x540] : &:r1639_1 -# 1639| r1639_3(glval) = FunctionAddress[String] : -# 1639| v1639_4(void) = Call[String] : func:r1639_3, this:r1639_1 -# 1639| mu1639_5(unknown) = ^CallSideEffect : ~m? -# 1639| mu1639_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1639_1 -# 1640| r1640_1(glval) = VariableAddress[x540] : -# 1640| r1640_2(glval) = FunctionAddress[~String] : -# 1640| v1640_3(void) = Call[~String] : func:r1640_2, this:r1640_1 -# 1640| mu1640_4(unknown) = ^CallSideEffect : ~m? -# 1640| v1640_5(void) = ^IndirectReadSideEffect[-1] : &:r1640_1, ~m? -# 1640| mu1640_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1640_1 -# 1640| r1640_7(bool) = Constant[0] : -# 1640| v1640_8(void) = ConditionalBranch : r1640_7 +# 35| Block 541 +# 35| r35_7561(glval) = VariableAddress[x540] : +# 35| mu35_7562(String) = Uninitialized[x540] : &:r35_7561 +# 35| r35_7563(glval) = FunctionAddress[String] : +# 35| v35_7564(void) = Call[String] : func:r35_7563, this:r35_7561 +# 35| mu35_7565(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7566(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7561 +# 35| r35_7567(glval) = VariableAddress[x540] : +# 35| r35_7568(glval) = FunctionAddress[~String] : +# 35| v35_7569(void) = Call[~String] : func:r35_7568, this:r35_7567 +# 35| mu35_7570(unknown) = ^CallSideEffect : ~m? +# 35| v35_7571(void) = ^IndirectReadSideEffect[-1] : &:r35_7567, ~m? +# 35| mu35_7572(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7567 +# 35| r35_7573(bool) = Constant[0] : +# 35| v35_7574(void) = ConditionalBranch : r35_7573 #-----| False -> Block 542 #-----| True (back edge) -> Block 541 -# 1642| Block 542 -# 1642| r1642_1(glval) = VariableAddress[x541] : -# 1642| mu1642_2(String) = Uninitialized[x541] : &:r1642_1 -# 1642| r1642_3(glval) = FunctionAddress[String] : -# 1642| v1642_4(void) = Call[String] : func:r1642_3, this:r1642_1 -# 1642| mu1642_5(unknown) = ^CallSideEffect : ~m? -# 1642| mu1642_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1642_1 -# 1643| r1643_1(glval) = VariableAddress[x541] : -# 1643| r1643_2(glval) = FunctionAddress[~String] : -# 1643| v1643_3(void) = Call[~String] : func:r1643_2, this:r1643_1 -# 1643| mu1643_4(unknown) = ^CallSideEffect : ~m? -# 1643| v1643_5(void) = ^IndirectReadSideEffect[-1] : &:r1643_1, ~m? -# 1643| mu1643_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1643_1 -# 1643| r1643_7(bool) = Constant[0] : -# 1643| v1643_8(void) = ConditionalBranch : r1643_7 +# 35| Block 542 +# 35| r35_7575(glval) = VariableAddress[x541] : +# 35| mu35_7576(String) = Uninitialized[x541] : &:r35_7575 +# 35| r35_7577(glval) = FunctionAddress[String] : +# 35| v35_7578(void) = Call[String] : func:r35_7577, this:r35_7575 +# 35| mu35_7579(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7580(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7575 +# 35| r35_7581(glval) = VariableAddress[x541] : +# 35| r35_7582(glval) = FunctionAddress[~String] : +# 35| v35_7583(void) = Call[~String] : func:r35_7582, this:r35_7581 +# 35| mu35_7584(unknown) = ^CallSideEffect : ~m? +# 35| v35_7585(void) = ^IndirectReadSideEffect[-1] : &:r35_7581, ~m? +# 35| mu35_7586(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7581 +# 35| r35_7587(bool) = Constant[0] : +# 35| v35_7588(void) = ConditionalBranch : r35_7587 #-----| False -> Block 543 #-----| True (back edge) -> Block 542 -# 1645| Block 543 -# 1645| r1645_1(glval) = VariableAddress[x542] : -# 1645| mu1645_2(String) = Uninitialized[x542] : &:r1645_1 -# 1645| r1645_3(glval) = FunctionAddress[String] : -# 1645| v1645_4(void) = Call[String] : func:r1645_3, this:r1645_1 -# 1645| mu1645_5(unknown) = ^CallSideEffect : ~m? -# 1645| mu1645_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1645_1 -# 1646| r1646_1(glval) = VariableAddress[x542] : -# 1646| r1646_2(glval) = FunctionAddress[~String] : -# 1646| v1646_3(void) = Call[~String] : func:r1646_2, this:r1646_1 -# 1646| mu1646_4(unknown) = ^CallSideEffect : ~m? -# 1646| v1646_5(void) = ^IndirectReadSideEffect[-1] : &:r1646_1, ~m? -# 1646| mu1646_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1646_1 -# 1646| r1646_7(bool) = Constant[0] : -# 1646| v1646_8(void) = ConditionalBranch : r1646_7 +# 35| Block 543 +# 35| r35_7589(glval) = VariableAddress[x542] : +# 35| mu35_7590(String) = Uninitialized[x542] : &:r35_7589 +# 35| r35_7591(glval) = FunctionAddress[String] : +# 35| v35_7592(void) = Call[String] : func:r35_7591, this:r35_7589 +# 35| mu35_7593(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7594(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7589 +# 35| r35_7595(glval) = VariableAddress[x542] : +# 35| r35_7596(glval) = FunctionAddress[~String] : +# 35| v35_7597(void) = Call[~String] : func:r35_7596, this:r35_7595 +# 35| mu35_7598(unknown) = ^CallSideEffect : ~m? +# 35| v35_7599(void) = ^IndirectReadSideEffect[-1] : &:r35_7595, ~m? +# 35| mu35_7600(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7595 +# 35| r35_7601(bool) = Constant[0] : +# 35| v35_7602(void) = ConditionalBranch : r35_7601 #-----| False -> Block 544 #-----| True (back edge) -> Block 543 -# 1648| Block 544 -# 1648| r1648_1(glval) = VariableAddress[x543] : -# 1648| mu1648_2(String) = Uninitialized[x543] : &:r1648_1 -# 1648| r1648_3(glval) = FunctionAddress[String] : -# 1648| v1648_4(void) = Call[String] : func:r1648_3, this:r1648_1 -# 1648| mu1648_5(unknown) = ^CallSideEffect : ~m? -# 1648| mu1648_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1648_1 -# 1649| r1649_1(glval) = VariableAddress[x543] : -# 1649| r1649_2(glval) = FunctionAddress[~String] : -# 1649| v1649_3(void) = Call[~String] : func:r1649_2, this:r1649_1 -# 1649| mu1649_4(unknown) = ^CallSideEffect : ~m? -# 1649| v1649_5(void) = ^IndirectReadSideEffect[-1] : &:r1649_1, ~m? -# 1649| mu1649_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1649_1 -# 1649| r1649_7(bool) = Constant[0] : -# 1649| v1649_8(void) = ConditionalBranch : r1649_7 +# 35| Block 544 +# 35| r35_7603(glval) = VariableAddress[x543] : +# 35| mu35_7604(String) = Uninitialized[x543] : &:r35_7603 +# 35| r35_7605(glval) = FunctionAddress[String] : +# 35| v35_7606(void) = Call[String] : func:r35_7605, this:r35_7603 +# 35| mu35_7607(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7608(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7603 +# 35| r35_7609(glval) = VariableAddress[x543] : +# 35| r35_7610(glval) = FunctionAddress[~String] : +# 35| v35_7611(void) = Call[~String] : func:r35_7610, this:r35_7609 +# 35| mu35_7612(unknown) = ^CallSideEffect : ~m? +# 35| v35_7613(void) = ^IndirectReadSideEffect[-1] : &:r35_7609, ~m? +# 35| mu35_7614(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7609 +# 35| r35_7615(bool) = Constant[0] : +# 35| v35_7616(void) = ConditionalBranch : r35_7615 #-----| False -> Block 545 #-----| True (back edge) -> Block 544 -# 1651| Block 545 -# 1651| r1651_1(glval) = VariableAddress[x544] : -# 1651| mu1651_2(String) = Uninitialized[x544] : &:r1651_1 -# 1651| r1651_3(glval) = FunctionAddress[String] : -# 1651| v1651_4(void) = Call[String] : func:r1651_3, this:r1651_1 -# 1651| mu1651_5(unknown) = ^CallSideEffect : ~m? -# 1651| mu1651_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1651_1 -# 1652| r1652_1(glval) = VariableAddress[x544] : -# 1652| r1652_2(glval) = FunctionAddress[~String] : -# 1652| v1652_3(void) = Call[~String] : func:r1652_2, this:r1652_1 -# 1652| mu1652_4(unknown) = ^CallSideEffect : ~m? -# 1652| v1652_5(void) = ^IndirectReadSideEffect[-1] : &:r1652_1, ~m? -# 1652| mu1652_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1652_1 -# 1652| r1652_7(bool) = Constant[0] : -# 1652| v1652_8(void) = ConditionalBranch : r1652_7 +# 35| Block 545 +# 35| r35_7617(glval) = VariableAddress[x544] : +# 35| mu35_7618(String) = Uninitialized[x544] : &:r35_7617 +# 35| r35_7619(glval) = FunctionAddress[String] : +# 35| v35_7620(void) = Call[String] : func:r35_7619, this:r35_7617 +# 35| mu35_7621(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7622(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7617 +# 35| r35_7623(glval) = VariableAddress[x544] : +# 35| r35_7624(glval) = FunctionAddress[~String] : +# 35| v35_7625(void) = Call[~String] : func:r35_7624, this:r35_7623 +# 35| mu35_7626(unknown) = ^CallSideEffect : ~m? +# 35| v35_7627(void) = ^IndirectReadSideEffect[-1] : &:r35_7623, ~m? +# 35| mu35_7628(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7623 +# 35| r35_7629(bool) = Constant[0] : +# 35| v35_7630(void) = ConditionalBranch : r35_7629 #-----| False -> Block 546 #-----| True (back edge) -> Block 545 -# 1654| Block 546 -# 1654| r1654_1(glval) = VariableAddress[x545] : -# 1654| mu1654_2(String) = Uninitialized[x545] : &:r1654_1 -# 1654| r1654_3(glval) = FunctionAddress[String] : -# 1654| v1654_4(void) = Call[String] : func:r1654_3, this:r1654_1 -# 1654| mu1654_5(unknown) = ^CallSideEffect : ~m? -# 1654| mu1654_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1654_1 -# 1655| r1655_1(glval) = VariableAddress[x545] : -# 1655| r1655_2(glval) = FunctionAddress[~String] : -# 1655| v1655_3(void) = Call[~String] : func:r1655_2, this:r1655_1 -# 1655| mu1655_4(unknown) = ^CallSideEffect : ~m? -# 1655| v1655_5(void) = ^IndirectReadSideEffect[-1] : &:r1655_1, ~m? -# 1655| mu1655_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1655_1 -# 1655| r1655_7(bool) = Constant[0] : -# 1655| v1655_8(void) = ConditionalBranch : r1655_7 +# 35| Block 546 +# 35| r35_7631(glval) = VariableAddress[x545] : +# 35| mu35_7632(String) = Uninitialized[x545] : &:r35_7631 +# 35| r35_7633(glval) = FunctionAddress[String] : +# 35| v35_7634(void) = Call[String] : func:r35_7633, this:r35_7631 +# 35| mu35_7635(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7636(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7631 +# 35| r35_7637(glval) = VariableAddress[x545] : +# 35| r35_7638(glval) = FunctionAddress[~String] : +# 35| v35_7639(void) = Call[~String] : func:r35_7638, this:r35_7637 +# 35| mu35_7640(unknown) = ^CallSideEffect : ~m? +# 35| v35_7641(void) = ^IndirectReadSideEffect[-1] : &:r35_7637, ~m? +# 35| mu35_7642(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7637 +# 35| r35_7643(bool) = Constant[0] : +# 35| v35_7644(void) = ConditionalBranch : r35_7643 #-----| False -> Block 547 #-----| True (back edge) -> Block 546 -# 1657| Block 547 -# 1657| r1657_1(glval) = VariableAddress[x546] : -# 1657| mu1657_2(String) = Uninitialized[x546] : &:r1657_1 -# 1657| r1657_3(glval) = FunctionAddress[String] : -# 1657| v1657_4(void) = Call[String] : func:r1657_3, this:r1657_1 -# 1657| mu1657_5(unknown) = ^CallSideEffect : ~m? -# 1657| mu1657_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1657_1 -# 1658| r1658_1(glval) = VariableAddress[x546] : -# 1658| r1658_2(glval) = FunctionAddress[~String] : -# 1658| v1658_3(void) = Call[~String] : func:r1658_2, this:r1658_1 -# 1658| mu1658_4(unknown) = ^CallSideEffect : ~m? -# 1658| v1658_5(void) = ^IndirectReadSideEffect[-1] : &:r1658_1, ~m? -# 1658| mu1658_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1658_1 -# 1658| r1658_7(bool) = Constant[0] : -# 1658| v1658_8(void) = ConditionalBranch : r1658_7 +# 35| Block 547 +# 35| r35_7645(glval) = VariableAddress[x546] : +# 35| mu35_7646(String) = Uninitialized[x546] : &:r35_7645 +# 35| r35_7647(glval) = FunctionAddress[String] : +# 35| v35_7648(void) = Call[String] : func:r35_7647, this:r35_7645 +# 35| mu35_7649(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7650(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7645 +# 35| r35_7651(glval) = VariableAddress[x546] : +# 35| r35_7652(glval) = FunctionAddress[~String] : +# 35| v35_7653(void) = Call[~String] : func:r35_7652, this:r35_7651 +# 35| mu35_7654(unknown) = ^CallSideEffect : ~m? +# 35| v35_7655(void) = ^IndirectReadSideEffect[-1] : &:r35_7651, ~m? +# 35| mu35_7656(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7651 +# 35| r35_7657(bool) = Constant[0] : +# 35| v35_7658(void) = ConditionalBranch : r35_7657 #-----| False -> Block 548 #-----| True (back edge) -> Block 547 -# 1660| Block 548 -# 1660| r1660_1(glval) = VariableAddress[x547] : -# 1660| mu1660_2(String) = Uninitialized[x547] : &:r1660_1 -# 1660| r1660_3(glval) = FunctionAddress[String] : -# 1660| v1660_4(void) = Call[String] : func:r1660_3, this:r1660_1 -# 1660| mu1660_5(unknown) = ^CallSideEffect : ~m? -# 1660| mu1660_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1660_1 -# 1661| r1661_1(glval) = VariableAddress[x547] : -# 1661| r1661_2(glval) = FunctionAddress[~String] : -# 1661| v1661_3(void) = Call[~String] : func:r1661_2, this:r1661_1 -# 1661| mu1661_4(unknown) = ^CallSideEffect : ~m? -# 1661| v1661_5(void) = ^IndirectReadSideEffect[-1] : &:r1661_1, ~m? -# 1661| mu1661_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1661_1 -# 1661| r1661_7(bool) = Constant[0] : -# 1661| v1661_8(void) = ConditionalBranch : r1661_7 +# 35| Block 548 +# 35| r35_7659(glval) = VariableAddress[x547] : +# 35| mu35_7660(String) = Uninitialized[x547] : &:r35_7659 +# 35| r35_7661(glval) = FunctionAddress[String] : +# 35| v35_7662(void) = Call[String] : func:r35_7661, this:r35_7659 +# 35| mu35_7663(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7664(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7659 +# 35| r35_7665(glval) = VariableAddress[x547] : +# 35| r35_7666(glval) = FunctionAddress[~String] : +# 35| v35_7667(void) = Call[~String] : func:r35_7666, this:r35_7665 +# 35| mu35_7668(unknown) = ^CallSideEffect : ~m? +# 35| v35_7669(void) = ^IndirectReadSideEffect[-1] : &:r35_7665, ~m? +# 35| mu35_7670(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7665 +# 35| r35_7671(bool) = Constant[0] : +# 35| v35_7672(void) = ConditionalBranch : r35_7671 #-----| False -> Block 549 #-----| True (back edge) -> Block 548 -# 1663| Block 549 -# 1663| r1663_1(glval) = VariableAddress[x548] : -# 1663| mu1663_2(String) = Uninitialized[x548] : &:r1663_1 -# 1663| r1663_3(glval) = FunctionAddress[String] : -# 1663| v1663_4(void) = Call[String] : func:r1663_3, this:r1663_1 -# 1663| mu1663_5(unknown) = ^CallSideEffect : ~m? -# 1663| mu1663_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1663_1 -# 1664| r1664_1(glval) = VariableAddress[x548] : -# 1664| r1664_2(glval) = FunctionAddress[~String] : -# 1664| v1664_3(void) = Call[~String] : func:r1664_2, this:r1664_1 -# 1664| mu1664_4(unknown) = ^CallSideEffect : ~m? -# 1664| v1664_5(void) = ^IndirectReadSideEffect[-1] : &:r1664_1, ~m? -# 1664| mu1664_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1664_1 -# 1664| r1664_7(bool) = Constant[0] : -# 1664| v1664_8(void) = ConditionalBranch : r1664_7 +# 35| Block 549 +# 35| r35_7673(glval) = VariableAddress[x548] : +# 35| mu35_7674(String) = Uninitialized[x548] : &:r35_7673 +# 35| r35_7675(glval) = FunctionAddress[String] : +# 35| v35_7676(void) = Call[String] : func:r35_7675, this:r35_7673 +# 35| mu35_7677(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7678(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7673 +# 35| r35_7679(glval) = VariableAddress[x548] : +# 35| r35_7680(glval) = FunctionAddress[~String] : +# 35| v35_7681(void) = Call[~String] : func:r35_7680, this:r35_7679 +# 35| mu35_7682(unknown) = ^CallSideEffect : ~m? +# 35| v35_7683(void) = ^IndirectReadSideEffect[-1] : &:r35_7679, ~m? +# 35| mu35_7684(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7679 +# 35| r35_7685(bool) = Constant[0] : +# 35| v35_7686(void) = ConditionalBranch : r35_7685 #-----| False -> Block 550 #-----| True (back edge) -> Block 549 -# 1666| Block 550 -# 1666| r1666_1(glval) = VariableAddress[x549] : -# 1666| mu1666_2(String) = Uninitialized[x549] : &:r1666_1 -# 1666| r1666_3(glval) = FunctionAddress[String] : -# 1666| v1666_4(void) = Call[String] : func:r1666_3, this:r1666_1 -# 1666| mu1666_5(unknown) = ^CallSideEffect : ~m? -# 1666| mu1666_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1666_1 -# 1667| r1667_1(glval) = VariableAddress[x549] : -# 1667| r1667_2(glval) = FunctionAddress[~String] : -# 1667| v1667_3(void) = Call[~String] : func:r1667_2, this:r1667_1 -# 1667| mu1667_4(unknown) = ^CallSideEffect : ~m? -# 1667| v1667_5(void) = ^IndirectReadSideEffect[-1] : &:r1667_1, ~m? -# 1667| mu1667_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1667_1 -# 1667| r1667_7(bool) = Constant[0] : -# 1667| v1667_8(void) = ConditionalBranch : r1667_7 +# 35| Block 550 +# 35| r35_7687(glval) = VariableAddress[x549] : +# 35| mu35_7688(String) = Uninitialized[x549] : &:r35_7687 +# 35| r35_7689(glval) = FunctionAddress[String] : +# 35| v35_7690(void) = Call[String] : func:r35_7689, this:r35_7687 +# 35| mu35_7691(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7692(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7687 +# 35| r35_7693(glval) = VariableAddress[x549] : +# 35| r35_7694(glval) = FunctionAddress[~String] : +# 35| v35_7695(void) = Call[~String] : func:r35_7694, this:r35_7693 +# 35| mu35_7696(unknown) = ^CallSideEffect : ~m? +# 35| v35_7697(void) = ^IndirectReadSideEffect[-1] : &:r35_7693, ~m? +# 35| mu35_7698(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7693 +# 35| r35_7699(bool) = Constant[0] : +# 35| v35_7700(void) = ConditionalBranch : r35_7699 #-----| False -> Block 551 #-----| True (back edge) -> Block 550 -# 1669| Block 551 -# 1669| r1669_1(glval) = VariableAddress[x550] : -# 1669| mu1669_2(String) = Uninitialized[x550] : &:r1669_1 -# 1669| r1669_3(glval) = FunctionAddress[String] : -# 1669| v1669_4(void) = Call[String] : func:r1669_3, this:r1669_1 -# 1669| mu1669_5(unknown) = ^CallSideEffect : ~m? -# 1669| mu1669_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1669_1 -# 1670| r1670_1(glval) = VariableAddress[x550] : -# 1670| r1670_2(glval) = FunctionAddress[~String] : -# 1670| v1670_3(void) = Call[~String] : func:r1670_2, this:r1670_1 -# 1670| mu1670_4(unknown) = ^CallSideEffect : ~m? -# 1670| v1670_5(void) = ^IndirectReadSideEffect[-1] : &:r1670_1, ~m? -# 1670| mu1670_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1670_1 -# 1670| r1670_7(bool) = Constant[0] : -# 1670| v1670_8(void) = ConditionalBranch : r1670_7 +# 35| Block 551 +# 35| r35_7701(glval) = VariableAddress[x550] : +# 35| mu35_7702(String) = Uninitialized[x550] : &:r35_7701 +# 35| r35_7703(glval) = FunctionAddress[String] : +# 35| v35_7704(void) = Call[String] : func:r35_7703, this:r35_7701 +# 35| mu35_7705(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7706(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7701 +# 35| r35_7707(glval) = VariableAddress[x550] : +# 35| r35_7708(glval) = FunctionAddress[~String] : +# 35| v35_7709(void) = Call[~String] : func:r35_7708, this:r35_7707 +# 35| mu35_7710(unknown) = ^CallSideEffect : ~m? +# 35| v35_7711(void) = ^IndirectReadSideEffect[-1] : &:r35_7707, ~m? +# 35| mu35_7712(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7707 +# 35| r35_7713(bool) = Constant[0] : +# 35| v35_7714(void) = ConditionalBranch : r35_7713 #-----| False -> Block 552 #-----| True (back edge) -> Block 551 -# 1672| Block 552 -# 1672| r1672_1(glval) = VariableAddress[x551] : -# 1672| mu1672_2(String) = Uninitialized[x551] : &:r1672_1 -# 1672| r1672_3(glval) = FunctionAddress[String] : -# 1672| v1672_4(void) = Call[String] : func:r1672_3, this:r1672_1 -# 1672| mu1672_5(unknown) = ^CallSideEffect : ~m? -# 1672| mu1672_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1672_1 -# 1673| r1673_1(glval) = VariableAddress[x551] : -# 1673| r1673_2(glval) = FunctionAddress[~String] : -# 1673| v1673_3(void) = Call[~String] : func:r1673_2, this:r1673_1 -# 1673| mu1673_4(unknown) = ^CallSideEffect : ~m? -# 1673| v1673_5(void) = ^IndirectReadSideEffect[-1] : &:r1673_1, ~m? -# 1673| mu1673_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1673_1 -# 1673| r1673_7(bool) = Constant[0] : -# 1673| v1673_8(void) = ConditionalBranch : r1673_7 +# 35| Block 552 +# 35| r35_7715(glval) = VariableAddress[x551] : +# 35| mu35_7716(String) = Uninitialized[x551] : &:r35_7715 +# 35| r35_7717(glval) = FunctionAddress[String] : +# 35| v35_7718(void) = Call[String] : func:r35_7717, this:r35_7715 +# 35| mu35_7719(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7720(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7715 +# 35| r35_7721(glval) = VariableAddress[x551] : +# 35| r35_7722(glval) = FunctionAddress[~String] : +# 35| v35_7723(void) = Call[~String] : func:r35_7722, this:r35_7721 +# 35| mu35_7724(unknown) = ^CallSideEffect : ~m? +# 35| v35_7725(void) = ^IndirectReadSideEffect[-1] : &:r35_7721, ~m? +# 35| mu35_7726(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7721 +# 35| r35_7727(bool) = Constant[0] : +# 35| v35_7728(void) = ConditionalBranch : r35_7727 #-----| False -> Block 553 #-----| True (back edge) -> Block 552 -# 1675| Block 553 -# 1675| r1675_1(glval) = VariableAddress[x552] : -# 1675| mu1675_2(String) = Uninitialized[x552] : &:r1675_1 -# 1675| r1675_3(glval) = FunctionAddress[String] : -# 1675| v1675_4(void) = Call[String] : func:r1675_3, this:r1675_1 -# 1675| mu1675_5(unknown) = ^CallSideEffect : ~m? -# 1675| mu1675_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1675_1 -# 1676| r1676_1(glval) = VariableAddress[x552] : -# 1676| r1676_2(glval) = FunctionAddress[~String] : -# 1676| v1676_3(void) = Call[~String] : func:r1676_2, this:r1676_1 -# 1676| mu1676_4(unknown) = ^CallSideEffect : ~m? -# 1676| v1676_5(void) = ^IndirectReadSideEffect[-1] : &:r1676_1, ~m? -# 1676| mu1676_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1676_1 -# 1676| r1676_7(bool) = Constant[0] : -# 1676| v1676_8(void) = ConditionalBranch : r1676_7 +# 35| Block 553 +# 35| r35_7729(glval) = VariableAddress[x552] : +# 35| mu35_7730(String) = Uninitialized[x552] : &:r35_7729 +# 35| r35_7731(glval) = FunctionAddress[String] : +# 35| v35_7732(void) = Call[String] : func:r35_7731, this:r35_7729 +# 35| mu35_7733(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7734(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7729 +# 35| r35_7735(glval) = VariableAddress[x552] : +# 35| r35_7736(glval) = FunctionAddress[~String] : +# 35| v35_7737(void) = Call[~String] : func:r35_7736, this:r35_7735 +# 35| mu35_7738(unknown) = ^CallSideEffect : ~m? +# 35| v35_7739(void) = ^IndirectReadSideEffect[-1] : &:r35_7735, ~m? +# 35| mu35_7740(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7735 +# 35| r35_7741(bool) = Constant[0] : +# 35| v35_7742(void) = ConditionalBranch : r35_7741 #-----| False -> Block 554 #-----| True (back edge) -> Block 553 -# 1678| Block 554 -# 1678| r1678_1(glval) = VariableAddress[x553] : -# 1678| mu1678_2(String) = Uninitialized[x553] : &:r1678_1 -# 1678| r1678_3(glval) = FunctionAddress[String] : -# 1678| v1678_4(void) = Call[String] : func:r1678_3, this:r1678_1 -# 1678| mu1678_5(unknown) = ^CallSideEffect : ~m? -# 1678| mu1678_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1678_1 -# 1679| r1679_1(glval) = VariableAddress[x553] : -# 1679| r1679_2(glval) = FunctionAddress[~String] : -# 1679| v1679_3(void) = Call[~String] : func:r1679_2, this:r1679_1 -# 1679| mu1679_4(unknown) = ^CallSideEffect : ~m? -# 1679| v1679_5(void) = ^IndirectReadSideEffect[-1] : &:r1679_1, ~m? -# 1679| mu1679_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1679_1 -# 1679| r1679_7(bool) = Constant[0] : -# 1679| v1679_8(void) = ConditionalBranch : r1679_7 +# 35| Block 554 +# 35| r35_7743(glval) = VariableAddress[x553] : +# 35| mu35_7744(String) = Uninitialized[x553] : &:r35_7743 +# 35| r35_7745(glval) = FunctionAddress[String] : +# 35| v35_7746(void) = Call[String] : func:r35_7745, this:r35_7743 +# 35| mu35_7747(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7748(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7743 +# 35| r35_7749(glval) = VariableAddress[x553] : +# 35| r35_7750(glval) = FunctionAddress[~String] : +# 35| v35_7751(void) = Call[~String] : func:r35_7750, this:r35_7749 +# 35| mu35_7752(unknown) = ^CallSideEffect : ~m? +# 35| v35_7753(void) = ^IndirectReadSideEffect[-1] : &:r35_7749, ~m? +# 35| mu35_7754(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7749 +# 35| r35_7755(bool) = Constant[0] : +# 35| v35_7756(void) = ConditionalBranch : r35_7755 #-----| False -> Block 555 #-----| True (back edge) -> Block 554 -# 1681| Block 555 -# 1681| r1681_1(glval) = VariableAddress[x554] : -# 1681| mu1681_2(String) = Uninitialized[x554] : &:r1681_1 -# 1681| r1681_3(glval) = FunctionAddress[String] : -# 1681| v1681_4(void) = Call[String] : func:r1681_3, this:r1681_1 -# 1681| mu1681_5(unknown) = ^CallSideEffect : ~m? -# 1681| mu1681_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1681_1 -# 1682| r1682_1(glval) = VariableAddress[x554] : -# 1682| r1682_2(glval) = FunctionAddress[~String] : -# 1682| v1682_3(void) = Call[~String] : func:r1682_2, this:r1682_1 -# 1682| mu1682_4(unknown) = ^CallSideEffect : ~m? -# 1682| v1682_5(void) = ^IndirectReadSideEffect[-1] : &:r1682_1, ~m? -# 1682| mu1682_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1682_1 -# 1682| r1682_7(bool) = Constant[0] : -# 1682| v1682_8(void) = ConditionalBranch : r1682_7 +# 35| Block 555 +# 35| r35_7757(glval) = VariableAddress[x554] : +# 35| mu35_7758(String) = Uninitialized[x554] : &:r35_7757 +# 35| r35_7759(glval) = FunctionAddress[String] : +# 35| v35_7760(void) = Call[String] : func:r35_7759, this:r35_7757 +# 35| mu35_7761(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7762(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7757 +# 35| r35_7763(glval) = VariableAddress[x554] : +# 35| r35_7764(glval) = FunctionAddress[~String] : +# 35| v35_7765(void) = Call[~String] : func:r35_7764, this:r35_7763 +# 35| mu35_7766(unknown) = ^CallSideEffect : ~m? +# 35| v35_7767(void) = ^IndirectReadSideEffect[-1] : &:r35_7763, ~m? +# 35| mu35_7768(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7763 +# 35| r35_7769(bool) = Constant[0] : +# 35| v35_7770(void) = ConditionalBranch : r35_7769 #-----| False -> Block 556 #-----| True (back edge) -> Block 555 -# 1684| Block 556 -# 1684| r1684_1(glval) = VariableAddress[x555] : -# 1684| mu1684_2(String) = Uninitialized[x555] : &:r1684_1 -# 1684| r1684_3(glval) = FunctionAddress[String] : -# 1684| v1684_4(void) = Call[String] : func:r1684_3, this:r1684_1 -# 1684| mu1684_5(unknown) = ^CallSideEffect : ~m? -# 1684| mu1684_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1684_1 -# 1685| r1685_1(glval) = VariableAddress[x555] : -# 1685| r1685_2(glval) = FunctionAddress[~String] : -# 1685| v1685_3(void) = Call[~String] : func:r1685_2, this:r1685_1 -# 1685| mu1685_4(unknown) = ^CallSideEffect : ~m? -# 1685| v1685_5(void) = ^IndirectReadSideEffect[-1] : &:r1685_1, ~m? -# 1685| mu1685_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1685_1 -# 1685| r1685_7(bool) = Constant[0] : -# 1685| v1685_8(void) = ConditionalBranch : r1685_7 +# 35| Block 556 +# 35| r35_7771(glval) = VariableAddress[x555] : +# 35| mu35_7772(String) = Uninitialized[x555] : &:r35_7771 +# 35| r35_7773(glval) = FunctionAddress[String] : +# 35| v35_7774(void) = Call[String] : func:r35_7773, this:r35_7771 +# 35| mu35_7775(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7776(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7771 +# 35| r35_7777(glval) = VariableAddress[x555] : +# 35| r35_7778(glval) = FunctionAddress[~String] : +# 35| v35_7779(void) = Call[~String] : func:r35_7778, this:r35_7777 +# 35| mu35_7780(unknown) = ^CallSideEffect : ~m? +# 35| v35_7781(void) = ^IndirectReadSideEffect[-1] : &:r35_7777, ~m? +# 35| mu35_7782(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7777 +# 35| r35_7783(bool) = Constant[0] : +# 35| v35_7784(void) = ConditionalBranch : r35_7783 #-----| False -> Block 557 #-----| True (back edge) -> Block 556 -# 1687| Block 557 -# 1687| r1687_1(glval) = VariableAddress[x556] : -# 1687| mu1687_2(String) = Uninitialized[x556] : &:r1687_1 -# 1687| r1687_3(glval) = FunctionAddress[String] : -# 1687| v1687_4(void) = Call[String] : func:r1687_3, this:r1687_1 -# 1687| mu1687_5(unknown) = ^CallSideEffect : ~m? -# 1687| mu1687_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1687_1 -# 1688| r1688_1(glval) = VariableAddress[x556] : -# 1688| r1688_2(glval) = FunctionAddress[~String] : -# 1688| v1688_3(void) = Call[~String] : func:r1688_2, this:r1688_1 -# 1688| mu1688_4(unknown) = ^CallSideEffect : ~m? -# 1688| v1688_5(void) = ^IndirectReadSideEffect[-1] : &:r1688_1, ~m? -# 1688| mu1688_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1688_1 -# 1688| r1688_7(bool) = Constant[0] : -# 1688| v1688_8(void) = ConditionalBranch : r1688_7 +# 35| Block 557 +# 35| r35_7785(glval) = VariableAddress[x556] : +# 35| mu35_7786(String) = Uninitialized[x556] : &:r35_7785 +# 35| r35_7787(glval) = FunctionAddress[String] : +# 35| v35_7788(void) = Call[String] : func:r35_7787, this:r35_7785 +# 35| mu35_7789(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7790(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7785 +# 35| r35_7791(glval) = VariableAddress[x556] : +# 35| r35_7792(glval) = FunctionAddress[~String] : +# 35| v35_7793(void) = Call[~String] : func:r35_7792, this:r35_7791 +# 35| mu35_7794(unknown) = ^CallSideEffect : ~m? +# 35| v35_7795(void) = ^IndirectReadSideEffect[-1] : &:r35_7791, ~m? +# 35| mu35_7796(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7791 +# 35| r35_7797(bool) = Constant[0] : +# 35| v35_7798(void) = ConditionalBranch : r35_7797 #-----| False -> Block 558 #-----| True (back edge) -> Block 557 -# 1690| Block 558 -# 1690| r1690_1(glval) = VariableAddress[x557] : -# 1690| mu1690_2(String) = Uninitialized[x557] : &:r1690_1 -# 1690| r1690_3(glval) = FunctionAddress[String] : -# 1690| v1690_4(void) = Call[String] : func:r1690_3, this:r1690_1 -# 1690| mu1690_5(unknown) = ^CallSideEffect : ~m? -# 1690| mu1690_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1690_1 -# 1691| r1691_1(glval) = VariableAddress[x557] : -# 1691| r1691_2(glval) = FunctionAddress[~String] : -# 1691| v1691_3(void) = Call[~String] : func:r1691_2, this:r1691_1 -# 1691| mu1691_4(unknown) = ^CallSideEffect : ~m? -# 1691| v1691_5(void) = ^IndirectReadSideEffect[-1] : &:r1691_1, ~m? -# 1691| mu1691_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1691_1 -# 1691| r1691_7(bool) = Constant[0] : -# 1691| v1691_8(void) = ConditionalBranch : r1691_7 +# 35| Block 558 +# 35| r35_7799(glval) = VariableAddress[x557] : +# 35| mu35_7800(String) = Uninitialized[x557] : &:r35_7799 +# 35| r35_7801(glval) = FunctionAddress[String] : +# 35| v35_7802(void) = Call[String] : func:r35_7801, this:r35_7799 +# 35| mu35_7803(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7804(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7799 +# 35| r35_7805(glval) = VariableAddress[x557] : +# 35| r35_7806(glval) = FunctionAddress[~String] : +# 35| v35_7807(void) = Call[~String] : func:r35_7806, this:r35_7805 +# 35| mu35_7808(unknown) = ^CallSideEffect : ~m? +# 35| v35_7809(void) = ^IndirectReadSideEffect[-1] : &:r35_7805, ~m? +# 35| mu35_7810(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7805 +# 35| r35_7811(bool) = Constant[0] : +# 35| v35_7812(void) = ConditionalBranch : r35_7811 #-----| False -> Block 559 #-----| True (back edge) -> Block 558 -# 1693| Block 559 -# 1693| r1693_1(glval) = VariableAddress[x558] : -# 1693| mu1693_2(String) = Uninitialized[x558] : &:r1693_1 -# 1693| r1693_3(glval) = FunctionAddress[String] : -# 1693| v1693_4(void) = Call[String] : func:r1693_3, this:r1693_1 -# 1693| mu1693_5(unknown) = ^CallSideEffect : ~m? -# 1693| mu1693_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1693_1 -# 1694| r1694_1(glval) = VariableAddress[x558] : -# 1694| r1694_2(glval) = FunctionAddress[~String] : -# 1694| v1694_3(void) = Call[~String] : func:r1694_2, this:r1694_1 -# 1694| mu1694_4(unknown) = ^CallSideEffect : ~m? -# 1694| v1694_5(void) = ^IndirectReadSideEffect[-1] : &:r1694_1, ~m? -# 1694| mu1694_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1694_1 -# 1694| r1694_7(bool) = Constant[0] : -# 1694| v1694_8(void) = ConditionalBranch : r1694_7 +# 35| Block 559 +# 35| r35_7813(glval) = VariableAddress[x558] : +# 35| mu35_7814(String) = Uninitialized[x558] : &:r35_7813 +# 35| r35_7815(glval) = FunctionAddress[String] : +# 35| v35_7816(void) = Call[String] : func:r35_7815, this:r35_7813 +# 35| mu35_7817(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7818(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7813 +# 35| r35_7819(glval) = VariableAddress[x558] : +# 35| r35_7820(glval) = FunctionAddress[~String] : +# 35| v35_7821(void) = Call[~String] : func:r35_7820, this:r35_7819 +# 35| mu35_7822(unknown) = ^CallSideEffect : ~m? +# 35| v35_7823(void) = ^IndirectReadSideEffect[-1] : &:r35_7819, ~m? +# 35| mu35_7824(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7819 +# 35| r35_7825(bool) = Constant[0] : +# 35| v35_7826(void) = ConditionalBranch : r35_7825 #-----| False -> Block 560 #-----| True (back edge) -> Block 559 -# 1696| Block 560 -# 1696| r1696_1(glval) = VariableAddress[x559] : -# 1696| mu1696_2(String) = Uninitialized[x559] : &:r1696_1 -# 1696| r1696_3(glval) = FunctionAddress[String] : -# 1696| v1696_4(void) = Call[String] : func:r1696_3, this:r1696_1 -# 1696| mu1696_5(unknown) = ^CallSideEffect : ~m? -# 1696| mu1696_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1696_1 -# 1697| r1697_1(glval) = VariableAddress[x559] : -# 1697| r1697_2(glval) = FunctionAddress[~String] : -# 1697| v1697_3(void) = Call[~String] : func:r1697_2, this:r1697_1 -# 1697| mu1697_4(unknown) = ^CallSideEffect : ~m? -# 1697| v1697_5(void) = ^IndirectReadSideEffect[-1] : &:r1697_1, ~m? -# 1697| mu1697_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1697_1 -# 1697| r1697_7(bool) = Constant[0] : -# 1697| v1697_8(void) = ConditionalBranch : r1697_7 +# 35| Block 560 +# 35| r35_7827(glval) = VariableAddress[x559] : +# 35| mu35_7828(String) = Uninitialized[x559] : &:r35_7827 +# 35| r35_7829(glval) = FunctionAddress[String] : +# 35| v35_7830(void) = Call[String] : func:r35_7829, this:r35_7827 +# 35| mu35_7831(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7832(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7827 +# 35| r35_7833(glval) = VariableAddress[x559] : +# 35| r35_7834(glval) = FunctionAddress[~String] : +# 35| v35_7835(void) = Call[~String] : func:r35_7834, this:r35_7833 +# 35| mu35_7836(unknown) = ^CallSideEffect : ~m? +# 35| v35_7837(void) = ^IndirectReadSideEffect[-1] : &:r35_7833, ~m? +# 35| mu35_7838(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7833 +# 35| r35_7839(bool) = Constant[0] : +# 35| v35_7840(void) = ConditionalBranch : r35_7839 #-----| False -> Block 561 #-----| True (back edge) -> Block 560 -# 1699| Block 561 -# 1699| r1699_1(glval) = VariableAddress[x560] : -# 1699| mu1699_2(String) = Uninitialized[x560] : &:r1699_1 -# 1699| r1699_3(glval) = FunctionAddress[String] : -# 1699| v1699_4(void) = Call[String] : func:r1699_3, this:r1699_1 -# 1699| mu1699_5(unknown) = ^CallSideEffect : ~m? -# 1699| mu1699_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1699_1 -# 1700| r1700_1(glval) = VariableAddress[x560] : -# 1700| r1700_2(glval) = FunctionAddress[~String] : -# 1700| v1700_3(void) = Call[~String] : func:r1700_2, this:r1700_1 -# 1700| mu1700_4(unknown) = ^CallSideEffect : ~m? -# 1700| v1700_5(void) = ^IndirectReadSideEffect[-1] : &:r1700_1, ~m? -# 1700| mu1700_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1700_1 -# 1700| r1700_7(bool) = Constant[0] : -# 1700| v1700_8(void) = ConditionalBranch : r1700_7 +# 35| Block 561 +# 35| r35_7841(glval) = VariableAddress[x560] : +# 35| mu35_7842(String) = Uninitialized[x560] : &:r35_7841 +# 35| r35_7843(glval) = FunctionAddress[String] : +# 35| v35_7844(void) = Call[String] : func:r35_7843, this:r35_7841 +# 35| mu35_7845(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7846(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7841 +# 35| r35_7847(glval) = VariableAddress[x560] : +# 35| r35_7848(glval) = FunctionAddress[~String] : +# 35| v35_7849(void) = Call[~String] : func:r35_7848, this:r35_7847 +# 35| mu35_7850(unknown) = ^CallSideEffect : ~m? +# 35| v35_7851(void) = ^IndirectReadSideEffect[-1] : &:r35_7847, ~m? +# 35| mu35_7852(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7847 +# 35| r35_7853(bool) = Constant[0] : +# 35| v35_7854(void) = ConditionalBranch : r35_7853 #-----| False -> Block 562 #-----| True (back edge) -> Block 561 -# 1702| Block 562 -# 1702| r1702_1(glval) = VariableAddress[x561] : -# 1702| mu1702_2(String) = Uninitialized[x561] : &:r1702_1 -# 1702| r1702_3(glval) = FunctionAddress[String] : -# 1702| v1702_4(void) = Call[String] : func:r1702_3, this:r1702_1 -# 1702| mu1702_5(unknown) = ^CallSideEffect : ~m? -# 1702| mu1702_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1702_1 -# 1703| r1703_1(glval) = VariableAddress[x561] : -# 1703| r1703_2(glval) = FunctionAddress[~String] : -# 1703| v1703_3(void) = Call[~String] : func:r1703_2, this:r1703_1 -# 1703| mu1703_4(unknown) = ^CallSideEffect : ~m? -# 1703| v1703_5(void) = ^IndirectReadSideEffect[-1] : &:r1703_1, ~m? -# 1703| mu1703_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1703_1 -# 1703| r1703_7(bool) = Constant[0] : -# 1703| v1703_8(void) = ConditionalBranch : r1703_7 +# 35| Block 562 +# 35| r35_7855(glval) = VariableAddress[x561] : +# 35| mu35_7856(String) = Uninitialized[x561] : &:r35_7855 +# 35| r35_7857(glval) = FunctionAddress[String] : +# 35| v35_7858(void) = Call[String] : func:r35_7857, this:r35_7855 +# 35| mu35_7859(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7860(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7855 +# 35| r35_7861(glval) = VariableAddress[x561] : +# 35| r35_7862(glval) = FunctionAddress[~String] : +# 35| v35_7863(void) = Call[~String] : func:r35_7862, this:r35_7861 +# 35| mu35_7864(unknown) = ^CallSideEffect : ~m? +# 35| v35_7865(void) = ^IndirectReadSideEffect[-1] : &:r35_7861, ~m? +# 35| mu35_7866(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7861 +# 35| r35_7867(bool) = Constant[0] : +# 35| v35_7868(void) = ConditionalBranch : r35_7867 #-----| False -> Block 563 #-----| True (back edge) -> Block 562 -# 1705| Block 563 -# 1705| r1705_1(glval) = VariableAddress[x562] : -# 1705| mu1705_2(String) = Uninitialized[x562] : &:r1705_1 -# 1705| r1705_3(glval) = FunctionAddress[String] : -# 1705| v1705_4(void) = Call[String] : func:r1705_3, this:r1705_1 -# 1705| mu1705_5(unknown) = ^CallSideEffect : ~m? -# 1705| mu1705_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1705_1 -# 1706| r1706_1(glval) = VariableAddress[x562] : -# 1706| r1706_2(glval) = FunctionAddress[~String] : -# 1706| v1706_3(void) = Call[~String] : func:r1706_2, this:r1706_1 -# 1706| mu1706_4(unknown) = ^CallSideEffect : ~m? -# 1706| v1706_5(void) = ^IndirectReadSideEffect[-1] : &:r1706_1, ~m? -# 1706| mu1706_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1706_1 -# 1706| r1706_7(bool) = Constant[0] : -# 1706| v1706_8(void) = ConditionalBranch : r1706_7 +# 35| Block 563 +# 35| r35_7869(glval) = VariableAddress[x562] : +# 35| mu35_7870(String) = Uninitialized[x562] : &:r35_7869 +# 35| r35_7871(glval) = FunctionAddress[String] : +# 35| v35_7872(void) = Call[String] : func:r35_7871, this:r35_7869 +# 35| mu35_7873(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7874(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7869 +# 35| r35_7875(glval) = VariableAddress[x562] : +# 35| r35_7876(glval) = FunctionAddress[~String] : +# 35| v35_7877(void) = Call[~String] : func:r35_7876, this:r35_7875 +# 35| mu35_7878(unknown) = ^CallSideEffect : ~m? +# 35| v35_7879(void) = ^IndirectReadSideEffect[-1] : &:r35_7875, ~m? +# 35| mu35_7880(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7875 +# 35| r35_7881(bool) = Constant[0] : +# 35| v35_7882(void) = ConditionalBranch : r35_7881 #-----| False -> Block 564 #-----| True (back edge) -> Block 563 -# 1708| Block 564 -# 1708| r1708_1(glval) = VariableAddress[x563] : -# 1708| mu1708_2(String) = Uninitialized[x563] : &:r1708_1 -# 1708| r1708_3(glval) = FunctionAddress[String] : -# 1708| v1708_4(void) = Call[String] : func:r1708_3, this:r1708_1 -# 1708| mu1708_5(unknown) = ^CallSideEffect : ~m? -# 1708| mu1708_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1708_1 -# 1709| r1709_1(glval) = VariableAddress[x563] : -# 1709| r1709_2(glval) = FunctionAddress[~String] : -# 1709| v1709_3(void) = Call[~String] : func:r1709_2, this:r1709_1 -# 1709| mu1709_4(unknown) = ^CallSideEffect : ~m? -# 1709| v1709_5(void) = ^IndirectReadSideEffect[-1] : &:r1709_1, ~m? -# 1709| mu1709_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1709_1 -# 1709| r1709_7(bool) = Constant[0] : -# 1709| v1709_8(void) = ConditionalBranch : r1709_7 +# 35| Block 564 +# 35| r35_7883(glval) = VariableAddress[x563] : +# 35| mu35_7884(String) = Uninitialized[x563] : &:r35_7883 +# 35| r35_7885(glval) = FunctionAddress[String] : +# 35| v35_7886(void) = Call[String] : func:r35_7885, this:r35_7883 +# 35| mu35_7887(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7888(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7883 +# 35| r35_7889(glval) = VariableAddress[x563] : +# 35| r35_7890(glval) = FunctionAddress[~String] : +# 35| v35_7891(void) = Call[~String] : func:r35_7890, this:r35_7889 +# 35| mu35_7892(unknown) = ^CallSideEffect : ~m? +# 35| v35_7893(void) = ^IndirectReadSideEffect[-1] : &:r35_7889, ~m? +# 35| mu35_7894(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7889 +# 35| r35_7895(bool) = Constant[0] : +# 35| v35_7896(void) = ConditionalBranch : r35_7895 #-----| False -> Block 565 #-----| True (back edge) -> Block 564 -# 1711| Block 565 -# 1711| r1711_1(glval) = VariableAddress[x564] : -# 1711| mu1711_2(String) = Uninitialized[x564] : &:r1711_1 -# 1711| r1711_3(glval) = FunctionAddress[String] : -# 1711| v1711_4(void) = Call[String] : func:r1711_3, this:r1711_1 -# 1711| mu1711_5(unknown) = ^CallSideEffect : ~m? -# 1711| mu1711_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1711_1 -# 1712| r1712_1(glval) = VariableAddress[x564] : -# 1712| r1712_2(glval) = FunctionAddress[~String] : -# 1712| v1712_3(void) = Call[~String] : func:r1712_2, this:r1712_1 -# 1712| mu1712_4(unknown) = ^CallSideEffect : ~m? -# 1712| v1712_5(void) = ^IndirectReadSideEffect[-1] : &:r1712_1, ~m? -# 1712| mu1712_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1712_1 -# 1712| r1712_7(bool) = Constant[0] : -# 1712| v1712_8(void) = ConditionalBranch : r1712_7 +# 35| Block 565 +# 35| r35_7897(glval) = VariableAddress[x564] : +# 35| mu35_7898(String) = Uninitialized[x564] : &:r35_7897 +# 35| r35_7899(glval) = FunctionAddress[String] : +# 35| v35_7900(void) = Call[String] : func:r35_7899, this:r35_7897 +# 35| mu35_7901(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7902(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7897 +# 35| r35_7903(glval) = VariableAddress[x564] : +# 35| r35_7904(glval) = FunctionAddress[~String] : +# 35| v35_7905(void) = Call[~String] : func:r35_7904, this:r35_7903 +# 35| mu35_7906(unknown) = ^CallSideEffect : ~m? +# 35| v35_7907(void) = ^IndirectReadSideEffect[-1] : &:r35_7903, ~m? +# 35| mu35_7908(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7903 +# 35| r35_7909(bool) = Constant[0] : +# 35| v35_7910(void) = ConditionalBranch : r35_7909 #-----| False -> Block 566 #-----| True (back edge) -> Block 565 -# 1714| Block 566 -# 1714| r1714_1(glval) = VariableAddress[x565] : -# 1714| mu1714_2(String) = Uninitialized[x565] : &:r1714_1 -# 1714| r1714_3(glval) = FunctionAddress[String] : -# 1714| v1714_4(void) = Call[String] : func:r1714_3, this:r1714_1 -# 1714| mu1714_5(unknown) = ^CallSideEffect : ~m? -# 1714| mu1714_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1714_1 -# 1715| r1715_1(glval) = VariableAddress[x565] : -# 1715| r1715_2(glval) = FunctionAddress[~String] : -# 1715| v1715_3(void) = Call[~String] : func:r1715_2, this:r1715_1 -# 1715| mu1715_4(unknown) = ^CallSideEffect : ~m? -# 1715| v1715_5(void) = ^IndirectReadSideEffect[-1] : &:r1715_1, ~m? -# 1715| mu1715_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1715_1 -# 1715| r1715_7(bool) = Constant[0] : -# 1715| v1715_8(void) = ConditionalBranch : r1715_7 +# 35| Block 566 +# 35| r35_7911(glval) = VariableAddress[x565] : +# 35| mu35_7912(String) = Uninitialized[x565] : &:r35_7911 +# 35| r35_7913(glval) = FunctionAddress[String] : +# 35| v35_7914(void) = Call[String] : func:r35_7913, this:r35_7911 +# 35| mu35_7915(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7916(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7911 +# 35| r35_7917(glval) = VariableAddress[x565] : +# 35| r35_7918(glval) = FunctionAddress[~String] : +# 35| v35_7919(void) = Call[~String] : func:r35_7918, this:r35_7917 +# 35| mu35_7920(unknown) = ^CallSideEffect : ~m? +# 35| v35_7921(void) = ^IndirectReadSideEffect[-1] : &:r35_7917, ~m? +# 35| mu35_7922(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7917 +# 35| r35_7923(bool) = Constant[0] : +# 35| v35_7924(void) = ConditionalBranch : r35_7923 #-----| False -> Block 567 #-----| True (back edge) -> Block 566 -# 1717| Block 567 -# 1717| r1717_1(glval) = VariableAddress[x566] : -# 1717| mu1717_2(String) = Uninitialized[x566] : &:r1717_1 -# 1717| r1717_3(glval) = FunctionAddress[String] : -# 1717| v1717_4(void) = Call[String] : func:r1717_3, this:r1717_1 -# 1717| mu1717_5(unknown) = ^CallSideEffect : ~m? -# 1717| mu1717_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1717_1 -# 1718| r1718_1(glval) = VariableAddress[x566] : -# 1718| r1718_2(glval) = FunctionAddress[~String] : -# 1718| v1718_3(void) = Call[~String] : func:r1718_2, this:r1718_1 -# 1718| mu1718_4(unknown) = ^CallSideEffect : ~m? -# 1718| v1718_5(void) = ^IndirectReadSideEffect[-1] : &:r1718_1, ~m? -# 1718| mu1718_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1718_1 -# 1718| r1718_7(bool) = Constant[0] : -# 1718| v1718_8(void) = ConditionalBranch : r1718_7 +# 35| Block 567 +# 35| r35_7925(glval) = VariableAddress[x566] : +# 35| mu35_7926(String) = Uninitialized[x566] : &:r35_7925 +# 35| r35_7927(glval) = FunctionAddress[String] : +# 35| v35_7928(void) = Call[String] : func:r35_7927, this:r35_7925 +# 35| mu35_7929(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7930(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7925 +# 35| r35_7931(glval) = VariableAddress[x566] : +# 35| r35_7932(glval) = FunctionAddress[~String] : +# 35| v35_7933(void) = Call[~String] : func:r35_7932, this:r35_7931 +# 35| mu35_7934(unknown) = ^CallSideEffect : ~m? +# 35| v35_7935(void) = ^IndirectReadSideEffect[-1] : &:r35_7931, ~m? +# 35| mu35_7936(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7931 +# 35| r35_7937(bool) = Constant[0] : +# 35| v35_7938(void) = ConditionalBranch : r35_7937 #-----| False -> Block 568 #-----| True (back edge) -> Block 567 -# 1720| Block 568 -# 1720| r1720_1(glval) = VariableAddress[x567] : -# 1720| mu1720_2(String) = Uninitialized[x567] : &:r1720_1 -# 1720| r1720_3(glval) = FunctionAddress[String] : -# 1720| v1720_4(void) = Call[String] : func:r1720_3, this:r1720_1 -# 1720| mu1720_5(unknown) = ^CallSideEffect : ~m? -# 1720| mu1720_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1720_1 -# 1721| r1721_1(glval) = VariableAddress[x567] : -# 1721| r1721_2(glval) = FunctionAddress[~String] : -# 1721| v1721_3(void) = Call[~String] : func:r1721_2, this:r1721_1 -# 1721| mu1721_4(unknown) = ^CallSideEffect : ~m? -# 1721| v1721_5(void) = ^IndirectReadSideEffect[-1] : &:r1721_1, ~m? -# 1721| mu1721_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1721_1 -# 1721| r1721_7(bool) = Constant[0] : -# 1721| v1721_8(void) = ConditionalBranch : r1721_7 +# 35| Block 568 +# 35| r35_7939(glval) = VariableAddress[x567] : +# 35| mu35_7940(String) = Uninitialized[x567] : &:r35_7939 +# 35| r35_7941(glval) = FunctionAddress[String] : +# 35| v35_7942(void) = Call[String] : func:r35_7941, this:r35_7939 +# 35| mu35_7943(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7944(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7939 +# 35| r35_7945(glval) = VariableAddress[x567] : +# 35| r35_7946(glval) = FunctionAddress[~String] : +# 35| v35_7947(void) = Call[~String] : func:r35_7946, this:r35_7945 +# 35| mu35_7948(unknown) = ^CallSideEffect : ~m? +# 35| v35_7949(void) = ^IndirectReadSideEffect[-1] : &:r35_7945, ~m? +# 35| mu35_7950(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7945 +# 35| r35_7951(bool) = Constant[0] : +# 35| v35_7952(void) = ConditionalBranch : r35_7951 #-----| False -> Block 569 #-----| True (back edge) -> Block 568 -# 1723| Block 569 -# 1723| r1723_1(glval) = VariableAddress[x568] : -# 1723| mu1723_2(String) = Uninitialized[x568] : &:r1723_1 -# 1723| r1723_3(glval) = FunctionAddress[String] : -# 1723| v1723_4(void) = Call[String] : func:r1723_3, this:r1723_1 -# 1723| mu1723_5(unknown) = ^CallSideEffect : ~m? -# 1723| mu1723_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1723_1 -# 1724| r1724_1(glval) = VariableAddress[x568] : -# 1724| r1724_2(glval) = FunctionAddress[~String] : -# 1724| v1724_3(void) = Call[~String] : func:r1724_2, this:r1724_1 -# 1724| mu1724_4(unknown) = ^CallSideEffect : ~m? -# 1724| v1724_5(void) = ^IndirectReadSideEffect[-1] : &:r1724_1, ~m? -# 1724| mu1724_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1724_1 -# 1724| r1724_7(bool) = Constant[0] : -# 1724| v1724_8(void) = ConditionalBranch : r1724_7 +# 35| Block 569 +# 35| r35_7953(glval) = VariableAddress[x568] : +# 35| mu35_7954(String) = Uninitialized[x568] : &:r35_7953 +# 35| r35_7955(glval) = FunctionAddress[String] : +# 35| v35_7956(void) = Call[String] : func:r35_7955, this:r35_7953 +# 35| mu35_7957(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7958(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7953 +# 35| r35_7959(glval) = VariableAddress[x568] : +# 35| r35_7960(glval) = FunctionAddress[~String] : +# 35| v35_7961(void) = Call[~String] : func:r35_7960, this:r35_7959 +# 35| mu35_7962(unknown) = ^CallSideEffect : ~m? +# 35| v35_7963(void) = ^IndirectReadSideEffect[-1] : &:r35_7959, ~m? +# 35| mu35_7964(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7959 +# 35| r35_7965(bool) = Constant[0] : +# 35| v35_7966(void) = ConditionalBranch : r35_7965 #-----| False -> Block 570 #-----| True (back edge) -> Block 569 -# 1726| Block 570 -# 1726| r1726_1(glval) = VariableAddress[x569] : -# 1726| mu1726_2(String) = Uninitialized[x569] : &:r1726_1 -# 1726| r1726_3(glval) = FunctionAddress[String] : -# 1726| v1726_4(void) = Call[String] : func:r1726_3, this:r1726_1 -# 1726| mu1726_5(unknown) = ^CallSideEffect : ~m? -# 1726| mu1726_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1726_1 -# 1727| r1727_1(glval) = VariableAddress[x569] : -# 1727| r1727_2(glval) = FunctionAddress[~String] : -# 1727| v1727_3(void) = Call[~String] : func:r1727_2, this:r1727_1 -# 1727| mu1727_4(unknown) = ^CallSideEffect : ~m? -# 1727| v1727_5(void) = ^IndirectReadSideEffect[-1] : &:r1727_1, ~m? -# 1727| mu1727_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1727_1 -# 1727| r1727_7(bool) = Constant[0] : -# 1727| v1727_8(void) = ConditionalBranch : r1727_7 +# 35| Block 570 +# 35| r35_7967(glval) = VariableAddress[x569] : +# 35| mu35_7968(String) = Uninitialized[x569] : &:r35_7967 +# 35| r35_7969(glval) = FunctionAddress[String] : +# 35| v35_7970(void) = Call[String] : func:r35_7969, this:r35_7967 +# 35| mu35_7971(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7972(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7967 +# 35| r35_7973(glval) = VariableAddress[x569] : +# 35| r35_7974(glval) = FunctionAddress[~String] : +# 35| v35_7975(void) = Call[~String] : func:r35_7974, this:r35_7973 +# 35| mu35_7976(unknown) = ^CallSideEffect : ~m? +# 35| v35_7977(void) = ^IndirectReadSideEffect[-1] : &:r35_7973, ~m? +# 35| mu35_7978(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7973 +# 35| r35_7979(bool) = Constant[0] : +# 35| v35_7980(void) = ConditionalBranch : r35_7979 #-----| False -> Block 571 #-----| True (back edge) -> Block 570 -# 1729| Block 571 -# 1729| r1729_1(glval) = VariableAddress[x570] : -# 1729| mu1729_2(String) = Uninitialized[x570] : &:r1729_1 -# 1729| r1729_3(glval) = FunctionAddress[String] : -# 1729| v1729_4(void) = Call[String] : func:r1729_3, this:r1729_1 -# 1729| mu1729_5(unknown) = ^CallSideEffect : ~m? -# 1729| mu1729_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1729_1 -# 1730| r1730_1(glval) = VariableAddress[x570] : -# 1730| r1730_2(glval) = FunctionAddress[~String] : -# 1730| v1730_3(void) = Call[~String] : func:r1730_2, this:r1730_1 -# 1730| mu1730_4(unknown) = ^CallSideEffect : ~m? -# 1730| v1730_5(void) = ^IndirectReadSideEffect[-1] : &:r1730_1, ~m? -# 1730| mu1730_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1730_1 -# 1730| r1730_7(bool) = Constant[0] : -# 1730| v1730_8(void) = ConditionalBranch : r1730_7 +# 35| Block 571 +# 35| r35_7981(glval) = VariableAddress[x570] : +# 35| mu35_7982(String) = Uninitialized[x570] : &:r35_7981 +# 35| r35_7983(glval) = FunctionAddress[String] : +# 35| v35_7984(void) = Call[String] : func:r35_7983, this:r35_7981 +# 35| mu35_7985(unknown) = ^CallSideEffect : ~m? +# 35| mu35_7986(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7981 +# 35| r35_7987(glval) = VariableAddress[x570] : +# 35| r35_7988(glval) = FunctionAddress[~String] : +# 35| v35_7989(void) = Call[~String] : func:r35_7988, this:r35_7987 +# 35| mu35_7990(unknown) = ^CallSideEffect : ~m? +# 35| v35_7991(void) = ^IndirectReadSideEffect[-1] : &:r35_7987, ~m? +# 35| mu35_7992(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7987 +# 35| r35_7993(bool) = Constant[0] : +# 35| v35_7994(void) = ConditionalBranch : r35_7993 #-----| False -> Block 572 #-----| True (back edge) -> Block 571 -# 1732| Block 572 -# 1732| r1732_1(glval) = VariableAddress[x571] : -# 1732| mu1732_2(String) = Uninitialized[x571] : &:r1732_1 -# 1732| r1732_3(glval) = FunctionAddress[String] : -# 1732| v1732_4(void) = Call[String] : func:r1732_3, this:r1732_1 -# 1732| mu1732_5(unknown) = ^CallSideEffect : ~m? -# 1732| mu1732_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1732_1 -# 1733| r1733_1(glval) = VariableAddress[x571] : -# 1733| r1733_2(glval) = FunctionAddress[~String] : -# 1733| v1733_3(void) = Call[~String] : func:r1733_2, this:r1733_1 -# 1733| mu1733_4(unknown) = ^CallSideEffect : ~m? -# 1733| v1733_5(void) = ^IndirectReadSideEffect[-1] : &:r1733_1, ~m? -# 1733| mu1733_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1733_1 -# 1733| r1733_7(bool) = Constant[0] : -# 1733| v1733_8(void) = ConditionalBranch : r1733_7 +# 35| Block 572 +# 35| r35_7995(glval) = VariableAddress[x571] : +# 35| mu35_7996(String) = Uninitialized[x571] : &:r35_7995 +# 35| r35_7997(glval) = FunctionAddress[String] : +# 35| v35_7998(void) = Call[String] : func:r35_7997, this:r35_7995 +# 35| mu35_7999(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8000(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_7995 +# 35| r35_8001(glval) = VariableAddress[x571] : +# 35| r35_8002(glval) = FunctionAddress[~String] : +# 35| v35_8003(void) = Call[~String] : func:r35_8002, this:r35_8001 +# 35| mu35_8004(unknown) = ^CallSideEffect : ~m? +# 35| v35_8005(void) = ^IndirectReadSideEffect[-1] : &:r35_8001, ~m? +# 35| mu35_8006(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8001 +# 35| r35_8007(bool) = Constant[0] : +# 35| v35_8008(void) = ConditionalBranch : r35_8007 #-----| False -> Block 573 #-----| True (back edge) -> Block 572 -# 1735| Block 573 -# 1735| r1735_1(glval) = VariableAddress[x572] : -# 1735| mu1735_2(String) = Uninitialized[x572] : &:r1735_1 -# 1735| r1735_3(glval) = FunctionAddress[String] : -# 1735| v1735_4(void) = Call[String] : func:r1735_3, this:r1735_1 -# 1735| mu1735_5(unknown) = ^CallSideEffect : ~m? -# 1735| mu1735_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1735_1 -# 1736| r1736_1(glval) = VariableAddress[x572] : -# 1736| r1736_2(glval) = FunctionAddress[~String] : -# 1736| v1736_3(void) = Call[~String] : func:r1736_2, this:r1736_1 -# 1736| mu1736_4(unknown) = ^CallSideEffect : ~m? -# 1736| v1736_5(void) = ^IndirectReadSideEffect[-1] : &:r1736_1, ~m? -# 1736| mu1736_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1736_1 -# 1736| r1736_7(bool) = Constant[0] : -# 1736| v1736_8(void) = ConditionalBranch : r1736_7 +# 35| Block 573 +# 35| r35_8009(glval) = VariableAddress[x572] : +# 35| mu35_8010(String) = Uninitialized[x572] : &:r35_8009 +# 35| r35_8011(glval) = FunctionAddress[String] : +# 35| v35_8012(void) = Call[String] : func:r35_8011, this:r35_8009 +# 35| mu35_8013(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8014(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8009 +# 35| r35_8015(glval) = VariableAddress[x572] : +# 35| r35_8016(glval) = FunctionAddress[~String] : +# 35| v35_8017(void) = Call[~String] : func:r35_8016, this:r35_8015 +# 35| mu35_8018(unknown) = ^CallSideEffect : ~m? +# 35| v35_8019(void) = ^IndirectReadSideEffect[-1] : &:r35_8015, ~m? +# 35| mu35_8020(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8015 +# 35| r35_8021(bool) = Constant[0] : +# 35| v35_8022(void) = ConditionalBranch : r35_8021 #-----| False -> Block 574 #-----| True (back edge) -> Block 573 -# 1738| Block 574 -# 1738| r1738_1(glval) = VariableAddress[x573] : -# 1738| mu1738_2(String) = Uninitialized[x573] : &:r1738_1 -# 1738| r1738_3(glval) = FunctionAddress[String] : -# 1738| v1738_4(void) = Call[String] : func:r1738_3, this:r1738_1 -# 1738| mu1738_5(unknown) = ^CallSideEffect : ~m? -# 1738| mu1738_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1738_1 -# 1739| r1739_1(glval) = VariableAddress[x573] : -# 1739| r1739_2(glval) = FunctionAddress[~String] : -# 1739| v1739_3(void) = Call[~String] : func:r1739_2, this:r1739_1 -# 1739| mu1739_4(unknown) = ^CallSideEffect : ~m? -# 1739| v1739_5(void) = ^IndirectReadSideEffect[-1] : &:r1739_1, ~m? -# 1739| mu1739_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1739_1 -# 1739| r1739_7(bool) = Constant[0] : -# 1739| v1739_8(void) = ConditionalBranch : r1739_7 +# 35| Block 574 +# 35| r35_8023(glval) = VariableAddress[x573] : +# 35| mu35_8024(String) = Uninitialized[x573] : &:r35_8023 +# 35| r35_8025(glval) = FunctionAddress[String] : +# 35| v35_8026(void) = Call[String] : func:r35_8025, this:r35_8023 +# 35| mu35_8027(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8028(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8023 +# 35| r35_8029(glval) = VariableAddress[x573] : +# 35| r35_8030(glval) = FunctionAddress[~String] : +# 35| v35_8031(void) = Call[~String] : func:r35_8030, this:r35_8029 +# 35| mu35_8032(unknown) = ^CallSideEffect : ~m? +# 35| v35_8033(void) = ^IndirectReadSideEffect[-1] : &:r35_8029, ~m? +# 35| mu35_8034(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8029 +# 35| r35_8035(bool) = Constant[0] : +# 35| v35_8036(void) = ConditionalBranch : r35_8035 #-----| False -> Block 575 #-----| True (back edge) -> Block 574 -# 1741| Block 575 -# 1741| r1741_1(glval) = VariableAddress[x574] : -# 1741| mu1741_2(String) = Uninitialized[x574] : &:r1741_1 -# 1741| r1741_3(glval) = FunctionAddress[String] : -# 1741| v1741_4(void) = Call[String] : func:r1741_3, this:r1741_1 -# 1741| mu1741_5(unknown) = ^CallSideEffect : ~m? -# 1741| mu1741_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1741_1 -# 1742| r1742_1(glval) = VariableAddress[x574] : -# 1742| r1742_2(glval) = FunctionAddress[~String] : -# 1742| v1742_3(void) = Call[~String] : func:r1742_2, this:r1742_1 -# 1742| mu1742_4(unknown) = ^CallSideEffect : ~m? -# 1742| v1742_5(void) = ^IndirectReadSideEffect[-1] : &:r1742_1, ~m? -# 1742| mu1742_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1742_1 -# 1742| r1742_7(bool) = Constant[0] : -# 1742| v1742_8(void) = ConditionalBranch : r1742_7 +# 35| Block 575 +# 35| r35_8037(glval) = VariableAddress[x574] : +# 35| mu35_8038(String) = Uninitialized[x574] : &:r35_8037 +# 35| r35_8039(glval) = FunctionAddress[String] : +# 35| v35_8040(void) = Call[String] : func:r35_8039, this:r35_8037 +# 35| mu35_8041(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8042(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8037 +# 35| r35_8043(glval) = VariableAddress[x574] : +# 35| r35_8044(glval) = FunctionAddress[~String] : +# 35| v35_8045(void) = Call[~String] : func:r35_8044, this:r35_8043 +# 35| mu35_8046(unknown) = ^CallSideEffect : ~m? +# 35| v35_8047(void) = ^IndirectReadSideEffect[-1] : &:r35_8043, ~m? +# 35| mu35_8048(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8043 +# 35| r35_8049(bool) = Constant[0] : +# 35| v35_8050(void) = ConditionalBranch : r35_8049 #-----| False -> Block 576 #-----| True (back edge) -> Block 575 -# 1744| Block 576 -# 1744| r1744_1(glval) = VariableAddress[x575] : -# 1744| mu1744_2(String) = Uninitialized[x575] : &:r1744_1 -# 1744| r1744_3(glval) = FunctionAddress[String] : -# 1744| v1744_4(void) = Call[String] : func:r1744_3, this:r1744_1 -# 1744| mu1744_5(unknown) = ^CallSideEffect : ~m? -# 1744| mu1744_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1744_1 -# 1745| r1745_1(glval) = VariableAddress[x575] : -# 1745| r1745_2(glval) = FunctionAddress[~String] : -# 1745| v1745_3(void) = Call[~String] : func:r1745_2, this:r1745_1 -# 1745| mu1745_4(unknown) = ^CallSideEffect : ~m? -# 1745| v1745_5(void) = ^IndirectReadSideEffect[-1] : &:r1745_1, ~m? -# 1745| mu1745_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1745_1 -# 1745| r1745_7(bool) = Constant[0] : -# 1745| v1745_8(void) = ConditionalBranch : r1745_7 +# 35| Block 576 +# 35| r35_8051(glval) = VariableAddress[x575] : +# 35| mu35_8052(String) = Uninitialized[x575] : &:r35_8051 +# 35| r35_8053(glval) = FunctionAddress[String] : +# 35| v35_8054(void) = Call[String] : func:r35_8053, this:r35_8051 +# 35| mu35_8055(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8056(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8051 +# 35| r35_8057(glval) = VariableAddress[x575] : +# 35| r35_8058(glval) = FunctionAddress[~String] : +# 35| v35_8059(void) = Call[~String] : func:r35_8058, this:r35_8057 +# 35| mu35_8060(unknown) = ^CallSideEffect : ~m? +# 35| v35_8061(void) = ^IndirectReadSideEffect[-1] : &:r35_8057, ~m? +# 35| mu35_8062(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8057 +# 35| r35_8063(bool) = Constant[0] : +# 35| v35_8064(void) = ConditionalBranch : r35_8063 #-----| False -> Block 577 #-----| True (back edge) -> Block 576 -# 1747| Block 577 -# 1747| r1747_1(glval) = VariableAddress[x576] : -# 1747| mu1747_2(String) = Uninitialized[x576] : &:r1747_1 -# 1747| r1747_3(glval) = FunctionAddress[String] : -# 1747| v1747_4(void) = Call[String] : func:r1747_3, this:r1747_1 -# 1747| mu1747_5(unknown) = ^CallSideEffect : ~m? -# 1747| mu1747_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1747_1 -# 1748| r1748_1(glval) = VariableAddress[x576] : -# 1748| r1748_2(glval) = FunctionAddress[~String] : -# 1748| v1748_3(void) = Call[~String] : func:r1748_2, this:r1748_1 -# 1748| mu1748_4(unknown) = ^CallSideEffect : ~m? -# 1748| v1748_5(void) = ^IndirectReadSideEffect[-1] : &:r1748_1, ~m? -# 1748| mu1748_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1748_1 -# 1748| r1748_7(bool) = Constant[0] : -# 1748| v1748_8(void) = ConditionalBranch : r1748_7 +# 35| Block 577 +# 35| r35_8065(glval) = VariableAddress[x576] : +# 35| mu35_8066(String) = Uninitialized[x576] : &:r35_8065 +# 35| r35_8067(glval) = FunctionAddress[String] : +# 35| v35_8068(void) = Call[String] : func:r35_8067, this:r35_8065 +# 35| mu35_8069(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8070(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8065 +# 35| r35_8071(glval) = VariableAddress[x576] : +# 35| r35_8072(glval) = FunctionAddress[~String] : +# 35| v35_8073(void) = Call[~String] : func:r35_8072, this:r35_8071 +# 35| mu35_8074(unknown) = ^CallSideEffect : ~m? +# 35| v35_8075(void) = ^IndirectReadSideEffect[-1] : &:r35_8071, ~m? +# 35| mu35_8076(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8071 +# 35| r35_8077(bool) = Constant[0] : +# 35| v35_8078(void) = ConditionalBranch : r35_8077 #-----| False -> Block 578 #-----| True (back edge) -> Block 577 -# 1750| Block 578 -# 1750| r1750_1(glval) = VariableAddress[x577] : -# 1750| mu1750_2(String) = Uninitialized[x577] : &:r1750_1 -# 1750| r1750_3(glval) = FunctionAddress[String] : -# 1750| v1750_4(void) = Call[String] : func:r1750_3, this:r1750_1 -# 1750| mu1750_5(unknown) = ^CallSideEffect : ~m? -# 1750| mu1750_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1750_1 -# 1751| r1751_1(glval) = VariableAddress[x577] : -# 1751| r1751_2(glval) = FunctionAddress[~String] : -# 1751| v1751_3(void) = Call[~String] : func:r1751_2, this:r1751_1 -# 1751| mu1751_4(unknown) = ^CallSideEffect : ~m? -# 1751| v1751_5(void) = ^IndirectReadSideEffect[-1] : &:r1751_1, ~m? -# 1751| mu1751_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1751_1 -# 1751| r1751_7(bool) = Constant[0] : -# 1751| v1751_8(void) = ConditionalBranch : r1751_7 +# 35| Block 578 +# 35| r35_8079(glval) = VariableAddress[x577] : +# 35| mu35_8080(String) = Uninitialized[x577] : &:r35_8079 +# 35| r35_8081(glval) = FunctionAddress[String] : +# 35| v35_8082(void) = Call[String] : func:r35_8081, this:r35_8079 +# 35| mu35_8083(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8084(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8079 +# 35| r35_8085(glval) = VariableAddress[x577] : +# 35| r35_8086(glval) = FunctionAddress[~String] : +# 35| v35_8087(void) = Call[~String] : func:r35_8086, this:r35_8085 +# 35| mu35_8088(unknown) = ^CallSideEffect : ~m? +# 35| v35_8089(void) = ^IndirectReadSideEffect[-1] : &:r35_8085, ~m? +# 35| mu35_8090(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8085 +# 35| r35_8091(bool) = Constant[0] : +# 35| v35_8092(void) = ConditionalBranch : r35_8091 #-----| False -> Block 579 #-----| True (back edge) -> Block 578 -# 1753| Block 579 -# 1753| r1753_1(glval) = VariableAddress[x578] : -# 1753| mu1753_2(String) = Uninitialized[x578] : &:r1753_1 -# 1753| r1753_3(glval) = FunctionAddress[String] : -# 1753| v1753_4(void) = Call[String] : func:r1753_3, this:r1753_1 -# 1753| mu1753_5(unknown) = ^CallSideEffect : ~m? -# 1753| mu1753_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1753_1 -# 1754| r1754_1(glval) = VariableAddress[x578] : -# 1754| r1754_2(glval) = FunctionAddress[~String] : -# 1754| v1754_3(void) = Call[~String] : func:r1754_2, this:r1754_1 -# 1754| mu1754_4(unknown) = ^CallSideEffect : ~m? -# 1754| v1754_5(void) = ^IndirectReadSideEffect[-1] : &:r1754_1, ~m? -# 1754| mu1754_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1754_1 -# 1754| r1754_7(bool) = Constant[0] : -# 1754| v1754_8(void) = ConditionalBranch : r1754_7 +# 35| Block 579 +# 35| r35_8093(glval) = VariableAddress[x578] : +# 35| mu35_8094(String) = Uninitialized[x578] : &:r35_8093 +# 35| r35_8095(glval) = FunctionAddress[String] : +# 35| v35_8096(void) = Call[String] : func:r35_8095, this:r35_8093 +# 35| mu35_8097(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8098(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8093 +# 35| r35_8099(glval) = VariableAddress[x578] : +# 35| r35_8100(glval) = FunctionAddress[~String] : +# 35| v35_8101(void) = Call[~String] : func:r35_8100, this:r35_8099 +# 35| mu35_8102(unknown) = ^CallSideEffect : ~m? +# 35| v35_8103(void) = ^IndirectReadSideEffect[-1] : &:r35_8099, ~m? +# 35| mu35_8104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8099 +# 35| r35_8105(bool) = Constant[0] : +# 35| v35_8106(void) = ConditionalBranch : r35_8105 #-----| False -> Block 580 #-----| True (back edge) -> Block 579 -# 1756| Block 580 -# 1756| r1756_1(glval) = VariableAddress[x579] : -# 1756| mu1756_2(String) = Uninitialized[x579] : &:r1756_1 -# 1756| r1756_3(glval) = FunctionAddress[String] : -# 1756| v1756_4(void) = Call[String] : func:r1756_3, this:r1756_1 -# 1756| mu1756_5(unknown) = ^CallSideEffect : ~m? -# 1756| mu1756_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1756_1 -# 1757| r1757_1(glval) = VariableAddress[x579] : -# 1757| r1757_2(glval) = FunctionAddress[~String] : -# 1757| v1757_3(void) = Call[~String] : func:r1757_2, this:r1757_1 -# 1757| mu1757_4(unknown) = ^CallSideEffect : ~m? -# 1757| v1757_5(void) = ^IndirectReadSideEffect[-1] : &:r1757_1, ~m? -# 1757| mu1757_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1757_1 -# 1757| r1757_7(bool) = Constant[0] : -# 1757| v1757_8(void) = ConditionalBranch : r1757_7 +# 35| Block 580 +# 35| r35_8107(glval) = VariableAddress[x579] : +# 35| mu35_8108(String) = Uninitialized[x579] : &:r35_8107 +# 35| r35_8109(glval) = FunctionAddress[String] : +# 35| v35_8110(void) = Call[String] : func:r35_8109, this:r35_8107 +# 35| mu35_8111(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8112(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8107 +# 35| r35_8113(glval) = VariableAddress[x579] : +# 35| r35_8114(glval) = FunctionAddress[~String] : +# 35| v35_8115(void) = Call[~String] : func:r35_8114, this:r35_8113 +# 35| mu35_8116(unknown) = ^CallSideEffect : ~m? +# 35| v35_8117(void) = ^IndirectReadSideEffect[-1] : &:r35_8113, ~m? +# 35| mu35_8118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8113 +# 35| r35_8119(bool) = Constant[0] : +# 35| v35_8120(void) = ConditionalBranch : r35_8119 #-----| False -> Block 581 #-----| True (back edge) -> Block 580 -# 1759| Block 581 -# 1759| r1759_1(glval) = VariableAddress[x580] : -# 1759| mu1759_2(String) = Uninitialized[x580] : &:r1759_1 -# 1759| r1759_3(glval) = FunctionAddress[String] : -# 1759| v1759_4(void) = Call[String] : func:r1759_3, this:r1759_1 -# 1759| mu1759_5(unknown) = ^CallSideEffect : ~m? -# 1759| mu1759_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1759_1 -# 1760| r1760_1(glval) = VariableAddress[x580] : -# 1760| r1760_2(glval) = FunctionAddress[~String] : -# 1760| v1760_3(void) = Call[~String] : func:r1760_2, this:r1760_1 -# 1760| mu1760_4(unknown) = ^CallSideEffect : ~m? -# 1760| v1760_5(void) = ^IndirectReadSideEffect[-1] : &:r1760_1, ~m? -# 1760| mu1760_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1760_1 -# 1760| r1760_7(bool) = Constant[0] : -# 1760| v1760_8(void) = ConditionalBranch : r1760_7 +# 35| Block 581 +# 35| r35_8121(glval) = VariableAddress[x580] : +# 35| mu35_8122(String) = Uninitialized[x580] : &:r35_8121 +# 35| r35_8123(glval) = FunctionAddress[String] : +# 35| v35_8124(void) = Call[String] : func:r35_8123, this:r35_8121 +# 35| mu35_8125(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8126(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8121 +# 35| r35_8127(glval) = VariableAddress[x580] : +# 35| r35_8128(glval) = FunctionAddress[~String] : +# 35| v35_8129(void) = Call[~String] : func:r35_8128, this:r35_8127 +# 35| mu35_8130(unknown) = ^CallSideEffect : ~m? +# 35| v35_8131(void) = ^IndirectReadSideEffect[-1] : &:r35_8127, ~m? +# 35| mu35_8132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8127 +# 35| r35_8133(bool) = Constant[0] : +# 35| v35_8134(void) = ConditionalBranch : r35_8133 #-----| False -> Block 582 #-----| True (back edge) -> Block 581 -# 1762| Block 582 -# 1762| r1762_1(glval) = VariableAddress[x581] : -# 1762| mu1762_2(String) = Uninitialized[x581] : &:r1762_1 -# 1762| r1762_3(glval) = FunctionAddress[String] : -# 1762| v1762_4(void) = Call[String] : func:r1762_3, this:r1762_1 -# 1762| mu1762_5(unknown) = ^CallSideEffect : ~m? -# 1762| mu1762_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1762_1 -# 1763| r1763_1(glval) = VariableAddress[x581] : -# 1763| r1763_2(glval) = FunctionAddress[~String] : -# 1763| v1763_3(void) = Call[~String] : func:r1763_2, this:r1763_1 -# 1763| mu1763_4(unknown) = ^CallSideEffect : ~m? -# 1763| v1763_5(void) = ^IndirectReadSideEffect[-1] : &:r1763_1, ~m? -# 1763| mu1763_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1763_1 -# 1763| r1763_7(bool) = Constant[0] : -# 1763| v1763_8(void) = ConditionalBranch : r1763_7 +# 35| Block 582 +# 35| r35_8135(glval) = VariableAddress[x581] : +# 35| mu35_8136(String) = Uninitialized[x581] : &:r35_8135 +# 35| r35_8137(glval) = FunctionAddress[String] : +# 35| v35_8138(void) = Call[String] : func:r35_8137, this:r35_8135 +# 35| mu35_8139(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8140(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8135 +# 35| r35_8141(glval) = VariableAddress[x581] : +# 35| r35_8142(glval) = FunctionAddress[~String] : +# 35| v35_8143(void) = Call[~String] : func:r35_8142, this:r35_8141 +# 35| mu35_8144(unknown) = ^CallSideEffect : ~m? +# 35| v35_8145(void) = ^IndirectReadSideEffect[-1] : &:r35_8141, ~m? +# 35| mu35_8146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8141 +# 35| r35_8147(bool) = Constant[0] : +# 35| v35_8148(void) = ConditionalBranch : r35_8147 #-----| False -> Block 583 #-----| True (back edge) -> Block 582 -# 1765| Block 583 -# 1765| r1765_1(glval) = VariableAddress[x582] : -# 1765| mu1765_2(String) = Uninitialized[x582] : &:r1765_1 -# 1765| r1765_3(glval) = FunctionAddress[String] : -# 1765| v1765_4(void) = Call[String] : func:r1765_3, this:r1765_1 -# 1765| mu1765_5(unknown) = ^CallSideEffect : ~m? -# 1765| mu1765_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1765_1 -# 1766| r1766_1(glval) = VariableAddress[x582] : -# 1766| r1766_2(glval) = FunctionAddress[~String] : -# 1766| v1766_3(void) = Call[~String] : func:r1766_2, this:r1766_1 -# 1766| mu1766_4(unknown) = ^CallSideEffect : ~m? -# 1766| v1766_5(void) = ^IndirectReadSideEffect[-1] : &:r1766_1, ~m? -# 1766| mu1766_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1766_1 -# 1766| r1766_7(bool) = Constant[0] : -# 1766| v1766_8(void) = ConditionalBranch : r1766_7 +# 35| Block 583 +# 35| r35_8149(glval) = VariableAddress[x582] : +# 35| mu35_8150(String) = Uninitialized[x582] : &:r35_8149 +# 35| r35_8151(glval) = FunctionAddress[String] : +# 35| v35_8152(void) = Call[String] : func:r35_8151, this:r35_8149 +# 35| mu35_8153(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8154(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8149 +# 35| r35_8155(glval) = VariableAddress[x582] : +# 35| r35_8156(glval) = FunctionAddress[~String] : +# 35| v35_8157(void) = Call[~String] : func:r35_8156, this:r35_8155 +# 35| mu35_8158(unknown) = ^CallSideEffect : ~m? +# 35| v35_8159(void) = ^IndirectReadSideEffect[-1] : &:r35_8155, ~m? +# 35| mu35_8160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8155 +# 35| r35_8161(bool) = Constant[0] : +# 35| v35_8162(void) = ConditionalBranch : r35_8161 #-----| False -> Block 584 #-----| True (back edge) -> Block 583 -# 1768| Block 584 -# 1768| r1768_1(glval) = VariableAddress[x583] : -# 1768| mu1768_2(String) = Uninitialized[x583] : &:r1768_1 -# 1768| r1768_3(glval) = FunctionAddress[String] : -# 1768| v1768_4(void) = Call[String] : func:r1768_3, this:r1768_1 -# 1768| mu1768_5(unknown) = ^CallSideEffect : ~m? -# 1768| mu1768_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1768_1 -# 1769| r1769_1(glval) = VariableAddress[x583] : -# 1769| r1769_2(glval) = FunctionAddress[~String] : -# 1769| v1769_3(void) = Call[~String] : func:r1769_2, this:r1769_1 -# 1769| mu1769_4(unknown) = ^CallSideEffect : ~m? -# 1769| v1769_5(void) = ^IndirectReadSideEffect[-1] : &:r1769_1, ~m? -# 1769| mu1769_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1769_1 -# 1769| r1769_7(bool) = Constant[0] : -# 1769| v1769_8(void) = ConditionalBranch : r1769_7 +# 35| Block 584 +# 35| r35_8163(glval) = VariableAddress[x583] : +# 35| mu35_8164(String) = Uninitialized[x583] : &:r35_8163 +# 35| r35_8165(glval) = FunctionAddress[String] : +# 35| v35_8166(void) = Call[String] : func:r35_8165, this:r35_8163 +# 35| mu35_8167(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8168(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8163 +# 35| r35_8169(glval) = VariableAddress[x583] : +# 35| r35_8170(glval) = FunctionAddress[~String] : +# 35| v35_8171(void) = Call[~String] : func:r35_8170, this:r35_8169 +# 35| mu35_8172(unknown) = ^CallSideEffect : ~m? +# 35| v35_8173(void) = ^IndirectReadSideEffect[-1] : &:r35_8169, ~m? +# 35| mu35_8174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8169 +# 35| r35_8175(bool) = Constant[0] : +# 35| v35_8176(void) = ConditionalBranch : r35_8175 #-----| False -> Block 585 #-----| True (back edge) -> Block 584 -# 1771| Block 585 -# 1771| r1771_1(glval) = VariableAddress[x584] : -# 1771| mu1771_2(String) = Uninitialized[x584] : &:r1771_1 -# 1771| r1771_3(glval) = FunctionAddress[String] : -# 1771| v1771_4(void) = Call[String] : func:r1771_3, this:r1771_1 -# 1771| mu1771_5(unknown) = ^CallSideEffect : ~m? -# 1771| mu1771_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1771_1 -# 1772| r1772_1(glval) = VariableAddress[x584] : -# 1772| r1772_2(glval) = FunctionAddress[~String] : -# 1772| v1772_3(void) = Call[~String] : func:r1772_2, this:r1772_1 -# 1772| mu1772_4(unknown) = ^CallSideEffect : ~m? -# 1772| v1772_5(void) = ^IndirectReadSideEffect[-1] : &:r1772_1, ~m? -# 1772| mu1772_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1772_1 -# 1772| r1772_7(bool) = Constant[0] : -# 1772| v1772_8(void) = ConditionalBranch : r1772_7 +# 35| Block 585 +# 35| r35_8177(glval) = VariableAddress[x584] : +# 35| mu35_8178(String) = Uninitialized[x584] : &:r35_8177 +# 35| r35_8179(glval) = FunctionAddress[String] : +# 35| v35_8180(void) = Call[String] : func:r35_8179, this:r35_8177 +# 35| mu35_8181(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8182(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8177 +# 35| r35_8183(glval) = VariableAddress[x584] : +# 35| r35_8184(glval) = FunctionAddress[~String] : +# 35| v35_8185(void) = Call[~String] : func:r35_8184, this:r35_8183 +# 35| mu35_8186(unknown) = ^CallSideEffect : ~m? +# 35| v35_8187(void) = ^IndirectReadSideEffect[-1] : &:r35_8183, ~m? +# 35| mu35_8188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8183 +# 35| r35_8189(bool) = Constant[0] : +# 35| v35_8190(void) = ConditionalBranch : r35_8189 #-----| False -> Block 586 #-----| True (back edge) -> Block 585 -# 1774| Block 586 -# 1774| r1774_1(glval) = VariableAddress[x585] : -# 1774| mu1774_2(String) = Uninitialized[x585] : &:r1774_1 -# 1774| r1774_3(glval) = FunctionAddress[String] : -# 1774| v1774_4(void) = Call[String] : func:r1774_3, this:r1774_1 -# 1774| mu1774_5(unknown) = ^CallSideEffect : ~m? -# 1774| mu1774_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1774_1 -# 1775| r1775_1(glval) = VariableAddress[x585] : -# 1775| r1775_2(glval) = FunctionAddress[~String] : -# 1775| v1775_3(void) = Call[~String] : func:r1775_2, this:r1775_1 -# 1775| mu1775_4(unknown) = ^CallSideEffect : ~m? -# 1775| v1775_5(void) = ^IndirectReadSideEffect[-1] : &:r1775_1, ~m? -# 1775| mu1775_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1775_1 -# 1775| r1775_7(bool) = Constant[0] : -# 1775| v1775_8(void) = ConditionalBranch : r1775_7 +# 35| Block 586 +# 35| r35_8191(glval) = VariableAddress[x585] : +# 35| mu35_8192(String) = Uninitialized[x585] : &:r35_8191 +# 35| r35_8193(glval) = FunctionAddress[String] : +# 35| v35_8194(void) = Call[String] : func:r35_8193, this:r35_8191 +# 35| mu35_8195(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8196(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8191 +# 35| r35_8197(glval) = VariableAddress[x585] : +# 35| r35_8198(glval) = FunctionAddress[~String] : +# 35| v35_8199(void) = Call[~String] : func:r35_8198, this:r35_8197 +# 35| mu35_8200(unknown) = ^CallSideEffect : ~m? +# 35| v35_8201(void) = ^IndirectReadSideEffect[-1] : &:r35_8197, ~m? +# 35| mu35_8202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8197 +# 35| r35_8203(bool) = Constant[0] : +# 35| v35_8204(void) = ConditionalBranch : r35_8203 #-----| False -> Block 587 #-----| True (back edge) -> Block 586 -# 1777| Block 587 -# 1777| r1777_1(glval) = VariableAddress[x586] : -# 1777| mu1777_2(String) = Uninitialized[x586] : &:r1777_1 -# 1777| r1777_3(glval) = FunctionAddress[String] : -# 1777| v1777_4(void) = Call[String] : func:r1777_3, this:r1777_1 -# 1777| mu1777_5(unknown) = ^CallSideEffect : ~m? -# 1777| mu1777_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1777_1 -# 1778| r1778_1(glval) = VariableAddress[x586] : -# 1778| r1778_2(glval) = FunctionAddress[~String] : -# 1778| v1778_3(void) = Call[~String] : func:r1778_2, this:r1778_1 -# 1778| mu1778_4(unknown) = ^CallSideEffect : ~m? -# 1778| v1778_5(void) = ^IndirectReadSideEffect[-1] : &:r1778_1, ~m? -# 1778| mu1778_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1778_1 -# 1778| r1778_7(bool) = Constant[0] : -# 1778| v1778_8(void) = ConditionalBranch : r1778_7 +# 35| Block 587 +# 35| r35_8205(glval) = VariableAddress[x586] : +# 35| mu35_8206(String) = Uninitialized[x586] : &:r35_8205 +# 35| r35_8207(glval) = FunctionAddress[String] : +# 35| v35_8208(void) = Call[String] : func:r35_8207, this:r35_8205 +# 35| mu35_8209(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8210(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8205 +# 35| r35_8211(glval) = VariableAddress[x586] : +# 35| r35_8212(glval) = FunctionAddress[~String] : +# 35| v35_8213(void) = Call[~String] : func:r35_8212, this:r35_8211 +# 35| mu35_8214(unknown) = ^CallSideEffect : ~m? +# 35| v35_8215(void) = ^IndirectReadSideEffect[-1] : &:r35_8211, ~m? +# 35| mu35_8216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8211 +# 35| r35_8217(bool) = Constant[0] : +# 35| v35_8218(void) = ConditionalBranch : r35_8217 #-----| False -> Block 588 #-----| True (back edge) -> Block 587 -# 1780| Block 588 -# 1780| r1780_1(glval) = VariableAddress[x587] : -# 1780| mu1780_2(String) = Uninitialized[x587] : &:r1780_1 -# 1780| r1780_3(glval) = FunctionAddress[String] : -# 1780| v1780_4(void) = Call[String] : func:r1780_3, this:r1780_1 -# 1780| mu1780_5(unknown) = ^CallSideEffect : ~m? -# 1780| mu1780_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1780_1 -# 1781| r1781_1(glval) = VariableAddress[x587] : -# 1781| r1781_2(glval) = FunctionAddress[~String] : -# 1781| v1781_3(void) = Call[~String] : func:r1781_2, this:r1781_1 -# 1781| mu1781_4(unknown) = ^CallSideEffect : ~m? -# 1781| v1781_5(void) = ^IndirectReadSideEffect[-1] : &:r1781_1, ~m? -# 1781| mu1781_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1781_1 -# 1781| r1781_7(bool) = Constant[0] : -# 1781| v1781_8(void) = ConditionalBranch : r1781_7 +# 35| Block 588 +# 35| r35_8219(glval) = VariableAddress[x587] : +# 35| mu35_8220(String) = Uninitialized[x587] : &:r35_8219 +# 35| r35_8221(glval) = FunctionAddress[String] : +# 35| v35_8222(void) = Call[String] : func:r35_8221, this:r35_8219 +# 35| mu35_8223(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8224(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8219 +# 35| r35_8225(glval) = VariableAddress[x587] : +# 35| r35_8226(glval) = FunctionAddress[~String] : +# 35| v35_8227(void) = Call[~String] : func:r35_8226, this:r35_8225 +# 35| mu35_8228(unknown) = ^CallSideEffect : ~m? +# 35| v35_8229(void) = ^IndirectReadSideEffect[-1] : &:r35_8225, ~m? +# 35| mu35_8230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8225 +# 35| r35_8231(bool) = Constant[0] : +# 35| v35_8232(void) = ConditionalBranch : r35_8231 #-----| False -> Block 589 #-----| True (back edge) -> Block 588 -# 1783| Block 589 -# 1783| r1783_1(glval) = VariableAddress[x588] : -# 1783| mu1783_2(String) = Uninitialized[x588] : &:r1783_1 -# 1783| r1783_3(glval) = FunctionAddress[String] : -# 1783| v1783_4(void) = Call[String] : func:r1783_3, this:r1783_1 -# 1783| mu1783_5(unknown) = ^CallSideEffect : ~m? -# 1783| mu1783_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1783_1 -# 1784| r1784_1(glval) = VariableAddress[x588] : -# 1784| r1784_2(glval) = FunctionAddress[~String] : -# 1784| v1784_3(void) = Call[~String] : func:r1784_2, this:r1784_1 -# 1784| mu1784_4(unknown) = ^CallSideEffect : ~m? -# 1784| v1784_5(void) = ^IndirectReadSideEffect[-1] : &:r1784_1, ~m? -# 1784| mu1784_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1784_1 -# 1784| r1784_7(bool) = Constant[0] : -# 1784| v1784_8(void) = ConditionalBranch : r1784_7 +# 35| Block 589 +# 35| r35_8233(glval) = VariableAddress[x588] : +# 35| mu35_8234(String) = Uninitialized[x588] : &:r35_8233 +# 35| r35_8235(glval) = FunctionAddress[String] : +# 35| v35_8236(void) = Call[String] : func:r35_8235, this:r35_8233 +# 35| mu35_8237(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8238(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8233 +# 35| r35_8239(glval) = VariableAddress[x588] : +# 35| r35_8240(glval) = FunctionAddress[~String] : +# 35| v35_8241(void) = Call[~String] : func:r35_8240, this:r35_8239 +# 35| mu35_8242(unknown) = ^CallSideEffect : ~m? +# 35| v35_8243(void) = ^IndirectReadSideEffect[-1] : &:r35_8239, ~m? +# 35| mu35_8244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8239 +# 35| r35_8245(bool) = Constant[0] : +# 35| v35_8246(void) = ConditionalBranch : r35_8245 #-----| False -> Block 590 #-----| True (back edge) -> Block 589 -# 1786| Block 590 -# 1786| r1786_1(glval) = VariableAddress[x589] : -# 1786| mu1786_2(String) = Uninitialized[x589] : &:r1786_1 -# 1786| r1786_3(glval) = FunctionAddress[String] : -# 1786| v1786_4(void) = Call[String] : func:r1786_3, this:r1786_1 -# 1786| mu1786_5(unknown) = ^CallSideEffect : ~m? -# 1786| mu1786_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1786_1 -# 1787| r1787_1(glval) = VariableAddress[x589] : -# 1787| r1787_2(glval) = FunctionAddress[~String] : -# 1787| v1787_3(void) = Call[~String] : func:r1787_2, this:r1787_1 -# 1787| mu1787_4(unknown) = ^CallSideEffect : ~m? -# 1787| v1787_5(void) = ^IndirectReadSideEffect[-1] : &:r1787_1, ~m? -# 1787| mu1787_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1787_1 -# 1787| r1787_7(bool) = Constant[0] : -# 1787| v1787_8(void) = ConditionalBranch : r1787_7 +# 35| Block 590 +# 35| r35_8247(glval) = VariableAddress[x589] : +# 35| mu35_8248(String) = Uninitialized[x589] : &:r35_8247 +# 35| r35_8249(glval) = FunctionAddress[String] : +# 35| v35_8250(void) = Call[String] : func:r35_8249, this:r35_8247 +# 35| mu35_8251(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8252(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8247 +# 35| r35_8253(glval) = VariableAddress[x589] : +# 35| r35_8254(glval) = FunctionAddress[~String] : +# 35| v35_8255(void) = Call[~String] : func:r35_8254, this:r35_8253 +# 35| mu35_8256(unknown) = ^CallSideEffect : ~m? +# 35| v35_8257(void) = ^IndirectReadSideEffect[-1] : &:r35_8253, ~m? +# 35| mu35_8258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8253 +# 35| r35_8259(bool) = Constant[0] : +# 35| v35_8260(void) = ConditionalBranch : r35_8259 #-----| False -> Block 591 #-----| True (back edge) -> Block 590 -# 1789| Block 591 -# 1789| r1789_1(glval) = VariableAddress[x590] : -# 1789| mu1789_2(String) = Uninitialized[x590] : &:r1789_1 -# 1789| r1789_3(glval) = FunctionAddress[String] : -# 1789| v1789_4(void) = Call[String] : func:r1789_3, this:r1789_1 -# 1789| mu1789_5(unknown) = ^CallSideEffect : ~m? -# 1789| mu1789_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1789_1 -# 1790| r1790_1(glval) = VariableAddress[x590] : -# 1790| r1790_2(glval) = FunctionAddress[~String] : -# 1790| v1790_3(void) = Call[~String] : func:r1790_2, this:r1790_1 -# 1790| mu1790_4(unknown) = ^CallSideEffect : ~m? -# 1790| v1790_5(void) = ^IndirectReadSideEffect[-1] : &:r1790_1, ~m? -# 1790| mu1790_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1790_1 -# 1790| r1790_7(bool) = Constant[0] : -# 1790| v1790_8(void) = ConditionalBranch : r1790_7 +# 35| Block 591 +# 35| r35_8261(glval) = VariableAddress[x590] : +# 35| mu35_8262(String) = Uninitialized[x590] : &:r35_8261 +# 35| r35_8263(glval) = FunctionAddress[String] : +# 35| v35_8264(void) = Call[String] : func:r35_8263, this:r35_8261 +# 35| mu35_8265(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8266(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8261 +# 35| r35_8267(glval) = VariableAddress[x590] : +# 35| r35_8268(glval) = FunctionAddress[~String] : +# 35| v35_8269(void) = Call[~String] : func:r35_8268, this:r35_8267 +# 35| mu35_8270(unknown) = ^CallSideEffect : ~m? +# 35| v35_8271(void) = ^IndirectReadSideEffect[-1] : &:r35_8267, ~m? +# 35| mu35_8272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8267 +# 35| r35_8273(bool) = Constant[0] : +# 35| v35_8274(void) = ConditionalBranch : r35_8273 #-----| False -> Block 592 #-----| True (back edge) -> Block 591 -# 1792| Block 592 -# 1792| r1792_1(glval) = VariableAddress[x591] : -# 1792| mu1792_2(String) = Uninitialized[x591] : &:r1792_1 -# 1792| r1792_3(glval) = FunctionAddress[String] : -# 1792| v1792_4(void) = Call[String] : func:r1792_3, this:r1792_1 -# 1792| mu1792_5(unknown) = ^CallSideEffect : ~m? -# 1792| mu1792_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1792_1 -# 1793| r1793_1(glval) = VariableAddress[x591] : -# 1793| r1793_2(glval) = FunctionAddress[~String] : -# 1793| v1793_3(void) = Call[~String] : func:r1793_2, this:r1793_1 -# 1793| mu1793_4(unknown) = ^CallSideEffect : ~m? -# 1793| v1793_5(void) = ^IndirectReadSideEffect[-1] : &:r1793_1, ~m? -# 1793| mu1793_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1793_1 -# 1793| r1793_7(bool) = Constant[0] : -# 1793| v1793_8(void) = ConditionalBranch : r1793_7 +# 35| Block 592 +# 35| r35_8275(glval) = VariableAddress[x591] : +# 35| mu35_8276(String) = Uninitialized[x591] : &:r35_8275 +# 35| r35_8277(glval) = FunctionAddress[String] : +# 35| v35_8278(void) = Call[String] : func:r35_8277, this:r35_8275 +# 35| mu35_8279(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8280(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8275 +# 35| r35_8281(glval) = VariableAddress[x591] : +# 35| r35_8282(glval) = FunctionAddress[~String] : +# 35| v35_8283(void) = Call[~String] : func:r35_8282, this:r35_8281 +# 35| mu35_8284(unknown) = ^CallSideEffect : ~m? +# 35| v35_8285(void) = ^IndirectReadSideEffect[-1] : &:r35_8281, ~m? +# 35| mu35_8286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8281 +# 35| r35_8287(bool) = Constant[0] : +# 35| v35_8288(void) = ConditionalBranch : r35_8287 #-----| False -> Block 593 #-----| True (back edge) -> Block 592 -# 1795| Block 593 -# 1795| r1795_1(glval) = VariableAddress[x592] : -# 1795| mu1795_2(String) = Uninitialized[x592] : &:r1795_1 -# 1795| r1795_3(glval) = FunctionAddress[String] : -# 1795| v1795_4(void) = Call[String] : func:r1795_3, this:r1795_1 -# 1795| mu1795_5(unknown) = ^CallSideEffect : ~m? -# 1795| mu1795_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1795_1 -# 1796| r1796_1(glval) = VariableAddress[x592] : -# 1796| r1796_2(glval) = FunctionAddress[~String] : -# 1796| v1796_3(void) = Call[~String] : func:r1796_2, this:r1796_1 -# 1796| mu1796_4(unknown) = ^CallSideEffect : ~m? -# 1796| v1796_5(void) = ^IndirectReadSideEffect[-1] : &:r1796_1, ~m? -# 1796| mu1796_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1796_1 -# 1796| r1796_7(bool) = Constant[0] : -# 1796| v1796_8(void) = ConditionalBranch : r1796_7 +# 35| Block 593 +# 35| r35_8289(glval) = VariableAddress[x592] : +# 35| mu35_8290(String) = Uninitialized[x592] : &:r35_8289 +# 35| r35_8291(glval) = FunctionAddress[String] : +# 35| v35_8292(void) = Call[String] : func:r35_8291, this:r35_8289 +# 35| mu35_8293(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8294(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8289 +# 35| r35_8295(glval) = VariableAddress[x592] : +# 35| r35_8296(glval) = FunctionAddress[~String] : +# 35| v35_8297(void) = Call[~String] : func:r35_8296, this:r35_8295 +# 35| mu35_8298(unknown) = ^CallSideEffect : ~m? +# 35| v35_8299(void) = ^IndirectReadSideEffect[-1] : &:r35_8295, ~m? +# 35| mu35_8300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8295 +# 35| r35_8301(bool) = Constant[0] : +# 35| v35_8302(void) = ConditionalBranch : r35_8301 #-----| False -> Block 594 #-----| True (back edge) -> Block 593 -# 1798| Block 594 -# 1798| r1798_1(glval) = VariableAddress[x593] : -# 1798| mu1798_2(String) = Uninitialized[x593] : &:r1798_1 -# 1798| r1798_3(glval) = FunctionAddress[String] : -# 1798| v1798_4(void) = Call[String] : func:r1798_3, this:r1798_1 -# 1798| mu1798_5(unknown) = ^CallSideEffect : ~m? -# 1798| mu1798_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1798_1 -# 1799| r1799_1(glval) = VariableAddress[x593] : -# 1799| r1799_2(glval) = FunctionAddress[~String] : -# 1799| v1799_3(void) = Call[~String] : func:r1799_2, this:r1799_1 -# 1799| mu1799_4(unknown) = ^CallSideEffect : ~m? -# 1799| v1799_5(void) = ^IndirectReadSideEffect[-1] : &:r1799_1, ~m? -# 1799| mu1799_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1799_1 -# 1799| r1799_7(bool) = Constant[0] : -# 1799| v1799_8(void) = ConditionalBranch : r1799_7 +# 35| Block 594 +# 35| r35_8303(glval) = VariableAddress[x593] : +# 35| mu35_8304(String) = Uninitialized[x593] : &:r35_8303 +# 35| r35_8305(glval) = FunctionAddress[String] : +# 35| v35_8306(void) = Call[String] : func:r35_8305, this:r35_8303 +# 35| mu35_8307(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8308(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8303 +# 35| r35_8309(glval) = VariableAddress[x593] : +# 35| r35_8310(glval) = FunctionAddress[~String] : +# 35| v35_8311(void) = Call[~String] : func:r35_8310, this:r35_8309 +# 35| mu35_8312(unknown) = ^CallSideEffect : ~m? +# 35| v35_8313(void) = ^IndirectReadSideEffect[-1] : &:r35_8309, ~m? +# 35| mu35_8314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8309 +# 35| r35_8315(bool) = Constant[0] : +# 35| v35_8316(void) = ConditionalBranch : r35_8315 #-----| False -> Block 595 #-----| True (back edge) -> Block 594 -# 1801| Block 595 -# 1801| r1801_1(glval) = VariableAddress[x594] : -# 1801| mu1801_2(String) = Uninitialized[x594] : &:r1801_1 -# 1801| r1801_3(glval) = FunctionAddress[String] : -# 1801| v1801_4(void) = Call[String] : func:r1801_3, this:r1801_1 -# 1801| mu1801_5(unknown) = ^CallSideEffect : ~m? -# 1801| mu1801_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1801_1 -# 1802| r1802_1(glval) = VariableAddress[x594] : -# 1802| r1802_2(glval) = FunctionAddress[~String] : -# 1802| v1802_3(void) = Call[~String] : func:r1802_2, this:r1802_1 -# 1802| mu1802_4(unknown) = ^CallSideEffect : ~m? -# 1802| v1802_5(void) = ^IndirectReadSideEffect[-1] : &:r1802_1, ~m? -# 1802| mu1802_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1802_1 -# 1802| r1802_7(bool) = Constant[0] : -# 1802| v1802_8(void) = ConditionalBranch : r1802_7 +# 35| Block 595 +# 35| r35_8317(glval) = VariableAddress[x594] : +# 35| mu35_8318(String) = Uninitialized[x594] : &:r35_8317 +# 35| r35_8319(glval) = FunctionAddress[String] : +# 35| v35_8320(void) = Call[String] : func:r35_8319, this:r35_8317 +# 35| mu35_8321(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8322(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8317 +# 35| r35_8323(glval) = VariableAddress[x594] : +# 35| r35_8324(glval) = FunctionAddress[~String] : +# 35| v35_8325(void) = Call[~String] : func:r35_8324, this:r35_8323 +# 35| mu35_8326(unknown) = ^CallSideEffect : ~m? +# 35| v35_8327(void) = ^IndirectReadSideEffect[-1] : &:r35_8323, ~m? +# 35| mu35_8328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8323 +# 35| r35_8329(bool) = Constant[0] : +# 35| v35_8330(void) = ConditionalBranch : r35_8329 #-----| False -> Block 596 #-----| True (back edge) -> Block 595 -# 1804| Block 596 -# 1804| r1804_1(glval) = VariableAddress[x595] : -# 1804| mu1804_2(String) = Uninitialized[x595] : &:r1804_1 -# 1804| r1804_3(glval) = FunctionAddress[String] : -# 1804| v1804_4(void) = Call[String] : func:r1804_3, this:r1804_1 -# 1804| mu1804_5(unknown) = ^CallSideEffect : ~m? -# 1804| mu1804_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1804_1 -# 1805| r1805_1(glval) = VariableAddress[x595] : -# 1805| r1805_2(glval) = FunctionAddress[~String] : -# 1805| v1805_3(void) = Call[~String] : func:r1805_2, this:r1805_1 -# 1805| mu1805_4(unknown) = ^CallSideEffect : ~m? -# 1805| v1805_5(void) = ^IndirectReadSideEffect[-1] : &:r1805_1, ~m? -# 1805| mu1805_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1805_1 -# 1805| r1805_7(bool) = Constant[0] : -# 1805| v1805_8(void) = ConditionalBranch : r1805_7 +# 35| Block 596 +# 35| r35_8331(glval) = VariableAddress[x595] : +# 35| mu35_8332(String) = Uninitialized[x595] : &:r35_8331 +# 35| r35_8333(glval) = FunctionAddress[String] : +# 35| v35_8334(void) = Call[String] : func:r35_8333, this:r35_8331 +# 35| mu35_8335(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8336(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8331 +# 35| r35_8337(glval) = VariableAddress[x595] : +# 35| r35_8338(glval) = FunctionAddress[~String] : +# 35| v35_8339(void) = Call[~String] : func:r35_8338, this:r35_8337 +# 35| mu35_8340(unknown) = ^CallSideEffect : ~m? +# 35| v35_8341(void) = ^IndirectReadSideEffect[-1] : &:r35_8337, ~m? +# 35| mu35_8342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8337 +# 35| r35_8343(bool) = Constant[0] : +# 35| v35_8344(void) = ConditionalBranch : r35_8343 #-----| False -> Block 597 #-----| True (back edge) -> Block 596 -# 1807| Block 597 -# 1807| r1807_1(glval) = VariableAddress[x596] : -# 1807| mu1807_2(String) = Uninitialized[x596] : &:r1807_1 -# 1807| r1807_3(glval) = FunctionAddress[String] : -# 1807| v1807_4(void) = Call[String] : func:r1807_3, this:r1807_1 -# 1807| mu1807_5(unknown) = ^CallSideEffect : ~m? -# 1807| mu1807_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1807_1 -# 1808| r1808_1(glval) = VariableAddress[x596] : -# 1808| r1808_2(glval) = FunctionAddress[~String] : -# 1808| v1808_3(void) = Call[~String] : func:r1808_2, this:r1808_1 -# 1808| mu1808_4(unknown) = ^CallSideEffect : ~m? -# 1808| v1808_5(void) = ^IndirectReadSideEffect[-1] : &:r1808_1, ~m? -# 1808| mu1808_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1808_1 -# 1808| r1808_7(bool) = Constant[0] : -# 1808| v1808_8(void) = ConditionalBranch : r1808_7 +# 35| Block 597 +# 35| r35_8345(glval) = VariableAddress[x596] : +# 35| mu35_8346(String) = Uninitialized[x596] : &:r35_8345 +# 35| r35_8347(glval) = FunctionAddress[String] : +# 35| v35_8348(void) = Call[String] : func:r35_8347, this:r35_8345 +# 35| mu35_8349(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8350(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8345 +# 35| r35_8351(glval) = VariableAddress[x596] : +# 35| r35_8352(glval) = FunctionAddress[~String] : +# 35| v35_8353(void) = Call[~String] : func:r35_8352, this:r35_8351 +# 35| mu35_8354(unknown) = ^CallSideEffect : ~m? +# 35| v35_8355(void) = ^IndirectReadSideEffect[-1] : &:r35_8351, ~m? +# 35| mu35_8356(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8351 +# 35| r35_8357(bool) = Constant[0] : +# 35| v35_8358(void) = ConditionalBranch : r35_8357 #-----| False -> Block 598 #-----| True (back edge) -> Block 597 -# 1810| Block 598 -# 1810| r1810_1(glval) = VariableAddress[x597] : -# 1810| mu1810_2(String) = Uninitialized[x597] : &:r1810_1 -# 1810| r1810_3(glval) = FunctionAddress[String] : -# 1810| v1810_4(void) = Call[String] : func:r1810_3, this:r1810_1 -# 1810| mu1810_5(unknown) = ^CallSideEffect : ~m? -# 1810| mu1810_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1810_1 -# 1811| r1811_1(glval) = VariableAddress[x597] : -# 1811| r1811_2(glval) = FunctionAddress[~String] : -# 1811| v1811_3(void) = Call[~String] : func:r1811_2, this:r1811_1 -# 1811| mu1811_4(unknown) = ^CallSideEffect : ~m? -# 1811| v1811_5(void) = ^IndirectReadSideEffect[-1] : &:r1811_1, ~m? -# 1811| mu1811_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1811_1 -# 1811| r1811_7(bool) = Constant[0] : -# 1811| v1811_8(void) = ConditionalBranch : r1811_7 +# 35| Block 598 +# 35| r35_8359(glval) = VariableAddress[x597] : +# 35| mu35_8360(String) = Uninitialized[x597] : &:r35_8359 +# 35| r35_8361(glval) = FunctionAddress[String] : +# 35| v35_8362(void) = Call[String] : func:r35_8361, this:r35_8359 +# 35| mu35_8363(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8364(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8359 +# 35| r35_8365(glval) = VariableAddress[x597] : +# 35| r35_8366(glval) = FunctionAddress[~String] : +# 35| v35_8367(void) = Call[~String] : func:r35_8366, this:r35_8365 +# 35| mu35_8368(unknown) = ^CallSideEffect : ~m? +# 35| v35_8369(void) = ^IndirectReadSideEffect[-1] : &:r35_8365, ~m? +# 35| mu35_8370(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8365 +# 35| r35_8371(bool) = Constant[0] : +# 35| v35_8372(void) = ConditionalBranch : r35_8371 #-----| False -> Block 599 #-----| True (back edge) -> Block 598 -# 1813| Block 599 -# 1813| r1813_1(glval) = VariableAddress[x598] : -# 1813| mu1813_2(String) = Uninitialized[x598] : &:r1813_1 -# 1813| r1813_3(glval) = FunctionAddress[String] : -# 1813| v1813_4(void) = Call[String] : func:r1813_3, this:r1813_1 -# 1813| mu1813_5(unknown) = ^CallSideEffect : ~m? -# 1813| mu1813_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1813_1 -# 1814| r1814_1(glval) = VariableAddress[x598] : -# 1814| r1814_2(glval) = FunctionAddress[~String] : -# 1814| v1814_3(void) = Call[~String] : func:r1814_2, this:r1814_1 -# 1814| mu1814_4(unknown) = ^CallSideEffect : ~m? -# 1814| v1814_5(void) = ^IndirectReadSideEffect[-1] : &:r1814_1, ~m? -# 1814| mu1814_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1814_1 -# 1814| r1814_7(bool) = Constant[0] : -# 1814| v1814_8(void) = ConditionalBranch : r1814_7 +# 35| Block 599 +# 35| r35_8373(glval) = VariableAddress[x598] : +# 35| mu35_8374(String) = Uninitialized[x598] : &:r35_8373 +# 35| r35_8375(glval) = FunctionAddress[String] : +# 35| v35_8376(void) = Call[String] : func:r35_8375, this:r35_8373 +# 35| mu35_8377(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8378(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8373 +# 35| r35_8379(glval) = VariableAddress[x598] : +# 35| r35_8380(glval) = FunctionAddress[~String] : +# 35| v35_8381(void) = Call[~String] : func:r35_8380, this:r35_8379 +# 35| mu35_8382(unknown) = ^CallSideEffect : ~m? +# 35| v35_8383(void) = ^IndirectReadSideEffect[-1] : &:r35_8379, ~m? +# 35| mu35_8384(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8379 +# 35| r35_8385(bool) = Constant[0] : +# 35| v35_8386(void) = ConditionalBranch : r35_8385 #-----| False -> Block 600 #-----| True (back edge) -> Block 599 -# 1816| Block 600 -# 1816| r1816_1(glval) = VariableAddress[x599] : -# 1816| mu1816_2(String) = Uninitialized[x599] : &:r1816_1 -# 1816| r1816_3(glval) = FunctionAddress[String] : -# 1816| v1816_4(void) = Call[String] : func:r1816_3, this:r1816_1 -# 1816| mu1816_5(unknown) = ^CallSideEffect : ~m? -# 1816| mu1816_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1816_1 -# 1817| r1817_1(glval) = VariableAddress[x599] : -# 1817| r1817_2(glval) = FunctionAddress[~String] : -# 1817| v1817_3(void) = Call[~String] : func:r1817_2, this:r1817_1 -# 1817| mu1817_4(unknown) = ^CallSideEffect : ~m? -# 1817| v1817_5(void) = ^IndirectReadSideEffect[-1] : &:r1817_1, ~m? -# 1817| mu1817_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1817_1 -# 1817| r1817_7(bool) = Constant[0] : -# 1817| v1817_8(void) = ConditionalBranch : r1817_7 +# 35| Block 600 +# 35| r35_8387(glval) = VariableAddress[x599] : +# 35| mu35_8388(String) = Uninitialized[x599] : &:r35_8387 +# 35| r35_8389(glval) = FunctionAddress[String] : +# 35| v35_8390(void) = Call[String] : func:r35_8389, this:r35_8387 +# 35| mu35_8391(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8392(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8387 +# 35| r35_8393(glval) = VariableAddress[x599] : +# 35| r35_8394(glval) = FunctionAddress[~String] : +# 35| v35_8395(void) = Call[~String] : func:r35_8394, this:r35_8393 +# 35| mu35_8396(unknown) = ^CallSideEffect : ~m? +# 35| v35_8397(void) = ^IndirectReadSideEffect[-1] : &:r35_8393, ~m? +# 35| mu35_8398(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8393 +# 35| r35_8399(bool) = Constant[0] : +# 35| v35_8400(void) = ConditionalBranch : r35_8399 #-----| False -> Block 601 #-----| True (back edge) -> Block 600 -# 1819| Block 601 -# 1819| r1819_1(glval) = VariableAddress[x600] : -# 1819| mu1819_2(String) = Uninitialized[x600] : &:r1819_1 -# 1819| r1819_3(glval) = FunctionAddress[String] : -# 1819| v1819_4(void) = Call[String] : func:r1819_3, this:r1819_1 -# 1819| mu1819_5(unknown) = ^CallSideEffect : ~m? -# 1819| mu1819_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1819_1 -# 1820| r1820_1(glval) = VariableAddress[x600] : -# 1820| r1820_2(glval) = FunctionAddress[~String] : -# 1820| v1820_3(void) = Call[~String] : func:r1820_2, this:r1820_1 -# 1820| mu1820_4(unknown) = ^CallSideEffect : ~m? -# 1820| v1820_5(void) = ^IndirectReadSideEffect[-1] : &:r1820_1, ~m? -# 1820| mu1820_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1820_1 -# 1820| r1820_7(bool) = Constant[0] : -# 1820| v1820_8(void) = ConditionalBranch : r1820_7 +# 35| Block 601 +# 35| r35_8401(glval) = VariableAddress[x600] : +# 35| mu35_8402(String) = Uninitialized[x600] : &:r35_8401 +# 35| r35_8403(glval) = FunctionAddress[String] : +# 35| v35_8404(void) = Call[String] : func:r35_8403, this:r35_8401 +# 35| mu35_8405(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8406(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8401 +# 35| r35_8407(glval) = VariableAddress[x600] : +# 35| r35_8408(glval) = FunctionAddress[~String] : +# 35| v35_8409(void) = Call[~String] : func:r35_8408, this:r35_8407 +# 35| mu35_8410(unknown) = ^CallSideEffect : ~m? +# 35| v35_8411(void) = ^IndirectReadSideEffect[-1] : &:r35_8407, ~m? +# 35| mu35_8412(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8407 +# 35| r35_8413(bool) = Constant[0] : +# 35| v35_8414(void) = ConditionalBranch : r35_8413 #-----| False -> Block 602 #-----| True (back edge) -> Block 601 -# 1822| Block 602 -# 1822| r1822_1(glval) = VariableAddress[x601] : -# 1822| mu1822_2(String) = Uninitialized[x601] : &:r1822_1 -# 1822| r1822_3(glval) = FunctionAddress[String] : -# 1822| v1822_4(void) = Call[String] : func:r1822_3, this:r1822_1 -# 1822| mu1822_5(unknown) = ^CallSideEffect : ~m? -# 1822| mu1822_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1822_1 -# 1823| r1823_1(glval) = VariableAddress[x601] : -# 1823| r1823_2(glval) = FunctionAddress[~String] : -# 1823| v1823_3(void) = Call[~String] : func:r1823_2, this:r1823_1 -# 1823| mu1823_4(unknown) = ^CallSideEffect : ~m? -# 1823| v1823_5(void) = ^IndirectReadSideEffect[-1] : &:r1823_1, ~m? -# 1823| mu1823_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1823_1 -# 1823| r1823_7(bool) = Constant[0] : -# 1823| v1823_8(void) = ConditionalBranch : r1823_7 +# 35| Block 602 +# 35| r35_8415(glval) = VariableAddress[x601] : +# 35| mu35_8416(String) = Uninitialized[x601] : &:r35_8415 +# 35| r35_8417(glval) = FunctionAddress[String] : +# 35| v35_8418(void) = Call[String] : func:r35_8417, this:r35_8415 +# 35| mu35_8419(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8420(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8415 +# 35| r35_8421(glval) = VariableAddress[x601] : +# 35| r35_8422(glval) = FunctionAddress[~String] : +# 35| v35_8423(void) = Call[~String] : func:r35_8422, this:r35_8421 +# 35| mu35_8424(unknown) = ^CallSideEffect : ~m? +# 35| v35_8425(void) = ^IndirectReadSideEffect[-1] : &:r35_8421, ~m? +# 35| mu35_8426(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8421 +# 35| r35_8427(bool) = Constant[0] : +# 35| v35_8428(void) = ConditionalBranch : r35_8427 #-----| False -> Block 603 #-----| True (back edge) -> Block 602 -# 1825| Block 603 -# 1825| r1825_1(glval) = VariableAddress[x602] : -# 1825| mu1825_2(String) = Uninitialized[x602] : &:r1825_1 -# 1825| r1825_3(glval) = FunctionAddress[String] : -# 1825| v1825_4(void) = Call[String] : func:r1825_3, this:r1825_1 -# 1825| mu1825_5(unknown) = ^CallSideEffect : ~m? -# 1825| mu1825_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1825_1 -# 1826| r1826_1(glval) = VariableAddress[x602] : -# 1826| r1826_2(glval) = FunctionAddress[~String] : -# 1826| v1826_3(void) = Call[~String] : func:r1826_2, this:r1826_1 -# 1826| mu1826_4(unknown) = ^CallSideEffect : ~m? -# 1826| v1826_5(void) = ^IndirectReadSideEffect[-1] : &:r1826_1, ~m? -# 1826| mu1826_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1826_1 -# 1826| r1826_7(bool) = Constant[0] : -# 1826| v1826_8(void) = ConditionalBranch : r1826_7 +# 35| Block 603 +# 35| r35_8429(glval) = VariableAddress[x602] : +# 35| mu35_8430(String) = Uninitialized[x602] : &:r35_8429 +# 35| r35_8431(glval) = FunctionAddress[String] : +# 35| v35_8432(void) = Call[String] : func:r35_8431, this:r35_8429 +# 35| mu35_8433(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8434(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8429 +# 35| r35_8435(glval) = VariableAddress[x602] : +# 35| r35_8436(glval) = FunctionAddress[~String] : +# 35| v35_8437(void) = Call[~String] : func:r35_8436, this:r35_8435 +# 35| mu35_8438(unknown) = ^CallSideEffect : ~m? +# 35| v35_8439(void) = ^IndirectReadSideEffect[-1] : &:r35_8435, ~m? +# 35| mu35_8440(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8435 +# 35| r35_8441(bool) = Constant[0] : +# 35| v35_8442(void) = ConditionalBranch : r35_8441 #-----| False -> Block 604 #-----| True (back edge) -> Block 603 -# 1828| Block 604 -# 1828| r1828_1(glval) = VariableAddress[x603] : -# 1828| mu1828_2(String) = Uninitialized[x603] : &:r1828_1 -# 1828| r1828_3(glval) = FunctionAddress[String] : -# 1828| v1828_4(void) = Call[String] : func:r1828_3, this:r1828_1 -# 1828| mu1828_5(unknown) = ^CallSideEffect : ~m? -# 1828| mu1828_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1828_1 -# 1829| r1829_1(glval) = VariableAddress[x603] : -# 1829| r1829_2(glval) = FunctionAddress[~String] : -# 1829| v1829_3(void) = Call[~String] : func:r1829_2, this:r1829_1 -# 1829| mu1829_4(unknown) = ^CallSideEffect : ~m? -# 1829| v1829_5(void) = ^IndirectReadSideEffect[-1] : &:r1829_1, ~m? -# 1829| mu1829_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1829_1 -# 1829| r1829_7(bool) = Constant[0] : -# 1829| v1829_8(void) = ConditionalBranch : r1829_7 +# 35| Block 604 +# 35| r35_8443(glval) = VariableAddress[x603] : +# 35| mu35_8444(String) = Uninitialized[x603] : &:r35_8443 +# 35| r35_8445(glval) = FunctionAddress[String] : +# 35| v35_8446(void) = Call[String] : func:r35_8445, this:r35_8443 +# 35| mu35_8447(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8448(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8443 +# 35| r35_8449(glval) = VariableAddress[x603] : +# 35| r35_8450(glval) = FunctionAddress[~String] : +# 35| v35_8451(void) = Call[~String] : func:r35_8450, this:r35_8449 +# 35| mu35_8452(unknown) = ^CallSideEffect : ~m? +# 35| v35_8453(void) = ^IndirectReadSideEffect[-1] : &:r35_8449, ~m? +# 35| mu35_8454(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8449 +# 35| r35_8455(bool) = Constant[0] : +# 35| v35_8456(void) = ConditionalBranch : r35_8455 #-----| False -> Block 605 #-----| True (back edge) -> Block 604 -# 1831| Block 605 -# 1831| r1831_1(glval) = VariableAddress[x604] : -# 1831| mu1831_2(String) = Uninitialized[x604] : &:r1831_1 -# 1831| r1831_3(glval) = FunctionAddress[String] : -# 1831| v1831_4(void) = Call[String] : func:r1831_3, this:r1831_1 -# 1831| mu1831_5(unknown) = ^CallSideEffect : ~m? -# 1831| mu1831_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1831_1 -# 1832| r1832_1(glval) = VariableAddress[x604] : -# 1832| r1832_2(glval) = FunctionAddress[~String] : -# 1832| v1832_3(void) = Call[~String] : func:r1832_2, this:r1832_1 -# 1832| mu1832_4(unknown) = ^CallSideEffect : ~m? -# 1832| v1832_5(void) = ^IndirectReadSideEffect[-1] : &:r1832_1, ~m? -# 1832| mu1832_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1832_1 -# 1832| r1832_7(bool) = Constant[0] : -# 1832| v1832_8(void) = ConditionalBranch : r1832_7 +# 35| Block 605 +# 35| r35_8457(glval) = VariableAddress[x604] : +# 35| mu35_8458(String) = Uninitialized[x604] : &:r35_8457 +# 35| r35_8459(glval) = FunctionAddress[String] : +# 35| v35_8460(void) = Call[String] : func:r35_8459, this:r35_8457 +# 35| mu35_8461(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8462(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8457 +# 35| r35_8463(glval) = VariableAddress[x604] : +# 35| r35_8464(glval) = FunctionAddress[~String] : +# 35| v35_8465(void) = Call[~String] : func:r35_8464, this:r35_8463 +# 35| mu35_8466(unknown) = ^CallSideEffect : ~m? +# 35| v35_8467(void) = ^IndirectReadSideEffect[-1] : &:r35_8463, ~m? +# 35| mu35_8468(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8463 +# 35| r35_8469(bool) = Constant[0] : +# 35| v35_8470(void) = ConditionalBranch : r35_8469 #-----| False -> Block 606 #-----| True (back edge) -> Block 605 -# 1834| Block 606 -# 1834| r1834_1(glval) = VariableAddress[x605] : -# 1834| mu1834_2(String) = Uninitialized[x605] : &:r1834_1 -# 1834| r1834_3(glval) = FunctionAddress[String] : -# 1834| v1834_4(void) = Call[String] : func:r1834_3, this:r1834_1 -# 1834| mu1834_5(unknown) = ^CallSideEffect : ~m? -# 1834| mu1834_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1834_1 -# 1835| r1835_1(glval) = VariableAddress[x605] : -# 1835| r1835_2(glval) = FunctionAddress[~String] : -# 1835| v1835_3(void) = Call[~String] : func:r1835_2, this:r1835_1 -# 1835| mu1835_4(unknown) = ^CallSideEffect : ~m? -# 1835| v1835_5(void) = ^IndirectReadSideEffect[-1] : &:r1835_1, ~m? -# 1835| mu1835_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1835_1 -# 1835| r1835_7(bool) = Constant[0] : -# 1835| v1835_8(void) = ConditionalBranch : r1835_7 +# 35| Block 606 +# 35| r35_8471(glval) = VariableAddress[x605] : +# 35| mu35_8472(String) = Uninitialized[x605] : &:r35_8471 +# 35| r35_8473(glval) = FunctionAddress[String] : +# 35| v35_8474(void) = Call[String] : func:r35_8473, this:r35_8471 +# 35| mu35_8475(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8476(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8471 +# 35| r35_8477(glval) = VariableAddress[x605] : +# 35| r35_8478(glval) = FunctionAddress[~String] : +# 35| v35_8479(void) = Call[~String] : func:r35_8478, this:r35_8477 +# 35| mu35_8480(unknown) = ^CallSideEffect : ~m? +# 35| v35_8481(void) = ^IndirectReadSideEffect[-1] : &:r35_8477, ~m? +# 35| mu35_8482(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8477 +# 35| r35_8483(bool) = Constant[0] : +# 35| v35_8484(void) = ConditionalBranch : r35_8483 #-----| False -> Block 607 #-----| True (back edge) -> Block 606 -# 1837| Block 607 -# 1837| r1837_1(glval) = VariableAddress[x606] : -# 1837| mu1837_2(String) = Uninitialized[x606] : &:r1837_1 -# 1837| r1837_3(glval) = FunctionAddress[String] : -# 1837| v1837_4(void) = Call[String] : func:r1837_3, this:r1837_1 -# 1837| mu1837_5(unknown) = ^CallSideEffect : ~m? -# 1837| mu1837_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1837_1 -# 1838| r1838_1(glval) = VariableAddress[x606] : -# 1838| r1838_2(glval) = FunctionAddress[~String] : -# 1838| v1838_3(void) = Call[~String] : func:r1838_2, this:r1838_1 -# 1838| mu1838_4(unknown) = ^CallSideEffect : ~m? -# 1838| v1838_5(void) = ^IndirectReadSideEffect[-1] : &:r1838_1, ~m? -# 1838| mu1838_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1838_1 -# 1838| r1838_7(bool) = Constant[0] : -# 1838| v1838_8(void) = ConditionalBranch : r1838_7 +# 35| Block 607 +# 35| r35_8485(glval) = VariableAddress[x606] : +# 35| mu35_8486(String) = Uninitialized[x606] : &:r35_8485 +# 35| r35_8487(glval) = FunctionAddress[String] : +# 35| v35_8488(void) = Call[String] : func:r35_8487, this:r35_8485 +# 35| mu35_8489(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8490(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8485 +# 35| r35_8491(glval) = VariableAddress[x606] : +# 35| r35_8492(glval) = FunctionAddress[~String] : +# 35| v35_8493(void) = Call[~String] : func:r35_8492, this:r35_8491 +# 35| mu35_8494(unknown) = ^CallSideEffect : ~m? +# 35| v35_8495(void) = ^IndirectReadSideEffect[-1] : &:r35_8491, ~m? +# 35| mu35_8496(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8491 +# 35| r35_8497(bool) = Constant[0] : +# 35| v35_8498(void) = ConditionalBranch : r35_8497 #-----| False -> Block 608 #-----| True (back edge) -> Block 607 -# 1840| Block 608 -# 1840| r1840_1(glval) = VariableAddress[x607] : -# 1840| mu1840_2(String) = Uninitialized[x607] : &:r1840_1 -# 1840| r1840_3(glval) = FunctionAddress[String] : -# 1840| v1840_4(void) = Call[String] : func:r1840_3, this:r1840_1 -# 1840| mu1840_5(unknown) = ^CallSideEffect : ~m? -# 1840| mu1840_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1840_1 -# 1841| r1841_1(glval) = VariableAddress[x607] : -# 1841| r1841_2(glval) = FunctionAddress[~String] : -# 1841| v1841_3(void) = Call[~String] : func:r1841_2, this:r1841_1 -# 1841| mu1841_4(unknown) = ^CallSideEffect : ~m? -# 1841| v1841_5(void) = ^IndirectReadSideEffect[-1] : &:r1841_1, ~m? -# 1841| mu1841_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1841_1 -# 1841| r1841_7(bool) = Constant[0] : -# 1841| v1841_8(void) = ConditionalBranch : r1841_7 +# 35| Block 608 +# 35| r35_8499(glval) = VariableAddress[x607] : +# 35| mu35_8500(String) = Uninitialized[x607] : &:r35_8499 +# 35| r35_8501(glval) = FunctionAddress[String] : +# 35| v35_8502(void) = Call[String] : func:r35_8501, this:r35_8499 +# 35| mu35_8503(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8504(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8499 +# 35| r35_8505(glval) = VariableAddress[x607] : +# 35| r35_8506(glval) = FunctionAddress[~String] : +# 35| v35_8507(void) = Call[~String] : func:r35_8506, this:r35_8505 +# 35| mu35_8508(unknown) = ^CallSideEffect : ~m? +# 35| v35_8509(void) = ^IndirectReadSideEffect[-1] : &:r35_8505, ~m? +# 35| mu35_8510(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8505 +# 35| r35_8511(bool) = Constant[0] : +# 35| v35_8512(void) = ConditionalBranch : r35_8511 #-----| False -> Block 609 #-----| True (back edge) -> Block 608 -# 1843| Block 609 -# 1843| r1843_1(glval) = VariableAddress[x608] : -# 1843| mu1843_2(String) = Uninitialized[x608] : &:r1843_1 -# 1843| r1843_3(glval) = FunctionAddress[String] : -# 1843| v1843_4(void) = Call[String] : func:r1843_3, this:r1843_1 -# 1843| mu1843_5(unknown) = ^CallSideEffect : ~m? -# 1843| mu1843_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1843_1 -# 1844| r1844_1(glval) = VariableAddress[x608] : -# 1844| r1844_2(glval) = FunctionAddress[~String] : -# 1844| v1844_3(void) = Call[~String] : func:r1844_2, this:r1844_1 -# 1844| mu1844_4(unknown) = ^CallSideEffect : ~m? -# 1844| v1844_5(void) = ^IndirectReadSideEffect[-1] : &:r1844_1, ~m? -# 1844| mu1844_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1844_1 -# 1844| r1844_7(bool) = Constant[0] : -# 1844| v1844_8(void) = ConditionalBranch : r1844_7 +# 35| Block 609 +# 35| r35_8513(glval) = VariableAddress[x608] : +# 35| mu35_8514(String) = Uninitialized[x608] : &:r35_8513 +# 35| r35_8515(glval) = FunctionAddress[String] : +# 35| v35_8516(void) = Call[String] : func:r35_8515, this:r35_8513 +# 35| mu35_8517(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8518(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8513 +# 35| r35_8519(glval) = VariableAddress[x608] : +# 35| r35_8520(glval) = FunctionAddress[~String] : +# 35| v35_8521(void) = Call[~String] : func:r35_8520, this:r35_8519 +# 35| mu35_8522(unknown) = ^CallSideEffect : ~m? +# 35| v35_8523(void) = ^IndirectReadSideEffect[-1] : &:r35_8519, ~m? +# 35| mu35_8524(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8519 +# 35| r35_8525(bool) = Constant[0] : +# 35| v35_8526(void) = ConditionalBranch : r35_8525 #-----| False -> Block 610 #-----| True (back edge) -> Block 609 -# 1846| Block 610 -# 1846| r1846_1(glval) = VariableAddress[x609] : -# 1846| mu1846_2(String) = Uninitialized[x609] : &:r1846_1 -# 1846| r1846_3(glval) = FunctionAddress[String] : -# 1846| v1846_4(void) = Call[String] : func:r1846_3, this:r1846_1 -# 1846| mu1846_5(unknown) = ^CallSideEffect : ~m? -# 1846| mu1846_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1846_1 -# 1847| r1847_1(glval) = VariableAddress[x609] : -# 1847| r1847_2(glval) = FunctionAddress[~String] : -# 1847| v1847_3(void) = Call[~String] : func:r1847_2, this:r1847_1 -# 1847| mu1847_4(unknown) = ^CallSideEffect : ~m? -# 1847| v1847_5(void) = ^IndirectReadSideEffect[-1] : &:r1847_1, ~m? -# 1847| mu1847_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1847_1 -# 1847| r1847_7(bool) = Constant[0] : -# 1847| v1847_8(void) = ConditionalBranch : r1847_7 +# 35| Block 610 +# 35| r35_8527(glval) = VariableAddress[x609] : +# 35| mu35_8528(String) = Uninitialized[x609] : &:r35_8527 +# 35| r35_8529(glval) = FunctionAddress[String] : +# 35| v35_8530(void) = Call[String] : func:r35_8529, this:r35_8527 +# 35| mu35_8531(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8532(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8527 +# 35| r35_8533(glval) = VariableAddress[x609] : +# 35| r35_8534(glval) = FunctionAddress[~String] : +# 35| v35_8535(void) = Call[~String] : func:r35_8534, this:r35_8533 +# 35| mu35_8536(unknown) = ^CallSideEffect : ~m? +# 35| v35_8537(void) = ^IndirectReadSideEffect[-1] : &:r35_8533, ~m? +# 35| mu35_8538(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8533 +# 35| r35_8539(bool) = Constant[0] : +# 35| v35_8540(void) = ConditionalBranch : r35_8539 #-----| False -> Block 611 #-----| True (back edge) -> Block 610 -# 1849| Block 611 -# 1849| r1849_1(glval) = VariableAddress[x610] : -# 1849| mu1849_2(String) = Uninitialized[x610] : &:r1849_1 -# 1849| r1849_3(glval) = FunctionAddress[String] : -# 1849| v1849_4(void) = Call[String] : func:r1849_3, this:r1849_1 -# 1849| mu1849_5(unknown) = ^CallSideEffect : ~m? -# 1849| mu1849_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1849_1 -# 1850| r1850_1(glval) = VariableAddress[x610] : -# 1850| r1850_2(glval) = FunctionAddress[~String] : -# 1850| v1850_3(void) = Call[~String] : func:r1850_2, this:r1850_1 -# 1850| mu1850_4(unknown) = ^CallSideEffect : ~m? -# 1850| v1850_5(void) = ^IndirectReadSideEffect[-1] : &:r1850_1, ~m? -# 1850| mu1850_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1850_1 -# 1850| r1850_7(bool) = Constant[0] : -# 1850| v1850_8(void) = ConditionalBranch : r1850_7 +# 35| Block 611 +# 35| r35_8541(glval) = VariableAddress[x610] : +# 35| mu35_8542(String) = Uninitialized[x610] : &:r35_8541 +# 35| r35_8543(glval) = FunctionAddress[String] : +# 35| v35_8544(void) = Call[String] : func:r35_8543, this:r35_8541 +# 35| mu35_8545(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8546(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8541 +# 35| r35_8547(glval) = VariableAddress[x610] : +# 35| r35_8548(glval) = FunctionAddress[~String] : +# 35| v35_8549(void) = Call[~String] : func:r35_8548, this:r35_8547 +# 35| mu35_8550(unknown) = ^CallSideEffect : ~m? +# 35| v35_8551(void) = ^IndirectReadSideEffect[-1] : &:r35_8547, ~m? +# 35| mu35_8552(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8547 +# 35| r35_8553(bool) = Constant[0] : +# 35| v35_8554(void) = ConditionalBranch : r35_8553 #-----| False -> Block 612 #-----| True (back edge) -> Block 611 -# 1852| Block 612 -# 1852| r1852_1(glval) = VariableAddress[x611] : -# 1852| mu1852_2(String) = Uninitialized[x611] : &:r1852_1 -# 1852| r1852_3(glval) = FunctionAddress[String] : -# 1852| v1852_4(void) = Call[String] : func:r1852_3, this:r1852_1 -# 1852| mu1852_5(unknown) = ^CallSideEffect : ~m? -# 1852| mu1852_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1852_1 -# 1853| r1853_1(glval) = VariableAddress[x611] : -# 1853| r1853_2(glval) = FunctionAddress[~String] : -# 1853| v1853_3(void) = Call[~String] : func:r1853_2, this:r1853_1 -# 1853| mu1853_4(unknown) = ^CallSideEffect : ~m? -# 1853| v1853_5(void) = ^IndirectReadSideEffect[-1] : &:r1853_1, ~m? -# 1853| mu1853_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1853_1 -# 1853| r1853_7(bool) = Constant[0] : -# 1853| v1853_8(void) = ConditionalBranch : r1853_7 +# 35| Block 612 +# 35| r35_8555(glval) = VariableAddress[x611] : +# 35| mu35_8556(String) = Uninitialized[x611] : &:r35_8555 +# 35| r35_8557(glval) = FunctionAddress[String] : +# 35| v35_8558(void) = Call[String] : func:r35_8557, this:r35_8555 +# 35| mu35_8559(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8560(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8555 +# 35| r35_8561(glval) = VariableAddress[x611] : +# 35| r35_8562(glval) = FunctionAddress[~String] : +# 35| v35_8563(void) = Call[~String] : func:r35_8562, this:r35_8561 +# 35| mu35_8564(unknown) = ^CallSideEffect : ~m? +# 35| v35_8565(void) = ^IndirectReadSideEffect[-1] : &:r35_8561, ~m? +# 35| mu35_8566(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8561 +# 35| r35_8567(bool) = Constant[0] : +# 35| v35_8568(void) = ConditionalBranch : r35_8567 #-----| False -> Block 613 #-----| True (back edge) -> Block 612 -# 1855| Block 613 -# 1855| r1855_1(glval) = VariableAddress[x612] : -# 1855| mu1855_2(String) = Uninitialized[x612] : &:r1855_1 -# 1855| r1855_3(glval) = FunctionAddress[String] : -# 1855| v1855_4(void) = Call[String] : func:r1855_3, this:r1855_1 -# 1855| mu1855_5(unknown) = ^CallSideEffect : ~m? -# 1855| mu1855_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1855_1 -# 1856| r1856_1(glval) = VariableAddress[x612] : -# 1856| r1856_2(glval) = FunctionAddress[~String] : -# 1856| v1856_3(void) = Call[~String] : func:r1856_2, this:r1856_1 -# 1856| mu1856_4(unknown) = ^CallSideEffect : ~m? -# 1856| v1856_5(void) = ^IndirectReadSideEffect[-1] : &:r1856_1, ~m? -# 1856| mu1856_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1856_1 -# 1856| r1856_7(bool) = Constant[0] : -# 1856| v1856_8(void) = ConditionalBranch : r1856_7 +# 35| Block 613 +# 35| r35_8569(glval) = VariableAddress[x612] : +# 35| mu35_8570(String) = Uninitialized[x612] : &:r35_8569 +# 35| r35_8571(glval) = FunctionAddress[String] : +# 35| v35_8572(void) = Call[String] : func:r35_8571, this:r35_8569 +# 35| mu35_8573(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8574(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8569 +# 35| r35_8575(glval) = VariableAddress[x612] : +# 35| r35_8576(glval) = FunctionAddress[~String] : +# 35| v35_8577(void) = Call[~String] : func:r35_8576, this:r35_8575 +# 35| mu35_8578(unknown) = ^CallSideEffect : ~m? +# 35| v35_8579(void) = ^IndirectReadSideEffect[-1] : &:r35_8575, ~m? +# 35| mu35_8580(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8575 +# 35| r35_8581(bool) = Constant[0] : +# 35| v35_8582(void) = ConditionalBranch : r35_8581 #-----| False -> Block 614 #-----| True (back edge) -> Block 613 -# 1858| Block 614 -# 1858| r1858_1(glval) = VariableAddress[x613] : -# 1858| mu1858_2(String) = Uninitialized[x613] : &:r1858_1 -# 1858| r1858_3(glval) = FunctionAddress[String] : -# 1858| v1858_4(void) = Call[String] : func:r1858_3, this:r1858_1 -# 1858| mu1858_5(unknown) = ^CallSideEffect : ~m? -# 1858| mu1858_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1858_1 -# 1859| r1859_1(glval) = VariableAddress[x613] : -# 1859| r1859_2(glval) = FunctionAddress[~String] : -# 1859| v1859_3(void) = Call[~String] : func:r1859_2, this:r1859_1 -# 1859| mu1859_4(unknown) = ^CallSideEffect : ~m? -# 1859| v1859_5(void) = ^IndirectReadSideEffect[-1] : &:r1859_1, ~m? -# 1859| mu1859_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1859_1 -# 1859| r1859_7(bool) = Constant[0] : -# 1859| v1859_8(void) = ConditionalBranch : r1859_7 +# 35| Block 614 +# 35| r35_8583(glval) = VariableAddress[x613] : +# 35| mu35_8584(String) = Uninitialized[x613] : &:r35_8583 +# 35| r35_8585(glval) = FunctionAddress[String] : +# 35| v35_8586(void) = Call[String] : func:r35_8585, this:r35_8583 +# 35| mu35_8587(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8588(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8583 +# 35| r35_8589(glval) = VariableAddress[x613] : +# 35| r35_8590(glval) = FunctionAddress[~String] : +# 35| v35_8591(void) = Call[~String] : func:r35_8590, this:r35_8589 +# 35| mu35_8592(unknown) = ^CallSideEffect : ~m? +# 35| v35_8593(void) = ^IndirectReadSideEffect[-1] : &:r35_8589, ~m? +# 35| mu35_8594(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8589 +# 35| r35_8595(bool) = Constant[0] : +# 35| v35_8596(void) = ConditionalBranch : r35_8595 #-----| False -> Block 615 #-----| True (back edge) -> Block 614 -# 1861| Block 615 -# 1861| r1861_1(glval) = VariableAddress[x614] : -# 1861| mu1861_2(String) = Uninitialized[x614] : &:r1861_1 -# 1861| r1861_3(glval) = FunctionAddress[String] : -# 1861| v1861_4(void) = Call[String] : func:r1861_3, this:r1861_1 -# 1861| mu1861_5(unknown) = ^CallSideEffect : ~m? -# 1861| mu1861_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1861_1 -# 1862| r1862_1(glval) = VariableAddress[x614] : -# 1862| r1862_2(glval) = FunctionAddress[~String] : -# 1862| v1862_3(void) = Call[~String] : func:r1862_2, this:r1862_1 -# 1862| mu1862_4(unknown) = ^CallSideEffect : ~m? -# 1862| v1862_5(void) = ^IndirectReadSideEffect[-1] : &:r1862_1, ~m? -# 1862| mu1862_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1862_1 -# 1862| r1862_7(bool) = Constant[0] : -# 1862| v1862_8(void) = ConditionalBranch : r1862_7 +# 35| Block 615 +# 35| r35_8597(glval) = VariableAddress[x614] : +# 35| mu35_8598(String) = Uninitialized[x614] : &:r35_8597 +# 35| r35_8599(glval) = FunctionAddress[String] : +# 35| v35_8600(void) = Call[String] : func:r35_8599, this:r35_8597 +# 35| mu35_8601(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8602(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8597 +# 35| r35_8603(glval) = VariableAddress[x614] : +# 35| r35_8604(glval) = FunctionAddress[~String] : +# 35| v35_8605(void) = Call[~String] : func:r35_8604, this:r35_8603 +# 35| mu35_8606(unknown) = ^CallSideEffect : ~m? +# 35| v35_8607(void) = ^IndirectReadSideEffect[-1] : &:r35_8603, ~m? +# 35| mu35_8608(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8603 +# 35| r35_8609(bool) = Constant[0] : +# 35| v35_8610(void) = ConditionalBranch : r35_8609 #-----| False -> Block 616 #-----| True (back edge) -> Block 615 -# 1864| Block 616 -# 1864| r1864_1(glval) = VariableAddress[x615] : -# 1864| mu1864_2(String) = Uninitialized[x615] : &:r1864_1 -# 1864| r1864_3(glval) = FunctionAddress[String] : -# 1864| v1864_4(void) = Call[String] : func:r1864_3, this:r1864_1 -# 1864| mu1864_5(unknown) = ^CallSideEffect : ~m? -# 1864| mu1864_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1864_1 -# 1865| r1865_1(glval) = VariableAddress[x615] : -# 1865| r1865_2(glval) = FunctionAddress[~String] : -# 1865| v1865_3(void) = Call[~String] : func:r1865_2, this:r1865_1 -# 1865| mu1865_4(unknown) = ^CallSideEffect : ~m? -# 1865| v1865_5(void) = ^IndirectReadSideEffect[-1] : &:r1865_1, ~m? -# 1865| mu1865_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1865_1 -# 1865| r1865_7(bool) = Constant[0] : -# 1865| v1865_8(void) = ConditionalBranch : r1865_7 +# 35| Block 616 +# 35| r35_8611(glval) = VariableAddress[x615] : +# 35| mu35_8612(String) = Uninitialized[x615] : &:r35_8611 +# 35| r35_8613(glval) = FunctionAddress[String] : +# 35| v35_8614(void) = Call[String] : func:r35_8613, this:r35_8611 +# 35| mu35_8615(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8616(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8611 +# 35| r35_8617(glval) = VariableAddress[x615] : +# 35| r35_8618(glval) = FunctionAddress[~String] : +# 35| v35_8619(void) = Call[~String] : func:r35_8618, this:r35_8617 +# 35| mu35_8620(unknown) = ^CallSideEffect : ~m? +# 35| v35_8621(void) = ^IndirectReadSideEffect[-1] : &:r35_8617, ~m? +# 35| mu35_8622(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8617 +# 35| r35_8623(bool) = Constant[0] : +# 35| v35_8624(void) = ConditionalBranch : r35_8623 #-----| False -> Block 617 #-----| True (back edge) -> Block 616 -# 1867| Block 617 -# 1867| r1867_1(glval) = VariableAddress[x616] : -# 1867| mu1867_2(String) = Uninitialized[x616] : &:r1867_1 -# 1867| r1867_3(glval) = FunctionAddress[String] : -# 1867| v1867_4(void) = Call[String] : func:r1867_3, this:r1867_1 -# 1867| mu1867_5(unknown) = ^CallSideEffect : ~m? -# 1867| mu1867_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1867_1 -# 1868| r1868_1(glval) = VariableAddress[x616] : -# 1868| r1868_2(glval) = FunctionAddress[~String] : -# 1868| v1868_3(void) = Call[~String] : func:r1868_2, this:r1868_1 -# 1868| mu1868_4(unknown) = ^CallSideEffect : ~m? -# 1868| v1868_5(void) = ^IndirectReadSideEffect[-1] : &:r1868_1, ~m? -# 1868| mu1868_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1868_1 -# 1868| r1868_7(bool) = Constant[0] : -# 1868| v1868_8(void) = ConditionalBranch : r1868_7 +# 35| Block 617 +# 35| r35_8625(glval) = VariableAddress[x616] : +# 35| mu35_8626(String) = Uninitialized[x616] : &:r35_8625 +# 35| r35_8627(glval) = FunctionAddress[String] : +# 35| v35_8628(void) = Call[String] : func:r35_8627, this:r35_8625 +# 35| mu35_8629(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8630(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8625 +# 35| r35_8631(glval) = VariableAddress[x616] : +# 35| r35_8632(glval) = FunctionAddress[~String] : +# 35| v35_8633(void) = Call[~String] : func:r35_8632, this:r35_8631 +# 35| mu35_8634(unknown) = ^CallSideEffect : ~m? +# 35| v35_8635(void) = ^IndirectReadSideEffect[-1] : &:r35_8631, ~m? +# 35| mu35_8636(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8631 +# 35| r35_8637(bool) = Constant[0] : +# 35| v35_8638(void) = ConditionalBranch : r35_8637 #-----| False -> Block 618 #-----| True (back edge) -> Block 617 -# 1870| Block 618 -# 1870| r1870_1(glval) = VariableAddress[x617] : -# 1870| mu1870_2(String) = Uninitialized[x617] : &:r1870_1 -# 1870| r1870_3(glval) = FunctionAddress[String] : -# 1870| v1870_4(void) = Call[String] : func:r1870_3, this:r1870_1 -# 1870| mu1870_5(unknown) = ^CallSideEffect : ~m? -# 1870| mu1870_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1870_1 -# 1871| r1871_1(glval) = VariableAddress[x617] : -# 1871| r1871_2(glval) = FunctionAddress[~String] : -# 1871| v1871_3(void) = Call[~String] : func:r1871_2, this:r1871_1 -# 1871| mu1871_4(unknown) = ^CallSideEffect : ~m? -# 1871| v1871_5(void) = ^IndirectReadSideEffect[-1] : &:r1871_1, ~m? -# 1871| mu1871_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1871_1 -# 1871| r1871_7(bool) = Constant[0] : -# 1871| v1871_8(void) = ConditionalBranch : r1871_7 +# 35| Block 618 +# 35| r35_8639(glval) = VariableAddress[x617] : +# 35| mu35_8640(String) = Uninitialized[x617] : &:r35_8639 +# 35| r35_8641(glval) = FunctionAddress[String] : +# 35| v35_8642(void) = Call[String] : func:r35_8641, this:r35_8639 +# 35| mu35_8643(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8644(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8639 +# 35| r35_8645(glval) = VariableAddress[x617] : +# 35| r35_8646(glval) = FunctionAddress[~String] : +# 35| v35_8647(void) = Call[~String] : func:r35_8646, this:r35_8645 +# 35| mu35_8648(unknown) = ^CallSideEffect : ~m? +# 35| v35_8649(void) = ^IndirectReadSideEffect[-1] : &:r35_8645, ~m? +# 35| mu35_8650(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8645 +# 35| r35_8651(bool) = Constant[0] : +# 35| v35_8652(void) = ConditionalBranch : r35_8651 #-----| False -> Block 619 #-----| True (back edge) -> Block 618 -# 1873| Block 619 -# 1873| r1873_1(glval) = VariableAddress[x618] : -# 1873| mu1873_2(String) = Uninitialized[x618] : &:r1873_1 -# 1873| r1873_3(glval) = FunctionAddress[String] : -# 1873| v1873_4(void) = Call[String] : func:r1873_3, this:r1873_1 -# 1873| mu1873_5(unknown) = ^CallSideEffect : ~m? -# 1873| mu1873_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1873_1 -# 1874| r1874_1(glval) = VariableAddress[x618] : -# 1874| r1874_2(glval) = FunctionAddress[~String] : -# 1874| v1874_3(void) = Call[~String] : func:r1874_2, this:r1874_1 -# 1874| mu1874_4(unknown) = ^CallSideEffect : ~m? -# 1874| v1874_5(void) = ^IndirectReadSideEffect[-1] : &:r1874_1, ~m? -# 1874| mu1874_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1874_1 -# 1874| r1874_7(bool) = Constant[0] : -# 1874| v1874_8(void) = ConditionalBranch : r1874_7 +# 35| Block 619 +# 35| r35_8653(glval) = VariableAddress[x618] : +# 35| mu35_8654(String) = Uninitialized[x618] : &:r35_8653 +# 35| r35_8655(glval) = FunctionAddress[String] : +# 35| v35_8656(void) = Call[String] : func:r35_8655, this:r35_8653 +# 35| mu35_8657(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8658(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8653 +# 35| r35_8659(glval) = VariableAddress[x618] : +# 35| r35_8660(glval) = FunctionAddress[~String] : +# 35| v35_8661(void) = Call[~String] : func:r35_8660, this:r35_8659 +# 35| mu35_8662(unknown) = ^CallSideEffect : ~m? +# 35| v35_8663(void) = ^IndirectReadSideEffect[-1] : &:r35_8659, ~m? +# 35| mu35_8664(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8659 +# 35| r35_8665(bool) = Constant[0] : +# 35| v35_8666(void) = ConditionalBranch : r35_8665 #-----| False -> Block 620 #-----| True (back edge) -> Block 619 -# 1876| Block 620 -# 1876| r1876_1(glval) = VariableAddress[x619] : -# 1876| mu1876_2(String) = Uninitialized[x619] : &:r1876_1 -# 1876| r1876_3(glval) = FunctionAddress[String] : -# 1876| v1876_4(void) = Call[String] : func:r1876_3, this:r1876_1 -# 1876| mu1876_5(unknown) = ^CallSideEffect : ~m? -# 1876| mu1876_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1876_1 -# 1877| r1877_1(glval) = VariableAddress[x619] : -# 1877| r1877_2(glval) = FunctionAddress[~String] : -# 1877| v1877_3(void) = Call[~String] : func:r1877_2, this:r1877_1 -# 1877| mu1877_4(unknown) = ^CallSideEffect : ~m? -# 1877| v1877_5(void) = ^IndirectReadSideEffect[-1] : &:r1877_1, ~m? -# 1877| mu1877_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1877_1 -# 1877| r1877_7(bool) = Constant[0] : -# 1877| v1877_8(void) = ConditionalBranch : r1877_7 +# 35| Block 620 +# 35| r35_8667(glval) = VariableAddress[x619] : +# 35| mu35_8668(String) = Uninitialized[x619] : &:r35_8667 +# 35| r35_8669(glval) = FunctionAddress[String] : +# 35| v35_8670(void) = Call[String] : func:r35_8669, this:r35_8667 +# 35| mu35_8671(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8672(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8667 +# 35| r35_8673(glval) = VariableAddress[x619] : +# 35| r35_8674(glval) = FunctionAddress[~String] : +# 35| v35_8675(void) = Call[~String] : func:r35_8674, this:r35_8673 +# 35| mu35_8676(unknown) = ^CallSideEffect : ~m? +# 35| v35_8677(void) = ^IndirectReadSideEffect[-1] : &:r35_8673, ~m? +# 35| mu35_8678(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8673 +# 35| r35_8679(bool) = Constant[0] : +# 35| v35_8680(void) = ConditionalBranch : r35_8679 #-----| False -> Block 621 #-----| True (back edge) -> Block 620 -# 1879| Block 621 -# 1879| r1879_1(glval) = VariableAddress[x620] : -# 1879| mu1879_2(String) = Uninitialized[x620] : &:r1879_1 -# 1879| r1879_3(glval) = FunctionAddress[String] : -# 1879| v1879_4(void) = Call[String] : func:r1879_3, this:r1879_1 -# 1879| mu1879_5(unknown) = ^CallSideEffect : ~m? -# 1879| mu1879_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1879_1 -# 1880| r1880_1(glval) = VariableAddress[x620] : -# 1880| r1880_2(glval) = FunctionAddress[~String] : -# 1880| v1880_3(void) = Call[~String] : func:r1880_2, this:r1880_1 -# 1880| mu1880_4(unknown) = ^CallSideEffect : ~m? -# 1880| v1880_5(void) = ^IndirectReadSideEffect[-1] : &:r1880_1, ~m? -# 1880| mu1880_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1880_1 -# 1880| r1880_7(bool) = Constant[0] : -# 1880| v1880_8(void) = ConditionalBranch : r1880_7 +# 35| Block 621 +# 35| r35_8681(glval) = VariableAddress[x620] : +# 35| mu35_8682(String) = Uninitialized[x620] : &:r35_8681 +# 35| r35_8683(glval) = FunctionAddress[String] : +# 35| v35_8684(void) = Call[String] : func:r35_8683, this:r35_8681 +# 35| mu35_8685(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8686(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8681 +# 35| r35_8687(glval) = VariableAddress[x620] : +# 35| r35_8688(glval) = FunctionAddress[~String] : +# 35| v35_8689(void) = Call[~String] : func:r35_8688, this:r35_8687 +# 35| mu35_8690(unknown) = ^CallSideEffect : ~m? +# 35| v35_8691(void) = ^IndirectReadSideEffect[-1] : &:r35_8687, ~m? +# 35| mu35_8692(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8687 +# 35| r35_8693(bool) = Constant[0] : +# 35| v35_8694(void) = ConditionalBranch : r35_8693 #-----| False -> Block 622 #-----| True (back edge) -> Block 621 -# 1882| Block 622 -# 1882| r1882_1(glval) = VariableAddress[x621] : -# 1882| mu1882_2(String) = Uninitialized[x621] : &:r1882_1 -# 1882| r1882_3(glval) = FunctionAddress[String] : -# 1882| v1882_4(void) = Call[String] : func:r1882_3, this:r1882_1 -# 1882| mu1882_5(unknown) = ^CallSideEffect : ~m? -# 1882| mu1882_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1882_1 -# 1883| r1883_1(glval) = VariableAddress[x621] : -# 1883| r1883_2(glval) = FunctionAddress[~String] : -# 1883| v1883_3(void) = Call[~String] : func:r1883_2, this:r1883_1 -# 1883| mu1883_4(unknown) = ^CallSideEffect : ~m? -# 1883| v1883_5(void) = ^IndirectReadSideEffect[-1] : &:r1883_1, ~m? -# 1883| mu1883_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1883_1 -# 1883| r1883_7(bool) = Constant[0] : -# 1883| v1883_8(void) = ConditionalBranch : r1883_7 +# 35| Block 622 +# 35| r35_8695(glval) = VariableAddress[x621] : +# 35| mu35_8696(String) = Uninitialized[x621] : &:r35_8695 +# 35| r35_8697(glval) = FunctionAddress[String] : +# 35| v35_8698(void) = Call[String] : func:r35_8697, this:r35_8695 +# 35| mu35_8699(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8700(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8695 +# 35| r35_8701(glval) = VariableAddress[x621] : +# 35| r35_8702(glval) = FunctionAddress[~String] : +# 35| v35_8703(void) = Call[~String] : func:r35_8702, this:r35_8701 +# 35| mu35_8704(unknown) = ^CallSideEffect : ~m? +# 35| v35_8705(void) = ^IndirectReadSideEffect[-1] : &:r35_8701, ~m? +# 35| mu35_8706(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8701 +# 35| r35_8707(bool) = Constant[0] : +# 35| v35_8708(void) = ConditionalBranch : r35_8707 #-----| False -> Block 623 #-----| True (back edge) -> Block 622 -# 1885| Block 623 -# 1885| r1885_1(glval) = VariableAddress[x622] : -# 1885| mu1885_2(String) = Uninitialized[x622] : &:r1885_1 -# 1885| r1885_3(glval) = FunctionAddress[String] : -# 1885| v1885_4(void) = Call[String] : func:r1885_3, this:r1885_1 -# 1885| mu1885_5(unknown) = ^CallSideEffect : ~m? -# 1885| mu1885_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1885_1 -# 1886| r1886_1(glval) = VariableAddress[x622] : -# 1886| r1886_2(glval) = FunctionAddress[~String] : -# 1886| v1886_3(void) = Call[~String] : func:r1886_2, this:r1886_1 -# 1886| mu1886_4(unknown) = ^CallSideEffect : ~m? -# 1886| v1886_5(void) = ^IndirectReadSideEffect[-1] : &:r1886_1, ~m? -# 1886| mu1886_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1886_1 -# 1886| r1886_7(bool) = Constant[0] : -# 1886| v1886_8(void) = ConditionalBranch : r1886_7 +# 35| Block 623 +# 35| r35_8709(glval) = VariableAddress[x622] : +# 35| mu35_8710(String) = Uninitialized[x622] : &:r35_8709 +# 35| r35_8711(glval) = FunctionAddress[String] : +# 35| v35_8712(void) = Call[String] : func:r35_8711, this:r35_8709 +# 35| mu35_8713(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8714(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8709 +# 35| r35_8715(glval) = VariableAddress[x622] : +# 35| r35_8716(glval) = FunctionAddress[~String] : +# 35| v35_8717(void) = Call[~String] : func:r35_8716, this:r35_8715 +# 35| mu35_8718(unknown) = ^CallSideEffect : ~m? +# 35| v35_8719(void) = ^IndirectReadSideEffect[-1] : &:r35_8715, ~m? +# 35| mu35_8720(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8715 +# 35| r35_8721(bool) = Constant[0] : +# 35| v35_8722(void) = ConditionalBranch : r35_8721 #-----| False -> Block 624 #-----| True (back edge) -> Block 623 -# 1888| Block 624 -# 1888| r1888_1(glval) = VariableAddress[x623] : -# 1888| mu1888_2(String) = Uninitialized[x623] : &:r1888_1 -# 1888| r1888_3(glval) = FunctionAddress[String] : -# 1888| v1888_4(void) = Call[String] : func:r1888_3, this:r1888_1 -# 1888| mu1888_5(unknown) = ^CallSideEffect : ~m? -# 1888| mu1888_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1888_1 -# 1889| r1889_1(glval) = VariableAddress[x623] : -# 1889| r1889_2(glval) = FunctionAddress[~String] : -# 1889| v1889_3(void) = Call[~String] : func:r1889_2, this:r1889_1 -# 1889| mu1889_4(unknown) = ^CallSideEffect : ~m? -# 1889| v1889_5(void) = ^IndirectReadSideEffect[-1] : &:r1889_1, ~m? -# 1889| mu1889_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1889_1 -# 1889| r1889_7(bool) = Constant[0] : -# 1889| v1889_8(void) = ConditionalBranch : r1889_7 +# 35| Block 624 +# 35| r35_8723(glval) = VariableAddress[x623] : +# 35| mu35_8724(String) = Uninitialized[x623] : &:r35_8723 +# 35| r35_8725(glval) = FunctionAddress[String] : +# 35| v35_8726(void) = Call[String] : func:r35_8725, this:r35_8723 +# 35| mu35_8727(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8728(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8723 +# 35| r35_8729(glval) = VariableAddress[x623] : +# 35| r35_8730(glval) = FunctionAddress[~String] : +# 35| v35_8731(void) = Call[~String] : func:r35_8730, this:r35_8729 +# 35| mu35_8732(unknown) = ^CallSideEffect : ~m? +# 35| v35_8733(void) = ^IndirectReadSideEffect[-1] : &:r35_8729, ~m? +# 35| mu35_8734(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8729 +# 35| r35_8735(bool) = Constant[0] : +# 35| v35_8736(void) = ConditionalBranch : r35_8735 #-----| False -> Block 625 #-----| True (back edge) -> Block 624 -# 1891| Block 625 -# 1891| r1891_1(glval) = VariableAddress[x624] : -# 1891| mu1891_2(String) = Uninitialized[x624] : &:r1891_1 -# 1891| r1891_3(glval) = FunctionAddress[String] : -# 1891| v1891_4(void) = Call[String] : func:r1891_3, this:r1891_1 -# 1891| mu1891_5(unknown) = ^CallSideEffect : ~m? -# 1891| mu1891_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1891_1 -# 1892| r1892_1(glval) = VariableAddress[x624] : -# 1892| r1892_2(glval) = FunctionAddress[~String] : -# 1892| v1892_3(void) = Call[~String] : func:r1892_2, this:r1892_1 -# 1892| mu1892_4(unknown) = ^CallSideEffect : ~m? -# 1892| v1892_5(void) = ^IndirectReadSideEffect[-1] : &:r1892_1, ~m? -# 1892| mu1892_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1892_1 -# 1892| r1892_7(bool) = Constant[0] : -# 1892| v1892_8(void) = ConditionalBranch : r1892_7 +# 35| Block 625 +# 35| r35_8737(glval) = VariableAddress[x624] : +# 35| mu35_8738(String) = Uninitialized[x624] : &:r35_8737 +# 35| r35_8739(glval) = FunctionAddress[String] : +# 35| v35_8740(void) = Call[String] : func:r35_8739, this:r35_8737 +# 35| mu35_8741(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8742(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8737 +# 35| r35_8743(glval) = VariableAddress[x624] : +# 35| r35_8744(glval) = FunctionAddress[~String] : +# 35| v35_8745(void) = Call[~String] : func:r35_8744, this:r35_8743 +# 35| mu35_8746(unknown) = ^CallSideEffect : ~m? +# 35| v35_8747(void) = ^IndirectReadSideEffect[-1] : &:r35_8743, ~m? +# 35| mu35_8748(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8743 +# 35| r35_8749(bool) = Constant[0] : +# 35| v35_8750(void) = ConditionalBranch : r35_8749 #-----| False -> Block 626 #-----| True (back edge) -> Block 625 -# 1894| Block 626 -# 1894| r1894_1(glval) = VariableAddress[x625] : -# 1894| mu1894_2(String) = Uninitialized[x625] : &:r1894_1 -# 1894| r1894_3(glval) = FunctionAddress[String] : -# 1894| v1894_4(void) = Call[String] : func:r1894_3, this:r1894_1 -# 1894| mu1894_5(unknown) = ^CallSideEffect : ~m? -# 1894| mu1894_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1894_1 -# 1895| r1895_1(glval) = VariableAddress[x625] : -# 1895| r1895_2(glval) = FunctionAddress[~String] : -# 1895| v1895_3(void) = Call[~String] : func:r1895_2, this:r1895_1 -# 1895| mu1895_4(unknown) = ^CallSideEffect : ~m? -# 1895| v1895_5(void) = ^IndirectReadSideEffect[-1] : &:r1895_1, ~m? -# 1895| mu1895_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1895_1 -# 1895| r1895_7(bool) = Constant[0] : -# 1895| v1895_8(void) = ConditionalBranch : r1895_7 +# 35| Block 626 +# 35| r35_8751(glval) = VariableAddress[x625] : +# 35| mu35_8752(String) = Uninitialized[x625] : &:r35_8751 +# 35| r35_8753(glval) = FunctionAddress[String] : +# 35| v35_8754(void) = Call[String] : func:r35_8753, this:r35_8751 +# 35| mu35_8755(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8756(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8751 +# 35| r35_8757(glval) = VariableAddress[x625] : +# 35| r35_8758(glval) = FunctionAddress[~String] : +# 35| v35_8759(void) = Call[~String] : func:r35_8758, this:r35_8757 +# 35| mu35_8760(unknown) = ^CallSideEffect : ~m? +# 35| v35_8761(void) = ^IndirectReadSideEffect[-1] : &:r35_8757, ~m? +# 35| mu35_8762(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8757 +# 35| r35_8763(bool) = Constant[0] : +# 35| v35_8764(void) = ConditionalBranch : r35_8763 #-----| False -> Block 627 #-----| True (back edge) -> Block 626 -# 1897| Block 627 -# 1897| r1897_1(glval) = VariableAddress[x626] : -# 1897| mu1897_2(String) = Uninitialized[x626] : &:r1897_1 -# 1897| r1897_3(glval) = FunctionAddress[String] : -# 1897| v1897_4(void) = Call[String] : func:r1897_3, this:r1897_1 -# 1897| mu1897_5(unknown) = ^CallSideEffect : ~m? -# 1897| mu1897_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1897_1 -# 1898| r1898_1(glval) = VariableAddress[x626] : -# 1898| r1898_2(glval) = FunctionAddress[~String] : -# 1898| v1898_3(void) = Call[~String] : func:r1898_2, this:r1898_1 -# 1898| mu1898_4(unknown) = ^CallSideEffect : ~m? -# 1898| v1898_5(void) = ^IndirectReadSideEffect[-1] : &:r1898_1, ~m? -# 1898| mu1898_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1898_1 -# 1898| r1898_7(bool) = Constant[0] : -# 1898| v1898_8(void) = ConditionalBranch : r1898_7 +# 35| Block 627 +# 35| r35_8765(glval) = VariableAddress[x626] : +# 35| mu35_8766(String) = Uninitialized[x626] : &:r35_8765 +# 35| r35_8767(glval) = FunctionAddress[String] : +# 35| v35_8768(void) = Call[String] : func:r35_8767, this:r35_8765 +# 35| mu35_8769(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8770(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8765 +# 35| r35_8771(glval) = VariableAddress[x626] : +# 35| r35_8772(glval) = FunctionAddress[~String] : +# 35| v35_8773(void) = Call[~String] : func:r35_8772, this:r35_8771 +# 35| mu35_8774(unknown) = ^CallSideEffect : ~m? +# 35| v35_8775(void) = ^IndirectReadSideEffect[-1] : &:r35_8771, ~m? +# 35| mu35_8776(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8771 +# 35| r35_8777(bool) = Constant[0] : +# 35| v35_8778(void) = ConditionalBranch : r35_8777 #-----| False -> Block 628 #-----| True (back edge) -> Block 627 -# 1900| Block 628 -# 1900| r1900_1(glval) = VariableAddress[x627] : -# 1900| mu1900_2(String) = Uninitialized[x627] : &:r1900_1 -# 1900| r1900_3(glval) = FunctionAddress[String] : -# 1900| v1900_4(void) = Call[String] : func:r1900_3, this:r1900_1 -# 1900| mu1900_5(unknown) = ^CallSideEffect : ~m? -# 1900| mu1900_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1900_1 -# 1901| r1901_1(glval) = VariableAddress[x627] : -# 1901| r1901_2(glval) = FunctionAddress[~String] : -# 1901| v1901_3(void) = Call[~String] : func:r1901_2, this:r1901_1 -# 1901| mu1901_4(unknown) = ^CallSideEffect : ~m? -# 1901| v1901_5(void) = ^IndirectReadSideEffect[-1] : &:r1901_1, ~m? -# 1901| mu1901_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1901_1 -# 1901| r1901_7(bool) = Constant[0] : -# 1901| v1901_8(void) = ConditionalBranch : r1901_7 +# 35| Block 628 +# 35| r35_8779(glval) = VariableAddress[x627] : +# 35| mu35_8780(String) = Uninitialized[x627] : &:r35_8779 +# 35| r35_8781(glval) = FunctionAddress[String] : +# 35| v35_8782(void) = Call[String] : func:r35_8781, this:r35_8779 +# 35| mu35_8783(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8784(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8779 +# 35| r35_8785(glval) = VariableAddress[x627] : +# 35| r35_8786(glval) = FunctionAddress[~String] : +# 35| v35_8787(void) = Call[~String] : func:r35_8786, this:r35_8785 +# 35| mu35_8788(unknown) = ^CallSideEffect : ~m? +# 35| v35_8789(void) = ^IndirectReadSideEffect[-1] : &:r35_8785, ~m? +# 35| mu35_8790(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8785 +# 35| r35_8791(bool) = Constant[0] : +# 35| v35_8792(void) = ConditionalBranch : r35_8791 #-----| False -> Block 629 #-----| True (back edge) -> Block 628 -# 1903| Block 629 -# 1903| r1903_1(glval) = VariableAddress[x628] : -# 1903| mu1903_2(String) = Uninitialized[x628] : &:r1903_1 -# 1903| r1903_3(glval) = FunctionAddress[String] : -# 1903| v1903_4(void) = Call[String] : func:r1903_3, this:r1903_1 -# 1903| mu1903_5(unknown) = ^CallSideEffect : ~m? -# 1903| mu1903_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1903_1 -# 1904| r1904_1(glval) = VariableAddress[x628] : -# 1904| r1904_2(glval) = FunctionAddress[~String] : -# 1904| v1904_3(void) = Call[~String] : func:r1904_2, this:r1904_1 -# 1904| mu1904_4(unknown) = ^CallSideEffect : ~m? -# 1904| v1904_5(void) = ^IndirectReadSideEffect[-1] : &:r1904_1, ~m? -# 1904| mu1904_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1904_1 -# 1904| r1904_7(bool) = Constant[0] : -# 1904| v1904_8(void) = ConditionalBranch : r1904_7 +# 35| Block 629 +# 35| r35_8793(glval) = VariableAddress[x628] : +# 35| mu35_8794(String) = Uninitialized[x628] : &:r35_8793 +# 35| r35_8795(glval) = FunctionAddress[String] : +# 35| v35_8796(void) = Call[String] : func:r35_8795, this:r35_8793 +# 35| mu35_8797(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8798(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8793 +# 35| r35_8799(glval) = VariableAddress[x628] : +# 35| r35_8800(glval) = FunctionAddress[~String] : +# 35| v35_8801(void) = Call[~String] : func:r35_8800, this:r35_8799 +# 35| mu35_8802(unknown) = ^CallSideEffect : ~m? +# 35| v35_8803(void) = ^IndirectReadSideEffect[-1] : &:r35_8799, ~m? +# 35| mu35_8804(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8799 +# 35| r35_8805(bool) = Constant[0] : +# 35| v35_8806(void) = ConditionalBranch : r35_8805 #-----| False -> Block 630 #-----| True (back edge) -> Block 629 -# 1906| Block 630 -# 1906| r1906_1(glval) = VariableAddress[x629] : -# 1906| mu1906_2(String) = Uninitialized[x629] : &:r1906_1 -# 1906| r1906_3(glval) = FunctionAddress[String] : -# 1906| v1906_4(void) = Call[String] : func:r1906_3, this:r1906_1 -# 1906| mu1906_5(unknown) = ^CallSideEffect : ~m? -# 1906| mu1906_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1906_1 -# 1907| r1907_1(glval) = VariableAddress[x629] : -# 1907| r1907_2(glval) = FunctionAddress[~String] : -# 1907| v1907_3(void) = Call[~String] : func:r1907_2, this:r1907_1 -# 1907| mu1907_4(unknown) = ^CallSideEffect : ~m? -# 1907| v1907_5(void) = ^IndirectReadSideEffect[-1] : &:r1907_1, ~m? -# 1907| mu1907_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1907_1 -# 1907| r1907_7(bool) = Constant[0] : -# 1907| v1907_8(void) = ConditionalBranch : r1907_7 +# 35| Block 630 +# 35| r35_8807(glval) = VariableAddress[x629] : +# 35| mu35_8808(String) = Uninitialized[x629] : &:r35_8807 +# 35| r35_8809(glval) = FunctionAddress[String] : +# 35| v35_8810(void) = Call[String] : func:r35_8809, this:r35_8807 +# 35| mu35_8811(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8812(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8807 +# 35| r35_8813(glval) = VariableAddress[x629] : +# 35| r35_8814(glval) = FunctionAddress[~String] : +# 35| v35_8815(void) = Call[~String] : func:r35_8814, this:r35_8813 +# 35| mu35_8816(unknown) = ^CallSideEffect : ~m? +# 35| v35_8817(void) = ^IndirectReadSideEffect[-1] : &:r35_8813, ~m? +# 35| mu35_8818(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8813 +# 35| r35_8819(bool) = Constant[0] : +# 35| v35_8820(void) = ConditionalBranch : r35_8819 #-----| False -> Block 631 #-----| True (back edge) -> Block 630 -# 1909| Block 631 -# 1909| r1909_1(glval) = VariableAddress[x630] : -# 1909| mu1909_2(String) = Uninitialized[x630] : &:r1909_1 -# 1909| r1909_3(glval) = FunctionAddress[String] : -# 1909| v1909_4(void) = Call[String] : func:r1909_3, this:r1909_1 -# 1909| mu1909_5(unknown) = ^CallSideEffect : ~m? -# 1909| mu1909_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1909_1 -# 1910| r1910_1(glval) = VariableAddress[x630] : -# 1910| r1910_2(glval) = FunctionAddress[~String] : -# 1910| v1910_3(void) = Call[~String] : func:r1910_2, this:r1910_1 -# 1910| mu1910_4(unknown) = ^CallSideEffect : ~m? -# 1910| v1910_5(void) = ^IndirectReadSideEffect[-1] : &:r1910_1, ~m? -# 1910| mu1910_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1910_1 -# 1910| r1910_7(bool) = Constant[0] : -# 1910| v1910_8(void) = ConditionalBranch : r1910_7 +# 35| Block 631 +# 35| r35_8821(glval) = VariableAddress[x630] : +# 35| mu35_8822(String) = Uninitialized[x630] : &:r35_8821 +# 35| r35_8823(glval) = FunctionAddress[String] : +# 35| v35_8824(void) = Call[String] : func:r35_8823, this:r35_8821 +# 35| mu35_8825(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8826(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8821 +# 35| r35_8827(glval) = VariableAddress[x630] : +# 35| r35_8828(glval) = FunctionAddress[~String] : +# 35| v35_8829(void) = Call[~String] : func:r35_8828, this:r35_8827 +# 35| mu35_8830(unknown) = ^CallSideEffect : ~m? +# 35| v35_8831(void) = ^IndirectReadSideEffect[-1] : &:r35_8827, ~m? +# 35| mu35_8832(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8827 +# 35| r35_8833(bool) = Constant[0] : +# 35| v35_8834(void) = ConditionalBranch : r35_8833 #-----| False -> Block 632 #-----| True (back edge) -> Block 631 -# 1912| Block 632 -# 1912| r1912_1(glval) = VariableAddress[x631] : -# 1912| mu1912_2(String) = Uninitialized[x631] : &:r1912_1 -# 1912| r1912_3(glval) = FunctionAddress[String] : -# 1912| v1912_4(void) = Call[String] : func:r1912_3, this:r1912_1 -# 1912| mu1912_5(unknown) = ^CallSideEffect : ~m? -# 1912| mu1912_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1912_1 -# 1913| r1913_1(glval) = VariableAddress[x631] : -# 1913| r1913_2(glval) = FunctionAddress[~String] : -# 1913| v1913_3(void) = Call[~String] : func:r1913_2, this:r1913_1 -# 1913| mu1913_4(unknown) = ^CallSideEffect : ~m? -# 1913| v1913_5(void) = ^IndirectReadSideEffect[-1] : &:r1913_1, ~m? -# 1913| mu1913_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1913_1 -# 1913| r1913_7(bool) = Constant[0] : -# 1913| v1913_8(void) = ConditionalBranch : r1913_7 +# 35| Block 632 +# 35| r35_8835(glval) = VariableAddress[x631] : +# 35| mu35_8836(String) = Uninitialized[x631] : &:r35_8835 +# 35| r35_8837(glval) = FunctionAddress[String] : +# 35| v35_8838(void) = Call[String] : func:r35_8837, this:r35_8835 +# 35| mu35_8839(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8840(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8835 +# 35| r35_8841(glval) = VariableAddress[x631] : +# 35| r35_8842(glval) = FunctionAddress[~String] : +# 35| v35_8843(void) = Call[~String] : func:r35_8842, this:r35_8841 +# 35| mu35_8844(unknown) = ^CallSideEffect : ~m? +# 35| v35_8845(void) = ^IndirectReadSideEffect[-1] : &:r35_8841, ~m? +# 35| mu35_8846(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8841 +# 35| r35_8847(bool) = Constant[0] : +# 35| v35_8848(void) = ConditionalBranch : r35_8847 #-----| False -> Block 633 #-----| True (back edge) -> Block 632 -# 1915| Block 633 -# 1915| r1915_1(glval) = VariableAddress[x632] : -# 1915| mu1915_2(String) = Uninitialized[x632] : &:r1915_1 -# 1915| r1915_3(glval) = FunctionAddress[String] : -# 1915| v1915_4(void) = Call[String] : func:r1915_3, this:r1915_1 -# 1915| mu1915_5(unknown) = ^CallSideEffect : ~m? -# 1915| mu1915_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1915_1 -# 1916| r1916_1(glval) = VariableAddress[x632] : -# 1916| r1916_2(glval) = FunctionAddress[~String] : -# 1916| v1916_3(void) = Call[~String] : func:r1916_2, this:r1916_1 -# 1916| mu1916_4(unknown) = ^CallSideEffect : ~m? -# 1916| v1916_5(void) = ^IndirectReadSideEffect[-1] : &:r1916_1, ~m? -# 1916| mu1916_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1916_1 -# 1916| r1916_7(bool) = Constant[0] : -# 1916| v1916_8(void) = ConditionalBranch : r1916_7 +# 35| Block 633 +# 35| r35_8849(glval) = VariableAddress[x632] : +# 35| mu35_8850(String) = Uninitialized[x632] : &:r35_8849 +# 35| r35_8851(glval) = FunctionAddress[String] : +# 35| v35_8852(void) = Call[String] : func:r35_8851, this:r35_8849 +# 35| mu35_8853(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8854(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8849 +# 35| r35_8855(glval) = VariableAddress[x632] : +# 35| r35_8856(glval) = FunctionAddress[~String] : +# 35| v35_8857(void) = Call[~String] : func:r35_8856, this:r35_8855 +# 35| mu35_8858(unknown) = ^CallSideEffect : ~m? +# 35| v35_8859(void) = ^IndirectReadSideEffect[-1] : &:r35_8855, ~m? +# 35| mu35_8860(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8855 +# 35| r35_8861(bool) = Constant[0] : +# 35| v35_8862(void) = ConditionalBranch : r35_8861 #-----| False -> Block 634 #-----| True (back edge) -> Block 633 -# 1918| Block 634 -# 1918| r1918_1(glval) = VariableAddress[x633] : -# 1918| mu1918_2(String) = Uninitialized[x633] : &:r1918_1 -# 1918| r1918_3(glval) = FunctionAddress[String] : -# 1918| v1918_4(void) = Call[String] : func:r1918_3, this:r1918_1 -# 1918| mu1918_5(unknown) = ^CallSideEffect : ~m? -# 1918| mu1918_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1918_1 -# 1919| r1919_1(glval) = VariableAddress[x633] : -# 1919| r1919_2(glval) = FunctionAddress[~String] : -# 1919| v1919_3(void) = Call[~String] : func:r1919_2, this:r1919_1 -# 1919| mu1919_4(unknown) = ^CallSideEffect : ~m? -# 1919| v1919_5(void) = ^IndirectReadSideEffect[-1] : &:r1919_1, ~m? -# 1919| mu1919_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1919_1 -# 1919| r1919_7(bool) = Constant[0] : -# 1919| v1919_8(void) = ConditionalBranch : r1919_7 +# 35| Block 634 +# 35| r35_8863(glval) = VariableAddress[x633] : +# 35| mu35_8864(String) = Uninitialized[x633] : &:r35_8863 +# 35| r35_8865(glval) = FunctionAddress[String] : +# 35| v35_8866(void) = Call[String] : func:r35_8865, this:r35_8863 +# 35| mu35_8867(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8868(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8863 +# 35| r35_8869(glval) = VariableAddress[x633] : +# 35| r35_8870(glval) = FunctionAddress[~String] : +# 35| v35_8871(void) = Call[~String] : func:r35_8870, this:r35_8869 +# 35| mu35_8872(unknown) = ^CallSideEffect : ~m? +# 35| v35_8873(void) = ^IndirectReadSideEffect[-1] : &:r35_8869, ~m? +# 35| mu35_8874(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8869 +# 35| r35_8875(bool) = Constant[0] : +# 35| v35_8876(void) = ConditionalBranch : r35_8875 #-----| False -> Block 635 #-----| True (back edge) -> Block 634 -# 1921| Block 635 -# 1921| r1921_1(glval) = VariableAddress[x634] : -# 1921| mu1921_2(String) = Uninitialized[x634] : &:r1921_1 -# 1921| r1921_3(glval) = FunctionAddress[String] : -# 1921| v1921_4(void) = Call[String] : func:r1921_3, this:r1921_1 -# 1921| mu1921_5(unknown) = ^CallSideEffect : ~m? -# 1921| mu1921_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1921_1 -# 1922| r1922_1(glval) = VariableAddress[x634] : -# 1922| r1922_2(glval) = FunctionAddress[~String] : -# 1922| v1922_3(void) = Call[~String] : func:r1922_2, this:r1922_1 -# 1922| mu1922_4(unknown) = ^CallSideEffect : ~m? -# 1922| v1922_5(void) = ^IndirectReadSideEffect[-1] : &:r1922_1, ~m? -# 1922| mu1922_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1922_1 -# 1922| r1922_7(bool) = Constant[0] : -# 1922| v1922_8(void) = ConditionalBranch : r1922_7 +# 35| Block 635 +# 35| r35_8877(glval) = VariableAddress[x634] : +# 35| mu35_8878(String) = Uninitialized[x634] : &:r35_8877 +# 35| r35_8879(glval) = FunctionAddress[String] : +# 35| v35_8880(void) = Call[String] : func:r35_8879, this:r35_8877 +# 35| mu35_8881(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8882(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8877 +# 35| r35_8883(glval) = VariableAddress[x634] : +# 35| r35_8884(glval) = FunctionAddress[~String] : +# 35| v35_8885(void) = Call[~String] : func:r35_8884, this:r35_8883 +# 35| mu35_8886(unknown) = ^CallSideEffect : ~m? +# 35| v35_8887(void) = ^IndirectReadSideEffect[-1] : &:r35_8883, ~m? +# 35| mu35_8888(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8883 +# 35| r35_8889(bool) = Constant[0] : +# 35| v35_8890(void) = ConditionalBranch : r35_8889 #-----| False -> Block 636 #-----| True (back edge) -> Block 635 -# 1924| Block 636 -# 1924| r1924_1(glval) = VariableAddress[x635] : -# 1924| mu1924_2(String) = Uninitialized[x635] : &:r1924_1 -# 1924| r1924_3(glval) = FunctionAddress[String] : -# 1924| v1924_4(void) = Call[String] : func:r1924_3, this:r1924_1 -# 1924| mu1924_5(unknown) = ^CallSideEffect : ~m? -# 1924| mu1924_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1924_1 -# 1925| r1925_1(glval) = VariableAddress[x635] : -# 1925| r1925_2(glval) = FunctionAddress[~String] : -# 1925| v1925_3(void) = Call[~String] : func:r1925_2, this:r1925_1 -# 1925| mu1925_4(unknown) = ^CallSideEffect : ~m? -# 1925| v1925_5(void) = ^IndirectReadSideEffect[-1] : &:r1925_1, ~m? -# 1925| mu1925_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1925_1 -# 1925| r1925_7(bool) = Constant[0] : -# 1925| v1925_8(void) = ConditionalBranch : r1925_7 +# 35| Block 636 +# 35| r35_8891(glval) = VariableAddress[x635] : +# 35| mu35_8892(String) = Uninitialized[x635] : &:r35_8891 +# 35| r35_8893(glval) = FunctionAddress[String] : +# 35| v35_8894(void) = Call[String] : func:r35_8893, this:r35_8891 +# 35| mu35_8895(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8896(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8891 +# 35| r35_8897(glval) = VariableAddress[x635] : +# 35| r35_8898(glval) = FunctionAddress[~String] : +# 35| v35_8899(void) = Call[~String] : func:r35_8898, this:r35_8897 +# 35| mu35_8900(unknown) = ^CallSideEffect : ~m? +# 35| v35_8901(void) = ^IndirectReadSideEffect[-1] : &:r35_8897, ~m? +# 35| mu35_8902(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8897 +# 35| r35_8903(bool) = Constant[0] : +# 35| v35_8904(void) = ConditionalBranch : r35_8903 #-----| False -> Block 637 #-----| True (back edge) -> Block 636 -# 1927| Block 637 -# 1927| r1927_1(glval) = VariableAddress[x636] : -# 1927| mu1927_2(String) = Uninitialized[x636] : &:r1927_1 -# 1927| r1927_3(glval) = FunctionAddress[String] : -# 1927| v1927_4(void) = Call[String] : func:r1927_3, this:r1927_1 -# 1927| mu1927_5(unknown) = ^CallSideEffect : ~m? -# 1927| mu1927_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1927_1 -# 1928| r1928_1(glval) = VariableAddress[x636] : -# 1928| r1928_2(glval) = FunctionAddress[~String] : -# 1928| v1928_3(void) = Call[~String] : func:r1928_2, this:r1928_1 -# 1928| mu1928_4(unknown) = ^CallSideEffect : ~m? -# 1928| v1928_5(void) = ^IndirectReadSideEffect[-1] : &:r1928_1, ~m? -# 1928| mu1928_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1928_1 -# 1928| r1928_7(bool) = Constant[0] : -# 1928| v1928_8(void) = ConditionalBranch : r1928_7 +# 35| Block 637 +# 35| r35_8905(glval) = VariableAddress[x636] : +# 35| mu35_8906(String) = Uninitialized[x636] : &:r35_8905 +# 35| r35_8907(glval) = FunctionAddress[String] : +# 35| v35_8908(void) = Call[String] : func:r35_8907, this:r35_8905 +# 35| mu35_8909(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8910(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8905 +# 35| r35_8911(glval) = VariableAddress[x636] : +# 35| r35_8912(glval) = FunctionAddress[~String] : +# 35| v35_8913(void) = Call[~String] : func:r35_8912, this:r35_8911 +# 35| mu35_8914(unknown) = ^CallSideEffect : ~m? +# 35| v35_8915(void) = ^IndirectReadSideEffect[-1] : &:r35_8911, ~m? +# 35| mu35_8916(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8911 +# 35| r35_8917(bool) = Constant[0] : +# 35| v35_8918(void) = ConditionalBranch : r35_8917 #-----| False -> Block 638 #-----| True (back edge) -> Block 637 -# 1930| Block 638 -# 1930| r1930_1(glval) = VariableAddress[x637] : -# 1930| mu1930_2(String) = Uninitialized[x637] : &:r1930_1 -# 1930| r1930_3(glval) = FunctionAddress[String] : -# 1930| v1930_4(void) = Call[String] : func:r1930_3, this:r1930_1 -# 1930| mu1930_5(unknown) = ^CallSideEffect : ~m? -# 1930| mu1930_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1930_1 -# 1931| r1931_1(glval) = VariableAddress[x637] : -# 1931| r1931_2(glval) = FunctionAddress[~String] : -# 1931| v1931_3(void) = Call[~String] : func:r1931_2, this:r1931_1 -# 1931| mu1931_4(unknown) = ^CallSideEffect : ~m? -# 1931| v1931_5(void) = ^IndirectReadSideEffect[-1] : &:r1931_1, ~m? -# 1931| mu1931_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1931_1 -# 1931| r1931_7(bool) = Constant[0] : -# 1931| v1931_8(void) = ConditionalBranch : r1931_7 +# 35| Block 638 +# 35| r35_8919(glval) = VariableAddress[x637] : +# 35| mu35_8920(String) = Uninitialized[x637] : &:r35_8919 +# 35| r35_8921(glval) = FunctionAddress[String] : +# 35| v35_8922(void) = Call[String] : func:r35_8921, this:r35_8919 +# 35| mu35_8923(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8924(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8919 +# 35| r35_8925(glval) = VariableAddress[x637] : +# 35| r35_8926(glval) = FunctionAddress[~String] : +# 35| v35_8927(void) = Call[~String] : func:r35_8926, this:r35_8925 +# 35| mu35_8928(unknown) = ^CallSideEffect : ~m? +# 35| v35_8929(void) = ^IndirectReadSideEffect[-1] : &:r35_8925, ~m? +# 35| mu35_8930(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8925 +# 35| r35_8931(bool) = Constant[0] : +# 35| v35_8932(void) = ConditionalBranch : r35_8931 #-----| False -> Block 639 #-----| True (back edge) -> Block 638 -# 1933| Block 639 -# 1933| r1933_1(glval) = VariableAddress[x638] : -# 1933| mu1933_2(String) = Uninitialized[x638] : &:r1933_1 -# 1933| r1933_3(glval) = FunctionAddress[String] : -# 1933| v1933_4(void) = Call[String] : func:r1933_3, this:r1933_1 -# 1933| mu1933_5(unknown) = ^CallSideEffect : ~m? -# 1933| mu1933_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1933_1 -# 1934| r1934_1(glval) = VariableAddress[x638] : -# 1934| r1934_2(glval) = FunctionAddress[~String] : -# 1934| v1934_3(void) = Call[~String] : func:r1934_2, this:r1934_1 -# 1934| mu1934_4(unknown) = ^CallSideEffect : ~m? -# 1934| v1934_5(void) = ^IndirectReadSideEffect[-1] : &:r1934_1, ~m? -# 1934| mu1934_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1934_1 -# 1934| r1934_7(bool) = Constant[0] : -# 1934| v1934_8(void) = ConditionalBranch : r1934_7 +# 35| Block 639 +# 35| r35_8933(glval) = VariableAddress[x638] : +# 35| mu35_8934(String) = Uninitialized[x638] : &:r35_8933 +# 35| r35_8935(glval) = FunctionAddress[String] : +# 35| v35_8936(void) = Call[String] : func:r35_8935, this:r35_8933 +# 35| mu35_8937(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8938(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8933 +# 35| r35_8939(glval) = VariableAddress[x638] : +# 35| r35_8940(glval) = FunctionAddress[~String] : +# 35| v35_8941(void) = Call[~String] : func:r35_8940, this:r35_8939 +# 35| mu35_8942(unknown) = ^CallSideEffect : ~m? +# 35| v35_8943(void) = ^IndirectReadSideEffect[-1] : &:r35_8939, ~m? +# 35| mu35_8944(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8939 +# 35| r35_8945(bool) = Constant[0] : +# 35| v35_8946(void) = ConditionalBranch : r35_8945 #-----| False -> Block 640 #-----| True (back edge) -> Block 639 -# 1936| Block 640 -# 1936| r1936_1(glval) = VariableAddress[x639] : -# 1936| mu1936_2(String) = Uninitialized[x639] : &:r1936_1 -# 1936| r1936_3(glval) = FunctionAddress[String] : -# 1936| v1936_4(void) = Call[String] : func:r1936_3, this:r1936_1 -# 1936| mu1936_5(unknown) = ^CallSideEffect : ~m? -# 1936| mu1936_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1936_1 -# 1937| r1937_1(glval) = VariableAddress[x639] : -# 1937| r1937_2(glval) = FunctionAddress[~String] : -# 1937| v1937_3(void) = Call[~String] : func:r1937_2, this:r1937_1 -# 1937| mu1937_4(unknown) = ^CallSideEffect : ~m? -# 1937| v1937_5(void) = ^IndirectReadSideEffect[-1] : &:r1937_1, ~m? -# 1937| mu1937_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1937_1 -# 1937| r1937_7(bool) = Constant[0] : -# 1937| v1937_8(void) = ConditionalBranch : r1937_7 +# 35| Block 640 +# 35| r35_8947(glval) = VariableAddress[x639] : +# 35| mu35_8948(String) = Uninitialized[x639] : &:r35_8947 +# 35| r35_8949(glval) = FunctionAddress[String] : +# 35| v35_8950(void) = Call[String] : func:r35_8949, this:r35_8947 +# 35| mu35_8951(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8952(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8947 +# 35| r35_8953(glval) = VariableAddress[x639] : +# 35| r35_8954(glval) = FunctionAddress[~String] : +# 35| v35_8955(void) = Call[~String] : func:r35_8954, this:r35_8953 +# 35| mu35_8956(unknown) = ^CallSideEffect : ~m? +# 35| v35_8957(void) = ^IndirectReadSideEffect[-1] : &:r35_8953, ~m? +# 35| mu35_8958(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8953 +# 35| r35_8959(bool) = Constant[0] : +# 35| v35_8960(void) = ConditionalBranch : r35_8959 #-----| False -> Block 641 #-----| True (back edge) -> Block 640 -# 1939| Block 641 -# 1939| r1939_1(glval) = VariableAddress[x640] : -# 1939| mu1939_2(String) = Uninitialized[x640] : &:r1939_1 -# 1939| r1939_3(glval) = FunctionAddress[String] : -# 1939| v1939_4(void) = Call[String] : func:r1939_3, this:r1939_1 -# 1939| mu1939_5(unknown) = ^CallSideEffect : ~m? -# 1939| mu1939_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1939_1 -# 1940| r1940_1(glval) = VariableAddress[x640] : -# 1940| r1940_2(glval) = FunctionAddress[~String] : -# 1940| v1940_3(void) = Call[~String] : func:r1940_2, this:r1940_1 -# 1940| mu1940_4(unknown) = ^CallSideEffect : ~m? -# 1940| v1940_5(void) = ^IndirectReadSideEffect[-1] : &:r1940_1, ~m? -# 1940| mu1940_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1940_1 -# 1940| r1940_7(bool) = Constant[0] : -# 1940| v1940_8(void) = ConditionalBranch : r1940_7 +# 35| Block 641 +# 35| r35_8961(glval) = VariableAddress[x640] : +# 35| mu35_8962(String) = Uninitialized[x640] : &:r35_8961 +# 35| r35_8963(glval) = FunctionAddress[String] : +# 35| v35_8964(void) = Call[String] : func:r35_8963, this:r35_8961 +# 35| mu35_8965(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8966(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8961 +# 35| r35_8967(glval) = VariableAddress[x640] : +# 35| r35_8968(glval) = FunctionAddress[~String] : +# 35| v35_8969(void) = Call[~String] : func:r35_8968, this:r35_8967 +# 35| mu35_8970(unknown) = ^CallSideEffect : ~m? +# 35| v35_8971(void) = ^IndirectReadSideEffect[-1] : &:r35_8967, ~m? +# 35| mu35_8972(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8967 +# 35| r35_8973(bool) = Constant[0] : +# 35| v35_8974(void) = ConditionalBranch : r35_8973 #-----| False -> Block 642 #-----| True (back edge) -> Block 641 -# 1942| Block 642 -# 1942| r1942_1(glval) = VariableAddress[x641] : -# 1942| mu1942_2(String) = Uninitialized[x641] : &:r1942_1 -# 1942| r1942_3(glval) = FunctionAddress[String] : -# 1942| v1942_4(void) = Call[String] : func:r1942_3, this:r1942_1 -# 1942| mu1942_5(unknown) = ^CallSideEffect : ~m? -# 1942| mu1942_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1942_1 -# 1943| r1943_1(glval) = VariableAddress[x641] : -# 1943| r1943_2(glval) = FunctionAddress[~String] : -# 1943| v1943_3(void) = Call[~String] : func:r1943_2, this:r1943_1 -# 1943| mu1943_4(unknown) = ^CallSideEffect : ~m? -# 1943| v1943_5(void) = ^IndirectReadSideEffect[-1] : &:r1943_1, ~m? -# 1943| mu1943_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1943_1 -# 1943| r1943_7(bool) = Constant[0] : -# 1943| v1943_8(void) = ConditionalBranch : r1943_7 +# 35| Block 642 +# 35| r35_8975(glval) = VariableAddress[x641] : +# 35| mu35_8976(String) = Uninitialized[x641] : &:r35_8975 +# 35| r35_8977(glval) = FunctionAddress[String] : +# 35| v35_8978(void) = Call[String] : func:r35_8977, this:r35_8975 +# 35| mu35_8979(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8980(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8975 +# 35| r35_8981(glval) = VariableAddress[x641] : +# 35| r35_8982(glval) = FunctionAddress[~String] : +# 35| v35_8983(void) = Call[~String] : func:r35_8982, this:r35_8981 +# 35| mu35_8984(unknown) = ^CallSideEffect : ~m? +# 35| v35_8985(void) = ^IndirectReadSideEffect[-1] : &:r35_8981, ~m? +# 35| mu35_8986(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8981 +# 35| r35_8987(bool) = Constant[0] : +# 35| v35_8988(void) = ConditionalBranch : r35_8987 #-----| False -> Block 643 #-----| True (back edge) -> Block 642 -# 1945| Block 643 -# 1945| r1945_1(glval) = VariableAddress[x642] : -# 1945| mu1945_2(String) = Uninitialized[x642] : &:r1945_1 -# 1945| r1945_3(glval) = FunctionAddress[String] : -# 1945| v1945_4(void) = Call[String] : func:r1945_3, this:r1945_1 -# 1945| mu1945_5(unknown) = ^CallSideEffect : ~m? -# 1945| mu1945_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1945_1 -# 1946| r1946_1(glval) = VariableAddress[x642] : -# 1946| r1946_2(glval) = FunctionAddress[~String] : -# 1946| v1946_3(void) = Call[~String] : func:r1946_2, this:r1946_1 -# 1946| mu1946_4(unknown) = ^CallSideEffect : ~m? -# 1946| v1946_5(void) = ^IndirectReadSideEffect[-1] : &:r1946_1, ~m? -# 1946| mu1946_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1946_1 -# 1946| r1946_7(bool) = Constant[0] : -# 1946| v1946_8(void) = ConditionalBranch : r1946_7 +# 35| Block 643 +# 35| r35_8989(glval) = VariableAddress[x642] : +# 35| mu35_8990(String) = Uninitialized[x642] : &:r35_8989 +# 35| r35_8991(glval) = FunctionAddress[String] : +# 35| v35_8992(void) = Call[String] : func:r35_8991, this:r35_8989 +# 35| mu35_8993(unknown) = ^CallSideEffect : ~m? +# 35| mu35_8994(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8989 +# 35| r35_8995(glval) = VariableAddress[x642] : +# 35| r35_8996(glval) = FunctionAddress[~String] : +# 35| v35_8997(void) = Call[~String] : func:r35_8996, this:r35_8995 +# 35| mu35_8998(unknown) = ^CallSideEffect : ~m? +# 35| v35_8999(void) = ^IndirectReadSideEffect[-1] : &:r35_8995, ~m? +# 35| mu35_9000(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_8995 +# 35| r35_9001(bool) = Constant[0] : +# 35| v35_9002(void) = ConditionalBranch : r35_9001 #-----| False -> Block 644 #-----| True (back edge) -> Block 643 -# 1948| Block 644 -# 1948| r1948_1(glval) = VariableAddress[x643] : -# 1948| mu1948_2(String) = Uninitialized[x643] : &:r1948_1 -# 1948| r1948_3(glval) = FunctionAddress[String] : -# 1948| v1948_4(void) = Call[String] : func:r1948_3, this:r1948_1 -# 1948| mu1948_5(unknown) = ^CallSideEffect : ~m? -# 1948| mu1948_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1948_1 -# 1949| r1949_1(glval) = VariableAddress[x643] : -# 1949| r1949_2(glval) = FunctionAddress[~String] : -# 1949| v1949_3(void) = Call[~String] : func:r1949_2, this:r1949_1 -# 1949| mu1949_4(unknown) = ^CallSideEffect : ~m? -# 1949| v1949_5(void) = ^IndirectReadSideEffect[-1] : &:r1949_1, ~m? -# 1949| mu1949_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1949_1 -# 1949| r1949_7(bool) = Constant[0] : -# 1949| v1949_8(void) = ConditionalBranch : r1949_7 +# 35| Block 644 +# 35| r35_9003(glval) = VariableAddress[x643] : +# 35| mu35_9004(String) = Uninitialized[x643] : &:r35_9003 +# 35| r35_9005(glval) = FunctionAddress[String] : +# 35| v35_9006(void) = Call[String] : func:r35_9005, this:r35_9003 +# 35| mu35_9007(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9008(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9003 +# 35| r35_9009(glval) = VariableAddress[x643] : +# 35| r35_9010(glval) = FunctionAddress[~String] : +# 35| v35_9011(void) = Call[~String] : func:r35_9010, this:r35_9009 +# 35| mu35_9012(unknown) = ^CallSideEffect : ~m? +# 35| v35_9013(void) = ^IndirectReadSideEffect[-1] : &:r35_9009, ~m? +# 35| mu35_9014(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9009 +# 35| r35_9015(bool) = Constant[0] : +# 35| v35_9016(void) = ConditionalBranch : r35_9015 #-----| False -> Block 645 #-----| True (back edge) -> Block 644 -# 1951| Block 645 -# 1951| r1951_1(glval) = VariableAddress[x644] : -# 1951| mu1951_2(String) = Uninitialized[x644] : &:r1951_1 -# 1951| r1951_3(glval) = FunctionAddress[String] : -# 1951| v1951_4(void) = Call[String] : func:r1951_3, this:r1951_1 -# 1951| mu1951_5(unknown) = ^CallSideEffect : ~m? -# 1951| mu1951_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1951_1 -# 1952| r1952_1(glval) = VariableAddress[x644] : -# 1952| r1952_2(glval) = FunctionAddress[~String] : -# 1952| v1952_3(void) = Call[~String] : func:r1952_2, this:r1952_1 -# 1952| mu1952_4(unknown) = ^CallSideEffect : ~m? -# 1952| v1952_5(void) = ^IndirectReadSideEffect[-1] : &:r1952_1, ~m? -# 1952| mu1952_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1952_1 -# 1952| r1952_7(bool) = Constant[0] : -# 1952| v1952_8(void) = ConditionalBranch : r1952_7 +# 35| Block 645 +# 35| r35_9017(glval) = VariableAddress[x644] : +# 35| mu35_9018(String) = Uninitialized[x644] : &:r35_9017 +# 35| r35_9019(glval) = FunctionAddress[String] : +# 35| v35_9020(void) = Call[String] : func:r35_9019, this:r35_9017 +# 35| mu35_9021(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9022(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9017 +# 35| r35_9023(glval) = VariableAddress[x644] : +# 35| r35_9024(glval) = FunctionAddress[~String] : +# 35| v35_9025(void) = Call[~String] : func:r35_9024, this:r35_9023 +# 35| mu35_9026(unknown) = ^CallSideEffect : ~m? +# 35| v35_9027(void) = ^IndirectReadSideEffect[-1] : &:r35_9023, ~m? +# 35| mu35_9028(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9023 +# 35| r35_9029(bool) = Constant[0] : +# 35| v35_9030(void) = ConditionalBranch : r35_9029 #-----| False -> Block 646 #-----| True (back edge) -> Block 645 -# 1954| Block 646 -# 1954| r1954_1(glval) = VariableAddress[x645] : -# 1954| mu1954_2(String) = Uninitialized[x645] : &:r1954_1 -# 1954| r1954_3(glval) = FunctionAddress[String] : -# 1954| v1954_4(void) = Call[String] : func:r1954_3, this:r1954_1 -# 1954| mu1954_5(unknown) = ^CallSideEffect : ~m? -# 1954| mu1954_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1954_1 -# 1955| r1955_1(glval) = VariableAddress[x645] : -# 1955| r1955_2(glval) = FunctionAddress[~String] : -# 1955| v1955_3(void) = Call[~String] : func:r1955_2, this:r1955_1 -# 1955| mu1955_4(unknown) = ^CallSideEffect : ~m? -# 1955| v1955_5(void) = ^IndirectReadSideEffect[-1] : &:r1955_1, ~m? -# 1955| mu1955_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1955_1 -# 1955| r1955_7(bool) = Constant[0] : -# 1955| v1955_8(void) = ConditionalBranch : r1955_7 +# 35| Block 646 +# 35| r35_9031(glval) = VariableAddress[x645] : +# 35| mu35_9032(String) = Uninitialized[x645] : &:r35_9031 +# 35| r35_9033(glval) = FunctionAddress[String] : +# 35| v35_9034(void) = Call[String] : func:r35_9033, this:r35_9031 +# 35| mu35_9035(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9036(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9031 +# 35| r35_9037(glval) = VariableAddress[x645] : +# 35| r35_9038(glval) = FunctionAddress[~String] : +# 35| v35_9039(void) = Call[~String] : func:r35_9038, this:r35_9037 +# 35| mu35_9040(unknown) = ^CallSideEffect : ~m? +# 35| v35_9041(void) = ^IndirectReadSideEffect[-1] : &:r35_9037, ~m? +# 35| mu35_9042(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9037 +# 35| r35_9043(bool) = Constant[0] : +# 35| v35_9044(void) = ConditionalBranch : r35_9043 #-----| False -> Block 647 #-----| True (back edge) -> Block 646 -# 1957| Block 647 -# 1957| r1957_1(glval) = VariableAddress[x646] : -# 1957| mu1957_2(String) = Uninitialized[x646] : &:r1957_1 -# 1957| r1957_3(glval) = FunctionAddress[String] : -# 1957| v1957_4(void) = Call[String] : func:r1957_3, this:r1957_1 -# 1957| mu1957_5(unknown) = ^CallSideEffect : ~m? -# 1957| mu1957_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1957_1 -# 1958| r1958_1(glval) = VariableAddress[x646] : -# 1958| r1958_2(glval) = FunctionAddress[~String] : -# 1958| v1958_3(void) = Call[~String] : func:r1958_2, this:r1958_1 -# 1958| mu1958_4(unknown) = ^CallSideEffect : ~m? -# 1958| v1958_5(void) = ^IndirectReadSideEffect[-1] : &:r1958_1, ~m? -# 1958| mu1958_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1958_1 -# 1958| r1958_7(bool) = Constant[0] : -# 1958| v1958_8(void) = ConditionalBranch : r1958_7 +# 35| Block 647 +# 35| r35_9045(glval) = VariableAddress[x646] : +# 35| mu35_9046(String) = Uninitialized[x646] : &:r35_9045 +# 35| r35_9047(glval) = FunctionAddress[String] : +# 35| v35_9048(void) = Call[String] : func:r35_9047, this:r35_9045 +# 35| mu35_9049(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9050(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9045 +# 35| r35_9051(glval) = VariableAddress[x646] : +# 35| r35_9052(glval) = FunctionAddress[~String] : +# 35| v35_9053(void) = Call[~String] : func:r35_9052, this:r35_9051 +# 35| mu35_9054(unknown) = ^CallSideEffect : ~m? +# 35| v35_9055(void) = ^IndirectReadSideEffect[-1] : &:r35_9051, ~m? +# 35| mu35_9056(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9051 +# 35| r35_9057(bool) = Constant[0] : +# 35| v35_9058(void) = ConditionalBranch : r35_9057 #-----| False -> Block 648 #-----| True (back edge) -> Block 647 -# 1960| Block 648 -# 1960| r1960_1(glval) = VariableAddress[x647] : -# 1960| mu1960_2(String) = Uninitialized[x647] : &:r1960_1 -# 1960| r1960_3(glval) = FunctionAddress[String] : -# 1960| v1960_4(void) = Call[String] : func:r1960_3, this:r1960_1 -# 1960| mu1960_5(unknown) = ^CallSideEffect : ~m? -# 1960| mu1960_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1960_1 -# 1961| r1961_1(glval) = VariableAddress[x647] : -# 1961| r1961_2(glval) = FunctionAddress[~String] : -# 1961| v1961_3(void) = Call[~String] : func:r1961_2, this:r1961_1 -# 1961| mu1961_4(unknown) = ^CallSideEffect : ~m? -# 1961| v1961_5(void) = ^IndirectReadSideEffect[-1] : &:r1961_1, ~m? -# 1961| mu1961_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1961_1 -# 1961| r1961_7(bool) = Constant[0] : -# 1961| v1961_8(void) = ConditionalBranch : r1961_7 +# 35| Block 648 +# 35| r35_9059(glval) = VariableAddress[x647] : +# 35| mu35_9060(String) = Uninitialized[x647] : &:r35_9059 +# 35| r35_9061(glval) = FunctionAddress[String] : +# 35| v35_9062(void) = Call[String] : func:r35_9061, this:r35_9059 +# 35| mu35_9063(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9064(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9059 +# 35| r35_9065(glval) = VariableAddress[x647] : +# 35| r35_9066(glval) = FunctionAddress[~String] : +# 35| v35_9067(void) = Call[~String] : func:r35_9066, this:r35_9065 +# 35| mu35_9068(unknown) = ^CallSideEffect : ~m? +# 35| v35_9069(void) = ^IndirectReadSideEffect[-1] : &:r35_9065, ~m? +# 35| mu35_9070(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9065 +# 35| r35_9071(bool) = Constant[0] : +# 35| v35_9072(void) = ConditionalBranch : r35_9071 #-----| False -> Block 649 #-----| True (back edge) -> Block 648 -# 1963| Block 649 -# 1963| r1963_1(glval) = VariableAddress[x648] : -# 1963| mu1963_2(String) = Uninitialized[x648] : &:r1963_1 -# 1963| r1963_3(glval) = FunctionAddress[String] : -# 1963| v1963_4(void) = Call[String] : func:r1963_3, this:r1963_1 -# 1963| mu1963_5(unknown) = ^CallSideEffect : ~m? -# 1963| mu1963_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1963_1 -# 1964| r1964_1(glval) = VariableAddress[x648] : -# 1964| r1964_2(glval) = FunctionAddress[~String] : -# 1964| v1964_3(void) = Call[~String] : func:r1964_2, this:r1964_1 -# 1964| mu1964_4(unknown) = ^CallSideEffect : ~m? -# 1964| v1964_5(void) = ^IndirectReadSideEffect[-1] : &:r1964_1, ~m? -# 1964| mu1964_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1964_1 -# 1964| r1964_7(bool) = Constant[0] : -# 1964| v1964_8(void) = ConditionalBranch : r1964_7 +# 35| Block 649 +# 35| r35_9073(glval) = VariableAddress[x648] : +# 35| mu35_9074(String) = Uninitialized[x648] : &:r35_9073 +# 35| r35_9075(glval) = FunctionAddress[String] : +# 35| v35_9076(void) = Call[String] : func:r35_9075, this:r35_9073 +# 35| mu35_9077(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9078(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9073 +# 35| r35_9079(glval) = VariableAddress[x648] : +# 35| r35_9080(glval) = FunctionAddress[~String] : +# 35| v35_9081(void) = Call[~String] : func:r35_9080, this:r35_9079 +# 35| mu35_9082(unknown) = ^CallSideEffect : ~m? +# 35| v35_9083(void) = ^IndirectReadSideEffect[-1] : &:r35_9079, ~m? +# 35| mu35_9084(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9079 +# 35| r35_9085(bool) = Constant[0] : +# 35| v35_9086(void) = ConditionalBranch : r35_9085 #-----| False -> Block 650 #-----| True (back edge) -> Block 649 -# 1966| Block 650 -# 1966| r1966_1(glval) = VariableAddress[x649] : -# 1966| mu1966_2(String) = Uninitialized[x649] : &:r1966_1 -# 1966| r1966_3(glval) = FunctionAddress[String] : -# 1966| v1966_4(void) = Call[String] : func:r1966_3, this:r1966_1 -# 1966| mu1966_5(unknown) = ^CallSideEffect : ~m? -# 1966| mu1966_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1966_1 -# 1967| r1967_1(glval) = VariableAddress[x649] : -# 1967| r1967_2(glval) = FunctionAddress[~String] : -# 1967| v1967_3(void) = Call[~String] : func:r1967_2, this:r1967_1 -# 1967| mu1967_4(unknown) = ^CallSideEffect : ~m? -# 1967| v1967_5(void) = ^IndirectReadSideEffect[-1] : &:r1967_1, ~m? -# 1967| mu1967_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1967_1 -# 1967| r1967_7(bool) = Constant[0] : -# 1967| v1967_8(void) = ConditionalBranch : r1967_7 +# 35| Block 650 +# 35| r35_9087(glval) = VariableAddress[x649] : +# 35| mu35_9088(String) = Uninitialized[x649] : &:r35_9087 +# 35| r35_9089(glval) = FunctionAddress[String] : +# 35| v35_9090(void) = Call[String] : func:r35_9089, this:r35_9087 +# 35| mu35_9091(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9092(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9087 +# 35| r35_9093(glval) = VariableAddress[x649] : +# 35| r35_9094(glval) = FunctionAddress[~String] : +# 35| v35_9095(void) = Call[~String] : func:r35_9094, this:r35_9093 +# 35| mu35_9096(unknown) = ^CallSideEffect : ~m? +# 35| v35_9097(void) = ^IndirectReadSideEffect[-1] : &:r35_9093, ~m? +# 35| mu35_9098(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9093 +# 35| r35_9099(bool) = Constant[0] : +# 35| v35_9100(void) = ConditionalBranch : r35_9099 #-----| False -> Block 651 #-----| True (back edge) -> Block 650 -# 1969| Block 651 -# 1969| r1969_1(glval) = VariableAddress[x650] : -# 1969| mu1969_2(String) = Uninitialized[x650] : &:r1969_1 -# 1969| r1969_3(glval) = FunctionAddress[String] : -# 1969| v1969_4(void) = Call[String] : func:r1969_3, this:r1969_1 -# 1969| mu1969_5(unknown) = ^CallSideEffect : ~m? -# 1969| mu1969_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1969_1 -# 1970| r1970_1(glval) = VariableAddress[x650] : -# 1970| r1970_2(glval) = FunctionAddress[~String] : -# 1970| v1970_3(void) = Call[~String] : func:r1970_2, this:r1970_1 -# 1970| mu1970_4(unknown) = ^CallSideEffect : ~m? -# 1970| v1970_5(void) = ^IndirectReadSideEffect[-1] : &:r1970_1, ~m? -# 1970| mu1970_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1970_1 -# 1970| r1970_7(bool) = Constant[0] : -# 1970| v1970_8(void) = ConditionalBranch : r1970_7 +# 35| Block 651 +# 35| r35_9101(glval) = VariableAddress[x650] : +# 35| mu35_9102(String) = Uninitialized[x650] : &:r35_9101 +# 35| r35_9103(glval) = FunctionAddress[String] : +# 35| v35_9104(void) = Call[String] : func:r35_9103, this:r35_9101 +# 35| mu35_9105(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9106(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9101 +# 35| r35_9107(glval) = VariableAddress[x650] : +# 35| r35_9108(glval) = FunctionAddress[~String] : +# 35| v35_9109(void) = Call[~String] : func:r35_9108, this:r35_9107 +# 35| mu35_9110(unknown) = ^CallSideEffect : ~m? +# 35| v35_9111(void) = ^IndirectReadSideEffect[-1] : &:r35_9107, ~m? +# 35| mu35_9112(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9107 +# 35| r35_9113(bool) = Constant[0] : +# 35| v35_9114(void) = ConditionalBranch : r35_9113 #-----| False -> Block 652 #-----| True (back edge) -> Block 651 -# 1972| Block 652 -# 1972| r1972_1(glval) = VariableAddress[x651] : -# 1972| mu1972_2(String) = Uninitialized[x651] : &:r1972_1 -# 1972| r1972_3(glval) = FunctionAddress[String] : -# 1972| v1972_4(void) = Call[String] : func:r1972_3, this:r1972_1 -# 1972| mu1972_5(unknown) = ^CallSideEffect : ~m? -# 1972| mu1972_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1972_1 -# 1973| r1973_1(glval) = VariableAddress[x651] : -# 1973| r1973_2(glval) = FunctionAddress[~String] : -# 1973| v1973_3(void) = Call[~String] : func:r1973_2, this:r1973_1 -# 1973| mu1973_4(unknown) = ^CallSideEffect : ~m? -# 1973| v1973_5(void) = ^IndirectReadSideEffect[-1] : &:r1973_1, ~m? -# 1973| mu1973_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1973_1 -# 1973| r1973_7(bool) = Constant[0] : -# 1973| v1973_8(void) = ConditionalBranch : r1973_7 +# 35| Block 652 +# 35| r35_9115(glval) = VariableAddress[x651] : +# 35| mu35_9116(String) = Uninitialized[x651] : &:r35_9115 +# 35| r35_9117(glval) = FunctionAddress[String] : +# 35| v35_9118(void) = Call[String] : func:r35_9117, this:r35_9115 +# 35| mu35_9119(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9120(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9115 +# 35| r35_9121(glval) = VariableAddress[x651] : +# 35| r35_9122(glval) = FunctionAddress[~String] : +# 35| v35_9123(void) = Call[~String] : func:r35_9122, this:r35_9121 +# 35| mu35_9124(unknown) = ^CallSideEffect : ~m? +# 35| v35_9125(void) = ^IndirectReadSideEffect[-1] : &:r35_9121, ~m? +# 35| mu35_9126(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9121 +# 35| r35_9127(bool) = Constant[0] : +# 35| v35_9128(void) = ConditionalBranch : r35_9127 #-----| False -> Block 653 #-----| True (back edge) -> Block 652 -# 1975| Block 653 -# 1975| r1975_1(glval) = VariableAddress[x652] : -# 1975| mu1975_2(String) = Uninitialized[x652] : &:r1975_1 -# 1975| r1975_3(glval) = FunctionAddress[String] : -# 1975| v1975_4(void) = Call[String] : func:r1975_3, this:r1975_1 -# 1975| mu1975_5(unknown) = ^CallSideEffect : ~m? -# 1975| mu1975_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1975_1 -# 1976| r1976_1(glval) = VariableAddress[x652] : -# 1976| r1976_2(glval) = FunctionAddress[~String] : -# 1976| v1976_3(void) = Call[~String] : func:r1976_2, this:r1976_1 -# 1976| mu1976_4(unknown) = ^CallSideEffect : ~m? -# 1976| v1976_5(void) = ^IndirectReadSideEffect[-1] : &:r1976_1, ~m? -# 1976| mu1976_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1976_1 -# 1976| r1976_7(bool) = Constant[0] : -# 1976| v1976_8(void) = ConditionalBranch : r1976_7 +# 35| Block 653 +# 35| r35_9129(glval) = VariableAddress[x652] : +# 35| mu35_9130(String) = Uninitialized[x652] : &:r35_9129 +# 35| r35_9131(glval) = FunctionAddress[String] : +# 35| v35_9132(void) = Call[String] : func:r35_9131, this:r35_9129 +# 35| mu35_9133(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9134(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9129 +# 35| r35_9135(glval) = VariableAddress[x652] : +# 35| r35_9136(glval) = FunctionAddress[~String] : +# 35| v35_9137(void) = Call[~String] : func:r35_9136, this:r35_9135 +# 35| mu35_9138(unknown) = ^CallSideEffect : ~m? +# 35| v35_9139(void) = ^IndirectReadSideEffect[-1] : &:r35_9135, ~m? +# 35| mu35_9140(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9135 +# 35| r35_9141(bool) = Constant[0] : +# 35| v35_9142(void) = ConditionalBranch : r35_9141 #-----| False -> Block 654 #-----| True (back edge) -> Block 653 -# 1978| Block 654 -# 1978| r1978_1(glval) = VariableAddress[x653] : -# 1978| mu1978_2(String) = Uninitialized[x653] : &:r1978_1 -# 1978| r1978_3(glval) = FunctionAddress[String] : -# 1978| v1978_4(void) = Call[String] : func:r1978_3, this:r1978_1 -# 1978| mu1978_5(unknown) = ^CallSideEffect : ~m? -# 1978| mu1978_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1978_1 -# 1979| r1979_1(glval) = VariableAddress[x653] : -# 1979| r1979_2(glval) = FunctionAddress[~String] : -# 1979| v1979_3(void) = Call[~String] : func:r1979_2, this:r1979_1 -# 1979| mu1979_4(unknown) = ^CallSideEffect : ~m? -# 1979| v1979_5(void) = ^IndirectReadSideEffect[-1] : &:r1979_1, ~m? -# 1979| mu1979_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1979_1 -# 1979| r1979_7(bool) = Constant[0] : -# 1979| v1979_8(void) = ConditionalBranch : r1979_7 +# 35| Block 654 +# 35| r35_9143(glval) = VariableAddress[x653] : +# 35| mu35_9144(String) = Uninitialized[x653] : &:r35_9143 +# 35| r35_9145(glval) = FunctionAddress[String] : +# 35| v35_9146(void) = Call[String] : func:r35_9145, this:r35_9143 +# 35| mu35_9147(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9148(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9143 +# 35| r35_9149(glval) = VariableAddress[x653] : +# 35| r35_9150(glval) = FunctionAddress[~String] : +# 35| v35_9151(void) = Call[~String] : func:r35_9150, this:r35_9149 +# 35| mu35_9152(unknown) = ^CallSideEffect : ~m? +# 35| v35_9153(void) = ^IndirectReadSideEffect[-1] : &:r35_9149, ~m? +# 35| mu35_9154(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9149 +# 35| r35_9155(bool) = Constant[0] : +# 35| v35_9156(void) = ConditionalBranch : r35_9155 #-----| False -> Block 655 #-----| True (back edge) -> Block 654 -# 1981| Block 655 -# 1981| r1981_1(glval) = VariableAddress[x654] : -# 1981| mu1981_2(String) = Uninitialized[x654] : &:r1981_1 -# 1981| r1981_3(glval) = FunctionAddress[String] : -# 1981| v1981_4(void) = Call[String] : func:r1981_3, this:r1981_1 -# 1981| mu1981_5(unknown) = ^CallSideEffect : ~m? -# 1981| mu1981_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1981_1 -# 1982| r1982_1(glval) = VariableAddress[x654] : -# 1982| r1982_2(glval) = FunctionAddress[~String] : -# 1982| v1982_3(void) = Call[~String] : func:r1982_2, this:r1982_1 -# 1982| mu1982_4(unknown) = ^CallSideEffect : ~m? -# 1982| v1982_5(void) = ^IndirectReadSideEffect[-1] : &:r1982_1, ~m? -# 1982| mu1982_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1982_1 -# 1982| r1982_7(bool) = Constant[0] : -# 1982| v1982_8(void) = ConditionalBranch : r1982_7 +# 35| Block 655 +# 35| r35_9157(glval) = VariableAddress[x654] : +# 35| mu35_9158(String) = Uninitialized[x654] : &:r35_9157 +# 35| r35_9159(glval) = FunctionAddress[String] : +# 35| v35_9160(void) = Call[String] : func:r35_9159, this:r35_9157 +# 35| mu35_9161(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9162(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9157 +# 35| r35_9163(glval) = VariableAddress[x654] : +# 35| r35_9164(glval) = FunctionAddress[~String] : +# 35| v35_9165(void) = Call[~String] : func:r35_9164, this:r35_9163 +# 35| mu35_9166(unknown) = ^CallSideEffect : ~m? +# 35| v35_9167(void) = ^IndirectReadSideEffect[-1] : &:r35_9163, ~m? +# 35| mu35_9168(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9163 +# 35| r35_9169(bool) = Constant[0] : +# 35| v35_9170(void) = ConditionalBranch : r35_9169 #-----| False -> Block 656 #-----| True (back edge) -> Block 655 -# 1984| Block 656 -# 1984| r1984_1(glval) = VariableAddress[x655] : -# 1984| mu1984_2(String) = Uninitialized[x655] : &:r1984_1 -# 1984| r1984_3(glval) = FunctionAddress[String] : -# 1984| v1984_4(void) = Call[String] : func:r1984_3, this:r1984_1 -# 1984| mu1984_5(unknown) = ^CallSideEffect : ~m? -# 1984| mu1984_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1984_1 -# 1985| r1985_1(glval) = VariableAddress[x655] : -# 1985| r1985_2(glval) = FunctionAddress[~String] : -# 1985| v1985_3(void) = Call[~String] : func:r1985_2, this:r1985_1 -# 1985| mu1985_4(unknown) = ^CallSideEffect : ~m? -# 1985| v1985_5(void) = ^IndirectReadSideEffect[-1] : &:r1985_1, ~m? -# 1985| mu1985_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1985_1 -# 1985| r1985_7(bool) = Constant[0] : -# 1985| v1985_8(void) = ConditionalBranch : r1985_7 +# 35| Block 656 +# 35| r35_9171(glval) = VariableAddress[x655] : +# 35| mu35_9172(String) = Uninitialized[x655] : &:r35_9171 +# 35| r35_9173(glval) = FunctionAddress[String] : +# 35| v35_9174(void) = Call[String] : func:r35_9173, this:r35_9171 +# 35| mu35_9175(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9176(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9171 +# 35| r35_9177(glval) = VariableAddress[x655] : +# 35| r35_9178(glval) = FunctionAddress[~String] : +# 35| v35_9179(void) = Call[~String] : func:r35_9178, this:r35_9177 +# 35| mu35_9180(unknown) = ^CallSideEffect : ~m? +# 35| v35_9181(void) = ^IndirectReadSideEffect[-1] : &:r35_9177, ~m? +# 35| mu35_9182(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9177 +# 35| r35_9183(bool) = Constant[0] : +# 35| v35_9184(void) = ConditionalBranch : r35_9183 #-----| False -> Block 657 #-----| True (back edge) -> Block 656 -# 1987| Block 657 -# 1987| r1987_1(glval) = VariableAddress[x656] : -# 1987| mu1987_2(String) = Uninitialized[x656] : &:r1987_1 -# 1987| r1987_3(glval) = FunctionAddress[String] : -# 1987| v1987_4(void) = Call[String] : func:r1987_3, this:r1987_1 -# 1987| mu1987_5(unknown) = ^CallSideEffect : ~m? -# 1987| mu1987_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1987_1 -# 1988| r1988_1(glval) = VariableAddress[x656] : -# 1988| r1988_2(glval) = FunctionAddress[~String] : -# 1988| v1988_3(void) = Call[~String] : func:r1988_2, this:r1988_1 -# 1988| mu1988_4(unknown) = ^CallSideEffect : ~m? -# 1988| v1988_5(void) = ^IndirectReadSideEffect[-1] : &:r1988_1, ~m? -# 1988| mu1988_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1988_1 -# 1988| r1988_7(bool) = Constant[0] : -# 1988| v1988_8(void) = ConditionalBranch : r1988_7 +# 35| Block 657 +# 35| r35_9185(glval) = VariableAddress[x656] : +# 35| mu35_9186(String) = Uninitialized[x656] : &:r35_9185 +# 35| r35_9187(glval) = FunctionAddress[String] : +# 35| v35_9188(void) = Call[String] : func:r35_9187, this:r35_9185 +# 35| mu35_9189(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9190(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9185 +# 35| r35_9191(glval) = VariableAddress[x656] : +# 35| r35_9192(glval) = FunctionAddress[~String] : +# 35| v35_9193(void) = Call[~String] : func:r35_9192, this:r35_9191 +# 35| mu35_9194(unknown) = ^CallSideEffect : ~m? +# 35| v35_9195(void) = ^IndirectReadSideEffect[-1] : &:r35_9191, ~m? +# 35| mu35_9196(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9191 +# 35| r35_9197(bool) = Constant[0] : +# 35| v35_9198(void) = ConditionalBranch : r35_9197 #-----| False -> Block 658 #-----| True (back edge) -> Block 657 -# 1990| Block 658 -# 1990| r1990_1(glval) = VariableAddress[x657] : -# 1990| mu1990_2(String) = Uninitialized[x657] : &:r1990_1 -# 1990| r1990_3(glval) = FunctionAddress[String] : -# 1990| v1990_4(void) = Call[String] : func:r1990_3, this:r1990_1 -# 1990| mu1990_5(unknown) = ^CallSideEffect : ~m? -# 1990| mu1990_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1990_1 -# 1991| r1991_1(glval) = VariableAddress[x657] : -# 1991| r1991_2(glval) = FunctionAddress[~String] : -# 1991| v1991_3(void) = Call[~String] : func:r1991_2, this:r1991_1 -# 1991| mu1991_4(unknown) = ^CallSideEffect : ~m? -# 1991| v1991_5(void) = ^IndirectReadSideEffect[-1] : &:r1991_1, ~m? -# 1991| mu1991_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1991_1 -# 1991| r1991_7(bool) = Constant[0] : -# 1991| v1991_8(void) = ConditionalBranch : r1991_7 +# 35| Block 658 +# 35| r35_9199(glval) = VariableAddress[x657] : +# 35| mu35_9200(String) = Uninitialized[x657] : &:r35_9199 +# 35| r35_9201(glval) = FunctionAddress[String] : +# 35| v35_9202(void) = Call[String] : func:r35_9201, this:r35_9199 +# 35| mu35_9203(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9204(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9199 +# 35| r35_9205(glval) = VariableAddress[x657] : +# 35| r35_9206(glval) = FunctionAddress[~String] : +# 35| v35_9207(void) = Call[~String] : func:r35_9206, this:r35_9205 +# 35| mu35_9208(unknown) = ^CallSideEffect : ~m? +# 35| v35_9209(void) = ^IndirectReadSideEffect[-1] : &:r35_9205, ~m? +# 35| mu35_9210(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9205 +# 35| r35_9211(bool) = Constant[0] : +# 35| v35_9212(void) = ConditionalBranch : r35_9211 #-----| False -> Block 659 #-----| True (back edge) -> Block 658 -# 1993| Block 659 -# 1993| r1993_1(glval) = VariableAddress[x658] : -# 1993| mu1993_2(String) = Uninitialized[x658] : &:r1993_1 -# 1993| r1993_3(glval) = FunctionAddress[String] : -# 1993| v1993_4(void) = Call[String] : func:r1993_3, this:r1993_1 -# 1993| mu1993_5(unknown) = ^CallSideEffect : ~m? -# 1993| mu1993_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1993_1 -# 1994| r1994_1(glval) = VariableAddress[x658] : -# 1994| r1994_2(glval) = FunctionAddress[~String] : -# 1994| v1994_3(void) = Call[~String] : func:r1994_2, this:r1994_1 -# 1994| mu1994_4(unknown) = ^CallSideEffect : ~m? -# 1994| v1994_5(void) = ^IndirectReadSideEffect[-1] : &:r1994_1, ~m? -# 1994| mu1994_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1994_1 -# 1994| r1994_7(bool) = Constant[0] : -# 1994| v1994_8(void) = ConditionalBranch : r1994_7 +# 35| Block 659 +# 35| r35_9213(glval) = VariableAddress[x658] : +# 35| mu35_9214(String) = Uninitialized[x658] : &:r35_9213 +# 35| r35_9215(glval) = FunctionAddress[String] : +# 35| v35_9216(void) = Call[String] : func:r35_9215, this:r35_9213 +# 35| mu35_9217(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9218(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9213 +# 35| r35_9219(glval) = VariableAddress[x658] : +# 35| r35_9220(glval) = FunctionAddress[~String] : +# 35| v35_9221(void) = Call[~String] : func:r35_9220, this:r35_9219 +# 35| mu35_9222(unknown) = ^CallSideEffect : ~m? +# 35| v35_9223(void) = ^IndirectReadSideEffect[-1] : &:r35_9219, ~m? +# 35| mu35_9224(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9219 +# 35| r35_9225(bool) = Constant[0] : +# 35| v35_9226(void) = ConditionalBranch : r35_9225 #-----| False -> Block 660 #-----| True (back edge) -> Block 659 -# 1996| Block 660 -# 1996| r1996_1(glval) = VariableAddress[x659] : -# 1996| mu1996_2(String) = Uninitialized[x659] : &:r1996_1 -# 1996| r1996_3(glval) = FunctionAddress[String] : -# 1996| v1996_4(void) = Call[String] : func:r1996_3, this:r1996_1 -# 1996| mu1996_5(unknown) = ^CallSideEffect : ~m? -# 1996| mu1996_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1996_1 -# 1997| r1997_1(glval) = VariableAddress[x659] : -# 1997| r1997_2(glval) = FunctionAddress[~String] : -# 1997| v1997_3(void) = Call[~String] : func:r1997_2, this:r1997_1 -# 1997| mu1997_4(unknown) = ^CallSideEffect : ~m? -# 1997| v1997_5(void) = ^IndirectReadSideEffect[-1] : &:r1997_1, ~m? -# 1997| mu1997_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1997_1 -# 1997| r1997_7(bool) = Constant[0] : -# 1997| v1997_8(void) = ConditionalBranch : r1997_7 +# 35| Block 660 +# 35| r35_9227(glval) = VariableAddress[x659] : +# 35| mu35_9228(String) = Uninitialized[x659] : &:r35_9227 +# 35| r35_9229(glval) = FunctionAddress[String] : +# 35| v35_9230(void) = Call[String] : func:r35_9229, this:r35_9227 +# 35| mu35_9231(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9232(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9227 +# 35| r35_9233(glval) = VariableAddress[x659] : +# 35| r35_9234(glval) = FunctionAddress[~String] : +# 35| v35_9235(void) = Call[~String] : func:r35_9234, this:r35_9233 +# 35| mu35_9236(unknown) = ^CallSideEffect : ~m? +# 35| v35_9237(void) = ^IndirectReadSideEffect[-1] : &:r35_9233, ~m? +# 35| mu35_9238(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9233 +# 35| r35_9239(bool) = Constant[0] : +# 35| v35_9240(void) = ConditionalBranch : r35_9239 #-----| False -> Block 661 #-----| True (back edge) -> Block 660 -# 1999| Block 661 -# 1999| r1999_1(glval) = VariableAddress[x660] : -# 1999| mu1999_2(String) = Uninitialized[x660] : &:r1999_1 -# 1999| r1999_3(glval) = FunctionAddress[String] : -# 1999| v1999_4(void) = Call[String] : func:r1999_3, this:r1999_1 -# 1999| mu1999_5(unknown) = ^CallSideEffect : ~m? -# 1999| mu1999_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1999_1 -# 2000| r2000_1(glval) = VariableAddress[x660] : -# 2000| r2000_2(glval) = FunctionAddress[~String] : -# 2000| v2000_3(void) = Call[~String] : func:r2000_2, this:r2000_1 -# 2000| mu2000_4(unknown) = ^CallSideEffect : ~m? -# 2000| v2000_5(void) = ^IndirectReadSideEffect[-1] : &:r2000_1, ~m? -# 2000| mu2000_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2000_1 -# 2000| r2000_7(bool) = Constant[0] : -# 2000| v2000_8(void) = ConditionalBranch : r2000_7 +# 35| Block 661 +# 35| r35_9241(glval) = VariableAddress[x660] : +# 35| mu35_9242(String) = Uninitialized[x660] : &:r35_9241 +# 35| r35_9243(glval) = FunctionAddress[String] : +# 35| v35_9244(void) = Call[String] : func:r35_9243, this:r35_9241 +# 35| mu35_9245(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9246(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9241 +# 35| r35_9247(glval) = VariableAddress[x660] : +# 35| r35_9248(glval) = FunctionAddress[~String] : +# 35| v35_9249(void) = Call[~String] : func:r35_9248, this:r35_9247 +# 35| mu35_9250(unknown) = ^CallSideEffect : ~m? +# 35| v35_9251(void) = ^IndirectReadSideEffect[-1] : &:r35_9247, ~m? +# 35| mu35_9252(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9247 +# 35| r35_9253(bool) = Constant[0] : +# 35| v35_9254(void) = ConditionalBranch : r35_9253 #-----| False -> Block 662 #-----| True (back edge) -> Block 661 -# 2002| Block 662 -# 2002| r2002_1(glval) = VariableAddress[x661] : -# 2002| mu2002_2(String) = Uninitialized[x661] : &:r2002_1 -# 2002| r2002_3(glval) = FunctionAddress[String] : -# 2002| v2002_4(void) = Call[String] : func:r2002_3, this:r2002_1 -# 2002| mu2002_5(unknown) = ^CallSideEffect : ~m? -# 2002| mu2002_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2002_1 -# 2003| r2003_1(glval) = VariableAddress[x661] : -# 2003| r2003_2(glval) = FunctionAddress[~String] : -# 2003| v2003_3(void) = Call[~String] : func:r2003_2, this:r2003_1 -# 2003| mu2003_4(unknown) = ^CallSideEffect : ~m? -# 2003| v2003_5(void) = ^IndirectReadSideEffect[-1] : &:r2003_1, ~m? -# 2003| mu2003_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2003_1 -# 2003| r2003_7(bool) = Constant[0] : -# 2003| v2003_8(void) = ConditionalBranch : r2003_7 +# 35| Block 662 +# 35| r35_9255(glval) = VariableAddress[x661] : +# 35| mu35_9256(String) = Uninitialized[x661] : &:r35_9255 +# 35| r35_9257(glval) = FunctionAddress[String] : +# 35| v35_9258(void) = Call[String] : func:r35_9257, this:r35_9255 +# 35| mu35_9259(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9260(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9255 +# 35| r35_9261(glval) = VariableAddress[x661] : +# 35| r35_9262(glval) = FunctionAddress[~String] : +# 35| v35_9263(void) = Call[~String] : func:r35_9262, this:r35_9261 +# 35| mu35_9264(unknown) = ^CallSideEffect : ~m? +# 35| v35_9265(void) = ^IndirectReadSideEffect[-1] : &:r35_9261, ~m? +# 35| mu35_9266(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9261 +# 35| r35_9267(bool) = Constant[0] : +# 35| v35_9268(void) = ConditionalBranch : r35_9267 #-----| False -> Block 663 #-----| True (back edge) -> Block 662 -# 2005| Block 663 -# 2005| r2005_1(glval) = VariableAddress[x662] : -# 2005| mu2005_2(String) = Uninitialized[x662] : &:r2005_1 -# 2005| r2005_3(glval) = FunctionAddress[String] : -# 2005| v2005_4(void) = Call[String] : func:r2005_3, this:r2005_1 -# 2005| mu2005_5(unknown) = ^CallSideEffect : ~m? -# 2005| mu2005_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2005_1 -# 2006| r2006_1(glval) = VariableAddress[x662] : -# 2006| r2006_2(glval) = FunctionAddress[~String] : -# 2006| v2006_3(void) = Call[~String] : func:r2006_2, this:r2006_1 -# 2006| mu2006_4(unknown) = ^CallSideEffect : ~m? -# 2006| v2006_5(void) = ^IndirectReadSideEffect[-1] : &:r2006_1, ~m? -# 2006| mu2006_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2006_1 -# 2006| r2006_7(bool) = Constant[0] : -# 2006| v2006_8(void) = ConditionalBranch : r2006_7 +# 35| Block 663 +# 35| r35_9269(glval) = VariableAddress[x662] : +# 35| mu35_9270(String) = Uninitialized[x662] : &:r35_9269 +# 35| r35_9271(glval) = FunctionAddress[String] : +# 35| v35_9272(void) = Call[String] : func:r35_9271, this:r35_9269 +# 35| mu35_9273(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9274(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9269 +# 35| r35_9275(glval) = VariableAddress[x662] : +# 35| r35_9276(glval) = FunctionAddress[~String] : +# 35| v35_9277(void) = Call[~String] : func:r35_9276, this:r35_9275 +# 35| mu35_9278(unknown) = ^CallSideEffect : ~m? +# 35| v35_9279(void) = ^IndirectReadSideEffect[-1] : &:r35_9275, ~m? +# 35| mu35_9280(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9275 +# 35| r35_9281(bool) = Constant[0] : +# 35| v35_9282(void) = ConditionalBranch : r35_9281 #-----| False -> Block 664 #-----| True (back edge) -> Block 663 -# 2008| Block 664 -# 2008| r2008_1(glval) = VariableAddress[x663] : -# 2008| mu2008_2(String) = Uninitialized[x663] : &:r2008_1 -# 2008| r2008_3(glval) = FunctionAddress[String] : -# 2008| v2008_4(void) = Call[String] : func:r2008_3, this:r2008_1 -# 2008| mu2008_5(unknown) = ^CallSideEffect : ~m? -# 2008| mu2008_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2008_1 -# 2009| r2009_1(glval) = VariableAddress[x663] : -# 2009| r2009_2(glval) = FunctionAddress[~String] : -# 2009| v2009_3(void) = Call[~String] : func:r2009_2, this:r2009_1 -# 2009| mu2009_4(unknown) = ^CallSideEffect : ~m? -# 2009| v2009_5(void) = ^IndirectReadSideEffect[-1] : &:r2009_1, ~m? -# 2009| mu2009_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2009_1 -# 2009| r2009_7(bool) = Constant[0] : -# 2009| v2009_8(void) = ConditionalBranch : r2009_7 +# 35| Block 664 +# 35| r35_9283(glval) = VariableAddress[x663] : +# 35| mu35_9284(String) = Uninitialized[x663] : &:r35_9283 +# 35| r35_9285(glval) = FunctionAddress[String] : +# 35| v35_9286(void) = Call[String] : func:r35_9285, this:r35_9283 +# 35| mu35_9287(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9288(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9283 +# 35| r35_9289(glval) = VariableAddress[x663] : +# 35| r35_9290(glval) = FunctionAddress[~String] : +# 35| v35_9291(void) = Call[~String] : func:r35_9290, this:r35_9289 +# 35| mu35_9292(unknown) = ^CallSideEffect : ~m? +# 35| v35_9293(void) = ^IndirectReadSideEffect[-1] : &:r35_9289, ~m? +# 35| mu35_9294(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9289 +# 35| r35_9295(bool) = Constant[0] : +# 35| v35_9296(void) = ConditionalBranch : r35_9295 #-----| False -> Block 665 #-----| True (back edge) -> Block 664 -# 2011| Block 665 -# 2011| r2011_1(glval) = VariableAddress[x664] : -# 2011| mu2011_2(String) = Uninitialized[x664] : &:r2011_1 -# 2011| r2011_3(glval) = FunctionAddress[String] : -# 2011| v2011_4(void) = Call[String] : func:r2011_3, this:r2011_1 -# 2011| mu2011_5(unknown) = ^CallSideEffect : ~m? -# 2011| mu2011_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2011_1 -# 2012| r2012_1(glval) = VariableAddress[x664] : -# 2012| r2012_2(glval) = FunctionAddress[~String] : -# 2012| v2012_3(void) = Call[~String] : func:r2012_2, this:r2012_1 -# 2012| mu2012_4(unknown) = ^CallSideEffect : ~m? -# 2012| v2012_5(void) = ^IndirectReadSideEffect[-1] : &:r2012_1, ~m? -# 2012| mu2012_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2012_1 -# 2012| r2012_7(bool) = Constant[0] : -# 2012| v2012_8(void) = ConditionalBranch : r2012_7 +# 35| Block 665 +# 35| r35_9297(glval) = VariableAddress[x664] : +# 35| mu35_9298(String) = Uninitialized[x664] : &:r35_9297 +# 35| r35_9299(glval) = FunctionAddress[String] : +# 35| v35_9300(void) = Call[String] : func:r35_9299, this:r35_9297 +# 35| mu35_9301(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9302(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9297 +# 35| r35_9303(glval) = VariableAddress[x664] : +# 35| r35_9304(glval) = FunctionAddress[~String] : +# 35| v35_9305(void) = Call[~String] : func:r35_9304, this:r35_9303 +# 35| mu35_9306(unknown) = ^CallSideEffect : ~m? +# 35| v35_9307(void) = ^IndirectReadSideEffect[-1] : &:r35_9303, ~m? +# 35| mu35_9308(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9303 +# 35| r35_9309(bool) = Constant[0] : +# 35| v35_9310(void) = ConditionalBranch : r35_9309 #-----| False -> Block 666 #-----| True (back edge) -> Block 665 -# 2014| Block 666 -# 2014| r2014_1(glval) = VariableAddress[x665] : -# 2014| mu2014_2(String) = Uninitialized[x665] : &:r2014_1 -# 2014| r2014_3(glval) = FunctionAddress[String] : -# 2014| v2014_4(void) = Call[String] : func:r2014_3, this:r2014_1 -# 2014| mu2014_5(unknown) = ^CallSideEffect : ~m? -# 2014| mu2014_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2014_1 -# 2015| r2015_1(glval) = VariableAddress[x665] : -# 2015| r2015_2(glval) = FunctionAddress[~String] : -# 2015| v2015_3(void) = Call[~String] : func:r2015_2, this:r2015_1 -# 2015| mu2015_4(unknown) = ^CallSideEffect : ~m? -# 2015| v2015_5(void) = ^IndirectReadSideEffect[-1] : &:r2015_1, ~m? -# 2015| mu2015_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2015_1 -# 2015| r2015_7(bool) = Constant[0] : -# 2015| v2015_8(void) = ConditionalBranch : r2015_7 +# 35| Block 666 +# 35| r35_9311(glval) = VariableAddress[x665] : +# 35| mu35_9312(String) = Uninitialized[x665] : &:r35_9311 +# 35| r35_9313(glval) = FunctionAddress[String] : +# 35| v35_9314(void) = Call[String] : func:r35_9313, this:r35_9311 +# 35| mu35_9315(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9316(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9311 +# 35| r35_9317(glval) = VariableAddress[x665] : +# 35| r35_9318(glval) = FunctionAddress[~String] : +# 35| v35_9319(void) = Call[~String] : func:r35_9318, this:r35_9317 +# 35| mu35_9320(unknown) = ^CallSideEffect : ~m? +# 35| v35_9321(void) = ^IndirectReadSideEffect[-1] : &:r35_9317, ~m? +# 35| mu35_9322(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9317 +# 35| r35_9323(bool) = Constant[0] : +# 35| v35_9324(void) = ConditionalBranch : r35_9323 #-----| False -> Block 667 #-----| True (back edge) -> Block 666 -# 2017| Block 667 -# 2017| r2017_1(glval) = VariableAddress[x666] : -# 2017| mu2017_2(String) = Uninitialized[x666] : &:r2017_1 -# 2017| r2017_3(glval) = FunctionAddress[String] : -# 2017| v2017_4(void) = Call[String] : func:r2017_3, this:r2017_1 -# 2017| mu2017_5(unknown) = ^CallSideEffect : ~m? -# 2017| mu2017_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2017_1 -# 2018| r2018_1(glval) = VariableAddress[x666] : -# 2018| r2018_2(glval) = FunctionAddress[~String] : -# 2018| v2018_3(void) = Call[~String] : func:r2018_2, this:r2018_1 -# 2018| mu2018_4(unknown) = ^CallSideEffect : ~m? -# 2018| v2018_5(void) = ^IndirectReadSideEffect[-1] : &:r2018_1, ~m? -# 2018| mu2018_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2018_1 -# 2018| r2018_7(bool) = Constant[0] : -# 2018| v2018_8(void) = ConditionalBranch : r2018_7 +# 35| Block 667 +# 35| r35_9325(glval) = VariableAddress[x666] : +# 35| mu35_9326(String) = Uninitialized[x666] : &:r35_9325 +# 35| r35_9327(glval) = FunctionAddress[String] : +# 35| v35_9328(void) = Call[String] : func:r35_9327, this:r35_9325 +# 35| mu35_9329(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9330(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9325 +# 35| r35_9331(glval) = VariableAddress[x666] : +# 35| r35_9332(glval) = FunctionAddress[~String] : +# 35| v35_9333(void) = Call[~String] : func:r35_9332, this:r35_9331 +# 35| mu35_9334(unknown) = ^CallSideEffect : ~m? +# 35| v35_9335(void) = ^IndirectReadSideEffect[-1] : &:r35_9331, ~m? +# 35| mu35_9336(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9331 +# 35| r35_9337(bool) = Constant[0] : +# 35| v35_9338(void) = ConditionalBranch : r35_9337 #-----| False -> Block 668 #-----| True (back edge) -> Block 667 -# 2020| Block 668 -# 2020| r2020_1(glval) = VariableAddress[x667] : -# 2020| mu2020_2(String) = Uninitialized[x667] : &:r2020_1 -# 2020| r2020_3(glval) = FunctionAddress[String] : -# 2020| v2020_4(void) = Call[String] : func:r2020_3, this:r2020_1 -# 2020| mu2020_5(unknown) = ^CallSideEffect : ~m? -# 2020| mu2020_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2020_1 -# 2021| r2021_1(glval) = VariableAddress[x667] : -# 2021| r2021_2(glval) = FunctionAddress[~String] : -# 2021| v2021_3(void) = Call[~String] : func:r2021_2, this:r2021_1 -# 2021| mu2021_4(unknown) = ^CallSideEffect : ~m? -# 2021| v2021_5(void) = ^IndirectReadSideEffect[-1] : &:r2021_1, ~m? -# 2021| mu2021_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2021_1 -# 2021| r2021_7(bool) = Constant[0] : -# 2021| v2021_8(void) = ConditionalBranch : r2021_7 +# 35| Block 668 +# 35| r35_9339(glval) = VariableAddress[x667] : +# 35| mu35_9340(String) = Uninitialized[x667] : &:r35_9339 +# 35| r35_9341(glval) = FunctionAddress[String] : +# 35| v35_9342(void) = Call[String] : func:r35_9341, this:r35_9339 +# 35| mu35_9343(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9344(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9339 +# 35| r35_9345(glval) = VariableAddress[x667] : +# 35| r35_9346(glval) = FunctionAddress[~String] : +# 35| v35_9347(void) = Call[~String] : func:r35_9346, this:r35_9345 +# 35| mu35_9348(unknown) = ^CallSideEffect : ~m? +# 35| v35_9349(void) = ^IndirectReadSideEffect[-1] : &:r35_9345, ~m? +# 35| mu35_9350(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9345 +# 35| r35_9351(bool) = Constant[0] : +# 35| v35_9352(void) = ConditionalBranch : r35_9351 #-----| False -> Block 669 #-----| True (back edge) -> Block 668 -# 2023| Block 669 -# 2023| r2023_1(glval) = VariableAddress[x668] : -# 2023| mu2023_2(String) = Uninitialized[x668] : &:r2023_1 -# 2023| r2023_3(glval) = FunctionAddress[String] : -# 2023| v2023_4(void) = Call[String] : func:r2023_3, this:r2023_1 -# 2023| mu2023_5(unknown) = ^CallSideEffect : ~m? -# 2023| mu2023_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2023_1 -# 2024| r2024_1(glval) = VariableAddress[x668] : -# 2024| r2024_2(glval) = FunctionAddress[~String] : -# 2024| v2024_3(void) = Call[~String] : func:r2024_2, this:r2024_1 -# 2024| mu2024_4(unknown) = ^CallSideEffect : ~m? -# 2024| v2024_5(void) = ^IndirectReadSideEffect[-1] : &:r2024_1, ~m? -# 2024| mu2024_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2024_1 -# 2024| r2024_7(bool) = Constant[0] : -# 2024| v2024_8(void) = ConditionalBranch : r2024_7 +# 35| Block 669 +# 35| r35_9353(glval) = VariableAddress[x668] : +# 35| mu35_9354(String) = Uninitialized[x668] : &:r35_9353 +# 35| r35_9355(glval) = FunctionAddress[String] : +# 35| v35_9356(void) = Call[String] : func:r35_9355, this:r35_9353 +# 35| mu35_9357(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9358(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9353 +# 35| r35_9359(glval) = VariableAddress[x668] : +# 35| r35_9360(glval) = FunctionAddress[~String] : +# 35| v35_9361(void) = Call[~String] : func:r35_9360, this:r35_9359 +# 35| mu35_9362(unknown) = ^CallSideEffect : ~m? +# 35| v35_9363(void) = ^IndirectReadSideEffect[-1] : &:r35_9359, ~m? +# 35| mu35_9364(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9359 +# 35| r35_9365(bool) = Constant[0] : +# 35| v35_9366(void) = ConditionalBranch : r35_9365 #-----| False -> Block 670 #-----| True (back edge) -> Block 669 -# 2026| Block 670 -# 2026| r2026_1(glval) = VariableAddress[x669] : -# 2026| mu2026_2(String) = Uninitialized[x669] : &:r2026_1 -# 2026| r2026_3(glval) = FunctionAddress[String] : -# 2026| v2026_4(void) = Call[String] : func:r2026_3, this:r2026_1 -# 2026| mu2026_5(unknown) = ^CallSideEffect : ~m? -# 2026| mu2026_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2026_1 -# 2027| r2027_1(glval) = VariableAddress[x669] : -# 2027| r2027_2(glval) = FunctionAddress[~String] : -# 2027| v2027_3(void) = Call[~String] : func:r2027_2, this:r2027_1 -# 2027| mu2027_4(unknown) = ^CallSideEffect : ~m? -# 2027| v2027_5(void) = ^IndirectReadSideEffect[-1] : &:r2027_1, ~m? -# 2027| mu2027_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2027_1 -# 2027| r2027_7(bool) = Constant[0] : -# 2027| v2027_8(void) = ConditionalBranch : r2027_7 +# 35| Block 670 +# 35| r35_9367(glval) = VariableAddress[x669] : +# 35| mu35_9368(String) = Uninitialized[x669] : &:r35_9367 +# 35| r35_9369(glval) = FunctionAddress[String] : +# 35| v35_9370(void) = Call[String] : func:r35_9369, this:r35_9367 +# 35| mu35_9371(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9372(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9367 +# 35| r35_9373(glval) = VariableAddress[x669] : +# 35| r35_9374(glval) = FunctionAddress[~String] : +# 35| v35_9375(void) = Call[~String] : func:r35_9374, this:r35_9373 +# 35| mu35_9376(unknown) = ^CallSideEffect : ~m? +# 35| v35_9377(void) = ^IndirectReadSideEffect[-1] : &:r35_9373, ~m? +# 35| mu35_9378(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9373 +# 35| r35_9379(bool) = Constant[0] : +# 35| v35_9380(void) = ConditionalBranch : r35_9379 #-----| False -> Block 671 #-----| True (back edge) -> Block 670 -# 2029| Block 671 -# 2029| r2029_1(glval) = VariableAddress[x670] : -# 2029| mu2029_2(String) = Uninitialized[x670] : &:r2029_1 -# 2029| r2029_3(glval) = FunctionAddress[String] : -# 2029| v2029_4(void) = Call[String] : func:r2029_3, this:r2029_1 -# 2029| mu2029_5(unknown) = ^CallSideEffect : ~m? -# 2029| mu2029_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2029_1 -# 2030| r2030_1(glval) = VariableAddress[x670] : -# 2030| r2030_2(glval) = FunctionAddress[~String] : -# 2030| v2030_3(void) = Call[~String] : func:r2030_2, this:r2030_1 -# 2030| mu2030_4(unknown) = ^CallSideEffect : ~m? -# 2030| v2030_5(void) = ^IndirectReadSideEffect[-1] : &:r2030_1, ~m? -# 2030| mu2030_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2030_1 -# 2030| r2030_7(bool) = Constant[0] : -# 2030| v2030_8(void) = ConditionalBranch : r2030_7 +# 35| Block 671 +# 35| r35_9381(glval) = VariableAddress[x670] : +# 35| mu35_9382(String) = Uninitialized[x670] : &:r35_9381 +# 35| r35_9383(glval) = FunctionAddress[String] : +# 35| v35_9384(void) = Call[String] : func:r35_9383, this:r35_9381 +# 35| mu35_9385(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9386(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9381 +# 35| r35_9387(glval) = VariableAddress[x670] : +# 35| r35_9388(glval) = FunctionAddress[~String] : +# 35| v35_9389(void) = Call[~String] : func:r35_9388, this:r35_9387 +# 35| mu35_9390(unknown) = ^CallSideEffect : ~m? +# 35| v35_9391(void) = ^IndirectReadSideEffect[-1] : &:r35_9387, ~m? +# 35| mu35_9392(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9387 +# 35| r35_9393(bool) = Constant[0] : +# 35| v35_9394(void) = ConditionalBranch : r35_9393 #-----| False -> Block 672 #-----| True (back edge) -> Block 671 -# 2032| Block 672 -# 2032| r2032_1(glval) = VariableAddress[x671] : -# 2032| mu2032_2(String) = Uninitialized[x671] : &:r2032_1 -# 2032| r2032_3(glval) = FunctionAddress[String] : -# 2032| v2032_4(void) = Call[String] : func:r2032_3, this:r2032_1 -# 2032| mu2032_5(unknown) = ^CallSideEffect : ~m? -# 2032| mu2032_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2032_1 -# 2033| r2033_1(glval) = VariableAddress[x671] : -# 2033| r2033_2(glval) = FunctionAddress[~String] : -# 2033| v2033_3(void) = Call[~String] : func:r2033_2, this:r2033_1 -# 2033| mu2033_4(unknown) = ^CallSideEffect : ~m? -# 2033| v2033_5(void) = ^IndirectReadSideEffect[-1] : &:r2033_1, ~m? -# 2033| mu2033_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2033_1 -# 2033| r2033_7(bool) = Constant[0] : -# 2033| v2033_8(void) = ConditionalBranch : r2033_7 +# 35| Block 672 +# 35| r35_9395(glval) = VariableAddress[x671] : +# 35| mu35_9396(String) = Uninitialized[x671] : &:r35_9395 +# 35| r35_9397(glval) = FunctionAddress[String] : +# 35| v35_9398(void) = Call[String] : func:r35_9397, this:r35_9395 +# 35| mu35_9399(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9400(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9395 +# 35| r35_9401(glval) = VariableAddress[x671] : +# 35| r35_9402(glval) = FunctionAddress[~String] : +# 35| v35_9403(void) = Call[~String] : func:r35_9402, this:r35_9401 +# 35| mu35_9404(unknown) = ^CallSideEffect : ~m? +# 35| v35_9405(void) = ^IndirectReadSideEffect[-1] : &:r35_9401, ~m? +# 35| mu35_9406(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9401 +# 35| r35_9407(bool) = Constant[0] : +# 35| v35_9408(void) = ConditionalBranch : r35_9407 #-----| False -> Block 673 #-----| True (back edge) -> Block 672 -# 2035| Block 673 -# 2035| r2035_1(glval) = VariableAddress[x672] : -# 2035| mu2035_2(String) = Uninitialized[x672] : &:r2035_1 -# 2035| r2035_3(glval) = FunctionAddress[String] : -# 2035| v2035_4(void) = Call[String] : func:r2035_3, this:r2035_1 -# 2035| mu2035_5(unknown) = ^CallSideEffect : ~m? -# 2035| mu2035_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2035_1 -# 2036| r2036_1(glval) = VariableAddress[x672] : -# 2036| r2036_2(glval) = FunctionAddress[~String] : -# 2036| v2036_3(void) = Call[~String] : func:r2036_2, this:r2036_1 -# 2036| mu2036_4(unknown) = ^CallSideEffect : ~m? -# 2036| v2036_5(void) = ^IndirectReadSideEffect[-1] : &:r2036_1, ~m? -# 2036| mu2036_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2036_1 -# 2036| r2036_7(bool) = Constant[0] : -# 2036| v2036_8(void) = ConditionalBranch : r2036_7 +# 35| Block 673 +# 35| r35_9409(glval) = VariableAddress[x672] : +# 35| mu35_9410(String) = Uninitialized[x672] : &:r35_9409 +# 35| r35_9411(glval) = FunctionAddress[String] : +# 35| v35_9412(void) = Call[String] : func:r35_9411, this:r35_9409 +# 35| mu35_9413(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9414(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9409 +# 35| r35_9415(glval) = VariableAddress[x672] : +# 35| r35_9416(glval) = FunctionAddress[~String] : +# 35| v35_9417(void) = Call[~String] : func:r35_9416, this:r35_9415 +# 35| mu35_9418(unknown) = ^CallSideEffect : ~m? +# 35| v35_9419(void) = ^IndirectReadSideEffect[-1] : &:r35_9415, ~m? +# 35| mu35_9420(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9415 +# 35| r35_9421(bool) = Constant[0] : +# 35| v35_9422(void) = ConditionalBranch : r35_9421 #-----| False -> Block 674 #-----| True (back edge) -> Block 673 -# 2038| Block 674 -# 2038| r2038_1(glval) = VariableAddress[x673] : -# 2038| mu2038_2(String) = Uninitialized[x673] : &:r2038_1 -# 2038| r2038_3(glval) = FunctionAddress[String] : -# 2038| v2038_4(void) = Call[String] : func:r2038_3, this:r2038_1 -# 2038| mu2038_5(unknown) = ^CallSideEffect : ~m? -# 2038| mu2038_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2038_1 -# 2039| r2039_1(glval) = VariableAddress[x673] : -# 2039| r2039_2(glval) = FunctionAddress[~String] : -# 2039| v2039_3(void) = Call[~String] : func:r2039_2, this:r2039_1 -# 2039| mu2039_4(unknown) = ^CallSideEffect : ~m? -# 2039| v2039_5(void) = ^IndirectReadSideEffect[-1] : &:r2039_1, ~m? -# 2039| mu2039_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2039_1 -# 2039| r2039_7(bool) = Constant[0] : -# 2039| v2039_8(void) = ConditionalBranch : r2039_7 +# 35| Block 674 +# 35| r35_9423(glval) = VariableAddress[x673] : +# 35| mu35_9424(String) = Uninitialized[x673] : &:r35_9423 +# 35| r35_9425(glval) = FunctionAddress[String] : +# 35| v35_9426(void) = Call[String] : func:r35_9425, this:r35_9423 +# 35| mu35_9427(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9428(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9423 +# 35| r35_9429(glval) = VariableAddress[x673] : +# 35| r35_9430(glval) = FunctionAddress[~String] : +# 35| v35_9431(void) = Call[~String] : func:r35_9430, this:r35_9429 +# 35| mu35_9432(unknown) = ^CallSideEffect : ~m? +# 35| v35_9433(void) = ^IndirectReadSideEffect[-1] : &:r35_9429, ~m? +# 35| mu35_9434(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9429 +# 35| r35_9435(bool) = Constant[0] : +# 35| v35_9436(void) = ConditionalBranch : r35_9435 #-----| False -> Block 675 #-----| True (back edge) -> Block 674 -# 2041| Block 675 -# 2041| r2041_1(glval) = VariableAddress[x674] : -# 2041| mu2041_2(String) = Uninitialized[x674] : &:r2041_1 -# 2041| r2041_3(glval) = FunctionAddress[String] : -# 2041| v2041_4(void) = Call[String] : func:r2041_3, this:r2041_1 -# 2041| mu2041_5(unknown) = ^CallSideEffect : ~m? -# 2041| mu2041_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2041_1 -# 2042| r2042_1(glval) = VariableAddress[x674] : -# 2042| r2042_2(glval) = FunctionAddress[~String] : -# 2042| v2042_3(void) = Call[~String] : func:r2042_2, this:r2042_1 -# 2042| mu2042_4(unknown) = ^CallSideEffect : ~m? -# 2042| v2042_5(void) = ^IndirectReadSideEffect[-1] : &:r2042_1, ~m? -# 2042| mu2042_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2042_1 -# 2042| r2042_7(bool) = Constant[0] : -# 2042| v2042_8(void) = ConditionalBranch : r2042_7 +# 35| Block 675 +# 35| r35_9437(glval) = VariableAddress[x674] : +# 35| mu35_9438(String) = Uninitialized[x674] : &:r35_9437 +# 35| r35_9439(glval) = FunctionAddress[String] : +# 35| v35_9440(void) = Call[String] : func:r35_9439, this:r35_9437 +# 35| mu35_9441(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9442(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9437 +# 35| r35_9443(glval) = VariableAddress[x674] : +# 35| r35_9444(glval) = FunctionAddress[~String] : +# 35| v35_9445(void) = Call[~String] : func:r35_9444, this:r35_9443 +# 35| mu35_9446(unknown) = ^CallSideEffect : ~m? +# 35| v35_9447(void) = ^IndirectReadSideEffect[-1] : &:r35_9443, ~m? +# 35| mu35_9448(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9443 +# 35| r35_9449(bool) = Constant[0] : +# 35| v35_9450(void) = ConditionalBranch : r35_9449 #-----| False -> Block 676 #-----| True (back edge) -> Block 675 -# 2044| Block 676 -# 2044| r2044_1(glval) = VariableAddress[x675] : -# 2044| mu2044_2(String) = Uninitialized[x675] : &:r2044_1 -# 2044| r2044_3(glval) = FunctionAddress[String] : -# 2044| v2044_4(void) = Call[String] : func:r2044_3, this:r2044_1 -# 2044| mu2044_5(unknown) = ^CallSideEffect : ~m? -# 2044| mu2044_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2044_1 -# 2045| r2045_1(glval) = VariableAddress[x675] : -# 2045| r2045_2(glval) = FunctionAddress[~String] : -# 2045| v2045_3(void) = Call[~String] : func:r2045_2, this:r2045_1 -# 2045| mu2045_4(unknown) = ^CallSideEffect : ~m? -# 2045| v2045_5(void) = ^IndirectReadSideEffect[-1] : &:r2045_1, ~m? -# 2045| mu2045_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2045_1 -# 2045| r2045_7(bool) = Constant[0] : -# 2045| v2045_8(void) = ConditionalBranch : r2045_7 +# 35| Block 676 +# 35| r35_9451(glval) = VariableAddress[x675] : +# 35| mu35_9452(String) = Uninitialized[x675] : &:r35_9451 +# 35| r35_9453(glval) = FunctionAddress[String] : +# 35| v35_9454(void) = Call[String] : func:r35_9453, this:r35_9451 +# 35| mu35_9455(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9456(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9451 +# 35| r35_9457(glval) = VariableAddress[x675] : +# 35| r35_9458(glval) = FunctionAddress[~String] : +# 35| v35_9459(void) = Call[~String] : func:r35_9458, this:r35_9457 +# 35| mu35_9460(unknown) = ^CallSideEffect : ~m? +# 35| v35_9461(void) = ^IndirectReadSideEffect[-1] : &:r35_9457, ~m? +# 35| mu35_9462(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9457 +# 35| r35_9463(bool) = Constant[0] : +# 35| v35_9464(void) = ConditionalBranch : r35_9463 #-----| False -> Block 677 #-----| True (back edge) -> Block 676 -# 2047| Block 677 -# 2047| r2047_1(glval) = VariableAddress[x676] : -# 2047| mu2047_2(String) = Uninitialized[x676] : &:r2047_1 -# 2047| r2047_3(glval) = FunctionAddress[String] : -# 2047| v2047_4(void) = Call[String] : func:r2047_3, this:r2047_1 -# 2047| mu2047_5(unknown) = ^CallSideEffect : ~m? -# 2047| mu2047_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2047_1 -# 2048| r2048_1(glval) = VariableAddress[x676] : -# 2048| r2048_2(glval) = FunctionAddress[~String] : -# 2048| v2048_3(void) = Call[~String] : func:r2048_2, this:r2048_1 -# 2048| mu2048_4(unknown) = ^CallSideEffect : ~m? -# 2048| v2048_5(void) = ^IndirectReadSideEffect[-1] : &:r2048_1, ~m? -# 2048| mu2048_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2048_1 -# 2048| r2048_7(bool) = Constant[0] : -# 2048| v2048_8(void) = ConditionalBranch : r2048_7 +# 35| Block 677 +# 35| r35_9465(glval) = VariableAddress[x676] : +# 35| mu35_9466(String) = Uninitialized[x676] : &:r35_9465 +# 35| r35_9467(glval) = FunctionAddress[String] : +# 35| v35_9468(void) = Call[String] : func:r35_9467, this:r35_9465 +# 35| mu35_9469(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9470(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9465 +# 35| r35_9471(glval) = VariableAddress[x676] : +# 35| r35_9472(glval) = FunctionAddress[~String] : +# 35| v35_9473(void) = Call[~String] : func:r35_9472, this:r35_9471 +# 35| mu35_9474(unknown) = ^CallSideEffect : ~m? +# 35| v35_9475(void) = ^IndirectReadSideEffect[-1] : &:r35_9471, ~m? +# 35| mu35_9476(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9471 +# 35| r35_9477(bool) = Constant[0] : +# 35| v35_9478(void) = ConditionalBranch : r35_9477 #-----| False -> Block 678 #-----| True (back edge) -> Block 677 -# 2050| Block 678 -# 2050| r2050_1(glval) = VariableAddress[x677] : -# 2050| mu2050_2(String) = Uninitialized[x677] : &:r2050_1 -# 2050| r2050_3(glval) = FunctionAddress[String] : -# 2050| v2050_4(void) = Call[String] : func:r2050_3, this:r2050_1 -# 2050| mu2050_5(unknown) = ^CallSideEffect : ~m? -# 2050| mu2050_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2050_1 -# 2051| r2051_1(glval) = VariableAddress[x677] : -# 2051| r2051_2(glval) = FunctionAddress[~String] : -# 2051| v2051_3(void) = Call[~String] : func:r2051_2, this:r2051_1 -# 2051| mu2051_4(unknown) = ^CallSideEffect : ~m? -# 2051| v2051_5(void) = ^IndirectReadSideEffect[-1] : &:r2051_1, ~m? -# 2051| mu2051_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2051_1 -# 2051| r2051_7(bool) = Constant[0] : -# 2051| v2051_8(void) = ConditionalBranch : r2051_7 +# 35| Block 678 +# 35| r35_9479(glval) = VariableAddress[x677] : +# 35| mu35_9480(String) = Uninitialized[x677] : &:r35_9479 +# 35| r35_9481(glval) = FunctionAddress[String] : +# 35| v35_9482(void) = Call[String] : func:r35_9481, this:r35_9479 +# 35| mu35_9483(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9484(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9479 +# 35| r35_9485(glval) = VariableAddress[x677] : +# 35| r35_9486(glval) = FunctionAddress[~String] : +# 35| v35_9487(void) = Call[~String] : func:r35_9486, this:r35_9485 +# 35| mu35_9488(unknown) = ^CallSideEffect : ~m? +# 35| v35_9489(void) = ^IndirectReadSideEffect[-1] : &:r35_9485, ~m? +# 35| mu35_9490(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9485 +# 35| r35_9491(bool) = Constant[0] : +# 35| v35_9492(void) = ConditionalBranch : r35_9491 #-----| False -> Block 679 #-----| True (back edge) -> Block 678 -# 2053| Block 679 -# 2053| r2053_1(glval) = VariableAddress[x678] : -# 2053| mu2053_2(String) = Uninitialized[x678] : &:r2053_1 -# 2053| r2053_3(glval) = FunctionAddress[String] : -# 2053| v2053_4(void) = Call[String] : func:r2053_3, this:r2053_1 -# 2053| mu2053_5(unknown) = ^CallSideEffect : ~m? -# 2053| mu2053_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2053_1 -# 2054| r2054_1(glval) = VariableAddress[x678] : -# 2054| r2054_2(glval) = FunctionAddress[~String] : -# 2054| v2054_3(void) = Call[~String] : func:r2054_2, this:r2054_1 -# 2054| mu2054_4(unknown) = ^CallSideEffect : ~m? -# 2054| v2054_5(void) = ^IndirectReadSideEffect[-1] : &:r2054_1, ~m? -# 2054| mu2054_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2054_1 -# 2054| r2054_7(bool) = Constant[0] : -# 2054| v2054_8(void) = ConditionalBranch : r2054_7 +# 35| Block 679 +# 35| r35_9493(glval) = VariableAddress[x678] : +# 35| mu35_9494(String) = Uninitialized[x678] : &:r35_9493 +# 35| r35_9495(glval) = FunctionAddress[String] : +# 35| v35_9496(void) = Call[String] : func:r35_9495, this:r35_9493 +# 35| mu35_9497(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9498(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9493 +# 35| r35_9499(glval) = VariableAddress[x678] : +# 35| r35_9500(glval) = FunctionAddress[~String] : +# 35| v35_9501(void) = Call[~String] : func:r35_9500, this:r35_9499 +# 35| mu35_9502(unknown) = ^CallSideEffect : ~m? +# 35| v35_9503(void) = ^IndirectReadSideEffect[-1] : &:r35_9499, ~m? +# 35| mu35_9504(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9499 +# 35| r35_9505(bool) = Constant[0] : +# 35| v35_9506(void) = ConditionalBranch : r35_9505 #-----| False -> Block 680 #-----| True (back edge) -> Block 679 -# 2056| Block 680 -# 2056| r2056_1(glval) = VariableAddress[x679] : -# 2056| mu2056_2(String) = Uninitialized[x679] : &:r2056_1 -# 2056| r2056_3(glval) = FunctionAddress[String] : -# 2056| v2056_4(void) = Call[String] : func:r2056_3, this:r2056_1 -# 2056| mu2056_5(unknown) = ^CallSideEffect : ~m? -# 2056| mu2056_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2056_1 -# 2057| r2057_1(glval) = VariableAddress[x679] : -# 2057| r2057_2(glval) = FunctionAddress[~String] : -# 2057| v2057_3(void) = Call[~String] : func:r2057_2, this:r2057_1 -# 2057| mu2057_4(unknown) = ^CallSideEffect : ~m? -# 2057| v2057_5(void) = ^IndirectReadSideEffect[-1] : &:r2057_1, ~m? -# 2057| mu2057_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2057_1 -# 2057| r2057_7(bool) = Constant[0] : -# 2057| v2057_8(void) = ConditionalBranch : r2057_7 +# 35| Block 680 +# 35| r35_9507(glval) = VariableAddress[x679] : +# 35| mu35_9508(String) = Uninitialized[x679] : &:r35_9507 +# 35| r35_9509(glval) = FunctionAddress[String] : +# 35| v35_9510(void) = Call[String] : func:r35_9509, this:r35_9507 +# 35| mu35_9511(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9512(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9507 +# 35| r35_9513(glval) = VariableAddress[x679] : +# 35| r35_9514(glval) = FunctionAddress[~String] : +# 35| v35_9515(void) = Call[~String] : func:r35_9514, this:r35_9513 +# 35| mu35_9516(unknown) = ^CallSideEffect : ~m? +# 35| v35_9517(void) = ^IndirectReadSideEffect[-1] : &:r35_9513, ~m? +# 35| mu35_9518(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9513 +# 35| r35_9519(bool) = Constant[0] : +# 35| v35_9520(void) = ConditionalBranch : r35_9519 #-----| False -> Block 681 #-----| True (back edge) -> Block 680 -# 2059| Block 681 -# 2059| r2059_1(glval) = VariableAddress[x680] : -# 2059| mu2059_2(String) = Uninitialized[x680] : &:r2059_1 -# 2059| r2059_3(glval) = FunctionAddress[String] : -# 2059| v2059_4(void) = Call[String] : func:r2059_3, this:r2059_1 -# 2059| mu2059_5(unknown) = ^CallSideEffect : ~m? -# 2059| mu2059_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2059_1 -# 2060| r2060_1(glval) = VariableAddress[x680] : -# 2060| r2060_2(glval) = FunctionAddress[~String] : -# 2060| v2060_3(void) = Call[~String] : func:r2060_2, this:r2060_1 -# 2060| mu2060_4(unknown) = ^CallSideEffect : ~m? -# 2060| v2060_5(void) = ^IndirectReadSideEffect[-1] : &:r2060_1, ~m? -# 2060| mu2060_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2060_1 -# 2060| r2060_7(bool) = Constant[0] : -# 2060| v2060_8(void) = ConditionalBranch : r2060_7 +# 35| Block 681 +# 35| r35_9521(glval) = VariableAddress[x680] : +# 35| mu35_9522(String) = Uninitialized[x680] : &:r35_9521 +# 35| r35_9523(glval) = FunctionAddress[String] : +# 35| v35_9524(void) = Call[String] : func:r35_9523, this:r35_9521 +# 35| mu35_9525(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9526(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9521 +# 35| r35_9527(glval) = VariableAddress[x680] : +# 35| r35_9528(glval) = FunctionAddress[~String] : +# 35| v35_9529(void) = Call[~String] : func:r35_9528, this:r35_9527 +# 35| mu35_9530(unknown) = ^CallSideEffect : ~m? +# 35| v35_9531(void) = ^IndirectReadSideEffect[-1] : &:r35_9527, ~m? +# 35| mu35_9532(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9527 +# 35| r35_9533(bool) = Constant[0] : +# 35| v35_9534(void) = ConditionalBranch : r35_9533 #-----| False -> Block 682 #-----| True (back edge) -> Block 681 -# 2062| Block 682 -# 2062| r2062_1(glval) = VariableAddress[x681] : -# 2062| mu2062_2(String) = Uninitialized[x681] : &:r2062_1 -# 2062| r2062_3(glval) = FunctionAddress[String] : -# 2062| v2062_4(void) = Call[String] : func:r2062_3, this:r2062_1 -# 2062| mu2062_5(unknown) = ^CallSideEffect : ~m? -# 2062| mu2062_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2062_1 -# 2063| r2063_1(glval) = VariableAddress[x681] : -# 2063| r2063_2(glval) = FunctionAddress[~String] : -# 2063| v2063_3(void) = Call[~String] : func:r2063_2, this:r2063_1 -# 2063| mu2063_4(unknown) = ^CallSideEffect : ~m? -# 2063| v2063_5(void) = ^IndirectReadSideEffect[-1] : &:r2063_1, ~m? -# 2063| mu2063_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2063_1 -# 2063| r2063_7(bool) = Constant[0] : -# 2063| v2063_8(void) = ConditionalBranch : r2063_7 +# 35| Block 682 +# 35| r35_9535(glval) = VariableAddress[x681] : +# 35| mu35_9536(String) = Uninitialized[x681] : &:r35_9535 +# 35| r35_9537(glval) = FunctionAddress[String] : +# 35| v35_9538(void) = Call[String] : func:r35_9537, this:r35_9535 +# 35| mu35_9539(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9540(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9535 +# 35| r35_9541(glval) = VariableAddress[x681] : +# 35| r35_9542(glval) = FunctionAddress[~String] : +# 35| v35_9543(void) = Call[~String] : func:r35_9542, this:r35_9541 +# 35| mu35_9544(unknown) = ^CallSideEffect : ~m? +# 35| v35_9545(void) = ^IndirectReadSideEffect[-1] : &:r35_9541, ~m? +# 35| mu35_9546(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9541 +# 35| r35_9547(bool) = Constant[0] : +# 35| v35_9548(void) = ConditionalBranch : r35_9547 #-----| False -> Block 683 #-----| True (back edge) -> Block 682 -# 2065| Block 683 -# 2065| r2065_1(glval) = VariableAddress[x682] : -# 2065| mu2065_2(String) = Uninitialized[x682] : &:r2065_1 -# 2065| r2065_3(glval) = FunctionAddress[String] : -# 2065| v2065_4(void) = Call[String] : func:r2065_3, this:r2065_1 -# 2065| mu2065_5(unknown) = ^CallSideEffect : ~m? -# 2065| mu2065_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2065_1 -# 2066| r2066_1(glval) = VariableAddress[x682] : -# 2066| r2066_2(glval) = FunctionAddress[~String] : -# 2066| v2066_3(void) = Call[~String] : func:r2066_2, this:r2066_1 -# 2066| mu2066_4(unknown) = ^CallSideEffect : ~m? -# 2066| v2066_5(void) = ^IndirectReadSideEffect[-1] : &:r2066_1, ~m? -# 2066| mu2066_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2066_1 -# 2066| r2066_7(bool) = Constant[0] : -# 2066| v2066_8(void) = ConditionalBranch : r2066_7 +# 35| Block 683 +# 35| r35_9549(glval) = VariableAddress[x682] : +# 35| mu35_9550(String) = Uninitialized[x682] : &:r35_9549 +# 35| r35_9551(glval) = FunctionAddress[String] : +# 35| v35_9552(void) = Call[String] : func:r35_9551, this:r35_9549 +# 35| mu35_9553(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9554(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9549 +# 35| r35_9555(glval) = VariableAddress[x682] : +# 35| r35_9556(glval) = FunctionAddress[~String] : +# 35| v35_9557(void) = Call[~String] : func:r35_9556, this:r35_9555 +# 35| mu35_9558(unknown) = ^CallSideEffect : ~m? +# 35| v35_9559(void) = ^IndirectReadSideEffect[-1] : &:r35_9555, ~m? +# 35| mu35_9560(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9555 +# 35| r35_9561(bool) = Constant[0] : +# 35| v35_9562(void) = ConditionalBranch : r35_9561 #-----| False -> Block 684 #-----| True (back edge) -> Block 683 -# 2068| Block 684 -# 2068| r2068_1(glval) = VariableAddress[x683] : -# 2068| mu2068_2(String) = Uninitialized[x683] : &:r2068_1 -# 2068| r2068_3(glval) = FunctionAddress[String] : -# 2068| v2068_4(void) = Call[String] : func:r2068_3, this:r2068_1 -# 2068| mu2068_5(unknown) = ^CallSideEffect : ~m? -# 2068| mu2068_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2068_1 -# 2069| r2069_1(glval) = VariableAddress[x683] : -# 2069| r2069_2(glval) = FunctionAddress[~String] : -# 2069| v2069_3(void) = Call[~String] : func:r2069_2, this:r2069_1 -# 2069| mu2069_4(unknown) = ^CallSideEffect : ~m? -# 2069| v2069_5(void) = ^IndirectReadSideEffect[-1] : &:r2069_1, ~m? -# 2069| mu2069_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2069_1 -# 2069| r2069_7(bool) = Constant[0] : -# 2069| v2069_8(void) = ConditionalBranch : r2069_7 +# 35| Block 684 +# 35| r35_9563(glval) = VariableAddress[x683] : +# 35| mu35_9564(String) = Uninitialized[x683] : &:r35_9563 +# 35| r35_9565(glval) = FunctionAddress[String] : +# 35| v35_9566(void) = Call[String] : func:r35_9565, this:r35_9563 +# 35| mu35_9567(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9568(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9563 +# 35| r35_9569(glval) = VariableAddress[x683] : +# 35| r35_9570(glval) = FunctionAddress[~String] : +# 35| v35_9571(void) = Call[~String] : func:r35_9570, this:r35_9569 +# 35| mu35_9572(unknown) = ^CallSideEffect : ~m? +# 35| v35_9573(void) = ^IndirectReadSideEffect[-1] : &:r35_9569, ~m? +# 35| mu35_9574(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9569 +# 35| r35_9575(bool) = Constant[0] : +# 35| v35_9576(void) = ConditionalBranch : r35_9575 #-----| False -> Block 685 #-----| True (back edge) -> Block 684 -# 2071| Block 685 -# 2071| r2071_1(glval) = VariableAddress[x684] : -# 2071| mu2071_2(String) = Uninitialized[x684] : &:r2071_1 -# 2071| r2071_3(glval) = FunctionAddress[String] : -# 2071| v2071_4(void) = Call[String] : func:r2071_3, this:r2071_1 -# 2071| mu2071_5(unknown) = ^CallSideEffect : ~m? -# 2071| mu2071_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2071_1 -# 2072| r2072_1(glval) = VariableAddress[x684] : -# 2072| r2072_2(glval) = FunctionAddress[~String] : -# 2072| v2072_3(void) = Call[~String] : func:r2072_2, this:r2072_1 -# 2072| mu2072_4(unknown) = ^CallSideEffect : ~m? -# 2072| v2072_5(void) = ^IndirectReadSideEffect[-1] : &:r2072_1, ~m? -# 2072| mu2072_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2072_1 -# 2072| r2072_7(bool) = Constant[0] : -# 2072| v2072_8(void) = ConditionalBranch : r2072_7 +# 35| Block 685 +# 35| r35_9577(glval) = VariableAddress[x684] : +# 35| mu35_9578(String) = Uninitialized[x684] : &:r35_9577 +# 35| r35_9579(glval) = FunctionAddress[String] : +# 35| v35_9580(void) = Call[String] : func:r35_9579, this:r35_9577 +# 35| mu35_9581(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9582(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9577 +# 35| r35_9583(glval) = VariableAddress[x684] : +# 35| r35_9584(glval) = FunctionAddress[~String] : +# 35| v35_9585(void) = Call[~String] : func:r35_9584, this:r35_9583 +# 35| mu35_9586(unknown) = ^CallSideEffect : ~m? +# 35| v35_9587(void) = ^IndirectReadSideEffect[-1] : &:r35_9583, ~m? +# 35| mu35_9588(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9583 +# 35| r35_9589(bool) = Constant[0] : +# 35| v35_9590(void) = ConditionalBranch : r35_9589 #-----| False -> Block 686 #-----| True (back edge) -> Block 685 -# 2074| Block 686 -# 2074| r2074_1(glval) = VariableAddress[x685] : -# 2074| mu2074_2(String) = Uninitialized[x685] : &:r2074_1 -# 2074| r2074_3(glval) = FunctionAddress[String] : -# 2074| v2074_4(void) = Call[String] : func:r2074_3, this:r2074_1 -# 2074| mu2074_5(unknown) = ^CallSideEffect : ~m? -# 2074| mu2074_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2074_1 -# 2075| r2075_1(glval) = VariableAddress[x685] : -# 2075| r2075_2(glval) = FunctionAddress[~String] : -# 2075| v2075_3(void) = Call[~String] : func:r2075_2, this:r2075_1 -# 2075| mu2075_4(unknown) = ^CallSideEffect : ~m? -# 2075| v2075_5(void) = ^IndirectReadSideEffect[-1] : &:r2075_1, ~m? -# 2075| mu2075_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2075_1 -# 2075| r2075_7(bool) = Constant[0] : -# 2075| v2075_8(void) = ConditionalBranch : r2075_7 +# 35| Block 686 +# 35| r35_9591(glval) = VariableAddress[x685] : +# 35| mu35_9592(String) = Uninitialized[x685] : &:r35_9591 +# 35| r35_9593(glval) = FunctionAddress[String] : +# 35| v35_9594(void) = Call[String] : func:r35_9593, this:r35_9591 +# 35| mu35_9595(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9596(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9591 +# 35| r35_9597(glval) = VariableAddress[x685] : +# 35| r35_9598(glval) = FunctionAddress[~String] : +# 35| v35_9599(void) = Call[~String] : func:r35_9598, this:r35_9597 +# 35| mu35_9600(unknown) = ^CallSideEffect : ~m? +# 35| v35_9601(void) = ^IndirectReadSideEffect[-1] : &:r35_9597, ~m? +# 35| mu35_9602(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9597 +# 35| r35_9603(bool) = Constant[0] : +# 35| v35_9604(void) = ConditionalBranch : r35_9603 #-----| False -> Block 687 #-----| True (back edge) -> Block 686 -# 2077| Block 687 -# 2077| r2077_1(glval) = VariableAddress[x686] : -# 2077| mu2077_2(String) = Uninitialized[x686] : &:r2077_1 -# 2077| r2077_3(glval) = FunctionAddress[String] : -# 2077| v2077_4(void) = Call[String] : func:r2077_3, this:r2077_1 -# 2077| mu2077_5(unknown) = ^CallSideEffect : ~m? -# 2077| mu2077_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2077_1 -# 2078| r2078_1(glval) = VariableAddress[x686] : -# 2078| r2078_2(glval) = FunctionAddress[~String] : -# 2078| v2078_3(void) = Call[~String] : func:r2078_2, this:r2078_1 -# 2078| mu2078_4(unknown) = ^CallSideEffect : ~m? -# 2078| v2078_5(void) = ^IndirectReadSideEffect[-1] : &:r2078_1, ~m? -# 2078| mu2078_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2078_1 -# 2078| r2078_7(bool) = Constant[0] : -# 2078| v2078_8(void) = ConditionalBranch : r2078_7 +# 35| Block 687 +# 35| r35_9605(glval) = VariableAddress[x686] : +# 35| mu35_9606(String) = Uninitialized[x686] : &:r35_9605 +# 35| r35_9607(glval) = FunctionAddress[String] : +# 35| v35_9608(void) = Call[String] : func:r35_9607, this:r35_9605 +# 35| mu35_9609(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9610(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9605 +# 35| r35_9611(glval) = VariableAddress[x686] : +# 35| r35_9612(glval) = FunctionAddress[~String] : +# 35| v35_9613(void) = Call[~String] : func:r35_9612, this:r35_9611 +# 35| mu35_9614(unknown) = ^CallSideEffect : ~m? +# 35| v35_9615(void) = ^IndirectReadSideEffect[-1] : &:r35_9611, ~m? +# 35| mu35_9616(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9611 +# 35| r35_9617(bool) = Constant[0] : +# 35| v35_9618(void) = ConditionalBranch : r35_9617 #-----| False -> Block 688 #-----| True (back edge) -> Block 687 -# 2080| Block 688 -# 2080| r2080_1(glval) = VariableAddress[x687] : -# 2080| mu2080_2(String) = Uninitialized[x687] : &:r2080_1 -# 2080| r2080_3(glval) = FunctionAddress[String] : -# 2080| v2080_4(void) = Call[String] : func:r2080_3, this:r2080_1 -# 2080| mu2080_5(unknown) = ^CallSideEffect : ~m? -# 2080| mu2080_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2080_1 -# 2081| r2081_1(glval) = VariableAddress[x687] : -# 2081| r2081_2(glval) = FunctionAddress[~String] : -# 2081| v2081_3(void) = Call[~String] : func:r2081_2, this:r2081_1 -# 2081| mu2081_4(unknown) = ^CallSideEffect : ~m? -# 2081| v2081_5(void) = ^IndirectReadSideEffect[-1] : &:r2081_1, ~m? -# 2081| mu2081_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2081_1 -# 2081| r2081_7(bool) = Constant[0] : -# 2081| v2081_8(void) = ConditionalBranch : r2081_7 +# 35| Block 688 +# 35| r35_9619(glval) = VariableAddress[x687] : +# 35| mu35_9620(String) = Uninitialized[x687] : &:r35_9619 +# 35| r35_9621(glval) = FunctionAddress[String] : +# 35| v35_9622(void) = Call[String] : func:r35_9621, this:r35_9619 +# 35| mu35_9623(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9624(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9619 +# 35| r35_9625(glval) = VariableAddress[x687] : +# 35| r35_9626(glval) = FunctionAddress[~String] : +# 35| v35_9627(void) = Call[~String] : func:r35_9626, this:r35_9625 +# 35| mu35_9628(unknown) = ^CallSideEffect : ~m? +# 35| v35_9629(void) = ^IndirectReadSideEffect[-1] : &:r35_9625, ~m? +# 35| mu35_9630(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9625 +# 35| r35_9631(bool) = Constant[0] : +# 35| v35_9632(void) = ConditionalBranch : r35_9631 #-----| False -> Block 689 #-----| True (back edge) -> Block 688 -# 2083| Block 689 -# 2083| r2083_1(glval) = VariableAddress[x688] : -# 2083| mu2083_2(String) = Uninitialized[x688] : &:r2083_1 -# 2083| r2083_3(glval) = FunctionAddress[String] : -# 2083| v2083_4(void) = Call[String] : func:r2083_3, this:r2083_1 -# 2083| mu2083_5(unknown) = ^CallSideEffect : ~m? -# 2083| mu2083_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2083_1 -# 2084| r2084_1(glval) = VariableAddress[x688] : -# 2084| r2084_2(glval) = FunctionAddress[~String] : -# 2084| v2084_3(void) = Call[~String] : func:r2084_2, this:r2084_1 -# 2084| mu2084_4(unknown) = ^CallSideEffect : ~m? -# 2084| v2084_5(void) = ^IndirectReadSideEffect[-1] : &:r2084_1, ~m? -# 2084| mu2084_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2084_1 -# 2084| r2084_7(bool) = Constant[0] : -# 2084| v2084_8(void) = ConditionalBranch : r2084_7 +# 35| Block 689 +# 35| r35_9633(glval) = VariableAddress[x688] : +# 35| mu35_9634(String) = Uninitialized[x688] : &:r35_9633 +# 35| r35_9635(glval) = FunctionAddress[String] : +# 35| v35_9636(void) = Call[String] : func:r35_9635, this:r35_9633 +# 35| mu35_9637(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9638(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9633 +# 35| r35_9639(glval) = VariableAddress[x688] : +# 35| r35_9640(glval) = FunctionAddress[~String] : +# 35| v35_9641(void) = Call[~String] : func:r35_9640, this:r35_9639 +# 35| mu35_9642(unknown) = ^CallSideEffect : ~m? +# 35| v35_9643(void) = ^IndirectReadSideEffect[-1] : &:r35_9639, ~m? +# 35| mu35_9644(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9639 +# 35| r35_9645(bool) = Constant[0] : +# 35| v35_9646(void) = ConditionalBranch : r35_9645 #-----| False -> Block 690 #-----| True (back edge) -> Block 689 -# 2086| Block 690 -# 2086| r2086_1(glval) = VariableAddress[x689] : -# 2086| mu2086_2(String) = Uninitialized[x689] : &:r2086_1 -# 2086| r2086_3(glval) = FunctionAddress[String] : -# 2086| v2086_4(void) = Call[String] : func:r2086_3, this:r2086_1 -# 2086| mu2086_5(unknown) = ^CallSideEffect : ~m? -# 2086| mu2086_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2086_1 -# 2087| r2087_1(glval) = VariableAddress[x689] : -# 2087| r2087_2(glval) = FunctionAddress[~String] : -# 2087| v2087_3(void) = Call[~String] : func:r2087_2, this:r2087_1 -# 2087| mu2087_4(unknown) = ^CallSideEffect : ~m? -# 2087| v2087_5(void) = ^IndirectReadSideEffect[-1] : &:r2087_1, ~m? -# 2087| mu2087_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2087_1 -# 2087| r2087_7(bool) = Constant[0] : -# 2087| v2087_8(void) = ConditionalBranch : r2087_7 +# 35| Block 690 +# 35| r35_9647(glval) = VariableAddress[x689] : +# 35| mu35_9648(String) = Uninitialized[x689] : &:r35_9647 +# 35| r35_9649(glval) = FunctionAddress[String] : +# 35| v35_9650(void) = Call[String] : func:r35_9649, this:r35_9647 +# 35| mu35_9651(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9652(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9647 +# 35| r35_9653(glval) = VariableAddress[x689] : +# 35| r35_9654(glval) = FunctionAddress[~String] : +# 35| v35_9655(void) = Call[~String] : func:r35_9654, this:r35_9653 +# 35| mu35_9656(unknown) = ^CallSideEffect : ~m? +# 35| v35_9657(void) = ^IndirectReadSideEffect[-1] : &:r35_9653, ~m? +# 35| mu35_9658(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9653 +# 35| r35_9659(bool) = Constant[0] : +# 35| v35_9660(void) = ConditionalBranch : r35_9659 #-----| False -> Block 691 #-----| True (back edge) -> Block 690 -# 2089| Block 691 -# 2089| r2089_1(glval) = VariableAddress[x690] : -# 2089| mu2089_2(String) = Uninitialized[x690] : &:r2089_1 -# 2089| r2089_3(glval) = FunctionAddress[String] : -# 2089| v2089_4(void) = Call[String] : func:r2089_3, this:r2089_1 -# 2089| mu2089_5(unknown) = ^CallSideEffect : ~m? -# 2089| mu2089_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2089_1 -# 2090| r2090_1(glval) = VariableAddress[x690] : -# 2090| r2090_2(glval) = FunctionAddress[~String] : -# 2090| v2090_3(void) = Call[~String] : func:r2090_2, this:r2090_1 -# 2090| mu2090_4(unknown) = ^CallSideEffect : ~m? -# 2090| v2090_5(void) = ^IndirectReadSideEffect[-1] : &:r2090_1, ~m? -# 2090| mu2090_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2090_1 -# 2090| r2090_7(bool) = Constant[0] : -# 2090| v2090_8(void) = ConditionalBranch : r2090_7 +# 35| Block 691 +# 35| r35_9661(glval) = VariableAddress[x690] : +# 35| mu35_9662(String) = Uninitialized[x690] : &:r35_9661 +# 35| r35_9663(glval) = FunctionAddress[String] : +# 35| v35_9664(void) = Call[String] : func:r35_9663, this:r35_9661 +# 35| mu35_9665(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9666(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9661 +# 35| r35_9667(glval) = VariableAddress[x690] : +# 35| r35_9668(glval) = FunctionAddress[~String] : +# 35| v35_9669(void) = Call[~String] : func:r35_9668, this:r35_9667 +# 35| mu35_9670(unknown) = ^CallSideEffect : ~m? +# 35| v35_9671(void) = ^IndirectReadSideEffect[-1] : &:r35_9667, ~m? +# 35| mu35_9672(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9667 +# 35| r35_9673(bool) = Constant[0] : +# 35| v35_9674(void) = ConditionalBranch : r35_9673 #-----| False -> Block 692 #-----| True (back edge) -> Block 691 -# 2092| Block 692 -# 2092| r2092_1(glval) = VariableAddress[x691] : -# 2092| mu2092_2(String) = Uninitialized[x691] : &:r2092_1 -# 2092| r2092_3(glval) = FunctionAddress[String] : -# 2092| v2092_4(void) = Call[String] : func:r2092_3, this:r2092_1 -# 2092| mu2092_5(unknown) = ^CallSideEffect : ~m? -# 2092| mu2092_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2092_1 -# 2093| r2093_1(glval) = VariableAddress[x691] : -# 2093| r2093_2(glval) = FunctionAddress[~String] : -# 2093| v2093_3(void) = Call[~String] : func:r2093_2, this:r2093_1 -# 2093| mu2093_4(unknown) = ^CallSideEffect : ~m? -# 2093| v2093_5(void) = ^IndirectReadSideEffect[-1] : &:r2093_1, ~m? -# 2093| mu2093_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2093_1 -# 2093| r2093_7(bool) = Constant[0] : -# 2093| v2093_8(void) = ConditionalBranch : r2093_7 +# 35| Block 692 +# 35| r35_9675(glval) = VariableAddress[x691] : +# 35| mu35_9676(String) = Uninitialized[x691] : &:r35_9675 +# 35| r35_9677(glval) = FunctionAddress[String] : +# 35| v35_9678(void) = Call[String] : func:r35_9677, this:r35_9675 +# 35| mu35_9679(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9680(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9675 +# 35| r35_9681(glval) = VariableAddress[x691] : +# 35| r35_9682(glval) = FunctionAddress[~String] : +# 35| v35_9683(void) = Call[~String] : func:r35_9682, this:r35_9681 +# 35| mu35_9684(unknown) = ^CallSideEffect : ~m? +# 35| v35_9685(void) = ^IndirectReadSideEffect[-1] : &:r35_9681, ~m? +# 35| mu35_9686(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9681 +# 35| r35_9687(bool) = Constant[0] : +# 35| v35_9688(void) = ConditionalBranch : r35_9687 #-----| False -> Block 693 #-----| True (back edge) -> Block 692 -# 2095| Block 693 -# 2095| r2095_1(glval) = VariableAddress[x692] : -# 2095| mu2095_2(String) = Uninitialized[x692] : &:r2095_1 -# 2095| r2095_3(glval) = FunctionAddress[String] : -# 2095| v2095_4(void) = Call[String] : func:r2095_3, this:r2095_1 -# 2095| mu2095_5(unknown) = ^CallSideEffect : ~m? -# 2095| mu2095_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2095_1 -# 2096| r2096_1(glval) = VariableAddress[x692] : -# 2096| r2096_2(glval) = FunctionAddress[~String] : -# 2096| v2096_3(void) = Call[~String] : func:r2096_2, this:r2096_1 -# 2096| mu2096_4(unknown) = ^CallSideEffect : ~m? -# 2096| v2096_5(void) = ^IndirectReadSideEffect[-1] : &:r2096_1, ~m? -# 2096| mu2096_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2096_1 -# 2096| r2096_7(bool) = Constant[0] : -# 2096| v2096_8(void) = ConditionalBranch : r2096_7 +# 35| Block 693 +# 35| r35_9689(glval) = VariableAddress[x692] : +# 35| mu35_9690(String) = Uninitialized[x692] : &:r35_9689 +# 35| r35_9691(glval) = FunctionAddress[String] : +# 35| v35_9692(void) = Call[String] : func:r35_9691, this:r35_9689 +# 35| mu35_9693(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9694(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9689 +# 35| r35_9695(glval) = VariableAddress[x692] : +# 35| r35_9696(glval) = FunctionAddress[~String] : +# 35| v35_9697(void) = Call[~String] : func:r35_9696, this:r35_9695 +# 35| mu35_9698(unknown) = ^CallSideEffect : ~m? +# 35| v35_9699(void) = ^IndirectReadSideEffect[-1] : &:r35_9695, ~m? +# 35| mu35_9700(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9695 +# 35| r35_9701(bool) = Constant[0] : +# 35| v35_9702(void) = ConditionalBranch : r35_9701 #-----| False -> Block 694 #-----| True (back edge) -> Block 693 -# 2098| Block 694 -# 2098| r2098_1(glval) = VariableAddress[x693] : -# 2098| mu2098_2(String) = Uninitialized[x693] : &:r2098_1 -# 2098| r2098_3(glval) = FunctionAddress[String] : -# 2098| v2098_4(void) = Call[String] : func:r2098_3, this:r2098_1 -# 2098| mu2098_5(unknown) = ^CallSideEffect : ~m? -# 2098| mu2098_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2098_1 -# 2099| r2099_1(glval) = VariableAddress[x693] : -# 2099| r2099_2(glval) = FunctionAddress[~String] : -# 2099| v2099_3(void) = Call[~String] : func:r2099_2, this:r2099_1 -# 2099| mu2099_4(unknown) = ^CallSideEffect : ~m? -# 2099| v2099_5(void) = ^IndirectReadSideEffect[-1] : &:r2099_1, ~m? -# 2099| mu2099_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2099_1 -# 2099| r2099_7(bool) = Constant[0] : -# 2099| v2099_8(void) = ConditionalBranch : r2099_7 +# 35| Block 694 +# 35| r35_9703(glval) = VariableAddress[x693] : +# 35| mu35_9704(String) = Uninitialized[x693] : &:r35_9703 +# 35| r35_9705(glval) = FunctionAddress[String] : +# 35| v35_9706(void) = Call[String] : func:r35_9705, this:r35_9703 +# 35| mu35_9707(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9708(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9703 +# 35| r35_9709(glval) = VariableAddress[x693] : +# 35| r35_9710(glval) = FunctionAddress[~String] : +# 35| v35_9711(void) = Call[~String] : func:r35_9710, this:r35_9709 +# 35| mu35_9712(unknown) = ^CallSideEffect : ~m? +# 35| v35_9713(void) = ^IndirectReadSideEffect[-1] : &:r35_9709, ~m? +# 35| mu35_9714(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9709 +# 35| r35_9715(bool) = Constant[0] : +# 35| v35_9716(void) = ConditionalBranch : r35_9715 #-----| False -> Block 695 #-----| True (back edge) -> Block 694 -# 2101| Block 695 -# 2101| r2101_1(glval) = VariableAddress[x694] : -# 2101| mu2101_2(String) = Uninitialized[x694] : &:r2101_1 -# 2101| r2101_3(glval) = FunctionAddress[String] : -# 2101| v2101_4(void) = Call[String] : func:r2101_3, this:r2101_1 -# 2101| mu2101_5(unknown) = ^CallSideEffect : ~m? -# 2101| mu2101_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2101_1 -# 2102| r2102_1(glval) = VariableAddress[x694] : -# 2102| r2102_2(glval) = FunctionAddress[~String] : -# 2102| v2102_3(void) = Call[~String] : func:r2102_2, this:r2102_1 -# 2102| mu2102_4(unknown) = ^CallSideEffect : ~m? -# 2102| v2102_5(void) = ^IndirectReadSideEffect[-1] : &:r2102_1, ~m? -# 2102| mu2102_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2102_1 -# 2102| r2102_7(bool) = Constant[0] : -# 2102| v2102_8(void) = ConditionalBranch : r2102_7 +# 35| Block 695 +# 35| r35_9717(glval) = VariableAddress[x694] : +# 35| mu35_9718(String) = Uninitialized[x694] : &:r35_9717 +# 35| r35_9719(glval) = FunctionAddress[String] : +# 35| v35_9720(void) = Call[String] : func:r35_9719, this:r35_9717 +# 35| mu35_9721(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9722(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9717 +# 35| r35_9723(glval) = VariableAddress[x694] : +# 35| r35_9724(glval) = FunctionAddress[~String] : +# 35| v35_9725(void) = Call[~String] : func:r35_9724, this:r35_9723 +# 35| mu35_9726(unknown) = ^CallSideEffect : ~m? +# 35| v35_9727(void) = ^IndirectReadSideEffect[-1] : &:r35_9723, ~m? +# 35| mu35_9728(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9723 +# 35| r35_9729(bool) = Constant[0] : +# 35| v35_9730(void) = ConditionalBranch : r35_9729 #-----| False -> Block 696 #-----| True (back edge) -> Block 695 -# 2104| Block 696 -# 2104| r2104_1(glval) = VariableAddress[x695] : -# 2104| mu2104_2(String) = Uninitialized[x695] : &:r2104_1 -# 2104| r2104_3(glval) = FunctionAddress[String] : -# 2104| v2104_4(void) = Call[String] : func:r2104_3, this:r2104_1 -# 2104| mu2104_5(unknown) = ^CallSideEffect : ~m? -# 2104| mu2104_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2104_1 -# 2105| r2105_1(glval) = VariableAddress[x695] : -# 2105| r2105_2(glval) = FunctionAddress[~String] : -# 2105| v2105_3(void) = Call[~String] : func:r2105_2, this:r2105_1 -# 2105| mu2105_4(unknown) = ^CallSideEffect : ~m? -# 2105| v2105_5(void) = ^IndirectReadSideEffect[-1] : &:r2105_1, ~m? -# 2105| mu2105_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2105_1 -# 2105| r2105_7(bool) = Constant[0] : -# 2105| v2105_8(void) = ConditionalBranch : r2105_7 +# 35| Block 696 +# 35| r35_9731(glval) = VariableAddress[x695] : +# 35| mu35_9732(String) = Uninitialized[x695] : &:r35_9731 +# 35| r35_9733(glval) = FunctionAddress[String] : +# 35| v35_9734(void) = Call[String] : func:r35_9733, this:r35_9731 +# 35| mu35_9735(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9736(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9731 +# 35| r35_9737(glval) = VariableAddress[x695] : +# 35| r35_9738(glval) = FunctionAddress[~String] : +# 35| v35_9739(void) = Call[~String] : func:r35_9738, this:r35_9737 +# 35| mu35_9740(unknown) = ^CallSideEffect : ~m? +# 35| v35_9741(void) = ^IndirectReadSideEffect[-1] : &:r35_9737, ~m? +# 35| mu35_9742(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9737 +# 35| r35_9743(bool) = Constant[0] : +# 35| v35_9744(void) = ConditionalBranch : r35_9743 #-----| False -> Block 697 #-----| True (back edge) -> Block 696 -# 2107| Block 697 -# 2107| r2107_1(glval) = VariableAddress[x696] : -# 2107| mu2107_2(String) = Uninitialized[x696] : &:r2107_1 -# 2107| r2107_3(glval) = FunctionAddress[String] : -# 2107| v2107_4(void) = Call[String] : func:r2107_3, this:r2107_1 -# 2107| mu2107_5(unknown) = ^CallSideEffect : ~m? -# 2107| mu2107_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2107_1 -# 2108| r2108_1(glval) = VariableAddress[x696] : -# 2108| r2108_2(glval) = FunctionAddress[~String] : -# 2108| v2108_3(void) = Call[~String] : func:r2108_2, this:r2108_1 -# 2108| mu2108_4(unknown) = ^CallSideEffect : ~m? -# 2108| v2108_5(void) = ^IndirectReadSideEffect[-1] : &:r2108_1, ~m? -# 2108| mu2108_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2108_1 -# 2108| r2108_7(bool) = Constant[0] : -# 2108| v2108_8(void) = ConditionalBranch : r2108_7 +# 35| Block 697 +# 35| r35_9745(glval) = VariableAddress[x696] : +# 35| mu35_9746(String) = Uninitialized[x696] : &:r35_9745 +# 35| r35_9747(glval) = FunctionAddress[String] : +# 35| v35_9748(void) = Call[String] : func:r35_9747, this:r35_9745 +# 35| mu35_9749(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9750(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9745 +# 35| r35_9751(glval) = VariableAddress[x696] : +# 35| r35_9752(glval) = FunctionAddress[~String] : +# 35| v35_9753(void) = Call[~String] : func:r35_9752, this:r35_9751 +# 35| mu35_9754(unknown) = ^CallSideEffect : ~m? +# 35| v35_9755(void) = ^IndirectReadSideEffect[-1] : &:r35_9751, ~m? +# 35| mu35_9756(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9751 +# 35| r35_9757(bool) = Constant[0] : +# 35| v35_9758(void) = ConditionalBranch : r35_9757 #-----| False -> Block 698 #-----| True (back edge) -> Block 697 -# 2110| Block 698 -# 2110| r2110_1(glval) = VariableAddress[x697] : -# 2110| mu2110_2(String) = Uninitialized[x697] : &:r2110_1 -# 2110| r2110_3(glval) = FunctionAddress[String] : -# 2110| v2110_4(void) = Call[String] : func:r2110_3, this:r2110_1 -# 2110| mu2110_5(unknown) = ^CallSideEffect : ~m? -# 2110| mu2110_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2110_1 -# 2111| r2111_1(glval) = VariableAddress[x697] : -# 2111| r2111_2(glval) = FunctionAddress[~String] : -# 2111| v2111_3(void) = Call[~String] : func:r2111_2, this:r2111_1 -# 2111| mu2111_4(unknown) = ^CallSideEffect : ~m? -# 2111| v2111_5(void) = ^IndirectReadSideEffect[-1] : &:r2111_1, ~m? -# 2111| mu2111_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2111_1 -# 2111| r2111_7(bool) = Constant[0] : -# 2111| v2111_8(void) = ConditionalBranch : r2111_7 +# 35| Block 698 +# 35| r35_9759(glval) = VariableAddress[x697] : +# 35| mu35_9760(String) = Uninitialized[x697] : &:r35_9759 +# 35| r35_9761(glval) = FunctionAddress[String] : +# 35| v35_9762(void) = Call[String] : func:r35_9761, this:r35_9759 +# 35| mu35_9763(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9764(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9759 +# 35| r35_9765(glval) = VariableAddress[x697] : +# 35| r35_9766(glval) = FunctionAddress[~String] : +# 35| v35_9767(void) = Call[~String] : func:r35_9766, this:r35_9765 +# 35| mu35_9768(unknown) = ^CallSideEffect : ~m? +# 35| v35_9769(void) = ^IndirectReadSideEffect[-1] : &:r35_9765, ~m? +# 35| mu35_9770(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9765 +# 35| r35_9771(bool) = Constant[0] : +# 35| v35_9772(void) = ConditionalBranch : r35_9771 #-----| False -> Block 699 #-----| True (back edge) -> Block 698 -# 2113| Block 699 -# 2113| r2113_1(glval) = VariableAddress[x698] : -# 2113| mu2113_2(String) = Uninitialized[x698] : &:r2113_1 -# 2113| r2113_3(glval) = FunctionAddress[String] : -# 2113| v2113_4(void) = Call[String] : func:r2113_3, this:r2113_1 -# 2113| mu2113_5(unknown) = ^CallSideEffect : ~m? -# 2113| mu2113_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2113_1 -# 2114| r2114_1(glval) = VariableAddress[x698] : -# 2114| r2114_2(glval) = FunctionAddress[~String] : -# 2114| v2114_3(void) = Call[~String] : func:r2114_2, this:r2114_1 -# 2114| mu2114_4(unknown) = ^CallSideEffect : ~m? -# 2114| v2114_5(void) = ^IndirectReadSideEffect[-1] : &:r2114_1, ~m? -# 2114| mu2114_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2114_1 -# 2114| r2114_7(bool) = Constant[0] : -# 2114| v2114_8(void) = ConditionalBranch : r2114_7 +# 35| Block 699 +# 35| r35_9773(glval) = VariableAddress[x698] : +# 35| mu35_9774(String) = Uninitialized[x698] : &:r35_9773 +# 35| r35_9775(glval) = FunctionAddress[String] : +# 35| v35_9776(void) = Call[String] : func:r35_9775, this:r35_9773 +# 35| mu35_9777(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9778(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9773 +# 35| r35_9779(glval) = VariableAddress[x698] : +# 35| r35_9780(glval) = FunctionAddress[~String] : +# 35| v35_9781(void) = Call[~String] : func:r35_9780, this:r35_9779 +# 35| mu35_9782(unknown) = ^CallSideEffect : ~m? +# 35| v35_9783(void) = ^IndirectReadSideEffect[-1] : &:r35_9779, ~m? +# 35| mu35_9784(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9779 +# 35| r35_9785(bool) = Constant[0] : +# 35| v35_9786(void) = ConditionalBranch : r35_9785 #-----| False -> Block 700 #-----| True (back edge) -> Block 699 -# 2116| Block 700 -# 2116| r2116_1(glval) = VariableAddress[x699] : -# 2116| mu2116_2(String) = Uninitialized[x699] : &:r2116_1 -# 2116| r2116_3(glval) = FunctionAddress[String] : -# 2116| v2116_4(void) = Call[String] : func:r2116_3, this:r2116_1 -# 2116| mu2116_5(unknown) = ^CallSideEffect : ~m? -# 2116| mu2116_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2116_1 -# 2117| r2117_1(glval) = VariableAddress[x699] : -# 2117| r2117_2(glval) = FunctionAddress[~String] : -# 2117| v2117_3(void) = Call[~String] : func:r2117_2, this:r2117_1 -# 2117| mu2117_4(unknown) = ^CallSideEffect : ~m? -# 2117| v2117_5(void) = ^IndirectReadSideEffect[-1] : &:r2117_1, ~m? -# 2117| mu2117_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2117_1 -# 2117| r2117_7(bool) = Constant[0] : -# 2117| v2117_8(void) = ConditionalBranch : r2117_7 +# 35| Block 700 +# 35| r35_9787(glval) = VariableAddress[x699] : +# 35| mu35_9788(String) = Uninitialized[x699] : &:r35_9787 +# 35| r35_9789(glval) = FunctionAddress[String] : +# 35| v35_9790(void) = Call[String] : func:r35_9789, this:r35_9787 +# 35| mu35_9791(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9792(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9787 +# 35| r35_9793(glval) = VariableAddress[x699] : +# 35| r35_9794(glval) = FunctionAddress[~String] : +# 35| v35_9795(void) = Call[~String] : func:r35_9794, this:r35_9793 +# 35| mu35_9796(unknown) = ^CallSideEffect : ~m? +# 35| v35_9797(void) = ^IndirectReadSideEffect[-1] : &:r35_9793, ~m? +# 35| mu35_9798(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9793 +# 35| r35_9799(bool) = Constant[0] : +# 35| v35_9800(void) = ConditionalBranch : r35_9799 #-----| False -> Block 701 #-----| True (back edge) -> Block 700 -# 2119| Block 701 -# 2119| r2119_1(glval) = VariableAddress[x700] : -# 2119| mu2119_2(String) = Uninitialized[x700] : &:r2119_1 -# 2119| r2119_3(glval) = FunctionAddress[String] : -# 2119| v2119_4(void) = Call[String] : func:r2119_3, this:r2119_1 -# 2119| mu2119_5(unknown) = ^CallSideEffect : ~m? -# 2119| mu2119_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2119_1 -# 2120| r2120_1(glval) = VariableAddress[x700] : -# 2120| r2120_2(glval) = FunctionAddress[~String] : -# 2120| v2120_3(void) = Call[~String] : func:r2120_2, this:r2120_1 -# 2120| mu2120_4(unknown) = ^CallSideEffect : ~m? -# 2120| v2120_5(void) = ^IndirectReadSideEffect[-1] : &:r2120_1, ~m? -# 2120| mu2120_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2120_1 -# 2120| r2120_7(bool) = Constant[0] : -# 2120| v2120_8(void) = ConditionalBranch : r2120_7 +# 35| Block 701 +# 35| r35_9801(glval) = VariableAddress[x700] : +# 35| mu35_9802(String) = Uninitialized[x700] : &:r35_9801 +# 35| r35_9803(glval) = FunctionAddress[String] : +# 35| v35_9804(void) = Call[String] : func:r35_9803, this:r35_9801 +# 35| mu35_9805(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9806(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9801 +# 35| r35_9807(glval) = VariableAddress[x700] : +# 35| r35_9808(glval) = FunctionAddress[~String] : +# 35| v35_9809(void) = Call[~String] : func:r35_9808, this:r35_9807 +# 35| mu35_9810(unknown) = ^CallSideEffect : ~m? +# 35| v35_9811(void) = ^IndirectReadSideEffect[-1] : &:r35_9807, ~m? +# 35| mu35_9812(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9807 +# 35| r35_9813(bool) = Constant[0] : +# 35| v35_9814(void) = ConditionalBranch : r35_9813 #-----| False -> Block 702 #-----| True (back edge) -> Block 701 -# 2122| Block 702 -# 2122| r2122_1(glval) = VariableAddress[x701] : -# 2122| mu2122_2(String) = Uninitialized[x701] : &:r2122_1 -# 2122| r2122_3(glval) = FunctionAddress[String] : -# 2122| v2122_4(void) = Call[String] : func:r2122_3, this:r2122_1 -# 2122| mu2122_5(unknown) = ^CallSideEffect : ~m? -# 2122| mu2122_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2122_1 -# 2123| r2123_1(glval) = VariableAddress[x701] : -# 2123| r2123_2(glval) = FunctionAddress[~String] : -# 2123| v2123_3(void) = Call[~String] : func:r2123_2, this:r2123_1 -# 2123| mu2123_4(unknown) = ^CallSideEffect : ~m? -# 2123| v2123_5(void) = ^IndirectReadSideEffect[-1] : &:r2123_1, ~m? -# 2123| mu2123_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2123_1 -# 2123| r2123_7(bool) = Constant[0] : -# 2123| v2123_8(void) = ConditionalBranch : r2123_7 +# 35| Block 702 +# 35| r35_9815(glval) = VariableAddress[x701] : +# 35| mu35_9816(String) = Uninitialized[x701] : &:r35_9815 +# 35| r35_9817(glval) = FunctionAddress[String] : +# 35| v35_9818(void) = Call[String] : func:r35_9817, this:r35_9815 +# 35| mu35_9819(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9820(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9815 +# 35| r35_9821(glval) = VariableAddress[x701] : +# 35| r35_9822(glval) = FunctionAddress[~String] : +# 35| v35_9823(void) = Call[~String] : func:r35_9822, this:r35_9821 +# 35| mu35_9824(unknown) = ^CallSideEffect : ~m? +# 35| v35_9825(void) = ^IndirectReadSideEffect[-1] : &:r35_9821, ~m? +# 35| mu35_9826(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9821 +# 35| r35_9827(bool) = Constant[0] : +# 35| v35_9828(void) = ConditionalBranch : r35_9827 #-----| False -> Block 703 #-----| True (back edge) -> Block 702 -# 2125| Block 703 -# 2125| r2125_1(glval) = VariableAddress[x702] : -# 2125| mu2125_2(String) = Uninitialized[x702] : &:r2125_1 -# 2125| r2125_3(glval) = FunctionAddress[String] : -# 2125| v2125_4(void) = Call[String] : func:r2125_3, this:r2125_1 -# 2125| mu2125_5(unknown) = ^CallSideEffect : ~m? -# 2125| mu2125_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2125_1 -# 2126| r2126_1(glval) = VariableAddress[x702] : -# 2126| r2126_2(glval) = FunctionAddress[~String] : -# 2126| v2126_3(void) = Call[~String] : func:r2126_2, this:r2126_1 -# 2126| mu2126_4(unknown) = ^CallSideEffect : ~m? -# 2126| v2126_5(void) = ^IndirectReadSideEffect[-1] : &:r2126_1, ~m? -# 2126| mu2126_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2126_1 -# 2126| r2126_7(bool) = Constant[0] : -# 2126| v2126_8(void) = ConditionalBranch : r2126_7 +# 35| Block 703 +# 35| r35_9829(glval) = VariableAddress[x702] : +# 35| mu35_9830(String) = Uninitialized[x702] : &:r35_9829 +# 35| r35_9831(glval) = FunctionAddress[String] : +# 35| v35_9832(void) = Call[String] : func:r35_9831, this:r35_9829 +# 35| mu35_9833(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9834(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9829 +# 35| r35_9835(glval) = VariableAddress[x702] : +# 35| r35_9836(glval) = FunctionAddress[~String] : +# 35| v35_9837(void) = Call[~String] : func:r35_9836, this:r35_9835 +# 35| mu35_9838(unknown) = ^CallSideEffect : ~m? +# 35| v35_9839(void) = ^IndirectReadSideEffect[-1] : &:r35_9835, ~m? +# 35| mu35_9840(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9835 +# 35| r35_9841(bool) = Constant[0] : +# 35| v35_9842(void) = ConditionalBranch : r35_9841 #-----| False -> Block 704 #-----| True (back edge) -> Block 703 -# 2128| Block 704 -# 2128| r2128_1(glval) = VariableAddress[x703] : -# 2128| mu2128_2(String) = Uninitialized[x703] : &:r2128_1 -# 2128| r2128_3(glval) = FunctionAddress[String] : -# 2128| v2128_4(void) = Call[String] : func:r2128_3, this:r2128_1 -# 2128| mu2128_5(unknown) = ^CallSideEffect : ~m? -# 2128| mu2128_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2128_1 -# 2129| r2129_1(glval) = VariableAddress[x703] : -# 2129| r2129_2(glval) = FunctionAddress[~String] : -# 2129| v2129_3(void) = Call[~String] : func:r2129_2, this:r2129_1 -# 2129| mu2129_4(unknown) = ^CallSideEffect : ~m? -# 2129| v2129_5(void) = ^IndirectReadSideEffect[-1] : &:r2129_1, ~m? -# 2129| mu2129_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2129_1 -# 2129| r2129_7(bool) = Constant[0] : -# 2129| v2129_8(void) = ConditionalBranch : r2129_7 +# 35| Block 704 +# 35| r35_9843(glval) = VariableAddress[x703] : +# 35| mu35_9844(String) = Uninitialized[x703] : &:r35_9843 +# 35| r35_9845(glval) = FunctionAddress[String] : +# 35| v35_9846(void) = Call[String] : func:r35_9845, this:r35_9843 +# 35| mu35_9847(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9848(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9843 +# 35| r35_9849(glval) = VariableAddress[x703] : +# 35| r35_9850(glval) = FunctionAddress[~String] : +# 35| v35_9851(void) = Call[~String] : func:r35_9850, this:r35_9849 +# 35| mu35_9852(unknown) = ^CallSideEffect : ~m? +# 35| v35_9853(void) = ^IndirectReadSideEffect[-1] : &:r35_9849, ~m? +# 35| mu35_9854(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9849 +# 35| r35_9855(bool) = Constant[0] : +# 35| v35_9856(void) = ConditionalBranch : r35_9855 #-----| False -> Block 705 #-----| True (back edge) -> Block 704 -# 2131| Block 705 -# 2131| r2131_1(glval) = VariableAddress[x704] : -# 2131| mu2131_2(String) = Uninitialized[x704] : &:r2131_1 -# 2131| r2131_3(glval) = FunctionAddress[String] : -# 2131| v2131_4(void) = Call[String] : func:r2131_3, this:r2131_1 -# 2131| mu2131_5(unknown) = ^CallSideEffect : ~m? -# 2131| mu2131_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2131_1 -# 2132| r2132_1(glval) = VariableAddress[x704] : -# 2132| r2132_2(glval) = FunctionAddress[~String] : -# 2132| v2132_3(void) = Call[~String] : func:r2132_2, this:r2132_1 -# 2132| mu2132_4(unknown) = ^CallSideEffect : ~m? -# 2132| v2132_5(void) = ^IndirectReadSideEffect[-1] : &:r2132_1, ~m? -# 2132| mu2132_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2132_1 -# 2132| r2132_7(bool) = Constant[0] : -# 2132| v2132_8(void) = ConditionalBranch : r2132_7 +# 35| Block 705 +# 35| r35_9857(glval) = VariableAddress[x704] : +# 35| mu35_9858(String) = Uninitialized[x704] : &:r35_9857 +# 35| r35_9859(glval) = FunctionAddress[String] : +# 35| v35_9860(void) = Call[String] : func:r35_9859, this:r35_9857 +# 35| mu35_9861(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9862(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9857 +# 35| r35_9863(glval) = VariableAddress[x704] : +# 35| r35_9864(glval) = FunctionAddress[~String] : +# 35| v35_9865(void) = Call[~String] : func:r35_9864, this:r35_9863 +# 35| mu35_9866(unknown) = ^CallSideEffect : ~m? +# 35| v35_9867(void) = ^IndirectReadSideEffect[-1] : &:r35_9863, ~m? +# 35| mu35_9868(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9863 +# 35| r35_9869(bool) = Constant[0] : +# 35| v35_9870(void) = ConditionalBranch : r35_9869 #-----| False -> Block 706 #-----| True (back edge) -> Block 705 -# 2134| Block 706 -# 2134| r2134_1(glval) = VariableAddress[x705] : -# 2134| mu2134_2(String) = Uninitialized[x705] : &:r2134_1 -# 2134| r2134_3(glval) = FunctionAddress[String] : -# 2134| v2134_4(void) = Call[String] : func:r2134_3, this:r2134_1 -# 2134| mu2134_5(unknown) = ^CallSideEffect : ~m? -# 2134| mu2134_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2134_1 -# 2135| r2135_1(glval) = VariableAddress[x705] : -# 2135| r2135_2(glval) = FunctionAddress[~String] : -# 2135| v2135_3(void) = Call[~String] : func:r2135_2, this:r2135_1 -# 2135| mu2135_4(unknown) = ^CallSideEffect : ~m? -# 2135| v2135_5(void) = ^IndirectReadSideEffect[-1] : &:r2135_1, ~m? -# 2135| mu2135_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2135_1 -# 2135| r2135_7(bool) = Constant[0] : -# 2135| v2135_8(void) = ConditionalBranch : r2135_7 +# 35| Block 706 +# 35| r35_9871(glval) = VariableAddress[x705] : +# 35| mu35_9872(String) = Uninitialized[x705] : &:r35_9871 +# 35| r35_9873(glval) = FunctionAddress[String] : +# 35| v35_9874(void) = Call[String] : func:r35_9873, this:r35_9871 +# 35| mu35_9875(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9876(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9871 +# 35| r35_9877(glval) = VariableAddress[x705] : +# 35| r35_9878(glval) = FunctionAddress[~String] : +# 35| v35_9879(void) = Call[~String] : func:r35_9878, this:r35_9877 +# 35| mu35_9880(unknown) = ^CallSideEffect : ~m? +# 35| v35_9881(void) = ^IndirectReadSideEffect[-1] : &:r35_9877, ~m? +# 35| mu35_9882(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9877 +# 35| r35_9883(bool) = Constant[0] : +# 35| v35_9884(void) = ConditionalBranch : r35_9883 #-----| False -> Block 707 #-----| True (back edge) -> Block 706 -# 2137| Block 707 -# 2137| r2137_1(glval) = VariableAddress[x706] : -# 2137| mu2137_2(String) = Uninitialized[x706] : &:r2137_1 -# 2137| r2137_3(glval) = FunctionAddress[String] : -# 2137| v2137_4(void) = Call[String] : func:r2137_3, this:r2137_1 -# 2137| mu2137_5(unknown) = ^CallSideEffect : ~m? -# 2137| mu2137_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2137_1 -# 2138| r2138_1(glval) = VariableAddress[x706] : -# 2138| r2138_2(glval) = FunctionAddress[~String] : -# 2138| v2138_3(void) = Call[~String] : func:r2138_2, this:r2138_1 -# 2138| mu2138_4(unknown) = ^CallSideEffect : ~m? -# 2138| v2138_5(void) = ^IndirectReadSideEffect[-1] : &:r2138_1, ~m? -# 2138| mu2138_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2138_1 -# 2138| r2138_7(bool) = Constant[0] : -# 2138| v2138_8(void) = ConditionalBranch : r2138_7 +# 35| Block 707 +# 35| r35_9885(glval) = VariableAddress[x706] : +# 35| mu35_9886(String) = Uninitialized[x706] : &:r35_9885 +# 35| r35_9887(glval) = FunctionAddress[String] : +# 35| v35_9888(void) = Call[String] : func:r35_9887, this:r35_9885 +# 35| mu35_9889(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9890(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9885 +# 35| r35_9891(glval) = VariableAddress[x706] : +# 35| r35_9892(glval) = FunctionAddress[~String] : +# 35| v35_9893(void) = Call[~String] : func:r35_9892, this:r35_9891 +# 35| mu35_9894(unknown) = ^CallSideEffect : ~m? +# 35| v35_9895(void) = ^IndirectReadSideEffect[-1] : &:r35_9891, ~m? +# 35| mu35_9896(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9891 +# 35| r35_9897(bool) = Constant[0] : +# 35| v35_9898(void) = ConditionalBranch : r35_9897 #-----| False -> Block 708 #-----| True (back edge) -> Block 707 -# 2140| Block 708 -# 2140| r2140_1(glval) = VariableAddress[x707] : -# 2140| mu2140_2(String) = Uninitialized[x707] : &:r2140_1 -# 2140| r2140_3(glval) = FunctionAddress[String] : -# 2140| v2140_4(void) = Call[String] : func:r2140_3, this:r2140_1 -# 2140| mu2140_5(unknown) = ^CallSideEffect : ~m? -# 2140| mu2140_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2140_1 -# 2141| r2141_1(glval) = VariableAddress[x707] : -# 2141| r2141_2(glval) = FunctionAddress[~String] : -# 2141| v2141_3(void) = Call[~String] : func:r2141_2, this:r2141_1 -# 2141| mu2141_4(unknown) = ^CallSideEffect : ~m? -# 2141| v2141_5(void) = ^IndirectReadSideEffect[-1] : &:r2141_1, ~m? -# 2141| mu2141_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2141_1 -# 2141| r2141_7(bool) = Constant[0] : -# 2141| v2141_8(void) = ConditionalBranch : r2141_7 +# 35| Block 708 +# 35| r35_9899(glval) = VariableAddress[x707] : +# 35| mu35_9900(String) = Uninitialized[x707] : &:r35_9899 +# 35| r35_9901(glval) = FunctionAddress[String] : +# 35| v35_9902(void) = Call[String] : func:r35_9901, this:r35_9899 +# 35| mu35_9903(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9904(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9899 +# 35| r35_9905(glval) = VariableAddress[x707] : +# 35| r35_9906(glval) = FunctionAddress[~String] : +# 35| v35_9907(void) = Call[~String] : func:r35_9906, this:r35_9905 +# 35| mu35_9908(unknown) = ^CallSideEffect : ~m? +# 35| v35_9909(void) = ^IndirectReadSideEffect[-1] : &:r35_9905, ~m? +# 35| mu35_9910(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9905 +# 35| r35_9911(bool) = Constant[0] : +# 35| v35_9912(void) = ConditionalBranch : r35_9911 #-----| False -> Block 709 #-----| True (back edge) -> Block 708 -# 2143| Block 709 -# 2143| r2143_1(glval) = VariableAddress[x708] : -# 2143| mu2143_2(String) = Uninitialized[x708] : &:r2143_1 -# 2143| r2143_3(glval) = FunctionAddress[String] : -# 2143| v2143_4(void) = Call[String] : func:r2143_3, this:r2143_1 -# 2143| mu2143_5(unknown) = ^CallSideEffect : ~m? -# 2143| mu2143_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2143_1 -# 2144| r2144_1(glval) = VariableAddress[x708] : -# 2144| r2144_2(glval) = FunctionAddress[~String] : -# 2144| v2144_3(void) = Call[~String] : func:r2144_2, this:r2144_1 -# 2144| mu2144_4(unknown) = ^CallSideEffect : ~m? -# 2144| v2144_5(void) = ^IndirectReadSideEffect[-1] : &:r2144_1, ~m? -# 2144| mu2144_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2144_1 -# 2144| r2144_7(bool) = Constant[0] : -# 2144| v2144_8(void) = ConditionalBranch : r2144_7 +# 35| Block 709 +# 35| r35_9913(glval) = VariableAddress[x708] : +# 35| mu35_9914(String) = Uninitialized[x708] : &:r35_9913 +# 35| r35_9915(glval) = FunctionAddress[String] : +# 35| v35_9916(void) = Call[String] : func:r35_9915, this:r35_9913 +# 35| mu35_9917(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9918(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9913 +# 35| r35_9919(glval) = VariableAddress[x708] : +# 35| r35_9920(glval) = FunctionAddress[~String] : +# 35| v35_9921(void) = Call[~String] : func:r35_9920, this:r35_9919 +# 35| mu35_9922(unknown) = ^CallSideEffect : ~m? +# 35| v35_9923(void) = ^IndirectReadSideEffect[-1] : &:r35_9919, ~m? +# 35| mu35_9924(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9919 +# 35| r35_9925(bool) = Constant[0] : +# 35| v35_9926(void) = ConditionalBranch : r35_9925 #-----| False -> Block 710 #-----| True (back edge) -> Block 709 -# 2146| Block 710 -# 2146| r2146_1(glval) = VariableAddress[x709] : -# 2146| mu2146_2(String) = Uninitialized[x709] : &:r2146_1 -# 2146| r2146_3(glval) = FunctionAddress[String] : -# 2146| v2146_4(void) = Call[String] : func:r2146_3, this:r2146_1 -# 2146| mu2146_5(unknown) = ^CallSideEffect : ~m? -# 2146| mu2146_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2146_1 -# 2147| r2147_1(glval) = VariableAddress[x709] : -# 2147| r2147_2(glval) = FunctionAddress[~String] : -# 2147| v2147_3(void) = Call[~String] : func:r2147_2, this:r2147_1 -# 2147| mu2147_4(unknown) = ^CallSideEffect : ~m? -# 2147| v2147_5(void) = ^IndirectReadSideEffect[-1] : &:r2147_1, ~m? -# 2147| mu2147_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2147_1 -# 2147| r2147_7(bool) = Constant[0] : -# 2147| v2147_8(void) = ConditionalBranch : r2147_7 +# 35| Block 710 +# 35| r35_9927(glval) = VariableAddress[x709] : +# 35| mu35_9928(String) = Uninitialized[x709] : &:r35_9927 +# 35| r35_9929(glval) = FunctionAddress[String] : +# 35| v35_9930(void) = Call[String] : func:r35_9929, this:r35_9927 +# 35| mu35_9931(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9932(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9927 +# 35| r35_9933(glval) = VariableAddress[x709] : +# 35| r35_9934(glval) = FunctionAddress[~String] : +# 35| v35_9935(void) = Call[~String] : func:r35_9934, this:r35_9933 +# 35| mu35_9936(unknown) = ^CallSideEffect : ~m? +# 35| v35_9937(void) = ^IndirectReadSideEffect[-1] : &:r35_9933, ~m? +# 35| mu35_9938(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9933 +# 35| r35_9939(bool) = Constant[0] : +# 35| v35_9940(void) = ConditionalBranch : r35_9939 #-----| False -> Block 711 #-----| True (back edge) -> Block 710 -# 2149| Block 711 -# 2149| r2149_1(glval) = VariableAddress[x710] : -# 2149| mu2149_2(String) = Uninitialized[x710] : &:r2149_1 -# 2149| r2149_3(glval) = FunctionAddress[String] : -# 2149| v2149_4(void) = Call[String] : func:r2149_3, this:r2149_1 -# 2149| mu2149_5(unknown) = ^CallSideEffect : ~m? -# 2149| mu2149_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2149_1 -# 2150| r2150_1(glval) = VariableAddress[x710] : -# 2150| r2150_2(glval) = FunctionAddress[~String] : -# 2150| v2150_3(void) = Call[~String] : func:r2150_2, this:r2150_1 -# 2150| mu2150_4(unknown) = ^CallSideEffect : ~m? -# 2150| v2150_5(void) = ^IndirectReadSideEffect[-1] : &:r2150_1, ~m? -# 2150| mu2150_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2150_1 -# 2150| r2150_7(bool) = Constant[0] : -# 2150| v2150_8(void) = ConditionalBranch : r2150_7 +# 35| Block 711 +# 35| r35_9941(glval) = VariableAddress[x710] : +# 35| mu35_9942(String) = Uninitialized[x710] : &:r35_9941 +# 35| r35_9943(glval) = FunctionAddress[String] : +# 35| v35_9944(void) = Call[String] : func:r35_9943, this:r35_9941 +# 35| mu35_9945(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9946(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9941 +# 35| r35_9947(glval) = VariableAddress[x710] : +# 35| r35_9948(glval) = FunctionAddress[~String] : +# 35| v35_9949(void) = Call[~String] : func:r35_9948, this:r35_9947 +# 35| mu35_9950(unknown) = ^CallSideEffect : ~m? +# 35| v35_9951(void) = ^IndirectReadSideEffect[-1] : &:r35_9947, ~m? +# 35| mu35_9952(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9947 +# 35| r35_9953(bool) = Constant[0] : +# 35| v35_9954(void) = ConditionalBranch : r35_9953 #-----| False -> Block 712 #-----| True (back edge) -> Block 711 -# 2152| Block 712 -# 2152| r2152_1(glval) = VariableAddress[x711] : -# 2152| mu2152_2(String) = Uninitialized[x711] : &:r2152_1 -# 2152| r2152_3(glval) = FunctionAddress[String] : -# 2152| v2152_4(void) = Call[String] : func:r2152_3, this:r2152_1 -# 2152| mu2152_5(unknown) = ^CallSideEffect : ~m? -# 2152| mu2152_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2152_1 -# 2153| r2153_1(glval) = VariableAddress[x711] : -# 2153| r2153_2(glval) = FunctionAddress[~String] : -# 2153| v2153_3(void) = Call[~String] : func:r2153_2, this:r2153_1 -# 2153| mu2153_4(unknown) = ^CallSideEffect : ~m? -# 2153| v2153_5(void) = ^IndirectReadSideEffect[-1] : &:r2153_1, ~m? -# 2153| mu2153_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2153_1 -# 2153| r2153_7(bool) = Constant[0] : -# 2153| v2153_8(void) = ConditionalBranch : r2153_7 +# 35| Block 712 +# 35| r35_9955(glval) = VariableAddress[x711] : +# 35| mu35_9956(String) = Uninitialized[x711] : &:r35_9955 +# 35| r35_9957(glval) = FunctionAddress[String] : +# 35| v35_9958(void) = Call[String] : func:r35_9957, this:r35_9955 +# 35| mu35_9959(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9960(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9955 +# 35| r35_9961(glval) = VariableAddress[x711] : +# 35| r35_9962(glval) = FunctionAddress[~String] : +# 35| v35_9963(void) = Call[~String] : func:r35_9962, this:r35_9961 +# 35| mu35_9964(unknown) = ^CallSideEffect : ~m? +# 35| v35_9965(void) = ^IndirectReadSideEffect[-1] : &:r35_9961, ~m? +# 35| mu35_9966(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9961 +# 35| r35_9967(bool) = Constant[0] : +# 35| v35_9968(void) = ConditionalBranch : r35_9967 #-----| False -> Block 713 #-----| True (back edge) -> Block 712 -# 2155| Block 713 -# 2155| r2155_1(glval) = VariableAddress[x712] : -# 2155| mu2155_2(String) = Uninitialized[x712] : &:r2155_1 -# 2155| r2155_3(glval) = FunctionAddress[String] : -# 2155| v2155_4(void) = Call[String] : func:r2155_3, this:r2155_1 -# 2155| mu2155_5(unknown) = ^CallSideEffect : ~m? -# 2155| mu2155_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2155_1 -# 2156| r2156_1(glval) = VariableAddress[x712] : -# 2156| r2156_2(glval) = FunctionAddress[~String] : -# 2156| v2156_3(void) = Call[~String] : func:r2156_2, this:r2156_1 -# 2156| mu2156_4(unknown) = ^CallSideEffect : ~m? -# 2156| v2156_5(void) = ^IndirectReadSideEffect[-1] : &:r2156_1, ~m? -# 2156| mu2156_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2156_1 -# 2156| r2156_7(bool) = Constant[0] : -# 2156| v2156_8(void) = ConditionalBranch : r2156_7 +# 35| Block 713 +# 35| r35_9969(glval) = VariableAddress[x712] : +# 35| mu35_9970(String) = Uninitialized[x712] : &:r35_9969 +# 35| r35_9971(glval) = FunctionAddress[String] : +# 35| v35_9972(void) = Call[String] : func:r35_9971, this:r35_9969 +# 35| mu35_9973(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9974(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9969 +# 35| r35_9975(glval) = VariableAddress[x712] : +# 35| r35_9976(glval) = FunctionAddress[~String] : +# 35| v35_9977(void) = Call[~String] : func:r35_9976, this:r35_9975 +# 35| mu35_9978(unknown) = ^CallSideEffect : ~m? +# 35| v35_9979(void) = ^IndirectReadSideEffect[-1] : &:r35_9975, ~m? +# 35| mu35_9980(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9975 +# 35| r35_9981(bool) = Constant[0] : +# 35| v35_9982(void) = ConditionalBranch : r35_9981 #-----| False -> Block 714 #-----| True (back edge) -> Block 713 -# 2158| Block 714 -# 2158| r2158_1(glval) = VariableAddress[x713] : -# 2158| mu2158_2(String) = Uninitialized[x713] : &:r2158_1 -# 2158| r2158_3(glval) = FunctionAddress[String] : -# 2158| v2158_4(void) = Call[String] : func:r2158_3, this:r2158_1 -# 2158| mu2158_5(unknown) = ^CallSideEffect : ~m? -# 2158| mu2158_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2158_1 -# 2159| r2159_1(glval) = VariableAddress[x713] : -# 2159| r2159_2(glval) = FunctionAddress[~String] : -# 2159| v2159_3(void) = Call[~String] : func:r2159_2, this:r2159_1 -# 2159| mu2159_4(unknown) = ^CallSideEffect : ~m? -# 2159| v2159_5(void) = ^IndirectReadSideEffect[-1] : &:r2159_1, ~m? -# 2159| mu2159_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2159_1 -# 2159| r2159_7(bool) = Constant[0] : -# 2159| v2159_8(void) = ConditionalBranch : r2159_7 +# 35| Block 714 +# 35| r35_9983(glval) = VariableAddress[x713] : +# 35| mu35_9984(String) = Uninitialized[x713] : &:r35_9983 +# 35| r35_9985(glval) = FunctionAddress[String] : +# 35| v35_9986(void) = Call[String] : func:r35_9985, this:r35_9983 +# 35| mu35_9987(unknown) = ^CallSideEffect : ~m? +# 35| mu35_9988(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9983 +# 35| r35_9989(glval) = VariableAddress[x713] : +# 35| r35_9990(glval) = FunctionAddress[~String] : +# 35| v35_9991(void) = Call[~String] : func:r35_9990, this:r35_9989 +# 35| mu35_9992(unknown) = ^CallSideEffect : ~m? +# 35| v35_9993(void) = ^IndirectReadSideEffect[-1] : &:r35_9989, ~m? +# 35| mu35_9994(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9989 +# 35| r35_9995(bool) = Constant[0] : +# 35| v35_9996(void) = ConditionalBranch : r35_9995 #-----| False -> Block 715 #-----| True (back edge) -> Block 714 -# 2161| Block 715 -# 2161| r2161_1(glval) = VariableAddress[x714] : -# 2161| mu2161_2(String) = Uninitialized[x714] : &:r2161_1 -# 2161| r2161_3(glval) = FunctionAddress[String] : -# 2161| v2161_4(void) = Call[String] : func:r2161_3, this:r2161_1 -# 2161| mu2161_5(unknown) = ^CallSideEffect : ~m? -# 2161| mu2161_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2161_1 -# 2162| r2162_1(glval) = VariableAddress[x714] : -# 2162| r2162_2(glval) = FunctionAddress[~String] : -# 2162| v2162_3(void) = Call[~String] : func:r2162_2, this:r2162_1 -# 2162| mu2162_4(unknown) = ^CallSideEffect : ~m? -# 2162| v2162_5(void) = ^IndirectReadSideEffect[-1] : &:r2162_1, ~m? -# 2162| mu2162_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2162_1 -# 2162| r2162_7(bool) = Constant[0] : -# 2162| v2162_8(void) = ConditionalBranch : r2162_7 +# 35| Block 715 +# 35| r35_9997(glval) = VariableAddress[x714] : +# 35| mu35_9998(String) = Uninitialized[x714] : &:r35_9997 +# 35| r35_9999(glval) = FunctionAddress[String] : +# 35| v35_10000(void) = Call[String] : func:r35_9999, this:r35_9997 +# 35| mu35_10001(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10002(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_9997 +# 35| r35_10003(glval) = VariableAddress[x714] : +# 35| r35_10004(glval) = FunctionAddress[~String] : +# 35| v35_10005(void) = Call[~String] : func:r35_10004, this:r35_10003 +# 35| mu35_10006(unknown) = ^CallSideEffect : ~m? +# 35| v35_10007(void) = ^IndirectReadSideEffect[-1] : &:r35_10003, ~m? +# 35| mu35_10008(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10003 +# 35| r35_10009(bool) = Constant[0] : +# 35| v35_10010(void) = ConditionalBranch : r35_10009 #-----| False -> Block 716 #-----| True (back edge) -> Block 715 -# 2164| Block 716 -# 2164| r2164_1(glval) = VariableAddress[x715] : -# 2164| mu2164_2(String) = Uninitialized[x715] : &:r2164_1 -# 2164| r2164_3(glval) = FunctionAddress[String] : -# 2164| v2164_4(void) = Call[String] : func:r2164_3, this:r2164_1 -# 2164| mu2164_5(unknown) = ^CallSideEffect : ~m? -# 2164| mu2164_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2164_1 -# 2165| r2165_1(glval) = VariableAddress[x715] : -# 2165| r2165_2(glval) = FunctionAddress[~String] : -# 2165| v2165_3(void) = Call[~String] : func:r2165_2, this:r2165_1 -# 2165| mu2165_4(unknown) = ^CallSideEffect : ~m? -# 2165| v2165_5(void) = ^IndirectReadSideEffect[-1] : &:r2165_1, ~m? -# 2165| mu2165_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2165_1 -# 2165| r2165_7(bool) = Constant[0] : -# 2165| v2165_8(void) = ConditionalBranch : r2165_7 +# 35| Block 716 +# 35| r35_10011(glval) = VariableAddress[x715] : +# 35| mu35_10012(String) = Uninitialized[x715] : &:r35_10011 +# 35| r35_10013(glval) = FunctionAddress[String] : +# 35| v35_10014(void) = Call[String] : func:r35_10013, this:r35_10011 +# 35| mu35_10015(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10016(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10011 +# 35| r35_10017(glval) = VariableAddress[x715] : +# 35| r35_10018(glval) = FunctionAddress[~String] : +# 35| v35_10019(void) = Call[~String] : func:r35_10018, this:r35_10017 +# 35| mu35_10020(unknown) = ^CallSideEffect : ~m? +# 35| v35_10021(void) = ^IndirectReadSideEffect[-1] : &:r35_10017, ~m? +# 35| mu35_10022(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10017 +# 35| r35_10023(bool) = Constant[0] : +# 35| v35_10024(void) = ConditionalBranch : r35_10023 #-----| False -> Block 717 #-----| True (back edge) -> Block 716 -# 2167| Block 717 -# 2167| r2167_1(glval) = VariableAddress[x716] : -# 2167| mu2167_2(String) = Uninitialized[x716] : &:r2167_1 -# 2167| r2167_3(glval) = FunctionAddress[String] : -# 2167| v2167_4(void) = Call[String] : func:r2167_3, this:r2167_1 -# 2167| mu2167_5(unknown) = ^CallSideEffect : ~m? -# 2167| mu2167_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2167_1 -# 2168| r2168_1(glval) = VariableAddress[x716] : -# 2168| r2168_2(glval) = FunctionAddress[~String] : -# 2168| v2168_3(void) = Call[~String] : func:r2168_2, this:r2168_1 -# 2168| mu2168_4(unknown) = ^CallSideEffect : ~m? -# 2168| v2168_5(void) = ^IndirectReadSideEffect[-1] : &:r2168_1, ~m? -# 2168| mu2168_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2168_1 -# 2168| r2168_7(bool) = Constant[0] : -# 2168| v2168_8(void) = ConditionalBranch : r2168_7 +# 35| Block 717 +# 35| r35_10025(glval) = VariableAddress[x716] : +# 35| mu35_10026(String) = Uninitialized[x716] : &:r35_10025 +# 35| r35_10027(glval) = FunctionAddress[String] : +# 35| v35_10028(void) = Call[String] : func:r35_10027, this:r35_10025 +# 35| mu35_10029(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10030(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10025 +# 35| r35_10031(glval) = VariableAddress[x716] : +# 35| r35_10032(glval) = FunctionAddress[~String] : +# 35| v35_10033(void) = Call[~String] : func:r35_10032, this:r35_10031 +# 35| mu35_10034(unknown) = ^CallSideEffect : ~m? +# 35| v35_10035(void) = ^IndirectReadSideEffect[-1] : &:r35_10031, ~m? +# 35| mu35_10036(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10031 +# 35| r35_10037(bool) = Constant[0] : +# 35| v35_10038(void) = ConditionalBranch : r35_10037 #-----| False -> Block 718 #-----| True (back edge) -> Block 717 -# 2170| Block 718 -# 2170| r2170_1(glval) = VariableAddress[x717] : -# 2170| mu2170_2(String) = Uninitialized[x717] : &:r2170_1 -# 2170| r2170_3(glval) = FunctionAddress[String] : -# 2170| v2170_4(void) = Call[String] : func:r2170_3, this:r2170_1 -# 2170| mu2170_5(unknown) = ^CallSideEffect : ~m? -# 2170| mu2170_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2170_1 -# 2171| r2171_1(glval) = VariableAddress[x717] : -# 2171| r2171_2(glval) = FunctionAddress[~String] : -# 2171| v2171_3(void) = Call[~String] : func:r2171_2, this:r2171_1 -# 2171| mu2171_4(unknown) = ^CallSideEffect : ~m? -# 2171| v2171_5(void) = ^IndirectReadSideEffect[-1] : &:r2171_1, ~m? -# 2171| mu2171_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2171_1 -# 2171| r2171_7(bool) = Constant[0] : -# 2171| v2171_8(void) = ConditionalBranch : r2171_7 +# 35| Block 718 +# 35| r35_10039(glval) = VariableAddress[x717] : +# 35| mu35_10040(String) = Uninitialized[x717] : &:r35_10039 +# 35| r35_10041(glval) = FunctionAddress[String] : +# 35| v35_10042(void) = Call[String] : func:r35_10041, this:r35_10039 +# 35| mu35_10043(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10044(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10039 +# 35| r35_10045(glval) = VariableAddress[x717] : +# 35| r35_10046(glval) = FunctionAddress[~String] : +# 35| v35_10047(void) = Call[~String] : func:r35_10046, this:r35_10045 +# 35| mu35_10048(unknown) = ^CallSideEffect : ~m? +# 35| v35_10049(void) = ^IndirectReadSideEffect[-1] : &:r35_10045, ~m? +# 35| mu35_10050(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10045 +# 35| r35_10051(bool) = Constant[0] : +# 35| v35_10052(void) = ConditionalBranch : r35_10051 #-----| False -> Block 719 #-----| True (back edge) -> Block 718 -# 2173| Block 719 -# 2173| r2173_1(glval) = VariableAddress[x718] : -# 2173| mu2173_2(String) = Uninitialized[x718] : &:r2173_1 -# 2173| r2173_3(glval) = FunctionAddress[String] : -# 2173| v2173_4(void) = Call[String] : func:r2173_3, this:r2173_1 -# 2173| mu2173_5(unknown) = ^CallSideEffect : ~m? -# 2173| mu2173_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2173_1 -# 2174| r2174_1(glval) = VariableAddress[x718] : -# 2174| r2174_2(glval) = FunctionAddress[~String] : -# 2174| v2174_3(void) = Call[~String] : func:r2174_2, this:r2174_1 -# 2174| mu2174_4(unknown) = ^CallSideEffect : ~m? -# 2174| v2174_5(void) = ^IndirectReadSideEffect[-1] : &:r2174_1, ~m? -# 2174| mu2174_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2174_1 -# 2174| r2174_7(bool) = Constant[0] : -# 2174| v2174_8(void) = ConditionalBranch : r2174_7 +# 35| Block 719 +# 35| r35_10053(glval) = VariableAddress[x718] : +# 35| mu35_10054(String) = Uninitialized[x718] : &:r35_10053 +# 35| r35_10055(glval) = FunctionAddress[String] : +# 35| v35_10056(void) = Call[String] : func:r35_10055, this:r35_10053 +# 35| mu35_10057(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10058(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10053 +# 35| r35_10059(glval) = VariableAddress[x718] : +# 35| r35_10060(glval) = FunctionAddress[~String] : +# 35| v35_10061(void) = Call[~String] : func:r35_10060, this:r35_10059 +# 35| mu35_10062(unknown) = ^CallSideEffect : ~m? +# 35| v35_10063(void) = ^IndirectReadSideEffect[-1] : &:r35_10059, ~m? +# 35| mu35_10064(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10059 +# 35| r35_10065(bool) = Constant[0] : +# 35| v35_10066(void) = ConditionalBranch : r35_10065 #-----| False -> Block 720 #-----| True (back edge) -> Block 719 -# 2176| Block 720 -# 2176| r2176_1(glval) = VariableAddress[x719] : -# 2176| mu2176_2(String) = Uninitialized[x719] : &:r2176_1 -# 2176| r2176_3(glval) = FunctionAddress[String] : -# 2176| v2176_4(void) = Call[String] : func:r2176_3, this:r2176_1 -# 2176| mu2176_5(unknown) = ^CallSideEffect : ~m? -# 2176| mu2176_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2176_1 -# 2177| r2177_1(glval) = VariableAddress[x719] : -# 2177| r2177_2(glval) = FunctionAddress[~String] : -# 2177| v2177_3(void) = Call[~String] : func:r2177_2, this:r2177_1 -# 2177| mu2177_4(unknown) = ^CallSideEffect : ~m? -# 2177| v2177_5(void) = ^IndirectReadSideEffect[-1] : &:r2177_1, ~m? -# 2177| mu2177_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2177_1 -# 2177| r2177_7(bool) = Constant[0] : -# 2177| v2177_8(void) = ConditionalBranch : r2177_7 +# 35| Block 720 +# 35| r35_10067(glval) = VariableAddress[x719] : +# 35| mu35_10068(String) = Uninitialized[x719] : &:r35_10067 +# 35| r35_10069(glval) = FunctionAddress[String] : +# 35| v35_10070(void) = Call[String] : func:r35_10069, this:r35_10067 +# 35| mu35_10071(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10072(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10067 +# 35| r35_10073(glval) = VariableAddress[x719] : +# 35| r35_10074(glval) = FunctionAddress[~String] : +# 35| v35_10075(void) = Call[~String] : func:r35_10074, this:r35_10073 +# 35| mu35_10076(unknown) = ^CallSideEffect : ~m? +# 35| v35_10077(void) = ^IndirectReadSideEffect[-1] : &:r35_10073, ~m? +# 35| mu35_10078(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10073 +# 35| r35_10079(bool) = Constant[0] : +# 35| v35_10080(void) = ConditionalBranch : r35_10079 #-----| False -> Block 721 #-----| True (back edge) -> Block 720 -# 2179| Block 721 -# 2179| r2179_1(glval) = VariableAddress[x720] : -# 2179| mu2179_2(String) = Uninitialized[x720] : &:r2179_1 -# 2179| r2179_3(glval) = FunctionAddress[String] : -# 2179| v2179_4(void) = Call[String] : func:r2179_3, this:r2179_1 -# 2179| mu2179_5(unknown) = ^CallSideEffect : ~m? -# 2179| mu2179_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2179_1 -# 2180| r2180_1(glval) = VariableAddress[x720] : -# 2180| r2180_2(glval) = FunctionAddress[~String] : -# 2180| v2180_3(void) = Call[~String] : func:r2180_2, this:r2180_1 -# 2180| mu2180_4(unknown) = ^CallSideEffect : ~m? -# 2180| v2180_5(void) = ^IndirectReadSideEffect[-1] : &:r2180_1, ~m? -# 2180| mu2180_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2180_1 -# 2180| r2180_7(bool) = Constant[0] : -# 2180| v2180_8(void) = ConditionalBranch : r2180_7 +# 35| Block 721 +# 35| r35_10081(glval) = VariableAddress[x720] : +# 35| mu35_10082(String) = Uninitialized[x720] : &:r35_10081 +# 35| r35_10083(glval) = FunctionAddress[String] : +# 35| v35_10084(void) = Call[String] : func:r35_10083, this:r35_10081 +# 35| mu35_10085(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10086(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10081 +# 35| r35_10087(glval) = VariableAddress[x720] : +# 35| r35_10088(glval) = FunctionAddress[~String] : +# 35| v35_10089(void) = Call[~String] : func:r35_10088, this:r35_10087 +# 35| mu35_10090(unknown) = ^CallSideEffect : ~m? +# 35| v35_10091(void) = ^IndirectReadSideEffect[-1] : &:r35_10087, ~m? +# 35| mu35_10092(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10087 +# 35| r35_10093(bool) = Constant[0] : +# 35| v35_10094(void) = ConditionalBranch : r35_10093 #-----| False -> Block 722 #-----| True (back edge) -> Block 721 -# 2182| Block 722 -# 2182| r2182_1(glval) = VariableAddress[x721] : -# 2182| mu2182_2(String) = Uninitialized[x721] : &:r2182_1 -# 2182| r2182_3(glval) = FunctionAddress[String] : -# 2182| v2182_4(void) = Call[String] : func:r2182_3, this:r2182_1 -# 2182| mu2182_5(unknown) = ^CallSideEffect : ~m? -# 2182| mu2182_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2182_1 -# 2183| r2183_1(glval) = VariableAddress[x721] : -# 2183| r2183_2(glval) = FunctionAddress[~String] : -# 2183| v2183_3(void) = Call[~String] : func:r2183_2, this:r2183_1 -# 2183| mu2183_4(unknown) = ^CallSideEffect : ~m? -# 2183| v2183_5(void) = ^IndirectReadSideEffect[-1] : &:r2183_1, ~m? -# 2183| mu2183_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2183_1 -# 2183| r2183_7(bool) = Constant[0] : -# 2183| v2183_8(void) = ConditionalBranch : r2183_7 +# 35| Block 722 +# 35| r35_10095(glval) = VariableAddress[x721] : +# 35| mu35_10096(String) = Uninitialized[x721] : &:r35_10095 +# 35| r35_10097(glval) = FunctionAddress[String] : +# 35| v35_10098(void) = Call[String] : func:r35_10097, this:r35_10095 +# 35| mu35_10099(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10100(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10095 +# 35| r35_10101(glval) = VariableAddress[x721] : +# 35| r35_10102(glval) = FunctionAddress[~String] : +# 35| v35_10103(void) = Call[~String] : func:r35_10102, this:r35_10101 +# 35| mu35_10104(unknown) = ^CallSideEffect : ~m? +# 35| v35_10105(void) = ^IndirectReadSideEffect[-1] : &:r35_10101, ~m? +# 35| mu35_10106(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10101 +# 35| r35_10107(bool) = Constant[0] : +# 35| v35_10108(void) = ConditionalBranch : r35_10107 #-----| False -> Block 723 #-----| True (back edge) -> Block 722 -# 2185| Block 723 -# 2185| r2185_1(glval) = VariableAddress[x722] : -# 2185| mu2185_2(String) = Uninitialized[x722] : &:r2185_1 -# 2185| r2185_3(glval) = FunctionAddress[String] : -# 2185| v2185_4(void) = Call[String] : func:r2185_3, this:r2185_1 -# 2185| mu2185_5(unknown) = ^CallSideEffect : ~m? -# 2185| mu2185_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2185_1 -# 2186| r2186_1(glval) = VariableAddress[x722] : -# 2186| r2186_2(glval) = FunctionAddress[~String] : -# 2186| v2186_3(void) = Call[~String] : func:r2186_2, this:r2186_1 -# 2186| mu2186_4(unknown) = ^CallSideEffect : ~m? -# 2186| v2186_5(void) = ^IndirectReadSideEffect[-1] : &:r2186_1, ~m? -# 2186| mu2186_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2186_1 -# 2186| r2186_7(bool) = Constant[0] : -# 2186| v2186_8(void) = ConditionalBranch : r2186_7 +# 35| Block 723 +# 35| r35_10109(glval) = VariableAddress[x722] : +# 35| mu35_10110(String) = Uninitialized[x722] : &:r35_10109 +# 35| r35_10111(glval) = FunctionAddress[String] : +# 35| v35_10112(void) = Call[String] : func:r35_10111, this:r35_10109 +# 35| mu35_10113(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10114(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10109 +# 35| r35_10115(glval) = VariableAddress[x722] : +# 35| r35_10116(glval) = FunctionAddress[~String] : +# 35| v35_10117(void) = Call[~String] : func:r35_10116, this:r35_10115 +# 35| mu35_10118(unknown) = ^CallSideEffect : ~m? +# 35| v35_10119(void) = ^IndirectReadSideEffect[-1] : &:r35_10115, ~m? +# 35| mu35_10120(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10115 +# 35| r35_10121(bool) = Constant[0] : +# 35| v35_10122(void) = ConditionalBranch : r35_10121 #-----| False -> Block 724 #-----| True (back edge) -> Block 723 -# 2188| Block 724 -# 2188| r2188_1(glval) = VariableAddress[x723] : -# 2188| mu2188_2(String) = Uninitialized[x723] : &:r2188_1 -# 2188| r2188_3(glval) = FunctionAddress[String] : -# 2188| v2188_4(void) = Call[String] : func:r2188_3, this:r2188_1 -# 2188| mu2188_5(unknown) = ^CallSideEffect : ~m? -# 2188| mu2188_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2188_1 -# 2189| r2189_1(glval) = VariableAddress[x723] : -# 2189| r2189_2(glval) = FunctionAddress[~String] : -# 2189| v2189_3(void) = Call[~String] : func:r2189_2, this:r2189_1 -# 2189| mu2189_4(unknown) = ^CallSideEffect : ~m? -# 2189| v2189_5(void) = ^IndirectReadSideEffect[-1] : &:r2189_1, ~m? -# 2189| mu2189_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2189_1 -# 2189| r2189_7(bool) = Constant[0] : -# 2189| v2189_8(void) = ConditionalBranch : r2189_7 +# 35| Block 724 +# 35| r35_10123(glval) = VariableAddress[x723] : +# 35| mu35_10124(String) = Uninitialized[x723] : &:r35_10123 +# 35| r35_10125(glval) = FunctionAddress[String] : +# 35| v35_10126(void) = Call[String] : func:r35_10125, this:r35_10123 +# 35| mu35_10127(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10128(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10123 +# 35| r35_10129(glval) = VariableAddress[x723] : +# 35| r35_10130(glval) = FunctionAddress[~String] : +# 35| v35_10131(void) = Call[~String] : func:r35_10130, this:r35_10129 +# 35| mu35_10132(unknown) = ^CallSideEffect : ~m? +# 35| v35_10133(void) = ^IndirectReadSideEffect[-1] : &:r35_10129, ~m? +# 35| mu35_10134(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10129 +# 35| r35_10135(bool) = Constant[0] : +# 35| v35_10136(void) = ConditionalBranch : r35_10135 #-----| False -> Block 725 #-----| True (back edge) -> Block 724 -# 2191| Block 725 -# 2191| r2191_1(glval) = VariableAddress[x724] : -# 2191| mu2191_2(String) = Uninitialized[x724] : &:r2191_1 -# 2191| r2191_3(glval) = FunctionAddress[String] : -# 2191| v2191_4(void) = Call[String] : func:r2191_3, this:r2191_1 -# 2191| mu2191_5(unknown) = ^CallSideEffect : ~m? -# 2191| mu2191_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2191_1 -# 2192| r2192_1(glval) = VariableAddress[x724] : -# 2192| r2192_2(glval) = FunctionAddress[~String] : -# 2192| v2192_3(void) = Call[~String] : func:r2192_2, this:r2192_1 -# 2192| mu2192_4(unknown) = ^CallSideEffect : ~m? -# 2192| v2192_5(void) = ^IndirectReadSideEffect[-1] : &:r2192_1, ~m? -# 2192| mu2192_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2192_1 -# 2192| r2192_7(bool) = Constant[0] : -# 2192| v2192_8(void) = ConditionalBranch : r2192_7 +# 35| Block 725 +# 35| r35_10137(glval) = VariableAddress[x724] : +# 35| mu35_10138(String) = Uninitialized[x724] : &:r35_10137 +# 35| r35_10139(glval) = FunctionAddress[String] : +# 35| v35_10140(void) = Call[String] : func:r35_10139, this:r35_10137 +# 35| mu35_10141(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10142(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10137 +# 35| r35_10143(glval) = VariableAddress[x724] : +# 35| r35_10144(glval) = FunctionAddress[~String] : +# 35| v35_10145(void) = Call[~String] : func:r35_10144, this:r35_10143 +# 35| mu35_10146(unknown) = ^CallSideEffect : ~m? +# 35| v35_10147(void) = ^IndirectReadSideEffect[-1] : &:r35_10143, ~m? +# 35| mu35_10148(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10143 +# 35| r35_10149(bool) = Constant[0] : +# 35| v35_10150(void) = ConditionalBranch : r35_10149 #-----| False -> Block 726 #-----| True (back edge) -> Block 725 -# 2194| Block 726 -# 2194| r2194_1(glval) = VariableAddress[x725] : -# 2194| mu2194_2(String) = Uninitialized[x725] : &:r2194_1 -# 2194| r2194_3(glval) = FunctionAddress[String] : -# 2194| v2194_4(void) = Call[String] : func:r2194_3, this:r2194_1 -# 2194| mu2194_5(unknown) = ^CallSideEffect : ~m? -# 2194| mu2194_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2194_1 -# 2195| r2195_1(glval) = VariableAddress[x725] : -# 2195| r2195_2(glval) = FunctionAddress[~String] : -# 2195| v2195_3(void) = Call[~String] : func:r2195_2, this:r2195_1 -# 2195| mu2195_4(unknown) = ^CallSideEffect : ~m? -# 2195| v2195_5(void) = ^IndirectReadSideEffect[-1] : &:r2195_1, ~m? -# 2195| mu2195_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2195_1 -# 2195| r2195_7(bool) = Constant[0] : -# 2195| v2195_8(void) = ConditionalBranch : r2195_7 +# 35| Block 726 +# 35| r35_10151(glval) = VariableAddress[x725] : +# 35| mu35_10152(String) = Uninitialized[x725] : &:r35_10151 +# 35| r35_10153(glval) = FunctionAddress[String] : +# 35| v35_10154(void) = Call[String] : func:r35_10153, this:r35_10151 +# 35| mu35_10155(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10156(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10151 +# 35| r35_10157(glval) = VariableAddress[x725] : +# 35| r35_10158(glval) = FunctionAddress[~String] : +# 35| v35_10159(void) = Call[~String] : func:r35_10158, this:r35_10157 +# 35| mu35_10160(unknown) = ^CallSideEffect : ~m? +# 35| v35_10161(void) = ^IndirectReadSideEffect[-1] : &:r35_10157, ~m? +# 35| mu35_10162(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10157 +# 35| r35_10163(bool) = Constant[0] : +# 35| v35_10164(void) = ConditionalBranch : r35_10163 #-----| False -> Block 727 #-----| True (back edge) -> Block 726 -# 2197| Block 727 -# 2197| r2197_1(glval) = VariableAddress[x726] : -# 2197| mu2197_2(String) = Uninitialized[x726] : &:r2197_1 -# 2197| r2197_3(glval) = FunctionAddress[String] : -# 2197| v2197_4(void) = Call[String] : func:r2197_3, this:r2197_1 -# 2197| mu2197_5(unknown) = ^CallSideEffect : ~m? -# 2197| mu2197_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2197_1 -# 2198| r2198_1(glval) = VariableAddress[x726] : -# 2198| r2198_2(glval) = FunctionAddress[~String] : -# 2198| v2198_3(void) = Call[~String] : func:r2198_2, this:r2198_1 -# 2198| mu2198_4(unknown) = ^CallSideEffect : ~m? -# 2198| v2198_5(void) = ^IndirectReadSideEffect[-1] : &:r2198_1, ~m? -# 2198| mu2198_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2198_1 -# 2198| r2198_7(bool) = Constant[0] : -# 2198| v2198_8(void) = ConditionalBranch : r2198_7 +# 35| Block 727 +# 35| r35_10165(glval) = VariableAddress[x726] : +# 35| mu35_10166(String) = Uninitialized[x726] : &:r35_10165 +# 35| r35_10167(glval) = FunctionAddress[String] : +# 35| v35_10168(void) = Call[String] : func:r35_10167, this:r35_10165 +# 35| mu35_10169(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10170(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10165 +# 35| r35_10171(glval) = VariableAddress[x726] : +# 35| r35_10172(glval) = FunctionAddress[~String] : +# 35| v35_10173(void) = Call[~String] : func:r35_10172, this:r35_10171 +# 35| mu35_10174(unknown) = ^CallSideEffect : ~m? +# 35| v35_10175(void) = ^IndirectReadSideEffect[-1] : &:r35_10171, ~m? +# 35| mu35_10176(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10171 +# 35| r35_10177(bool) = Constant[0] : +# 35| v35_10178(void) = ConditionalBranch : r35_10177 #-----| False -> Block 728 #-----| True (back edge) -> Block 727 -# 2200| Block 728 -# 2200| r2200_1(glval) = VariableAddress[x727] : -# 2200| mu2200_2(String) = Uninitialized[x727] : &:r2200_1 -# 2200| r2200_3(glval) = FunctionAddress[String] : -# 2200| v2200_4(void) = Call[String] : func:r2200_3, this:r2200_1 -# 2200| mu2200_5(unknown) = ^CallSideEffect : ~m? -# 2200| mu2200_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 -# 2201| r2201_1(glval) = VariableAddress[x727] : -# 2201| r2201_2(glval) = FunctionAddress[~String] : -# 2201| v2201_3(void) = Call[~String] : func:r2201_2, this:r2201_1 -# 2201| mu2201_4(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_5(void) = ^IndirectReadSideEffect[-1] : &:r2201_1, ~m? -# 2201| mu2201_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2201_1 -# 2201| r2201_7(bool) = Constant[0] : -# 2201| v2201_8(void) = ConditionalBranch : r2201_7 +# 35| Block 728 +# 35| r35_10179(glval) = VariableAddress[x727] : +# 35| mu35_10180(String) = Uninitialized[x727] : &:r35_10179 +# 35| r35_10181(glval) = FunctionAddress[String] : +# 35| v35_10182(void) = Call[String] : func:r35_10181, this:r35_10179 +# 35| mu35_10183(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10184(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10179 +# 35| r35_10185(glval) = VariableAddress[x727] : +# 35| r35_10186(glval) = FunctionAddress[~String] : +# 35| v35_10187(void) = Call[~String] : func:r35_10186, this:r35_10185 +# 35| mu35_10188(unknown) = ^CallSideEffect : ~m? +# 35| v35_10189(void) = ^IndirectReadSideEffect[-1] : &:r35_10185, ~m? +# 35| mu35_10190(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10185 +# 35| r35_10191(bool) = Constant[0] : +# 35| v35_10192(void) = ConditionalBranch : r35_10191 #-----| False -> Block 729 #-----| True (back edge) -> Block 728 -# 2203| Block 729 -# 2203| r2203_1(glval) = VariableAddress[x728] : -# 2203| mu2203_2(String) = Uninitialized[x728] : &:r2203_1 -# 2203| r2203_3(glval) = FunctionAddress[String] : -# 2203| v2203_4(void) = Call[String] : func:r2203_3, this:r2203_1 -# 2203| mu2203_5(unknown) = ^CallSideEffect : ~m? -# 2203| mu2203_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2203_1 -# 2204| r2204_1(glval) = VariableAddress[x728] : -# 2204| r2204_2(glval) = FunctionAddress[~String] : -# 2204| v2204_3(void) = Call[~String] : func:r2204_2, this:r2204_1 -# 2204| mu2204_4(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_5(void) = ^IndirectReadSideEffect[-1] : &:r2204_1, ~m? -# 2204| mu2204_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 -# 2204| r2204_7(bool) = Constant[0] : -# 2204| v2204_8(void) = ConditionalBranch : r2204_7 +# 35| Block 729 +# 35| r35_10193(glval) = VariableAddress[x728] : +# 35| mu35_10194(String) = Uninitialized[x728] : &:r35_10193 +# 35| r35_10195(glval) = FunctionAddress[String] : +# 35| v35_10196(void) = Call[String] : func:r35_10195, this:r35_10193 +# 35| mu35_10197(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10198(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10193 +# 35| r35_10199(glval) = VariableAddress[x728] : +# 35| r35_10200(glval) = FunctionAddress[~String] : +# 35| v35_10201(void) = Call[~String] : func:r35_10200, this:r35_10199 +# 35| mu35_10202(unknown) = ^CallSideEffect : ~m? +# 35| v35_10203(void) = ^IndirectReadSideEffect[-1] : &:r35_10199, ~m? +# 35| mu35_10204(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10199 +# 35| r35_10205(bool) = Constant[0] : +# 35| v35_10206(void) = ConditionalBranch : r35_10205 #-----| False -> Block 730 #-----| True (back edge) -> Block 729 -# 2206| Block 730 -# 2206| r2206_1(glval) = VariableAddress[x729] : -# 2206| mu2206_2(String) = Uninitialized[x729] : &:r2206_1 -# 2206| r2206_3(glval) = FunctionAddress[String] : -# 2206| v2206_4(void) = Call[String] : func:r2206_3, this:r2206_1 -# 2206| mu2206_5(unknown) = ^CallSideEffect : ~m? -# 2206| mu2206_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 -# 2207| r2207_1(glval) = VariableAddress[x729] : -# 2207| r2207_2(glval) = FunctionAddress[~String] : -# 2207| v2207_3(void) = Call[~String] : func:r2207_2, this:r2207_1 -# 2207| mu2207_4(unknown) = ^CallSideEffect : ~m? -# 2207| v2207_5(void) = ^IndirectReadSideEffect[-1] : &:r2207_1, ~m? -# 2207| mu2207_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2207_1 -# 2207| r2207_7(bool) = Constant[0] : -# 2207| v2207_8(void) = ConditionalBranch : r2207_7 +# 35| Block 730 +# 35| r35_10207(glval) = VariableAddress[x729] : +# 35| mu35_10208(String) = Uninitialized[x729] : &:r35_10207 +# 35| r35_10209(glval) = FunctionAddress[String] : +# 35| v35_10210(void) = Call[String] : func:r35_10209, this:r35_10207 +# 35| mu35_10211(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10212(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10207 +# 35| r35_10213(glval) = VariableAddress[x729] : +# 35| r35_10214(glval) = FunctionAddress[~String] : +# 35| v35_10215(void) = Call[~String] : func:r35_10214, this:r35_10213 +# 35| mu35_10216(unknown) = ^CallSideEffect : ~m? +# 35| v35_10217(void) = ^IndirectReadSideEffect[-1] : &:r35_10213, ~m? +# 35| mu35_10218(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10213 +# 35| r35_10219(bool) = Constant[0] : +# 35| v35_10220(void) = ConditionalBranch : r35_10219 #-----| False -> Block 731 #-----| True (back edge) -> Block 730 -# 2209| Block 731 -# 2209| r2209_1(glval) = VariableAddress[x730] : -# 2209| mu2209_2(String) = Uninitialized[x730] : &:r2209_1 -# 2209| r2209_3(glval) = FunctionAddress[String] : -# 2209| v2209_4(void) = Call[String] : func:r2209_3, this:r2209_1 -# 2209| mu2209_5(unknown) = ^CallSideEffect : ~m? -# 2209| mu2209_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2209_1 -# 2210| r2210_1(glval) = VariableAddress[x730] : -# 2210| r2210_2(glval) = FunctionAddress[~String] : -# 2210| v2210_3(void) = Call[~String] : func:r2210_2, this:r2210_1 -# 2210| mu2210_4(unknown) = ^CallSideEffect : ~m? -# 2210| v2210_5(void) = ^IndirectReadSideEffect[-1] : &:r2210_1, ~m? -# 2210| mu2210_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 -# 2210| r2210_7(bool) = Constant[0] : -# 2210| v2210_8(void) = ConditionalBranch : r2210_7 +# 35| Block 731 +# 35| r35_10221(glval) = VariableAddress[x730] : +# 35| mu35_10222(String) = Uninitialized[x730] : &:r35_10221 +# 35| r35_10223(glval) = FunctionAddress[String] : +# 35| v35_10224(void) = Call[String] : func:r35_10223, this:r35_10221 +# 35| mu35_10225(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10226(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10221 +# 35| r35_10227(glval) = VariableAddress[x730] : +# 35| r35_10228(glval) = FunctionAddress[~String] : +# 35| v35_10229(void) = Call[~String] : func:r35_10228, this:r35_10227 +# 35| mu35_10230(unknown) = ^CallSideEffect : ~m? +# 35| v35_10231(void) = ^IndirectReadSideEffect[-1] : &:r35_10227, ~m? +# 35| mu35_10232(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10227 +# 35| r35_10233(bool) = Constant[0] : +# 35| v35_10234(void) = ConditionalBranch : r35_10233 #-----| False -> Block 732 #-----| True (back edge) -> Block 731 -# 2212| Block 732 -# 2212| r2212_1(glval) = VariableAddress[x731] : -# 2212| mu2212_2(String) = Uninitialized[x731] : &:r2212_1 -# 2212| r2212_3(glval) = FunctionAddress[String] : -# 2212| v2212_4(void) = Call[String] : func:r2212_3, this:r2212_1 -# 2212| mu2212_5(unknown) = ^CallSideEffect : ~m? -# 2212| mu2212_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2212_1 -# 2213| r2213_1(glval) = VariableAddress[x731] : -# 2213| r2213_2(glval) = FunctionAddress[~String] : -# 2213| v2213_3(void) = Call[~String] : func:r2213_2, this:r2213_1 -# 2213| mu2213_4(unknown) = ^CallSideEffect : ~m? -# 2213| v2213_5(void) = ^IndirectReadSideEffect[-1] : &:r2213_1, ~m? -# 2213| mu2213_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2213_1 -# 2213| r2213_7(bool) = Constant[0] : -# 2213| v2213_8(void) = ConditionalBranch : r2213_7 +# 35| Block 732 +# 35| r35_10235(glval) = VariableAddress[x731] : +# 35| mu35_10236(String) = Uninitialized[x731] : &:r35_10235 +# 35| r35_10237(glval) = FunctionAddress[String] : +# 35| v35_10238(void) = Call[String] : func:r35_10237, this:r35_10235 +# 35| mu35_10239(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10240(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10235 +# 35| r35_10241(glval) = VariableAddress[x731] : +# 35| r35_10242(glval) = FunctionAddress[~String] : +# 35| v35_10243(void) = Call[~String] : func:r35_10242, this:r35_10241 +# 35| mu35_10244(unknown) = ^CallSideEffect : ~m? +# 35| v35_10245(void) = ^IndirectReadSideEffect[-1] : &:r35_10241, ~m? +# 35| mu35_10246(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10241 +# 35| r35_10247(bool) = Constant[0] : +# 35| v35_10248(void) = ConditionalBranch : r35_10247 #-----| False -> Block 733 #-----| True (back edge) -> Block 732 -# 2215| Block 733 -# 2215| r2215_1(glval) = VariableAddress[x732] : -# 2215| mu2215_2(String) = Uninitialized[x732] : &:r2215_1 -# 2215| r2215_3(glval) = FunctionAddress[String] : -# 2215| v2215_4(void) = Call[String] : func:r2215_3, this:r2215_1 -# 2215| mu2215_5(unknown) = ^CallSideEffect : ~m? -# 2215| mu2215_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 -# 2216| r2216_1(glval) = VariableAddress[x732] : -# 2216| r2216_2(glval) = FunctionAddress[~String] : -# 2216| v2216_3(void) = Call[~String] : func:r2216_2, this:r2216_1 -# 2216| mu2216_4(unknown) = ^CallSideEffect : ~m? -# 2216| v2216_5(void) = ^IndirectReadSideEffect[-1] : &:r2216_1, ~m? -# 2216| mu2216_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 -# 2216| r2216_7(bool) = Constant[0] : -# 2216| v2216_8(void) = ConditionalBranch : r2216_7 +# 35| Block 733 +# 35| r35_10249(glval) = VariableAddress[x732] : +# 35| mu35_10250(String) = Uninitialized[x732] : &:r35_10249 +# 35| r35_10251(glval) = FunctionAddress[String] : +# 35| v35_10252(void) = Call[String] : func:r35_10251, this:r35_10249 +# 35| mu35_10253(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10254(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10249 +# 35| r35_10255(glval) = VariableAddress[x732] : +# 35| r35_10256(glval) = FunctionAddress[~String] : +# 35| v35_10257(void) = Call[~String] : func:r35_10256, this:r35_10255 +# 35| mu35_10258(unknown) = ^CallSideEffect : ~m? +# 35| v35_10259(void) = ^IndirectReadSideEffect[-1] : &:r35_10255, ~m? +# 35| mu35_10260(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10255 +# 35| r35_10261(bool) = Constant[0] : +# 35| v35_10262(void) = ConditionalBranch : r35_10261 #-----| False -> Block 734 #-----| True (back edge) -> Block 733 -# 2218| Block 734 -# 2218| r2218_1(glval) = VariableAddress[x733] : -# 2218| mu2218_2(String) = Uninitialized[x733] : &:r2218_1 -# 2218| r2218_3(glval) = FunctionAddress[String] : -# 2218| v2218_4(void) = Call[String] : func:r2218_3, this:r2218_1 -# 2218| mu2218_5(unknown) = ^CallSideEffect : ~m? -# 2218| mu2218_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 -# 2219| r2219_1(glval) = VariableAddress[x733] : -# 2219| r2219_2(glval) = FunctionAddress[~String] : -# 2219| v2219_3(void) = Call[~String] : func:r2219_2, this:r2219_1 -# 2219| mu2219_4(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_5(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, ~m? -# 2219| mu2219_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 -# 2219| r2219_7(bool) = Constant[0] : -# 2219| v2219_8(void) = ConditionalBranch : r2219_7 +# 35| Block 734 +# 35| r35_10263(glval) = VariableAddress[x733] : +# 35| mu35_10264(String) = Uninitialized[x733] : &:r35_10263 +# 35| r35_10265(glval) = FunctionAddress[String] : +# 35| v35_10266(void) = Call[String] : func:r35_10265, this:r35_10263 +# 35| mu35_10267(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10268(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10263 +# 35| r35_10269(glval) = VariableAddress[x733] : +# 35| r35_10270(glval) = FunctionAddress[~String] : +# 35| v35_10271(void) = Call[~String] : func:r35_10270, this:r35_10269 +# 35| mu35_10272(unknown) = ^CallSideEffect : ~m? +# 35| v35_10273(void) = ^IndirectReadSideEffect[-1] : &:r35_10269, ~m? +# 35| mu35_10274(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10269 +# 35| r35_10275(bool) = Constant[0] : +# 35| v35_10276(void) = ConditionalBranch : r35_10275 #-----| False -> Block 735 #-----| True (back edge) -> Block 734 -# 2221| Block 735 -# 2221| r2221_1(glval) = VariableAddress[x734] : -# 2221| mu2221_2(String) = Uninitialized[x734] : &:r2221_1 -# 2221| r2221_3(glval) = FunctionAddress[String] : -# 2221| v2221_4(void) = Call[String] : func:r2221_3, this:r2221_1 -# 2221| mu2221_5(unknown) = ^CallSideEffect : ~m? -# 2221| mu2221_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2221_1 -# 2222| r2222_1(glval) = VariableAddress[x734] : -# 2222| r2222_2(glval) = FunctionAddress[~String] : -# 2222| v2222_3(void) = Call[~String] : func:r2222_2, this:r2222_1 -# 2222| mu2222_4(unknown) = ^CallSideEffect : ~m? -# 2222| v2222_5(void) = ^IndirectReadSideEffect[-1] : &:r2222_1, ~m? -# 2222| mu2222_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2222_1 -# 2222| r2222_7(bool) = Constant[0] : -# 2222| v2222_8(void) = ConditionalBranch : r2222_7 +# 35| Block 735 +# 35| r35_10277(glval) = VariableAddress[x734] : +# 35| mu35_10278(String) = Uninitialized[x734] : &:r35_10277 +# 35| r35_10279(glval) = FunctionAddress[String] : +# 35| v35_10280(void) = Call[String] : func:r35_10279, this:r35_10277 +# 35| mu35_10281(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10282(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10277 +# 35| r35_10283(glval) = VariableAddress[x734] : +# 35| r35_10284(glval) = FunctionAddress[~String] : +# 35| v35_10285(void) = Call[~String] : func:r35_10284, this:r35_10283 +# 35| mu35_10286(unknown) = ^CallSideEffect : ~m? +# 35| v35_10287(void) = ^IndirectReadSideEffect[-1] : &:r35_10283, ~m? +# 35| mu35_10288(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10283 +# 35| r35_10289(bool) = Constant[0] : +# 35| v35_10290(void) = ConditionalBranch : r35_10289 #-----| False -> Block 736 #-----| True (back edge) -> Block 735 -# 2224| Block 736 -# 2224| r2224_1(glval) = VariableAddress[x735] : -# 2224| mu2224_2(String) = Uninitialized[x735] : &:r2224_1 -# 2224| r2224_3(glval) = FunctionAddress[String] : -# 2224| v2224_4(void) = Call[String] : func:r2224_3, this:r2224_1 -# 2224| mu2224_5(unknown) = ^CallSideEffect : ~m? -# 2224| mu2224_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2224_1 -# 2225| r2225_1(glval) = VariableAddress[x735] : -# 2225| r2225_2(glval) = FunctionAddress[~String] : -# 2225| v2225_3(void) = Call[~String] : func:r2225_2, this:r2225_1 -# 2225| mu2225_4(unknown) = ^CallSideEffect : ~m? -# 2225| v2225_5(void) = ^IndirectReadSideEffect[-1] : &:r2225_1, ~m? -# 2225| mu2225_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2225_1 -# 2225| r2225_7(bool) = Constant[0] : -# 2225| v2225_8(void) = ConditionalBranch : r2225_7 +# 35| Block 736 +# 35| r35_10291(glval) = VariableAddress[x735] : +# 35| mu35_10292(String) = Uninitialized[x735] : &:r35_10291 +# 35| r35_10293(glval) = FunctionAddress[String] : +# 35| v35_10294(void) = Call[String] : func:r35_10293, this:r35_10291 +# 35| mu35_10295(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10296(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10291 +# 35| r35_10297(glval) = VariableAddress[x735] : +# 35| r35_10298(glval) = FunctionAddress[~String] : +# 35| v35_10299(void) = Call[~String] : func:r35_10298, this:r35_10297 +# 35| mu35_10300(unknown) = ^CallSideEffect : ~m? +# 35| v35_10301(void) = ^IndirectReadSideEffect[-1] : &:r35_10297, ~m? +# 35| mu35_10302(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10297 +# 35| r35_10303(bool) = Constant[0] : +# 35| v35_10304(void) = ConditionalBranch : r35_10303 #-----| False -> Block 737 #-----| True (back edge) -> Block 736 -# 2227| Block 737 -# 2227| r2227_1(glval) = VariableAddress[x736] : -# 2227| mu2227_2(String) = Uninitialized[x736] : &:r2227_1 -# 2227| r2227_3(glval) = FunctionAddress[String] : -# 2227| v2227_4(void) = Call[String] : func:r2227_3, this:r2227_1 -# 2227| mu2227_5(unknown) = ^CallSideEffect : ~m? -# 2227| mu2227_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2227_1 -# 2228| r2228_1(glval) = VariableAddress[x736] : -# 2228| r2228_2(glval) = FunctionAddress[~String] : -# 2228| v2228_3(void) = Call[~String] : func:r2228_2, this:r2228_1 -# 2228| mu2228_4(unknown) = ^CallSideEffect : ~m? -# 2228| v2228_5(void) = ^IndirectReadSideEffect[-1] : &:r2228_1, ~m? -# 2228| mu2228_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2228_1 -# 2228| r2228_7(bool) = Constant[0] : -# 2228| v2228_8(void) = ConditionalBranch : r2228_7 +# 35| Block 737 +# 35| r35_10305(glval) = VariableAddress[x736] : +# 35| mu35_10306(String) = Uninitialized[x736] : &:r35_10305 +# 35| r35_10307(glval) = FunctionAddress[String] : +# 35| v35_10308(void) = Call[String] : func:r35_10307, this:r35_10305 +# 35| mu35_10309(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10310(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10305 +# 35| r35_10311(glval) = VariableAddress[x736] : +# 35| r35_10312(glval) = FunctionAddress[~String] : +# 35| v35_10313(void) = Call[~String] : func:r35_10312, this:r35_10311 +# 35| mu35_10314(unknown) = ^CallSideEffect : ~m? +# 35| v35_10315(void) = ^IndirectReadSideEffect[-1] : &:r35_10311, ~m? +# 35| mu35_10316(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10311 +# 35| r35_10317(bool) = Constant[0] : +# 35| v35_10318(void) = ConditionalBranch : r35_10317 #-----| False -> Block 738 #-----| True (back edge) -> Block 737 -# 2230| Block 738 -# 2230| r2230_1(glval) = VariableAddress[x737] : -# 2230| mu2230_2(String) = Uninitialized[x737] : &:r2230_1 -# 2230| r2230_3(glval) = FunctionAddress[String] : -# 2230| v2230_4(void) = Call[String] : func:r2230_3, this:r2230_1 -# 2230| mu2230_5(unknown) = ^CallSideEffect : ~m? -# 2230| mu2230_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2230_1 -# 2231| r2231_1(glval) = VariableAddress[x737] : -# 2231| r2231_2(glval) = FunctionAddress[~String] : -# 2231| v2231_3(void) = Call[~String] : func:r2231_2, this:r2231_1 -# 2231| mu2231_4(unknown) = ^CallSideEffect : ~m? -# 2231| v2231_5(void) = ^IndirectReadSideEffect[-1] : &:r2231_1, ~m? -# 2231| mu2231_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2231_1 -# 2231| r2231_7(bool) = Constant[0] : -# 2231| v2231_8(void) = ConditionalBranch : r2231_7 +# 35| Block 738 +# 35| r35_10319(glval) = VariableAddress[x737] : +# 35| mu35_10320(String) = Uninitialized[x737] : &:r35_10319 +# 35| r35_10321(glval) = FunctionAddress[String] : +# 35| v35_10322(void) = Call[String] : func:r35_10321, this:r35_10319 +# 35| mu35_10323(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10324(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10319 +# 35| r35_10325(glval) = VariableAddress[x737] : +# 35| r35_10326(glval) = FunctionAddress[~String] : +# 35| v35_10327(void) = Call[~String] : func:r35_10326, this:r35_10325 +# 35| mu35_10328(unknown) = ^CallSideEffect : ~m? +# 35| v35_10329(void) = ^IndirectReadSideEffect[-1] : &:r35_10325, ~m? +# 35| mu35_10330(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10325 +# 35| r35_10331(bool) = Constant[0] : +# 35| v35_10332(void) = ConditionalBranch : r35_10331 #-----| False -> Block 739 #-----| True (back edge) -> Block 738 -# 2233| Block 739 -# 2233| r2233_1(glval) = VariableAddress[x738] : -# 2233| mu2233_2(String) = Uninitialized[x738] : &:r2233_1 -# 2233| r2233_3(glval) = FunctionAddress[String] : -# 2233| v2233_4(void) = Call[String] : func:r2233_3, this:r2233_1 -# 2233| mu2233_5(unknown) = ^CallSideEffect : ~m? -# 2233| mu2233_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 -# 2234| r2234_1(glval) = VariableAddress[x738] : -# 2234| r2234_2(glval) = FunctionAddress[~String] : -# 2234| v2234_3(void) = Call[~String] : func:r2234_2, this:r2234_1 -# 2234| mu2234_4(unknown) = ^CallSideEffect : ~m? -# 2234| v2234_5(void) = ^IndirectReadSideEffect[-1] : &:r2234_1, ~m? -# 2234| mu2234_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1 -# 2234| r2234_7(bool) = Constant[0] : -# 2234| v2234_8(void) = ConditionalBranch : r2234_7 +# 35| Block 739 +# 35| r35_10333(glval) = VariableAddress[x738] : +# 35| mu35_10334(String) = Uninitialized[x738] : &:r35_10333 +# 35| r35_10335(glval) = FunctionAddress[String] : +# 35| v35_10336(void) = Call[String] : func:r35_10335, this:r35_10333 +# 35| mu35_10337(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10338(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10333 +# 35| r35_10339(glval) = VariableAddress[x738] : +# 35| r35_10340(glval) = FunctionAddress[~String] : +# 35| v35_10341(void) = Call[~String] : func:r35_10340, this:r35_10339 +# 35| mu35_10342(unknown) = ^CallSideEffect : ~m? +# 35| v35_10343(void) = ^IndirectReadSideEffect[-1] : &:r35_10339, ~m? +# 35| mu35_10344(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10339 +# 35| r35_10345(bool) = Constant[0] : +# 35| v35_10346(void) = ConditionalBranch : r35_10345 #-----| False -> Block 740 #-----| True (back edge) -> Block 739 -# 2236| Block 740 -# 2236| r2236_1(glval) = VariableAddress[x739] : -# 2236| mu2236_2(String) = Uninitialized[x739] : &:r2236_1 -# 2236| r2236_3(glval) = FunctionAddress[String] : -# 2236| v2236_4(void) = Call[String] : func:r2236_3, this:r2236_1 -# 2236| mu2236_5(unknown) = ^CallSideEffect : ~m? -# 2236| mu2236_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2236_1 -# 2237| r2237_1(glval) = VariableAddress[x739] : -# 2237| r2237_2(glval) = FunctionAddress[~String] : -# 2237| v2237_3(void) = Call[~String] : func:r2237_2, this:r2237_1 -# 2237| mu2237_4(unknown) = ^CallSideEffect : ~m? -# 2237| v2237_5(void) = ^IndirectReadSideEffect[-1] : &:r2237_1, ~m? -# 2237| mu2237_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2237_1 -# 2237| r2237_7(bool) = Constant[0] : -# 2237| v2237_8(void) = ConditionalBranch : r2237_7 +# 35| Block 740 +# 35| r35_10347(glval) = VariableAddress[x739] : +# 35| mu35_10348(String) = Uninitialized[x739] : &:r35_10347 +# 35| r35_10349(glval) = FunctionAddress[String] : +# 35| v35_10350(void) = Call[String] : func:r35_10349, this:r35_10347 +# 35| mu35_10351(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10352(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10347 +# 35| r35_10353(glval) = VariableAddress[x739] : +# 35| r35_10354(glval) = FunctionAddress[~String] : +# 35| v35_10355(void) = Call[~String] : func:r35_10354, this:r35_10353 +# 35| mu35_10356(unknown) = ^CallSideEffect : ~m? +# 35| v35_10357(void) = ^IndirectReadSideEffect[-1] : &:r35_10353, ~m? +# 35| mu35_10358(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10353 +# 35| r35_10359(bool) = Constant[0] : +# 35| v35_10360(void) = ConditionalBranch : r35_10359 #-----| False -> Block 741 #-----| True (back edge) -> Block 740 -# 2239| Block 741 -# 2239| r2239_1(glval) = VariableAddress[x740] : -# 2239| mu2239_2(String) = Uninitialized[x740] : &:r2239_1 -# 2239| r2239_3(glval) = FunctionAddress[String] : -# 2239| v2239_4(void) = Call[String] : func:r2239_3, this:r2239_1 -# 2239| mu2239_5(unknown) = ^CallSideEffect : ~m? -# 2239| mu2239_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2239_1 -# 2240| r2240_1(glval) = VariableAddress[x740] : -# 2240| r2240_2(glval) = FunctionAddress[~String] : -# 2240| v2240_3(void) = Call[~String] : func:r2240_2, this:r2240_1 -# 2240| mu2240_4(unknown) = ^CallSideEffect : ~m? -# 2240| v2240_5(void) = ^IndirectReadSideEffect[-1] : &:r2240_1, ~m? -# 2240| mu2240_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2240_1 -# 2240| r2240_7(bool) = Constant[0] : -# 2240| v2240_8(void) = ConditionalBranch : r2240_7 +# 35| Block 741 +# 35| r35_10361(glval) = VariableAddress[x740] : +# 35| mu35_10362(String) = Uninitialized[x740] : &:r35_10361 +# 35| r35_10363(glval) = FunctionAddress[String] : +# 35| v35_10364(void) = Call[String] : func:r35_10363, this:r35_10361 +# 35| mu35_10365(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10366(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10361 +# 35| r35_10367(glval) = VariableAddress[x740] : +# 35| r35_10368(glval) = FunctionAddress[~String] : +# 35| v35_10369(void) = Call[~String] : func:r35_10368, this:r35_10367 +# 35| mu35_10370(unknown) = ^CallSideEffect : ~m? +# 35| v35_10371(void) = ^IndirectReadSideEffect[-1] : &:r35_10367, ~m? +# 35| mu35_10372(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10367 +# 35| r35_10373(bool) = Constant[0] : +# 35| v35_10374(void) = ConditionalBranch : r35_10373 #-----| False -> Block 742 #-----| True (back edge) -> Block 741 -# 2242| Block 742 -# 2242| r2242_1(glval) = VariableAddress[x741] : -# 2242| mu2242_2(String) = Uninitialized[x741] : &:r2242_1 -# 2242| r2242_3(glval) = FunctionAddress[String] : -# 2242| v2242_4(void) = Call[String] : func:r2242_3, this:r2242_1 -# 2242| mu2242_5(unknown) = ^CallSideEffect : ~m? -# 2242| mu2242_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2242_1 -# 2243| r2243_1(glval) = VariableAddress[x741] : -# 2243| r2243_2(glval) = FunctionAddress[~String] : -# 2243| v2243_3(void) = Call[~String] : func:r2243_2, this:r2243_1 -# 2243| mu2243_4(unknown) = ^CallSideEffect : ~m? -# 2243| v2243_5(void) = ^IndirectReadSideEffect[-1] : &:r2243_1, ~m? -# 2243| mu2243_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2243_1 -# 2243| r2243_7(bool) = Constant[0] : -# 2243| v2243_8(void) = ConditionalBranch : r2243_7 +# 35| Block 742 +# 35| r35_10375(glval) = VariableAddress[x741] : +# 35| mu35_10376(String) = Uninitialized[x741] : &:r35_10375 +# 35| r35_10377(glval) = FunctionAddress[String] : +# 35| v35_10378(void) = Call[String] : func:r35_10377, this:r35_10375 +# 35| mu35_10379(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10380(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10375 +# 35| r35_10381(glval) = VariableAddress[x741] : +# 35| r35_10382(glval) = FunctionAddress[~String] : +# 35| v35_10383(void) = Call[~String] : func:r35_10382, this:r35_10381 +# 35| mu35_10384(unknown) = ^CallSideEffect : ~m? +# 35| v35_10385(void) = ^IndirectReadSideEffect[-1] : &:r35_10381, ~m? +# 35| mu35_10386(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10381 +# 35| r35_10387(bool) = Constant[0] : +# 35| v35_10388(void) = ConditionalBranch : r35_10387 #-----| False -> Block 743 #-----| True (back edge) -> Block 742 -# 2245| Block 743 -# 2245| r2245_1(glval) = VariableAddress[x742] : -# 2245| mu2245_2(String) = Uninitialized[x742] : &:r2245_1 -# 2245| r2245_3(glval) = FunctionAddress[String] : -# 2245| v2245_4(void) = Call[String] : func:r2245_3, this:r2245_1 -# 2245| mu2245_5(unknown) = ^CallSideEffect : ~m? -# 2245| mu2245_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2245_1 -# 2246| r2246_1(glval) = VariableAddress[x742] : -# 2246| r2246_2(glval) = FunctionAddress[~String] : -# 2246| v2246_3(void) = Call[~String] : func:r2246_2, this:r2246_1 -# 2246| mu2246_4(unknown) = ^CallSideEffect : ~m? -# 2246| v2246_5(void) = ^IndirectReadSideEffect[-1] : &:r2246_1, ~m? -# 2246| mu2246_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2246_1 -# 2246| r2246_7(bool) = Constant[0] : -# 2246| v2246_8(void) = ConditionalBranch : r2246_7 +# 35| Block 743 +# 35| r35_10389(glval) = VariableAddress[x742] : +# 35| mu35_10390(String) = Uninitialized[x742] : &:r35_10389 +# 35| r35_10391(glval) = FunctionAddress[String] : +# 35| v35_10392(void) = Call[String] : func:r35_10391, this:r35_10389 +# 35| mu35_10393(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10394(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10389 +# 35| r35_10395(glval) = VariableAddress[x742] : +# 35| r35_10396(glval) = FunctionAddress[~String] : +# 35| v35_10397(void) = Call[~String] : func:r35_10396, this:r35_10395 +# 35| mu35_10398(unknown) = ^CallSideEffect : ~m? +# 35| v35_10399(void) = ^IndirectReadSideEffect[-1] : &:r35_10395, ~m? +# 35| mu35_10400(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10395 +# 35| r35_10401(bool) = Constant[0] : +# 35| v35_10402(void) = ConditionalBranch : r35_10401 #-----| False -> Block 744 #-----| True (back edge) -> Block 743 -# 2248| Block 744 -# 2248| r2248_1(glval) = VariableAddress[x743] : -# 2248| mu2248_2(String) = Uninitialized[x743] : &:r2248_1 -# 2248| r2248_3(glval) = FunctionAddress[String] : -# 2248| v2248_4(void) = Call[String] : func:r2248_3, this:r2248_1 -# 2248| mu2248_5(unknown) = ^CallSideEffect : ~m? -# 2248| mu2248_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2248_1 -# 2249| r2249_1(glval) = VariableAddress[x743] : -# 2249| r2249_2(glval) = FunctionAddress[~String] : -# 2249| v2249_3(void) = Call[~String] : func:r2249_2, this:r2249_1 -# 2249| mu2249_4(unknown) = ^CallSideEffect : ~m? -# 2249| v2249_5(void) = ^IndirectReadSideEffect[-1] : &:r2249_1, ~m? -# 2249| mu2249_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2249_1 -# 2249| r2249_7(bool) = Constant[0] : -# 2249| v2249_8(void) = ConditionalBranch : r2249_7 +# 35| Block 744 +# 35| r35_10403(glval) = VariableAddress[x743] : +# 35| mu35_10404(String) = Uninitialized[x743] : &:r35_10403 +# 35| r35_10405(glval) = FunctionAddress[String] : +# 35| v35_10406(void) = Call[String] : func:r35_10405, this:r35_10403 +# 35| mu35_10407(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10408(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10403 +# 35| r35_10409(glval) = VariableAddress[x743] : +# 35| r35_10410(glval) = FunctionAddress[~String] : +# 35| v35_10411(void) = Call[~String] : func:r35_10410, this:r35_10409 +# 35| mu35_10412(unknown) = ^CallSideEffect : ~m? +# 35| v35_10413(void) = ^IndirectReadSideEffect[-1] : &:r35_10409, ~m? +# 35| mu35_10414(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10409 +# 35| r35_10415(bool) = Constant[0] : +# 35| v35_10416(void) = ConditionalBranch : r35_10415 #-----| False -> Block 745 #-----| True (back edge) -> Block 744 -# 2251| Block 745 -# 2251| r2251_1(glval) = VariableAddress[x744] : -# 2251| mu2251_2(String) = Uninitialized[x744] : &:r2251_1 -# 2251| r2251_3(glval) = FunctionAddress[String] : -# 2251| v2251_4(void) = Call[String] : func:r2251_3, this:r2251_1 -# 2251| mu2251_5(unknown) = ^CallSideEffect : ~m? -# 2251| mu2251_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2251_1 -# 2252| r2252_1(glval) = VariableAddress[x744] : -# 2252| r2252_2(glval) = FunctionAddress[~String] : -# 2252| v2252_3(void) = Call[~String] : func:r2252_2, this:r2252_1 -# 2252| mu2252_4(unknown) = ^CallSideEffect : ~m? -# 2252| v2252_5(void) = ^IndirectReadSideEffect[-1] : &:r2252_1, ~m? -# 2252| mu2252_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2252_1 -# 2252| r2252_7(bool) = Constant[0] : -# 2252| v2252_8(void) = ConditionalBranch : r2252_7 +# 35| Block 745 +# 35| r35_10417(glval) = VariableAddress[x744] : +# 35| mu35_10418(String) = Uninitialized[x744] : &:r35_10417 +# 35| r35_10419(glval) = FunctionAddress[String] : +# 35| v35_10420(void) = Call[String] : func:r35_10419, this:r35_10417 +# 35| mu35_10421(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10422(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10417 +# 35| r35_10423(glval) = VariableAddress[x744] : +# 35| r35_10424(glval) = FunctionAddress[~String] : +# 35| v35_10425(void) = Call[~String] : func:r35_10424, this:r35_10423 +# 35| mu35_10426(unknown) = ^CallSideEffect : ~m? +# 35| v35_10427(void) = ^IndirectReadSideEffect[-1] : &:r35_10423, ~m? +# 35| mu35_10428(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10423 +# 35| r35_10429(bool) = Constant[0] : +# 35| v35_10430(void) = ConditionalBranch : r35_10429 #-----| False -> Block 746 #-----| True (back edge) -> Block 745 -# 2254| Block 746 -# 2254| r2254_1(glval) = VariableAddress[x745] : -# 2254| mu2254_2(String) = Uninitialized[x745] : &:r2254_1 -# 2254| r2254_3(glval) = FunctionAddress[String] : -# 2254| v2254_4(void) = Call[String] : func:r2254_3, this:r2254_1 -# 2254| mu2254_5(unknown) = ^CallSideEffect : ~m? -# 2254| mu2254_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2254_1 -# 2255| r2255_1(glval) = VariableAddress[x745] : -# 2255| r2255_2(glval) = FunctionAddress[~String] : -# 2255| v2255_3(void) = Call[~String] : func:r2255_2, this:r2255_1 -# 2255| mu2255_4(unknown) = ^CallSideEffect : ~m? -# 2255| v2255_5(void) = ^IndirectReadSideEffect[-1] : &:r2255_1, ~m? -# 2255| mu2255_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2255_1 -# 2255| r2255_7(bool) = Constant[0] : -# 2255| v2255_8(void) = ConditionalBranch : r2255_7 +# 35| Block 746 +# 35| r35_10431(glval) = VariableAddress[x745] : +# 35| mu35_10432(String) = Uninitialized[x745] : &:r35_10431 +# 35| r35_10433(glval) = FunctionAddress[String] : +# 35| v35_10434(void) = Call[String] : func:r35_10433, this:r35_10431 +# 35| mu35_10435(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10436(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10431 +# 35| r35_10437(glval) = VariableAddress[x745] : +# 35| r35_10438(glval) = FunctionAddress[~String] : +# 35| v35_10439(void) = Call[~String] : func:r35_10438, this:r35_10437 +# 35| mu35_10440(unknown) = ^CallSideEffect : ~m? +# 35| v35_10441(void) = ^IndirectReadSideEffect[-1] : &:r35_10437, ~m? +# 35| mu35_10442(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10437 +# 35| r35_10443(bool) = Constant[0] : +# 35| v35_10444(void) = ConditionalBranch : r35_10443 #-----| False -> Block 747 #-----| True (back edge) -> Block 746 -# 2257| Block 747 -# 2257| r2257_1(glval) = VariableAddress[x746] : -# 2257| mu2257_2(String) = Uninitialized[x746] : &:r2257_1 -# 2257| r2257_3(glval) = FunctionAddress[String] : -# 2257| v2257_4(void) = Call[String] : func:r2257_3, this:r2257_1 -# 2257| mu2257_5(unknown) = ^CallSideEffect : ~m? -# 2257| mu2257_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2257_1 -# 2258| r2258_1(glval) = VariableAddress[x746] : -# 2258| r2258_2(glval) = FunctionAddress[~String] : -# 2258| v2258_3(void) = Call[~String] : func:r2258_2, this:r2258_1 -# 2258| mu2258_4(unknown) = ^CallSideEffect : ~m? -# 2258| v2258_5(void) = ^IndirectReadSideEffect[-1] : &:r2258_1, ~m? -# 2258| mu2258_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2258_1 -# 2258| r2258_7(bool) = Constant[0] : -# 2258| v2258_8(void) = ConditionalBranch : r2258_7 +# 35| Block 747 +# 35| r35_10445(glval) = VariableAddress[x746] : +# 35| mu35_10446(String) = Uninitialized[x746] : &:r35_10445 +# 35| r35_10447(glval) = FunctionAddress[String] : +# 35| v35_10448(void) = Call[String] : func:r35_10447, this:r35_10445 +# 35| mu35_10449(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10450(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10445 +# 35| r35_10451(glval) = VariableAddress[x746] : +# 35| r35_10452(glval) = FunctionAddress[~String] : +# 35| v35_10453(void) = Call[~String] : func:r35_10452, this:r35_10451 +# 35| mu35_10454(unknown) = ^CallSideEffect : ~m? +# 35| v35_10455(void) = ^IndirectReadSideEffect[-1] : &:r35_10451, ~m? +# 35| mu35_10456(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10451 +# 35| r35_10457(bool) = Constant[0] : +# 35| v35_10458(void) = ConditionalBranch : r35_10457 #-----| False -> Block 748 #-----| True (back edge) -> Block 747 -# 2260| Block 748 -# 2260| r2260_1(glval) = VariableAddress[x747] : -# 2260| mu2260_2(String) = Uninitialized[x747] : &:r2260_1 -# 2260| r2260_3(glval) = FunctionAddress[String] : -# 2260| v2260_4(void) = Call[String] : func:r2260_3, this:r2260_1 -# 2260| mu2260_5(unknown) = ^CallSideEffect : ~m? -# 2260| mu2260_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2260_1 -# 2261| r2261_1(glval) = VariableAddress[x747] : -# 2261| r2261_2(glval) = FunctionAddress[~String] : -# 2261| v2261_3(void) = Call[~String] : func:r2261_2, this:r2261_1 -# 2261| mu2261_4(unknown) = ^CallSideEffect : ~m? -# 2261| v2261_5(void) = ^IndirectReadSideEffect[-1] : &:r2261_1, ~m? -# 2261| mu2261_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2261_1 -# 2261| r2261_7(bool) = Constant[0] : -# 2261| v2261_8(void) = ConditionalBranch : r2261_7 +# 35| Block 748 +# 35| r35_10459(glval) = VariableAddress[x747] : +# 35| mu35_10460(String) = Uninitialized[x747] : &:r35_10459 +# 35| r35_10461(glval) = FunctionAddress[String] : +# 35| v35_10462(void) = Call[String] : func:r35_10461, this:r35_10459 +# 35| mu35_10463(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10464(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10459 +# 35| r35_10465(glval) = VariableAddress[x747] : +# 35| r35_10466(glval) = FunctionAddress[~String] : +# 35| v35_10467(void) = Call[~String] : func:r35_10466, this:r35_10465 +# 35| mu35_10468(unknown) = ^CallSideEffect : ~m? +# 35| v35_10469(void) = ^IndirectReadSideEffect[-1] : &:r35_10465, ~m? +# 35| mu35_10470(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10465 +# 35| r35_10471(bool) = Constant[0] : +# 35| v35_10472(void) = ConditionalBranch : r35_10471 #-----| False -> Block 749 #-----| True (back edge) -> Block 748 -# 2263| Block 749 -# 2263| r2263_1(glval) = VariableAddress[x748] : -# 2263| mu2263_2(String) = Uninitialized[x748] : &:r2263_1 -# 2263| r2263_3(glval) = FunctionAddress[String] : -# 2263| v2263_4(void) = Call[String] : func:r2263_3, this:r2263_1 -# 2263| mu2263_5(unknown) = ^CallSideEffect : ~m? -# 2263| mu2263_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2263_1 -# 2264| r2264_1(glval) = VariableAddress[x748] : -# 2264| r2264_2(glval) = FunctionAddress[~String] : -# 2264| v2264_3(void) = Call[~String] : func:r2264_2, this:r2264_1 -# 2264| mu2264_4(unknown) = ^CallSideEffect : ~m? -# 2264| v2264_5(void) = ^IndirectReadSideEffect[-1] : &:r2264_1, ~m? -# 2264| mu2264_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2264_1 -# 2264| r2264_7(bool) = Constant[0] : -# 2264| v2264_8(void) = ConditionalBranch : r2264_7 +# 35| Block 749 +# 35| r35_10473(glval) = VariableAddress[x748] : +# 35| mu35_10474(String) = Uninitialized[x748] : &:r35_10473 +# 35| r35_10475(glval) = FunctionAddress[String] : +# 35| v35_10476(void) = Call[String] : func:r35_10475, this:r35_10473 +# 35| mu35_10477(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10478(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10473 +# 35| r35_10479(glval) = VariableAddress[x748] : +# 35| r35_10480(glval) = FunctionAddress[~String] : +# 35| v35_10481(void) = Call[~String] : func:r35_10480, this:r35_10479 +# 35| mu35_10482(unknown) = ^CallSideEffect : ~m? +# 35| v35_10483(void) = ^IndirectReadSideEffect[-1] : &:r35_10479, ~m? +# 35| mu35_10484(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10479 +# 35| r35_10485(bool) = Constant[0] : +# 35| v35_10486(void) = ConditionalBranch : r35_10485 #-----| False -> Block 750 #-----| True (back edge) -> Block 749 -# 2266| Block 750 -# 2266| r2266_1(glval) = VariableAddress[x749] : -# 2266| mu2266_2(String) = Uninitialized[x749] : &:r2266_1 -# 2266| r2266_3(glval) = FunctionAddress[String] : -# 2266| v2266_4(void) = Call[String] : func:r2266_3, this:r2266_1 -# 2266| mu2266_5(unknown) = ^CallSideEffect : ~m? -# 2266| mu2266_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_1 -# 2267| r2267_1(glval) = VariableAddress[x749] : -# 2267| r2267_2(glval) = FunctionAddress[~String] : -# 2267| v2267_3(void) = Call[~String] : func:r2267_2, this:r2267_1 -# 2267| mu2267_4(unknown) = ^CallSideEffect : ~m? -# 2267| v2267_5(void) = ^IndirectReadSideEffect[-1] : &:r2267_1, ~m? -# 2267| mu2267_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2267_1 -# 2267| r2267_7(bool) = Constant[0] : -# 2267| v2267_8(void) = ConditionalBranch : r2267_7 +# 35| Block 750 +# 35| r35_10487(glval) = VariableAddress[x749] : +# 35| mu35_10488(String) = Uninitialized[x749] : &:r35_10487 +# 35| r35_10489(glval) = FunctionAddress[String] : +# 35| v35_10490(void) = Call[String] : func:r35_10489, this:r35_10487 +# 35| mu35_10491(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10492(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10487 +# 35| r35_10493(glval) = VariableAddress[x749] : +# 35| r35_10494(glval) = FunctionAddress[~String] : +# 35| v35_10495(void) = Call[~String] : func:r35_10494, this:r35_10493 +# 35| mu35_10496(unknown) = ^CallSideEffect : ~m? +# 35| v35_10497(void) = ^IndirectReadSideEffect[-1] : &:r35_10493, ~m? +# 35| mu35_10498(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10493 +# 35| r35_10499(bool) = Constant[0] : +# 35| v35_10500(void) = ConditionalBranch : r35_10499 #-----| False -> Block 751 #-----| True (back edge) -> Block 750 -# 2269| Block 751 -# 2269| r2269_1(glval) = VariableAddress[x750] : -# 2269| mu2269_2(String) = Uninitialized[x750] : &:r2269_1 -# 2269| r2269_3(glval) = FunctionAddress[String] : -# 2269| v2269_4(void) = Call[String] : func:r2269_3, this:r2269_1 -# 2269| mu2269_5(unknown) = ^CallSideEffect : ~m? -# 2269| mu2269_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2269_1 -# 2270| r2270_1(glval) = VariableAddress[x750] : -# 2270| r2270_2(glval) = FunctionAddress[~String] : -# 2270| v2270_3(void) = Call[~String] : func:r2270_2, this:r2270_1 -# 2270| mu2270_4(unknown) = ^CallSideEffect : ~m? -# 2270| v2270_5(void) = ^IndirectReadSideEffect[-1] : &:r2270_1, ~m? -# 2270| mu2270_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2270_1 -# 2270| r2270_7(bool) = Constant[0] : -# 2270| v2270_8(void) = ConditionalBranch : r2270_7 +# 35| Block 751 +# 35| r35_10501(glval) = VariableAddress[x750] : +# 35| mu35_10502(String) = Uninitialized[x750] : &:r35_10501 +# 35| r35_10503(glval) = FunctionAddress[String] : +# 35| v35_10504(void) = Call[String] : func:r35_10503, this:r35_10501 +# 35| mu35_10505(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10506(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10501 +# 35| r35_10507(glval) = VariableAddress[x750] : +# 35| r35_10508(glval) = FunctionAddress[~String] : +# 35| v35_10509(void) = Call[~String] : func:r35_10508, this:r35_10507 +# 35| mu35_10510(unknown) = ^CallSideEffect : ~m? +# 35| v35_10511(void) = ^IndirectReadSideEffect[-1] : &:r35_10507, ~m? +# 35| mu35_10512(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10507 +# 35| r35_10513(bool) = Constant[0] : +# 35| v35_10514(void) = ConditionalBranch : r35_10513 #-----| False -> Block 752 #-----| True (back edge) -> Block 751 -# 2272| Block 752 -# 2272| r2272_1(glval) = VariableAddress[x751] : -# 2272| mu2272_2(String) = Uninitialized[x751] : &:r2272_1 -# 2272| r2272_3(glval) = FunctionAddress[String] : -# 2272| v2272_4(void) = Call[String] : func:r2272_3, this:r2272_1 -# 2272| mu2272_5(unknown) = ^CallSideEffect : ~m? -# 2272| mu2272_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2272_1 -# 2273| r2273_1(glval) = VariableAddress[x751] : -# 2273| r2273_2(glval) = FunctionAddress[~String] : -# 2273| v2273_3(void) = Call[~String] : func:r2273_2, this:r2273_1 -# 2273| mu2273_4(unknown) = ^CallSideEffect : ~m? -# 2273| v2273_5(void) = ^IndirectReadSideEffect[-1] : &:r2273_1, ~m? -# 2273| mu2273_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2273_1 -# 2273| r2273_7(bool) = Constant[0] : -# 2273| v2273_8(void) = ConditionalBranch : r2273_7 +# 35| Block 752 +# 35| r35_10515(glval) = VariableAddress[x751] : +# 35| mu35_10516(String) = Uninitialized[x751] : &:r35_10515 +# 35| r35_10517(glval) = FunctionAddress[String] : +# 35| v35_10518(void) = Call[String] : func:r35_10517, this:r35_10515 +# 35| mu35_10519(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10520(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10515 +# 35| r35_10521(glval) = VariableAddress[x751] : +# 35| r35_10522(glval) = FunctionAddress[~String] : +# 35| v35_10523(void) = Call[~String] : func:r35_10522, this:r35_10521 +# 35| mu35_10524(unknown) = ^CallSideEffect : ~m? +# 35| v35_10525(void) = ^IndirectReadSideEffect[-1] : &:r35_10521, ~m? +# 35| mu35_10526(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10521 +# 35| r35_10527(bool) = Constant[0] : +# 35| v35_10528(void) = ConditionalBranch : r35_10527 #-----| False -> Block 753 #-----| True (back edge) -> Block 752 -# 2275| Block 753 -# 2275| r2275_1(glval) = VariableAddress[x752] : -# 2275| mu2275_2(String) = Uninitialized[x752] : &:r2275_1 -# 2275| r2275_3(glval) = FunctionAddress[String] : -# 2275| v2275_4(void) = Call[String] : func:r2275_3, this:r2275_1 -# 2275| mu2275_5(unknown) = ^CallSideEffect : ~m? -# 2275| mu2275_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2275_1 -# 2276| r2276_1(glval) = VariableAddress[x752] : -# 2276| r2276_2(glval) = FunctionAddress[~String] : -# 2276| v2276_3(void) = Call[~String] : func:r2276_2, this:r2276_1 -# 2276| mu2276_4(unknown) = ^CallSideEffect : ~m? -# 2276| v2276_5(void) = ^IndirectReadSideEffect[-1] : &:r2276_1, ~m? -# 2276| mu2276_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2276_1 -# 2276| r2276_7(bool) = Constant[0] : -# 2276| v2276_8(void) = ConditionalBranch : r2276_7 +# 35| Block 753 +# 35| r35_10529(glval) = VariableAddress[x752] : +# 35| mu35_10530(String) = Uninitialized[x752] : &:r35_10529 +# 35| r35_10531(glval) = FunctionAddress[String] : +# 35| v35_10532(void) = Call[String] : func:r35_10531, this:r35_10529 +# 35| mu35_10533(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10534(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10529 +# 35| r35_10535(glval) = VariableAddress[x752] : +# 35| r35_10536(glval) = FunctionAddress[~String] : +# 35| v35_10537(void) = Call[~String] : func:r35_10536, this:r35_10535 +# 35| mu35_10538(unknown) = ^CallSideEffect : ~m? +# 35| v35_10539(void) = ^IndirectReadSideEffect[-1] : &:r35_10535, ~m? +# 35| mu35_10540(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10535 +# 35| r35_10541(bool) = Constant[0] : +# 35| v35_10542(void) = ConditionalBranch : r35_10541 #-----| False -> Block 754 #-----| True (back edge) -> Block 753 -# 2278| Block 754 -# 2278| r2278_1(glval) = VariableAddress[x753] : -# 2278| mu2278_2(String) = Uninitialized[x753] : &:r2278_1 -# 2278| r2278_3(glval) = FunctionAddress[String] : -# 2278| v2278_4(void) = Call[String] : func:r2278_3, this:r2278_1 -# 2278| mu2278_5(unknown) = ^CallSideEffect : ~m? -# 2278| mu2278_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2278_1 -# 2279| r2279_1(glval) = VariableAddress[x753] : -# 2279| r2279_2(glval) = FunctionAddress[~String] : -# 2279| v2279_3(void) = Call[~String] : func:r2279_2, this:r2279_1 -# 2279| mu2279_4(unknown) = ^CallSideEffect : ~m? -# 2279| v2279_5(void) = ^IndirectReadSideEffect[-1] : &:r2279_1, ~m? -# 2279| mu2279_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2279_1 -# 2279| r2279_7(bool) = Constant[0] : -# 2279| v2279_8(void) = ConditionalBranch : r2279_7 +# 35| Block 754 +# 35| r35_10543(glval) = VariableAddress[x753] : +# 35| mu35_10544(String) = Uninitialized[x753] : &:r35_10543 +# 35| r35_10545(glval) = FunctionAddress[String] : +# 35| v35_10546(void) = Call[String] : func:r35_10545, this:r35_10543 +# 35| mu35_10547(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10548(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10543 +# 35| r35_10549(glval) = VariableAddress[x753] : +# 35| r35_10550(glval) = FunctionAddress[~String] : +# 35| v35_10551(void) = Call[~String] : func:r35_10550, this:r35_10549 +# 35| mu35_10552(unknown) = ^CallSideEffect : ~m? +# 35| v35_10553(void) = ^IndirectReadSideEffect[-1] : &:r35_10549, ~m? +# 35| mu35_10554(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10549 +# 35| r35_10555(bool) = Constant[0] : +# 35| v35_10556(void) = ConditionalBranch : r35_10555 #-----| False -> Block 755 #-----| True (back edge) -> Block 754 -# 2281| Block 755 -# 2281| r2281_1(glval) = VariableAddress[x754] : -# 2281| mu2281_2(String) = Uninitialized[x754] : &:r2281_1 -# 2281| r2281_3(glval) = FunctionAddress[String] : -# 2281| v2281_4(void) = Call[String] : func:r2281_3, this:r2281_1 -# 2281| mu2281_5(unknown) = ^CallSideEffect : ~m? -# 2281| mu2281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 -# 2282| r2282_1(glval) = VariableAddress[x754] : -# 2282| r2282_2(glval) = FunctionAddress[~String] : -# 2282| v2282_3(void) = Call[~String] : func:r2282_2, this:r2282_1 -# 2282| mu2282_4(unknown) = ^CallSideEffect : ~m? -# 2282| v2282_5(void) = ^IndirectReadSideEffect[-1] : &:r2282_1, ~m? -# 2282| mu2282_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 -# 2282| r2282_7(bool) = Constant[0] : -# 2282| v2282_8(void) = ConditionalBranch : r2282_7 +# 35| Block 755 +# 35| r35_10557(glval) = VariableAddress[x754] : +# 35| mu35_10558(String) = Uninitialized[x754] : &:r35_10557 +# 35| r35_10559(glval) = FunctionAddress[String] : +# 35| v35_10560(void) = Call[String] : func:r35_10559, this:r35_10557 +# 35| mu35_10561(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10562(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10557 +# 35| r35_10563(glval) = VariableAddress[x754] : +# 35| r35_10564(glval) = FunctionAddress[~String] : +# 35| v35_10565(void) = Call[~String] : func:r35_10564, this:r35_10563 +# 35| mu35_10566(unknown) = ^CallSideEffect : ~m? +# 35| v35_10567(void) = ^IndirectReadSideEffect[-1] : &:r35_10563, ~m? +# 35| mu35_10568(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10563 +# 35| r35_10569(bool) = Constant[0] : +# 35| v35_10570(void) = ConditionalBranch : r35_10569 #-----| False -> Block 756 #-----| True (back edge) -> Block 755 -# 2284| Block 756 -# 2284| r2284_1(glval) = VariableAddress[x755] : -# 2284| mu2284_2(String) = Uninitialized[x755] : &:r2284_1 -# 2284| r2284_3(glval) = FunctionAddress[String] : -# 2284| v2284_4(void) = Call[String] : func:r2284_3, this:r2284_1 -# 2284| mu2284_5(unknown) = ^CallSideEffect : ~m? -# 2284| mu2284_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2284_1 -# 2285| r2285_1(glval) = VariableAddress[x755] : -# 2285| r2285_2(glval) = FunctionAddress[~String] : -# 2285| v2285_3(void) = Call[~String] : func:r2285_2, this:r2285_1 -# 2285| mu2285_4(unknown) = ^CallSideEffect : ~m? -# 2285| v2285_5(void) = ^IndirectReadSideEffect[-1] : &:r2285_1, ~m? -# 2285| mu2285_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_1 -# 2285| r2285_7(bool) = Constant[0] : -# 2285| v2285_8(void) = ConditionalBranch : r2285_7 +# 35| Block 756 +# 35| r35_10571(glval) = VariableAddress[x755] : +# 35| mu35_10572(String) = Uninitialized[x755] : &:r35_10571 +# 35| r35_10573(glval) = FunctionAddress[String] : +# 35| v35_10574(void) = Call[String] : func:r35_10573, this:r35_10571 +# 35| mu35_10575(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10576(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10571 +# 35| r35_10577(glval) = VariableAddress[x755] : +# 35| r35_10578(glval) = FunctionAddress[~String] : +# 35| v35_10579(void) = Call[~String] : func:r35_10578, this:r35_10577 +# 35| mu35_10580(unknown) = ^CallSideEffect : ~m? +# 35| v35_10581(void) = ^IndirectReadSideEffect[-1] : &:r35_10577, ~m? +# 35| mu35_10582(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10577 +# 35| r35_10583(bool) = Constant[0] : +# 35| v35_10584(void) = ConditionalBranch : r35_10583 #-----| False -> Block 757 #-----| True (back edge) -> Block 756 -# 2287| Block 757 -# 2287| r2287_1(glval) = VariableAddress[x756] : -# 2287| mu2287_2(String) = Uninitialized[x756] : &:r2287_1 -# 2287| r2287_3(glval) = FunctionAddress[String] : -# 2287| v2287_4(void) = Call[String] : func:r2287_3, this:r2287_1 -# 2287| mu2287_5(unknown) = ^CallSideEffect : ~m? -# 2287| mu2287_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2287_1 -# 2288| r2288_1(glval) = VariableAddress[x756] : -# 2288| r2288_2(glval) = FunctionAddress[~String] : -# 2288| v2288_3(void) = Call[~String] : func:r2288_2, this:r2288_1 -# 2288| mu2288_4(unknown) = ^CallSideEffect : ~m? -# 2288| v2288_5(void) = ^IndirectReadSideEffect[-1] : &:r2288_1, ~m? -# 2288| mu2288_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2288_1 -# 2288| r2288_7(bool) = Constant[0] : -# 2288| v2288_8(void) = ConditionalBranch : r2288_7 +# 35| Block 757 +# 35| r35_10585(glval) = VariableAddress[x756] : +# 35| mu35_10586(String) = Uninitialized[x756] : &:r35_10585 +# 35| r35_10587(glval) = FunctionAddress[String] : +# 35| v35_10588(void) = Call[String] : func:r35_10587, this:r35_10585 +# 35| mu35_10589(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10590(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10585 +# 35| r35_10591(glval) = VariableAddress[x756] : +# 35| r35_10592(glval) = FunctionAddress[~String] : +# 35| v35_10593(void) = Call[~String] : func:r35_10592, this:r35_10591 +# 35| mu35_10594(unknown) = ^CallSideEffect : ~m? +# 35| v35_10595(void) = ^IndirectReadSideEffect[-1] : &:r35_10591, ~m? +# 35| mu35_10596(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10591 +# 35| r35_10597(bool) = Constant[0] : +# 35| v35_10598(void) = ConditionalBranch : r35_10597 #-----| False -> Block 758 #-----| True (back edge) -> Block 757 -# 2290| Block 758 -# 2290| r2290_1(glval) = VariableAddress[x757] : -# 2290| mu2290_2(String) = Uninitialized[x757] : &:r2290_1 -# 2290| r2290_3(glval) = FunctionAddress[String] : -# 2290| v2290_4(void) = Call[String] : func:r2290_3, this:r2290_1 -# 2290| mu2290_5(unknown) = ^CallSideEffect : ~m? -# 2290| mu2290_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2290_1 -# 2291| r2291_1(glval) = VariableAddress[x757] : -# 2291| r2291_2(glval) = FunctionAddress[~String] : -# 2291| v2291_3(void) = Call[~String] : func:r2291_2, this:r2291_1 -# 2291| mu2291_4(unknown) = ^CallSideEffect : ~m? -# 2291| v2291_5(void) = ^IndirectReadSideEffect[-1] : &:r2291_1, ~m? -# 2291| mu2291_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2291_1 -# 2291| r2291_7(bool) = Constant[0] : -# 2291| v2291_8(void) = ConditionalBranch : r2291_7 +# 35| Block 758 +# 35| r35_10599(glval) = VariableAddress[x757] : +# 35| mu35_10600(String) = Uninitialized[x757] : &:r35_10599 +# 35| r35_10601(glval) = FunctionAddress[String] : +# 35| v35_10602(void) = Call[String] : func:r35_10601, this:r35_10599 +# 35| mu35_10603(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10604(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10599 +# 35| r35_10605(glval) = VariableAddress[x757] : +# 35| r35_10606(glval) = FunctionAddress[~String] : +# 35| v35_10607(void) = Call[~String] : func:r35_10606, this:r35_10605 +# 35| mu35_10608(unknown) = ^CallSideEffect : ~m? +# 35| v35_10609(void) = ^IndirectReadSideEffect[-1] : &:r35_10605, ~m? +# 35| mu35_10610(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10605 +# 35| r35_10611(bool) = Constant[0] : +# 35| v35_10612(void) = ConditionalBranch : r35_10611 #-----| False -> Block 759 #-----| True (back edge) -> Block 758 -# 2293| Block 759 -# 2293| r2293_1(glval) = VariableAddress[x758] : -# 2293| mu2293_2(String) = Uninitialized[x758] : &:r2293_1 -# 2293| r2293_3(glval) = FunctionAddress[String] : -# 2293| v2293_4(void) = Call[String] : func:r2293_3, this:r2293_1 -# 2293| mu2293_5(unknown) = ^CallSideEffect : ~m? -# 2293| mu2293_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_1 -# 2294| r2294_1(glval) = VariableAddress[x758] : -# 2294| r2294_2(glval) = FunctionAddress[~String] : -# 2294| v2294_3(void) = Call[~String] : func:r2294_2, this:r2294_1 -# 2294| mu2294_4(unknown) = ^CallSideEffect : ~m? -# 2294| v2294_5(void) = ^IndirectReadSideEffect[-1] : &:r2294_1, ~m? -# 2294| mu2294_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 -# 2294| r2294_7(bool) = Constant[0] : -# 2294| v2294_8(void) = ConditionalBranch : r2294_7 +# 35| Block 759 +# 35| r35_10613(glval) = VariableAddress[x758] : +# 35| mu35_10614(String) = Uninitialized[x758] : &:r35_10613 +# 35| r35_10615(glval) = FunctionAddress[String] : +# 35| v35_10616(void) = Call[String] : func:r35_10615, this:r35_10613 +# 35| mu35_10617(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10618(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10613 +# 35| r35_10619(glval) = VariableAddress[x758] : +# 35| r35_10620(glval) = FunctionAddress[~String] : +# 35| v35_10621(void) = Call[~String] : func:r35_10620, this:r35_10619 +# 35| mu35_10622(unknown) = ^CallSideEffect : ~m? +# 35| v35_10623(void) = ^IndirectReadSideEffect[-1] : &:r35_10619, ~m? +# 35| mu35_10624(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10619 +# 35| r35_10625(bool) = Constant[0] : +# 35| v35_10626(void) = ConditionalBranch : r35_10625 #-----| False -> Block 760 #-----| True (back edge) -> Block 759 -# 2296| Block 760 -# 2296| r2296_1(glval) = VariableAddress[x759] : -# 2296| mu2296_2(String) = Uninitialized[x759] : &:r2296_1 -# 2296| r2296_3(glval) = FunctionAddress[String] : -# 2296| v2296_4(void) = Call[String] : func:r2296_3, this:r2296_1 -# 2296| mu2296_5(unknown) = ^CallSideEffect : ~m? -# 2296| mu2296_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2296_1 -# 2297| r2297_1(glval) = VariableAddress[x759] : -# 2297| r2297_2(glval) = FunctionAddress[~String] : -# 2297| v2297_3(void) = Call[~String] : func:r2297_2, this:r2297_1 -# 2297| mu2297_4(unknown) = ^CallSideEffect : ~m? -# 2297| v2297_5(void) = ^IndirectReadSideEffect[-1] : &:r2297_1, ~m? -# 2297| mu2297_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 -# 2297| r2297_7(bool) = Constant[0] : -# 2297| v2297_8(void) = ConditionalBranch : r2297_7 +# 35| Block 760 +# 35| r35_10627(glval) = VariableAddress[x759] : +# 35| mu35_10628(String) = Uninitialized[x759] : &:r35_10627 +# 35| r35_10629(glval) = FunctionAddress[String] : +# 35| v35_10630(void) = Call[String] : func:r35_10629, this:r35_10627 +# 35| mu35_10631(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10632(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10627 +# 35| r35_10633(glval) = VariableAddress[x759] : +# 35| r35_10634(glval) = FunctionAddress[~String] : +# 35| v35_10635(void) = Call[~String] : func:r35_10634, this:r35_10633 +# 35| mu35_10636(unknown) = ^CallSideEffect : ~m? +# 35| v35_10637(void) = ^IndirectReadSideEffect[-1] : &:r35_10633, ~m? +# 35| mu35_10638(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10633 +# 35| r35_10639(bool) = Constant[0] : +# 35| v35_10640(void) = ConditionalBranch : r35_10639 #-----| False -> Block 761 #-----| True (back edge) -> Block 760 -# 2299| Block 761 -# 2299| r2299_1(glval) = VariableAddress[x760] : -# 2299| mu2299_2(String) = Uninitialized[x760] : &:r2299_1 -# 2299| r2299_3(glval) = FunctionAddress[String] : -# 2299| v2299_4(void) = Call[String] : func:r2299_3, this:r2299_1 -# 2299| mu2299_5(unknown) = ^CallSideEffect : ~m? -# 2299| mu2299_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_1 -# 2300| r2300_1(glval) = VariableAddress[x760] : -# 2300| r2300_2(glval) = FunctionAddress[~String] : -# 2300| v2300_3(void) = Call[~String] : func:r2300_2, this:r2300_1 -# 2300| mu2300_4(unknown) = ^CallSideEffect : ~m? -# 2300| v2300_5(void) = ^IndirectReadSideEffect[-1] : &:r2300_1, ~m? -# 2300| mu2300_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2300_1 -# 2300| r2300_7(bool) = Constant[0] : -# 2300| v2300_8(void) = ConditionalBranch : r2300_7 +# 35| Block 761 +# 35| r35_10641(glval) = VariableAddress[x760] : +# 35| mu35_10642(String) = Uninitialized[x760] : &:r35_10641 +# 35| r35_10643(glval) = FunctionAddress[String] : +# 35| v35_10644(void) = Call[String] : func:r35_10643, this:r35_10641 +# 35| mu35_10645(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10646(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10641 +# 35| r35_10647(glval) = VariableAddress[x760] : +# 35| r35_10648(glval) = FunctionAddress[~String] : +# 35| v35_10649(void) = Call[~String] : func:r35_10648, this:r35_10647 +# 35| mu35_10650(unknown) = ^CallSideEffect : ~m? +# 35| v35_10651(void) = ^IndirectReadSideEffect[-1] : &:r35_10647, ~m? +# 35| mu35_10652(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10647 +# 35| r35_10653(bool) = Constant[0] : +# 35| v35_10654(void) = ConditionalBranch : r35_10653 #-----| False -> Block 762 #-----| True (back edge) -> Block 761 -# 2302| Block 762 -# 2302| r2302_1(glval) = VariableAddress[x761] : -# 2302| mu2302_2(String) = Uninitialized[x761] : &:r2302_1 -# 2302| r2302_3(glval) = FunctionAddress[String] : -# 2302| v2302_4(void) = Call[String] : func:r2302_3, this:r2302_1 -# 2302| mu2302_5(unknown) = ^CallSideEffect : ~m? -# 2302| mu2302_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2302_1 -# 2303| r2303_1(glval) = VariableAddress[x761] : -# 2303| r2303_2(glval) = FunctionAddress[~String] : -# 2303| v2303_3(void) = Call[~String] : func:r2303_2, this:r2303_1 -# 2303| mu2303_4(unknown) = ^CallSideEffect : ~m? -# 2303| v2303_5(void) = ^IndirectReadSideEffect[-1] : &:r2303_1, ~m? -# 2303| mu2303_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_1 -# 2303| r2303_7(bool) = Constant[0] : -# 2303| v2303_8(void) = ConditionalBranch : r2303_7 +# 35| Block 762 +# 35| r35_10655(glval) = VariableAddress[x761] : +# 35| mu35_10656(String) = Uninitialized[x761] : &:r35_10655 +# 35| r35_10657(glval) = FunctionAddress[String] : +# 35| v35_10658(void) = Call[String] : func:r35_10657, this:r35_10655 +# 35| mu35_10659(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10660(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10655 +# 35| r35_10661(glval) = VariableAddress[x761] : +# 35| r35_10662(glval) = FunctionAddress[~String] : +# 35| v35_10663(void) = Call[~String] : func:r35_10662, this:r35_10661 +# 35| mu35_10664(unknown) = ^CallSideEffect : ~m? +# 35| v35_10665(void) = ^IndirectReadSideEffect[-1] : &:r35_10661, ~m? +# 35| mu35_10666(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10661 +# 35| r35_10667(bool) = Constant[0] : +# 35| v35_10668(void) = ConditionalBranch : r35_10667 #-----| False -> Block 763 #-----| True (back edge) -> Block 762 -# 2305| Block 763 -# 2305| r2305_1(glval) = VariableAddress[x762] : -# 2305| mu2305_2(String) = Uninitialized[x762] : &:r2305_1 -# 2305| r2305_3(glval) = FunctionAddress[String] : -# 2305| v2305_4(void) = Call[String] : func:r2305_3, this:r2305_1 -# 2305| mu2305_5(unknown) = ^CallSideEffect : ~m? -# 2305| mu2305_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2305_1 -# 2306| r2306_1(glval) = VariableAddress[x762] : -# 2306| r2306_2(glval) = FunctionAddress[~String] : -# 2306| v2306_3(void) = Call[~String] : func:r2306_2, this:r2306_1 -# 2306| mu2306_4(unknown) = ^CallSideEffect : ~m? -# 2306| v2306_5(void) = ^IndirectReadSideEffect[-1] : &:r2306_1, ~m? -# 2306| mu2306_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_1 -# 2306| r2306_7(bool) = Constant[0] : -# 2306| v2306_8(void) = ConditionalBranch : r2306_7 +# 35| Block 763 +# 35| r35_10669(glval) = VariableAddress[x762] : +# 35| mu35_10670(String) = Uninitialized[x762] : &:r35_10669 +# 35| r35_10671(glval) = FunctionAddress[String] : +# 35| v35_10672(void) = Call[String] : func:r35_10671, this:r35_10669 +# 35| mu35_10673(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10674(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10669 +# 35| r35_10675(glval) = VariableAddress[x762] : +# 35| r35_10676(glval) = FunctionAddress[~String] : +# 35| v35_10677(void) = Call[~String] : func:r35_10676, this:r35_10675 +# 35| mu35_10678(unknown) = ^CallSideEffect : ~m? +# 35| v35_10679(void) = ^IndirectReadSideEffect[-1] : &:r35_10675, ~m? +# 35| mu35_10680(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10675 +# 35| r35_10681(bool) = Constant[0] : +# 35| v35_10682(void) = ConditionalBranch : r35_10681 #-----| False -> Block 764 #-----| True (back edge) -> Block 763 -# 2308| Block 764 -# 2308| r2308_1(glval) = VariableAddress[x763] : -# 2308| mu2308_2(String) = Uninitialized[x763] : &:r2308_1 -# 2308| r2308_3(glval) = FunctionAddress[String] : -# 2308| v2308_4(void) = Call[String] : func:r2308_3, this:r2308_1 -# 2308| mu2308_5(unknown) = ^CallSideEffect : ~m? -# 2308| mu2308_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_1 -# 2309| r2309_1(glval) = VariableAddress[x763] : -# 2309| r2309_2(glval) = FunctionAddress[~String] : -# 2309| v2309_3(void) = Call[~String] : func:r2309_2, this:r2309_1 -# 2309| mu2309_4(unknown) = ^CallSideEffect : ~m? -# 2309| v2309_5(void) = ^IndirectReadSideEffect[-1] : &:r2309_1, ~m? -# 2309| mu2309_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2309_1 -# 2309| r2309_7(bool) = Constant[0] : -# 2309| v2309_8(void) = ConditionalBranch : r2309_7 +# 35| Block 764 +# 35| r35_10683(glval) = VariableAddress[x763] : +# 35| mu35_10684(String) = Uninitialized[x763] : &:r35_10683 +# 35| r35_10685(glval) = FunctionAddress[String] : +# 35| v35_10686(void) = Call[String] : func:r35_10685, this:r35_10683 +# 35| mu35_10687(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10688(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10683 +# 35| r35_10689(glval) = VariableAddress[x763] : +# 35| r35_10690(glval) = FunctionAddress[~String] : +# 35| v35_10691(void) = Call[~String] : func:r35_10690, this:r35_10689 +# 35| mu35_10692(unknown) = ^CallSideEffect : ~m? +# 35| v35_10693(void) = ^IndirectReadSideEffect[-1] : &:r35_10689, ~m? +# 35| mu35_10694(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10689 +# 35| r35_10695(bool) = Constant[0] : +# 35| v35_10696(void) = ConditionalBranch : r35_10695 #-----| False -> Block 765 #-----| True (back edge) -> Block 764 -# 2311| Block 765 -# 2311| r2311_1(glval) = VariableAddress[x764] : -# 2311| mu2311_2(String) = Uninitialized[x764] : &:r2311_1 -# 2311| r2311_3(glval) = FunctionAddress[String] : -# 2311| v2311_4(void) = Call[String] : func:r2311_3, this:r2311_1 -# 2311| mu2311_5(unknown) = ^CallSideEffect : ~m? -# 2311| mu2311_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_1 -# 2312| r2312_1(glval) = VariableAddress[x764] : -# 2312| r2312_2(glval) = FunctionAddress[~String] : -# 2312| v2312_3(void) = Call[~String] : func:r2312_2, this:r2312_1 -# 2312| mu2312_4(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_5(void) = ^IndirectReadSideEffect[-1] : &:r2312_1, ~m? -# 2312| mu2312_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_1 -# 2312| r2312_7(bool) = Constant[0] : -# 2312| v2312_8(void) = ConditionalBranch : r2312_7 +# 35| Block 765 +# 35| r35_10697(glval) = VariableAddress[x764] : +# 35| mu35_10698(String) = Uninitialized[x764] : &:r35_10697 +# 35| r35_10699(glval) = FunctionAddress[String] : +# 35| v35_10700(void) = Call[String] : func:r35_10699, this:r35_10697 +# 35| mu35_10701(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10702(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10697 +# 35| r35_10703(glval) = VariableAddress[x764] : +# 35| r35_10704(glval) = FunctionAddress[~String] : +# 35| v35_10705(void) = Call[~String] : func:r35_10704, this:r35_10703 +# 35| mu35_10706(unknown) = ^CallSideEffect : ~m? +# 35| v35_10707(void) = ^IndirectReadSideEffect[-1] : &:r35_10703, ~m? +# 35| mu35_10708(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10703 +# 35| r35_10709(bool) = Constant[0] : +# 35| v35_10710(void) = ConditionalBranch : r35_10709 #-----| False -> Block 766 #-----| True (back edge) -> Block 765 -# 2314| Block 766 -# 2314| r2314_1(glval) = VariableAddress[x765] : -# 2314| mu2314_2(String) = Uninitialized[x765] : &:r2314_1 -# 2314| r2314_3(glval) = FunctionAddress[String] : -# 2314| v2314_4(void) = Call[String] : func:r2314_3, this:r2314_1 -# 2314| mu2314_5(unknown) = ^CallSideEffect : ~m? -# 2314| mu2314_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_1 -# 2315| r2315_1(glval) = VariableAddress[x765] : -# 2315| r2315_2(glval) = FunctionAddress[~String] : -# 2315| v2315_3(void) = Call[~String] : func:r2315_2, this:r2315_1 -# 2315| mu2315_4(unknown) = ^CallSideEffect : ~m? -# 2315| v2315_5(void) = ^IndirectReadSideEffect[-1] : &:r2315_1, ~m? -# 2315| mu2315_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2315_1 -# 2315| r2315_7(bool) = Constant[0] : -# 2315| v2315_8(void) = ConditionalBranch : r2315_7 +# 35| Block 766 +# 35| r35_10711(glval) = VariableAddress[x765] : +# 35| mu35_10712(String) = Uninitialized[x765] : &:r35_10711 +# 35| r35_10713(glval) = FunctionAddress[String] : +# 35| v35_10714(void) = Call[String] : func:r35_10713, this:r35_10711 +# 35| mu35_10715(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10716(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10711 +# 35| r35_10717(glval) = VariableAddress[x765] : +# 35| r35_10718(glval) = FunctionAddress[~String] : +# 35| v35_10719(void) = Call[~String] : func:r35_10718, this:r35_10717 +# 35| mu35_10720(unknown) = ^CallSideEffect : ~m? +# 35| v35_10721(void) = ^IndirectReadSideEffect[-1] : &:r35_10717, ~m? +# 35| mu35_10722(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10717 +# 35| r35_10723(bool) = Constant[0] : +# 35| v35_10724(void) = ConditionalBranch : r35_10723 #-----| False -> Block 767 #-----| True (back edge) -> Block 766 -# 2317| Block 767 -# 2317| r2317_1(glval) = VariableAddress[x766] : -# 2317| mu2317_2(String) = Uninitialized[x766] : &:r2317_1 -# 2317| r2317_3(glval) = FunctionAddress[String] : -# 2317| v2317_4(void) = Call[String] : func:r2317_3, this:r2317_1 -# 2317| mu2317_5(unknown) = ^CallSideEffect : ~m? -# 2317| mu2317_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2317_1 -# 2318| r2318_1(glval) = VariableAddress[x766] : -# 2318| r2318_2(glval) = FunctionAddress[~String] : -# 2318| v2318_3(void) = Call[~String] : func:r2318_2, this:r2318_1 -# 2318| mu2318_4(unknown) = ^CallSideEffect : ~m? -# 2318| v2318_5(void) = ^IndirectReadSideEffect[-1] : &:r2318_1, ~m? -# 2318| mu2318_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2318_1 -# 2318| r2318_7(bool) = Constant[0] : -# 2318| v2318_8(void) = ConditionalBranch : r2318_7 +# 35| Block 767 +# 35| r35_10725(glval) = VariableAddress[x766] : +# 35| mu35_10726(String) = Uninitialized[x766] : &:r35_10725 +# 35| r35_10727(glval) = FunctionAddress[String] : +# 35| v35_10728(void) = Call[String] : func:r35_10727, this:r35_10725 +# 35| mu35_10729(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10730(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10725 +# 35| r35_10731(glval) = VariableAddress[x766] : +# 35| r35_10732(glval) = FunctionAddress[~String] : +# 35| v35_10733(void) = Call[~String] : func:r35_10732, this:r35_10731 +# 35| mu35_10734(unknown) = ^CallSideEffect : ~m? +# 35| v35_10735(void) = ^IndirectReadSideEffect[-1] : &:r35_10731, ~m? +# 35| mu35_10736(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10731 +# 35| r35_10737(bool) = Constant[0] : +# 35| v35_10738(void) = ConditionalBranch : r35_10737 #-----| False -> Block 768 #-----| True (back edge) -> Block 767 -# 2320| Block 768 -# 2320| r2320_1(glval) = VariableAddress[x767] : -# 2320| mu2320_2(String) = Uninitialized[x767] : &:r2320_1 -# 2320| r2320_3(glval) = FunctionAddress[String] : -# 2320| v2320_4(void) = Call[String] : func:r2320_3, this:r2320_1 -# 2320| mu2320_5(unknown) = ^CallSideEffect : ~m? -# 2320| mu2320_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2320_1 -# 2321| r2321_1(glval) = VariableAddress[x767] : -# 2321| r2321_2(glval) = FunctionAddress[~String] : -# 2321| v2321_3(void) = Call[~String] : func:r2321_2, this:r2321_1 -# 2321| mu2321_4(unknown) = ^CallSideEffect : ~m? -# 2321| v2321_5(void) = ^IndirectReadSideEffect[-1] : &:r2321_1, ~m? -# 2321| mu2321_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2321_1 -# 2321| r2321_7(bool) = Constant[0] : -# 2321| v2321_8(void) = ConditionalBranch : r2321_7 +# 35| Block 768 +# 35| r35_10739(glval) = VariableAddress[x767] : +# 35| mu35_10740(String) = Uninitialized[x767] : &:r35_10739 +# 35| r35_10741(glval) = FunctionAddress[String] : +# 35| v35_10742(void) = Call[String] : func:r35_10741, this:r35_10739 +# 35| mu35_10743(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10744(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10739 +# 35| r35_10745(glval) = VariableAddress[x767] : +# 35| r35_10746(glval) = FunctionAddress[~String] : +# 35| v35_10747(void) = Call[~String] : func:r35_10746, this:r35_10745 +# 35| mu35_10748(unknown) = ^CallSideEffect : ~m? +# 35| v35_10749(void) = ^IndirectReadSideEffect[-1] : &:r35_10745, ~m? +# 35| mu35_10750(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10745 +# 35| r35_10751(bool) = Constant[0] : +# 35| v35_10752(void) = ConditionalBranch : r35_10751 #-----| False -> Block 769 #-----| True (back edge) -> Block 768 -# 2323| Block 769 -# 2323| r2323_1(glval) = VariableAddress[x768] : -# 2323| mu2323_2(String) = Uninitialized[x768] : &:r2323_1 -# 2323| r2323_3(glval) = FunctionAddress[String] : -# 2323| v2323_4(void) = Call[String] : func:r2323_3, this:r2323_1 -# 2323| mu2323_5(unknown) = ^CallSideEffect : ~m? -# 2323| mu2323_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2323_1 -# 2324| r2324_1(glval) = VariableAddress[x768] : -# 2324| r2324_2(glval) = FunctionAddress[~String] : -# 2324| v2324_3(void) = Call[~String] : func:r2324_2, this:r2324_1 -# 2324| mu2324_4(unknown) = ^CallSideEffect : ~m? -# 2324| v2324_5(void) = ^IndirectReadSideEffect[-1] : &:r2324_1, ~m? -# 2324| mu2324_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2324_1 -# 2324| r2324_7(bool) = Constant[0] : -# 2324| v2324_8(void) = ConditionalBranch : r2324_7 +# 35| Block 769 +# 35| r35_10753(glval) = VariableAddress[x768] : +# 35| mu35_10754(String) = Uninitialized[x768] : &:r35_10753 +# 35| r35_10755(glval) = FunctionAddress[String] : +# 35| v35_10756(void) = Call[String] : func:r35_10755, this:r35_10753 +# 35| mu35_10757(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10758(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10753 +# 35| r35_10759(glval) = VariableAddress[x768] : +# 35| r35_10760(glval) = FunctionAddress[~String] : +# 35| v35_10761(void) = Call[~String] : func:r35_10760, this:r35_10759 +# 35| mu35_10762(unknown) = ^CallSideEffect : ~m? +# 35| v35_10763(void) = ^IndirectReadSideEffect[-1] : &:r35_10759, ~m? +# 35| mu35_10764(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10759 +# 35| r35_10765(bool) = Constant[0] : +# 35| v35_10766(void) = ConditionalBranch : r35_10765 #-----| False -> Block 770 #-----| True (back edge) -> Block 769 -# 2326| Block 770 -# 2326| r2326_1(glval) = VariableAddress[x769] : -# 2326| mu2326_2(String) = Uninitialized[x769] : &:r2326_1 -# 2326| r2326_3(glval) = FunctionAddress[String] : -# 2326| v2326_4(void) = Call[String] : func:r2326_3, this:r2326_1 -# 2326| mu2326_5(unknown) = ^CallSideEffect : ~m? -# 2326| mu2326_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2326_1 -# 2327| r2327_1(glval) = VariableAddress[x769] : -# 2327| r2327_2(glval) = FunctionAddress[~String] : -# 2327| v2327_3(void) = Call[~String] : func:r2327_2, this:r2327_1 -# 2327| mu2327_4(unknown) = ^CallSideEffect : ~m? -# 2327| v2327_5(void) = ^IndirectReadSideEffect[-1] : &:r2327_1, ~m? -# 2327| mu2327_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2327_1 -# 2327| r2327_7(bool) = Constant[0] : -# 2327| v2327_8(void) = ConditionalBranch : r2327_7 +# 35| Block 770 +# 35| r35_10767(glval) = VariableAddress[x769] : +# 35| mu35_10768(String) = Uninitialized[x769] : &:r35_10767 +# 35| r35_10769(glval) = FunctionAddress[String] : +# 35| v35_10770(void) = Call[String] : func:r35_10769, this:r35_10767 +# 35| mu35_10771(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10772(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10767 +# 35| r35_10773(glval) = VariableAddress[x769] : +# 35| r35_10774(glval) = FunctionAddress[~String] : +# 35| v35_10775(void) = Call[~String] : func:r35_10774, this:r35_10773 +# 35| mu35_10776(unknown) = ^CallSideEffect : ~m? +# 35| v35_10777(void) = ^IndirectReadSideEffect[-1] : &:r35_10773, ~m? +# 35| mu35_10778(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10773 +# 35| r35_10779(bool) = Constant[0] : +# 35| v35_10780(void) = ConditionalBranch : r35_10779 #-----| False -> Block 771 #-----| True (back edge) -> Block 770 -# 2329| Block 771 -# 2329| r2329_1(glval) = VariableAddress[x770] : -# 2329| mu2329_2(String) = Uninitialized[x770] : &:r2329_1 -# 2329| r2329_3(glval) = FunctionAddress[String] : -# 2329| v2329_4(void) = Call[String] : func:r2329_3, this:r2329_1 -# 2329| mu2329_5(unknown) = ^CallSideEffect : ~m? -# 2329| mu2329_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2329_1 -# 2330| r2330_1(glval) = VariableAddress[x770] : -# 2330| r2330_2(glval) = FunctionAddress[~String] : -# 2330| v2330_3(void) = Call[~String] : func:r2330_2, this:r2330_1 -# 2330| mu2330_4(unknown) = ^CallSideEffect : ~m? -# 2330| v2330_5(void) = ^IndirectReadSideEffect[-1] : &:r2330_1, ~m? -# 2330| mu2330_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2330_1 -# 2330| r2330_7(bool) = Constant[0] : -# 2330| v2330_8(void) = ConditionalBranch : r2330_7 +# 35| Block 771 +# 35| r35_10781(glval) = VariableAddress[x770] : +# 35| mu35_10782(String) = Uninitialized[x770] : &:r35_10781 +# 35| r35_10783(glval) = FunctionAddress[String] : +# 35| v35_10784(void) = Call[String] : func:r35_10783, this:r35_10781 +# 35| mu35_10785(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10786(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10781 +# 35| r35_10787(glval) = VariableAddress[x770] : +# 35| r35_10788(glval) = FunctionAddress[~String] : +# 35| v35_10789(void) = Call[~String] : func:r35_10788, this:r35_10787 +# 35| mu35_10790(unknown) = ^CallSideEffect : ~m? +# 35| v35_10791(void) = ^IndirectReadSideEffect[-1] : &:r35_10787, ~m? +# 35| mu35_10792(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10787 +# 35| r35_10793(bool) = Constant[0] : +# 35| v35_10794(void) = ConditionalBranch : r35_10793 #-----| False -> Block 772 #-----| True (back edge) -> Block 771 -# 2332| Block 772 -# 2332| r2332_1(glval) = VariableAddress[x771] : -# 2332| mu2332_2(String) = Uninitialized[x771] : &:r2332_1 -# 2332| r2332_3(glval) = FunctionAddress[String] : -# 2332| v2332_4(void) = Call[String] : func:r2332_3, this:r2332_1 -# 2332| mu2332_5(unknown) = ^CallSideEffect : ~m? -# 2332| mu2332_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2332_1 -# 2333| r2333_1(glval) = VariableAddress[x771] : -# 2333| r2333_2(glval) = FunctionAddress[~String] : -# 2333| v2333_3(void) = Call[~String] : func:r2333_2, this:r2333_1 -# 2333| mu2333_4(unknown) = ^CallSideEffect : ~m? -# 2333| v2333_5(void) = ^IndirectReadSideEffect[-1] : &:r2333_1, ~m? -# 2333| mu2333_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2333_1 -# 2333| r2333_7(bool) = Constant[0] : -# 2333| v2333_8(void) = ConditionalBranch : r2333_7 +# 35| Block 772 +# 35| r35_10795(glval) = VariableAddress[x771] : +# 35| mu35_10796(String) = Uninitialized[x771] : &:r35_10795 +# 35| r35_10797(glval) = FunctionAddress[String] : +# 35| v35_10798(void) = Call[String] : func:r35_10797, this:r35_10795 +# 35| mu35_10799(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10800(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10795 +# 35| r35_10801(glval) = VariableAddress[x771] : +# 35| r35_10802(glval) = FunctionAddress[~String] : +# 35| v35_10803(void) = Call[~String] : func:r35_10802, this:r35_10801 +# 35| mu35_10804(unknown) = ^CallSideEffect : ~m? +# 35| v35_10805(void) = ^IndirectReadSideEffect[-1] : &:r35_10801, ~m? +# 35| mu35_10806(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10801 +# 35| r35_10807(bool) = Constant[0] : +# 35| v35_10808(void) = ConditionalBranch : r35_10807 #-----| False -> Block 773 #-----| True (back edge) -> Block 772 -# 2335| Block 773 -# 2335| r2335_1(glval) = VariableAddress[x772] : -# 2335| mu2335_2(String) = Uninitialized[x772] : &:r2335_1 -# 2335| r2335_3(glval) = FunctionAddress[String] : -# 2335| v2335_4(void) = Call[String] : func:r2335_3, this:r2335_1 -# 2335| mu2335_5(unknown) = ^CallSideEffect : ~m? -# 2335| mu2335_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2335_1 -# 2336| r2336_1(glval) = VariableAddress[x772] : -# 2336| r2336_2(glval) = FunctionAddress[~String] : -# 2336| v2336_3(void) = Call[~String] : func:r2336_2, this:r2336_1 -# 2336| mu2336_4(unknown) = ^CallSideEffect : ~m? -# 2336| v2336_5(void) = ^IndirectReadSideEffect[-1] : &:r2336_1, ~m? -# 2336| mu2336_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 -# 2336| r2336_7(bool) = Constant[0] : -# 2336| v2336_8(void) = ConditionalBranch : r2336_7 +# 35| Block 773 +# 35| r35_10809(glval) = VariableAddress[x772] : +# 35| mu35_10810(String) = Uninitialized[x772] : &:r35_10809 +# 35| r35_10811(glval) = FunctionAddress[String] : +# 35| v35_10812(void) = Call[String] : func:r35_10811, this:r35_10809 +# 35| mu35_10813(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10814(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10809 +# 35| r35_10815(glval) = VariableAddress[x772] : +# 35| r35_10816(glval) = FunctionAddress[~String] : +# 35| v35_10817(void) = Call[~String] : func:r35_10816, this:r35_10815 +# 35| mu35_10818(unknown) = ^CallSideEffect : ~m? +# 35| v35_10819(void) = ^IndirectReadSideEffect[-1] : &:r35_10815, ~m? +# 35| mu35_10820(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10815 +# 35| r35_10821(bool) = Constant[0] : +# 35| v35_10822(void) = ConditionalBranch : r35_10821 #-----| False -> Block 774 #-----| True (back edge) -> Block 773 -# 2338| Block 774 -# 2338| r2338_1(glval) = VariableAddress[x773] : -# 2338| mu2338_2(String) = Uninitialized[x773] : &:r2338_1 -# 2338| r2338_3(glval) = FunctionAddress[String] : -# 2338| v2338_4(void) = Call[String] : func:r2338_3, this:r2338_1 -# 2338| mu2338_5(unknown) = ^CallSideEffect : ~m? -# 2338| mu2338_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2338_1 -# 2339| r2339_1(glval) = VariableAddress[x773] : -# 2339| r2339_2(glval) = FunctionAddress[~String] : -# 2339| v2339_3(void) = Call[~String] : func:r2339_2, this:r2339_1 -# 2339| mu2339_4(unknown) = ^CallSideEffect : ~m? -# 2339| v2339_5(void) = ^IndirectReadSideEffect[-1] : &:r2339_1, ~m? -# 2339| mu2339_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2339_1 -# 2339| r2339_7(bool) = Constant[0] : -# 2339| v2339_8(void) = ConditionalBranch : r2339_7 +# 35| Block 774 +# 35| r35_10823(glval) = VariableAddress[x773] : +# 35| mu35_10824(String) = Uninitialized[x773] : &:r35_10823 +# 35| r35_10825(glval) = FunctionAddress[String] : +# 35| v35_10826(void) = Call[String] : func:r35_10825, this:r35_10823 +# 35| mu35_10827(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10828(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10823 +# 35| r35_10829(glval) = VariableAddress[x773] : +# 35| r35_10830(glval) = FunctionAddress[~String] : +# 35| v35_10831(void) = Call[~String] : func:r35_10830, this:r35_10829 +# 35| mu35_10832(unknown) = ^CallSideEffect : ~m? +# 35| v35_10833(void) = ^IndirectReadSideEffect[-1] : &:r35_10829, ~m? +# 35| mu35_10834(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10829 +# 35| r35_10835(bool) = Constant[0] : +# 35| v35_10836(void) = ConditionalBranch : r35_10835 #-----| False -> Block 775 #-----| True (back edge) -> Block 774 -# 2341| Block 775 -# 2341| r2341_1(glval) = VariableAddress[x774] : -# 2341| mu2341_2(String) = Uninitialized[x774] : &:r2341_1 -# 2341| r2341_3(glval) = FunctionAddress[String] : -# 2341| v2341_4(void) = Call[String] : func:r2341_3, this:r2341_1 -# 2341| mu2341_5(unknown) = ^CallSideEffect : ~m? -# 2341| mu2341_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2341_1 -# 2342| r2342_1(glval) = VariableAddress[x774] : -# 2342| r2342_2(glval) = FunctionAddress[~String] : -# 2342| v2342_3(void) = Call[~String] : func:r2342_2, this:r2342_1 -# 2342| mu2342_4(unknown) = ^CallSideEffect : ~m? -# 2342| v2342_5(void) = ^IndirectReadSideEffect[-1] : &:r2342_1, ~m? -# 2342| mu2342_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2342_1 -# 2342| r2342_7(bool) = Constant[0] : -# 2342| v2342_8(void) = ConditionalBranch : r2342_7 +# 35| Block 775 +# 35| r35_10837(glval) = VariableAddress[x774] : +# 35| mu35_10838(String) = Uninitialized[x774] : &:r35_10837 +# 35| r35_10839(glval) = FunctionAddress[String] : +# 35| v35_10840(void) = Call[String] : func:r35_10839, this:r35_10837 +# 35| mu35_10841(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10842(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10837 +# 35| r35_10843(glval) = VariableAddress[x774] : +# 35| r35_10844(glval) = FunctionAddress[~String] : +# 35| v35_10845(void) = Call[~String] : func:r35_10844, this:r35_10843 +# 35| mu35_10846(unknown) = ^CallSideEffect : ~m? +# 35| v35_10847(void) = ^IndirectReadSideEffect[-1] : &:r35_10843, ~m? +# 35| mu35_10848(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10843 +# 35| r35_10849(bool) = Constant[0] : +# 35| v35_10850(void) = ConditionalBranch : r35_10849 #-----| False -> Block 776 #-----| True (back edge) -> Block 775 -# 2344| Block 776 -# 2344| r2344_1(glval) = VariableAddress[x775] : -# 2344| mu2344_2(String) = Uninitialized[x775] : &:r2344_1 -# 2344| r2344_3(glval) = FunctionAddress[String] : -# 2344| v2344_4(void) = Call[String] : func:r2344_3, this:r2344_1 -# 2344| mu2344_5(unknown) = ^CallSideEffect : ~m? -# 2344| mu2344_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2344_1 -# 2345| r2345_1(glval) = VariableAddress[x775] : -# 2345| r2345_2(glval) = FunctionAddress[~String] : -# 2345| v2345_3(void) = Call[~String] : func:r2345_2, this:r2345_1 -# 2345| mu2345_4(unknown) = ^CallSideEffect : ~m? -# 2345| v2345_5(void) = ^IndirectReadSideEffect[-1] : &:r2345_1, ~m? -# 2345| mu2345_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2345_1 -# 2345| r2345_7(bool) = Constant[0] : -# 2345| v2345_8(void) = ConditionalBranch : r2345_7 +# 35| Block 776 +# 35| r35_10851(glval) = VariableAddress[x775] : +# 35| mu35_10852(String) = Uninitialized[x775] : &:r35_10851 +# 35| r35_10853(glval) = FunctionAddress[String] : +# 35| v35_10854(void) = Call[String] : func:r35_10853, this:r35_10851 +# 35| mu35_10855(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10856(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10851 +# 35| r35_10857(glval) = VariableAddress[x775] : +# 35| r35_10858(glval) = FunctionAddress[~String] : +# 35| v35_10859(void) = Call[~String] : func:r35_10858, this:r35_10857 +# 35| mu35_10860(unknown) = ^CallSideEffect : ~m? +# 35| v35_10861(void) = ^IndirectReadSideEffect[-1] : &:r35_10857, ~m? +# 35| mu35_10862(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10857 +# 35| r35_10863(bool) = Constant[0] : +# 35| v35_10864(void) = ConditionalBranch : r35_10863 #-----| False -> Block 777 #-----| True (back edge) -> Block 776 -# 2347| Block 777 -# 2347| r2347_1(glval) = VariableAddress[x776] : -# 2347| mu2347_2(String) = Uninitialized[x776] : &:r2347_1 -# 2347| r2347_3(glval) = FunctionAddress[String] : -# 2347| v2347_4(void) = Call[String] : func:r2347_3, this:r2347_1 -# 2347| mu2347_5(unknown) = ^CallSideEffect : ~m? -# 2347| mu2347_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2347_1 -# 2348| r2348_1(glval) = VariableAddress[x776] : -# 2348| r2348_2(glval) = FunctionAddress[~String] : -# 2348| v2348_3(void) = Call[~String] : func:r2348_2, this:r2348_1 -# 2348| mu2348_4(unknown) = ^CallSideEffect : ~m? -# 2348| v2348_5(void) = ^IndirectReadSideEffect[-1] : &:r2348_1, ~m? -# 2348| mu2348_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2348_1 -# 2348| r2348_7(bool) = Constant[0] : -# 2348| v2348_8(void) = ConditionalBranch : r2348_7 +# 35| Block 777 +# 35| r35_10865(glval) = VariableAddress[x776] : +# 35| mu35_10866(String) = Uninitialized[x776] : &:r35_10865 +# 35| r35_10867(glval) = FunctionAddress[String] : +# 35| v35_10868(void) = Call[String] : func:r35_10867, this:r35_10865 +# 35| mu35_10869(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10870(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10865 +# 35| r35_10871(glval) = VariableAddress[x776] : +# 35| r35_10872(glval) = FunctionAddress[~String] : +# 35| v35_10873(void) = Call[~String] : func:r35_10872, this:r35_10871 +# 35| mu35_10874(unknown) = ^CallSideEffect : ~m? +# 35| v35_10875(void) = ^IndirectReadSideEffect[-1] : &:r35_10871, ~m? +# 35| mu35_10876(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10871 +# 35| r35_10877(bool) = Constant[0] : +# 35| v35_10878(void) = ConditionalBranch : r35_10877 #-----| False -> Block 778 #-----| True (back edge) -> Block 777 -# 2350| Block 778 -# 2350| r2350_1(glval) = VariableAddress[x777] : -# 2350| mu2350_2(String) = Uninitialized[x777] : &:r2350_1 -# 2350| r2350_3(glval) = FunctionAddress[String] : -# 2350| v2350_4(void) = Call[String] : func:r2350_3, this:r2350_1 -# 2350| mu2350_5(unknown) = ^CallSideEffect : ~m? -# 2350| mu2350_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2350_1 -# 2351| r2351_1(glval) = VariableAddress[x777] : -# 2351| r2351_2(glval) = FunctionAddress[~String] : -# 2351| v2351_3(void) = Call[~String] : func:r2351_2, this:r2351_1 -# 2351| mu2351_4(unknown) = ^CallSideEffect : ~m? -# 2351| v2351_5(void) = ^IndirectReadSideEffect[-1] : &:r2351_1, ~m? -# 2351| mu2351_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 -# 2351| r2351_7(bool) = Constant[0] : -# 2351| v2351_8(void) = ConditionalBranch : r2351_7 +# 35| Block 778 +# 35| r35_10879(glval) = VariableAddress[x777] : +# 35| mu35_10880(String) = Uninitialized[x777] : &:r35_10879 +# 35| r35_10881(glval) = FunctionAddress[String] : +# 35| v35_10882(void) = Call[String] : func:r35_10881, this:r35_10879 +# 35| mu35_10883(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10884(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10879 +# 35| r35_10885(glval) = VariableAddress[x777] : +# 35| r35_10886(glval) = FunctionAddress[~String] : +# 35| v35_10887(void) = Call[~String] : func:r35_10886, this:r35_10885 +# 35| mu35_10888(unknown) = ^CallSideEffect : ~m? +# 35| v35_10889(void) = ^IndirectReadSideEffect[-1] : &:r35_10885, ~m? +# 35| mu35_10890(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10885 +# 35| r35_10891(bool) = Constant[0] : +# 35| v35_10892(void) = ConditionalBranch : r35_10891 #-----| False -> Block 779 #-----| True (back edge) -> Block 778 -# 2353| Block 779 -# 2353| r2353_1(glval) = VariableAddress[x778] : -# 2353| mu2353_2(String) = Uninitialized[x778] : &:r2353_1 -# 2353| r2353_3(glval) = FunctionAddress[String] : -# 2353| v2353_4(void) = Call[String] : func:r2353_3, this:r2353_1 -# 2353| mu2353_5(unknown) = ^CallSideEffect : ~m? -# 2353| mu2353_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2353_1 -# 2354| r2354_1(glval) = VariableAddress[x778] : -# 2354| r2354_2(glval) = FunctionAddress[~String] : -# 2354| v2354_3(void) = Call[~String] : func:r2354_2, this:r2354_1 -# 2354| mu2354_4(unknown) = ^CallSideEffect : ~m? -# 2354| v2354_5(void) = ^IndirectReadSideEffect[-1] : &:r2354_1, ~m? -# 2354| mu2354_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2354_1 -# 2354| r2354_7(bool) = Constant[0] : -# 2354| v2354_8(void) = ConditionalBranch : r2354_7 +# 35| Block 779 +# 35| r35_10893(glval) = VariableAddress[x778] : +# 35| mu35_10894(String) = Uninitialized[x778] : &:r35_10893 +# 35| r35_10895(glval) = FunctionAddress[String] : +# 35| v35_10896(void) = Call[String] : func:r35_10895, this:r35_10893 +# 35| mu35_10897(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10898(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10893 +# 35| r35_10899(glval) = VariableAddress[x778] : +# 35| r35_10900(glval) = FunctionAddress[~String] : +# 35| v35_10901(void) = Call[~String] : func:r35_10900, this:r35_10899 +# 35| mu35_10902(unknown) = ^CallSideEffect : ~m? +# 35| v35_10903(void) = ^IndirectReadSideEffect[-1] : &:r35_10899, ~m? +# 35| mu35_10904(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10899 +# 35| r35_10905(bool) = Constant[0] : +# 35| v35_10906(void) = ConditionalBranch : r35_10905 #-----| False -> Block 780 #-----| True (back edge) -> Block 779 -# 2356| Block 780 -# 2356| r2356_1(glval) = VariableAddress[x779] : -# 2356| mu2356_2(String) = Uninitialized[x779] : &:r2356_1 -# 2356| r2356_3(glval) = FunctionAddress[String] : -# 2356| v2356_4(void) = Call[String] : func:r2356_3, this:r2356_1 -# 2356| mu2356_5(unknown) = ^CallSideEffect : ~m? -# 2356| mu2356_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2356_1 -# 2357| r2357_1(glval) = VariableAddress[x779] : -# 2357| r2357_2(glval) = FunctionAddress[~String] : -# 2357| v2357_3(void) = Call[~String] : func:r2357_2, this:r2357_1 -# 2357| mu2357_4(unknown) = ^CallSideEffect : ~m? -# 2357| v2357_5(void) = ^IndirectReadSideEffect[-1] : &:r2357_1, ~m? -# 2357| mu2357_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2357_1 -# 2357| r2357_7(bool) = Constant[0] : -# 2357| v2357_8(void) = ConditionalBranch : r2357_7 +# 35| Block 780 +# 35| r35_10907(glval) = VariableAddress[x779] : +# 35| mu35_10908(String) = Uninitialized[x779] : &:r35_10907 +# 35| r35_10909(glval) = FunctionAddress[String] : +# 35| v35_10910(void) = Call[String] : func:r35_10909, this:r35_10907 +# 35| mu35_10911(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10912(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10907 +# 35| r35_10913(glval) = VariableAddress[x779] : +# 35| r35_10914(glval) = FunctionAddress[~String] : +# 35| v35_10915(void) = Call[~String] : func:r35_10914, this:r35_10913 +# 35| mu35_10916(unknown) = ^CallSideEffect : ~m? +# 35| v35_10917(void) = ^IndirectReadSideEffect[-1] : &:r35_10913, ~m? +# 35| mu35_10918(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10913 +# 35| r35_10919(bool) = Constant[0] : +# 35| v35_10920(void) = ConditionalBranch : r35_10919 #-----| False -> Block 781 #-----| True (back edge) -> Block 780 -# 2359| Block 781 -# 2359| r2359_1(glval) = VariableAddress[x780] : -# 2359| mu2359_2(String) = Uninitialized[x780] : &:r2359_1 -# 2359| r2359_3(glval) = FunctionAddress[String] : -# 2359| v2359_4(void) = Call[String] : func:r2359_3, this:r2359_1 -# 2359| mu2359_5(unknown) = ^CallSideEffect : ~m? -# 2359| mu2359_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_1 -# 2360| r2360_1(glval) = VariableAddress[x780] : -# 2360| r2360_2(glval) = FunctionAddress[~String] : -# 2360| v2360_3(void) = Call[~String] : func:r2360_2, this:r2360_1 -# 2360| mu2360_4(unknown) = ^CallSideEffect : ~m? -# 2360| v2360_5(void) = ^IndirectReadSideEffect[-1] : &:r2360_1, ~m? -# 2360| mu2360_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2360_1 -# 2360| r2360_7(bool) = Constant[0] : -# 2360| v2360_8(void) = ConditionalBranch : r2360_7 +# 35| Block 781 +# 35| r35_10921(glval) = VariableAddress[x780] : +# 35| mu35_10922(String) = Uninitialized[x780] : &:r35_10921 +# 35| r35_10923(glval) = FunctionAddress[String] : +# 35| v35_10924(void) = Call[String] : func:r35_10923, this:r35_10921 +# 35| mu35_10925(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10926(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10921 +# 35| r35_10927(glval) = VariableAddress[x780] : +# 35| r35_10928(glval) = FunctionAddress[~String] : +# 35| v35_10929(void) = Call[~String] : func:r35_10928, this:r35_10927 +# 35| mu35_10930(unknown) = ^CallSideEffect : ~m? +# 35| v35_10931(void) = ^IndirectReadSideEffect[-1] : &:r35_10927, ~m? +# 35| mu35_10932(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10927 +# 35| r35_10933(bool) = Constant[0] : +# 35| v35_10934(void) = ConditionalBranch : r35_10933 #-----| False -> Block 782 #-----| True (back edge) -> Block 781 -# 2362| Block 782 -# 2362| r2362_1(glval) = VariableAddress[x781] : -# 2362| mu2362_2(String) = Uninitialized[x781] : &:r2362_1 -# 2362| r2362_3(glval) = FunctionAddress[String] : -# 2362| v2362_4(void) = Call[String] : func:r2362_3, this:r2362_1 -# 2362| mu2362_5(unknown) = ^CallSideEffect : ~m? -# 2362| mu2362_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2362_1 -# 2363| r2363_1(glval) = VariableAddress[x781] : -# 2363| r2363_2(glval) = FunctionAddress[~String] : -# 2363| v2363_3(void) = Call[~String] : func:r2363_2, this:r2363_1 -# 2363| mu2363_4(unknown) = ^CallSideEffect : ~m? -# 2363| v2363_5(void) = ^IndirectReadSideEffect[-1] : &:r2363_1, ~m? -# 2363| mu2363_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2363_1 -# 2363| r2363_7(bool) = Constant[0] : -# 2363| v2363_8(void) = ConditionalBranch : r2363_7 +# 35| Block 782 +# 35| r35_10935(glval) = VariableAddress[x781] : +# 35| mu35_10936(String) = Uninitialized[x781] : &:r35_10935 +# 35| r35_10937(glval) = FunctionAddress[String] : +# 35| v35_10938(void) = Call[String] : func:r35_10937, this:r35_10935 +# 35| mu35_10939(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10940(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10935 +# 35| r35_10941(glval) = VariableAddress[x781] : +# 35| r35_10942(glval) = FunctionAddress[~String] : +# 35| v35_10943(void) = Call[~String] : func:r35_10942, this:r35_10941 +# 35| mu35_10944(unknown) = ^CallSideEffect : ~m? +# 35| v35_10945(void) = ^IndirectReadSideEffect[-1] : &:r35_10941, ~m? +# 35| mu35_10946(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10941 +# 35| r35_10947(bool) = Constant[0] : +# 35| v35_10948(void) = ConditionalBranch : r35_10947 #-----| False -> Block 783 #-----| True (back edge) -> Block 782 -# 2365| Block 783 -# 2365| r2365_1(glval) = VariableAddress[x782] : -# 2365| mu2365_2(String) = Uninitialized[x782] : &:r2365_1 -# 2365| r2365_3(glval) = FunctionAddress[String] : -# 2365| v2365_4(void) = Call[String] : func:r2365_3, this:r2365_1 -# 2365| mu2365_5(unknown) = ^CallSideEffect : ~m? -# 2365| mu2365_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2365_1 -# 2366| r2366_1(glval) = VariableAddress[x782] : -# 2366| r2366_2(glval) = FunctionAddress[~String] : -# 2366| v2366_3(void) = Call[~String] : func:r2366_2, this:r2366_1 -# 2366| mu2366_4(unknown) = ^CallSideEffect : ~m? -# 2366| v2366_5(void) = ^IndirectReadSideEffect[-1] : &:r2366_1, ~m? -# 2366| mu2366_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2366_1 -# 2366| r2366_7(bool) = Constant[0] : -# 2366| v2366_8(void) = ConditionalBranch : r2366_7 +# 35| Block 783 +# 35| r35_10949(glval) = VariableAddress[x782] : +# 35| mu35_10950(String) = Uninitialized[x782] : &:r35_10949 +# 35| r35_10951(glval) = FunctionAddress[String] : +# 35| v35_10952(void) = Call[String] : func:r35_10951, this:r35_10949 +# 35| mu35_10953(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10954(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10949 +# 35| r35_10955(glval) = VariableAddress[x782] : +# 35| r35_10956(glval) = FunctionAddress[~String] : +# 35| v35_10957(void) = Call[~String] : func:r35_10956, this:r35_10955 +# 35| mu35_10958(unknown) = ^CallSideEffect : ~m? +# 35| v35_10959(void) = ^IndirectReadSideEffect[-1] : &:r35_10955, ~m? +# 35| mu35_10960(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10955 +# 35| r35_10961(bool) = Constant[0] : +# 35| v35_10962(void) = ConditionalBranch : r35_10961 #-----| False -> Block 784 #-----| True (back edge) -> Block 783 -# 2368| Block 784 -# 2368| r2368_1(glval) = VariableAddress[x783] : -# 2368| mu2368_2(String) = Uninitialized[x783] : &:r2368_1 -# 2368| r2368_3(glval) = FunctionAddress[String] : -# 2368| v2368_4(void) = Call[String] : func:r2368_3, this:r2368_1 -# 2368| mu2368_5(unknown) = ^CallSideEffect : ~m? -# 2368| mu2368_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_1 -# 2369| r2369_1(glval) = VariableAddress[x783] : -# 2369| r2369_2(glval) = FunctionAddress[~String] : -# 2369| v2369_3(void) = Call[~String] : func:r2369_2, this:r2369_1 -# 2369| mu2369_4(unknown) = ^CallSideEffect : ~m? -# 2369| v2369_5(void) = ^IndirectReadSideEffect[-1] : &:r2369_1, ~m? -# 2369| mu2369_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2369_1 -# 2369| r2369_7(bool) = Constant[0] : -# 2369| v2369_8(void) = ConditionalBranch : r2369_7 +# 35| Block 784 +# 35| r35_10963(glval) = VariableAddress[x783] : +# 35| mu35_10964(String) = Uninitialized[x783] : &:r35_10963 +# 35| r35_10965(glval) = FunctionAddress[String] : +# 35| v35_10966(void) = Call[String] : func:r35_10965, this:r35_10963 +# 35| mu35_10967(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10968(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10963 +# 35| r35_10969(glval) = VariableAddress[x783] : +# 35| r35_10970(glval) = FunctionAddress[~String] : +# 35| v35_10971(void) = Call[~String] : func:r35_10970, this:r35_10969 +# 35| mu35_10972(unknown) = ^CallSideEffect : ~m? +# 35| v35_10973(void) = ^IndirectReadSideEffect[-1] : &:r35_10969, ~m? +# 35| mu35_10974(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10969 +# 35| r35_10975(bool) = Constant[0] : +# 35| v35_10976(void) = ConditionalBranch : r35_10975 #-----| False -> Block 785 #-----| True (back edge) -> Block 784 -# 2371| Block 785 -# 2371| r2371_1(glval) = VariableAddress[x784] : -# 2371| mu2371_2(String) = Uninitialized[x784] : &:r2371_1 -# 2371| r2371_3(glval) = FunctionAddress[String] : -# 2371| v2371_4(void) = Call[String] : func:r2371_3, this:r2371_1 -# 2371| mu2371_5(unknown) = ^CallSideEffect : ~m? -# 2371| mu2371_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2371_1 -# 2372| r2372_1(glval) = VariableAddress[x784] : -# 2372| r2372_2(glval) = FunctionAddress[~String] : -# 2372| v2372_3(void) = Call[~String] : func:r2372_2, this:r2372_1 -# 2372| mu2372_4(unknown) = ^CallSideEffect : ~m? -# 2372| v2372_5(void) = ^IndirectReadSideEffect[-1] : &:r2372_1, ~m? -# 2372| mu2372_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2372_1 -# 2372| r2372_7(bool) = Constant[0] : -# 2372| v2372_8(void) = ConditionalBranch : r2372_7 +# 35| Block 785 +# 35| r35_10977(glval) = VariableAddress[x784] : +# 35| mu35_10978(String) = Uninitialized[x784] : &:r35_10977 +# 35| r35_10979(glval) = FunctionAddress[String] : +# 35| v35_10980(void) = Call[String] : func:r35_10979, this:r35_10977 +# 35| mu35_10981(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10982(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10977 +# 35| r35_10983(glval) = VariableAddress[x784] : +# 35| r35_10984(glval) = FunctionAddress[~String] : +# 35| v35_10985(void) = Call[~String] : func:r35_10984, this:r35_10983 +# 35| mu35_10986(unknown) = ^CallSideEffect : ~m? +# 35| v35_10987(void) = ^IndirectReadSideEffect[-1] : &:r35_10983, ~m? +# 35| mu35_10988(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10983 +# 35| r35_10989(bool) = Constant[0] : +# 35| v35_10990(void) = ConditionalBranch : r35_10989 #-----| False -> Block 786 #-----| True (back edge) -> Block 785 -# 2374| Block 786 -# 2374| r2374_1(glval) = VariableAddress[x785] : -# 2374| mu2374_2(String) = Uninitialized[x785] : &:r2374_1 -# 2374| r2374_3(glval) = FunctionAddress[String] : -# 2374| v2374_4(void) = Call[String] : func:r2374_3, this:r2374_1 -# 2374| mu2374_5(unknown) = ^CallSideEffect : ~m? -# 2374| mu2374_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2374_1 -# 2375| r2375_1(glval) = VariableAddress[x785] : -# 2375| r2375_2(glval) = FunctionAddress[~String] : -# 2375| v2375_3(void) = Call[~String] : func:r2375_2, this:r2375_1 -# 2375| mu2375_4(unknown) = ^CallSideEffect : ~m? -# 2375| v2375_5(void) = ^IndirectReadSideEffect[-1] : &:r2375_1, ~m? -# 2375| mu2375_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2375_1 -# 2375| r2375_7(bool) = Constant[0] : -# 2375| v2375_8(void) = ConditionalBranch : r2375_7 +# 35| Block 786 +# 35| r35_10991(glval) = VariableAddress[x785] : +# 35| mu35_10992(String) = Uninitialized[x785] : &:r35_10991 +# 35| r35_10993(glval) = FunctionAddress[String] : +# 35| v35_10994(void) = Call[String] : func:r35_10993, this:r35_10991 +# 35| mu35_10995(unknown) = ^CallSideEffect : ~m? +# 35| mu35_10996(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10991 +# 35| r35_10997(glval) = VariableAddress[x785] : +# 35| r35_10998(glval) = FunctionAddress[~String] : +# 35| v35_10999(void) = Call[~String] : func:r35_10998, this:r35_10997 +# 35| mu35_11000(unknown) = ^CallSideEffect : ~m? +# 35| v35_11001(void) = ^IndirectReadSideEffect[-1] : &:r35_10997, ~m? +# 35| mu35_11002(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_10997 +# 35| r35_11003(bool) = Constant[0] : +# 35| v35_11004(void) = ConditionalBranch : r35_11003 #-----| False -> Block 787 #-----| True (back edge) -> Block 786 -# 2377| Block 787 -# 2377| r2377_1(glval) = VariableAddress[x786] : -# 2377| mu2377_2(String) = Uninitialized[x786] : &:r2377_1 -# 2377| r2377_3(glval) = FunctionAddress[String] : -# 2377| v2377_4(void) = Call[String] : func:r2377_3, this:r2377_1 -# 2377| mu2377_5(unknown) = ^CallSideEffect : ~m? -# 2377| mu2377_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2377_1 -# 2378| r2378_1(glval) = VariableAddress[x786] : -# 2378| r2378_2(glval) = FunctionAddress[~String] : -# 2378| v2378_3(void) = Call[~String] : func:r2378_2, this:r2378_1 -# 2378| mu2378_4(unknown) = ^CallSideEffect : ~m? -# 2378| v2378_5(void) = ^IndirectReadSideEffect[-1] : &:r2378_1, ~m? -# 2378| mu2378_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2378_1 -# 2378| r2378_7(bool) = Constant[0] : -# 2378| v2378_8(void) = ConditionalBranch : r2378_7 +# 35| Block 787 +# 35| r35_11005(glval) = VariableAddress[x786] : +# 35| mu35_11006(String) = Uninitialized[x786] : &:r35_11005 +# 35| r35_11007(glval) = FunctionAddress[String] : +# 35| v35_11008(void) = Call[String] : func:r35_11007, this:r35_11005 +# 35| mu35_11009(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11010(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11005 +# 35| r35_11011(glval) = VariableAddress[x786] : +# 35| r35_11012(glval) = FunctionAddress[~String] : +# 35| v35_11013(void) = Call[~String] : func:r35_11012, this:r35_11011 +# 35| mu35_11014(unknown) = ^CallSideEffect : ~m? +# 35| v35_11015(void) = ^IndirectReadSideEffect[-1] : &:r35_11011, ~m? +# 35| mu35_11016(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11011 +# 35| r35_11017(bool) = Constant[0] : +# 35| v35_11018(void) = ConditionalBranch : r35_11017 #-----| False -> Block 788 #-----| True (back edge) -> Block 787 -# 2380| Block 788 -# 2380| r2380_1(glval) = VariableAddress[x787] : -# 2380| mu2380_2(String) = Uninitialized[x787] : &:r2380_1 -# 2380| r2380_3(glval) = FunctionAddress[String] : -# 2380| v2380_4(void) = Call[String] : func:r2380_3, this:r2380_1 -# 2380| mu2380_5(unknown) = ^CallSideEffect : ~m? -# 2380| mu2380_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2380_1 -# 2381| r2381_1(glval) = VariableAddress[x787] : -# 2381| r2381_2(glval) = FunctionAddress[~String] : -# 2381| v2381_3(void) = Call[~String] : func:r2381_2, this:r2381_1 -# 2381| mu2381_4(unknown) = ^CallSideEffect : ~m? -# 2381| v2381_5(void) = ^IndirectReadSideEffect[-1] : &:r2381_1, ~m? -# 2381| mu2381_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2381_1 -# 2381| r2381_7(bool) = Constant[0] : -# 2381| v2381_8(void) = ConditionalBranch : r2381_7 +# 35| Block 788 +# 35| r35_11019(glval) = VariableAddress[x787] : +# 35| mu35_11020(String) = Uninitialized[x787] : &:r35_11019 +# 35| r35_11021(glval) = FunctionAddress[String] : +# 35| v35_11022(void) = Call[String] : func:r35_11021, this:r35_11019 +# 35| mu35_11023(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11024(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11019 +# 35| r35_11025(glval) = VariableAddress[x787] : +# 35| r35_11026(glval) = FunctionAddress[~String] : +# 35| v35_11027(void) = Call[~String] : func:r35_11026, this:r35_11025 +# 35| mu35_11028(unknown) = ^CallSideEffect : ~m? +# 35| v35_11029(void) = ^IndirectReadSideEffect[-1] : &:r35_11025, ~m? +# 35| mu35_11030(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11025 +# 35| r35_11031(bool) = Constant[0] : +# 35| v35_11032(void) = ConditionalBranch : r35_11031 #-----| False -> Block 789 #-----| True (back edge) -> Block 788 -# 2383| Block 789 -# 2383| r2383_1(glval) = VariableAddress[x788] : -# 2383| mu2383_2(String) = Uninitialized[x788] : &:r2383_1 -# 2383| r2383_3(glval) = FunctionAddress[String] : -# 2383| v2383_4(void) = Call[String] : func:r2383_3, this:r2383_1 -# 2383| mu2383_5(unknown) = ^CallSideEffect : ~m? -# 2383| mu2383_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2383_1 -# 2384| r2384_1(glval) = VariableAddress[x788] : -# 2384| r2384_2(glval) = FunctionAddress[~String] : -# 2384| v2384_3(void) = Call[~String] : func:r2384_2, this:r2384_1 -# 2384| mu2384_4(unknown) = ^CallSideEffect : ~m? -# 2384| v2384_5(void) = ^IndirectReadSideEffect[-1] : &:r2384_1, ~m? -# 2384| mu2384_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2384_1 -# 2384| r2384_7(bool) = Constant[0] : -# 2384| v2384_8(void) = ConditionalBranch : r2384_7 +# 35| Block 789 +# 35| r35_11033(glval) = VariableAddress[x788] : +# 35| mu35_11034(String) = Uninitialized[x788] : &:r35_11033 +# 35| r35_11035(glval) = FunctionAddress[String] : +# 35| v35_11036(void) = Call[String] : func:r35_11035, this:r35_11033 +# 35| mu35_11037(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11038(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11033 +# 35| r35_11039(glval) = VariableAddress[x788] : +# 35| r35_11040(glval) = FunctionAddress[~String] : +# 35| v35_11041(void) = Call[~String] : func:r35_11040, this:r35_11039 +# 35| mu35_11042(unknown) = ^CallSideEffect : ~m? +# 35| v35_11043(void) = ^IndirectReadSideEffect[-1] : &:r35_11039, ~m? +# 35| mu35_11044(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11039 +# 35| r35_11045(bool) = Constant[0] : +# 35| v35_11046(void) = ConditionalBranch : r35_11045 #-----| False -> Block 790 #-----| True (back edge) -> Block 789 -# 2386| Block 790 -# 2386| r2386_1(glval) = VariableAddress[x789] : -# 2386| mu2386_2(String) = Uninitialized[x789] : &:r2386_1 -# 2386| r2386_3(glval) = FunctionAddress[String] : -# 2386| v2386_4(void) = Call[String] : func:r2386_3, this:r2386_1 -# 2386| mu2386_5(unknown) = ^CallSideEffect : ~m? -# 2386| mu2386_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2386_1 -# 2387| r2387_1(glval) = VariableAddress[x789] : -# 2387| r2387_2(glval) = FunctionAddress[~String] : -# 2387| v2387_3(void) = Call[~String] : func:r2387_2, this:r2387_1 -# 2387| mu2387_4(unknown) = ^CallSideEffect : ~m? -# 2387| v2387_5(void) = ^IndirectReadSideEffect[-1] : &:r2387_1, ~m? -# 2387| mu2387_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2387_1 -# 2387| r2387_7(bool) = Constant[0] : -# 2387| v2387_8(void) = ConditionalBranch : r2387_7 +# 35| Block 790 +# 35| r35_11047(glval) = VariableAddress[x789] : +# 35| mu35_11048(String) = Uninitialized[x789] : &:r35_11047 +# 35| r35_11049(glval) = FunctionAddress[String] : +# 35| v35_11050(void) = Call[String] : func:r35_11049, this:r35_11047 +# 35| mu35_11051(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11052(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11047 +# 35| r35_11053(glval) = VariableAddress[x789] : +# 35| r35_11054(glval) = FunctionAddress[~String] : +# 35| v35_11055(void) = Call[~String] : func:r35_11054, this:r35_11053 +# 35| mu35_11056(unknown) = ^CallSideEffect : ~m? +# 35| v35_11057(void) = ^IndirectReadSideEffect[-1] : &:r35_11053, ~m? +# 35| mu35_11058(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11053 +# 35| r35_11059(bool) = Constant[0] : +# 35| v35_11060(void) = ConditionalBranch : r35_11059 #-----| False -> Block 791 #-----| True (back edge) -> Block 790 -# 2389| Block 791 -# 2389| r2389_1(glval) = VariableAddress[x790] : -# 2389| mu2389_2(String) = Uninitialized[x790] : &:r2389_1 -# 2389| r2389_3(glval) = FunctionAddress[String] : -# 2389| v2389_4(void) = Call[String] : func:r2389_3, this:r2389_1 -# 2389| mu2389_5(unknown) = ^CallSideEffect : ~m? -# 2389| mu2389_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2389_1 -# 2390| r2390_1(glval) = VariableAddress[x790] : -# 2390| r2390_2(glval) = FunctionAddress[~String] : -# 2390| v2390_3(void) = Call[~String] : func:r2390_2, this:r2390_1 -# 2390| mu2390_4(unknown) = ^CallSideEffect : ~m? -# 2390| v2390_5(void) = ^IndirectReadSideEffect[-1] : &:r2390_1, ~m? -# 2390| mu2390_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2390_1 -# 2390| r2390_7(bool) = Constant[0] : -# 2390| v2390_8(void) = ConditionalBranch : r2390_7 +# 35| Block 791 +# 35| r35_11061(glval) = VariableAddress[x790] : +# 35| mu35_11062(String) = Uninitialized[x790] : &:r35_11061 +# 35| r35_11063(glval) = FunctionAddress[String] : +# 35| v35_11064(void) = Call[String] : func:r35_11063, this:r35_11061 +# 35| mu35_11065(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11066(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11061 +# 35| r35_11067(glval) = VariableAddress[x790] : +# 35| r35_11068(glval) = FunctionAddress[~String] : +# 35| v35_11069(void) = Call[~String] : func:r35_11068, this:r35_11067 +# 35| mu35_11070(unknown) = ^CallSideEffect : ~m? +# 35| v35_11071(void) = ^IndirectReadSideEffect[-1] : &:r35_11067, ~m? +# 35| mu35_11072(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11067 +# 35| r35_11073(bool) = Constant[0] : +# 35| v35_11074(void) = ConditionalBranch : r35_11073 #-----| False -> Block 792 #-----| True (back edge) -> Block 791 -# 2392| Block 792 -# 2392| r2392_1(glval) = VariableAddress[x791] : -# 2392| mu2392_2(String) = Uninitialized[x791] : &:r2392_1 -# 2392| r2392_3(glval) = FunctionAddress[String] : -# 2392| v2392_4(void) = Call[String] : func:r2392_3, this:r2392_1 -# 2392| mu2392_5(unknown) = ^CallSideEffect : ~m? -# 2392| mu2392_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2392_1 -# 2393| r2393_1(glval) = VariableAddress[x791] : -# 2393| r2393_2(glval) = FunctionAddress[~String] : -# 2393| v2393_3(void) = Call[~String] : func:r2393_2, this:r2393_1 -# 2393| mu2393_4(unknown) = ^CallSideEffect : ~m? -# 2393| v2393_5(void) = ^IndirectReadSideEffect[-1] : &:r2393_1, ~m? -# 2393| mu2393_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2393_1 -# 2393| r2393_7(bool) = Constant[0] : -# 2393| v2393_8(void) = ConditionalBranch : r2393_7 +# 35| Block 792 +# 35| r35_11075(glval) = VariableAddress[x791] : +# 35| mu35_11076(String) = Uninitialized[x791] : &:r35_11075 +# 35| r35_11077(glval) = FunctionAddress[String] : +# 35| v35_11078(void) = Call[String] : func:r35_11077, this:r35_11075 +# 35| mu35_11079(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11080(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11075 +# 35| r35_11081(glval) = VariableAddress[x791] : +# 35| r35_11082(glval) = FunctionAddress[~String] : +# 35| v35_11083(void) = Call[~String] : func:r35_11082, this:r35_11081 +# 35| mu35_11084(unknown) = ^CallSideEffect : ~m? +# 35| v35_11085(void) = ^IndirectReadSideEffect[-1] : &:r35_11081, ~m? +# 35| mu35_11086(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11081 +# 35| r35_11087(bool) = Constant[0] : +# 35| v35_11088(void) = ConditionalBranch : r35_11087 #-----| False -> Block 793 #-----| True (back edge) -> Block 792 -# 2395| Block 793 -# 2395| r2395_1(glval) = VariableAddress[x792] : -# 2395| mu2395_2(String) = Uninitialized[x792] : &:r2395_1 -# 2395| r2395_3(glval) = FunctionAddress[String] : -# 2395| v2395_4(void) = Call[String] : func:r2395_3, this:r2395_1 -# 2395| mu2395_5(unknown) = ^CallSideEffect : ~m? -# 2395| mu2395_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2395_1 -# 2396| r2396_1(glval) = VariableAddress[x792] : -# 2396| r2396_2(glval) = FunctionAddress[~String] : -# 2396| v2396_3(void) = Call[~String] : func:r2396_2, this:r2396_1 -# 2396| mu2396_4(unknown) = ^CallSideEffect : ~m? -# 2396| v2396_5(void) = ^IndirectReadSideEffect[-1] : &:r2396_1, ~m? -# 2396| mu2396_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2396_1 -# 2396| r2396_7(bool) = Constant[0] : -# 2396| v2396_8(void) = ConditionalBranch : r2396_7 +# 35| Block 793 +# 35| r35_11089(glval) = VariableAddress[x792] : +# 35| mu35_11090(String) = Uninitialized[x792] : &:r35_11089 +# 35| r35_11091(glval) = FunctionAddress[String] : +# 35| v35_11092(void) = Call[String] : func:r35_11091, this:r35_11089 +# 35| mu35_11093(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11094(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11089 +# 35| r35_11095(glval) = VariableAddress[x792] : +# 35| r35_11096(glval) = FunctionAddress[~String] : +# 35| v35_11097(void) = Call[~String] : func:r35_11096, this:r35_11095 +# 35| mu35_11098(unknown) = ^CallSideEffect : ~m? +# 35| v35_11099(void) = ^IndirectReadSideEffect[-1] : &:r35_11095, ~m? +# 35| mu35_11100(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11095 +# 35| r35_11101(bool) = Constant[0] : +# 35| v35_11102(void) = ConditionalBranch : r35_11101 #-----| False -> Block 794 #-----| True (back edge) -> Block 793 -# 2398| Block 794 -# 2398| r2398_1(glval) = VariableAddress[x793] : -# 2398| mu2398_2(String) = Uninitialized[x793] : &:r2398_1 -# 2398| r2398_3(glval) = FunctionAddress[String] : -# 2398| v2398_4(void) = Call[String] : func:r2398_3, this:r2398_1 -# 2398| mu2398_5(unknown) = ^CallSideEffect : ~m? -# 2398| mu2398_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2398_1 -# 2399| r2399_1(glval) = VariableAddress[x793] : -# 2399| r2399_2(glval) = FunctionAddress[~String] : -# 2399| v2399_3(void) = Call[~String] : func:r2399_2, this:r2399_1 -# 2399| mu2399_4(unknown) = ^CallSideEffect : ~m? -# 2399| v2399_5(void) = ^IndirectReadSideEffect[-1] : &:r2399_1, ~m? -# 2399| mu2399_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2399_1 -# 2399| r2399_7(bool) = Constant[0] : -# 2399| v2399_8(void) = ConditionalBranch : r2399_7 +# 35| Block 794 +# 35| r35_11103(glval) = VariableAddress[x793] : +# 35| mu35_11104(String) = Uninitialized[x793] : &:r35_11103 +# 35| r35_11105(glval) = FunctionAddress[String] : +# 35| v35_11106(void) = Call[String] : func:r35_11105, this:r35_11103 +# 35| mu35_11107(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11108(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11103 +# 35| r35_11109(glval) = VariableAddress[x793] : +# 35| r35_11110(glval) = FunctionAddress[~String] : +# 35| v35_11111(void) = Call[~String] : func:r35_11110, this:r35_11109 +# 35| mu35_11112(unknown) = ^CallSideEffect : ~m? +# 35| v35_11113(void) = ^IndirectReadSideEffect[-1] : &:r35_11109, ~m? +# 35| mu35_11114(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11109 +# 35| r35_11115(bool) = Constant[0] : +# 35| v35_11116(void) = ConditionalBranch : r35_11115 #-----| False -> Block 795 #-----| True (back edge) -> Block 794 -# 2401| Block 795 -# 2401| r2401_1(glval) = VariableAddress[x794] : -# 2401| mu2401_2(String) = Uninitialized[x794] : &:r2401_1 -# 2401| r2401_3(glval) = FunctionAddress[String] : -# 2401| v2401_4(void) = Call[String] : func:r2401_3, this:r2401_1 -# 2401| mu2401_5(unknown) = ^CallSideEffect : ~m? -# 2401| mu2401_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2401_1 -# 2402| r2402_1(glval) = VariableAddress[x794] : -# 2402| r2402_2(glval) = FunctionAddress[~String] : -# 2402| v2402_3(void) = Call[~String] : func:r2402_2, this:r2402_1 -# 2402| mu2402_4(unknown) = ^CallSideEffect : ~m? -# 2402| v2402_5(void) = ^IndirectReadSideEffect[-1] : &:r2402_1, ~m? -# 2402| mu2402_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2402_1 -# 2402| r2402_7(bool) = Constant[0] : -# 2402| v2402_8(void) = ConditionalBranch : r2402_7 +# 35| Block 795 +# 35| r35_11117(glval) = VariableAddress[x794] : +# 35| mu35_11118(String) = Uninitialized[x794] : &:r35_11117 +# 35| r35_11119(glval) = FunctionAddress[String] : +# 35| v35_11120(void) = Call[String] : func:r35_11119, this:r35_11117 +# 35| mu35_11121(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11122(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11117 +# 35| r35_11123(glval) = VariableAddress[x794] : +# 35| r35_11124(glval) = FunctionAddress[~String] : +# 35| v35_11125(void) = Call[~String] : func:r35_11124, this:r35_11123 +# 35| mu35_11126(unknown) = ^CallSideEffect : ~m? +# 35| v35_11127(void) = ^IndirectReadSideEffect[-1] : &:r35_11123, ~m? +# 35| mu35_11128(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11123 +# 35| r35_11129(bool) = Constant[0] : +# 35| v35_11130(void) = ConditionalBranch : r35_11129 #-----| False -> Block 796 #-----| True (back edge) -> Block 795 -# 2404| Block 796 -# 2404| r2404_1(glval) = VariableAddress[x795] : -# 2404| mu2404_2(String) = Uninitialized[x795] : &:r2404_1 -# 2404| r2404_3(glval) = FunctionAddress[String] : -# 2404| v2404_4(void) = Call[String] : func:r2404_3, this:r2404_1 -# 2404| mu2404_5(unknown) = ^CallSideEffect : ~m? -# 2404| mu2404_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2404_1 -# 2405| r2405_1(glval) = VariableAddress[x795] : -# 2405| r2405_2(glval) = FunctionAddress[~String] : -# 2405| v2405_3(void) = Call[~String] : func:r2405_2, this:r2405_1 -# 2405| mu2405_4(unknown) = ^CallSideEffect : ~m? -# 2405| v2405_5(void) = ^IndirectReadSideEffect[-1] : &:r2405_1, ~m? -# 2405| mu2405_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2405_1 -# 2405| r2405_7(bool) = Constant[0] : -# 2405| v2405_8(void) = ConditionalBranch : r2405_7 +# 35| Block 796 +# 35| r35_11131(glval) = VariableAddress[x795] : +# 35| mu35_11132(String) = Uninitialized[x795] : &:r35_11131 +# 35| r35_11133(glval) = FunctionAddress[String] : +# 35| v35_11134(void) = Call[String] : func:r35_11133, this:r35_11131 +# 35| mu35_11135(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11136(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11131 +# 35| r35_11137(glval) = VariableAddress[x795] : +# 35| r35_11138(glval) = FunctionAddress[~String] : +# 35| v35_11139(void) = Call[~String] : func:r35_11138, this:r35_11137 +# 35| mu35_11140(unknown) = ^CallSideEffect : ~m? +# 35| v35_11141(void) = ^IndirectReadSideEffect[-1] : &:r35_11137, ~m? +# 35| mu35_11142(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11137 +# 35| r35_11143(bool) = Constant[0] : +# 35| v35_11144(void) = ConditionalBranch : r35_11143 #-----| False -> Block 797 #-----| True (back edge) -> Block 796 -# 2407| Block 797 -# 2407| r2407_1(glval) = VariableAddress[x796] : -# 2407| mu2407_2(String) = Uninitialized[x796] : &:r2407_1 -# 2407| r2407_3(glval) = FunctionAddress[String] : -# 2407| v2407_4(void) = Call[String] : func:r2407_3, this:r2407_1 -# 2407| mu2407_5(unknown) = ^CallSideEffect : ~m? -# 2407| mu2407_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2407_1 -# 2408| r2408_1(glval) = VariableAddress[x796] : -# 2408| r2408_2(glval) = FunctionAddress[~String] : -# 2408| v2408_3(void) = Call[~String] : func:r2408_2, this:r2408_1 -# 2408| mu2408_4(unknown) = ^CallSideEffect : ~m? -# 2408| v2408_5(void) = ^IndirectReadSideEffect[-1] : &:r2408_1, ~m? -# 2408| mu2408_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2408_1 -# 2408| r2408_7(bool) = Constant[0] : -# 2408| v2408_8(void) = ConditionalBranch : r2408_7 +# 35| Block 797 +# 35| r35_11145(glval) = VariableAddress[x796] : +# 35| mu35_11146(String) = Uninitialized[x796] : &:r35_11145 +# 35| r35_11147(glval) = FunctionAddress[String] : +# 35| v35_11148(void) = Call[String] : func:r35_11147, this:r35_11145 +# 35| mu35_11149(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11150(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11145 +# 35| r35_11151(glval) = VariableAddress[x796] : +# 35| r35_11152(glval) = FunctionAddress[~String] : +# 35| v35_11153(void) = Call[~String] : func:r35_11152, this:r35_11151 +# 35| mu35_11154(unknown) = ^CallSideEffect : ~m? +# 35| v35_11155(void) = ^IndirectReadSideEffect[-1] : &:r35_11151, ~m? +# 35| mu35_11156(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11151 +# 35| r35_11157(bool) = Constant[0] : +# 35| v35_11158(void) = ConditionalBranch : r35_11157 #-----| False -> Block 798 #-----| True (back edge) -> Block 797 -# 2410| Block 798 -# 2410| r2410_1(glval) = VariableAddress[x797] : -# 2410| mu2410_2(String) = Uninitialized[x797] : &:r2410_1 -# 2410| r2410_3(glval) = FunctionAddress[String] : -# 2410| v2410_4(void) = Call[String] : func:r2410_3, this:r2410_1 -# 2410| mu2410_5(unknown) = ^CallSideEffect : ~m? -# 2410| mu2410_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2410_1 -# 2411| r2411_1(glval) = VariableAddress[x797] : -# 2411| r2411_2(glval) = FunctionAddress[~String] : -# 2411| v2411_3(void) = Call[~String] : func:r2411_2, this:r2411_1 -# 2411| mu2411_4(unknown) = ^CallSideEffect : ~m? -# 2411| v2411_5(void) = ^IndirectReadSideEffect[-1] : &:r2411_1, ~m? -# 2411| mu2411_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2411_1 -# 2411| r2411_7(bool) = Constant[0] : -# 2411| v2411_8(void) = ConditionalBranch : r2411_7 +# 35| Block 798 +# 35| r35_11159(glval) = VariableAddress[x797] : +# 35| mu35_11160(String) = Uninitialized[x797] : &:r35_11159 +# 35| r35_11161(glval) = FunctionAddress[String] : +# 35| v35_11162(void) = Call[String] : func:r35_11161, this:r35_11159 +# 35| mu35_11163(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11164(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11159 +# 35| r35_11165(glval) = VariableAddress[x797] : +# 35| r35_11166(glval) = FunctionAddress[~String] : +# 35| v35_11167(void) = Call[~String] : func:r35_11166, this:r35_11165 +# 35| mu35_11168(unknown) = ^CallSideEffect : ~m? +# 35| v35_11169(void) = ^IndirectReadSideEffect[-1] : &:r35_11165, ~m? +# 35| mu35_11170(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11165 +# 35| r35_11171(bool) = Constant[0] : +# 35| v35_11172(void) = ConditionalBranch : r35_11171 #-----| False -> Block 799 #-----| True (back edge) -> Block 798 -# 2413| Block 799 -# 2413| r2413_1(glval) = VariableAddress[x798] : -# 2413| mu2413_2(String) = Uninitialized[x798] : &:r2413_1 -# 2413| r2413_3(glval) = FunctionAddress[String] : -# 2413| v2413_4(void) = Call[String] : func:r2413_3, this:r2413_1 -# 2413| mu2413_5(unknown) = ^CallSideEffect : ~m? -# 2413| mu2413_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2413_1 -# 2414| r2414_1(glval) = VariableAddress[x798] : -# 2414| r2414_2(glval) = FunctionAddress[~String] : -# 2414| v2414_3(void) = Call[~String] : func:r2414_2, this:r2414_1 -# 2414| mu2414_4(unknown) = ^CallSideEffect : ~m? -# 2414| v2414_5(void) = ^IndirectReadSideEffect[-1] : &:r2414_1, ~m? -# 2414| mu2414_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2414_1 -# 2414| r2414_7(bool) = Constant[0] : -# 2414| v2414_8(void) = ConditionalBranch : r2414_7 +# 35| Block 799 +# 35| r35_11173(glval) = VariableAddress[x798] : +# 35| mu35_11174(String) = Uninitialized[x798] : &:r35_11173 +# 35| r35_11175(glval) = FunctionAddress[String] : +# 35| v35_11176(void) = Call[String] : func:r35_11175, this:r35_11173 +# 35| mu35_11177(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11178(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11173 +# 35| r35_11179(glval) = VariableAddress[x798] : +# 35| r35_11180(glval) = FunctionAddress[~String] : +# 35| v35_11181(void) = Call[~String] : func:r35_11180, this:r35_11179 +# 35| mu35_11182(unknown) = ^CallSideEffect : ~m? +# 35| v35_11183(void) = ^IndirectReadSideEffect[-1] : &:r35_11179, ~m? +# 35| mu35_11184(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11179 +# 35| r35_11185(bool) = Constant[0] : +# 35| v35_11186(void) = ConditionalBranch : r35_11185 #-----| False -> Block 800 #-----| True (back edge) -> Block 799 -# 2416| Block 800 -# 2416| r2416_1(glval) = VariableAddress[x799] : -# 2416| mu2416_2(String) = Uninitialized[x799] : &:r2416_1 -# 2416| r2416_3(glval) = FunctionAddress[String] : -# 2416| v2416_4(void) = Call[String] : func:r2416_3, this:r2416_1 -# 2416| mu2416_5(unknown) = ^CallSideEffect : ~m? -# 2416| mu2416_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2416_1 -# 2417| r2417_1(glval) = VariableAddress[x799] : -# 2417| r2417_2(glval) = FunctionAddress[~String] : -# 2417| v2417_3(void) = Call[~String] : func:r2417_2, this:r2417_1 -# 2417| mu2417_4(unknown) = ^CallSideEffect : ~m? -# 2417| v2417_5(void) = ^IndirectReadSideEffect[-1] : &:r2417_1, ~m? -# 2417| mu2417_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2417_1 -# 2417| r2417_7(bool) = Constant[0] : -# 2417| v2417_8(void) = ConditionalBranch : r2417_7 +# 35| Block 800 +# 35| r35_11187(glval) = VariableAddress[x799] : +# 35| mu35_11188(String) = Uninitialized[x799] : &:r35_11187 +# 35| r35_11189(glval) = FunctionAddress[String] : +# 35| v35_11190(void) = Call[String] : func:r35_11189, this:r35_11187 +# 35| mu35_11191(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11192(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11187 +# 35| r35_11193(glval) = VariableAddress[x799] : +# 35| r35_11194(glval) = FunctionAddress[~String] : +# 35| v35_11195(void) = Call[~String] : func:r35_11194, this:r35_11193 +# 35| mu35_11196(unknown) = ^CallSideEffect : ~m? +# 35| v35_11197(void) = ^IndirectReadSideEffect[-1] : &:r35_11193, ~m? +# 35| mu35_11198(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11193 +# 35| r35_11199(bool) = Constant[0] : +# 35| v35_11200(void) = ConditionalBranch : r35_11199 #-----| False -> Block 801 #-----| True (back edge) -> Block 800 -# 2419| Block 801 -# 2419| r2419_1(glval) = VariableAddress[x800] : -# 2419| mu2419_2(String) = Uninitialized[x800] : &:r2419_1 -# 2419| r2419_3(glval) = FunctionAddress[String] : -# 2419| v2419_4(void) = Call[String] : func:r2419_3, this:r2419_1 -# 2419| mu2419_5(unknown) = ^CallSideEffect : ~m? -# 2419| mu2419_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2419_1 -# 2420| r2420_1(glval) = VariableAddress[x800] : -# 2420| r2420_2(glval) = FunctionAddress[~String] : -# 2420| v2420_3(void) = Call[~String] : func:r2420_2, this:r2420_1 -# 2420| mu2420_4(unknown) = ^CallSideEffect : ~m? -# 2420| v2420_5(void) = ^IndirectReadSideEffect[-1] : &:r2420_1, ~m? -# 2420| mu2420_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2420_1 -# 2420| r2420_7(bool) = Constant[0] : -# 2420| v2420_8(void) = ConditionalBranch : r2420_7 +# 35| Block 801 +# 35| r35_11201(glval) = VariableAddress[x800] : +# 35| mu35_11202(String) = Uninitialized[x800] : &:r35_11201 +# 35| r35_11203(glval) = FunctionAddress[String] : +# 35| v35_11204(void) = Call[String] : func:r35_11203, this:r35_11201 +# 35| mu35_11205(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11206(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11201 +# 35| r35_11207(glval) = VariableAddress[x800] : +# 35| r35_11208(glval) = FunctionAddress[~String] : +# 35| v35_11209(void) = Call[~String] : func:r35_11208, this:r35_11207 +# 35| mu35_11210(unknown) = ^CallSideEffect : ~m? +# 35| v35_11211(void) = ^IndirectReadSideEffect[-1] : &:r35_11207, ~m? +# 35| mu35_11212(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11207 +# 35| r35_11213(bool) = Constant[0] : +# 35| v35_11214(void) = ConditionalBranch : r35_11213 #-----| False -> Block 802 #-----| True (back edge) -> Block 801 -# 2422| Block 802 -# 2422| r2422_1(glval) = VariableAddress[x801] : -# 2422| mu2422_2(String) = Uninitialized[x801] : &:r2422_1 -# 2422| r2422_3(glval) = FunctionAddress[String] : -# 2422| v2422_4(void) = Call[String] : func:r2422_3, this:r2422_1 -# 2422| mu2422_5(unknown) = ^CallSideEffect : ~m? -# 2422| mu2422_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2422_1 -# 2423| r2423_1(glval) = VariableAddress[x801] : -# 2423| r2423_2(glval) = FunctionAddress[~String] : -# 2423| v2423_3(void) = Call[~String] : func:r2423_2, this:r2423_1 -# 2423| mu2423_4(unknown) = ^CallSideEffect : ~m? -# 2423| v2423_5(void) = ^IndirectReadSideEffect[-1] : &:r2423_1, ~m? -# 2423| mu2423_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2423_1 -# 2423| r2423_7(bool) = Constant[0] : -# 2423| v2423_8(void) = ConditionalBranch : r2423_7 +# 35| Block 802 +# 35| r35_11215(glval) = VariableAddress[x801] : +# 35| mu35_11216(String) = Uninitialized[x801] : &:r35_11215 +# 35| r35_11217(glval) = FunctionAddress[String] : +# 35| v35_11218(void) = Call[String] : func:r35_11217, this:r35_11215 +# 35| mu35_11219(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11220(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11215 +# 35| r35_11221(glval) = VariableAddress[x801] : +# 35| r35_11222(glval) = FunctionAddress[~String] : +# 35| v35_11223(void) = Call[~String] : func:r35_11222, this:r35_11221 +# 35| mu35_11224(unknown) = ^CallSideEffect : ~m? +# 35| v35_11225(void) = ^IndirectReadSideEffect[-1] : &:r35_11221, ~m? +# 35| mu35_11226(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11221 +# 35| r35_11227(bool) = Constant[0] : +# 35| v35_11228(void) = ConditionalBranch : r35_11227 #-----| False -> Block 803 #-----| True (back edge) -> Block 802 -# 2425| Block 803 -# 2425| r2425_1(glval) = VariableAddress[x802] : -# 2425| mu2425_2(String) = Uninitialized[x802] : &:r2425_1 -# 2425| r2425_3(glval) = FunctionAddress[String] : -# 2425| v2425_4(void) = Call[String] : func:r2425_3, this:r2425_1 -# 2425| mu2425_5(unknown) = ^CallSideEffect : ~m? -# 2425| mu2425_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2425_1 -# 2426| r2426_1(glval) = VariableAddress[x802] : -# 2426| r2426_2(glval) = FunctionAddress[~String] : -# 2426| v2426_3(void) = Call[~String] : func:r2426_2, this:r2426_1 -# 2426| mu2426_4(unknown) = ^CallSideEffect : ~m? -# 2426| v2426_5(void) = ^IndirectReadSideEffect[-1] : &:r2426_1, ~m? -# 2426| mu2426_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2426_1 -# 2426| r2426_7(bool) = Constant[0] : -# 2426| v2426_8(void) = ConditionalBranch : r2426_7 +# 35| Block 803 +# 35| r35_11229(glval) = VariableAddress[x802] : +# 35| mu35_11230(String) = Uninitialized[x802] : &:r35_11229 +# 35| r35_11231(glval) = FunctionAddress[String] : +# 35| v35_11232(void) = Call[String] : func:r35_11231, this:r35_11229 +# 35| mu35_11233(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11234(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11229 +# 35| r35_11235(glval) = VariableAddress[x802] : +# 35| r35_11236(glval) = FunctionAddress[~String] : +# 35| v35_11237(void) = Call[~String] : func:r35_11236, this:r35_11235 +# 35| mu35_11238(unknown) = ^CallSideEffect : ~m? +# 35| v35_11239(void) = ^IndirectReadSideEffect[-1] : &:r35_11235, ~m? +# 35| mu35_11240(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11235 +# 35| r35_11241(bool) = Constant[0] : +# 35| v35_11242(void) = ConditionalBranch : r35_11241 #-----| False -> Block 804 #-----| True (back edge) -> Block 803 -# 2428| Block 804 -# 2428| r2428_1(glval) = VariableAddress[x803] : -# 2428| mu2428_2(String) = Uninitialized[x803] : &:r2428_1 -# 2428| r2428_3(glval) = FunctionAddress[String] : -# 2428| v2428_4(void) = Call[String] : func:r2428_3, this:r2428_1 -# 2428| mu2428_5(unknown) = ^CallSideEffect : ~m? -# 2428| mu2428_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2428_1 -# 2429| r2429_1(glval) = VariableAddress[x803] : -# 2429| r2429_2(glval) = FunctionAddress[~String] : -# 2429| v2429_3(void) = Call[~String] : func:r2429_2, this:r2429_1 -# 2429| mu2429_4(unknown) = ^CallSideEffect : ~m? -# 2429| v2429_5(void) = ^IndirectReadSideEffect[-1] : &:r2429_1, ~m? -# 2429| mu2429_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2429_1 -# 2429| r2429_7(bool) = Constant[0] : -# 2429| v2429_8(void) = ConditionalBranch : r2429_7 +# 35| Block 804 +# 35| r35_11243(glval) = VariableAddress[x803] : +# 35| mu35_11244(String) = Uninitialized[x803] : &:r35_11243 +# 35| r35_11245(glval) = FunctionAddress[String] : +# 35| v35_11246(void) = Call[String] : func:r35_11245, this:r35_11243 +# 35| mu35_11247(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11248(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11243 +# 35| r35_11249(glval) = VariableAddress[x803] : +# 35| r35_11250(glval) = FunctionAddress[~String] : +# 35| v35_11251(void) = Call[~String] : func:r35_11250, this:r35_11249 +# 35| mu35_11252(unknown) = ^CallSideEffect : ~m? +# 35| v35_11253(void) = ^IndirectReadSideEffect[-1] : &:r35_11249, ~m? +# 35| mu35_11254(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11249 +# 35| r35_11255(bool) = Constant[0] : +# 35| v35_11256(void) = ConditionalBranch : r35_11255 #-----| False -> Block 805 #-----| True (back edge) -> Block 804 -# 2431| Block 805 -# 2431| r2431_1(glval) = VariableAddress[x804] : -# 2431| mu2431_2(String) = Uninitialized[x804] : &:r2431_1 -# 2431| r2431_3(glval) = FunctionAddress[String] : -# 2431| v2431_4(void) = Call[String] : func:r2431_3, this:r2431_1 -# 2431| mu2431_5(unknown) = ^CallSideEffect : ~m? -# 2431| mu2431_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2431_1 -# 2432| r2432_1(glval) = VariableAddress[x804] : -# 2432| r2432_2(glval) = FunctionAddress[~String] : -# 2432| v2432_3(void) = Call[~String] : func:r2432_2, this:r2432_1 -# 2432| mu2432_4(unknown) = ^CallSideEffect : ~m? -# 2432| v2432_5(void) = ^IndirectReadSideEffect[-1] : &:r2432_1, ~m? -# 2432| mu2432_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2432_1 -# 2432| r2432_7(bool) = Constant[0] : -# 2432| v2432_8(void) = ConditionalBranch : r2432_7 +# 35| Block 805 +# 35| r35_11257(glval) = VariableAddress[x804] : +# 35| mu35_11258(String) = Uninitialized[x804] : &:r35_11257 +# 35| r35_11259(glval) = FunctionAddress[String] : +# 35| v35_11260(void) = Call[String] : func:r35_11259, this:r35_11257 +# 35| mu35_11261(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11262(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11257 +# 35| r35_11263(glval) = VariableAddress[x804] : +# 35| r35_11264(glval) = FunctionAddress[~String] : +# 35| v35_11265(void) = Call[~String] : func:r35_11264, this:r35_11263 +# 35| mu35_11266(unknown) = ^CallSideEffect : ~m? +# 35| v35_11267(void) = ^IndirectReadSideEffect[-1] : &:r35_11263, ~m? +# 35| mu35_11268(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11263 +# 35| r35_11269(bool) = Constant[0] : +# 35| v35_11270(void) = ConditionalBranch : r35_11269 #-----| False -> Block 806 #-----| True (back edge) -> Block 805 -# 2434| Block 806 -# 2434| r2434_1(glval) = VariableAddress[x805] : -# 2434| mu2434_2(String) = Uninitialized[x805] : &:r2434_1 -# 2434| r2434_3(glval) = FunctionAddress[String] : -# 2434| v2434_4(void) = Call[String] : func:r2434_3, this:r2434_1 -# 2434| mu2434_5(unknown) = ^CallSideEffect : ~m? -# 2434| mu2434_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2434_1 -# 2435| r2435_1(glval) = VariableAddress[x805] : -# 2435| r2435_2(glval) = FunctionAddress[~String] : -# 2435| v2435_3(void) = Call[~String] : func:r2435_2, this:r2435_1 -# 2435| mu2435_4(unknown) = ^CallSideEffect : ~m? -# 2435| v2435_5(void) = ^IndirectReadSideEffect[-1] : &:r2435_1, ~m? -# 2435| mu2435_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2435_1 -# 2435| r2435_7(bool) = Constant[0] : -# 2435| v2435_8(void) = ConditionalBranch : r2435_7 +# 35| Block 806 +# 35| r35_11271(glval) = VariableAddress[x805] : +# 35| mu35_11272(String) = Uninitialized[x805] : &:r35_11271 +# 35| r35_11273(glval) = FunctionAddress[String] : +# 35| v35_11274(void) = Call[String] : func:r35_11273, this:r35_11271 +# 35| mu35_11275(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11276(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11271 +# 35| r35_11277(glval) = VariableAddress[x805] : +# 35| r35_11278(glval) = FunctionAddress[~String] : +# 35| v35_11279(void) = Call[~String] : func:r35_11278, this:r35_11277 +# 35| mu35_11280(unknown) = ^CallSideEffect : ~m? +# 35| v35_11281(void) = ^IndirectReadSideEffect[-1] : &:r35_11277, ~m? +# 35| mu35_11282(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11277 +# 35| r35_11283(bool) = Constant[0] : +# 35| v35_11284(void) = ConditionalBranch : r35_11283 #-----| False -> Block 807 #-----| True (back edge) -> Block 806 -# 2437| Block 807 -# 2437| r2437_1(glval) = VariableAddress[x806] : -# 2437| mu2437_2(String) = Uninitialized[x806] : &:r2437_1 -# 2437| r2437_3(glval) = FunctionAddress[String] : -# 2437| v2437_4(void) = Call[String] : func:r2437_3, this:r2437_1 -# 2437| mu2437_5(unknown) = ^CallSideEffect : ~m? -# 2437| mu2437_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2437_1 -# 2438| r2438_1(glval) = VariableAddress[x806] : -# 2438| r2438_2(glval) = FunctionAddress[~String] : -# 2438| v2438_3(void) = Call[~String] : func:r2438_2, this:r2438_1 -# 2438| mu2438_4(unknown) = ^CallSideEffect : ~m? -# 2438| v2438_5(void) = ^IndirectReadSideEffect[-1] : &:r2438_1, ~m? -# 2438| mu2438_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2438_1 -# 2438| r2438_7(bool) = Constant[0] : -# 2438| v2438_8(void) = ConditionalBranch : r2438_7 +# 35| Block 807 +# 35| r35_11285(glval) = VariableAddress[x806] : +# 35| mu35_11286(String) = Uninitialized[x806] : &:r35_11285 +# 35| r35_11287(glval) = FunctionAddress[String] : +# 35| v35_11288(void) = Call[String] : func:r35_11287, this:r35_11285 +# 35| mu35_11289(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11290(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11285 +# 35| r35_11291(glval) = VariableAddress[x806] : +# 35| r35_11292(glval) = FunctionAddress[~String] : +# 35| v35_11293(void) = Call[~String] : func:r35_11292, this:r35_11291 +# 35| mu35_11294(unknown) = ^CallSideEffect : ~m? +# 35| v35_11295(void) = ^IndirectReadSideEffect[-1] : &:r35_11291, ~m? +# 35| mu35_11296(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11291 +# 35| r35_11297(bool) = Constant[0] : +# 35| v35_11298(void) = ConditionalBranch : r35_11297 #-----| False -> Block 808 #-----| True (back edge) -> Block 807 -# 2440| Block 808 -# 2440| r2440_1(glval) = VariableAddress[x807] : -# 2440| mu2440_2(String) = Uninitialized[x807] : &:r2440_1 -# 2440| r2440_3(glval) = FunctionAddress[String] : -# 2440| v2440_4(void) = Call[String] : func:r2440_3, this:r2440_1 -# 2440| mu2440_5(unknown) = ^CallSideEffect : ~m? -# 2440| mu2440_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2440_1 -# 2441| r2441_1(glval) = VariableAddress[x807] : -# 2441| r2441_2(glval) = FunctionAddress[~String] : -# 2441| v2441_3(void) = Call[~String] : func:r2441_2, this:r2441_1 -# 2441| mu2441_4(unknown) = ^CallSideEffect : ~m? -# 2441| v2441_5(void) = ^IndirectReadSideEffect[-1] : &:r2441_1, ~m? -# 2441| mu2441_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2441_1 -# 2441| r2441_7(bool) = Constant[0] : -# 2441| v2441_8(void) = ConditionalBranch : r2441_7 +# 35| Block 808 +# 35| r35_11299(glval) = VariableAddress[x807] : +# 35| mu35_11300(String) = Uninitialized[x807] : &:r35_11299 +# 35| r35_11301(glval) = FunctionAddress[String] : +# 35| v35_11302(void) = Call[String] : func:r35_11301, this:r35_11299 +# 35| mu35_11303(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11304(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11299 +# 35| r35_11305(glval) = VariableAddress[x807] : +# 35| r35_11306(glval) = FunctionAddress[~String] : +# 35| v35_11307(void) = Call[~String] : func:r35_11306, this:r35_11305 +# 35| mu35_11308(unknown) = ^CallSideEffect : ~m? +# 35| v35_11309(void) = ^IndirectReadSideEffect[-1] : &:r35_11305, ~m? +# 35| mu35_11310(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11305 +# 35| r35_11311(bool) = Constant[0] : +# 35| v35_11312(void) = ConditionalBranch : r35_11311 #-----| False -> Block 809 #-----| True (back edge) -> Block 808 -# 2443| Block 809 -# 2443| r2443_1(glval) = VariableAddress[x808] : -# 2443| mu2443_2(String) = Uninitialized[x808] : &:r2443_1 -# 2443| r2443_3(glval) = FunctionAddress[String] : -# 2443| v2443_4(void) = Call[String] : func:r2443_3, this:r2443_1 -# 2443| mu2443_5(unknown) = ^CallSideEffect : ~m? -# 2443| mu2443_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2443_1 -# 2444| r2444_1(glval) = VariableAddress[x808] : -# 2444| r2444_2(glval) = FunctionAddress[~String] : -# 2444| v2444_3(void) = Call[~String] : func:r2444_2, this:r2444_1 -# 2444| mu2444_4(unknown) = ^CallSideEffect : ~m? -# 2444| v2444_5(void) = ^IndirectReadSideEffect[-1] : &:r2444_1, ~m? -# 2444| mu2444_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2444_1 -# 2444| r2444_7(bool) = Constant[0] : -# 2444| v2444_8(void) = ConditionalBranch : r2444_7 +# 35| Block 809 +# 35| r35_11313(glval) = VariableAddress[x808] : +# 35| mu35_11314(String) = Uninitialized[x808] : &:r35_11313 +# 35| r35_11315(glval) = FunctionAddress[String] : +# 35| v35_11316(void) = Call[String] : func:r35_11315, this:r35_11313 +# 35| mu35_11317(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11318(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11313 +# 35| r35_11319(glval) = VariableAddress[x808] : +# 35| r35_11320(glval) = FunctionAddress[~String] : +# 35| v35_11321(void) = Call[~String] : func:r35_11320, this:r35_11319 +# 35| mu35_11322(unknown) = ^CallSideEffect : ~m? +# 35| v35_11323(void) = ^IndirectReadSideEffect[-1] : &:r35_11319, ~m? +# 35| mu35_11324(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11319 +# 35| r35_11325(bool) = Constant[0] : +# 35| v35_11326(void) = ConditionalBranch : r35_11325 #-----| False -> Block 810 #-----| True (back edge) -> Block 809 -# 2446| Block 810 -# 2446| r2446_1(glval) = VariableAddress[x809] : -# 2446| mu2446_2(String) = Uninitialized[x809] : &:r2446_1 -# 2446| r2446_3(glval) = FunctionAddress[String] : -# 2446| v2446_4(void) = Call[String] : func:r2446_3, this:r2446_1 -# 2446| mu2446_5(unknown) = ^CallSideEffect : ~m? -# 2446| mu2446_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2446_1 -# 2447| r2447_1(glval) = VariableAddress[x809] : -# 2447| r2447_2(glval) = FunctionAddress[~String] : -# 2447| v2447_3(void) = Call[~String] : func:r2447_2, this:r2447_1 -# 2447| mu2447_4(unknown) = ^CallSideEffect : ~m? -# 2447| v2447_5(void) = ^IndirectReadSideEffect[-1] : &:r2447_1, ~m? -# 2447| mu2447_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2447_1 -# 2447| r2447_7(bool) = Constant[0] : -# 2447| v2447_8(void) = ConditionalBranch : r2447_7 +# 35| Block 810 +# 35| r35_11327(glval) = VariableAddress[x809] : +# 35| mu35_11328(String) = Uninitialized[x809] : &:r35_11327 +# 35| r35_11329(glval) = FunctionAddress[String] : +# 35| v35_11330(void) = Call[String] : func:r35_11329, this:r35_11327 +# 35| mu35_11331(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11332(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11327 +# 35| r35_11333(glval) = VariableAddress[x809] : +# 35| r35_11334(glval) = FunctionAddress[~String] : +# 35| v35_11335(void) = Call[~String] : func:r35_11334, this:r35_11333 +# 35| mu35_11336(unknown) = ^CallSideEffect : ~m? +# 35| v35_11337(void) = ^IndirectReadSideEffect[-1] : &:r35_11333, ~m? +# 35| mu35_11338(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11333 +# 35| r35_11339(bool) = Constant[0] : +# 35| v35_11340(void) = ConditionalBranch : r35_11339 #-----| False -> Block 811 #-----| True (back edge) -> Block 810 -# 2449| Block 811 -# 2449| r2449_1(glval) = VariableAddress[x810] : -# 2449| mu2449_2(String) = Uninitialized[x810] : &:r2449_1 -# 2449| r2449_3(glval) = FunctionAddress[String] : -# 2449| v2449_4(void) = Call[String] : func:r2449_3, this:r2449_1 -# 2449| mu2449_5(unknown) = ^CallSideEffect : ~m? -# 2449| mu2449_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2449_1 -# 2450| r2450_1(glval) = VariableAddress[x810] : -# 2450| r2450_2(glval) = FunctionAddress[~String] : -# 2450| v2450_3(void) = Call[~String] : func:r2450_2, this:r2450_1 -# 2450| mu2450_4(unknown) = ^CallSideEffect : ~m? -# 2450| v2450_5(void) = ^IndirectReadSideEffect[-1] : &:r2450_1, ~m? -# 2450| mu2450_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2450_1 -# 2450| r2450_7(bool) = Constant[0] : -# 2450| v2450_8(void) = ConditionalBranch : r2450_7 +# 35| Block 811 +# 35| r35_11341(glval) = VariableAddress[x810] : +# 35| mu35_11342(String) = Uninitialized[x810] : &:r35_11341 +# 35| r35_11343(glval) = FunctionAddress[String] : +# 35| v35_11344(void) = Call[String] : func:r35_11343, this:r35_11341 +# 35| mu35_11345(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11346(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11341 +# 35| r35_11347(glval) = VariableAddress[x810] : +# 35| r35_11348(glval) = FunctionAddress[~String] : +# 35| v35_11349(void) = Call[~String] : func:r35_11348, this:r35_11347 +# 35| mu35_11350(unknown) = ^CallSideEffect : ~m? +# 35| v35_11351(void) = ^IndirectReadSideEffect[-1] : &:r35_11347, ~m? +# 35| mu35_11352(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11347 +# 35| r35_11353(bool) = Constant[0] : +# 35| v35_11354(void) = ConditionalBranch : r35_11353 #-----| False -> Block 812 #-----| True (back edge) -> Block 811 -# 2452| Block 812 -# 2452| r2452_1(glval) = VariableAddress[x811] : -# 2452| mu2452_2(String) = Uninitialized[x811] : &:r2452_1 -# 2452| r2452_3(glval) = FunctionAddress[String] : -# 2452| v2452_4(void) = Call[String] : func:r2452_3, this:r2452_1 -# 2452| mu2452_5(unknown) = ^CallSideEffect : ~m? -# 2452| mu2452_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2452_1 -# 2453| r2453_1(glval) = VariableAddress[x811] : -# 2453| r2453_2(glval) = FunctionAddress[~String] : -# 2453| v2453_3(void) = Call[~String] : func:r2453_2, this:r2453_1 -# 2453| mu2453_4(unknown) = ^CallSideEffect : ~m? -# 2453| v2453_5(void) = ^IndirectReadSideEffect[-1] : &:r2453_1, ~m? -# 2453| mu2453_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2453_1 -# 2453| r2453_7(bool) = Constant[0] : -# 2453| v2453_8(void) = ConditionalBranch : r2453_7 +# 35| Block 812 +# 35| r35_11355(glval) = VariableAddress[x811] : +# 35| mu35_11356(String) = Uninitialized[x811] : &:r35_11355 +# 35| r35_11357(glval) = FunctionAddress[String] : +# 35| v35_11358(void) = Call[String] : func:r35_11357, this:r35_11355 +# 35| mu35_11359(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11360(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11355 +# 35| r35_11361(glval) = VariableAddress[x811] : +# 35| r35_11362(glval) = FunctionAddress[~String] : +# 35| v35_11363(void) = Call[~String] : func:r35_11362, this:r35_11361 +# 35| mu35_11364(unknown) = ^CallSideEffect : ~m? +# 35| v35_11365(void) = ^IndirectReadSideEffect[-1] : &:r35_11361, ~m? +# 35| mu35_11366(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11361 +# 35| r35_11367(bool) = Constant[0] : +# 35| v35_11368(void) = ConditionalBranch : r35_11367 #-----| False -> Block 813 #-----| True (back edge) -> Block 812 -# 2455| Block 813 -# 2455| r2455_1(glval) = VariableAddress[x812] : -# 2455| mu2455_2(String) = Uninitialized[x812] : &:r2455_1 -# 2455| r2455_3(glval) = FunctionAddress[String] : -# 2455| v2455_4(void) = Call[String] : func:r2455_3, this:r2455_1 -# 2455| mu2455_5(unknown) = ^CallSideEffect : ~m? -# 2455| mu2455_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2455_1 -# 2456| r2456_1(glval) = VariableAddress[x812] : -# 2456| r2456_2(glval) = FunctionAddress[~String] : -# 2456| v2456_3(void) = Call[~String] : func:r2456_2, this:r2456_1 -# 2456| mu2456_4(unknown) = ^CallSideEffect : ~m? -# 2456| v2456_5(void) = ^IndirectReadSideEffect[-1] : &:r2456_1, ~m? -# 2456| mu2456_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2456_1 -# 2456| r2456_7(bool) = Constant[0] : -# 2456| v2456_8(void) = ConditionalBranch : r2456_7 +# 35| Block 813 +# 35| r35_11369(glval) = VariableAddress[x812] : +# 35| mu35_11370(String) = Uninitialized[x812] : &:r35_11369 +# 35| r35_11371(glval) = FunctionAddress[String] : +# 35| v35_11372(void) = Call[String] : func:r35_11371, this:r35_11369 +# 35| mu35_11373(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11374(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11369 +# 35| r35_11375(glval) = VariableAddress[x812] : +# 35| r35_11376(glval) = FunctionAddress[~String] : +# 35| v35_11377(void) = Call[~String] : func:r35_11376, this:r35_11375 +# 35| mu35_11378(unknown) = ^CallSideEffect : ~m? +# 35| v35_11379(void) = ^IndirectReadSideEffect[-1] : &:r35_11375, ~m? +# 35| mu35_11380(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11375 +# 35| r35_11381(bool) = Constant[0] : +# 35| v35_11382(void) = ConditionalBranch : r35_11381 #-----| False -> Block 814 #-----| True (back edge) -> Block 813 -# 2458| Block 814 -# 2458| r2458_1(glval) = VariableAddress[x813] : -# 2458| mu2458_2(String) = Uninitialized[x813] : &:r2458_1 -# 2458| r2458_3(glval) = FunctionAddress[String] : -# 2458| v2458_4(void) = Call[String] : func:r2458_3, this:r2458_1 -# 2458| mu2458_5(unknown) = ^CallSideEffect : ~m? -# 2458| mu2458_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2458_1 -# 2459| r2459_1(glval) = VariableAddress[x813] : -# 2459| r2459_2(glval) = FunctionAddress[~String] : -# 2459| v2459_3(void) = Call[~String] : func:r2459_2, this:r2459_1 -# 2459| mu2459_4(unknown) = ^CallSideEffect : ~m? -# 2459| v2459_5(void) = ^IndirectReadSideEffect[-1] : &:r2459_1, ~m? -# 2459| mu2459_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2459_1 -# 2459| r2459_7(bool) = Constant[0] : -# 2459| v2459_8(void) = ConditionalBranch : r2459_7 +# 35| Block 814 +# 35| r35_11383(glval) = VariableAddress[x813] : +# 35| mu35_11384(String) = Uninitialized[x813] : &:r35_11383 +# 35| r35_11385(glval) = FunctionAddress[String] : +# 35| v35_11386(void) = Call[String] : func:r35_11385, this:r35_11383 +# 35| mu35_11387(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11388(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11383 +# 35| r35_11389(glval) = VariableAddress[x813] : +# 35| r35_11390(glval) = FunctionAddress[~String] : +# 35| v35_11391(void) = Call[~String] : func:r35_11390, this:r35_11389 +# 35| mu35_11392(unknown) = ^CallSideEffect : ~m? +# 35| v35_11393(void) = ^IndirectReadSideEffect[-1] : &:r35_11389, ~m? +# 35| mu35_11394(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11389 +# 35| r35_11395(bool) = Constant[0] : +# 35| v35_11396(void) = ConditionalBranch : r35_11395 #-----| False -> Block 815 #-----| True (back edge) -> Block 814 -# 2461| Block 815 -# 2461| r2461_1(glval) = VariableAddress[x814] : -# 2461| mu2461_2(String) = Uninitialized[x814] : &:r2461_1 -# 2461| r2461_3(glval) = FunctionAddress[String] : -# 2461| v2461_4(void) = Call[String] : func:r2461_3, this:r2461_1 -# 2461| mu2461_5(unknown) = ^CallSideEffect : ~m? -# 2461| mu2461_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2461_1 -# 2462| r2462_1(glval) = VariableAddress[x814] : -# 2462| r2462_2(glval) = FunctionAddress[~String] : -# 2462| v2462_3(void) = Call[~String] : func:r2462_2, this:r2462_1 -# 2462| mu2462_4(unknown) = ^CallSideEffect : ~m? -# 2462| v2462_5(void) = ^IndirectReadSideEffect[-1] : &:r2462_1, ~m? -# 2462| mu2462_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2462_1 -# 2462| r2462_7(bool) = Constant[0] : -# 2462| v2462_8(void) = ConditionalBranch : r2462_7 +# 35| Block 815 +# 35| r35_11397(glval) = VariableAddress[x814] : +# 35| mu35_11398(String) = Uninitialized[x814] : &:r35_11397 +# 35| r35_11399(glval) = FunctionAddress[String] : +# 35| v35_11400(void) = Call[String] : func:r35_11399, this:r35_11397 +# 35| mu35_11401(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11402(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11397 +# 35| r35_11403(glval) = VariableAddress[x814] : +# 35| r35_11404(glval) = FunctionAddress[~String] : +# 35| v35_11405(void) = Call[~String] : func:r35_11404, this:r35_11403 +# 35| mu35_11406(unknown) = ^CallSideEffect : ~m? +# 35| v35_11407(void) = ^IndirectReadSideEffect[-1] : &:r35_11403, ~m? +# 35| mu35_11408(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11403 +# 35| r35_11409(bool) = Constant[0] : +# 35| v35_11410(void) = ConditionalBranch : r35_11409 #-----| False -> Block 816 #-----| True (back edge) -> Block 815 -# 2464| Block 816 -# 2464| r2464_1(glval) = VariableAddress[x815] : -# 2464| mu2464_2(String) = Uninitialized[x815] : &:r2464_1 -# 2464| r2464_3(glval) = FunctionAddress[String] : -# 2464| v2464_4(void) = Call[String] : func:r2464_3, this:r2464_1 -# 2464| mu2464_5(unknown) = ^CallSideEffect : ~m? -# 2464| mu2464_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2464_1 -# 2465| r2465_1(glval) = VariableAddress[x815] : -# 2465| r2465_2(glval) = FunctionAddress[~String] : -# 2465| v2465_3(void) = Call[~String] : func:r2465_2, this:r2465_1 -# 2465| mu2465_4(unknown) = ^CallSideEffect : ~m? -# 2465| v2465_5(void) = ^IndirectReadSideEffect[-1] : &:r2465_1, ~m? -# 2465| mu2465_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2465_1 -# 2465| r2465_7(bool) = Constant[0] : -# 2465| v2465_8(void) = ConditionalBranch : r2465_7 +# 35| Block 816 +# 35| r35_11411(glval) = VariableAddress[x815] : +# 35| mu35_11412(String) = Uninitialized[x815] : &:r35_11411 +# 35| r35_11413(glval) = FunctionAddress[String] : +# 35| v35_11414(void) = Call[String] : func:r35_11413, this:r35_11411 +# 35| mu35_11415(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11416(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11411 +# 35| r35_11417(glval) = VariableAddress[x815] : +# 35| r35_11418(glval) = FunctionAddress[~String] : +# 35| v35_11419(void) = Call[~String] : func:r35_11418, this:r35_11417 +# 35| mu35_11420(unknown) = ^CallSideEffect : ~m? +# 35| v35_11421(void) = ^IndirectReadSideEffect[-1] : &:r35_11417, ~m? +# 35| mu35_11422(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11417 +# 35| r35_11423(bool) = Constant[0] : +# 35| v35_11424(void) = ConditionalBranch : r35_11423 #-----| False -> Block 817 #-----| True (back edge) -> Block 816 -# 2467| Block 817 -# 2467| r2467_1(glval) = VariableAddress[x816] : -# 2467| mu2467_2(String) = Uninitialized[x816] : &:r2467_1 -# 2467| r2467_3(glval) = FunctionAddress[String] : -# 2467| v2467_4(void) = Call[String] : func:r2467_3, this:r2467_1 -# 2467| mu2467_5(unknown) = ^CallSideEffect : ~m? -# 2467| mu2467_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2467_1 -# 2468| r2468_1(glval) = VariableAddress[x816] : -# 2468| r2468_2(glval) = FunctionAddress[~String] : -# 2468| v2468_3(void) = Call[~String] : func:r2468_2, this:r2468_1 -# 2468| mu2468_4(unknown) = ^CallSideEffect : ~m? -# 2468| v2468_5(void) = ^IndirectReadSideEffect[-1] : &:r2468_1, ~m? -# 2468| mu2468_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2468_1 -# 2468| r2468_7(bool) = Constant[0] : -# 2468| v2468_8(void) = ConditionalBranch : r2468_7 +# 35| Block 817 +# 35| r35_11425(glval) = VariableAddress[x816] : +# 35| mu35_11426(String) = Uninitialized[x816] : &:r35_11425 +# 35| r35_11427(glval) = FunctionAddress[String] : +# 35| v35_11428(void) = Call[String] : func:r35_11427, this:r35_11425 +# 35| mu35_11429(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11430(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11425 +# 35| r35_11431(glval) = VariableAddress[x816] : +# 35| r35_11432(glval) = FunctionAddress[~String] : +# 35| v35_11433(void) = Call[~String] : func:r35_11432, this:r35_11431 +# 35| mu35_11434(unknown) = ^CallSideEffect : ~m? +# 35| v35_11435(void) = ^IndirectReadSideEffect[-1] : &:r35_11431, ~m? +# 35| mu35_11436(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11431 +# 35| r35_11437(bool) = Constant[0] : +# 35| v35_11438(void) = ConditionalBranch : r35_11437 #-----| False -> Block 818 #-----| True (back edge) -> Block 817 -# 2470| Block 818 -# 2470| r2470_1(glval) = VariableAddress[x817] : -# 2470| mu2470_2(String) = Uninitialized[x817] : &:r2470_1 -# 2470| r2470_3(glval) = FunctionAddress[String] : -# 2470| v2470_4(void) = Call[String] : func:r2470_3, this:r2470_1 -# 2470| mu2470_5(unknown) = ^CallSideEffect : ~m? -# 2470| mu2470_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2470_1 -# 2471| r2471_1(glval) = VariableAddress[x817] : -# 2471| r2471_2(glval) = FunctionAddress[~String] : -# 2471| v2471_3(void) = Call[~String] : func:r2471_2, this:r2471_1 -# 2471| mu2471_4(unknown) = ^CallSideEffect : ~m? -# 2471| v2471_5(void) = ^IndirectReadSideEffect[-1] : &:r2471_1, ~m? -# 2471| mu2471_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2471_1 -# 2471| r2471_7(bool) = Constant[0] : -# 2471| v2471_8(void) = ConditionalBranch : r2471_7 +# 35| Block 818 +# 35| r35_11439(glval) = VariableAddress[x817] : +# 35| mu35_11440(String) = Uninitialized[x817] : &:r35_11439 +# 35| r35_11441(glval) = FunctionAddress[String] : +# 35| v35_11442(void) = Call[String] : func:r35_11441, this:r35_11439 +# 35| mu35_11443(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11444(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11439 +# 35| r35_11445(glval) = VariableAddress[x817] : +# 35| r35_11446(glval) = FunctionAddress[~String] : +# 35| v35_11447(void) = Call[~String] : func:r35_11446, this:r35_11445 +# 35| mu35_11448(unknown) = ^CallSideEffect : ~m? +# 35| v35_11449(void) = ^IndirectReadSideEffect[-1] : &:r35_11445, ~m? +# 35| mu35_11450(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11445 +# 35| r35_11451(bool) = Constant[0] : +# 35| v35_11452(void) = ConditionalBranch : r35_11451 #-----| False -> Block 819 #-----| True (back edge) -> Block 818 -# 2473| Block 819 -# 2473| r2473_1(glval) = VariableAddress[x818] : -# 2473| mu2473_2(String) = Uninitialized[x818] : &:r2473_1 -# 2473| r2473_3(glval) = FunctionAddress[String] : -# 2473| v2473_4(void) = Call[String] : func:r2473_3, this:r2473_1 -# 2473| mu2473_5(unknown) = ^CallSideEffect : ~m? -# 2473| mu2473_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2473_1 -# 2474| r2474_1(glval) = VariableAddress[x818] : -# 2474| r2474_2(glval) = FunctionAddress[~String] : -# 2474| v2474_3(void) = Call[~String] : func:r2474_2, this:r2474_1 -# 2474| mu2474_4(unknown) = ^CallSideEffect : ~m? -# 2474| v2474_5(void) = ^IndirectReadSideEffect[-1] : &:r2474_1, ~m? -# 2474| mu2474_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2474_1 -# 2474| r2474_7(bool) = Constant[0] : -# 2474| v2474_8(void) = ConditionalBranch : r2474_7 +# 35| Block 819 +# 35| r35_11453(glval) = VariableAddress[x818] : +# 35| mu35_11454(String) = Uninitialized[x818] : &:r35_11453 +# 35| r35_11455(glval) = FunctionAddress[String] : +# 35| v35_11456(void) = Call[String] : func:r35_11455, this:r35_11453 +# 35| mu35_11457(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11458(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11453 +# 35| r35_11459(glval) = VariableAddress[x818] : +# 35| r35_11460(glval) = FunctionAddress[~String] : +# 35| v35_11461(void) = Call[~String] : func:r35_11460, this:r35_11459 +# 35| mu35_11462(unknown) = ^CallSideEffect : ~m? +# 35| v35_11463(void) = ^IndirectReadSideEffect[-1] : &:r35_11459, ~m? +# 35| mu35_11464(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11459 +# 35| r35_11465(bool) = Constant[0] : +# 35| v35_11466(void) = ConditionalBranch : r35_11465 #-----| False -> Block 820 #-----| True (back edge) -> Block 819 -# 2476| Block 820 -# 2476| r2476_1(glval) = VariableAddress[x819] : -# 2476| mu2476_2(String) = Uninitialized[x819] : &:r2476_1 -# 2476| r2476_3(glval) = FunctionAddress[String] : -# 2476| v2476_4(void) = Call[String] : func:r2476_3, this:r2476_1 -# 2476| mu2476_5(unknown) = ^CallSideEffect : ~m? -# 2476| mu2476_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2476_1 -# 2477| r2477_1(glval) = VariableAddress[x819] : -# 2477| r2477_2(glval) = FunctionAddress[~String] : -# 2477| v2477_3(void) = Call[~String] : func:r2477_2, this:r2477_1 -# 2477| mu2477_4(unknown) = ^CallSideEffect : ~m? -# 2477| v2477_5(void) = ^IndirectReadSideEffect[-1] : &:r2477_1, ~m? -# 2477| mu2477_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2477_1 -# 2477| r2477_7(bool) = Constant[0] : -# 2477| v2477_8(void) = ConditionalBranch : r2477_7 +# 35| Block 820 +# 35| r35_11467(glval) = VariableAddress[x819] : +# 35| mu35_11468(String) = Uninitialized[x819] : &:r35_11467 +# 35| r35_11469(glval) = FunctionAddress[String] : +# 35| v35_11470(void) = Call[String] : func:r35_11469, this:r35_11467 +# 35| mu35_11471(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11472(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11467 +# 35| r35_11473(glval) = VariableAddress[x819] : +# 35| r35_11474(glval) = FunctionAddress[~String] : +# 35| v35_11475(void) = Call[~String] : func:r35_11474, this:r35_11473 +# 35| mu35_11476(unknown) = ^CallSideEffect : ~m? +# 35| v35_11477(void) = ^IndirectReadSideEffect[-1] : &:r35_11473, ~m? +# 35| mu35_11478(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11473 +# 35| r35_11479(bool) = Constant[0] : +# 35| v35_11480(void) = ConditionalBranch : r35_11479 #-----| False -> Block 821 #-----| True (back edge) -> Block 820 -# 2479| Block 821 -# 2479| r2479_1(glval) = VariableAddress[x820] : -# 2479| mu2479_2(String) = Uninitialized[x820] : &:r2479_1 -# 2479| r2479_3(glval) = FunctionAddress[String] : -# 2479| v2479_4(void) = Call[String] : func:r2479_3, this:r2479_1 -# 2479| mu2479_5(unknown) = ^CallSideEffect : ~m? -# 2479| mu2479_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2479_1 -# 2480| r2480_1(glval) = VariableAddress[x820] : -# 2480| r2480_2(glval) = FunctionAddress[~String] : -# 2480| v2480_3(void) = Call[~String] : func:r2480_2, this:r2480_1 -# 2480| mu2480_4(unknown) = ^CallSideEffect : ~m? -# 2480| v2480_5(void) = ^IndirectReadSideEffect[-1] : &:r2480_1, ~m? -# 2480| mu2480_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2480_1 -# 2480| r2480_7(bool) = Constant[0] : -# 2480| v2480_8(void) = ConditionalBranch : r2480_7 +# 35| Block 821 +# 35| r35_11481(glval) = VariableAddress[x820] : +# 35| mu35_11482(String) = Uninitialized[x820] : &:r35_11481 +# 35| r35_11483(glval) = FunctionAddress[String] : +# 35| v35_11484(void) = Call[String] : func:r35_11483, this:r35_11481 +# 35| mu35_11485(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11486(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11481 +# 35| r35_11487(glval) = VariableAddress[x820] : +# 35| r35_11488(glval) = FunctionAddress[~String] : +# 35| v35_11489(void) = Call[~String] : func:r35_11488, this:r35_11487 +# 35| mu35_11490(unknown) = ^CallSideEffect : ~m? +# 35| v35_11491(void) = ^IndirectReadSideEffect[-1] : &:r35_11487, ~m? +# 35| mu35_11492(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11487 +# 35| r35_11493(bool) = Constant[0] : +# 35| v35_11494(void) = ConditionalBranch : r35_11493 #-----| False -> Block 822 #-----| True (back edge) -> Block 821 -# 2482| Block 822 -# 2482| r2482_1(glval) = VariableAddress[x821] : -# 2482| mu2482_2(String) = Uninitialized[x821] : &:r2482_1 -# 2482| r2482_3(glval) = FunctionAddress[String] : -# 2482| v2482_4(void) = Call[String] : func:r2482_3, this:r2482_1 -# 2482| mu2482_5(unknown) = ^CallSideEffect : ~m? -# 2482| mu2482_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2482_1 -# 2483| r2483_1(glval) = VariableAddress[x821] : -# 2483| r2483_2(glval) = FunctionAddress[~String] : -# 2483| v2483_3(void) = Call[~String] : func:r2483_2, this:r2483_1 -# 2483| mu2483_4(unknown) = ^CallSideEffect : ~m? -# 2483| v2483_5(void) = ^IndirectReadSideEffect[-1] : &:r2483_1, ~m? -# 2483| mu2483_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2483_1 -# 2483| r2483_7(bool) = Constant[0] : -# 2483| v2483_8(void) = ConditionalBranch : r2483_7 +# 35| Block 822 +# 35| r35_11495(glval) = VariableAddress[x821] : +# 35| mu35_11496(String) = Uninitialized[x821] : &:r35_11495 +# 35| r35_11497(glval) = FunctionAddress[String] : +# 35| v35_11498(void) = Call[String] : func:r35_11497, this:r35_11495 +# 35| mu35_11499(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11500(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11495 +# 35| r35_11501(glval) = VariableAddress[x821] : +# 35| r35_11502(glval) = FunctionAddress[~String] : +# 35| v35_11503(void) = Call[~String] : func:r35_11502, this:r35_11501 +# 35| mu35_11504(unknown) = ^CallSideEffect : ~m? +# 35| v35_11505(void) = ^IndirectReadSideEffect[-1] : &:r35_11501, ~m? +# 35| mu35_11506(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11501 +# 35| r35_11507(bool) = Constant[0] : +# 35| v35_11508(void) = ConditionalBranch : r35_11507 #-----| False -> Block 823 #-----| True (back edge) -> Block 822 -# 2485| Block 823 -# 2485| r2485_1(glval) = VariableAddress[x822] : -# 2485| mu2485_2(String) = Uninitialized[x822] : &:r2485_1 -# 2485| r2485_3(glval) = FunctionAddress[String] : -# 2485| v2485_4(void) = Call[String] : func:r2485_3, this:r2485_1 -# 2485| mu2485_5(unknown) = ^CallSideEffect : ~m? -# 2485| mu2485_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2485_1 -# 2486| r2486_1(glval) = VariableAddress[x822] : -# 2486| r2486_2(glval) = FunctionAddress[~String] : -# 2486| v2486_3(void) = Call[~String] : func:r2486_2, this:r2486_1 -# 2486| mu2486_4(unknown) = ^CallSideEffect : ~m? -# 2486| v2486_5(void) = ^IndirectReadSideEffect[-1] : &:r2486_1, ~m? -# 2486| mu2486_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2486_1 -# 2486| r2486_7(bool) = Constant[0] : -# 2486| v2486_8(void) = ConditionalBranch : r2486_7 +# 35| Block 823 +# 35| r35_11509(glval) = VariableAddress[x822] : +# 35| mu35_11510(String) = Uninitialized[x822] : &:r35_11509 +# 35| r35_11511(glval) = FunctionAddress[String] : +# 35| v35_11512(void) = Call[String] : func:r35_11511, this:r35_11509 +# 35| mu35_11513(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11514(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11509 +# 35| r35_11515(glval) = VariableAddress[x822] : +# 35| r35_11516(glval) = FunctionAddress[~String] : +# 35| v35_11517(void) = Call[~String] : func:r35_11516, this:r35_11515 +# 35| mu35_11518(unknown) = ^CallSideEffect : ~m? +# 35| v35_11519(void) = ^IndirectReadSideEffect[-1] : &:r35_11515, ~m? +# 35| mu35_11520(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11515 +# 35| r35_11521(bool) = Constant[0] : +# 35| v35_11522(void) = ConditionalBranch : r35_11521 #-----| False -> Block 824 #-----| True (back edge) -> Block 823 -# 2488| Block 824 -# 2488| r2488_1(glval) = VariableAddress[x823] : -# 2488| mu2488_2(String) = Uninitialized[x823] : &:r2488_1 -# 2488| r2488_3(glval) = FunctionAddress[String] : -# 2488| v2488_4(void) = Call[String] : func:r2488_3, this:r2488_1 -# 2488| mu2488_5(unknown) = ^CallSideEffect : ~m? -# 2488| mu2488_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2488_1 -# 2489| r2489_1(glval) = VariableAddress[x823] : -# 2489| r2489_2(glval) = FunctionAddress[~String] : -# 2489| v2489_3(void) = Call[~String] : func:r2489_2, this:r2489_1 -# 2489| mu2489_4(unknown) = ^CallSideEffect : ~m? -# 2489| v2489_5(void) = ^IndirectReadSideEffect[-1] : &:r2489_1, ~m? -# 2489| mu2489_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2489_1 -# 2489| r2489_7(bool) = Constant[0] : -# 2489| v2489_8(void) = ConditionalBranch : r2489_7 +# 35| Block 824 +# 35| r35_11523(glval) = VariableAddress[x823] : +# 35| mu35_11524(String) = Uninitialized[x823] : &:r35_11523 +# 35| r35_11525(glval) = FunctionAddress[String] : +# 35| v35_11526(void) = Call[String] : func:r35_11525, this:r35_11523 +# 35| mu35_11527(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11528(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11523 +# 35| r35_11529(glval) = VariableAddress[x823] : +# 35| r35_11530(glval) = FunctionAddress[~String] : +# 35| v35_11531(void) = Call[~String] : func:r35_11530, this:r35_11529 +# 35| mu35_11532(unknown) = ^CallSideEffect : ~m? +# 35| v35_11533(void) = ^IndirectReadSideEffect[-1] : &:r35_11529, ~m? +# 35| mu35_11534(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11529 +# 35| r35_11535(bool) = Constant[0] : +# 35| v35_11536(void) = ConditionalBranch : r35_11535 #-----| False -> Block 825 #-----| True (back edge) -> Block 824 -# 2491| Block 825 -# 2491| r2491_1(glval) = VariableAddress[x824] : -# 2491| mu2491_2(String) = Uninitialized[x824] : &:r2491_1 -# 2491| r2491_3(glval) = FunctionAddress[String] : -# 2491| v2491_4(void) = Call[String] : func:r2491_3, this:r2491_1 -# 2491| mu2491_5(unknown) = ^CallSideEffect : ~m? -# 2491| mu2491_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2491_1 -# 2492| r2492_1(glval) = VariableAddress[x824] : -# 2492| r2492_2(glval) = FunctionAddress[~String] : -# 2492| v2492_3(void) = Call[~String] : func:r2492_2, this:r2492_1 -# 2492| mu2492_4(unknown) = ^CallSideEffect : ~m? -# 2492| v2492_5(void) = ^IndirectReadSideEffect[-1] : &:r2492_1, ~m? -# 2492| mu2492_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2492_1 -# 2492| r2492_7(bool) = Constant[0] : -# 2492| v2492_8(void) = ConditionalBranch : r2492_7 +# 35| Block 825 +# 35| r35_11537(glval) = VariableAddress[x824] : +# 35| mu35_11538(String) = Uninitialized[x824] : &:r35_11537 +# 35| r35_11539(glval) = FunctionAddress[String] : +# 35| v35_11540(void) = Call[String] : func:r35_11539, this:r35_11537 +# 35| mu35_11541(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11542(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11537 +# 35| r35_11543(glval) = VariableAddress[x824] : +# 35| r35_11544(glval) = FunctionAddress[~String] : +# 35| v35_11545(void) = Call[~String] : func:r35_11544, this:r35_11543 +# 35| mu35_11546(unknown) = ^CallSideEffect : ~m? +# 35| v35_11547(void) = ^IndirectReadSideEffect[-1] : &:r35_11543, ~m? +# 35| mu35_11548(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11543 +# 35| r35_11549(bool) = Constant[0] : +# 35| v35_11550(void) = ConditionalBranch : r35_11549 #-----| False -> Block 826 #-----| True (back edge) -> Block 825 -# 2494| Block 826 -# 2494| r2494_1(glval) = VariableAddress[x825] : -# 2494| mu2494_2(String) = Uninitialized[x825] : &:r2494_1 -# 2494| r2494_3(glval) = FunctionAddress[String] : -# 2494| v2494_4(void) = Call[String] : func:r2494_3, this:r2494_1 -# 2494| mu2494_5(unknown) = ^CallSideEffect : ~m? -# 2494| mu2494_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2494_1 -# 2495| r2495_1(glval) = VariableAddress[x825] : -# 2495| r2495_2(glval) = FunctionAddress[~String] : -# 2495| v2495_3(void) = Call[~String] : func:r2495_2, this:r2495_1 -# 2495| mu2495_4(unknown) = ^CallSideEffect : ~m? -# 2495| v2495_5(void) = ^IndirectReadSideEffect[-1] : &:r2495_1, ~m? -# 2495| mu2495_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2495_1 -# 2495| r2495_7(bool) = Constant[0] : -# 2495| v2495_8(void) = ConditionalBranch : r2495_7 +# 35| Block 826 +# 35| r35_11551(glval) = VariableAddress[x825] : +# 35| mu35_11552(String) = Uninitialized[x825] : &:r35_11551 +# 35| r35_11553(glval) = FunctionAddress[String] : +# 35| v35_11554(void) = Call[String] : func:r35_11553, this:r35_11551 +# 35| mu35_11555(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11556(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11551 +# 35| r35_11557(glval) = VariableAddress[x825] : +# 35| r35_11558(glval) = FunctionAddress[~String] : +# 35| v35_11559(void) = Call[~String] : func:r35_11558, this:r35_11557 +# 35| mu35_11560(unknown) = ^CallSideEffect : ~m? +# 35| v35_11561(void) = ^IndirectReadSideEffect[-1] : &:r35_11557, ~m? +# 35| mu35_11562(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11557 +# 35| r35_11563(bool) = Constant[0] : +# 35| v35_11564(void) = ConditionalBranch : r35_11563 #-----| False -> Block 827 #-----| True (back edge) -> Block 826 -# 2497| Block 827 -# 2497| r2497_1(glval) = VariableAddress[x826] : -# 2497| mu2497_2(String) = Uninitialized[x826] : &:r2497_1 -# 2497| r2497_3(glval) = FunctionAddress[String] : -# 2497| v2497_4(void) = Call[String] : func:r2497_3, this:r2497_1 -# 2497| mu2497_5(unknown) = ^CallSideEffect : ~m? -# 2497| mu2497_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2497_1 -# 2498| r2498_1(glval) = VariableAddress[x826] : -# 2498| r2498_2(glval) = FunctionAddress[~String] : -# 2498| v2498_3(void) = Call[~String] : func:r2498_2, this:r2498_1 -# 2498| mu2498_4(unknown) = ^CallSideEffect : ~m? -# 2498| v2498_5(void) = ^IndirectReadSideEffect[-1] : &:r2498_1, ~m? -# 2498| mu2498_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2498_1 -# 2498| r2498_7(bool) = Constant[0] : -# 2498| v2498_8(void) = ConditionalBranch : r2498_7 +# 35| Block 827 +# 35| r35_11565(glval) = VariableAddress[x826] : +# 35| mu35_11566(String) = Uninitialized[x826] : &:r35_11565 +# 35| r35_11567(glval) = FunctionAddress[String] : +# 35| v35_11568(void) = Call[String] : func:r35_11567, this:r35_11565 +# 35| mu35_11569(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11570(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11565 +# 35| r35_11571(glval) = VariableAddress[x826] : +# 35| r35_11572(glval) = FunctionAddress[~String] : +# 35| v35_11573(void) = Call[~String] : func:r35_11572, this:r35_11571 +# 35| mu35_11574(unknown) = ^CallSideEffect : ~m? +# 35| v35_11575(void) = ^IndirectReadSideEffect[-1] : &:r35_11571, ~m? +# 35| mu35_11576(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11571 +# 35| r35_11577(bool) = Constant[0] : +# 35| v35_11578(void) = ConditionalBranch : r35_11577 #-----| False -> Block 828 #-----| True (back edge) -> Block 827 -# 2500| Block 828 -# 2500| r2500_1(glval) = VariableAddress[x827] : -# 2500| mu2500_2(String) = Uninitialized[x827] : &:r2500_1 -# 2500| r2500_3(glval) = FunctionAddress[String] : -# 2500| v2500_4(void) = Call[String] : func:r2500_3, this:r2500_1 -# 2500| mu2500_5(unknown) = ^CallSideEffect : ~m? -# 2500| mu2500_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2500_1 -# 2501| r2501_1(glval) = VariableAddress[x827] : -# 2501| r2501_2(glval) = FunctionAddress[~String] : -# 2501| v2501_3(void) = Call[~String] : func:r2501_2, this:r2501_1 -# 2501| mu2501_4(unknown) = ^CallSideEffect : ~m? -# 2501| v2501_5(void) = ^IndirectReadSideEffect[-1] : &:r2501_1, ~m? -# 2501| mu2501_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2501_1 -# 2501| r2501_7(bool) = Constant[0] : -# 2501| v2501_8(void) = ConditionalBranch : r2501_7 +# 35| Block 828 +# 35| r35_11579(glval) = VariableAddress[x827] : +# 35| mu35_11580(String) = Uninitialized[x827] : &:r35_11579 +# 35| r35_11581(glval) = FunctionAddress[String] : +# 35| v35_11582(void) = Call[String] : func:r35_11581, this:r35_11579 +# 35| mu35_11583(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11584(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11579 +# 35| r35_11585(glval) = VariableAddress[x827] : +# 35| r35_11586(glval) = FunctionAddress[~String] : +# 35| v35_11587(void) = Call[~String] : func:r35_11586, this:r35_11585 +# 35| mu35_11588(unknown) = ^CallSideEffect : ~m? +# 35| v35_11589(void) = ^IndirectReadSideEffect[-1] : &:r35_11585, ~m? +# 35| mu35_11590(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11585 +# 35| r35_11591(bool) = Constant[0] : +# 35| v35_11592(void) = ConditionalBranch : r35_11591 #-----| False -> Block 829 #-----| True (back edge) -> Block 828 -# 2503| Block 829 -# 2503| r2503_1(glval) = VariableAddress[x828] : -# 2503| mu2503_2(String) = Uninitialized[x828] : &:r2503_1 -# 2503| r2503_3(glval) = FunctionAddress[String] : -# 2503| v2503_4(void) = Call[String] : func:r2503_3, this:r2503_1 -# 2503| mu2503_5(unknown) = ^CallSideEffect : ~m? -# 2503| mu2503_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2503_1 -# 2504| r2504_1(glval) = VariableAddress[x828] : -# 2504| r2504_2(glval) = FunctionAddress[~String] : -# 2504| v2504_3(void) = Call[~String] : func:r2504_2, this:r2504_1 -# 2504| mu2504_4(unknown) = ^CallSideEffect : ~m? -# 2504| v2504_5(void) = ^IndirectReadSideEffect[-1] : &:r2504_1, ~m? -# 2504| mu2504_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2504_1 -# 2504| r2504_7(bool) = Constant[0] : -# 2504| v2504_8(void) = ConditionalBranch : r2504_7 +# 35| Block 829 +# 35| r35_11593(glval) = VariableAddress[x828] : +# 35| mu35_11594(String) = Uninitialized[x828] : &:r35_11593 +# 35| r35_11595(glval) = FunctionAddress[String] : +# 35| v35_11596(void) = Call[String] : func:r35_11595, this:r35_11593 +# 35| mu35_11597(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11598(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11593 +# 35| r35_11599(glval) = VariableAddress[x828] : +# 35| r35_11600(glval) = FunctionAddress[~String] : +# 35| v35_11601(void) = Call[~String] : func:r35_11600, this:r35_11599 +# 35| mu35_11602(unknown) = ^CallSideEffect : ~m? +# 35| v35_11603(void) = ^IndirectReadSideEffect[-1] : &:r35_11599, ~m? +# 35| mu35_11604(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11599 +# 35| r35_11605(bool) = Constant[0] : +# 35| v35_11606(void) = ConditionalBranch : r35_11605 #-----| False -> Block 830 #-----| True (back edge) -> Block 829 -# 2506| Block 830 -# 2506| r2506_1(glval) = VariableAddress[x829] : -# 2506| mu2506_2(String) = Uninitialized[x829] : &:r2506_1 -# 2506| r2506_3(glval) = FunctionAddress[String] : -# 2506| v2506_4(void) = Call[String] : func:r2506_3, this:r2506_1 -# 2506| mu2506_5(unknown) = ^CallSideEffect : ~m? -# 2506| mu2506_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2506_1 -# 2507| r2507_1(glval) = VariableAddress[x829] : -# 2507| r2507_2(glval) = FunctionAddress[~String] : -# 2507| v2507_3(void) = Call[~String] : func:r2507_2, this:r2507_1 -# 2507| mu2507_4(unknown) = ^CallSideEffect : ~m? -# 2507| v2507_5(void) = ^IndirectReadSideEffect[-1] : &:r2507_1, ~m? -# 2507| mu2507_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2507_1 -# 2507| r2507_7(bool) = Constant[0] : -# 2507| v2507_8(void) = ConditionalBranch : r2507_7 +# 35| Block 830 +# 35| r35_11607(glval) = VariableAddress[x829] : +# 35| mu35_11608(String) = Uninitialized[x829] : &:r35_11607 +# 35| r35_11609(glval) = FunctionAddress[String] : +# 35| v35_11610(void) = Call[String] : func:r35_11609, this:r35_11607 +# 35| mu35_11611(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11612(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11607 +# 35| r35_11613(glval) = VariableAddress[x829] : +# 35| r35_11614(glval) = FunctionAddress[~String] : +# 35| v35_11615(void) = Call[~String] : func:r35_11614, this:r35_11613 +# 35| mu35_11616(unknown) = ^CallSideEffect : ~m? +# 35| v35_11617(void) = ^IndirectReadSideEffect[-1] : &:r35_11613, ~m? +# 35| mu35_11618(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11613 +# 35| r35_11619(bool) = Constant[0] : +# 35| v35_11620(void) = ConditionalBranch : r35_11619 #-----| False -> Block 831 #-----| True (back edge) -> Block 830 -# 2509| Block 831 -# 2509| r2509_1(glval) = VariableAddress[x830] : -# 2509| mu2509_2(String) = Uninitialized[x830] : &:r2509_1 -# 2509| r2509_3(glval) = FunctionAddress[String] : -# 2509| v2509_4(void) = Call[String] : func:r2509_3, this:r2509_1 -# 2509| mu2509_5(unknown) = ^CallSideEffect : ~m? -# 2509| mu2509_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2509_1 -# 2510| r2510_1(glval) = VariableAddress[x830] : -# 2510| r2510_2(glval) = FunctionAddress[~String] : -# 2510| v2510_3(void) = Call[~String] : func:r2510_2, this:r2510_1 -# 2510| mu2510_4(unknown) = ^CallSideEffect : ~m? -# 2510| v2510_5(void) = ^IndirectReadSideEffect[-1] : &:r2510_1, ~m? -# 2510| mu2510_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2510_1 -# 2510| r2510_7(bool) = Constant[0] : -# 2510| v2510_8(void) = ConditionalBranch : r2510_7 +# 35| Block 831 +# 35| r35_11621(glval) = VariableAddress[x830] : +# 35| mu35_11622(String) = Uninitialized[x830] : &:r35_11621 +# 35| r35_11623(glval) = FunctionAddress[String] : +# 35| v35_11624(void) = Call[String] : func:r35_11623, this:r35_11621 +# 35| mu35_11625(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11626(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11621 +# 35| r35_11627(glval) = VariableAddress[x830] : +# 35| r35_11628(glval) = FunctionAddress[~String] : +# 35| v35_11629(void) = Call[~String] : func:r35_11628, this:r35_11627 +# 35| mu35_11630(unknown) = ^CallSideEffect : ~m? +# 35| v35_11631(void) = ^IndirectReadSideEffect[-1] : &:r35_11627, ~m? +# 35| mu35_11632(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11627 +# 35| r35_11633(bool) = Constant[0] : +# 35| v35_11634(void) = ConditionalBranch : r35_11633 #-----| False -> Block 832 #-----| True (back edge) -> Block 831 -# 2512| Block 832 -# 2512| r2512_1(glval) = VariableAddress[x831] : -# 2512| mu2512_2(String) = Uninitialized[x831] : &:r2512_1 -# 2512| r2512_3(glval) = FunctionAddress[String] : -# 2512| v2512_4(void) = Call[String] : func:r2512_3, this:r2512_1 -# 2512| mu2512_5(unknown) = ^CallSideEffect : ~m? -# 2512| mu2512_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2512_1 -# 2513| r2513_1(glval) = VariableAddress[x831] : -# 2513| r2513_2(glval) = FunctionAddress[~String] : -# 2513| v2513_3(void) = Call[~String] : func:r2513_2, this:r2513_1 -# 2513| mu2513_4(unknown) = ^CallSideEffect : ~m? -# 2513| v2513_5(void) = ^IndirectReadSideEffect[-1] : &:r2513_1, ~m? -# 2513| mu2513_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2513_1 -# 2513| r2513_7(bool) = Constant[0] : -# 2513| v2513_8(void) = ConditionalBranch : r2513_7 +# 35| Block 832 +# 35| r35_11635(glval) = VariableAddress[x831] : +# 35| mu35_11636(String) = Uninitialized[x831] : &:r35_11635 +# 35| r35_11637(glval) = FunctionAddress[String] : +# 35| v35_11638(void) = Call[String] : func:r35_11637, this:r35_11635 +# 35| mu35_11639(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11640(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11635 +# 35| r35_11641(glval) = VariableAddress[x831] : +# 35| r35_11642(glval) = FunctionAddress[~String] : +# 35| v35_11643(void) = Call[~String] : func:r35_11642, this:r35_11641 +# 35| mu35_11644(unknown) = ^CallSideEffect : ~m? +# 35| v35_11645(void) = ^IndirectReadSideEffect[-1] : &:r35_11641, ~m? +# 35| mu35_11646(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11641 +# 35| r35_11647(bool) = Constant[0] : +# 35| v35_11648(void) = ConditionalBranch : r35_11647 #-----| False -> Block 833 #-----| True (back edge) -> Block 832 -# 2515| Block 833 -# 2515| r2515_1(glval) = VariableAddress[x832] : -# 2515| mu2515_2(String) = Uninitialized[x832] : &:r2515_1 -# 2515| r2515_3(glval) = FunctionAddress[String] : -# 2515| v2515_4(void) = Call[String] : func:r2515_3, this:r2515_1 -# 2515| mu2515_5(unknown) = ^CallSideEffect : ~m? -# 2515| mu2515_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2515_1 -# 2516| r2516_1(glval) = VariableAddress[x832] : -# 2516| r2516_2(glval) = FunctionAddress[~String] : -# 2516| v2516_3(void) = Call[~String] : func:r2516_2, this:r2516_1 -# 2516| mu2516_4(unknown) = ^CallSideEffect : ~m? -# 2516| v2516_5(void) = ^IndirectReadSideEffect[-1] : &:r2516_1, ~m? -# 2516| mu2516_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2516_1 -# 2516| r2516_7(bool) = Constant[0] : -# 2516| v2516_8(void) = ConditionalBranch : r2516_7 +# 35| Block 833 +# 35| r35_11649(glval) = VariableAddress[x832] : +# 35| mu35_11650(String) = Uninitialized[x832] : &:r35_11649 +# 35| r35_11651(glval) = FunctionAddress[String] : +# 35| v35_11652(void) = Call[String] : func:r35_11651, this:r35_11649 +# 35| mu35_11653(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11654(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11649 +# 35| r35_11655(glval) = VariableAddress[x832] : +# 35| r35_11656(glval) = FunctionAddress[~String] : +# 35| v35_11657(void) = Call[~String] : func:r35_11656, this:r35_11655 +# 35| mu35_11658(unknown) = ^CallSideEffect : ~m? +# 35| v35_11659(void) = ^IndirectReadSideEffect[-1] : &:r35_11655, ~m? +# 35| mu35_11660(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11655 +# 35| r35_11661(bool) = Constant[0] : +# 35| v35_11662(void) = ConditionalBranch : r35_11661 #-----| False -> Block 834 #-----| True (back edge) -> Block 833 -# 2518| Block 834 -# 2518| r2518_1(glval) = VariableAddress[x833] : -# 2518| mu2518_2(String) = Uninitialized[x833] : &:r2518_1 -# 2518| r2518_3(glval) = FunctionAddress[String] : -# 2518| v2518_4(void) = Call[String] : func:r2518_3, this:r2518_1 -# 2518| mu2518_5(unknown) = ^CallSideEffect : ~m? -# 2518| mu2518_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2518_1 -# 2519| r2519_1(glval) = VariableAddress[x833] : -# 2519| r2519_2(glval) = FunctionAddress[~String] : -# 2519| v2519_3(void) = Call[~String] : func:r2519_2, this:r2519_1 -# 2519| mu2519_4(unknown) = ^CallSideEffect : ~m? -# 2519| v2519_5(void) = ^IndirectReadSideEffect[-1] : &:r2519_1, ~m? -# 2519| mu2519_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2519_1 -# 2519| r2519_7(bool) = Constant[0] : -# 2519| v2519_8(void) = ConditionalBranch : r2519_7 +# 35| Block 834 +# 35| r35_11663(glval) = VariableAddress[x833] : +# 35| mu35_11664(String) = Uninitialized[x833] : &:r35_11663 +# 35| r35_11665(glval) = FunctionAddress[String] : +# 35| v35_11666(void) = Call[String] : func:r35_11665, this:r35_11663 +# 35| mu35_11667(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11668(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11663 +# 35| r35_11669(glval) = VariableAddress[x833] : +# 35| r35_11670(glval) = FunctionAddress[~String] : +# 35| v35_11671(void) = Call[~String] : func:r35_11670, this:r35_11669 +# 35| mu35_11672(unknown) = ^CallSideEffect : ~m? +# 35| v35_11673(void) = ^IndirectReadSideEffect[-1] : &:r35_11669, ~m? +# 35| mu35_11674(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11669 +# 35| r35_11675(bool) = Constant[0] : +# 35| v35_11676(void) = ConditionalBranch : r35_11675 #-----| False -> Block 835 #-----| True (back edge) -> Block 834 -# 2521| Block 835 -# 2521| r2521_1(glval) = VariableAddress[x834] : -# 2521| mu2521_2(String) = Uninitialized[x834] : &:r2521_1 -# 2521| r2521_3(glval) = FunctionAddress[String] : -# 2521| v2521_4(void) = Call[String] : func:r2521_3, this:r2521_1 -# 2521| mu2521_5(unknown) = ^CallSideEffect : ~m? -# 2521| mu2521_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2521_1 -# 2522| r2522_1(glval) = VariableAddress[x834] : -# 2522| r2522_2(glval) = FunctionAddress[~String] : -# 2522| v2522_3(void) = Call[~String] : func:r2522_2, this:r2522_1 -# 2522| mu2522_4(unknown) = ^CallSideEffect : ~m? -# 2522| v2522_5(void) = ^IndirectReadSideEffect[-1] : &:r2522_1, ~m? -# 2522| mu2522_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2522_1 -# 2522| r2522_7(bool) = Constant[0] : -# 2522| v2522_8(void) = ConditionalBranch : r2522_7 +# 35| Block 835 +# 35| r35_11677(glval) = VariableAddress[x834] : +# 35| mu35_11678(String) = Uninitialized[x834] : &:r35_11677 +# 35| r35_11679(glval) = FunctionAddress[String] : +# 35| v35_11680(void) = Call[String] : func:r35_11679, this:r35_11677 +# 35| mu35_11681(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11682(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11677 +# 35| r35_11683(glval) = VariableAddress[x834] : +# 35| r35_11684(glval) = FunctionAddress[~String] : +# 35| v35_11685(void) = Call[~String] : func:r35_11684, this:r35_11683 +# 35| mu35_11686(unknown) = ^CallSideEffect : ~m? +# 35| v35_11687(void) = ^IndirectReadSideEffect[-1] : &:r35_11683, ~m? +# 35| mu35_11688(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11683 +# 35| r35_11689(bool) = Constant[0] : +# 35| v35_11690(void) = ConditionalBranch : r35_11689 #-----| False -> Block 836 #-----| True (back edge) -> Block 835 -# 2524| Block 836 -# 2524| r2524_1(glval) = VariableAddress[x835] : -# 2524| mu2524_2(String) = Uninitialized[x835] : &:r2524_1 -# 2524| r2524_3(glval) = FunctionAddress[String] : -# 2524| v2524_4(void) = Call[String] : func:r2524_3, this:r2524_1 -# 2524| mu2524_5(unknown) = ^CallSideEffect : ~m? -# 2524| mu2524_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2524_1 -# 2525| r2525_1(glval) = VariableAddress[x835] : -# 2525| r2525_2(glval) = FunctionAddress[~String] : -# 2525| v2525_3(void) = Call[~String] : func:r2525_2, this:r2525_1 -# 2525| mu2525_4(unknown) = ^CallSideEffect : ~m? -# 2525| v2525_5(void) = ^IndirectReadSideEffect[-1] : &:r2525_1, ~m? -# 2525| mu2525_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2525_1 -# 2525| r2525_7(bool) = Constant[0] : -# 2525| v2525_8(void) = ConditionalBranch : r2525_7 +# 35| Block 836 +# 35| r35_11691(glval) = VariableAddress[x835] : +# 35| mu35_11692(String) = Uninitialized[x835] : &:r35_11691 +# 35| r35_11693(glval) = FunctionAddress[String] : +# 35| v35_11694(void) = Call[String] : func:r35_11693, this:r35_11691 +# 35| mu35_11695(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11696(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11691 +# 35| r35_11697(glval) = VariableAddress[x835] : +# 35| r35_11698(glval) = FunctionAddress[~String] : +# 35| v35_11699(void) = Call[~String] : func:r35_11698, this:r35_11697 +# 35| mu35_11700(unknown) = ^CallSideEffect : ~m? +# 35| v35_11701(void) = ^IndirectReadSideEffect[-1] : &:r35_11697, ~m? +# 35| mu35_11702(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11697 +# 35| r35_11703(bool) = Constant[0] : +# 35| v35_11704(void) = ConditionalBranch : r35_11703 #-----| False -> Block 837 #-----| True (back edge) -> Block 836 -# 2527| Block 837 -# 2527| r2527_1(glval) = VariableAddress[x836] : -# 2527| mu2527_2(String) = Uninitialized[x836] : &:r2527_1 -# 2527| r2527_3(glval) = FunctionAddress[String] : -# 2527| v2527_4(void) = Call[String] : func:r2527_3, this:r2527_1 -# 2527| mu2527_5(unknown) = ^CallSideEffect : ~m? -# 2527| mu2527_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2527_1 -# 2528| r2528_1(glval) = VariableAddress[x836] : -# 2528| r2528_2(glval) = FunctionAddress[~String] : -# 2528| v2528_3(void) = Call[~String] : func:r2528_2, this:r2528_1 -# 2528| mu2528_4(unknown) = ^CallSideEffect : ~m? -# 2528| v2528_5(void) = ^IndirectReadSideEffect[-1] : &:r2528_1, ~m? -# 2528| mu2528_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2528_1 -# 2528| r2528_7(bool) = Constant[0] : -# 2528| v2528_8(void) = ConditionalBranch : r2528_7 +# 35| Block 837 +# 35| r35_11705(glval) = VariableAddress[x836] : +# 35| mu35_11706(String) = Uninitialized[x836] : &:r35_11705 +# 35| r35_11707(glval) = FunctionAddress[String] : +# 35| v35_11708(void) = Call[String] : func:r35_11707, this:r35_11705 +# 35| mu35_11709(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11710(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11705 +# 35| r35_11711(glval) = VariableAddress[x836] : +# 35| r35_11712(glval) = FunctionAddress[~String] : +# 35| v35_11713(void) = Call[~String] : func:r35_11712, this:r35_11711 +# 35| mu35_11714(unknown) = ^CallSideEffect : ~m? +# 35| v35_11715(void) = ^IndirectReadSideEffect[-1] : &:r35_11711, ~m? +# 35| mu35_11716(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11711 +# 35| r35_11717(bool) = Constant[0] : +# 35| v35_11718(void) = ConditionalBranch : r35_11717 #-----| False -> Block 838 #-----| True (back edge) -> Block 837 -# 2530| Block 838 -# 2530| r2530_1(glval) = VariableAddress[x837] : -# 2530| mu2530_2(String) = Uninitialized[x837] : &:r2530_1 -# 2530| r2530_3(glval) = FunctionAddress[String] : -# 2530| v2530_4(void) = Call[String] : func:r2530_3, this:r2530_1 -# 2530| mu2530_5(unknown) = ^CallSideEffect : ~m? -# 2530| mu2530_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2530_1 -# 2531| r2531_1(glval) = VariableAddress[x837] : -# 2531| r2531_2(glval) = FunctionAddress[~String] : -# 2531| v2531_3(void) = Call[~String] : func:r2531_2, this:r2531_1 -# 2531| mu2531_4(unknown) = ^CallSideEffect : ~m? -# 2531| v2531_5(void) = ^IndirectReadSideEffect[-1] : &:r2531_1, ~m? -# 2531| mu2531_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2531_1 -# 2531| r2531_7(bool) = Constant[0] : -# 2531| v2531_8(void) = ConditionalBranch : r2531_7 +# 35| Block 838 +# 35| r35_11719(glval) = VariableAddress[x837] : +# 35| mu35_11720(String) = Uninitialized[x837] : &:r35_11719 +# 35| r35_11721(glval) = FunctionAddress[String] : +# 35| v35_11722(void) = Call[String] : func:r35_11721, this:r35_11719 +# 35| mu35_11723(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11724(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11719 +# 35| r35_11725(glval) = VariableAddress[x837] : +# 35| r35_11726(glval) = FunctionAddress[~String] : +# 35| v35_11727(void) = Call[~String] : func:r35_11726, this:r35_11725 +# 35| mu35_11728(unknown) = ^CallSideEffect : ~m? +# 35| v35_11729(void) = ^IndirectReadSideEffect[-1] : &:r35_11725, ~m? +# 35| mu35_11730(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11725 +# 35| r35_11731(bool) = Constant[0] : +# 35| v35_11732(void) = ConditionalBranch : r35_11731 #-----| False -> Block 839 #-----| True (back edge) -> Block 838 -# 2533| Block 839 -# 2533| r2533_1(glval) = VariableAddress[x838] : -# 2533| mu2533_2(String) = Uninitialized[x838] : &:r2533_1 -# 2533| r2533_3(glval) = FunctionAddress[String] : -# 2533| v2533_4(void) = Call[String] : func:r2533_3, this:r2533_1 -# 2533| mu2533_5(unknown) = ^CallSideEffect : ~m? -# 2533| mu2533_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2533_1 -# 2534| r2534_1(glval) = VariableAddress[x838] : -# 2534| r2534_2(glval) = FunctionAddress[~String] : -# 2534| v2534_3(void) = Call[~String] : func:r2534_2, this:r2534_1 -# 2534| mu2534_4(unknown) = ^CallSideEffect : ~m? -# 2534| v2534_5(void) = ^IndirectReadSideEffect[-1] : &:r2534_1, ~m? -# 2534| mu2534_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2534_1 -# 2534| r2534_7(bool) = Constant[0] : -# 2534| v2534_8(void) = ConditionalBranch : r2534_7 +# 35| Block 839 +# 35| r35_11733(glval) = VariableAddress[x838] : +# 35| mu35_11734(String) = Uninitialized[x838] : &:r35_11733 +# 35| r35_11735(glval) = FunctionAddress[String] : +# 35| v35_11736(void) = Call[String] : func:r35_11735, this:r35_11733 +# 35| mu35_11737(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11738(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11733 +# 35| r35_11739(glval) = VariableAddress[x838] : +# 35| r35_11740(glval) = FunctionAddress[~String] : +# 35| v35_11741(void) = Call[~String] : func:r35_11740, this:r35_11739 +# 35| mu35_11742(unknown) = ^CallSideEffect : ~m? +# 35| v35_11743(void) = ^IndirectReadSideEffect[-1] : &:r35_11739, ~m? +# 35| mu35_11744(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11739 +# 35| r35_11745(bool) = Constant[0] : +# 35| v35_11746(void) = ConditionalBranch : r35_11745 #-----| False -> Block 840 #-----| True (back edge) -> Block 839 -# 2536| Block 840 -# 2536| r2536_1(glval) = VariableAddress[x839] : -# 2536| mu2536_2(String) = Uninitialized[x839] : &:r2536_1 -# 2536| r2536_3(glval) = FunctionAddress[String] : -# 2536| v2536_4(void) = Call[String] : func:r2536_3, this:r2536_1 -# 2536| mu2536_5(unknown) = ^CallSideEffect : ~m? -# 2536| mu2536_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2536_1 -# 2537| r2537_1(glval) = VariableAddress[x839] : -# 2537| r2537_2(glval) = FunctionAddress[~String] : -# 2537| v2537_3(void) = Call[~String] : func:r2537_2, this:r2537_1 -# 2537| mu2537_4(unknown) = ^CallSideEffect : ~m? -# 2537| v2537_5(void) = ^IndirectReadSideEffect[-1] : &:r2537_1, ~m? -# 2537| mu2537_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2537_1 -# 2537| r2537_7(bool) = Constant[0] : -# 2537| v2537_8(void) = ConditionalBranch : r2537_7 +# 35| Block 840 +# 35| r35_11747(glval) = VariableAddress[x839] : +# 35| mu35_11748(String) = Uninitialized[x839] : &:r35_11747 +# 35| r35_11749(glval) = FunctionAddress[String] : +# 35| v35_11750(void) = Call[String] : func:r35_11749, this:r35_11747 +# 35| mu35_11751(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11752(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11747 +# 35| r35_11753(glval) = VariableAddress[x839] : +# 35| r35_11754(glval) = FunctionAddress[~String] : +# 35| v35_11755(void) = Call[~String] : func:r35_11754, this:r35_11753 +# 35| mu35_11756(unknown) = ^CallSideEffect : ~m? +# 35| v35_11757(void) = ^IndirectReadSideEffect[-1] : &:r35_11753, ~m? +# 35| mu35_11758(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11753 +# 35| r35_11759(bool) = Constant[0] : +# 35| v35_11760(void) = ConditionalBranch : r35_11759 #-----| False -> Block 841 #-----| True (back edge) -> Block 840 -# 2539| Block 841 -# 2539| r2539_1(glval) = VariableAddress[x840] : -# 2539| mu2539_2(String) = Uninitialized[x840] : &:r2539_1 -# 2539| r2539_3(glval) = FunctionAddress[String] : -# 2539| v2539_4(void) = Call[String] : func:r2539_3, this:r2539_1 -# 2539| mu2539_5(unknown) = ^CallSideEffect : ~m? -# 2539| mu2539_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2539_1 -# 2540| r2540_1(glval) = VariableAddress[x840] : -# 2540| r2540_2(glval) = FunctionAddress[~String] : -# 2540| v2540_3(void) = Call[~String] : func:r2540_2, this:r2540_1 -# 2540| mu2540_4(unknown) = ^CallSideEffect : ~m? -# 2540| v2540_5(void) = ^IndirectReadSideEffect[-1] : &:r2540_1, ~m? -# 2540| mu2540_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2540_1 -# 2540| r2540_7(bool) = Constant[0] : -# 2540| v2540_8(void) = ConditionalBranch : r2540_7 +# 35| Block 841 +# 35| r35_11761(glval) = VariableAddress[x840] : +# 35| mu35_11762(String) = Uninitialized[x840] : &:r35_11761 +# 35| r35_11763(glval) = FunctionAddress[String] : +# 35| v35_11764(void) = Call[String] : func:r35_11763, this:r35_11761 +# 35| mu35_11765(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11766(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11761 +# 35| r35_11767(glval) = VariableAddress[x840] : +# 35| r35_11768(glval) = FunctionAddress[~String] : +# 35| v35_11769(void) = Call[~String] : func:r35_11768, this:r35_11767 +# 35| mu35_11770(unknown) = ^CallSideEffect : ~m? +# 35| v35_11771(void) = ^IndirectReadSideEffect[-1] : &:r35_11767, ~m? +# 35| mu35_11772(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11767 +# 35| r35_11773(bool) = Constant[0] : +# 35| v35_11774(void) = ConditionalBranch : r35_11773 #-----| False -> Block 842 #-----| True (back edge) -> Block 841 -# 2542| Block 842 -# 2542| r2542_1(glval) = VariableAddress[x841] : -# 2542| mu2542_2(String) = Uninitialized[x841] : &:r2542_1 -# 2542| r2542_3(glval) = FunctionAddress[String] : -# 2542| v2542_4(void) = Call[String] : func:r2542_3, this:r2542_1 -# 2542| mu2542_5(unknown) = ^CallSideEffect : ~m? -# 2542| mu2542_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2542_1 -# 2543| r2543_1(glval) = VariableAddress[x841] : -# 2543| r2543_2(glval) = FunctionAddress[~String] : -# 2543| v2543_3(void) = Call[~String] : func:r2543_2, this:r2543_1 -# 2543| mu2543_4(unknown) = ^CallSideEffect : ~m? -# 2543| v2543_5(void) = ^IndirectReadSideEffect[-1] : &:r2543_1, ~m? -# 2543| mu2543_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2543_1 -# 2543| r2543_7(bool) = Constant[0] : -# 2543| v2543_8(void) = ConditionalBranch : r2543_7 +# 35| Block 842 +# 35| r35_11775(glval) = VariableAddress[x841] : +# 35| mu35_11776(String) = Uninitialized[x841] : &:r35_11775 +# 35| r35_11777(glval) = FunctionAddress[String] : +# 35| v35_11778(void) = Call[String] : func:r35_11777, this:r35_11775 +# 35| mu35_11779(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11780(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11775 +# 35| r35_11781(glval) = VariableAddress[x841] : +# 35| r35_11782(glval) = FunctionAddress[~String] : +# 35| v35_11783(void) = Call[~String] : func:r35_11782, this:r35_11781 +# 35| mu35_11784(unknown) = ^CallSideEffect : ~m? +# 35| v35_11785(void) = ^IndirectReadSideEffect[-1] : &:r35_11781, ~m? +# 35| mu35_11786(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11781 +# 35| r35_11787(bool) = Constant[0] : +# 35| v35_11788(void) = ConditionalBranch : r35_11787 #-----| False -> Block 843 #-----| True (back edge) -> Block 842 -# 2545| Block 843 -# 2545| r2545_1(glval) = VariableAddress[x842] : -# 2545| mu2545_2(String) = Uninitialized[x842] : &:r2545_1 -# 2545| r2545_3(glval) = FunctionAddress[String] : -# 2545| v2545_4(void) = Call[String] : func:r2545_3, this:r2545_1 -# 2545| mu2545_5(unknown) = ^CallSideEffect : ~m? -# 2545| mu2545_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2545_1 -# 2546| r2546_1(glval) = VariableAddress[x842] : -# 2546| r2546_2(glval) = FunctionAddress[~String] : -# 2546| v2546_3(void) = Call[~String] : func:r2546_2, this:r2546_1 -# 2546| mu2546_4(unknown) = ^CallSideEffect : ~m? -# 2546| v2546_5(void) = ^IndirectReadSideEffect[-1] : &:r2546_1, ~m? -# 2546| mu2546_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2546_1 -# 2546| r2546_7(bool) = Constant[0] : -# 2546| v2546_8(void) = ConditionalBranch : r2546_7 +# 35| Block 843 +# 35| r35_11789(glval) = VariableAddress[x842] : +# 35| mu35_11790(String) = Uninitialized[x842] : &:r35_11789 +# 35| r35_11791(glval) = FunctionAddress[String] : +# 35| v35_11792(void) = Call[String] : func:r35_11791, this:r35_11789 +# 35| mu35_11793(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11794(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11789 +# 35| r35_11795(glval) = VariableAddress[x842] : +# 35| r35_11796(glval) = FunctionAddress[~String] : +# 35| v35_11797(void) = Call[~String] : func:r35_11796, this:r35_11795 +# 35| mu35_11798(unknown) = ^CallSideEffect : ~m? +# 35| v35_11799(void) = ^IndirectReadSideEffect[-1] : &:r35_11795, ~m? +# 35| mu35_11800(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11795 +# 35| r35_11801(bool) = Constant[0] : +# 35| v35_11802(void) = ConditionalBranch : r35_11801 #-----| False -> Block 844 #-----| True (back edge) -> Block 843 -# 2548| Block 844 -# 2548| r2548_1(glval) = VariableAddress[x843] : -# 2548| mu2548_2(String) = Uninitialized[x843] : &:r2548_1 -# 2548| r2548_3(glval) = FunctionAddress[String] : -# 2548| v2548_4(void) = Call[String] : func:r2548_3, this:r2548_1 -# 2548| mu2548_5(unknown) = ^CallSideEffect : ~m? -# 2548| mu2548_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2548_1 -# 2549| r2549_1(glval) = VariableAddress[x843] : -# 2549| r2549_2(glval) = FunctionAddress[~String] : -# 2549| v2549_3(void) = Call[~String] : func:r2549_2, this:r2549_1 -# 2549| mu2549_4(unknown) = ^CallSideEffect : ~m? -# 2549| v2549_5(void) = ^IndirectReadSideEffect[-1] : &:r2549_1, ~m? -# 2549| mu2549_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2549_1 -# 2549| r2549_7(bool) = Constant[0] : -# 2549| v2549_8(void) = ConditionalBranch : r2549_7 +# 35| Block 844 +# 35| r35_11803(glval) = VariableAddress[x843] : +# 35| mu35_11804(String) = Uninitialized[x843] : &:r35_11803 +# 35| r35_11805(glval) = FunctionAddress[String] : +# 35| v35_11806(void) = Call[String] : func:r35_11805, this:r35_11803 +# 35| mu35_11807(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11808(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11803 +# 35| r35_11809(glval) = VariableAddress[x843] : +# 35| r35_11810(glval) = FunctionAddress[~String] : +# 35| v35_11811(void) = Call[~String] : func:r35_11810, this:r35_11809 +# 35| mu35_11812(unknown) = ^CallSideEffect : ~m? +# 35| v35_11813(void) = ^IndirectReadSideEffect[-1] : &:r35_11809, ~m? +# 35| mu35_11814(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11809 +# 35| r35_11815(bool) = Constant[0] : +# 35| v35_11816(void) = ConditionalBranch : r35_11815 #-----| False -> Block 845 #-----| True (back edge) -> Block 844 -# 2551| Block 845 -# 2551| r2551_1(glval) = VariableAddress[x844] : -# 2551| mu2551_2(String) = Uninitialized[x844] : &:r2551_1 -# 2551| r2551_3(glval) = FunctionAddress[String] : -# 2551| v2551_4(void) = Call[String] : func:r2551_3, this:r2551_1 -# 2551| mu2551_5(unknown) = ^CallSideEffect : ~m? -# 2551| mu2551_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2551_1 -# 2552| r2552_1(glval) = VariableAddress[x844] : -# 2552| r2552_2(glval) = FunctionAddress[~String] : -# 2552| v2552_3(void) = Call[~String] : func:r2552_2, this:r2552_1 -# 2552| mu2552_4(unknown) = ^CallSideEffect : ~m? -# 2552| v2552_5(void) = ^IndirectReadSideEffect[-1] : &:r2552_1, ~m? -# 2552| mu2552_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2552_1 -# 2552| r2552_7(bool) = Constant[0] : -# 2552| v2552_8(void) = ConditionalBranch : r2552_7 +# 35| Block 845 +# 35| r35_11817(glval) = VariableAddress[x844] : +# 35| mu35_11818(String) = Uninitialized[x844] : &:r35_11817 +# 35| r35_11819(glval) = FunctionAddress[String] : +# 35| v35_11820(void) = Call[String] : func:r35_11819, this:r35_11817 +# 35| mu35_11821(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11822(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11817 +# 35| r35_11823(glval) = VariableAddress[x844] : +# 35| r35_11824(glval) = FunctionAddress[~String] : +# 35| v35_11825(void) = Call[~String] : func:r35_11824, this:r35_11823 +# 35| mu35_11826(unknown) = ^CallSideEffect : ~m? +# 35| v35_11827(void) = ^IndirectReadSideEffect[-1] : &:r35_11823, ~m? +# 35| mu35_11828(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11823 +# 35| r35_11829(bool) = Constant[0] : +# 35| v35_11830(void) = ConditionalBranch : r35_11829 #-----| False -> Block 846 #-----| True (back edge) -> Block 845 -# 2554| Block 846 -# 2554| r2554_1(glval) = VariableAddress[x845] : -# 2554| mu2554_2(String) = Uninitialized[x845] : &:r2554_1 -# 2554| r2554_3(glval) = FunctionAddress[String] : -# 2554| v2554_4(void) = Call[String] : func:r2554_3, this:r2554_1 -# 2554| mu2554_5(unknown) = ^CallSideEffect : ~m? -# 2554| mu2554_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2554_1 -# 2555| r2555_1(glval) = VariableAddress[x845] : -# 2555| r2555_2(glval) = FunctionAddress[~String] : -# 2555| v2555_3(void) = Call[~String] : func:r2555_2, this:r2555_1 -# 2555| mu2555_4(unknown) = ^CallSideEffect : ~m? -# 2555| v2555_5(void) = ^IndirectReadSideEffect[-1] : &:r2555_1, ~m? -# 2555| mu2555_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2555_1 -# 2555| r2555_7(bool) = Constant[0] : -# 2555| v2555_8(void) = ConditionalBranch : r2555_7 +# 35| Block 846 +# 35| r35_11831(glval) = VariableAddress[x845] : +# 35| mu35_11832(String) = Uninitialized[x845] : &:r35_11831 +# 35| r35_11833(glval) = FunctionAddress[String] : +# 35| v35_11834(void) = Call[String] : func:r35_11833, this:r35_11831 +# 35| mu35_11835(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11836(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11831 +# 35| r35_11837(glval) = VariableAddress[x845] : +# 35| r35_11838(glval) = FunctionAddress[~String] : +# 35| v35_11839(void) = Call[~String] : func:r35_11838, this:r35_11837 +# 35| mu35_11840(unknown) = ^CallSideEffect : ~m? +# 35| v35_11841(void) = ^IndirectReadSideEffect[-1] : &:r35_11837, ~m? +# 35| mu35_11842(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11837 +# 35| r35_11843(bool) = Constant[0] : +# 35| v35_11844(void) = ConditionalBranch : r35_11843 #-----| False -> Block 847 #-----| True (back edge) -> Block 846 -# 2557| Block 847 -# 2557| r2557_1(glval) = VariableAddress[x846] : -# 2557| mu2557_2(String) = Uninitialized[x846] : &:r2557_1 -# 2557| r2557_3(glval) = FunctionAddress[String] : -# 2557| v2557_4(void) = Call[String] : func:r2557_3, this:r2557_1 -# 2557| mu2557_5(unknown) = ^CallSideEffect : ~m? -# 2557| mu2557_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2557_1 -# 2558| r2558_1(glval) = VariableAddress[x846] : -# 2558| r2558_2(glval) = FunctionAddress[~String] : -# 2558| v2558_3(void) = Call[~String] : func:r2558_2, this:r2558_1 -# 2558| mu2558_4(unknown) = ^CallSideEffect : ~m? -# 2558| v2558_5(void) = ^IndirectReadSideEffect[-1] : &:r2558_1, ~m? -# 2558| mu2558_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2558_1 -# 2558| r2558_7(bool) = Constant[0] : -# 2558| v2558_8(void) = ConditionalBranch : r2558_7 +# 35| Block 847 +# 35| r35_11845(glval) = VariableAddress[x846] : +# 35| mu35_11846(String) = Uninitialized[x846] : &:r35_11845 +# 35| r35_11847(glval) = FunctionAddress[String] : +# 35| v35_11848(void) = Call[String] : func:r35_11847, this:r35_11845 +# 35| mu35_11849(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11850(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11845 +# 35| r35_11851(glval) = VariableAddress[x846] : +# 35| r35_11852(glval) = FunctionAddress[~String] : +# 35| v35_11853(void) = Call[~String] : func:r35_11852, this:r35_11851 +# 35| mu35_11854(unknown) = ^CallSideEffect : ~m? +# 35| v35_11855(void) = ^IndirectReadSideEffect[-1] : &:r35_11851, ~m? +# 35| mu35_11856(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11851 +# 35| r35_11857(bool) = Constant[0] : +# 35| v35_11858(void) = ConditionalBranch : r35_11857 #-----| False -> Block 848 #-----| True (back edge) -> Block 847 -# 2560| Block 848 -# 2560| r2560_1(glval) = VariableAddress[x847] : -# 2560| mu2560_2(String) = Uninitialized[x847] : &:r2560_1 -# 2560| r2560_3(glval) = FunctionAddress[String] : -# 2560| v2560_4(void) = Call[String] : func:r2560_3, this:r2560_1 -# 2560| mu2560_5(unknown) = ^CallSideEffect : ~m? -# 2560| mu2560_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2560_1 -# 2561| r2561_1(glval) = VariableAddress[x847] : -# 2561| r2561_2(glval) = FunctionAddress[~String] : -# 2561| v2561_3(void) = Call[~String] : func:r2561_2, this:r2561_1 -# 2561| mu2561_4(unknown) = ^CallSideEffect : ~m? -# 2561| v2561_5(void) = ^IndirectReadSideEffect[-1] : &:r2561_1, ~m? -# 2561| mu2561_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2561_1 -# 2561| r2561_7(bool) = Constant[0] : -# 2561| v2561_8(void) = ConditionalBranch : r2561_7 +# 35| Block 848 +# 35| r35_11859(glval) = VariableAddress[x847] : +# 35| mu35_11860(String) = Uninitialized[x847] : &:r35_11859 +# 35| r35_11861(glval) = FunctionAddress[String] : +# 35| v35_11862(void) = Call[String] : func:r35_11861, this:r35_11859 +# 35| mu35_11863(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11864(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11859 +# 35| r35_11865(glval) = VariableAddress[x847] : +# 35| r35_11866(glval) = FunctionAddress[~String] : +# 35| v35_11867(void) = Call[~String] : func:r35_11866, this:r35_11865 +# 35| mu35_11868(unknown) = ^CallSideEffect : ~m? +# 35| v35_11869(void) = ^IndirectReadSideEffect[-1] : &:r35_11865, ~m? +# 35| mu35_11870(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11865 +# 35| r35_11871(bool) = Constant[0] : +# 35| v35_11872(void) = ConditionalBranch : r35_11871 #-----| False -> Block 849 #-----| True (back edge) -> Block 848 -# 2563| Block 849 -# 2563| r2563_1(glval) = VariableAddress[x848] : -# 2563| mu2563_2(String) = Uninitialized[x848] : &:r2563_1 -# 2563| r2563_3(glval) = FunctionAddress[String] : -# 2563| v2563_4(void) = Call[String] : func:r2563_3, this:r2563_1 -# 2563| mu2563_5(unknown) = ^CallSideEffect : ~m? -# 2563| mu2563_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2563_1 -# 2564| r2564_1(glval) = VariableAddress[x848] : -# 2564| r2564_2(glval) = FunctionAddress[~String] : -# 2564| v2564_3(void) = Call[~String] : func:r2564_2, this:r2564_1 -# 2564| mu2564_4(unknown) = ^CallSideEffect : ~m? -# 2564| v2564_5(void) = ^IndirectReadSideEffect[-1] : &:r2564_1, ~m? -# 2564| mu2564_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2564_1 -# 2564| r2564_7(bool) = Constant[0] : -# 2564| v2564_8(void) = ConditionalBranch : r2564_7 +# 35| Block 849 +# 35| r35_11873(glval) = VariableAddress[x848] : +# 35| mu35_11874(String) = Uninitialized[x848] : &:r35_11873 +# 35| r35_11875(glval) = FunctionAddress[String] : +# 35| v35_11876(void) = Call[String] : func:r35_11875, this:r35_11873 +# 35| mu35_11877(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11878(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11873 +# 35| r35_11879(glval) = VariableAddress[x848] : +# 35| r35_11880(glval) = FunctionAddress[~String] : +# 35| v35_11881(void) = Call[~String] : func:r35_11880, this:r35_11879 +# 35| mu35_11882(unknown) = ^CallSideEffect : ~m? +# 35| v35_11883(void) = ^IndirectReadSideEffect[-1] : &:r35_11879, ~m? +# 35| mu35_11884(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11879 +# 35| r35_11885(bool) = Constant[0] : +# 35| v35_11886(void) = ConditionalBranch : r35_11885 #-----| False -> Block 850 #-----| True (back edge) -> Block 849 -# 2566| Block 850 -# 2566| r2566_1(glval) = VariableAddress[x849] : -# 2566| mu2566_2(String) = Uninitialized[x849] : &:r2566_1 -# 2566| r2566_3(glval) = FunctionAddress[String] : -# 2566| v2566_4(void) = Call[String] : func:r2566_3, this:r2566_1 -# 2566| mu2566_5(unknown) = ^CallSideEffect : ~m? -# 2566| mu2566_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2566_1 -# 2567| r2567_1(glval) = VariableAddress[x849] : -# 2567| r2567_2(glval) = FunctionAddress[~String] : -# 2567| v2567_3(void) = Call[~String] : func:r2567_2, this:r2567_1 -# 2567| mu2567_4(unknown) = ^CallSideEffect : ~m? -# 2567| v2567_5(void) = ^IndirectReadSideEffect[-1] : &:r2567_1, ~m? -# 2567| mu2567_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2567_1 -# 2567| r2567_7(bool) = Constant[0] : -# 2567| v2567_8(void) = ConditionalBranch : r2567_7 +# 35| Block 850 +# 35| r35_11887(glval) = VariableAddress[x849] : +# 35| mu35_11888(String) = Uninitialized[x849] : &:r35_11887 +# 35| r35_11889(glval) = FunctionAddress[String] : +# 35| v35_11890(void) = Call[String] : func:r35_11889, this:r35_11887 +# 35| mu35_11891(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11892(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11887 +# 35| r35_11893(glval) = VariableAddress[x849] : +# 35| r35_11894(glval) = FunctionAddress[~String] : +# 35| v35_11895(void) = Call[~String] : func:r35_11894, this:r35_11893 +# 35| mu35_11896(unknown) = ^CallSideEffect : ~m? +# 35| v35_11897(void) = ^IndirectReadSideEffect[-1] : &:r35_11893, ~m? +# 35| mu35_11898(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11893 +# 35| r35_11899(bool) = Constant[0] : +# 35| v35_11900(void) = ConditionalBranch : r35_11899 #-----| False -> Block 851 #-----| True (back edge) -> Block 850 -# 2569| Block 851 -# 2569| r2569_1(glval) = VariableAddress[x850] : -# 2569| mu2569_2(String) = Uninitialized[x850] : &:r2569_1 -# 2569| r2569_3(glval) = FunctionAddress[String] : -# 2569| v2569_4(void) = Call[String] : func:r2569_3, this:r2569_1 -# 2569| mu2569_5(unknown) = ^CallSideEffect : ~m? -# 2569| mu2569_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2569_1 -# 2570| r2570_1(glval) = VariableAddress[x850] : -# 2570| r2570_2(glval) = FunctionAddress[~String] : -# 2570| v2570_3(void) = Call[~String] : func:r2570_2, this:r2570_1 -# 2570| mu2570_4(unknown) = ^CallSideEffect : ~m? -# 2570| v2570_5(void) = ^IndirectReadSideEffect[-1] : &:r2570_1, ~m? -# 2570| mu2570_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2570_1 -# 2570| r2570_7(bool) = Constant[0] : -# 2570| v2570_8(void) = ConditionalBranch : r2570_7 +# 35| Block 851 +# 35| r35_11901(glval) = VariableAddress[x850] : +# 35| mu35_11902(String) = Uninitialized[x850] : &:r35_11901 +# 35| r35_11903(glval) = FunctionAddress[String] : +# 35| v35_11904(void) = Call[String] : func:r35_11903, this:r35_11901 +# 35| mu35_11905(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11906(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11901 +# 35| r35_11907(glval) = VariableAddress[x850] : +# 35| r35_11908(glval) = FunctionAddress[~String] : +# 35| v35_11909(void) = Call[~String] : func:r35_11908, this:r35_11907 +# 35| mu35_11910(unknown) = ^CallSideEffect : ~m? +# 35| v35_11911(void) = ^IndirectReadSideEffect[-1] : &:r35_11907, ~m? +# 35| mu35_11912(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11907 +# 35| r35_11913(bool) = Constant[0] : +# 35| v35_11914(void) = ConditionalBranch : r35_11913 #-----| False -> Block 852 #-----| True (back edge) -> Block 851 -# 2572| Block 852 -# 2572| r2572_1(glval) = VariableAddress[x851] : -# 2572| mu2572_2(String) = Uninitialized[x851] : &:r2572_1 -# 2572| r2572_3(glval) = FunctionAddress[String] : -# 2572| v2572_4(void) = Call[String] : func:r2572_3, this:r2572_1 -# 2572| mu2572_5(unknown) = ^CallSideEffect : ~m? -# 2572| mu2572_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2572_1 -# 2573| r2573_1(glval) = VariableAddress[x851] : -# 2573| r2573_2(glval) = FunctionAddress[~String] : -# 2573| v2573_3(void) = Call[~String] : func:r2573_2, this:r2573_1 -# 2573| mu2573_4(unknown) = ^CallSideEffect : ~m? -# 2573| v2573_5(void) = ^IndirectReadSideEffect[-1] : &:r2573_1, ~m? -# 2573| mu2573_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2573_1 -# 2573| r2573_7(bool) = Constant[0] : -# 2573| v2573_8(void) = ConditionalBranch : r2573_7 +# 35| Block 852 +# 35| r35_11915(glval) = VariableAddress[x851] : +# 35| mu35_11916(String) = Uninitialized[x851] : &:r35_11915 +# 35| r35_11917(glval) = FunctionAddress[String] : +# 35| v35_11918(void) = Call[String] : func:r35_11917, this:r35_11915 +# 35| mu35_11919(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11920(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11915 +# 35| r35_11921(glval) = VariableAddress[x851] : +# 35| r35_11922(glval) = FunctionAddress[~String] : +# 35| v35_11923(void) = Call[~String] : func:r35_11922, this:r35_11921 +# 35| mu35_11924(unknown) = ^CallSideEffect : ~m? +# 35| v35_11925(void) = ^IndirectReadSideEffect[-1] : &:r35_11921, ~m? +# 35| mu35_11926(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11921 +# 35| r35_11927(bool) = Constant[0] : +# 35| v35_11928(void) = ConditionalBranch : r35_11927 #-----| False -> Block 853 #-----| True (back edge) -> Block 852 -# 2575| Block 853 -# 2575| r2575_1(glval) = VariableAddress[x852] : -# 2575| mu2575_2(String) = Uninitialized[x852] : &:r2575_1 -# 2575| r2575_3(glval) = FunctionAddress[String] : -# 2575| v2575_4(void) = Call[String] : func:r2575_3, this:r2575_1 -# 2575| mu2575_5(unknown) = ^CallSideEffect : ~m? -# 2575| mu2575_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2575_1 -# 2576| r2576_1(glval) = VariableAddress[x852] : -# 2576| r2576_2(glval) = FunctionAddress[~String] : -# 2576| v2576_3(void) = Call[~String] : func:r2576_2, this:r2576_1 -# 2576| mu2576_4(unknown) = ^CallSideEffect : ~m? -# 2576| v2576_5(void) = ^IndirectReadSideEffect[-1] : &:r2576_1, ~m? -# 2576| mu2576_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2576_1 -# 2576| r2576_7(bool) = Constant[0] : -# 2576| v2576_8(void) = ConditionalBranch : r2576_7 +# 35| Block 853 +# 35| r35_11929(glval) = VariableAddress[x852] : +# 35| mu35_11930(String) = Uninitialized[x852] : &:r35_11929 +# 35| r35_11931(glval) = FunctionAddress[String] : +# 35| v35_11932(void) = Call[String] : func:r35_11931, this:r35_11929 +# 35| mu35_11933(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11934(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11929 +# 35| r35_11935(glval) = VariableAddress[x852] : +# 35| r35_11936(glval) = FunctionAddress[~String] : +# 35| v35_11937(void) = Call[~String] : func:r35_11936, this:r35_11935 +# 35| mu35_11938(unknown) = ^CallSideEffect : ~m? +# 35| v35_11939(void) = ^IndirectReadSideEffect[-1] : &:r35_11935, ~m? +# 35| mu35_11940(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11935 +# 35| r35_11941(bool) = Constant[0] : +# 35| v35_11942(void) = ConditionalBranch : r35_11941 #-----| False -> Block 854 #-----| True (back edge) -> Block 853 -# 2578| Block 854 -# 2578| r2578_1(glval) = VariableAddress[x853] : -# 2578| mu2578_2(String) = Uninitialized[x853] : &:r2578_1 -# 2578| r2578_3(glval) = FunctionAddress[String] : -# 2578| v2578_4(void) = Call[String] : func:r2578_3, this:r2578_1 -# 2578| mu2578_5(unknown) = ^CallSideEffect : ~m? -# 2578| mu2578_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2578_1 -# 2579| r2579_1(glval) = VariableAddress[x853] : -# 2579| r2579_2(glval) = FunctionAddress[~String] : -# 2579| v2579_3(void) = Call[~String] : func:r2579_2, this:r2579_1 -# 2579| mu2579_4(unknown) = ^CallSideEffect : ~m? -# 2579| v2579_5(void) = ^IndirectReadSideEffect[-1] : &:r2579_1, ~m? -# 2579| mu2579_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2579_1 -# 2579| r2579_7(bool) = Constant[0] : -# 2579| v2579_8(void) = ConditionalBranch : r2579_7 +# 35| Block 854 +# 35| r35_11943(glval) = VariableAddress[x853] : +# 35| mu35_11944(String) = Uninitialized[x853] : &:r35_11943 +# 35| r35_11945(glval) = FunctionAddress[String] : +# 35| v35_11946(void) = Call[String] : func:r35_11945, this:r35_11943 +# 35| mu35_11947(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11948(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11943 +# 35| r35_11949(glval) = VariableAddress[x853] : +# 35| r35_11950(glval) = FunctionAddress[~String] : +# 35| v35_11951(void) = Call[~String] : func:r35_11950, this:r35_11949 +# 35| mu35_11952(unknown) = ^CallSideEffect : ~m? +# 35| v35_11953(void) = ^IndirectReadSideEffect[-1] : &:r35_11949, ~m? +# 35| mu35_11954(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11949 +# 35| r35_11955(bool) = Constant[0] : +# 35| v35_11956(void) = ConditionalBranch : r35_11955 #-----| False -> Block 855 #-----| True (back edge) -> Block 854 -# 2581| Block 855 -# 2581| r2581_1(glval) = VariableAddress[x854] : -# 2581| mu2581_2(String) = Uninitialized[x854] : &:r2581_1 -# 2581| r2581_3(glval) = FunctionAddress[String] : -# 2581| v2581_4(void) = Call[String] : func:r2581_3, this:r2581_1 -# 2581| mu2581_5(unknown) = ^CallSideEffect : ~m? -# 2581| mu2581_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2581_1 -# 2582| r2582_1(glval) = VariableAddress[x854] : -# 2582| r2582_2(glval) = FunctionAddress[~String] : -# 2582| v2582_3(void) = Call[~String] : func:r2582_2, this:r2582_1 -# 2582| mu2582_4(unknown) = ^CallSideEffect : ~m? -# 2582| v2582_5(void) = ^IndirectReadSideEffect[-1] : &:r2582_1, ~m? -# 2582| mu2582_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2582_1 -# 2582| r2582_7(bool) = Constant[0] : -# 2582| v2582_8(void) = ConditionalBranch : r2582_7 +# 35| Block 855 +# 35| r35_11957(glval) = VariableAddress[x854] : +# 35| mu35_11958(String) = Uninitialized[x854] : &:r35_11957 +# 35| r35_11959(glval) = FunctionAddress[String] : +# 35| v35_11960(void) = Call[String] : func:r35_11959, this:r35_11957 +# 35| mu35_11961(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11962(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11957 +# 35| r35_11963(glval) = VariableAddress[x854] : +# 35| r35_11964(glval) = FunctionAddress[~String] : +# 35| v35_11965(void) = Call[~String] : func:r35_11964, this:r35_11963 +# 35| mu35_11966(unknown) = ^CallSideEffect : ~m? +# 35| v35_11967(void) = ^IndirectReadSideEffect[-1] : &:r35_11963, ~m? +# 35| mu35_11968(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11963 +# 35| r35_11969(bool) = Constant[0] : +# 35| v35_11970(void) = ConditionalBranch : r35_11969 #-----| False -> Block 856 #-----| True (back edge) -> Block 855 -# 2584| Block 856 -# 2584| r2584_1(glval) = VariableAddress[x855] : -# 2584| mu2584_2(String) = Uninitialized[x855] : &:r2584_1 -# 2584| r2584_3(glval) = FunctionAddress[String] : -# 2584| v2584_4(void) = Call[String] : func:r2584_3, this:r2584_1 -# 2584| mu2584_5(unknown) = ^CallSideEffect : ~m? -# 2584| mu2584_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2584_1 -# 2585| r2585_1(glval) = VariableAddress[x855] : -# 2585| r2585_2(glval) = FunctionAddress[~String] : -# 2585| v2585_3(void) = Call[~String] : func:r2585_2, this:r2585_1 -# 2585| mu2585_4(unknown) = ^CallSideEffect : ~m? -# 2585| v2585_5(void) = ^IndirectReadSideEffect[-1] : &:r2585_1, ~m? -# 2585| mu2585_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2585_1 -# 2585| r2585_7(bool) = Constant[0] : -# 2585| v2585_8(void) = ConditionalBranch : r2585_7 +# 35| Block 856 +# 35| r35_11971(glval) = VariableAddress[x855] : +# 35| mu35_11972(String) = Uninitialized[x855] : &:r35_11971 +# 35| r35_11973(glval) = FunctionAddress[String] : +# 35| v35_11974(void) = Call[String] : func:r35_11973, this:r35_11971 +# 35| mu35_11975(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11976(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11971 +# 35| r35_11977(glval) = VariableAddress[x855] : +# 35| r35_11978(glval) = FunctionAddress[~String] : +# 35| v35_11979(void) = Call[~String] : func:r35_11978, this:r35_11977 +# 35| mu35_11980(unknown) = ^CallSideEffect : ~m? +# 35| v35_11981(void) = ^IndirectReadSideEffect[-1] : &:r35_11977, ~m? +# 35| mu35_11982(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11977 +# 35| r35_11983(bool) = Constant[0] : +# 35| v35_11984(void) = ConditionalBranch : r35_11983 #-----| False -> Block 857 #-----| True (back edge) -> Block 856 -# 2587| Block 857 -# 2587| r2587_1(glval) = VariableAddress[x856] : -# 2587| mu2587_2(String) = Uninitialized[x856] : &:r2587_1 -# 2587| r2587_3(glval) = FunctionAddress[String] : -# 2587| v2587_4(void) = Call[String] : func:r2587_3, this:r2587_1 -# 2587| mu2587_5(unknown) = ^CallSideEffect : ~m? -# 2587| mu2587_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2587_1 -# 2588| r2588_1(glval) = VariableAddress[x856] : -# 2588| r2588_2(glval) = FunctionAddress[~String] : -# 2588| v2588_3(void) = Call[~String] : func:r2588_2, this:r2588_1 -# 2588| mu2588_4(unknown) = ^CallSideEffect : ~m? -# 2588| v2588_5(void) = ^IndirectReadSideEffect[-1] : &:r2588_1, ~m? -# 2588| mu2588_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2588_1 -# 2588| r2588_7(bool) = Constant[0] : -# 2588| v2588_8(void) = ConditionalBranch : r2588_7 +# 35| Block 857 +# 35| r35_11985(glval) = VariableAddress[x856] : +# 35| mu35_11986(String) = Uninitialized[x856] : &:r35_11985 +# 35| r35_11987(glval) = FunctionAddress[String] : +# 35| v35_11988(void) = Call[String] : func:r35_11987, this:r35_11985 +# 35| mu35_11989(unknown) = ^CallSideEffect : ~m? +# 35| mu35_11990(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11985 +# 35| r35_11991(glval) = VariableAddress[x856] : +# 35| r35_11992(glval) = FunctionAddress[~String] : +# 35| v35_11993(void) = Call[~String] : func:r35_11992, this:r35_11991 +# 35| mu35_11994(unknown) = ^CallSideEffect : ~m? +# 35| v35_11995(void) = ^IndirectReadSideEffect[-1] : &:r35_11991, ~m? +# 35| mu35_11996(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11991 +# 35| r35_11997(bool) = Constant[0] : +# 35| v35_11998(void) = ConditionalBranch : r35_11997 #-----| False -> Block 858 #-----| True (back edge) -> Block 857 -# 2590| Block 858 -# 2590| r2590_1(glval) = VariableAddress[x857] : -# 2590| mu2590_2(String) = Uninitialized[x857] : &:r2590_1 -# 2590| r2590_3(glval) = FunctionAddress[String] : -# 2590| v2590_4(void) = Call[String] : func:r2590_3, this:r2590_1 -# 2590| mu2590_5(unknown) = ^CallSideEffect : ~m? -# 2590| mu2590_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2590_1 -# 2591| r2591_1(glval) = VariableAddress[x857] : -# 2591| r2591_2(glval) = FunctionAddress[~String] : -# 2591| v2591_3(void) = Call[~String] : func:r2591_2, this:r2591_1 -# 2591| mu2591_4(unknown) = ^CallSideEffect : ~m? -# 2591| v2591_5(void) = ^IndirectReadSideEffect[-1] : &:r2591_1, ~m? -# 2591| mu2591_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2591_1 -# 2591| r2591_7(bool) = Constant[0] : -# 2591| v2591_8(void) = ConditionalBranch : r2591_7 +# 35| Block 858 +# 35| r35_11999(glval) = VariableAddress[x857] : +# 35| mu35_12000(String) = Uninitialized[x857] : &:r35_11999 +# 35| r35_12001(glval) = FunctionAddress[String] : +# 35| v35_12002(void) = Call[String] : func:r35_12001, this:r35_11999 +# 35| mu35_12003(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12004(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_11999 +# 35| r35_12005(glval) = VariableAddress[x857] : +# 35| r35_12006(glval) = FunctionAddress[~String] : +# 35| v35_12007(void) = Call[~String] : func:r35_12006, this:r35_12005 +# 35| mu35_12008(unknown) = ^CallSideEffect : ~m? +# 35| v35_12009(void) = ^IndirectReadSideEffect[-1] : &:r35_12005, ~m? +# 35| mu35_12010(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12005 +# 35| r35_12011(bool) = Constant[0] : +# 35| v35_12012(void) = ConditionalBranch : r35_12011 #-----| False -> Block 859 #-----| True (back edge) -> Block 858 -# 2593| Block 859 -# 2593| r2593_1(glval) = VariableAddress[x858] : -# 2593| mu2593_2(String) = Uninitialized[x858] : &:r2593_1 -# 2593| r2593_3(glval) = FunctionAddress[String] : -# 2593| v2593_4(void) = Call[String] : func:r2593_3, this:r2593_1 -# 2593| mu2593_5(unknown) = ^CallSideEffect : ~m? -# 2593| mu2593_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2593_1 -# 2594| r2594_1(glval) = VariableAddress[x858] : -# 2594| r2594_2(glval) = FunctionAddress[~String] : -# 2594| v2594_3(void) = Call[~String] : func:r2594_2, this:r2594_1 -# 2594| mu2594_4(unknown) = ^CallSideEffect : ~m? -# 2594| v2594_5(void) = ^IndirectReadSideEffect[-1] : &:r2594_1, ~m? -# 2594| mu2594_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2594_1 -# 2594| r2594_7(bool) = Constant[0] : -# 2594| v2594_8(void) = ConditionalBranch : r2594_7 +# 35| Block 859 +# 35| r35_12013(glval) = VariableAddress[x858] : +# 35| mu35_12014(String) = Uninitialized[x858] : &:r35_12013 +# 35| r35_12015(glval) = FunctionAddress[String] : +# 35| v35_12016(void) = Call[String] : func:r35_12015, this:r35_12013 +# 35| mu35_12017(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12018(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12013 +# 35| r35_12019(glval) = VariableAddress[x858] : +# 35| r35_12020(glval) = FunctionAddress[~String] : +# 35| v35_12021(void) = Call[~String] : func:r35_12020, this:r35_12019 +# 35| mu35_12022(unknown) = ^CallSideEffect : ~m? +# 35| v35_12023(void) = ^IndirectReadSideEffect[-1] : &:r35_12019, ~m? +# 35| mu35_12024(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12019 +# 35| r35_12025(bool) = Constant[0] : +# 35| v35_12026(void) = ConditionalBranch : r35_12025 #-----| False -> Block 860 #-----| True (back edge) -> Block 859 -# 2596| Block 860 -# 2596| r2596_1(glval) = VariableAddress[x859] : -# 2596| mu2596_2(String) = Uninitialized[x859] : &:r2596_1 -# 2596| r2596_3(glval) = FunctionAddress[String] : -# 2596| v2596_4(void) = Call[String] : func:r2596_3, this:r2596_1 -# 2596| mu2596_5(unknown) = ^CallSideEffect : ~m? -# 2596| mu2596_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2596_1 -# 2597| r2597_1(glval) = VariableAddress[x859] : -# 2597| r2597_2(glval) = FunctionAddress[~String] : -# 2597| v2597_3(void) = Call[~String] : func:r2597_2, this:r2597_1 -# 2597| mu2597_4(unknown) = ^CallSideEffect : ~m? -# 2597| v2597_5(void) = ^IndirectReadSideEffect[-1] : &:r2597_1, ~m? -# 2597| mu2597_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2597_1 -# 2597| r2597_7(bool) = Constant[0] : -# 2597| v2597_8(void) = ConditionalBranch : r2597_7 +# 35| Block 860 +# 35| r35_12027(glval) = VariableAddress[x859] : +# 35| mu35_12028(String) = Uninitialized[x859] : &:r35_12027 +# 35| r35_12029(glval) = FunctionAddress[String] : +# 35| v35_12030(void) = Call[String] : func:r35_12029, this:r35_12027 +# 35| mu35_12031(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12032(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12027 +# 35| r35_12033(glval) = VariableAddress[x859] : +# 35| r35_12034(glval) = FunctionAddress[~String] : +# 35| v35_12035(void) = Call[~String] : func:r35_12034, this:r35_12033 +# 35| mu35_12036(unknown) = ^CallSideEffect : ~m? +# 35| v35_12037(void) = ^IndirectReadSideEffect[-1] : &:r35_12033, ~m? +# 35| mu35_12038(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12033 +# 35| r35_12039(bool) = Constant[0] : +# 35| v35_12040(void) = ConditionalBranch : r35_12039 #-----| False -> Block 861 #-----| True (back edge) -> Block 860 -# 2599| Block 861 -# 2599| r2599_1(glval) = VariableAddress[x860] : -# 2599| mu2599_2(String) = Uninitialized[x860] : &:r2599_1 -# 2599| r2599_3(glval) = FunctionAddress[String] : -# 2599| v2599_4(void) = Call[String] : func:r2599_3, this:r2599_1 -# 2599| mu2599_5(unknown) = ^CallSideEffect : ~m? -# 2599| mu2599_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2599_1 -# 2600| r2600_1(glval) = VariableAddress[x860] : -# 2600| r2600_2(glval) = FunctionAddress[~String] : -# 2600| v2600_3(void) = Call[~String] : func:r2600_2, this:r2600_1 -# 2600| mu2600_4(unknown) = ^CallSideEffect : ~m? -# 2600| v2600_5(void) = ^IndirectReadSideEffect[-1] : &:r2600_1, ~m? -# 2600| mu2600_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2600_1 -# 2600| r2600_7(bool) = Constant[0] : -# 2600| v2600_8(void) = ConditionalBranch : r2600_7 +# 35| Block 861 +# 35| r35_12041(glval) = VariableAddress[x860] : +# 35| mu35_12042(String) = Uninitialized[x860] : &:r35_12041 +# 35| r35_12043(glval) = FunctionAddress[String] : +# 35| v35_12044(void) = Call[String] : func:r35_12043, this:r35_12041 +# 35| mu35_12045(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12046(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12041 +# 35| r35_12047(glval) = VariableAddress[x860] : +# 35| r35_12048(glval) = FunctionAddress[~String] : +# 35| v35_12049(void) = Call[~String] : func:r35_12048, this:r35_12047 +# 35| mu35_12050(unknown) = ^CallSideEffect : ~m? +# 35| v35_12051(void) = ^IndirectReadSideEffect[-1] : &:r35_12047, ~m? +# 35| mu35_12052(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12047 +# 35| r35_12053(bool) = Constant[0] : +# 35| v35_12054(void) = ConditionalBranch : r35_12053 #-----| False -> Block 862 #-----| True (back edge) -> Block 861 -# 2602| Block 862 -# 2602| r2602_1(glval) = VariableAddress[x861] : -# 2602| mu2602_2(String) = Uninitialized[x861] : &:r2602_1 -# 2602| r2602_3(glval) = FunctionAddress[String] : -# 2602| v2602_4(void) = Call[String] : func:r2602_3, this:r2602_1 -# 2602| mu2602_5(unknown) = ^CallSideEffect : ~m? -# 2602| mu2602_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2602_1 -# 2603| r2603_1(glval) = VariableAddress[x861] : -# 2603| r2603_2(glval) = FunctionAddress[~String] : -# 2603| v2603_3(void) = Call[~String] : func:r2603_2, this:r2603_1 -# 2603| mu2603_4(unknown) = ^CallSideEffect : ~m? -# 2603| v2603_5(void) = ^IndirectReadSideEffect[-1] : &:r2603_1, ~m? -# 2603| mu2603_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2603_1 -# 2603| r2603_7(bool) = Constant[0] : -# 2603| v2603_8(void) = ConditionalBranch : r2603_7 +# 35| Block 862 +# 35| r35_12055(glval) = VariableAddress[x861] : +# 35| mu35_12056(String) = Uninitialized[x861] : &:r35_12055 +# 35| r35_12057(glval) = FunctionAddress[String] : +# 35| v35_12058(void) = Call[String] : func:r35_12057, this:r35_12055 +# 35| mu35_12059(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12060(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12055 +# 35| r35_12061(glval) = VariableAddress[x861] : +# 35| r35_12062(glval) = FunctionAddress[~String] : +# 35| v35_12063(void) = Call[~String] : func:r35_12062, this:r35_12061 +# 35| mu35_12064(unknown) = ^CallSideEffect : ~m? +# 35| v35_12065(void) = ^IndirectReadSideEffect[-1] : &:r35_12061, ~m? +# 35| mu35_12066(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12061 +# 35| r35_12067(bool) = Constant[0] : +# 35| v35_12068(void) = ConditionalBranch : r35_12067 #-----| False -> Block 863 #-----| True (back edge) -> Block 862 -# 2605| Block 863 -# 2605| r2605_1(glval) = VariableAddress[x862] : -# 2605| mu2605_2(String) = Uninitialized[x862] : &:r2605_1 -# 2605| r2605_3(glval) = FunctionAddress[String] : -# 2605| v2605_4(void) = Call[String] : func:r2605_3, this:r2605_1 -# 2605| mu2605_5(unknown) = ^CallSideEffect : ~m? -# 2605| mu2605_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2605_1 -# 2606| r2606_1(glval) = VariableAddress[x862] : -# 2606| r2606_2(glval) = FunctionAddress[~String] : -# 2606| v2606_3(void) = Call[~String] : func:r2606_2, this:r2606_1 -# 2606| mu2606_4(unknown) = ^CallSideEffect : ~m? -# 2606| v2606_5(void) = ^IndirectReadSideEffect[-1] : &:r2606_1, ~m? -# 2606| mu2606_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2606_1 -# 2606| r2606_7(bool) = Constant[0] : -# 2606| v2606_8(void) = ConditionalBranch : r2606_7 +# 35| Block 863 +# 35| r35_12069(glval) = VariableAddress[x862] : +# 35| mu35_12070(String) = Uninitialized[x862] : &:r35_12069 +# 35| r35_12071(glval) = FunctionAddress[String] : +# 35| v35_12072(void) = Call[String] : func:r35_12071, this:r35_12069 +# 35| mu35_12073(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12074(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12069 +# 35| r35_12075(glval) = VariableAddress[x862] : +# 35| r35_12076(glval) = FunctionAddress[~String] : +# 35| v35_12077(void) = Call[~String] : func:r35_12076, this:r35_12075 +# 35| mu35_12078(unknown) = ^CallSideEffect : ~m? +# 35| v35_12079(void) = ^IndirectReadSideEffect[-1] : &:r35_12075, ~m? +# 35| mu35_12080(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12075 +# 35| r35_12081(bool) = Constant[0] : +# 35| v35_12082(void) = ConditionalBranch : r35_12081 #-----| False -> Block 864 #-----| True (back edge) -> Block 863 -# 2608| Block 864 -# 2608| r2608_1(glval) = VariableAddress[x863] : -# 2608| mu2608_2(String) = Uninitialized[x863] : &:r2608_1 -# 2608| r2608_3(glval) = FunctionAddress[String] : -# 2608| v2608_4(void) = Call[String] : func:r2608_3, this:r2608_1 -# 2608| mu2608_5(unknown) = ^CallSideEffect : ~m? -# 2608| mu2608_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2608_1 -# 2609| r2609_1(glval) = VariableAddress[x863] : -# 2609| r2609_2(glval) = FunctionAddress[~String] : -# 2609| v2609_3(void) = Call[~String] : func:r2609_2, this:r2609_1 -# 2609| mu2609_4(unknown) = ^CallSideEffect : ~m? -# 2609| v2609_5(void) = ^IndirectReadSideEffect[-1] : &:r2609_1, ~m? -# 2609| mu2609_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2609_1 -# 2609| r2609_7(bool) = Constant[0] : -# 2609| v2609_8(void) = ConditionalBranch : r2609_7 +# 35| Block 864 +# 35| r35_12083(glval) = VariableAddress[x863] : +# 35| mu35_12084(String) = Uninitialized[x863] : &:r35_12083 +# 35| r35_12085(glval) = FunctionAddress[String] : +# 35| v35_12086(void) = Call[String] : func:r35_12085, this:r35_12083 +# 35| mu35_12087(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12088(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12083 +# 35| r35_12089(glval) = VariableAddress[x863] : +# 35| r35_12090(glval) = FunctionAddress[~String] : +# 35| v35_12091(void) = Call[~String] : func:r35_12090, this:r35_12089 +# 35| mu35_12092(unknown) = ^CallSideEffect : ~m? +# 35| v35_12093(void) = ^IndirectReadSideEffect[-1] : &:r35_12089, ~m? +# 35| mu35_12094(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12089 +# 35| r35_12095(bool) = Constant[0] : +# 35| v35_12096(void) = ConditionalBranch : r35_12095 #-----| False -> Block 865 #-----| True (back edge) -> Block 864 -# 2611| Block 865 -# 2611| r2611_1(glval) = VariableAddress[x864] : -# 2611| mu2611_2(String) = Uninitialized[x864] : &:r2611_1 -# 2611| r2611_3(glval) = FunctionAddress[String] : -# 2611| v2611_4(void) = Call[String] : func:r2611_3, this:r2611_1 -# 2611| mu2611_5(unknown) = ^CallSideEffect : ~m? -# 2611| mu2611_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2611_1 -# 2612| r2612_1(glval) = VariableAddress[x864] : -# 2612| r2612_2(glval) = FunctionAddress[~String] : -# 2612| v2612_3(void) = Call[~String] : func:r2612_2, this:r2612_1 -# 2612| mu2612_4(unknown) = ^CallSideEffect : ~m? -# 2612| v2612_5(void) = ^IndirectReadSideEffect[-1] : &:r2612_1, ~m? -# 2612| mu2612_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2612_1 -# 2612| r2612_7(bool) = Constant[0] : -# 2612| v2612_8(void) = ConditionalBranch : r2612_7 +# 35| Block 865 +# 35| r35_12097(glval) = VariableAddress[x864] : +# 35| mu35_12098(String) = Uninitialized[x864] : &:r35_12097 +# 35| r35_12099(glval) = FunctionAddress[String] : +# 35| v35_12100(void) = Call[String] : func:r35_12099, this:r35_12097 +# 35| mu35_12101(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12102(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12097 +# 35| r35_12103(glval) = VariableAddress[x864] : +# 35| r35_12104(glval) = FunctionAddress[~String] : +# 35| v35_12105(void) = Call[~String] : func:r35_12104, this:r35_12103 +# 35| mu35_12106(unknown) = ^CallSideEffect : ~m? +# 35| v35_12107(void) = ^IndirectReadSideEffect[-1] : &:r35_12103, ~m? +# 35| mu35_12108(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12103 +# 35| r35_12109(bool) = Constant[0] : +# 35| v35_12110(void) = ConditionalBranch : r35_12109 #-----| False -> Block 866 #-----| True (back edge) -> Block 865 -# 2614| Block 866 -# 2614| r2614_1(glval) = VariableAddress[x865] : -# 2614| mu2614_2(String) = Uninitialized[x865] : &:r2614_1 -# 2614| r2614_3(glval) = FunctionAddress[String] : -# 2614| v2614_4(void) = Call[String] : func:r2614_3, this:r2614_1 -# 2614| mu2614_5(unknown) = ^CallSideEffect : ~m? -# 2614| mu2614_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2614_1 -# 2615| r2615_1(glval) = VariableAddress[x865] : -# 2615| r2615_2(glval) = FunctionAddress[~String] : -# 2615| v2615_3(void) = Call[~String] : func:r2615_2, this:r2615_1 -# 2615| mu2615_4(unknown) = ^CallSideEffect : ~m? -# 2615| v2615_5(void) = ^IndirectReadSideEffect[-1] : &:r2615_1, ~m? -# 2615| mu2615_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2615_1 -# 2615| r2615_7(bool) = Constant[0] : -# 2615| v2615_8(void) = ConditionalBranch : r2615_7 +# 35| Block 866 +# 35| r35_12111(glval) = VariableAddress[x865] : +# 35| mu35_12112(String) = Uninitialized[x865] : &:r35_12111 +# 35| r35_12113(glval) = FunctionAddress[String] : +# 35| v35_12114(void) = Call[String] : func:r35_12113, this:r35_12111 +# 35| mu35_12115(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12116(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12111 +# 35| r35_12117(glval) = VariableAddress[x865] : +# 35| r35_12118(glval) = FunctionAddress[~String] : +# 35| v35_12119(void) = Call[~String] : func:r35_12118, this:r35_12117 +# 35| mu35_12120(unknown) = ^CallSideEffect : ~m? +# 35| v35_12121(void) = ^IndirectReadSideEffect[-1] : &:r35_12117, ~m? +# 35| mu35_12122(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12117 +# 35| r35_12123(bool) = Constant[0] : +# 35| v35_12124(void) = ConditionalBranch : r35_12123 #-----| False -> Block 867 #-----| True (back edge) -> Block 866 -# 2617| Block 867 -# 2617| r2617_1(glval) = VariableAddress[x866] : -# 2617| mu2617_2(String) = Uninitialized[x866] : &:r2617_1 -# 2617| r2617_3(glval) = FunctionAddress[String] : -# 2617| v2617_4(void) = Call[String] : func:r2617_3, this:r2617_1 -# 2617| mu2617_5(unknown) = ^CallSideEffect : ~m? -# 2617| mu2617_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2617_1 -# 2618| r2618_1(glval) = VariableAddress[x866] : -# 2618| r2618_2(glval) = FunctionAddress[~String] : -# 2618| v2618_3(void) = Call[~String] : func:r2618_2, this:r2618_1 -# 2618| mu2618_4(unknown) = ^CallSideEffect : ~m? -# 2618| v2618_5(void) = ^IndirectReadSideEffect[-1] : &:r2618_1, ~m? -# 2618| mu2618_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2618_1 -# 2618| r2618_7(bool) = Constant[0] : -# 2618| v2618_8(void) = ConditionalBranch : r2618_7 +# 35| Block 867 +# 35| r35_12125(glval) = VariableAddress[x866] : +# 35| mu35_12126(String) = Uninitialized[x866] : &:r35_12125 +# 35| r35_12127(glval) = FunctionAddress[String] : +# 35| v35_12128(void) = Call[String] : func:r35_12127, this:r35_12125 +# 35| mu35_12129(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12130(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12125 +# 35| r35_12131(glval) = VariableAddress[x866] : +# 35| r35_12132(glval) = FunctionAddress[~String] : +# 35| v35_12133(void) = Call[~String] : func:r35_12132, this:r35_12131 +# 35| mu35_12134(unknown) = ^CallSideEffect : ~m? +# 35| v35_12135(void) = ^IndirectReadSideEffect[-1] : &:r35_12131, ~m? +# 35| mu35_12136(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12131 +# 35| r35_12137(bool) = Constant[0] : +# 35| v35_12138(void) = ConditionalBranch : r35_12137 #-----| False -> Block 868 #-----| True (back edge) -> Block 867 -# 2620| Block 868 -# 2620| r2620_1(glval) = VariableAddress[x867] : -# 2620| mu2620_2(String) = Uninitialized[x867] : &:r2620_1 -# 2620| r2620_3(glval) = FunctionAddress[String] : -# 2620| v2620_4(void) = Call[String] : func:r2620_3, this:r2620_1 -# 2620| mu2620_5(unknown) = ^CallSideEffect : ~m? -# 2620| mu2620_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2620_1 -# 2621| r2621_1(glval) = VariableAddress[x867] : -# 2621| r2621_2(glval) = FunctionAddress[~String] : -# 2621| v2621_3(void) = Call[~String] : func:r2621_2, this:r2621_1 -# 2621| mu2621_4(unknown) = ^CallSideEffect : ~m? -# 2621| v2621_5(void) = ^IndirectReadSideEffect[-1] : &:r2621_1, ~m? -# 2621| mu2621_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2621_1 -# 2621| r2621_7(bool) = Constant[0] : -# 2621| v2621_8(void) = ConditionalBranch : r2621_7 +# 35| Block 868 +# 35| r35_12139(glval) = VariableAddress[x867] : +# 35| mu35_12140(String) = Uninitialized[x867] : &:r35_12139 +# 35| r35_12141(glval) = FunctionAddress[String] : +# 35| v35_12142(void) = Call[String] : func:r35_12141, this:r35_12139 +# 35| mu35_12143(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12144(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12139 +# 35| r35_12145(glval) = VariableAddress[x867] : +# 35| r35_12146(glval) = FunctionAddress[~String] : +# 35| v35_12147(void) = Call[~String] : func:r35_12146, this:r35_12145 +# 35| mu35_12148(unknown) = ^CallSideEffect : ~m? +# 35| v35_12149(void) = ^IndirectReadSideEffect[-1] : &:r35_12145, ~m? +# 35| mu35_12150(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12145 +# 35| r35_12151(bool) = Constant[0] : +# 35| v35_12152(void) = ConditionalBranch : r35_12151 #-----| False -> Block 869 #-----| True (back edge) -> Block 868 -# 2623| Block 869 -# 2623| r2623_1(glval) = VariableAddress[x868] : -# 2623| mu2623_2(String) = Uninitialized[x868] : &:r2623_1 -# 2623| r2623_3(glval) = FunctionAddress[String] : -# 2623| v2623_4(void) = Call[String] : func:r2623_3, this:r2623_1 -# 2623| mu2623_5(unknown) = ^CallSideEffect : ~m? -# 2623| mu2623_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2623_1 -# 2624| r2624_1(glval) = VariableAddress[x868] : -# 2624| r2624_2(glval) = FunctionAddress[~String] : -# 2624| v2624_3(void) = Call[~String] : func:r2624_2, this:r2624_1 -# 2624| mu2624_4(unknown) = ^CallSideEffect : ~m? -# 2624| v2624_5(void) = ^IndirectReadSideEffect[-1] : &:r2624_1, ~m? -# 2624| mu2624_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2624_1 -# 2624| r2624_7(bool) = Constant[0] : -# 2624| v2624_8(void) = ConditionalBranch : r2624_7 +# 35| Block 869 +# 35| r35_12153(glval) = VariableAddress[x868] : +# 35| mu35_12154(String) = Uninitialized[x868] : &:r35_12153 +# 35| r35_12155(glval) = FunctionAddress[String] : +# 35| v35_12156(void) = Call[String] : func:r35_12155, this:r35_12153 +# 35| mu35_12157(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12158(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12153 +# 35| r35_12159(glval) = VariableAddress[x868] : +# 35| r35_12160(glval) = FunctionAddress[~String] : +# 35| v35_12161(void) = Call[~String] : func:r35_12160, this:r35_12159 +# 35| mu35_12162(unknown) = ^CallSideEffect : ~m? +# 35| v35_12163(void) = ^IndirectReadSideEffect[-1] : &:r35_12159, ~m? +# 35| mu35_12164(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12159 +# 35| r35_12165(bool) = Constant[0] : +# 35| v35_12166(void) = ConditionalBranch : r35_12165 #-----| False -> Block 870 #-----| True (back edge) -> Block 869 -# 2626| Block 870 -# 2626| r2626_1(glval) = VariableAddress[x869] : -# 2626| mu2626_2(String) = Uninitialized[x869] : &:r2626_1 -# 2626| r2626_3(glval) = FunctionAddress[String] : -# 2626| v2626_4(void) = Call[String] : func:r2626_3, this:r2626_1 -# 2626| mu2626_5(unknown) = ^CallSideEffect : ~m? -# 2626| mu2626_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2626_1 -# 2627| r2627_1(glval) = VariableAddress[x869] : -# 2627| r2627_2(glval) = FunctionAddress[~String] : -# 2627| v2627_3(void) = Call[~String] : func:r2627_2, this:r2627_1 -# 2627| mu2627_4(unknown) = ^CallSideEffect : ~m? -# 2627| v2627_5(void) = ^IndirectReadSideEffect[-1] : &:r2627_1, ~m? -# 2627| mu2627_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2627_1 -# 2627| r2627_7(bool) = Constant[0] : -# 2627| v2627_8(void) = ConditionalBranch : r2627_7 +# 35| Block 870 +# 35| r35_12167(glval) = VariableAddress[x869] : +# 35| mu35_12168(String) = Uninitialized[x869] : &:r35_12167 +# 35| r35_12169(glval) = FunctionAddress[String] : +# 35| v35_12170(void) = Call[String] : func:r35_12169, this:r35_12167 +# 35| mu35_12171(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12172(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12167 +# 35| r35_12173(glval) = VariableAddress[x869] : +# 35| r35_12174(glval) = FunctionAddress[~String] : +# 35| v35_12175(void) = Call[~String] : func:r35_12174, this:r35_12173 +# 35| mu35_12176(unknown) = ^CallSideEffect : ~m? +# 35| v35_12177(void) = ^IndirectReadSideEffect[-1] : &:r35_12173, ~m? +# 35| mu35_12178(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12173 +# 35| r35_12179(bool) = Constant[0] : +# 35| v35_12180(void) = ConditionalBranch : r35_12179 #-----| False -> Block 871 #-----| True (back edge) -> Block 870 -# 2629| Block 871 -# 2629| r2629_1(glval) = VariableAddress[x870] : -# 2629| mu2629_2(String) = Uninitialized[x870] : &:r2629_1 -# 2629| r2629_3(glval) = FunctionAddress[String] : -# 2629| v2629_4(void) = Call[String] : func:r2629_3, this:r2629_1 -# 2629| mu2629_5(unknown) = ^CallSideEffect : ~m? -# 2629| mu2629_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2629_1 -# 2630| r2630_1(glval) = VariableAddress[x870] : -# 2630| r2630_2(glval) = FunctionAddress[~String] : -# 2630| v2630_3(void) = Call[~String] : func:r2630_2, this:r2630_1 -# 2630| mu2630_4(unknown) = ^CallSideEffect : ~m? -# 2630| v2630_5(void) = ^IndirectReadSideEffect[-1] : &:r2630_1, ~m? -# 2630| mu2630_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2630_1 -# 2630| r2630_7(bool) = Constant[0] : -# 2630| v2630_8(void) = ConditionalBranch : r2630_7 +# 35| Block 871 +# 35| r35_12181(glval) = VariableAddress[x870] : +# 35| mu35_12182(String) = Uninitialized[x870] : &:r35_12181 +# 35| r35_12183(glval) = FunctionAddress[String] : +# 35| v35_12184(void) = Call[String] : func:r35_12183, this:r35_12181 +# 35| mu35_12185(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12186(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12181 +# 35| r35_12187(glval) = VariableAddress[x870] : +# 35| r35_12188(glval) = FunctionAddress[~String] : +# 35| v35_12189(void) = Call[~String] : func:r35_12188, this:r35_12187 +# 35| mu35_12190(unknown) = ^CallSideEffect : ~m? +# 35| v35_12191(void) = ^IndirectReadSideEffect[-1] : &:r35_12187, ~m? +# 35| mu35_12192(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12187 +# 35| r35_12193(bool) = Constant[0] : +# 35| v35_12194(void) = ConditionalBranch : r35_12193 #-----| False -> Block 872 #-----| True (back edge) -> Block 871 -# 2632| Block 872 -# 2632| r2632_1(glval) = VariableAddress[x871] : -# 2632| mu2632_2(String) = Uninitialized[x871] : &:r2632_1 -# 2632| r2632_3(glval) = FunctionAddress[String] : -# 2632| v2632_4(void) = Call[String] : func:r2632_3, this:r2632_1 -# 2632| mu2632_5(unknown) = ^CallSideEffect : ~m? -# 2632| mu2632_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2632_1 -# 2633| r2633_1(glval) = VariableAddress[x871] : -# 2633| r2633_2(glval) = FunctionAddress[~String] : -# 2633| v2633_3(void) = Call[~String] : func:r2633_2, this:r2633_1 -# 2633| mu2633_4(unknown) = ^CallSideEffect : ~m? -# 2633| v2633_5(void) = ^IndirectReadSideEffect[-1] : &:r2633_1, ~m? -# 2633| mu2633_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2633_1 -# 2633| r2633_7(bool) = Constant[0] : -# 2633| v2633_8(void) = ConditionalBranch : r2633_7 +# 35| Block 872 +# 35| r35_12195(glval) = VariableAddress[x871] : +# 35| mu35_12196(String) = Uninitialized[x871] : &:r35_12195 +# 35| r35_12197(glval) = FunctionAddress[String] : +# 35| v35_12198(void) = Call[String] : func:r35_12197, this:r35_12195 +# 35| mu35_12199(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12200(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12195 +# 35| r35_12201(glval) = VariableAddress[x871] : +# 35| r35_12202(glval) = FunctionAddress[~String] : +# 35| v35_12203(void) = Call[~String] : func:r35_12202, this:r35_12201 +# 35| mu35_12204(unknown) = ^CallSideEffect : ~m? +# 35| v35_12205(void) = ^IndirectReadSideEffect[-1] : &:r35_12201, ~m? +# 35| mu35_12206(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12201 +# 35| r35_12207(bool) = Constant[0] : +# 35| v35_12208(void) = ConditionalBranch : r35_12207 #-----| False -> Block 873 #-----| True (back edge) -> Block 872 -# 2635| Block 873 -# 2635| r2635_1(glval) = VariableAddress[x872] : -# 2635| mu2635_2(String) = Uninitialized[x872] : &:r2635_1 -# 2635| r2635_3(glval) = FunctionAddress[String] : -# 2635| v2635_4(void) = Call[String] : func:r2635_3, this:r2635_1 -# 2635| mu2635_5(unknown) = ^CallSideEffect : ~m? -# 2635| mu2635_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2635_1 -# 2636| r2636_1(glval) = VariableAddress[x872] : -# 2636| r2636_2(glval) = FunctionAddress[~String] : -# 2636| v2636_3(void) = Call[~String] : func:r2636_2, this:r2636_1 -# 2636| mu2636_4(unknown) = ^CallSideEffect : ~m? -# 2636| v2636_5(void) = ^IndirectReadSideEffect[-1] : &:r2636_1, ~m? -# 2636| mu2636_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2636_1 -# 2636| r2636_7(bool) = Constant[0] : -# 2636| v2636_8(void) = ConditionalBranch : r2636_7 +# 35| Block 873 +# 35| r35_12209(glval) = VariableAddress[x872] : +# 35| mu35_12210(String) = Uninitialized[x872] : &:r35_12209 +# 35| r35_12211(glval) = FunctionAddress[String] : +# 35| v35_12212(void) = Call[String] : func:r35_12211, this:r35_12209 +# 35| mu35_12213(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12214(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12209 +# 35| r35_12215(glval) = VariableAddress[x872] : +# 35| r35_12216(glval) = FunctionAddress[~String] : +# 35| v35_12217(void) = Call[~String] : func:r35_12216, this:r35_12215 +# 35| mu35_12218(unknown) = ^CallSideEffect : ~m? +# 35| v35_12219(void) = ^IndirectReadSideEffect[-1] : &:r35_12215, ~m? +# 35| mu35_12220(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12215 +# 35| r35_12221(bool) = Constant[0] : +# 35| v35_12222(void) = ConditionalBranch : r35_12221 #-----| False -> Block 874 #-----| True (back edge) -> Block 873 -# 2638| Block 874 -# 2638| r2638_1(glval) = VariableAddress[x873] : -# 2638| mu2638_2(String) = Uninitialized[x873] : &:r2638_1 -# 2638| r2638_3(glval) = FunctionAddress[String] : -# 2638| v2638_4(void) = Call[String] : func:r2638_3, this:r2638_1 -# 2638| mu2638_5(unknown) = ^CallSideEffect : ~m? -# 2638| mu2638_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2638_1 -# 2639| r2639_1(glval) = VariableAddress[x873] : -# 2639| r2639_2(glval) = FunctionAddress[~String] : -# 2639| v2639_3(void) = Call[~String] : func:r2639_2, this:r2639_1 -# 2639| mu2639_4(unknown) = ^CallSideEffect : ~m? -# 2639| v2639_5(void) = ^IndirectReadSideEffect[-1] : &:r2639_1, ~m? -# 2639| mu2639_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2639_1 -# 2639| r2639_7(bool) = Constant[0] : -# 2639| v2639_8(void) = ConditionalBranch : r2639_7 +# 35| Block 874 +# 35| r35_12223(glval) = VariableAddress[x873] : +# 35| mu35_12224(String) = Uninitialized[x873] : &:r35_12223 +# 35| r35_12225(glval) = FunctionAddress[String] : +# 35| v35_12226(void) = Call[String] : func:r35_12225, this:r35_12223 +# 35| mu35_12227(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12228(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12223 +# 35| r35_12229(glval) = VariableAddress[x873] : +# 35| r35_12230(glval) = FunctionAddress[~String] : +# 35| v35_12231(void) = Call[~String] : func:r35_12230, this:r35_12229 +# 35| mu35_12232(unknown) = ^CallSideEffect : ~m? +# 35| v35_12233(void) = ^IndirectReadSideEffect[-1] : &:r35_12229, ~m? +# 35| mu35_12234(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12229 +# 35| r35_12235(bool) = Constant[0] : +# 35| v35_12236(void) = ConditionalBranch : r35_12235 #-----| False -> Block 875 #-----| True (back edge) -> Block 874 -# 2641| Block 875 -# 2641| r2641_1(glval) = VariableAddress[x874] : -# 2641| mu2641_2(String) = Uninitialized[x874] : &:r2641_1 -# 2641| r2641_3(glval) = FunctionAddress[String] : -# 2641| v2641_4(void) = Call[String] : func:r2641_3, this:r2641_1 -# 2641| mu2641_5(unknown) = ^CallSideEffect : ~m? -# 2641| mu2641_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2641_1 -# 2642| r2642_1(glval) = VariableAddress[x874] : -# 2642| r2642_2(glval) = FunctionAddress[~String] : -# 2642| v2642_3(void) = Call[~String] : func:r2642_2, this:r2642_1 -# 2642| mu2642_4(unknown) = ^CallSideEffect : ~m? -# 2642| v2642_5(void) = ^IndirectReadSideEffect[-1] : &:r2642_1, ~m? -# 2642| mu2642_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2642_1 -# 2642| r2642_7(bool) = Constant[0] : -# 2642| v2642_8(void) = ConditionalBranch : r2642_7 +# 35| Block 875 +# 35| r35_12237(glval) = VariableAddress[x874] : +# 35| mu35_12238(String) = Uninitialized[x874] : &:r35_12237 +# 35| r35_12239(glval) = FunctionAddress[String] : +# 35| v35_12240(void) = Call[String] : func:r35_12239, this:r35_12237 +# 35| mu35_12241(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12242(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12237 +# 35| r35_12243(glval) = VariableAddress[x874] : +# 35| r35_12244(glval) = FunctionAddress[~String] : +# 35| v35_12245(void) = Call[~String] : func:r35_12244, this:r35_12243 +# 35| mu35_12246(unknown) = ^CallSideEffect : ~m? +# 35| v35_12247(void) = ^IndirectReadSideEffect[-1] : &:r35_12243, ~m? +# 35| mu35_12248(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12243 +# 35| r35_12249(bool) = Constant[0] : +# 35| v35_12250(void) = ConditionalBranch : r35_12249 #-----| False -> Block 876 #-----| True (back edge) -> Block 875 -# 2644| Block 876 -# 2644| r2644_1(glval) = VariableAddress[x875] : -# 2644| mu2644_2(String) = Uninitialized[x875] : &:r2644_1 -# 2644| r2644_3(glval) = FunctionAddress[String] : -# 2644| v2644_4(void) = Call[String] : func:r2644_3, this:r2644_1 -# 2644| mu2644_5(unknown) = ^CallSideEffect : ~m? -# 2644| mu2644_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2644_1 -# 2645| r2645_1(glval) = VariableAddress[x875] : -# 2645| r2645_2(glval) = FunctionAddress[~String] : -# 2645| v2645_3(void) = Call[~String] : func:r2645_2, this:r2645_1 -# 2645| mu2645_4(unknown) = ^CallSideEffect : ~m? -# 2645| v2645_5(void) = ^IndirectReadSideEffect[-1] : &:r2645_1, ~m? -# 2645| mu2645_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2645_1 -# 2645| r2645_7(bool) = Constant[0] : -# 2645| v2645_8(void) = ConditionalBranch : r2645_7 +# 35| Block 876 +# 35| r35_12251(glval) = VariableAddress[x875] : +# 35| mu35_12252(String) = Uninitialized[x875] : &:r35_12251 +# 35| r35_12253(glval) = FunctionAddress[String] : +# 35| v35_12254(void) = Call[String] : func:r35_12253, this:r35_12251 +# 35| mu35_12255(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12256(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12251 +# 35| r35_12257(glval) = VariableAddress[x875] : +# 35| r35_12258(glval) = FunctionAddress[~String] : +# 35| v35_12259(void) = Call[~String] : func:r35_12258, this:r35_12257 +# 35| mu35_12260(unknown) = ^CallSideEffect : ~m? +# 35| v35_12261(void) = ^IndirectReadSideEffect[-1] : &:r35_12257, ~m? +# 35| mu35_12262(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12257 +# 35| r35_12263(bool) = Constant[0] : +# 35| v35_12264(void) = ConditionalBranch : r35_12263 #-----| False -> Block 877 #-----| True (back edge) -> Block 876 -# 2647| Block 877 -# 2647| r2647_1(glval) = VariableAddress[x876] : -# 2647| mu2647_2(String) = Uninitialized[x876] : &:r2647_1 -# 2647| r2647_3(glval) = FunctionAddress[String] : -# 2647| v2647_4(void) = Call[String] : func:r2647_3, this:r2647_1 -# 2647| mu2647_5(unknown) = ^CallSideEffect : ~m? -# 2647| mu2647_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2647_1 -# 2648| r2648_1(glval) = VariableAddress[x876] : -# 2648| r2648_2(glval) = FunctionAddress[~String] : -# 2648| v2648_3(void) = Call[~String] : func:r2648_2, this:r2648_1 -# 2648| mu2648_4(unknown) = ^CallSideEffect : ~m? -# 2648| v2648_5(void) = ^IndirectReadSideEffect[-1] : &:r2648_1, ~m? -# 2648| mu2648_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2648_1 -# 2648| r2648_7(bool) = Constant[0] : -# 2648| v2648_8(void) = ConditionalBranch : r2648_7 +# 35| Block 877 +# 35| r35_12265(glval) = VariableAddress[x876] : +# 35| mu35_12266(String) = Uninitialized[x876] : &:r35_12265 +# 35| r35_12267(glval) = FunctionAddress[String] : +# 35| v35_12268(void) = Call[String] : func:r35_12267, this:r35_12265 +# 35| mu35_12269(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12270(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12265 +# 35| r35_12271(glval) = VariableAddress[x876] : +# 35| r35_12272(glval) = FunctionAddress[~String] : +# 35| v35_12273(void) = Call[~String] : func:r35_12272, this:r35_12271 +# 35| mu35_12274(unknown) = ^CallSideEffect : ~m? +# 35| v35_12275(void) = ^IndirectReadSideEffect[-1] : &:r35_12271, ~m? +# 35| mu35_12276(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12271 +# 35| r35_12277(bool) = Constant[0] : +# 35| v35_12278(void) = ConditionalBranch : r35_12277 #-----| False -> Block 878 #-----| True (back edge) -> Block 877 -# 2650| Block 878 -# 2650| r2650_1(glval) = VariableAddress[x877] : -# 2650| mu2650_2(String) = Uninitialized[x877] : &:r2650_1 -# 2650| r2650_3(glval) = FunctionAddress[String] : -# 2650| v2650_4(void) = Call[String] : func:r2650_3, this:r2650_1 -# 2650| mu2650_5(unknown) = ^CallSideEffect : ~m? -# 2650| mu2650_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2650_1 -# 2651| r2651_1(glval) = VariableAddress[x877] : -# 2651| r2651_2(glval) = FunctionAddress[~String] : -# 2651| v2651_3(void) = Call[~String] : func:r2651_2, this:r2651_1 -# 2651| mu2651_4(unknown) = ^CallSideEffect : ~m? -# 2651| v2651_5(void) = ^IndirectReadSideEffect[-1] : &:r2651_1, ~m? -# 2651| mu2651_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2651_1 -# 2651| r2651_7(bool) = Constant[0] : -# 2651| v2651_8(void) = ConditionalBranch : r2651_7 +# 35| Block 878 +# 35| r35_12279(glval) = VariableAddress[x877] : +# 35| mu35_12280(String) = Uninitialized[x877] : &:r35_12279 +# 35| r35_12281(glval) = FunctionAddress[String] : +# 35| v35_12282(void) = Call[String] : func:r35_12281, this:r35_12279 +# 35| mu35_12283(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12284(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12279 +# 35| r35_12285(glval) = VariableAddress[x877] : +# 35| r35_12286(glval) = FunctionAddress[~String] : +# 35| v35_12287(void) = Call[~String] : func:r35_12286, this:r35_12285 +# 35| mu35_12288(unknown) = ^CallSideEffect : ~m? +# 35| v35_12289(void) = ^IndirectReadSideEffect[-1] : &:r35_12285, ~m? +# 35| mu35_12290(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12285 +# 35| r35_12291(bool) = Constant[0] : +# 35| v35_12292(void) = ConditionalBranch : r35_12291 #-----| False -> Block 879 #-----| True (back edge) -> Block 878 -# 2653| Block 879 -# 2653| r2653_1(glval) = VariableAddress[x878] : -# 2653| mu2653_2(String) = Uninitialized[x878] : &:r2653_1 -# 2653| r2653_3(glval) = FunctionAddress[String] : -# 2653| v2653_4(void) = Call[String] : func:r2653_3, this:r2653_1 -# 2653| mu2653_5(unknown) = ^CallSideEffect : ~m? -# 2653| mu2653_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2653_1 -# 2654| r2654_1(glval) = VariableAddress[x878] : -# 2654| r2654_2(glval) = FunctionAddress[~String] : -# 2654| v2654_3(void) = Call[~String] : func:r2654_2, this:r2654_1 -# 2654| mu2654_4(unknown) = ^CallSideEffect : ~m? -# 2654| v2654_5(void) = ^IndirectReadSideEffect[-1] : &:r2654_1, ~m? -# 2654| mu2654_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2654_1 -# 2654| r2654_7(bool) = Constant[0] : -# 2654| v2654_8(void) = ConditionalBranch : r2654_7 +# 35| Block 879 +# 35| r35_12293(glval) = VariableAddress[x878] : +# 35| mu35_12294(String) = Uninitialized[x878] : &:r35_12293 +# 35| r35_12295(glval) = FunctionAddress[String] : +# 35| v35_12296(void) = Call[String] : func:r35_12295, this:r35_12293 +# 35| mu35_12297(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12298(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12293 +# 35| r35_12299(glval) = VariableAddress[x878] : +# 35| r35_12300(glval) = FunctionAddress[~String] : +# 35| v35_12301(void) = Call[~String] : func:r35_12300, this:r35_12299 +# 35| mu35_12302(unknown) = ^CallSideEffect : ~m? +# 35| v35_12303(void) = ^IndirectReadSideEffect[-1] : &:r35_12299, ~m? +# 35| mu35_12304(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12299 +# 35| r35_12305(bool) = Constant[0] : +# 35| v35_12306(void) = ConditionalBranch : r35_12305 #-----| False -> Block 880 #-----| True (back edge) -> Block 879 -# 2656| Block 880 -# 2656| r2656_1(glval) = VariableAddress[x879] : -# 2656| mu2656_2(String) = Uninitialized[x879] : &:r2656_1 -# 2656| r2656_3(glval) = FunctionAddress[String] : -# 2656| v2656_4(void) = Call[String] : func:r2656_3, this:r2656_1 -# 2656| mu2656_5(unknown) = ^CallSideEffect : ~m? -# 2656| mu2656_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2656_1 -# 2657| r2657_1(glval) = VariableAddress[x879] : -# 2657| r2657_2(glval) = FunctionAddress[~String] : -# 2657| v2657_3(void) = Call[~String] : func:r2657_2, this:r2657_1 -# 2657| mu2657_4(unknown) = ^CallSideEffect : ~m? -# 2657| v2657_5(void) = ^IndirectReadSideEffect[-1] : &:r2657_1, ~m? -# 2657| mu2657_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2657_1 -# 2657| r2657_7(bool) = Constant[0] : -# 2657| v2657_8(void) = ConditionalBranch : r2657_7 +# 35| Block 880 +# 35| r35_12307(glval) = VariableAddress[x879] : +# 35| mu35_12308(String) = Uninitialized[x879] : &:r35_12307 +# 35| r35_12309(glval) = FunctionAddress[String] : +# 35| v35_12310(void) = Call[String] : func:r35_12309, this:r35_12307 +# 35| mu35_12311(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12312(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12307 +# 35| r35_12313(glval) = VariableAddress[x879] : +# 35| r35_12314(glval) = FunctionAddress[~String] : +# 35| v35_12315(void) = Call[~String] : func:r35_12314, this:r35_12313 +# 35| mu35_12316(unknown) = ^CallSideEffect : ~m? +# 35| v35_12317(void) = ^IndirectReadSideEffect[-1] : &:r35_12313, ~m? +# 35| mu35_12318(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12313 +# 35| r35_12319(bool) = Constant[0] : +# 35| v35_12320(void) = ConditionalBranch : r35_12319 #-----| False -> Block 881 #-----| True (back edge) -> Block 880 -# 2659| Block 881 -# 2659| r2659_1(glval) = VariableAddress[x880] : -# 2659| mu2659_2(String) = Uninitialized[x880] : &:r2659_1 -# 2659| r2659_3(glval) = FunctionAddress[String] : -# 2659| v2659_4(void) = Call[String] : func:r2659_3, this:r2659_1 -# 2659| mu2659_5(unknown) = ^CallSideEffect : ~m? -# 2659| mu2659_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2659_1 -# 2660| r2660_1(glval) = VariableAddress[x880] : -# 2660| r2660_2(glval) = FunctionAddress[~String] : -# 2660| v2660_3(void) = Call[~String] : func:r2660_2, this:r2660_1 -# 2660| mu2660_4(unknown) = ^CallSideEffect : ~m? -# 2660| v2660_5(void) = ^IndirectReadSideEffect[-1] : &:r2660_1, ~m? -# 2660| mu2660_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2660_1 -# 2660| r2660_7(bool) = Constant[0] : -# 2660| v2660_8(void) = ConditionalBranch : r2660_7 +# 35| Block 881 +# 35| r35_12321(glval) = VariableAddress[x880] : +# 35| mu35_12322(String) = Uninitialized[x880] : &:r35_12321 +# 35| r35_12323(glval) = FunctionAddress[String] : +# 35| v35_12324(void) = Call[String] : func:r35_12323, this:r35_12321 +# 35| mu35_12325(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12326(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12321 +# 35| r35_12327(glval) = VariableAddress[x880] : +# 35| r35_12328(glval) = FunctionAddress[~String] : +# 35| v35_12329(void) = Call[~String] : func:r35_12328, this:r35_12327 +# 35| mu35_12330(unknown) = ^CallSideEffect : ~m? +# 35| v35_12331(void) = ^IndirectReadSideEffect[-1] : &:r35_12327, ~m? +# 35| mu35_12332(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12327 +# 35| r35_12333(bool) = Constant[0] : +# 35| v35_12334(void) = ConditionalBranch : r35_12333 #-----| False -> Block 882 #-----| True (back edge) -> Block 881 -# 2662| Block 882 -# 2662| r2662_1(glval) = VariableAddress[x881] : -# 2662| mu2662_2(String) = Uninitialized[x881] : &:r2662_1 -# 2662| r2662_3(glval) = FunctionAddress[String] : -# 2662| v2662_4(void) = Call[String] : func:r2662_3, this:r2662_1 -# 2662| mu2662_5(unknown) = ^CallSideEffect : ~m? -# 2662| mu2662_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2662_1 -# 2663| r2663_1(glval) = VariableAddress[x881] : -# 2663| r2663_2(glval) = FunctionAddress[~String] : -# 2663| v2663_3(void) = Call[~String] : func:r2663_2, this:r2663_1 -# 2663| mu2663_4(unknown) = ^CallSideEffect : ~m? -# 2663| v2663_5(void) = ^IndirectReadSideEffect[-1] : &:r2663_1, ~m? -# 2663| mu2663_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2663_1 -# 2663| r2663_7(bool) = Constant[0] : -# 2663| v2663_8(void) = ConditionalBranch : r2663_7 +# 35| Block 882 +# 35| r35_12335(glval) = VariableAddress[x881] : +# 35| mu35_12336(String) = Uninitialized[x881] : &:r35_12335 +# 35| r35_12337(glval) = FunctionAddress[String] : +# 35| v35_12338(void) = Call[String] : func:r35_12337, this:r35_12335 +# 35| mu35_12339(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12340(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12335 +# 35| r35_12341(glval) = VariableAddress[x881] : +# 35| r35_12342(glval) = FunctionAddress[~String] : +# 35| v35_12343(void) = Call[~String] : func:r35_12342, this:r35_12341 +# 35| mu35_12344(unknown) = ^CallSideEffect : ~m? +# 35| v35_12345(void) = ^IndirectReadSideEffect[-1] : &:r35_12341, ~m? +# 35| mu35_12346(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12341 +# 35| r35_12347(bool) = Constant[0] : +# 35| v35_12348(void) = ConditionalBranch : r35_12347 #-----| False -> Block 883 #-----| True (back edge) -> Block 882 -# 2665| Block 883 -# 2665| r2665_1(glval) = VariableAddress[x882] : -# 2665| mu2665_2(String) = Uninitialized[x882] : &:r2665_1 -# 2665| r2665_3(glval) = FunctionAddress[String] : -# 2665| v2665_4(void) = Call[String] : func:r2665_3, this:r2665_1 -# 2665| mu2665_5(unknown) = ^CallSideEffect : ~m? -# 2665| mu2665_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2665_1 -# 2666| r2666_1(glval) = VariableAddress[x882] : -# 2666| r2666_2(glval) = FunctionAddress[~String] : -# 2666| v2666_3(void) = Call[~String] : func:r2666_2, this:r2666_1 -# 2666| mu2666_4(unknown) = ^CallSideEffect : ~m? -# 2666| v2666_5(void) = ^IndirectReadSideEffect[-1] : &:r2666_1, ~m? -# 2666| mu2666_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2666_1 -# 2666| r2666_7(bool) = Constant[0] : -# 2666| v2666_8(void) = ConditionalBranch : r2666_7 +# 35| Block 883 +# 35| r35_12349(glval) = VariableAddress[x882] : +# 35| mu35_12350(String) = Uninitialized[x882] : &:r35_12349 +# 35| r35_12351(glval) = FunctionAddress[String] : +# 35| v35_12352(void) = Call[String] : func:r35_12351, this:r35_12349 +# 35| mu35_12353(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12354(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12349 +# 35| r35_12355(glval) = VariableAddress[x882] : +# 35| r35_12356(glval) = FunctionAddress[~String] : +# 35| v35_12357(void) = Call[~String] : func:r35_12356, this:r35_12355 +# 35| mu35_12358(unknown) = ^CallSideEffect : ~m? +# 35| v35_12359(void) = ^IndirectReadSideEffect[-1] : &:r35_12355, ~m? +# 35| mu35_12360(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12355 +# 35| r35_12361(bool) = Constant[0] : +# 35| v35_12362(void) = ConditionalBranch : r35_12361 #-----| False -> Block 884 #-----| True (back edge) -> Block 883 -# 2668| Block 884 -# 2668| r2668_1(glval) = VariableAddress[x883] : -# 2668| mu2668_2(String) = Uninitialized[x883] : &:r2668_1 -# 2668| r2668_3(glval) = FunctionAddress[String] : -# 2668| v2668_4(void) = Call[String] : func:r2668_3, this:r2668_1 -# 2668| mu2668_5(unknown) = ^CallSideEffect : ~m? -# 2668| mu2668_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2668_1 -# 2669| r2669_1(glval) = VariableAddress[x883] : -# 2669| r2669_2(glval) = FunctionAddress[~String] : -# 2669| v2669_3(void) = Call[~String] : func:r2669_2, this:r2669_1 -# 2669| mu2669_4(unknown) = ^CallSideEffect : ~m? -# 2669| v2669_5(void) = ^IndirectReadSideEffect[-1] : &:r2669_1, ~m? -# 2669| mu2669_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2669_1 -# 2669| r2669_7(bool) = Constant[0] : -# 2669| v2669_8(void) = ConditionalBranch : r2669_7 +# 35| Block 884 +# 35| r35_12363(glval) = VariableAddress[x883] : +# 35| mu35_12364(String) = Uninitialized[x883] : &:r35_12363 +# 35| r35_12365(glval) = FunctionAddress[String] : +# 35| v35_12366(void) = Call[String] : func:r35_12365, this:r35_12363 +# 35| mu35_12367(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12368(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12363 +# 35| r35_12369(glval) = VariableAddress[x883] : +# 35| r35_12370(glval) = FunctionAddress[~String] : +# 35| v35_12371(void) = Call[~String] : func:r35_12370, this:r35_12369 +# 35| mu35_12372(unknown) = ^CallSideEffect : ~m? +# 35| v35_12373(void) = ^IndirectReadSideEffect[-1] : &:r35_12369, ~m? +# 35| mu35_12374(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12369 +# 35| r35_12375(bool) = Constant[0] : +# 35| v35_12376(void) = ConditionalBranch : r35_12375 #-----| False -> Block 885 #-----| True (back edge) -> Block 884 -# 2671| Block 885 -# 2671| r2671_1(glval) = VariableAddress[x884] : -# 2671| mu2671_2(String) = Uninitialized[x884] : &:r2671_1 -# 2671| r2671_3(glval) = FunctionAddress[String] : -# 2671| v2671_4(void) = Call[String] : func:r2671_3, this:r2671_1 -# 2671| mu2671_5(unknown) = ^CallSideEffect : ~m? -# 2671| mu2671_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2671_1 -# 2672| r2672_1(glval) = VariableAddress[x884] : -# 2672| r2672_2(glval) = FunctionAddress[~String] : -# 2672| v2672_3(void) = Call[~String] : func:r2672_2, this:r2672_1 -# 2672| mu2672_4(unknown) = ^CallSideEffect : ~m? -# 2672| v2672_5(void) = ^IndirectReadSideEffect[-1] : &:r2672_1, ~m? -# 2672| mu2672_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2672_1 -# 2672| r2672_7(bool) = Constant[0] : -# 2672| v2672_8(void) = ConditionalBranch : r2672_7 +# 35| Block 885 +# 35| r35_12377(glval) = VariableAddress[x884] : +# 35| mu35_12378(String) = Uninitialized[x884] : &:r35_12377 +# 35| r35_12379(glval) = FunctionAddress[String] : +# 35| v35_12380(void) = Call[String] : func:r35_12379, this:r35_12377 +# 35| mu35_12381(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12382(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12377 +# 35| r35_12383(glval) = VariableAddress[x884] : +# 35| r35_12384(glval) = FunctionAddress[~String] : +# 35| v35_12385(void) = Call[~String] : func:r35_12384, this:r35_12383 +# 35| mu35_12386(unknown) = ^CallSideEffect : ~m? +# 35| v35_12387(void) = ^IndirectReadSideEffect[-1] : &:r35_12383, ~m? +# 35| mu35_12388(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12383 +# 35| r35_12389(bool) = Constant[0] : +# 35| v35_12390(void) = ConditionalBranch : r35_12389 #-----| False -> Block 886 #-----| True (back edge) -> Block 885 -# 2674| Block 886 -# 2674| r2674_1(glval) = VariableAddress[x885] : -# 2674| mu2674_2(String) = Uninitialized[x885] : &:r2674_1 -# 2674| r2674_3(glval) = FunctionAddress[String] : -# 2674| v2674_4(void) = Call[String] : func:r2674_3, this:r2674_1 -# 2674| mu2674_5(unknown) = ^CallSideEffect : ~m? -# 2674| mu2674_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2674_1 -# 2675| r2675_1(glval) = VariableAddress[x885] : -# 2675| r2675_2(glval) = FunctionAddress[~String] : -# 2675| v2675_3(void) = Call[~String] : func:r2675_2, this:r2675_1 -# 2675| mu2675_4(unknown) = ^CallSideEffect : ~m? -# 2675| v2675_5(void) = ^IndirectReadSideEffect[-1] : &:r2675_1, ~m? -# 2675| mu2675_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2675_1 -# 2675| r2675_7(bool) = Constant[0] : -# 2675| v2675_8(void) = ConditionalBranch : r2675_7 +# 35| Block 886 +# 35| r35_12391(glval) = VariableAddress[x885] : +# 35| mu35_12392(String) = Uninitialized[x885] : &:r35_12391 +# 35| r35_12393(glval) = FunctionAddress[String] : +# 35| v35_12394(void) = Call[String] : func:r35_12393, this:r35_12391 +# 35| mu35_12395(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12396(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12391 +# 35| r35_12397(glval) = VariableAddress[x885] : +# 35| r35_12398(glval) = FunctionAddress[~String] : +# 35| v35_12399(void) = Call[~String] : func:r35_12398, this:r35_12397 +# 35| mu35_12400(unknown) = ^CallSideEffect : ~m? +# 35| v35_12401(void) = ^IndirectReadSideEffect[-1] : &:r35_12397, ~m? +# 35| mu35_12402(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12397 +# 35| r35_12403(bool) = Constant[0] : +# 35| v35_12404(void) = ConditionalBranch : r35_12403 #-----| False -> Block 887 #-----| True (back edge) -> Block 886 -# 2677| Block 887 -# 2677| r2677_1(glval) = VariableAddress[x886] : -# 2677| mu2677_2(String) = Uninitialized[x886] : &:r2677_1 -# 2677| r2677_3(glval) = FunctionAddress[String] : -# 2677| v2677_4(void) = Call[String] : func:r2677_3, this:r2677_1 -# 2677| mu2677_5(unknown) = ^CallSideEffect : ~m? -# 2677| mu2677_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2677_1 -# 2678| r2678_1(glval) = VariableAddress[x886] : -# 2678| r2678_2(glval) = FunctionAddress[~String] : -# 2678| v2678_3(void) = Call[~String] : func:r2678_2, this:r2678_1 -# 2678| mu2678_4(unknown) = ^CallSideEffect : ~m? -# 2678| v2678_5(void) = ^IndirectReadSideEffect[-1] : &:r2678_1, ~m? -# 2678| mu2678_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2678_1 -# 2678| r2678_7(bool) = Constant[0] : -# 2678| v2678_8(void) = ConditionalBranch : r2678_7 +# 35| Block 887 +# 35| r35_12405(glval) = VariableAddress[x886] : +# 35| mu35_12406(String) = Uninitialized[x886] : &:r35_12405 +# 35| r35_12407(glval) = FunctionAddress[String] : +# 35| v35_12408(void) = Call[String] : func:r35_12407, this:r35_12405 +# 35| mu35_12409(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12410(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12405 +# 35| r35_12411(glval) = VariableAddress[x886] : +# 35| r35_12412(glval) = FunctionAddress[~String] : +# 35| v35_12413(void) = Call[~String] : func:r35_12412, this:r35_12411 +# 35| mu35_12414(unknown) = ^CallSideEffect : ~m? +# 35| v35_12415(void) = ^IndirectReadSideEffect[-1] : &:r35_12411, ~m? +# 35| mu35_12416(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12411 +# 35| r35_12417(bool) = Constant[0] : +# 35| v35_12418(void) = ConditionalBranch : r35_12417 #-----| False -> Block 888 #-----| True (back edge) -> Block 887 -# 2680| Block 888 -# 2680| r2680_1(glval) = VariableAddress[x887] : -# 2680| mu2680_2(String) = Uninitialized[x887] : &:r2680_1 -# 2680| r2680_3(glval) = FunctionAddress[String] : -# 2680| v2680_4(void) = Call[String] : func:r2680_3, this:r2680_1 -# 2680| mu2680_5(unknown) = ^CallSideEffect : ~m? -# 2680| mu2680_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2680_1 -# 2681| r2681_1(glval) = VariableAddress[x887] : -# 2681| r2681_2(glval) = FunctionAddress[~String] : -# 2681| v2681_3(void) = Call[~String] : func:r2681_2, this:r2681_1 -# 2681| mu2681_4(unknown) = ^CallSideEffect : ~m? -# 2681| v2681_5(void) = ^IndirectReadSideEffect[-1] : &:r2681_1, ~m? -# 2681| mu2681_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2681_1 -# 2681| r2681_7(bool) = Constant[0] : -# 2681| v2681_8(void) = ConditionalBranch : r2681_7 +# 35| Block 888 +# 35| r35_12419(glval) = VariableAddress[x887] : +# 35| mu35_12420(String) = Uninitialized[x887] : &:r35_12419 +# 35| r35_12421(glval) = FunctionAddress[String] : +# 35| v35_12422(void) = Call[String] : func:r35_12421, this:r35_12419 +# 35| mu35_12423(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12424(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12419 +# 35| r35_12425(glval) = VariableAddress[x887] : +# 35| r35_12426(glval) = FunctionAddress[~String] : +# 35| v35_12427(void) = Call[~String] : func:r35_12426, this:r35_12425 +# 35| mu35_12428(unknown) = ^CallSideEffect : ~m? +# 35| v35_12429(void) = ^IndirectReadSideEffect[-1] : &:r35_12425, ~m? +# 35| mu35_12430(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12425 +# 35| r35_12431(bool) = Constant[0] : +# 35| v35_12432(void) = ConditionalBranch : r35_12431 #-----| False -> Block 889 #-----| True (back edge) -> Block 888 -# 2683| Block 889 -# 2683| r2683_1(glval) = VariableAddress[x888] : -# 2683| mu2683_2(String) = Uninitialized[x888] : &:r2683_1 -# 2683| r2683_3(glval) = FunctionAddress[String] : -# 2683| v2683_4(void) = Call[String] : func:r2683_3, this:r2683_1 -# 2683| mu2683_5(unknown) = ^CallSideEffect : ~m? -# 2683| mu2683_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2683_1 -# 2684| r2684_1(glval) = VariableAddress[x888] : -# 2684| r2684_2(glval) = FunctionAddress[~String] : -# 2684| v2684_3(void) = Call[~String] : func:r2684_2, this:r2684_1 -# 2684| mu2684_4(unknown) = ^CallSideEffect : ~m? -# 2684| v2684_5(void) = ^IndirectReadSideEffect[-1] : &:r2684_1, ~m? -# 2684| mu2684_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2684_1 -# 2684| r2684_7(bool) = Constant[0] : -# 2684| v2684_8(void) = ConditionalBranch : r2684_7 +# 35| Block 889 +# 35| r35_12433(glval) = VariableAddress[x888] : +# 35| mu35_12434(String) = Uninitialized[x888] : &:r35_12433 +# 35| r35_12435(glval) = FunctionAddress[String] : +# 35| v35_12436(void) = Call[String] : func:r35_12435, this:r35_12433 +# 35| mu35_12437(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12438(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12433 +# 35| r35_12439(glval) = VariableAddress[x888] : +# 35| r35_12440(glval) = FunctionAddress[~String] : +# 35| v35_12441(void) = Call[~String] : func:r35_12440, this:r35_12439 +# 35| mu35_12442(unknown) = ^CallSideEffect : ~m? +# 35| v35_12443(void) = ^IndirectReadSideEffect[-1] : &:r35_12439, ~m? +# 35| mu35_12444(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12439 +# 35| r35_12445(bool) = Constant[0] : +# 35| v35_12446(void) = ConditionalBranch : r35_12445 #-----| False -> Block 890 #-----| True (back edge) -> Block 889 -# 2686| Block 890 -# 2686| r2686_1(glval) = VariableAddress[x889] : -# 2686| mu2686_2(String) = Uninitialized[x889] : &:r2686_1 -# 2686| r2686_3(glval) = FunctionAddress[String] : -# 2686| v2686_4(void) = Call[String] : func:r2686_3, this:r2686_1 -# 2686| mu2686_5(unknown) = ^CallSideEffect : ~m? -# 2686| mu2686_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2686_1 -# 2687| r2687_1(glval) = VariableAddress[x889] : -# 2687| r2687_2(glval) = FunctionAddress[~String] : -# 2687| v2687_3(void) = Call[~String] : func:r2687_2, this:r2687_1 -# 2687| mu2687_4(unknown) = ^CallSideEffect : ~m? -# 2687| v2687_5(void) = ^IndirectReadSideEffect[-1] : &:r2687_1, ~m? -# 2687| mu2687_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2687_1 -# 2687| r2687_7(bool) = Constant[0] : -# 2687| v2687_8(void) = ConditionalBranch : r2687_7 +# 35| Block 890 +# 35| r35_12447(glval) = VariableAddress[x889] : +# 35| mu35_12448(String) = Uninitialized[x889] : &:r35_12447 +# 35| r35_12449(glval) = FunctionAddress[String] : +# 35| v35_12450(void) = Call[String] : func:r35_12449, this:r35_12447 +# 35| mu35_12451(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12452(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12447 +# 35| r35_12453(glval) = VariableAddress[x889] : +# 35| r35_12454(glval) = FunctionAddress[~String] : +# 35| v35_12455(void) = Call[~String] : func:r35_12454, this:r35_12453 +# 35| mu35_12456(unknown) = ^CallSideEffect : ~m? +# 35| v35_12457(void) = ^IndirectReadSideEffect[-1] : &:r35_12453, ~m? +# 35| mu35_12458(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12453 +# 35| r35_12459(bool) = Constant[0] : +# 35| v35_12460(void) = ConditionalBranch : r35_12459 #-----| False -> Block 891 #-----| True (back edge) -> Block 890 -# 2689| Block 891 -# 2689| r2689_1(glval) = VariableAddress[x890] : -# 2689| mu2689_2(String) = Uninitialized[x890] : &:r2689_1 -# 2689| r2689_3(glval) = FunctionAddress[String] : -# 2689| v2689_4(void) = Call[String] : func:r2689_3, this:r2689_1 -# 2689| mu2689_5(unknown) = ^CallSideEffect : ~m? -# 2689| mu2689_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2689_1 -# 2690| r2690_1(glval) = VariableAddress[x890] : -# 2690| r2690_2(glval) = FunctionAddress[~String] : -# 2690| v2690_3(void) = Call[~String] : func:r2690_2, this:r2690_1 -# 2690| mu2690_4(unknown) = ^CallSideEffect : ~m? -# 2690| v2690_5(void) = ^IndirectReadSideEffect[-1] : &:r2690_1, ~m? -# 2690| mu2690_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2690_1 -# 2690| r2690_7(bool) = Constant[0] : -# 2690| v2690_8(void) = ConditionalBranch : r2690_7 +# 35| Block 891 +# 35| r35_12461(glval) = VariableAddress[x890] : +# 35| mu35_12462(String) = Uninitialized[x890] : &:r35_12461 +# 35| r35_12463(glval) = FunctionAddress[String] : +# 35| v35_12464(void) = Call[String] : func:r35_12463, this:r35_12461 +# 35| mu35_12465(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12466(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12461 +# 35| r35_12467(glval) = VariableAddress[x890] : +# 35| r35_12468(glval) = FunctionAddress[~String] : +# 35| v35_12469(void) = Call[~String] : func:r35_12468, this:r35_12467 +# 35| mu35_12470(unknown) = ^CallSideEffect : ~m? +# 35| v35_12471(void) = ^IndirectReadSideEffect[-1] : &:r35_12467, ~m? +# 35| mu35_12472(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12467 +# 35| r35_12473(bool) = Constant[0] : +# 35| v35_12474(void) = ConditionalBranch : r35_12473 #-----| False -> Block 892 #-----| True (back edge) -> Block 891 -# 2692| Block 892 -# 2692| r2692_1(glval) = VariableAddress[x891] : -# 2692| mu2692_2(String) = Uninitialized[x891] : &:r2692_1 -# 2692| r2692_3(glval) = FunctionAddress[String] : -# 2692| v2692_4(void) = Call[String] : func:r2692_3, this:r2692_1 -# 2692| mu2692_5(unknown) = ^CallSideEffect : ~m? -# 2692| mu2692_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2692_1 -# 2693| r2693_1(glval) = VariableAddress[x891] : -# 2693| r2693_2(glval) = FunctionAddress[~String] : -# 2693| v2693_3(void) = Call[~String] : func:r2693_2, this:r2693_1 -# 2693| mu2693_4(unknown) = ^CallSideEffect : ~m? -# 2693| v2693_5(void) = ^IndirectReadSideEffect[-1] : &:r2693_1, ~m? -# 2693| mu2693_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2693_1 -# 2693| r2693_7(bool) = Constant[0] : -# 2693| v2693_8(void) = ConditionalBranch : r2693_7 +# 35| Block 892 +# 35| r35_12475(glval) = VariableAddress[x891] : +# 35| mu35_12476(String) = Uninitialized[x891] : &:r35_12475 +# 35| r35_12477(glval) = FunctionAddress[String] : +# 35| v35_12478(void) = Call[String] : func:r35_12477, this:r35_12475 +# 35| mu35_12479(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12480(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12475 +# 35| r35_12481(glval) = VariableAddress[x891] : +# 35| r35_12482(glval) = FunctionAddress[~String] : +# 35| v35_12483(void) = Call[~String] : func:r35_12482, this:r35_12481 +# 35| mu35_12484(unknown) = ^CallSideEffect : ~m? +# 35| v35_12485(void) = ^IndirectReadSideEffect[-1] : &:r35_12481, ~m? +# 35| mu35_12486(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12481 +# 35| r35_12487(bool) = Constant[0] : +# 35| v35_12488(void) = ConditionalBranch : r35_12487 #-----| False -> Block 893 #-----| True (back edge) -> Block 892 -# 2695| Block 893 -# 2695| r2695_1(glval) = VariableAddress[x892] : -# 2695| mu2695_2(String) = Uninitialized[x892] : &:r2695_1 -# 2695| r2695_3(glval) = FunctionAddress[String] : -# 2695| v2695_4(void) = Call[String] : func:r2695_3, this:r2695_1 -# 2695| mu2695_5(unknown) = ^CallSideEffect : ~m? -# 2695| mu2695_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2695_1 -# 2696| r2696_1(glval) = VariableAddress[x892] : -# 2696| r2696_2(glval) = FunctionAddress[~String] : -# 2696| v2696_3(void) = Call[~String] : func:r2696_2, this:r2696_1 -# 2696| mu2696_4(unknown) = ^CallSideEffect : ~m? -# 2696| v2696_5(void) = ^IndirectReadSideEffect[-1] : &:r2696_1, ~m? -# 2696| mu2696_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2696_1 -# 2696| r2696_7(bool) = Constant[0] : -# 2696| v2696_8(void) = ConditionalBranch : r2696_7 +# 35| Block 893 +# 35| r35_12489(glval) = VariableAddress[x892] : +# 35| mu35_12490(String) = Uninitialized[x892] : &:r35_12489 +# 35| r35_12491(glval) = FunctionAddress[String] : +# 35| v35_12492(void) = Call[String] : func:r35_12491, this:r35_12489 +# 35| mu35_12493(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12494(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12489 +# 35| r35_12495(glval) = VariableAddress[x892] : +# 35| r35_12496(glval) = FunctionAddress[~String] : +# 35| v35_12497(void) = Call[~String] : func:r35_12496, this:r35_12495 +# 35| mu35_12498(unknown) = ^CallSideEffect : ~m? +# 35| v35_12499(void) = ^IndirectReadSideEffect[-1] : &:r35_12495, ~m? +# 35| mu35_12500(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12495 +# 35| r35_12501(bool) = Constant[0] : +# 35| v35_12502(void) = ConditionalBranch : r35_12501 #-----| False -> Block 894 #-----| True (back edge) -> Block 893 -# 2698| Block 894 -# 2698| r2698_1(glval) = VariableAddress[x893] : -# 2698| mu2698_2(String) = Uninitialized[x893] : &:r2698_1 -# 2698| r2698_3(glval) = FunctionAddress[String] : -# 2698| v2698_4(void) = Call[String] : func:r2698_3, this:r2698_1 -# 2698| mu2698_5(unknown) = ^CallSideEffect : ~m? -# 2698| mu2698_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2698_1 -# 2699| r2699_1(glval) = VariableAddress[x893] : -# 2699| r2699_2(glval) = FunctionAddress[~String] : -# 2699| v2699_3(void) = Call[~String] : func:r2699_2, this:r2699_1 -# 2699| mu2699_4(unknown) = ^CallSideEffect : ~m? -# 2699| v2699_5(void) = ^IndirectReadSideEffect[-1] : &:r2699_1, ~m? -# 2699| mu2699_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2699_1 -# 2699| r2699_7(bool) = Constant[0] : -# 2699| v2699_8(void) = ConditionalBranch : r2699_7 +# 35| Block 894 +# 35| r35_12503(glval) = VariableAddress[x893] : +# 35| mu35_12504(String) = Uninitialized[x893] : &:r35_12503 +# 35| r35_12505(glval) = FunctionAddress[String] : +# 35| v35_12506(void) = Call[String] : func:r35_12505, this:r35_12503 +# 35| mu35_12507(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12508(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12503 +# 35| r35_12509(glval) = VariableAddress[x893] : +# 35| r35_12510(glval) = FunctionAddress[~String] : +# 35| v35_12511(void) = Call[~String] : func:r35_12510, this:r35_12509 +# 35| mu35_12512(unknown) = ^CallSideEffect : ~m? +# 35| v35_12513(void) = ^IndirectReadSideEffect[-1] : &:r35_12509, ~m? +# 35| mu35_12514(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12509 +# 35| r35_12515(bool) = Constant[0] : +# 35| v35_12516(void) = ConditionalBranch : r35_12515 #-----| False -> Block 895 #-----| True (back edge) -> Block 894 -# 2701| Block 895 -# 2701| r2701_1(glval) = VariableAddress[x894] : -# 2701| mu2701_2(String) = Uninitialized[x894] : &:r2701_1 -# 2701| r2701_3(glval) = FunctionAddress[String] : -# 2701| v2701_4(void) = Call[String] : func:r2701_3, this:r2701_1 -# 2701| mu2701_5(unknown) = ^CallSideEffect : ~m? -# 2701| mu2701_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2701_1 -# 2702| r2702_1(glval) = VariableAddress[x894] : -# 2702| r2702_2(glval) = FunctionAddress[~String] : -# 2702| v2702_3(void) = Call[~String] : func:r2702_2, this:r2702_1 -# 2702| mu2702_4(unknown) = ^CallSideEffect : ~m? -# 2702| v2702_5(void) = ^IndirectReadSideEffect[-1] : &:r2702_1, ~m? -# 2702| mu2702_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2702_1 -# 2702| r2702_7(bool) = Constant[0] : -# 2702| v2702_8(void) = ConditionalBranch : r2702_7 +# 35| Block 895 +# 35| r35_12517(glval) = VariableAddress[x894] : +# 35| mu35_12518(String) = Uninitialized[x894] : &:r35_12517 +# 35| r35_12519(glval) = FunctionAddress[String] : +# 35| v35_12520(void) = Call[String] : func:r35_12519, this:r35_12517 +# 35| mu35_12521(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12522(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12517 +# 35| r35_12523(glval) = VariableAddress[x894] : +# 35| r35_12524(glval) = FunctionAddress[~String] : +# 35| v35_12525(void) = Call[~String] : func:r35_12524, this:r35_12523 +# 35| mu35_12526(unknown) = ^CallSideEffect : ~m? +# 35| v35_12527(void) = ^IndirectReadSideEffect[-1] : &:r35_12523, ~m? +# 35| mu35_12528(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12523 +# 35| r35_12529(bool) = Constant[0] : +# 35| v35_12530(void) = ConditionalBranch : r35_12529 #-----| False -> Block 896 #-----| True (back edge) -> Block 895 -# 2704| Block 896 -# 2704| r2704_1(glval) = VariableAddress[x895] : -# 2704| mu2704_2(String) = Uninitialized[x895] : &:r2704_1 -# 2704| r2704_3(glval) = FunctionAddress[String] : -# 2704| v2704_4(void) = Call[String] : func:r2704_3, this:r2704_1 -# 2704| mu2704_5(unknown) = ^CallSideEffect : ~m? -# 2704| mu2704_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2704_1 -# 2705| r2705_1(glval) = VariableAddress[x895] : -# 2705| r2705_2(glval) = FunctionAddress[~String] : -# 2705| v2705_3(void) = Call[~String] : func:r2705_2, this:r2705_1 -# 2705| mu2705_4(unknown) = ^CallSideEffect : ~m? -# 2705| v2705_5(void) = ^IndirectReadSideEffect[-1] : &:r2705_1, ~m? -# 2705| mu2705_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2705_1 -# 2705| r2705_7(bool) = Constant[0] : -# 2705| v2705_8(void) = ConditionalBranch : r2705_7 +# 35| Block 896 +# 35| r35_12531(glval) = VariableAddress[x895] : +# 35| mu35_12532(String) = Uninitialized[x895] : &:r35_12531 +# 35| r35_12533(glval) = FunctionAddress[String] : +# 35| v35_12534(void) = Call[String] : func:r35_12533, this:r35_12531 +# 35| mu35_12535(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12536(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12531 +# 35| r35_12537(glval) = VariableAddress[x895] : +# 35| r35_12538(glval) = FunctionAddress[~String] : +# 35| v35_12539(void) = Call[~String] : func:r35_12538, this:r35_12537 +# 35| mu35_12540(unknown) = ^CallSideEffect : ~m? +# 35| v35_12541(void) = ^IndirectReadSideEffect[-1] : &:r35_12537, ~m? +# 35| mu35_12542(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12537 +# 35| r35_12543(bool) = Constant[0] : +# 35| v35_12544(void) = ConditionalBranch : r35_12543 #-----| False -> Block 897 #-----| True (back edge) -> Block 896 -# 2707| Block 897 -# 2707| r2707_1(glval) = VariableAddress[x896] : -# 2707| mu2707_2(String) = Uninitialized[x896] : &:r2707_1 -# 2707| r2707_3(glval) = FunctionAddress[String] : -# 2707| v2707_4(void) = Call[String] : func:r2707_3, this:r2707_1 -# 2707| mu2707_5(unknown) = ^CallSideEffect : ~m? -# 2707| mu2707_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2707_1 -# 2708| r2708_1(glval) = VariableAddress[x896] : -# 2708| r2708_2(glval) = FunctionAddress[~String] : -# 2708| v2708_3(void) = Call[~String] : func:r2708_2, this:r2708_1 -# 2708| mu2708_4(unknown) = ^CallSideEffect : ~m? -# 2708| v2708_5(void) = ^IndirectReadSideEffect[-1] : &:r2708_1, ~m? -# 2708| mu2708_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2708_1 -# 2708| r2708_7(bool) = Constant[0] : -# 2708| v2708_8(void) = ConditionalBranch : r2708_7 +# 35| Block 897 +# 35| r35_12545(glval) = VariableAddress[x896] : +# 35| mu35_12546(String) = Uninitialized[x896] : &:r35_12545 +# 35| r35_12547(glval) = FunctionAddress[String] : +# 35| v35_12548(void) = Call[String] : func:r35_12547, this:r35_12545 +# 35| mu35_12549(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12550(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12545 +# 35| r35_12551(glval) = VariableAddress[x896] : +# 35| r35_12552(glval) = FunctionAddress[~String] : +# 35| v35_12553(void) = Call[~String] : func:r35_12552, this:r35_12551 +# 35| mu35_12554(unknown) = ^CallSideEffect : ~m? +# 35| v35_12555(void) = ^IndirectReadSideEffect[-1] : &:r35_12551, ~m? +# 35| mu35_12556(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12551 +# 35| r35_12557(bool) = Constant[0] : +# 35| v35_12558(void) = ConditionalBranch : r35_12557 #-----| False -> Block 898 #-----| True (back edge) -> Block 897 -# 2710| Block 898 -# 2710| r2710_1(glval) = VariableAddress[x897] : -# 2710| mu2710_2(String) = Uninitialized[x897] : &:r2710_1 -# 2710| r2710_3(glval) = FunctionAddress[String] : -# 2710| v2710_4(void) = Call[String] : func:r2710_3, this:r2710_1 -# 2710| mu2710_5(unknown) = ^CallSideEffect : ~m? -# 2710| mu2710_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2710_1 -# 2711| r2711_1(glval) = VariableAddress[x897] : -# 2711| r2711_2(glval) = FunctionAddress[~String] : -# 2711| v2711_3(void) = Call[~String] : func:r2711_2, this:r2711_1 -# 2711| mu2711_4(unknown) = ^CallSideEffect : ~m? -# 2711| v2711_5(void) = ^IndirectReadSideEffect[-1] : &:r2711_1, ~m? -# 2711| mu2711_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2711_1 -# 2711| r2711_7(bool) = Constant[0] : -# 2711| v2711_8(void) = ConditionalBranch : r2711_7 +# 35| Block 898 +# 35| r35_12559(glval) = VariableAddress[x897] : +# 35| mu35_12560(String) = Uninitialized[x897] : &:r35_12559 +# 35| r35_12561(glval) = FunctionAddress[String] : +# 35| v35_12562(void) = Call[String] : func:r35_12561, this:r35_12559 +# 35| mu35_12563(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12564(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12559 +# 35| r35_12565(glval) = VariableAddress[x897] : +# 35| r35_12566(glval) = FunctionAddress[~String] : +# 35| v35_12567(void) = Call[~String] : func:r35_12566, this:r35_12565 +# 35| mu35_12568(unknown) = ^CallSideEffect : ~m? +# 35| v35_12569(void) = ^IndirectReadSideEffect[-1] : &:r35_12565, ~m? +# 35| mu35_12570(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12565 +# 35| r35_12571(bool) = Constant[0] : +# 35| v35_12572(void) = ConditionalBranch : r35_12571 #-----| False -> Block 899 #-----| True (back edge) -> Block 898 -# 2713| Block 899 -# 2713| r2713_1(glval) = VariableAddress[x898] : -# 2713| mu2713_2(String) = Uninitialized[x898] : &:r2713_1 -# 2713| r2713_3(glval) = FunctionAddress[String] : -# 2713| v2713_4(void) = Call[String] : func:r2713_3, this:r2713_1 -# 2713| mu2713_5(unknown) = ^CallSideEffect : ~m? -# 2713| mu2713_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2713_1 -# 2714| r2714_1(glval) = VariableAddress[x898] : -# 2714| r2714_2(glval) = FunctionAddress[~String] : -# 2714| v2714_3(void) = Call[~String] : func:r2714_2, this:r2714_1 -# 2714| mu2714_4(unknown) = ^CallSideEffect : ~m? -# 2714| v2714_5(void) = ^IndirectReadSideEffect[-1] : &:r2714_1, ~m? -# 2714| mu2714_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2714_1 -# 2714| r2714_7(bool) = Constant[0] : -# 2714| v2714_8(void) = ConditionalBranch : r2714_7 +# 35| Block 899 +# 35| r35_12573(glval) = VariableAddress[x898] : +# 35| mu35_12574(String) = Uninitialized[x898] : &:r35_12573 +# 35| r35_12575(glval) = FunctionAddress[String] : +# 35| v35_12576(void) = Call[String] : func:r35_12575, this:r35_12573 +# 35| mu35_12577(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12578(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12573 +# 35| r35_12579(glval) = VariableAddress[x898] : +# 35| r35_12580(glval) = FunctionAddress[~String] : +# 35| v35_12581(void) = Call[~String] : func:r35_12580, this:r35_12579 +# 35| mu35_12582(unknown) = ^CallSideEffect : ~m? +# 35| v35_12583(void) = ^IndirectReadSideEffect[-1] : &:r35_12579, ~m? +# 35| mu35_12584(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12579 +# 35| r35_12585(bool) = Constant[0] : +# 35| v35_12586(void) = ConditionalBranch : r35_12585 #-----| False -> Block 900 #-----| True (back edge) -> Block 899 -# 2716| Block 900 -# 2716| r2716_1(glval) = VariableAddress[x899] : -# 2716| mu2716_2(String) = Uninitialized[x899] : &:r2716_1 -# 2716| r2716_3(glval) = FunctionAddress[String] : -# 2716| v2716_4(void) = Call[String] : func:r2716_3, this:r2716_1 -# 2716| mu2716_5(unknown) = ^CallSideEffect : ~m? -# 2716| mu2716_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2716_1 -# 2717| r2717_1(glval) = VariableAddress[x899] : -# 2717| r2717_2(glval) = FunctionAddress[~String] : -# 2717| v2717_3(void) = Call[~String] : func:r2717_2, this:r2717_1 -# 2717| mu2717_4(unknown) = ^CallSideEffect : ~m? -# 2717| v2717_5(void) = ^IndirectReadSideEffect[-1] : &:r2717_1, ~m? -# 2717| mu2717_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2717_1 -# 2717| r2717_7(bool) = Constant[0] : -# 2717| v2717_8(void) = ConditionalBranch : r2717_7 +# 35| Block 900 +# 35| r35_12587(glval) = VariableAddress[x899] : +# 35| mu35_12588(String) = Uninitialized[x899] : &:r35_12587 +# 35| r35_12589(glval) = FunctionAddress[String] : +# 35| v35_12590(void) = Call[String] : func:r35_12589, this:r35_12587 +# 35| mu35_12591(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12592(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12587 +# 35| r35_12593(glval) = VariableAddress[x899] : +# 35| r35_12594(glval) = FunctionAddress[~String] : +# 35| v35_12595(void) = Call[~String] : func:r35_12594, this:r35_12593 +# 35| mu35_12596(unknown) = ^CallSideEffect : ~m? +# 35| v35_12597(void) = ^IndirectReadSideEffect[-1] : &:r35_12593, ~m? +# 35| mu35_12598(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12593 +# 35| r35_12599(bool) = Constant[0] : +# 35| v35_12600(void) = ConditionalBranch : r35_12599 #-----| False -> Block 901 #-----| True (back edge) -> Block 900 -# 2719| Block 901 -# 2719| r2719_1(glval) = VariableAddress[x900] : -# 2719| mu2719_2(String) = Uninitialized[x900] : &:r2719_1 -# 2719| r2719_3(glval) = FunctionAddress[String] : -# 2719| v2719_4(void) = Call[String] : func:r2719_3, this:r2719_1 -# 2719| mu2719_5(unknown) = ^CallSideEffect : ~m? -# 2719| mu2719_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2719_1 -# 2720| r2720_1(glval) = VariableAddress[x900] : -# 2720| r2720_2(glval) = FunctionAddress[~String] : -# 2720| v2720_3(void) = Call[~String] : func:r2720_2, this:r2720_1 -# 2720| mu2720_4(unknown) = ^CallSideEffect : ~m? -# 2720| v2720_5(void) = ^IndirectReadSideEffect[-1] : &:r2720_1, ~m? -# 2720| mu2720_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2720_1 -# 2720| r2720_7(bool) = Constant[0] : -# 2720| v2720_8(void) = ConditionalBranch : r2720_7 +# 35| Block 901 +# 35| r35_12601(glval) = VariableAddress[x900] : +# 35| mu35_12602(String) = Uninitialized[x900] : &:r35_12601 +# 35| r35_12603(glval) = FunctionAddress[String] : +# 35| v35_12604(void) = Call[String] : func:r35_12603, this:r35_12601 +# 35| mu35_12605(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12606(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12601 +# 35| r35_12607(glval) = VariableAddress[x900] : +# 35| r35_12608(glval) = FunctionAddress[~String] : +# 35| v35_12609(void) = Call[~String] : func:r35_12608, this:r35_12607 +# 35| mu35_12610(unknown) = ^CallSideEffect : ~m? +# 35| v35_12611(void) = ^IndirectReadSideEffect[-1] : &:r35_12607, ~m? +# 35| mu35_12612(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12607 +# 35| r35_12613(bool) = Constant[0] : +# 35| v35_12614(void) = ConditionalBranch : r35_12613 #-----| False -> Block 902 #-----| True (back edge) -> Block 901 -# 2722| Block 902 -# 2722| r2722_1(glval) = VariableAddress[x901] : -# 2722| mu2722_2(String) = Uninitialized[x901] : &:r2722_1 -# 2722| r2722_3(glval) = FunctionAddress[String] : -# 2722| v2722_4(void) = Call[String] : func:r2722_3, this:r2722_1 -# 2722| mu2722_5(unknown) = ^CallSideEffect : ~m? -# 2722| mu2722_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2722_1 -# 2723| r2723_1(glval) = VariableAddress[x901] : -# 2723| r2723_2(glval) = FunctionAddress[~String] : -# 2723| v2723_3(void) = Call[~String] : func:r2723_2, this:r2723_1 -# 2723| mu2723_4(unknown) = ^CallSideEffect : ~m? -# 2723| v2723_5(void) = ^IndirectReadSideEffect[-1] : &:r2723_1, ~m? -# 2723| mu2723_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2723_1 -# 2723| r2723_7(bool) = Constant[0] : -# 2723| v2723_8(void) = ConditionalBranch : r2723_7 +# 35| Block 902 +# 35| r35_12615(glval) = VariableAddress[x901] : +# 35| mu35_12616(String) = Uninitialized[x901] : &:r35_12615 +# 35| r35_12617(glval) = FunctionAddress[String] : +# 35| v35_12618(void) = Call[String] : func:r35_12617, this:r35_12615 +# 35| mu35_12619(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12620(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12615 +# 35| r35_12621(glval) = VariableAddress[x901] : +# 35| r35_12622(glval) = FunctionAddress[~String] : +# 35| v35_12623(void) = Call[~String] : func:r35_12622, this:r35_12621 +# 35| mu35_12624(unknown) = ^CallSideEffect : ~m? +# 35| v35_12625(void) = ^IndirectReadSideEffect[-1] : &:r35_12621, ~m? +# 35| mu35_12626(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12621 +# 35| r35_12627(bool) = Constant[0] : +# 35| v35_12628(void) = ConditionalBranch : r35_12627 #-----| False -> Block 903 #-----| True (back edge) -> Block 902 -# 2725| Block 903 -# 2725| r2725_1(glval) = VariableAddress[x902] : -# 2725| mu2725_2(String) = Uninitialized[x902] : &:r2725_1 -# 2725| r2725_3(glval) = FunctionAddress[String] : -# 2725| v2725_4(void) = Call[String] : func:r2725_3, this:r2725_1 -# 2725| mu2725_5(unknown) = ^CallSideEffect : ~m? -# 2725| mu2725_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2725_1 -# 2726| r2726_1(glval) = VariableAddress[x902] : -# 2726| r2726_2(glval) = FunctionAddress[~String] : -# 2726| v2726_3(void) = Call[~String] : func:r2726_2, this:r2726_1 -# 2726| mu2726_4(unknown) = ^CallSideEffect : ~m? -# 2726| v2726_5(void) = ^IndirectReadSideEffect[-1] : &:r2726_1, ~m? -# 2726| mu2726_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2726_1 -# 2726| r2726_7(bool) = Constant[0] : -# 2726| v2726_8(void) = ConditionalBranch : r2726_7 +# 35| Block 903 +# 35| r35_12629(glval) = VariableAddress[x902] : +# 35| mu35_12630(String) = Uninitialized[x902] : &:r35_12629 +# 35| r35_12631(glval) = FunctionAddress[String] : +# 35| v35_12632(void) = Call[String] : func:r35_12631, this:r35_12629 +# 35| mu35_12633(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12634(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12629 +# 35| r35_12635(glval) = VariableAddress[x902] : +# 35| r35_12636(glval) = FunctionAddress[~String] : +# 35| v35_12637(void) = Call[~String] : func:r35_12636, this:r35_12635 +# 35| mu35_12638(unknown) = ^CallSideEffect : ~m? +# 35| v35_12639(void) = ^IndirectReadSideEffect[-1] : &:r35_12635, ~m? +# 35| mu35_12640(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12635 +# 35| r35_12641(bool) = Constant[0] : +# 35| v35_12642(void) = ConditionalBranch : r35_12641 #-----| False -> Block 904 #-----| True (back edge) -> Block 903 -# 2728| Block 904 -# 2728| r2728_1(glval) = VariableAddress[x903] : -# 2728| mu2728_2(String) = Uninitialized[x903] : &:r2728_1 -# 2728| r2728_3(glval) = FunctionAddress[String] : -# 2728| v2728_4(void) = Call[String] : func:r2728_3, this:r2728_1 -# 2728| mu2728_5(unknown) = ^CallSideEffect : ~m? -# 2728| mu2728_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2728_1 -# 2729| r2729_1(glval) = VariableAddress[x903] : -# 2729| r2729_2(glval) = FunctionAddress[~String] : -# 2729| v2729_3(void) = Call[~String] : func:r2729_2, this:r2729_1 -# 2729| mu2729_4(unknown) = ^CallSideEffect : ~m? -# 2729| v2729_5(void) = ^IndirectReadSideEffect[-1] : &:r2729_1, ~m? -# 2729| mu2729_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2729_1 -# 2729| r2729_7(bool) = Constant[0] : -# 2729| v2729_8(void) = ConditionalBranch : r2729_7 +# 35| Block 904 +# 35| r35_12643(glval) = VariableAddress[x903] : +# 35| mu35_12644(String) = Uninitialized[x903] : &:r35_12643 +# 35| r35_12645(glval) = FunctionAddress[String] : +# 35| v35_12646(void) = Call[String] : func:r35_12645, this:r35_12643 +# 35| mu35_12647(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12648(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12643 +# 35| r35_12649(glval) = VariableAddress[x903] : +# 35| r35_12650(glval) = FunctionAddress[~String] : +# 35| v35_12651(void) = Call[~String] : func:r35_12650, this:r35_12649 +# 35| mu35_12652(unknown) = ^CallSideEffect : ~m? +# 35| v35_12653(void) = ^IndirectReadSideEffect[-1] : &:r35_12649, ~m? +# 35| mu35_12654(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12649 +# 35| r35_12655(bool) = Constant[0] : +# 35| v35_12656(void) = ConditionalBranch : r35_12655 #-----| False -> Block 905 #-----| True (back edge) -> Block 904 -# 2731| Block 905 -# 2731| r2731_1(glval) = VariableAddress[x904] : -# 2731| mu2731_2(String) = Uninitialized[x904] : &:r2731_1 -# 2731| r2731_3(glval) = FunctionAddress[String] : -# 2731| v2731_4(void) = Call[String] : func:r2731_3, this:r2731_1 -# 2731| mu2731_5(unknown) = ^CallSideEffect : ~m? -# 2731| mu2731_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2731_1 -# 2732| r2732_1(glval) = VariableAddress[x904] : -# 2732| r2732_2(glval) = FunctionAddress[~String] : -# 2732| v2732_3(void) = Call[~String] : func:r2732_2, this:r2732_1 -# 2732| mu2732_4(unknown) = ^CallSideEffect : ~m? -# 2732| v2732_5(void) = ^IndirectReadSideEffect[-1] : &:r2732_1, ~m? -# 2732| mu2732_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2732_1 -# 2732| r2732_7(bool) = Constant[0] : -# 2732| v2732_8(void) = ConditionalBranch : r2732_7 +# 35| Block 905 +# 35| r35_12657(glval) = VariableAddress[x904] : +# 35| mu35_12658(String) = Uninitialized[x904] : &:r35_12657 +# 35| r35_12659(glval) = FunctionAddress[String] : +# 35| v35_12660(void) = Call[String] : func:r35_12659, this:r35_12657 +# 35| mu35_12661(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12662(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12657 +# 35| r35_12663(glval) = VariableAddress[x904] : +# 35| r35_12664(glval) = FunctionAddress[~String] : +# 35| v35_12665(void) = Call[~String] : func:r35_12664, this:r35_12663 +# 35| mu35_12666(unknown) = ^CallSideEffect : ~m? +# 35| v35_12667(void) = ^IndirectReadSideEffect[-1] : &:r35_12663, ~m? +# 35| mu35_12668(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12663 +# 35| r35_12669(bool) = Constant[0] : +# 35| v35_12670(void) = ConditionalBranch : r35_12669 #-----| False -> Block 906 #-----| True (back edge) -> Block 905 -# 2734| Block 906 -# 2734| r2734_1(glval) = VariableAddress[x905] : -# 2734| mu2734_2(String) = Uninitialized[x905] : &:r2734_1 -# 2734| r2734_3(glval) = FunctionAddress[String] : -# 2734| v2734_4(void) = Call[String] : func:r2734_3, this:r2734_1 -# 2734| mu2734_5(unknown) = ^CallSideEffect : ~m? -# 2734| mu2734_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2734_1 -# 2735| r2735_1(glval) = VariableAddress[x905] : -# 2735| r2735_2(glval) = FunctionAddress[~String] : -# 2735| v2735_3(void) = Call[~String] : func:r2735_2, this:r2735_1 -# 2735| mu2735_4(unknown) = ^CallSideEffect : ~m? -# 2735| v2735_5(void) = ^IndirectReadSideEffect[-1] : &:r2735_1, ~m? -# 2735| mu2735_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2735_1 -# 2735| r2735_7(bool) = Constant[0] : -# 2735| v2735_8(void) = ConditionalBranch : r2735_7 +# 35| Block 906 +# 35| r35_12671(glval) = VariableAddress[x905] : +# 35| mu35_12672(String) = Uninitialized[x905] : &:r35_12671 +# 35| r35_12673(glval) = FunctionAddress[String] : +# 35| v35_12674(void) = Call[String] : func:r35_12673, this:r35_12671 +# 35| mu35_12675(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12676(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12671 +# 35| r35_12677(glval) = VariableAddress[x905] : +# 35| r35_12678(glval) = FunctionAddress[~String] : +# 35| v35_12679(void) = Call[~String] : func:r35_12678, this:r35_12677 +# 35| mu35_12680(unknown) = ^CallSideEffect : ~m? +# 35| v35_12681(void) = ^IndirectReadSideEffect[-1] : &:r35_12677, ~m? +# 35| mu35_12682(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12677 +# 35| r35_12683(bool) = Constant[0] : +# 35| v35_12684(void) = ConditionalBranch : r35_12683 #-----| False -> Block 907 #-----| True (back edge) -> Block 906 -# 2737| Block 907 -# 2737| r2737_1(glval) = VariableAddress[x906] : -# 2737| mu2737_2(String) = Uninitialized[x906] : &:r2737_1 -# 2737| r2737_3(glval) = FunctionAddress[String] : -# 2737| v2737_4(void) = Call[String] : func:r2737_3, this:r2737_1 -# 2737| mu2737_5(unknown) = ^CallSideEffect : ~m? -# 2737| mu2737_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2737_1 -# 2738| r2738_1(glval) = VariableAddress[x906] : -# 2738| r2738_2(glval) = FunctionAddress[~String] : -# 2738| v2738_3(void) = Call[~String] : func:r2738_2, this:r2738_1 -# 2738| mu2738_4(unknown) = ^CallSideEffect : ~m? -# 2738| v2738_5(void) = ^IndirectReadSideEffect[-1] : &:r2738_1, ~m? -# 2738| mu2738_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2738_1 -# 2738| r2738_7(bool) = Constant[0] : -# 2738| v2738_8(void) = ConditionalBranch : r2738_7 +# 35| Block 907 +# 35| r35_12685(glval) = VariableAddress[x906] : +# 35| mu35_12686(String) = Uninitialized[x906] : &:r35_12685 +# 35| r35_12687(glval) = FunctionAddress[String] : +# 35| v35_12688(void) = Call[String] : func:r35_12687, this:r35_12685 +# 35| mu35_12689(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12690(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12685 +# 35| r35_12691(glval) = VariableAddress[x906] : +# 35| r35_12692(glval) = FunctionAddress[~String] : +# 35| v35_12693(void) = Call[~String] : func:r35_12692, this:r35_12691 +# 35| mu35_12694(unknown) = ^CallSideEffect : ~m? +# 35| v35_12695(void) = ^IndirectReadSideEffect[-1] : &:r35_12691, ~m? +# 35| mu35_12696(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12691 +# 35| r35_12697(bool) = Constant[0] : +# 35| v35_12698(void) = ConditionalBranch : r35_12697 #-----| False -> Block 908 #-----| True (back edge) -> Block 907 -# 2740| Block 908 -# 2740| r2740_1(glval) = VariableAddress[x907] : -# 2740| mu2740_2(String) = Uninitialized[x907] : &:r2740_1 -# 2740| r2740_3(glval) = FunctionAddress[String] : -# 2740| v2740_4(void) = Call[String] : func:r2740_3, this:r2740_1 -# 2740| mu2740_5(unknown) = ^CallSideEffect : ~m? -# 2740| mu2740_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2740_1 -# 2741| r2741_1(glval) = VariableAddress[x907] : -# 2741| r2741_2(glval) = FunctionAddress[~String] : -# 2741| v2741_3(void) = Call[~String] : func:r2741_2, this:r2741_1 -# 2741| mu2741_4(unknown) = ^CallSideEffect : ~m? -# 2741| v2741_5(void) = ^IndirectReadSideEffect[-1] : &:r2741_1, ~m? -# 2741| mu2741_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2741_1 -# 2741| r2741_7(bool) = Constant[0] : -# 2741| v2741_8(void) = ConditionalBranch : r2741_7 +# 35| Block 908 +# 35| r35_12699(glval) = VariableAddress[x907] : +# 35| mu35_12700(String) = Uninitialized[x907] : &:r35_12699 +# 35| r35_12701(glval) = FunctionAddress[String] : +# 35| v35_12702(void) = Call[String] : func:r35_12701, this:r35_12699 +# 35| mu35_12703(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12704(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12699 +# 35| r35_12705(glval) = VariableAddress[x907] : +# 35| r35_12706(glval) = FunctionAddress[~String] : +# 35| v35_12707(void) = Call[~String] : func:r35_12706, this:r35_12705 +# 35| mu35_12708(unknown) = ^CallSideEffect : ~m? +# 35| v35_12709(void) = ^IndirectReadSideEffect[-1] : &:r35_12705, ~m? +# 35| mu35_12710(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12705 +# 35| r35_12711(bool) = Constant[0] : +# 35| v35_12712(void) = ConditionalBranch : r35_12711 #-----| False -> Block 909 #-----| True (back edge) -> Block 908 -# 2743| Block 909 -# 2743| r2743_1(glval) = VariableAddress[x908] : -# 2743| mu2743_2(String) = Uninitialized[x908] : &:r2743_1 -# 2743| r2743_3(glval) = FunctionAddress[String] : -# 2743| v2743_4(void) = Call[String] : func:r2743_3, this:r2743_1 -# 2743| mu2743_5(unknown) = ^CallSideEffect : ~m? -# 2743| mu2743_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2743_1 -# 2744| r2744_1(glval) = VariableAddress[x908] : -# 2744| r2744_2(glval) = FunctionAddress[~String] : -# 2744| v2744_3(void) = Call[~String] : func:r2744_2, this:r2744_1 -# 2744| mu2744_4(unknown) = ^CallSideEffect : ~m? -# 2744| v2744_5(void) = ^IndirectReadSideEffect[-1] : &:r2744_1, ~m? -# 2744| mu2744_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2744_1 -# 2744| r2744_7(bool) = Constant[0] : -# 2744| v2744_8(void) = ConditionalBranch : r2744_7 +# 35| Block 909 +# 35| r35_12713(glval) = VariableAddress[x908] : +# 35| mu35_12714(String) = Uninitialized[x908] : &:r35_12713 +# 35| r35_12715(glval) = FunctionAddress[String] : +# 35| v35_12716(void) = Call[String] : func:r35_12715, this:r35_12713 +# 35| mu35_12717(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12718(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12713 +# 35| r35_12719(glval) = VariableAddress[x908] : +# 35| r35_12720(glval) = FunctionAddress[~String] : +# 35| v35_12721(void) = Call[~String] : func:r35_12720, this:r35_12719 +# 35| mu35_12722(unknown) = ^CallSideEffect : ~m? +# 35| v35_12723(void) = ^IndirectReadSideEffect[-1] : &:r35_12719, ~m? +# 35| mu35_12724(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12719 +# 35| r35_12725(bool) = Constant[0] : +# 35| v35_12726(void) = ConditionalBranch : r35_12725 #-----| False -> Block 910 #-----| True (back edge) -> Block 909 -# 2746| Block 910 -# 2746| r2746_1(glval) = VariableAddress[x909] : -# 2746| mu2746_2(String) = Uninitialized[x909] : &:r2746_1 -# 2746| r2746_3(glval) = FunctionAddress[String] : -# 2746| v2746_4(void) = Call[String] : func:r2746_3, this:r2746_1 -# 2746| mu2746_5(unknown) = ^CallSideEffect : ~m? -# 2746| mu2746_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2746_1 -# 2747| r2747_1(glval) = VariableAddress[x909] : -# 2747| r2747_2(glval) = FunctionAddress[~String] : -# 2747| v2747_3(void) = Call[~String] : func:r2747_2, this:r2747_1 -# 2747| mu2747_4(unknown) = ^CallSideEffect : ~m? -# 2747| v2747_5(void) = ^IndirectReadSideEffect[-1] : &:r2747_1, ~m? -# 2747| mu2747_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2747_1 -# 2747| r2747_7(bool) = Constant[0] : -# 2747| v2747_8(void) = ConditionalBranch : r2747_7 +# 35| Block 910 +# 35| r35_12727(glval) = VariableAddress[x909] : +# 35| mu35_12728(String) = Uninitialized[x909] : &:r35_12727 +# 35| r35_12729(glval) = FunctionAddress[String] : +# 35| v35_12730(void) = Call[String] : func:r35_12729, this:r35_12727 +# 35| mu35_12731(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12732(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12727 +# 35| r35_12733(glval) = VariableAddress[x909] : +# 35| r35_12734(glval) = FunctionAddress[~String] : +# 35| v35_12735(void) = Call[~String] : func:r35_12734, this:r35_12733 +# 35| mu35_12736(unknown) = ^CallSideEffect : ~m? +# 35| v35_12737(void) = ^IndirectReadSideEffect[-1] : &:r35_12733, ~m? +# 35| mu35_12738(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12733 +# 35| r35_12739(bool) = Constant[0] : +# 35| v35_12740(void) = ConditionalBranch : r35_12739 #-----| False -> Block 911 #-----| True (back edge) -> Block 910 -# 2749| Block 911 -# 2749| r2749_1(glval) = VariableAddress[x910] : -# 2749| mu2749_2(String) = Uninitialized[x910] : &:r2749_1 -# 2749| r2749_3(glval) = FunctionAddress[String] : -# 2749| v2749_4(void) = Call[String] : func:r2749_3, this:r2749_1 -# 2749| mu2749_5(unknown) = ^CallSideEffect : ~m? -# 2749| mu2749_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2749_1 -# 2750| r2750_1(glval) = VariableAddress[x910] : -# 2750| r2750_2(glval) = FunctionAddress[~String] : -# 2750| v2750_3(void) = Call[~String] : func:r2750_2, this:r2750_1 -# 2750| mu2750_4(unknown) = ^CallSideEffect : ~m? -# 2750| v2750_5(void) = ^IndirectReadSideEffect[-1] : &:r2750_1, ~m? -# 2750| mu2750_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2750_1 -# 2750| r2750_7(bool) = Constant[0] : -# 2750| v2750_8(void) = ConditionalBranch : r2750_7 +# 35| Block 911 +# 35| r35_12741(glval) = VariableAddress[x910] : +# 35| mu35_12742(String) = Uninitialized[x910] : &:r35_12741 +# 35| r35_12743(glval) = FunctionAddress[String] : +# 35| v35_12744(void) = Call[String] : func:r35_12743, this:r35_12741 +# 35| mu35_12745(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12746(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12741 +# 35| r35_12747(glval) = VariableAddress[x910] : +# 35| r35_12748(glval) = FunctionAddress[~String] : +# 35| v35_12749(void) = Call[~String] : func:r35_12748, this:r35_12747 +# 35| mu35_12750(unknown) = ^CallSideEffect : ~m? +# 35| v35_12751(void) = ^IndirectReadSideEffect[-1] : &:r35_12747, ~m? +# 35| mu35_12752(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12747 +# 35| r35_12753(bool) = Constant[0] : +# 35| v35_12754(void) = ConditionalBranch : r35_12753 #-----| False -> Block 912 #-----| True (back edge) -> Block 911 -# 2752| Block 912 -# 2752| r2752_1(glval) = VariableAddress[x911] : -# 2752| mu2752_2(String) = Uninitialized[x911] : &:r2752_1 -# 2752| r2752_3(glval) = FunctionAddress[String] : -# 2752| v2752_4(void) = Call[String] : func:r2752_3, this:r2752_1 -# 2752| mu2752_5(unknown) = ^CallSideEffect : ~m? -# 2752| mu2752_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2752_1 -# 2753| r2753_1(glval) = VariableAddress[x911] : -# 2753| r2753_2(glval) = FunctionAddress[~String] : -# 2753| v2753_3(void) = Call[~String] : func:r2753_2, this:r2753_1 -# 2753| mu2753_4(unknown) = ^CallSideEffect : ~m? -# 2753| v2753_5(void) = ^IndirectReadSideEffect[-1] : &:r2753_1, ~m? -# 2753| mu2753_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2753_1 -# 2753| r2753_7(bool) = Constant[0] : -# 2753| v2753_8(void) = ConditionalBranch : r2753_7 +# 35| Block 912 +# 35| r35_12755(glval) = VariableAddress[x911] : +# 35| mu35_12756(String) = Uninitialized[x911] : &:r35_12755 +# 35| r35_12757(glval) = FunctionAddress[String] : +# 35| v35_12758(void) = Call[String] : func:r35_12757, this:r35_12755 +# 35| mu35_12759(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12760(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12755 +# 35| r35_12761(glval) = VariableAddress[x911] : +# 35| r35_12762(glval) = FunctionAddress[~String] : +# 35| v35_12763(void) = Call[~String] : func:r35_12762, this:r35_12761 +# 35| mu35_12764(unknown) = ^CallSideEffect : ~m? +# 35| v35_12765(void) = ^IndirectReadSideEffect[-1] : &:r35_12761, ~m? +# 35| mu35_12766(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12761 +# 35| r35_12767(bool) = Constant[0] : +# 35| v35_12768(void) = ConditionalBranch : r35_12767 #-----| False -> Block 913 #-----| True (back edge) -> Block 912 -# 2755| Block 913 -# 2755| r2755_1(glval) = VariableAddress[x912] : -# 2755| mu2755_2(String) = Uninitialized[x912] : &:r2755_1 -# 2755| r2755_3(glval) = FunctionAddress[String] : -# 2755| v2755_4(void) = Call[String] : func:r2755_3, this:r2755_1 -# 2755| mu2755_5(unknown) = ^CallSideEffect : ~m? -# 2755| mu2755_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2755_1 -# 2756| r2756_1(glval) = VariableAddress[x912] : -# 2756| r2756_2(glval) = FunctionAddress[~String] : -# 2756| v2756_3(void) = Call[~String] : func:r2756_2, this:r2756_1 -# 2756| mu2756_4(unknown) = ^CallSideEffect : ~m? -# 2756| v2756_5(void) = ^IndirectReadSideEffect[-1] : &:r2756_1, ~m? -# 2756| mu2756_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2756_1 -# 2756| r2756_7(bool) = Constant[0] : -# 2756| v2756_8(void) = ConditionalBranch : r2756_7 +# 35| Block 913 +# 35| r35_12769(glval) = VariableAddress[x912] : +# 35| mu35_12770(String) = Uninitialized[x912] : &:r35_12769 +# 35| r35_12771(glval) = FunctionAddress[String] : +# 35| v35_12772(void) = Call[String] : func:r35_12771, this:r35_12769 +# 35| mu35_12773(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12774(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12769 +# 35| r35_12775(glval) = VariableAddress[x912] : +# 35| r35_12776(glval) = FunctionAddress[~String] : +# 35| v35_12777(void) = Call[~String] : func:r35_12776, this:r35_12775 +# 35| mu35_12778(unknown) = ^CallSideEffect : ~m? +# 35| v35_12779(void) = ^IndirectReadSideEffect[-1] : &:r35_12775, ~m? +# 35| mu35_12780(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12775 +# 35| r35_12781(bool) = Constant[0] : +# 35| v35_12782(void) = ConditionalBranch : r35_12781 #-----| False -> Block 914 #-----| True (back edge) -> Block 913 -# 2758| Block 914 -# 2758| r2758_1(glval) = VariableAddress[x913] : -# 2758| mu2758_2(String) = Uninitialized[x913] : &:r2758_1 -# 2758| r2758_3(glval) = FunctionAddress[String] : -# 2758| v2758_4(void) = Call[String] : func:r2758_3, this:r2758_1 -# 2758| mu2758_5(unknown) = ^CallSideEffect : ~m? -# 2758| mu2758_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2758_1 -# 2759| r2759_1(glval) = VariableAddress[x913] : -# 2759| r2759_2(glval) = FunctionAddress[~String] : -# 2759| v2759_3(void) = Call[~String] : func:r2759_2, this:r2759_1 -# 2759| mu2759_4(unknown) = ^CallSideEffect : ~m? -# 2759| v2759_5(void) = ^IndirectReadSideEffect[-1] : &:r2759_1, ~m? -# 2759| mu2759_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2759_1 -# 2759| r2759_7(bool) = Constant[0] : -# 2759| v2759_8(void) = ConditionalBranch : r2759_7 +# 35| Block 914 +# 35| r35_12783(glval) = VariableAddress[x913] : +# 35| mu35_12784(String) = Uninitialized[x913] : &:r35_12783 +# 35| r35_12785(glval) = FunctionAddress[String] : +# 35| v35_12786(void) = Call[String] : func:r35_12785, this:r35_12783 +# 35| mu35_12787(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12788(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12783 +# 35| r35_12789(glval) = VariableAddress[x913] : +# 35| r35_12790(glval) = FunctionAddress[~String] : +# 35| v35_12791(void) = Call[~String] : func:r35_12790, this:r35_12789 +# 35| mu35_12792(unknown) = ^CallSideEffect : ~m? +# 35| v35_12793(void) = ^IndirectReadSideEffect[-1] : &:r35_12789, ~m? +# 35| mu35_12794(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12789 +# 35| r35_12795(bool) = Constant[0] : +# 35| v35_12796(void) = ConditionalBranch : r35_12795 #-----| False -> Block 915 #-----| True (back edge) -> Block 914 -# 2761| Block 915 -# 2761| r2761_1(glval) = VariableAddress[x914] : -# 2761| mu2761_2(String) = Uninitialized[x914] : &:r2761_1 -# 2761| r2761_3(glval) = FunctionAddress[String] : -# 2761| v2761_4(void) = Call[String] : func:r2761_3, this:r2761_1 -# 2761| mu2761_5(unknown) = ^CallSideEffect : ~m? -# 2761| mu2761_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2761_1 -# 2762| r2762_1(glval) = VariableAddress[x914] : -# 2762| r2762_2(glval) = FunctionAddress[~String] : -# 2762| v2762_3(void) = Call[~String] : func:r2762_2, this:r2762_1 -# 2762| mu2762_4(unknown) = ^CallSideEffect : ~m? -# 2762| v2762_5(void) = ^IndirectReadSideEffect[-1] : &:r2762_1, ~m? -# 2762| mu2762_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2762_1 -# 2762| r2762_7(bool) = Constant[0] : -# 2762| v2762_8(void) = ConditionalBranch : r2762_7 +# 35| Block 915 +# 35| r35_12797(glval) = VariableAddress[x914] : +# 35| mu35_12798(String) = Uninitialized[x914] : &:r35_12797 +# 35| r35_12799(glval) = FunctionAddress[String] : +# 35| v35_12800(void) = Call[String] : func:r35_12799, this:r35_12797 +# 35| mu35_12801(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12802(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12797 +# 35| r35_12803(glval) = VariableAddress[x914] : +# 35| r35_12804(glval) = FunctionAddress[~String] : +# 35| v35_12805(void) = Call[~String] : func:r35_12804, this:r35_12803 +# 35| mu35_12806(unknown) = ^CallSideEffect : ~m? +# 35| v35_12807(void) = ^IndirectReadSideEffect[-1] : &:r35_12803, ~m? +# 35| mu35_12808(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12803 +# 35| r35_12809(bool) = Constant[0] : +# 35| v35_12810(void) = ConditionalBranch : r35_12809 #-----| False -> Block 916 #-----| True (back edge) -> Block 915 -# 2764| Block 916 -# 2764| r2764_1(glval) = VariableAddress[x915] : -# 2764| mu2764_2(String) = Uninitialized[x915] : &:r2764_1 -# 2764| r2764_3(glval) = FunctionAddress[String] : -# 2764| v2764_4(void) = Call[String] : func:r2764_3, this:r2764_1 -# 2764| mu2764_5(unknown) = ^CallSideEffect : ~m? -# 2764| mu2764_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2764_1 -# 2765| r2765_1(glval) = VariableAddress[x915] : -# 2765| r2765_2(glval) = FunctionAddress[~String] : -# 2765| v2765_3(void) = Call[~String] : func:r2765_2, this:r2765_1 -# 2765| mu2765_4(unknown) = ^CallSideEffect : ~m? -# 2765| v2765_5(void) = ^IndirectReadSideEffect[-1] : &:r2765_1, ~m? -# 2765| mu2765_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2765_1 -# 2765| r2765_7(bool) = Constant[0] : -# 2765| v2765_8(void) = ConditionalBranch : r2765_7 +# 35| Block 916 +# 35| r35_12811(glval) = VariableAddress[x915] : +# 35| mu35_12812(String) = Uninitialized[x915] : &:r35_12811 +# 35| r35_12813(glval) = FunctionAddress[String] : +# 35| v35_12814(void) = Call[String] : func:r35_12813, this:r35_12811 +# 35| mu35_12815(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12816(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12811 +# 35| r35_12817(glval) = VariableAddress[x915] : +# 35| r35_12818(glval) = FunctionAddress[~String] : +# 35| v35_12819(void) = Call[~String] : func:r35_12818, this:r35_12817 +# 35| mu35_12820(unknown) = ^CallSideEffect : ~m? +# 35| v35_12821(void) = ^IndirectReadSideEffect[-1] : &:r35_12817, ~m? +# 35| mu35_12822(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12817 +# 35| r35_12823(bool) = Constant[0] : +# 35| v35_12824(void) = ConditionalBranch : r35_12823 #-----| False -> Block 917 #-----| True (back edge) -> Block 916 -# 2767| Block 917 -# 2767| r2767_1(glval) = VariableAddress[x916] : -# 2767| mu2767_2(String) = Uninitialized[x916] : &:r2767_1 -# 2767| r2767_3(glval) = FunctionAddress[String] : -# 2767| v2767_4(void) = Call[String] : func:r2767_3, this:r2767_1 -# 2767| mu2767_5(unknown) = ^CallSideEffect : ~m? -# 2767| mu2767_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2767_1 -# 2768| r2768_1(glval) = VariableAddress[x916] : -# 2768| r2768_2(glval) = FunctionAddress[~String] : -# 2768| v2768_3(void) = Call[~String] : func:r2768_2, this:r2768_1 -# 2768| mu2768_4(unknown) = ^CallSideEffect : ~m? -# 2768| v2768_5(void) = ^IndirectReadSideEffect[-1] : &:r2768_1, ~m? -# 2768| mu2768_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2768_1 -# 2768| r2768_7(bool) = Constant[0] : -# 2768| v2768_8(void) = ConditionalBranch : r2768_7 +# 35| Block 917 +# 35| r35_12825(glval) = VariableAddress[x916] : +# 35| mu35_12826(String) = Uninitialized[x916] : &:r35_12825 +# 35| r35_12827(glval) = FunctionAddress[String] : +# 35| v35_12828(void) = Call[String] : func:r35_12827, this:r35_12825 +# 35| mu35_12829(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12830(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12825 +# 35| r35_12831(glval) = VariableAddress[x916] : +# 35| r35_12832(glval) = FunctionAddress[~String] : +# 35| v35_12833(void) = Call[~String] : func:r35_12832, this:r35_12831 +# 35| mu35_12834(unknown) = ^CallSideEffect : ~m? +# 35| v35_12835(void) = ^IndirectReadSideEffect[-1] : &:r35_12831, ~m? +# 35| mu35_12836(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12831 +# 35| r35_12837(bool) = Constant[0] : +# 35| v35_12838(void) = ConditionalBranch : r35_12837 #-----| False -> Block 918 #-----| True (back edge) -> Block 917 -# 2770| Block 918 -# 2770| r2770_1(glval) = VariableAddress[x917] : -# 2770| mu2770_2(String) = Uninitialized[x917] : &:r2770_1 -# 2770| r2770_3(glval) = FunctionAddress[String] : -# 2770| v2770_4(void) = Call[String] : func:r2770_3, this:r2770_1 -# 2770| mu2770_5(unknown) = ^CallSideEffect : ~m? -# 2770| mu2770_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2770_1 -# 2771| r2771_1(glval) = VariableAddress[x917] : -# 2771| r2771_2(glval) = FunctionAddress[~String] : -# 2771| v2771_3(void) = Call[~String] : func:r2771_2, this:r2771_1 -# 2771| mu2771_4(unknown) = ^CallSideEffect : ~m? -# 2771| v2771_5(void) = ^IndirectReadSideEffect[-1] : &:r2771_1, ~m? -# 2771| mu2771_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2771_1 -# 2771| r2771_7(bool) = Constant[0] : -# 2771| v2771_8(void) = ConditionalBranch : r2771_7 +# 35| Block 918 +# 35| r35_12839(glval) = VariableAddress[x917] : +# 35| mu35_12840(String) = Uninitialized[x917] : &:r35_12839 +# 35| r35_12841(glval) = FunctionAddress[String] : +# 35| v35_12842(void) = Call[String] : func:r35_12841, this:r35_12839 +# 35| mu35_12843(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12844(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12839 +# 35| r35_12845(glval) = VariableAddress[x917] : +# 35| r35_12846(glval) = FunctionAddress[~String] : +# 35| v35_12847(void) = Call[~String] : func:r35_12846, this:r35_12845 +# 35| mu35_12848(unknown) = ^CallSideEffect : ~m? +# 35| v35_12849(void) = ^IndirectReadSideEffect[-1] : &:r35_12845, ~m? +# 35| mu35_12850(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12845 +# 35| r35_12851(bool) = Constant[0] : +# 35| v35_12852(void) = ConditionalBranch : r35_12851 #-----| False -> Block 919 #-----| True (back edge) -> Block 918 -# 2773| Block 919 -# 2773| r2773_1(glval) = VariableAddress[x918] : -# 2773| mu2773_2(String) = Uninitialized[x918] : &:r2773_1 -# 2773| r2773_3(glval) = FunctionAddress[String] : -# 2773| v2773_4(void) = Call[String] : func:r2773_3, this:r2773_1 -# 2773| mu2773_5(unknown) = ^CallSideEffect : ~m? -# 2773| mu2773_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2773_1 -# 2774| r2774_1(glval) = VariableAddress[x918] : -# 2774| r2774_2(glval) = FunctionAddress[~String] : -# 2774| v2774_3(void) = Call[~String] : func:r2774_2, this:r2774_1 -# 2774| mu2774_4(unknown) = ^CallSideEffect : ~m? -# 2774| v2774_5(void) = ^IndirectReadSideEffect[-1] : &:r2774_1, ~m? -# 2774| mu2774_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2774_1 -# 2774| r2774_7(bool) = Constant[0] : -# 2774| v2774_8(void) = ConditionalBranch : r2774_7 +# 35| Block 919 +# 35| r35_12853(glval) = VariableAddress[x918] : +# 35| mu35_12854(String) = Uninitialized[x918] : &:r35_12853 +# 35| r35_12855(glval) = FunctionAddress[String] : +# 35| v35_12856(void) = Call[String] : func:r35_12855, this:r35_12853 +# 35| mu35_12857(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12858(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12853 +# 35| r35_12859(glval) = VariableAddress[x918] : +# 35| r35_12860(glval) = FunctionAddress[~String] : +# 35| v35_12861(void) = Call[~String] : func:r35_12860, this:r35_12859 +# 35| mu35_12862(unknown) = ^CallSideEffect : ~m? +# 35| v35_12863(void) = ^IndirectReadSideEffect[-1] : &:r35_12859, ~m? +# 35| mu35_12864(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12859 +# 35| r35_12865(bool) = Constant[0] : +# 35| v35_12866(void) = ConditionalBranch : r35_12865 #-----| False -> Block 920 #-----| True (back edge) -> Block 919 -# 2776| Block 920 -# 2776| r2776_1(glval) = VariableAddress[x919] : -# 2776| mu2776_2(String) = Uninitialized[x919] : &:r2776_1 -# 2776| r2776_3(glval) = FunctionAddress[String] : -# 2776| v2776_4(void) = Call[String] : func:r2776_3, this:r2776_1 -# 2776| mu2776_5(unknown) = ^CallSideEffect : ~m? -# 2776| mu2776_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2776_1 -# 2777| r2777_1(glval) = VariableAddress[x919] : -# 2777| r2777_2(glval) = FunctionAddress[~String] : -# 2777| v2777_3(void) = Call[~String] : func:r2777_2, this:r2777_1 -# 2777| mu2777_4(unknown) = ^CallSideEffect : ~m? -# 2777| v2777_5(void) = ^IndirectReadSideEffect[-1] : &:r2777_1, ~m? -# 2777| mu2777_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2777_1 -# 2777| r2777_7(bool) = Constant[0] : -# 2777| v2777_8(void) = ConditionalBranch : r2777_7 +# 35| Block 920 +# 35| r35_12867(glval) = VariableAddress[x919] : +# 35| mu35_12868(String) = Uninitialized[x919] : &:r35_12867 +# 35| r35_12869(glval) = FunctionAddress[String] : +# 35| v35_12870(void) = Call[String] : func:r35_12869, this:r35_12867 +# 35| mu35_12871(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12872(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12867 +# 35| r35_12873(glval) = VariableAddress[x919] : +# 35| r35_12874(glval) = FunctionAddress[~String] : +# 35| v35_12875(void) = Call[~String] : func:r35_12874, this:r35_12873 +# 35| mu35_12876(unknown) = ^CallSideEffect : ~m? +# 35| v35_12877(void) = ^IndirectReadSideEffect[-1] : &:r35_12873, ~m? +# 35| mu35_12878(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12873 +# 35| r35_12879(bool) = Constant[0] : +# 35| v35_12880(void) = ConditionalBranch : r35_12879 #-----| False -> Block 921 #-----| True (back edge) -> Block 920 -# 2779| Block 921 -# 2779| r2779_1(glval) = VariableAddress[x920] : -# 2779| mu2779_2(String) = Uninitialized[x920] : &:r2779_1 -# 2779| r2779_3(glval) = FunctionAddress[String] : -# 2779| v2779_4(void) = Call[String] : func:r2779_3, this:r2779_1 -# 2779| mu2779_5(unknown) = ^CallSideEffect : ~m? -# 2779| mu2779_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2779_1 -# 2780| r2780_1(glval) = VariableAddress[x920] : -# 2780| r2780_2(glval) = FunctionAddress[~String] : -# 2780| v2780_3(void) = Call[~String] : func:r2780_2, this:r2780_1 -# 2780| mu2780_4(unknown) = ^CallSideEffect : ~m? -# 2780| v2780_5(void) = ^IndirectReadSideEffect[-1] : &:r2780_1, ~m? -# 2780| mu2780_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2780_1 -# 2780| r2780_7(bool) = Constant[0] : -# 2780| v2780_8(void) = ConditionalBranch : r2780_7 +# 35| Block 921 +# 35| r35_12881(glval) = VariableAddress[x920] : +# 35| mu35_12882(String) = Uninitialized[x920] : &:r35_12881 +# 35| r35_12883(glval) = FunctionAddress[String] : +# 35| v35_12884(void) = Call[String] : func:r35_12883, this:r35_12881 +# 35| mu35_12885(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12886(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12881 +# 35| r35_12887(glval) = VariableAddress[x920] : +# 35| r35_12888(glval) = FunctionAddress[~String] : +# 35| v35_12889(void) = Call[~String] : func:r35_12888, this:r35_12887 +# 35| mu35_12890(unknown) = ^CallSideEffect : ~m? +# 35| v35_12891(void) = ^IndirectReadSideEffect[-1] : &:r35_12887, ~m? +# 35| mu35_12892(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12887 +# 35| r35_12893(bool) = Constant[0] : +# 35| v35_12894(void) = ConditionalBranch : r35_12893 #-----| False -> Block 922 #-----| True (back edge) -> Block 921 -# 2782| Block 922 -# 2782| r2782_1(glval) = VariableAddress[x921] : -# 2782| mu2782_2(String) = Uninitialized[x921] : &:r2782_1 -# 2782| r2782_3(glval) = FunctionAddress[String] : -# 2782| v2782_4(void) = Call[String] : func:r2782_3, this:r2782_1 -# 2782| mu2782_5(unknown) = ^CallSideEffect : ~m? -# 2782| mu2782_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2782_1 -# 2783| r2783_1(glval) = VariableAddress[x921] : -# 2783| r2783_2(glval) = FunctionAddress[~String] : -# 2783| v2783_3(void) = Call[~String] : func:r2783_2, this:r2783_1 -# 2783| mu2783_4(unknown) = ^CallSideEffect : ~m? -# 2783| v2783_5(void) = ^IndirectReadSideEffect[-1] : &:r2783_1, ~m? -# 2783| mu2783_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2783_1 -# 2783| r2783_7(bool) = Constant[0] : -# 2783| v2783_8(void) = ConditionalBranch : r2783_7 +# 35| Block 922 +# 35| r35_12895(glval) = VariableAddress[x921] : +# 35| mu35_12896(String) = Uninitialized[x921] : &:r35_12895 +# 35| r35_12897(glval) = FunctionAddress[String] : +# 35| v35_12898(void) = Call[String] : func:r35_12897, this:r35_12895 +# 35| mu35_12899(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12900(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12895 +# 35| r35_12901(glval) = VariableAddress[x921] : +# 35| r35_12902(glval) = FunctionAddress[~String] : +# 35| v35_12903(void) = Call[~String] : func:r35_12902, this:r35_12901 +# 35| mu35_12904(unknown) = ^CallSideEffect : ~m? +# 35| v35_12905(void) = ^IndirectReadSideEffect[-1] : &:r35_12901, ~m? +# 35| mu35_12906(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12901 +# 35| r35_12907(bool) = Constant[0] : +# 35| v35_12908(void) = ConditionalBranch : r35_12907 #-----| False -> Block 923 #-----| True (back edge) -> Block 922 -# 2785| Block 923 -# 2785| r2785_1(glval) = VariableAddress[x922] : -# 2785| mu2785_2(String) = Uninitialized[x922] : &:r2785_1 -# 2785| r2785_3(glval) = FunctionAddress[String] : -# 2785| v2785_4(void) = Call[String] : func:r2785_3, this:r2785_1 -# 2785| mu2785_5(unknown) = ^CallSideEffect : ~m? -# 2785| mu2785_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2785_1 -# 2786| r2786_1(glval) = VariableAddress[x922] : -# 2786| r2786_2(glval) = FunctionAddress[~String] : -# 2786| v2786_3(void) = Call[~String] : func:r2786_2, this:r2786_1 -# 2786| mu2786_4(unknown) = ^CallSideEffect : ~m? -# 2786| v2786_5(void) = ^IndirectReadSideEffect[-1] : &:r2786_1, ~m? -# 2786| mu2786_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2786_1 -# 2786| r2786_7(bool) = Constant[0] : -# 2786| v2786_8(void) = ConditionalBranch : r2786_7 +# 35| Block 923 +# 35| r35_12909(glval) = VariableAddress[x922] : +# 35| mu35_12910(String) = Uninitialized[x922] : &:r35_12909 +# 35| r35_12911(glval) = FunctionAddress[String] : +# 35| v35_12912(void) = Call[String] : func:r35_12911, this:r35_12909 +# 35| mu35_12913(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12914(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12909 +# 35| r35_12915(glval) = VariableAddress[x922] : +# 35| r35_12916(glval) = FunctionAddress[~String] : +# 35| v35_12917(void) = Call[~String] : func:r35_12916, this:r35_12915 +# 35| mu35_12918(unknown) = ^CallSideEffect : ~m? +# 35| v35_12919(void) = ^IndirectReadSideEffect[-1] : &:r35_12915, ~m? +# 35| mu35_12920(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12915 +# 35| r35_12921(bool) = Constant[0] : +# 35| v35_12922(void) = ConditionalBranch : r35_12921 #-----| False -> Block 924 #-----| True (back edge) -> Block 923 -# 2788| Block 924 -# 2788| r2788_1(glval) = VariableAddress[x923] : -# 2788| mu2788_2(String) = Uninitialized[x923] : &:r2788_1 -# 2788| r2788_3(glval) = FunctionAddress[String] : -# 2788| v2788_4(void) = Call[String] : func:r2788_3, this:r2788_1 -# 2788| mu2788_5(unknown) = ^CallSideEffect : ~m? -# 2788| mu2788_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2788_1 -# 2789| r2789_1(glval) = VariableAddress[x923] : -# 2789| r2789_2(glval) = FunctionAddress[~String] : -# 2789| v2789_3(void) = Call[~String] : func:r2789_2, this:r2789_1 -# 2789| mu2789_4(unknown) = ^CallSideEffect : ~m? -# 2789| v2789_5(void) = ^IndirectReadSideEffect[-1] : &:r2789_1, ~m? -# 2789| mu2789_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2789_1 -# 2789| r2789_7(bool) = Constant[0] : -# 2789| v2789_8(void) = ConditionalBranch : r2789_7 +# 35| Block 924 +# 35| r35_12923(glval) = VariableAddress[x923] : +# 35| mu35_12924(String) = Uninitialized[x923] : &:r35_12923 +# 35| r35_12925(glval) = FunctionAddress[String] : +# 35| v35_12926(void) = Call[String] : func:r35_12925, this:r35_12923 +# 35| mu35_12927(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12928(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12923 +# 35| r35_12929(glval) = VariableAddress[x923] : +# 35| r35_12930(glval) = FunctionAddress[~String] : +# 35| v35_12931(void) = Call[~String] : func:r35_12930, this:r35_12929 +# 35| mu35_12932(unknown) = ^CallSideEffect : ~m? +# 35| v35_12933(void) = ^IndirectReadSideEffect[-1] : &:r35_12929, ~m? +# 35| mu35_12934(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12929 +# 35| r35_12935(bool) = Constant[0] : +# 35| v35_12936(void) = ConditionalBranch : r35_12935 #-----| False -> Block 925 #-----| True (back edge) -> Block 924 -# 2791| Block 925 -# 2791| r2791_1(glval) = VariableAddress[x924] : -# 2791| mu2791_2(String) = Uninitialized[x924] : &:r2791_1 -# 2791| r2791_3(glval) = FunctionAddress[String] : -# 2791| v2791_4(void) = Call[String] : func:r2791_3, this:r2791_1 -# 2791| mu2791_5(unknown) = ^CallSideEffect : ~m? -# 2791| mu2791_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2791_1 -# 2792| r2792_1(glval) = VariableAddress[x924] : -# 2792| r2792_2(glval) = FunctionAddress[~String] : -# 2792| v2792_3(void) = Call[~String] : func:r2792_2, this:r2792_1 -# 2792| mu2792_4(unknown) = ^CallSideEffect : ~m? -# 2792| v2792_5(void) = ^IndirectReadSideEffect[-1] : &:r2792_1, ~m? -# 2792| mu2792_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2792_1 -# 2792| r2792_7(bool) = Constant[0] : -# 2792| v2792_8(void) = ConditionalBranch : r2792_7 +# 35| Block 925 +# 35| r35_12937(glval) = VariableAddress[x924] : +# 35| mu35_12938(String) = Uninitialized[x924] : &:r35_12937 +# 35| r35_12939(glval) = FunctionAddress[String] : +# 35| v35_12940(void) = Call[String] : func:r35_12939, this:r35_12937 +# 35| mu35_12941(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12942(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12937 +# 35| r35_12943(glval) = VariableAddress[x924] : +# 35| r35_12944(glval) = FunctionAddress[~String] : +# 35| v35_12945(void) = Call[~String] : func:r35_12944, this:r35_12943 +# 35| mu35_12946(unknown) = ^CallSideEffect : ~m? +# 35| v35_12947(void) = ^IndirectReadSideEffect[-1] : &:r35_12943, ~m? +# 35| mu35_12948(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12943 +# 35| r35_12949(bool) = Constant[0] : +# 35| v35_12950(void) = ConditionalBranch : r35_12949 #-----| False -> Block 926 #-----| True (back edge) -> Block 925 -# 2794| Block 926 -# 2794| r2794_1(glval) = VariableAddress[x925] : -# 2794| mu2794_2(String) = Uninitialized[x925] : &:r2794_1 -# 2794| r2794_3(glval) = FunctionAddress[String] : -# 2794| v2794_4(void) = Call[String] : func:r2794_3, this:r2794_1 -# 2794| mu2794_5(unknown) = ^CallSideEffect : ~m? -# 2794| mu2794_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2794_1 -# 2795| r2795_1(glval) = VariableAddress[x925] : -# 2795| r2795_2(glval) = FunctionAddress[~String] : -# 2795| v2795_3(void) = Call[~String] : func:r2795_2, this:r2795_1 -# 2795| mu2795_4(unknown) = ^CallSideEffect : ~m? -# 2795| v2795_5(void) = ^IndirectReadSideEffect[-1] : &:r2795_1, ~m? -# 2795| mu2795_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2795_1 -# 2795| r2795_7(bool) = Constant[0] : -# 2795| v2795_8(void) = ConditionalBranch : r2795_7 +# 35| Block 926 +# 35| r35_12951(glval) = VariableAddress[x925] : +# 35| mu35_12952(String) = Uninitialized[x925] : &:r35_12951 +# 35| r35_12953(glval) = FunctionAddress[String] : +# 35| v35_12954(void) = Call[String] : func:r35_12953, this:r35_12951 +# 35| mu35_12955(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12956(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12951 +# 35| r35_12957(glval) = VariableAddress[x925] : +# 35| r35_12958(glval) = FunctionAddress[~String] : +# 35| v35_12959(void) = Call[~String] : func:r35_12958, this:r35_12957 +# 35| mu35_12960(unknown) = ^CallSideEffect : ~m? +# 35| v35_12961(void) = ^IndirectReadSideEffect[-1] : &:r35_12957, ~m? +# 35| mu35_12962(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12957 +# 35| r35_12963(bool) = Constant[0] : +# 35| v35_12964(void) = ConditionalBranch : r35_12963 #-----| False -> Block 927 #-----| True (back edge) -> Block 926 -# 2797| Block 927 -# 2797| r2797_1(glval) = VariableAddress[x926] : -# 2797| mu2797_2(String) = Uninitialized[x926] : &:r2797_1 -# 2797| r2797_3(glval) = FunctionAddress[String] : -# 2797| v2797_4(void) = Call[String] : func:r2797_3, this:r2797_1 -# 2797| mu2797_5(unknown) = ^CallSideEffect : ~m? -# 2797| mu2797_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2797_1 -# 2798| r2798_1(glval) = VariableAddress[x926] : -# 2798| r2798_2(glval) = FunctionAddress[~String] : -# 2798| v2798_3(void) = Call[~String] : func:r2798_2, this:r2798_1 -# 2798| mu2798_4(unknown) = ^CallSideEffect : ~m? -# 2798| v2798_5(void) = ^IndirectReadSideEffect[-1] : &:r2798_1, ~m? -# 2798| mu2798_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2798_1 -# 2798| r2798_7(bool) = Constant[0] : -# 2798| v2798_8(void) = ConditionalBranch : r2798_7 +# 35| Block 927 +# 35| r35_12965(glval) = VariableAddress[x926] : +# 35| mu35_12966(String) = Uninitialized[x926] : &:r35_12965 +# 35| r35_12967(glval) = FunctionAddress[String] : +# 35| v35_12968(void) = Call[String] : func:r35_12967, this:r35_12965 +# 35| mu35_12969(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12970(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12965 +# 35| r35_12971(glval) = VariableAddress[x926] : +# 35| r35_12972(glval) = FunctionAddress[~String] : +# 35| v35_12973(void) = Call[~String] : func:r35_12972, this:r35_12971 +# 35| mu35_12974(unknown) = ^CallSideEffect : ~m? +# 35| v35_12975(void) = ^IndirectReadSideEffect[-1] : &:r35_12971, ~m? +# 35| mu35_12976(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12971 +# 35| r35_12977(bool) = Constant[0] : +# 35| v35_12978(void) = ConditionalBranch : r35_12977 #-----| False -> Block 928 #-----| True (back edge) -> Block 927 -# 2800| Block 928 -# 2800| r2800_1(glval) = VariableAddress[x927] : -# 2800| mu2800_2(String) = Uninitialized[x927] : &:r2800_1 -# 2800| r2800_3(glval) = FunctionAddress[String] : -# 2800| v2800_4(void) = Call[String] : func:r2800_3, this:r2800_1 -# 2800| mu2800_5(unknown) = ^CallSideEffect : ~m? -# 2800| mu2800_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2800_1 -# 2801| r2801_1(glval) = VariableAddress[x927] : -# 2801| r2801_2(glval) = FunctionAddress[~String] : -# 2801| v2801_3(void) = Call[~String] : func:r2801_2, this:r2801_1 -# 2801| mu2801_4(unknown) = ^CallSideEffect : ~m? -# 2801| v2801_5(void) = ^IndirectReadSideEffect[-1] : &:r2801_1, ~m? -# 2801| mu2801_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2801_1 -# 2801| r2801_7(bool) = Constant[0] : -# 2801| v2801_8(void) = ConditionalBranch : r2801_7 +# 35| Block 928 +# 35| r35_12979(glval) = VariableAddress[x927] : +# 35| mu35_12980(String) = Uninitialized[x927] : &:r35_12979 +# 35| r35_12981(glval) = FunctionAddress[String] : +# 35| v35_12982(void) = Call[String] : func:r35_12981, this:r35_12979 +# 35| mu35_12983(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12984(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12979 +# 35| r35_12985(glval) = VariableAddress[x927] : +# 35| r35_12986(glval) = FunctionAddress[~String] : +# 35| v35_12987(void) = Call[~String] : func:r35_12986, this:r35_12985 +# 35| mu35_12988(unknown) = ^CallSideEffect : ~m? +# 35| v35_12989(void) = ^IndirectReadSideEffect[-1] : &:r35_12985, ~m? +# 35| mu35_12990(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12985 +# 35| r35_12991(bool) = Constant[0] : +# 35| v35_12992(void) = ConditionalBranch : r35_12991 #-----| False -> Block 929 #-----| True (back edge) -> Block 928 -# 2803| Block 929 -# 2803| r2803_1(glval) = VariableAddress[x928] : -# 2803| mu2803_2(String) = Uninitialized[x928] : &:r2803_1 -# 2803| r2803_3(glval) = FunctionAddress[String] : -# 2803| v2803_4(void) = Call[String] : func:r2803_3, this:r2803_1 -# 2803| mu2803_5(unknown) = ^CallSideEffect : ~m? -# 2803| mu2803_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2803_1 -# 2804| r2804_1(glval) = VariableAddress[x928] : -# 2804| r2804_2(glval) = FunctionAddress[~String] : -# 2804| v2804_3(void) = Call[~String] : func:r2804_2, this:r2804_1 -# 2804| mu2804_4(unknown) = ^CallSideEffect : ~m? -# 2804| v2804_5(void) = ^IndirectReadSideEffect[-1] : &:r2804_1, ~m? -# 2804| mu2804_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2804_1 -# 2804| r2804_7(bool) = Constant[0] : -# 2804| v2804_8(void) = ConditionalBranch : r2804_7 +# 35| Block 929 +# 35| r35_12993(glval) = VariableAddress[x928] : +# 35| mu35_12994(String) = Uninitialized[x928] : &:r35_12993 +# 35| r35_12995(glval) = FunctionAddress[String] : +# 35| v35_12996(void) = Call[String] : func:r35_12995, this:r35_12993 +# 35| mu35_12997(unknown) = ^CallSideEffect : ~m? +# 35| mu35_12998(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12993 +# 35| r35_12999(glval) = VariableAddress[x928] : +# 35| r35_13000(glval) = FunctionAddress[~String] : +# 35| v35_13001(void) = Call[~String] : func:r35_13000, this:r35_12999 +# 35| mu35_13002(unknown) = ^CallSideEffect : ~m? +# 35| v35_13003(void) = ^IndirectReadSideEffect[-1] : &:r35_12999, ~m? +# 35| mu35_13004(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_12999 +# 35| r35_13005(bool) = Constant[0] : +# 35| v35_13006(void) = ConditionalBranch : r35_13005 #-----| False -> Block 930 #-----| True (back edge) -> Block 929 -# 2806| Block 930 -# 2806| r2806_1(glval) = VariableAddress[x929] : -# 2806| mu2806_2(String) = Uninitialized[x929] : &:r2806_1 -# 2806| r2806_3(glval) = FunctionAddress[String] : -# 2806| v2806_4(void) = Call[String] : func:r2806_3, this:r2806_1 -# 2806| mu2806_5(unknown) = ^CallSideEffect : ~m? -# 2806| mu2806_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2806_1 -# 2807| r2807_1(glval) = VariableAddress[x929] : -# 2807| r2807_2(glval) = FunctionAddress[~String] : -# 2807| v2807_3(void) = Call[~String] : func:r2807_2, this:r2807_1 -# 2807| mu2807_4(unknown) = ^CallSideEffect : ~m? -# 2807| v2807_5(void) = ^IndirectReadSideEffect[-1] : &:r2807_1, ~m? -# 2807| mu2807_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2807_1 -# 2807| r2807_7(bool) = Constant[0] : -# 2807| v2807_8(void) = ConditionalBranch : r2807_7 +# 35| Block 930 +# 35| r35_13007(glval) = VariableAddress[x929] : +# 35| mu35_13008(String) = Uninitialized[x929] : &:r35_13007 +# 35| r35_13009(glval) = FunctionAddress[String] : +# 35| v35_13010(void) = Call[String] : func:r35_13009, this:r35_13007 +# 35| mu35_13011(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13012(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13007 +# 35| r35_13013(glval) = VariableAddress[x929] : +# 35| r35_13014(glval) = FunctionAddress[~String] : +# 35| v35_13015(void) = Call[~String] : func:r35_13014, this:r35_13013 +# 35| mu35_13016(unknown) = ^CallSideEffect : ~m? +# 35| v35_13017(void) = ^IndirectReadSideEffect[-1] : &:r35_13013, ~m? +# 35| mu35_13018(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13013 +# 35| r35_13019(bool) = Constant[0] : +# 35| v35_13020(void) = ConditionalBranch : r35_13019 #-----| False -> Block 931 #-----| True (back edge) -> Block 930 -# 2809| Block 931 -# 2809| r2809_1(glval) = VariableAddress[x930] : -# 2809| mu2809_2(String) = Uninitialized[x930] : &:r2809_1 -# 2809| r2809_3(glval) = FunctionAddress[String] : -# 2809| v2809_4(void) = Call[String] : func:r2809_3, this:r2809_1 -# 2809| mu2809_5(unknown) = ^CallSideEffect : ~m? -# 2809| mu2809_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2809_1 -# 2810| r2810_1(glval) = VariableAddress[x930] : -# 2810| r2810_2(glval) = FunctionAddress[~String] : -# 2810| v2810_3(void) = Call[~String] : func:r2810_2, this:r2810_1 -# 2810| mu2810_4(unknown) = ^CallSideEffect : ~m? -# 2810| v2810_5(void) = ^IndirectReadSideEffect[-1] : &:r2810_1, ~m? -# 2810| mu2810_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2810_1 -# 2810| r2810_7(bool) = Constant[0] : -# 2810| v2810_8(void) = ConditionalBranch : r2810_7 +# 35| Block 931 +# 35| r35_13021(glval) = VariableAddress[x930] : +# 35| mu35_13022(String) = Uninitialized[x930] : &:r35_13021 +# 35| r35_13023(glval) = FunctionAddress[String] : +# 35| v35_13024(void) = Call[String] : func:r35_13023, this:r35_13021 +# 35| mu35_13025(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13026(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13021 +# 35| r35_13027(glval) = VariableAddress[x930] : +# 35| r35_13028(glval) = FunctionAddress[~String] : +# 35| v35_13029(void) = Call[~String] : func:r35_13028, this:r35_13027 +# 35| mu35_13030(unknown) = ^CallSideEffect : ~m? +# 35| v35_13031(void) = ^IndirectReadSideEffect[-1] : &:r35_13027, ~m? +# 35| mu35_13032(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13027 +# 35| r35_13033(bool) = Constant[0] : +# 35| v35_13034(void) = ConditionalBranch : r35_13033 #-----| False -> Block 932 #-----| True (back edge) -> Block 931 -# 2812| Block 932 -# 2812| r2812_1(glval) = VariableAddress[x931] : -# 2812| mu2812_2(String) = Uninitialized[x931] : &:r2812_1 -# 2812| r2812_3(glval) = FunctionAddress[String] : -# 2812| v2812_4(void) = Call[String] : func:r2812_3, this:r2812_1 -# 2812| mu2812_5(unknown) = ^CallSideEffect : ~m? -# 2812| mu2812_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2812_1 -# 2813| r2813_1(glval) = VariableAddress[x931] : -# 2813| r2813_2(glval) = FunctionAddress[~String] : -# 2813| v2813_3(void) = Call[~String] : func:r2813_2, this:r2813_1 -# 2813| mu2813_4(unknown) = ^CallSideEffect : ~m? -# 2813| v2813_5(void) = ^IndirectReadSideEffect[-1] : &:r2813_1, ~m? -# 2813| mu2813_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2813_1 -# 2813| r2813_7(bool) = Constant[0] : -# 2813| v2813_8(void) = ConditionalBranch : r2813_7 +# 35| Block 932 +# 35| r35_13035(glval) = VariableAddress[x931] : +# 35| mu35_13036(String) = Uninitialized[x931] : &:r35_13035 +# 35| r35_13037(glval) = FunctionAddress[String] : +# 35| v35_13038(void) = Call[String] : func:r35_13037, this:r35_13035 +# 35| mu35_13039(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13040(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13035 +# 35| r35_13041(glval) = VariableAddress[x931] : +# 35| r35_13042(glval) = FunctionAddress[~String] : +# 35| v35_13043(void) = Call[~String] : func:r35_13042, this:r35_13041 +# 35| mu35_13044(unknown) = ^CallSideEffect : ~m? +# 35| v35_13045(void) = ^IndirectReadSideEffect[-1] : &:r35_13041, ~m? +# 35| mu35_13046(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13041 +# 35| r35_13047(bool) = Constant[0] : +# 35| v35_13048(void) = ConditionalBranch : r35_13047 #-----| False -> Block 933 #-----| True (back edge) -> Block 932 -# 2815| Block 933 -# 2815| r2815_1(glval) = VariableAddress[x932] : -# 2815| mu2815_2(String) = Uninitialized[x932] : &:r2815_1 -# 2815| r2815_3(glval) = FunctionAddress[String] : -# 2815| v2815_4(void) = Call[String] : func:r2815_3, this:r2815_1 -# 2815| mu2815_5(unknown) = ^CallSideEffect : ~m? -# 2815| mu2815_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2815_1 -# 2816| r2816_1(glval) = VariableAddress[x932] : -# 2816| r2816_2(glval) = FunctionAddress[~String] : -# 2816| v2816_3(void) = Call[~String] : func:r2816_2, this:r2816_1 -# 2816| mu2816_4(unknown) = ^CallSideEffect : ~m? -# 2816| v2816_5(void) = ^IndirectReadSideEffect[-1] : &:r2816_1, ~m? -# 2816| mu2816_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2816_1 -# 2816| r2816_7(bool) = Constant[0] : -# 2816| v2816_8(void) = ConditionalBranch : r2816_7 +# 35| Block 933 +# 35| r35_13049(glval) = VariableAddress[x932] : +# 35| mu35_13050(String) = Uninitialized[x932] : &:r35_13049 +# 35| r35_13051(glval) = FunctionAddress[String] : +# 35| v35_13052(void) = Call[String] : func:r35_13051, this:r35_13049 +# 35| mu35_13053(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13054(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13049 +# 35| r35_13055(glval) = VariableAddress[x932] : +# 35| r35_13056(glval) = FunctionAddress[~String] : +# 35| v35_13057(void) = Call[~String] : func:r35_13056, this:r35_13055 +# 35| mu35_13058(unknown) = ^CallSideEffect : ~m? +# 35| v35_13059(void) = ^IndirectReadSideEffect[-1] : &:r35_13055, ~m? +# 35| mu35_13060(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13055 +# 35| r35_13061(bool) = Constant[0] : +# 35| v35_13062(void) = ConditionalBranch : r35_13061 #-----| False -> Block 934 #-----| True (back edge) -> Block 933 -# 2818| Block 934 -# 2818| r2818_1(glval) = VariableAddress[x933] : -# 2818| mu2818_2(String) = Uninitialized[x933] : &:r2818_1 -# 2818| r2818_3(glval) = FunctionAddress[String] : -# 2818| v2818_4(void) = Call[String] : func:r2818_3, this:r2818_1 -# 2818| mu2818_5(unknown) = ^CallSideEffect : ~m? -# 2818| mu2818_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2818_1 -# 2819| r2819_1(glval) = VariableAddress[x933] : -# 2819| r2819_2(glval) = FunctionAddress[~String] : -# 2819| v2819_3(void) = Call[~String] : func:r2819_2, this:r2819_1 -# 2819| mu2819_4(unknown) = ^CallSideEffect : ~m? -# 2819| v2819_5(void) = ^IndirectReadSideEffect[-1] : &:r2819_1, ~m? -# 2819| mu2819_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2819_1 -# 2819| r2819_7(bool) = Constant[0] : -# 2819| v2819_8(void) = ConditionalBranch : r2819_7 +# 35| Block 934 +# 35| r35_13063(glval) = VariableAddress[x933] : +# 35| mu35_13064(String) = Uninitialized[x933] : &:r35_13063 +# 35| r35_13065(glval) = FunctionAddress[String] : +# 35| v35_13066(void) = Call[String] : func:r35_13065, this:r35_13063 +# 35| mu35_13067(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13068(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13063 +# 35| r35_13069(glval) = VariableAddress[x933] : +# 35| r35_13070(glval) = FunctionAddress[~String] : +# 35| v35_13071(void) = Call[~String] : func:r35_13070, this:r35_13069 +# 35| mu35_13072(unknown) = ^CallSideEffect : ~m? +# 35| v35_13073(void) = ^IndirectReadSideEffect[-1] : &:r35_13069, ~m? +# 35| mu35_13074(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13069 +# 35| r35_13075(bool) = Constant[0] : +# 35| v35_13076(void) = ConditionalBranch : r35_13075 #-----| False -> Block 935 #-----| True (back edge) -> Block 934 -# 2821| Block 935 -# 2821| r2821_1(glval) = VariableAddress[x934] : -# 2821| mu2821_2(String) = Uninitialized[x934] : &:r2821_1 -# 2821| r2821_3(glval) = FunctionAddress[String] : -# 2821| v2821_4(void) = Call[String] : func:r2821_3, this:r2821_1 -# 2821| mu2821_5(unknown) = ^CallSideEffect : ~m? -# 2821| mu2821_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2821_1 -# 2822| r2822_1(glval) = VariableAddress[x934] : -# 2822| r2822_2(glval) = FunctionAddress[~String] : -# 2822| v2822_3(void) = Call[~String] : func:r2822_2, this:r2822_1 -# 2822| mu2822_4(unknown) = ^CallSideEffect : ~m? -# 2822| v2822_5(void) = ^IndirectReadSideEffect[-1] : &:r2822_1, ~m? -# 2822| mu2822_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2822_1 -# 2822| r2822_7(bool) = Constant[0] : -# 2822| v2822_8(void) = ConditionalBranch : r2822_7 +# 35| Block 935 +# 35| r35_13077(glval) = VariableAddress[x934] : +# 35| mu35_13078(String) = Uninitialized[x934] : &:r35_13077 +# 35| r35_13079(glval) = FunctionAddress[String] : +# 35| v35_13080(void) = Call[String] : func:r35_13079, this:r35_13077 +# 35| mu35_13081(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13082(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13077 +# 35| r35_13083(glval) = VariableAddress[x934] : +# 35| r35_13084(glval) = FunctionAddress[~String] : +# 35| v35_13085(void) = Call[~String] : func:r35_13084, this:r35_13083 +# 35| mu35_13086(unknown) = ^CallSideEffect : ~m? +# 35| v35_13087(void) = ^IndirectReadSideEffect[-1] : &:r35_13083, ~m? +# 35| mu35_13088(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13083 +# 35| r35_13089(bool) = Constant[0] : +# 35| v35_13090(void) = ConditionalBranch : r35_13089 #-----| False -> Block 936 #-----| True (back edge) -> Block 935 -# 2824| Block 936 -# 2824| r2824_1(glval) = VariableAddress[x935] : -# 2824| mu2824_2(String) = Uninitialized[x935] : &:r2824_1 -# 2824| r2824_3(glval) = FunctionAddress[String] : -# 2824| v2824_4(void) = Call[String] : func:r2824_3, this:r2824_1 -# 2824| mu2824_5(unknown) = ^CallSideEffect : ~m? -# 2824| mu2824_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2824_1 -# 2825| r2825_1(glval) = VariableAddress[x935] : -# 2825| r2825_2(glval) = FunctionAddress[~String] : -# 2825| v2825_3(void) = Call[~String] : func:r2825_2, this:r2825_1 -# 2825| mu2825_4(unknown) = ^CallSideEffect : ~m? -# 2825| v2825_5(void) = ^IndirectReadSideEffect[-1] : &:r2825_1, ~m? -# 2825| mu2825_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2825_1 -# 2825| r2825_7(bool) = Constant[0] : -# 2825| v2825_8(void) = ConditionalBranch : r2825_7 +# 35| Block 936 +# 35| r35_13091(glval) = VariableAddress[x935] : +# 35| mu35_13092(String) = Uninitialized[x935] : &:r35_13091 +# 35| r35_13093(glval) = FunctionAddress[String] : +# 35| v35_13094(void) = Call[String] : func:r35_13093, this:r35_13091 +# 35| mu35_13095(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13096(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13091 +# 35| r35_13097(glval) = VariableAddress[x935] : +# 35| r35_13098(glval) = FunctionAddress[~String] : +# 35| v35_13099(void) = Call[~String] : func:r35_13098, this:r35_13097 +# 35| mu35_13100(unknown) = ^CallSideEffect : ~m? +# 35| v35_13101(void) = ^IndirectReadSideEffect[-1] : &:r35_13097, ~m? +# 35| mu35_13102(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13097 +# 35| r35_13103(bool) = Constant[0] : +# 35| v35_13104(void) = ConditionalBranch : r35_13103 #-----| False -> Block 937 #-----| True (back edge) -> Block 936 -# 2827| Block 937 -# 2827| r2827_1(glval) = VariableAddress[x936] : -# 2827| mu2827_2(String) = Uninitialized[x936] : &:r2827_1 -# 2827| r2827_3(glval) = FunctionAddress[String] : -# 2827| v2827_4(void) = Call[String] : func:r2827_3, this:r2827_1 -# 2827| mu2827_5(unknown) = ^CallSideEffect : ~m? -# 2827| mu2827_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2827_1 -# 2828| r2828_1(glval) = VariableAddress[x936] : -# 2828| r2828_2(glval) = FunctionAddress[~String] : -# 2828| v2828_3(void) = Call[~String] : func:r2828_2, this:r2828_1 -# 2828| mu2828_4(unknown) = ^CallSideEffect : ~m? -# 2828| v2828_5(void) = ^IndirectReadSideEffect[-1] : &:r2828_1, ~m? -# 2828| mu2828_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2828_1 -# 2828| r2828_7(bool) = Constant[0] : -# 2828| v2828_8(void) = ConditionalBranch : r2828_7 +# 35| Block 937 +# 35| r35_13105(glval) = VariableAddress[x936] : +# 35| mu35_13106(String) = Uninitialized[x936] : &:r35_13105 +# 35| r35_13107(glval) = FunctionAddress[String] : +# 35| v35_13108(void) = Call[String] : func:r35_13107, this:r35_13105 +# 35| mu35_13109(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13105 +# 35| r35_13111(glval) = VariableAddress[x936] : +# 35| r35_13112(glval) = FunctionAddress[~String] : +# 35| v35_13113(void) = Call[~String] : func:r35_13112, this:r35_13111 +# 35| mu35_13114(unknown) = ^CallSideEffect : ~m? +# 35| v35_13115(void) = ^IndirectReadSideEffect[-1] : &:r35_13111, ~m? +# 35| mu35_13116(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13111 +# 35| r35_13117(bool) = Constant[0] : +# 35| v35_13118(void) = ConditionalBranch : r35_13117 #-----| False -> Block 938 #-----| True (back edge) -> Block 937 -# 2830| Block 938 -# 2830| r2830_1(glval) = VariableAddress[x937] : -# 2830| mu2830_2(String) = Uninitialized[x937] : &:r2830_1 -# 2830| r2830_3(glval) = FunctionAddress[String] : -# 2830| v2830_4(void) = Call[String] : func:r2830_3, this:r2830_1 -# 2830| mu2830_5(unknown) = ^CallSideEffect : ~m? -# 2830| mu2830_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2830_1 -# 2831| r2831_1(glval) = VariableAddress[x937] : -# 2831| r2831_2(glval) = FunctionAddress[~String] : -# 2831| v2831_3(void) = Call[~String] : func:r2831_2, this:r2831_1 -# 2831| mu2831_4(unknown) = ^CallSideEffect : ~m? -# 2831| v2831_5(void) = ^IndirectReadSideEffect[-1] : &:r2831_1, ~m? -# 2831| mu2831_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2831_1 -# 2831| r2831_7(bool) = Constant[0] : -# 2831| v2831_8(void) = ConditionalBranch : r2831_7 +# 35| Block 938 +# 35| r35_13119(glval) = VariableAddress[x937] : +# 35| mu35_13120(String) = Uninitialized[x937] : &:r35_13119 +# 35| r35_13121(glval) = FunctionAddress[String] : +# 35| v35_13122(void) = Call[String] : func:r35_13121, this:r35_13119 +# 35| mu35_13123(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13119 +# 35| r35_13125(glval) = VariableAddress[x937] : +# 35| r35_13126(glval) = FunctionAddress[~String] : +# 35| v35_13127(void) = Call[~String] : func:r35_13126, this:r35_13125 +# 35| mu35_13128(unknown) = ^CallSideEffect : ~m? +# 35| v35_13129(void) = ^IndirectReadSideEffect[-1] : &:r35_13125, ~m? +# 35| mu35_13130(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13125 +# 35| r35_13131(bool) = Constant[0] : +# 35| v35_13132(void) = ConditionalBranch : r35_13131 #-----| False -> Block 939 #-----| True (back edge) -> Block 938 -# 2833| Block 939 -# 2833| r2833_1(glval) = VariableAddress[x938] : -# 2833| mu2833_2(String) = Uninitialized[x938] : &:r2833_1 -# 2833| r2833_3(glval) = FunctionAddress[String] : -# 2833| v2833_4(void) = Call[String] : func:r2833_3, this:r2833_1 -# 2833| mu2833_5(unknown) = ^CallSideEffect : ~m? -# 2833| mu2833_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2833_1 -# 2834| r2834_1(glval) = VariableAddress[x938] : -# 2834| r2834_2(glval) = FunctionAddress[~String] : -# 2834| v2834_3(void) = Call[~String] : func:r2834_2, this:r2834_1 -# 2834| mu2834_4(unknown) = ^CallSideEffect : ~m? -# 2834| v2834_5(void) = ^IndirectReadSideEffect[-1] : &:r2834_1, ~m? -# 2834| mu2834_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2834_1 -# 2834| r2834_7(bool) = Constant[0] : -# 2834| v2834_8(void) = ConditionalBranch : r2834_7 +# 35| Block 939 +# 35| r35_13133(glval) = VariableAddress[x938] : +# 35| mu35_13134(String) = Uninitialized[x938] : &:r35_13133 +# 35| r35_13135(glval) = FunctionAddress[String] : +# 35| v35_13136(void) = Call[String] : func:r35_13135, this:r35_13133 +# 35| mu35_13137(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13133 +# 35| r35_13139(glval) = VariableAddress[x938] : +# 35| r35_13140(glval) = FunctionAddress[~String] : +# 35| v35_13141(void) = Call[~String] : func:r35_13140, this:r35_13139 +# 35| mu35_13142(unknown) = ^CallSideEffect : ~m? +# 35| v35_13143(void) = ^IndirectReadSideEffect[-1] : &:r35_13139, ~m? +# 35| mu35_13144(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13139 +# 35| r35_13145(bool) = Constant[0] : +# 35| v35_13146(void) = ConditionalBranch : r35_13145 #-----| False -> Block 940 #-----| True (back edge) -> Block 939 -# 2836| Block 940 -# 2836| r2836_1(glval) = VariableAddress[x939] : -# 2836| mu2836_2(String) = Uninitialized[x939] : &:r2836_1 -# 2836| r2836_3(glval) = FunctionAddress[String] : -# 2836| v2836_4(void) = Call[String] : func:r2836_3, this:r2836_1 -# 2836| mu2836_5(unknown) = ^CallSideEffect : ~m? -# 2836| mu2836_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2836_1 -# 2837| r2837_1(glval) = VariableAddress[x939] : -# 2837| r2837_2(glval) = FunctionAddress[~String] : -# 2837| v2837_3(void) = Call[~String] : func:r2837_2, this:r2837_1 -# 2837| mu2837_4(unknown) = ^CallSideEffect : ~m? -# 2837| v2837_5(void) = ^IndirectReadSideEffect[-1] : &:r2837_1, ~m? -# 2837| mu2837_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2837_1 -# 2837| r2837_7(bool) = Constant[0] : -# 2837| v2837_8(void) = ConditionalBranch : r2837_7 +# 35| Block 940 +# 35| r35_13147(glval) = VariableAddress[x939] : +# 35| mu35_13148(String) = Uninitialized[x939] : &:r35_13147 +# 35| r35_13149(glval) = FunctionAddress[String] : +# 35| v35_13150(void) = Call[String] : func:r35_13149, this:r35_13147 +# 35| mu35_13151(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13147 +# 35| r35_13153(glval) = VariableAddress[x939] : +# 35| r35_13154(glval) = FunctionAddress[~String] : +# 35| v35_13155(void) = Call[~String] : func:r35_13154, this:r35_13153 +# 35| mu35_13156(unknown) = ^CallSideEffect : ~m? +# 35| v35_13157(void) = ^IndirectReadSideEffect[-1] : &:r35_13153, ~m? +# 35| mu35_13158(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13153 +# 35| r35_13159(bool) = Constant[0] : +# 35| v35_13160(void) = ConditionalBranch : r35_13159 #-----| False -> Block 941 #-----| True (back edge) -> Block 940 -# 2839| Block 941 -# 2839| r2839_1(glval) = VariableAddress[x940] : -# 2839| mu2839_2(String) = Uninitialized[x940] : &:r2839_1 -# 2839| r2839_3(glval) = FunctionAddress[String] : -# 2839| v2839_4(void) = Call[String] : func:r2839_3, this:r2839_1 -# 2839| mu2839_5(unknown) = ^CallSideEffect : ~m? -# 2839| mu2839_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2839_1 -# 2840| r2840_1(glval) = VariableAddress[x940] : -# 2840| r2840_2(glval) = FunctionAddress[~String] : -# 2840| v2840_3(void) = Call[~String] : func:r2840_2, this:r2840_1 -# 2840| mu2840_4(unknown) = ^CallSideEffect : ~m? -# 2840| v2840_5(void) = ^IndirectReadSideEffect[-1] : &:r2840_1, ~m? -# 2840| mu2840_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2840_1 -# 2840| r2840_7(bool) = Constant[0] : -# 2840| v2840_8(void) = ConditionalBranch : r2840_7 +# 35| Block 941 +# 35| r35_13161(glval) = VariableAddress[x940] : +# 35| mu35_13162(String) = Uninitialized[x940] : &:r35_13161 +# 35| r35_13163(glval) = FunctionAddress[String] : +# 35| v35_13164(void) = Call[String] : func:r35_13163, this:r35_13161 +# 35| mu35_13165(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13161 +# 35| r35_13167(glval) = VariableAddress[x940] : +# 35| r35_13168(glval) = FunctionAddress[~String] : +# 35| v35_13169(void) = Call[~String] : func:r35_13168, this:r35_13167 +# 35| mu35_13170(unknown) = ^CallSideEffect : ~m? +# 35| v35_13171(void) = ^IndirectReadSideEffect[-1] : &:r35_13167, ~m? +# 35| mu35_13172(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13167 +# 35| r35_13173(bool) = Constant[0] : +# 35| v35_13174(void) = ConditionalBranch : r35_13173 #-----| False -> Block 942 #-----| True (back edge) -> Block 941 -# 2842| Block 942 -# 2842| r2842_1(glval) = VariableAddress[x941] : -# 2842| mu2842_2(String) = Uninitialized[x941] : &:r2842_1 -# 2842| r2842_3(glval) = FunctionAddress[String] : -# 2842| v2842_4(void) = Call[String] : func:r2842_3, this:r2842_1 -# 2842| mu2842_5(unknown) = ^CallSideEffect : ~m? -# 2842| mu2842_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2842_1 -# 2843| r2843_1(glval) = VariableAddress[x941] : -# 2843| r2843_2(glval) = FunctionAddress[~String] : -# 2843| v2843_3(void) = Call[~String] : func:r2843_2, this:r2843_1 -# 2843| mu2843_4(unknown) = ^CallSideEffect : ~m? -# 2843| v2843_5(void) = ^IndirectReadSideEffect[-1] : &:r2843_1, ~m? -# 2843| mu2843_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2843_1 -# 2843| r2843_7(bool) = Constant[0] : -# 2843| v2843_8(void) = ConditionalBranch : r2843_7 +# 35| Block 942 +# 35| r35_13175(glval) = VariableAddress[x941] : +# 35| mu35_13176(String) = Uninitialized[x941] : &:r35_13175 +# 35| r35_13177(glval) = FunctionAddress[String] : +# 35| v35_13178(void) = Call[String] : func:r35_13177, this:r35_13175 +# 35| mu35_13179(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13175 +# 35| r35_13181(glval) = VariableAddress[x941] : +# 35| r35_13182(glval) = FunctionAddress[~String] : +# 35| v35_13183(void) = Call[~String] : func:r35_13182, this:r35_13181 +# 35| mu35_13184(unknown) = ^CallSideEffect : ~m? +# 35| v35_13185(void) = ^IndirectReadSideEffect[-1] : &:r35_13181, ~m? +# 35| mu35_13186(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13181 +# 35| r35_13187(bool) = Constant[0] : +# 35| v35_13188(void) = ConditionalBranch : r35_13187 #-----| False -> Block 943 #-----| True (back edge) -> Block 942 -# 2845| Block 943 -# 2845| r2845_1(glval) = VariableAddress[x942] : -# 2845| mu2845_2(String) = Uninitialized[x942] : &:r2845_1 -# 2845| r2845_3(glval) = FunctionAddress[String] : -# 2845| v2845_4(void) = Call[String] : func:r2845_3, this:r2845_1 -# 2845| mu2845_5(unknown) = ^CallSideEffect : ~m? -# 2845| mu2845_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2845_1 -# 2846| r2846_1(glval) = VariableAddress[x942] : -# 2846| r2846_2(glval) = FunctionAddress[~String] : -# 2846| v2846_3(void) = Call[~String] : func:r2846_2, this:r2846_1 -# 2846| mu2846_4(unknown) = ^CallSideEffect : ~m? -# 2846| v2846_5(void) = ^IndirectReadSideEffect[-1] : &:r2846_1, ~m? -# 2846| mu2846_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2846_1 -# 2846| r2846_7(bool) = Constant[0] : -# 2846| v2846_8(void) = ConditionalBranch : r2846_7 +# 35| Block 943 +# 35| r35_13189(glval) = VariableAddress[x942] : +# 35| mu35_13190(String) = Uninitialized[x942] : &:r35_13189 +# 35| r35_13191(glval) = FunctionAddress[String] : +# 35| v35_13192(void) = Call[String] : func:r35_13191, this:r35_13189 +# 35| mu35_13193(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13189 +# 35| r35_13195(glval) = VariableAddress[x942] : +# 35| r35_13196(glval) = FunctionAddress[~String] : +# 35| v35_13197(void) = Call[~String] : func:r35_13196, this:r35_13195 +# 35| mu35_13198(unknown) = ^CallSideEffect : ~m? +# 35| v35_13199(void) = ^IndirectReadSideEffect[-1] : &:r35_13195, ~m? +# 35| mu35_13200(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13195 +# 35| r35_13201(bool) = Constant[0] : +# 35| v35_13202(void) = ConditionalBranch : r35_13201 #-----| False -> Block 944 #-----| True (back edge) -> Block 943 -# 2848| Block 944 -# 2848| r2848_1(glval) = VariableAddress[x943] : -# 2848| mu2848_2(String) = Uninitialized[x943] : &:r2848_1 -# 2848| r2848_3(glval) = FunctionAddress[String] : -# 2848| v2848_4(void) = Call[String] : func:r2848_3, this:r2848_1 -# 2848| mu2848_5(unknown) = ^CallSideEffect : ~m? -# 2848| mu2848_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2848_1 -# 2849| r2849_1(glval) = VariableAddress[x943] : -# 2849| r2849_2(glval) = FunctionAddress[~String] : -# 2849| v2849_3(void) = Call[~String] : func:r2849_2, this:r2849_1 -# 2849| mu2849_4(unknown) = ^CallSideEffect : ~m? -# 2849| v2849_5(void) = ^IndirectReadSideEffect[-1] : &:r2849_1, ~m? -# 2849| mu2849_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2849_1 -# 2849| r2849_7(bool) = Constant[0] : -# 2849| v2849_8(void) = ConditionalBranch : r2849_7 +# 35| Block 944 +# 35| r35_13203(glval) = VariableAddress[x943] : +# 35| mu35_13204(String) = Uninitialized[x943] : &:r35_13203 +# 35| r35_13205(glval) = FunctionAddress[String] : +# 35| v35_13206(void) = Call[String] : func:r35_13205, this:r35_13203 +# 35| mu35_13207(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13203 +# 35| r35_13209(glval) = VariableAddress[x943] : +# 35| r35_13210(glval) = FunctionAddress[~String] : +# 35| v35_13211(void) = Call[~String] : func:r35_13210, this:r35_13209 +# 35| mu35_13212(unknown) = ^CallSideEffect : ~m? +# 35| v35_13213(void) = ^IndirectReadSideEffect[-1] : &:r35_13209, ~m? +# 35| mu35_13214(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13209 +# 35| r35_13215(bool) = Constant[0] : +# 35| v35_13216(void) = ConditionalBranch : r35_13215 #-----| False -> Block 945 #-----| True (back edge) -> Block 944 -# 2851| Block 945 -# 2851| r2851_1(glval) = VariableAddress[x944] : -# 2851| mu2851_2(String) = Uninitialized[x944] : &:r2851_1 -# 2851| r2851_3(glval) = FunctionAddress[String] : -# 2851| v2851_4(void) = Call[String] : func:r2851_3, this:r2851_1 -# 2851| mu2851_5(unknown) = ^CallSideEffect : ~m? -# 2851| mu2851_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2851_1 -# 2852| r2852_1(glval) = VariableAddress[x944] : -# 2852| r2852_2(glval) = FunctionAddress[~String] : -# 2852| v2852_3(void) = Call[~String] : func:r2852_2, this:r2852_1 -# 2852| mu2852_4(unknown) = ^CallSideEffect : ~m? -# 2852| v2852_5(void) = ^IndirectReadSideEffect[-1] : &:r2852_1, ~m? -# 2852| mu2852_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2852_1 -# 2852| r2852_7(bool) = Constant[0] : -# 2852| v2852_8(void) = ConditionalBranch : r2852_7 +# 35| Block 945 +# 35| r35_13217(glval) = VariableAddress[x944] : +# 35| mu35_13218(String) = Uninitialized[x944] : &:r35_13217 +# 35| r35_13219(glval) = FunctionAddress[String] : +# 35| v35_13220(void) = Call[String] : func:r35_13219, this:r35_13217 +# 35| mu35_13221(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13217 +# 35| r35_13223(glval) = VariableAddress[x944] : +# 35| r35_13224(glval) = FunctionAddress[~String] : +# 35| v35_13225(void) = Call[~String] : func:r35_13224, this:r35_13223 +# 35| mu35_13226(unknown) = ^CallSideEffect : ~m? +# 35| v35_13227(void) = ^IndirectReadSideEffect[-1] : &:r35_13223, ~m? +# 35| mu35_13228(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13223 +# 35| r35_13229(bool) = Constant[0] : +# 35| v35_13230(void) = ConditionalBranch : r35_13229 #-----| False -> Block 946 #-----| True (back edge) -> Block 945 -# 2854| Block 946 -# 2854| r2854_1(glval) = VariableAddress[x945] : -# 2854| mu2854_2(String) = Uninitialized[x945] : &:r2854_1 -# 2854| r2854_3(glval) = FunctionAddress[String] : -# 2854| v2854_4(void) = Call[String] : func:r2854_3, this:r2854_1 -# 2854| mu2854_5(unknown) = ^CallSideEffect : ~m? -# 2854| mu2854_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2854_1 -# 2855| r2855_1(glval) = VariableAddress[x945] : -# 2855| r2855_2(glval) = FunctionAddress[~String] : -# 2855| v2855_3(void) = Call[~String] : func:r2855_2, this:r2855_1 -# 2855| mu2855_4(unknown) = ^CallSideEffect : ~m? -# 2855| v2855_5(void) = ^IndirectReadSideEffect[-1] : &:r2855_1, ~m? -# 2855| mu2855_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2855_1 -# 2855| r2855_7(bool) = Constant[0] : -# 2855| v2855_8(void) = ConditionalBranch : r2855_7 +# 35| Block 946 +# 35| r35_13231(glval) = VariableAddress[x945] : +# 35| mu35_13232(String) = Uninitialized[x945] : &:r35_13231 +# 35| r35_13233(glval) = FunctionAddress[String] : +# 35| v35_13234(void) = Call[String] : func:r35_13233, this:r35_13231 +# 35| mu35_13235(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13231 +# 35| r35_13237(glval) = VariableAddress[x945] : +# 35| r35_13238(glval) = FunctionAddress[~String] : +# 35| v35_13239(void) = Call[~String] : func:r35_13238, this:r35_13237 +# 35| mu35_13240(unknown) = ^CallSideEffect : ~m? +# 35| v35_13241(void) = ^IndirectReadSideEffect[-1] : &:r35_13237, ~m? +# 35| mu35_13242(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13237 +# 35| r35_13243(bool) = Constant[0] : +# 35| v35_13244(void) = ConditionalBranch : r35_13243 #-----| False -> Block 947 #-----| True (back edge) -> Block 946 -# 2857| Block 947 -# 2857| r2857_1(glval) = VariableAddress[x946] : -# 2857| mu2857_2(String) = Uninitialized[x946] : &:r2857_1 -# 2857| r2857_3(glval) = FunctionAddress[String] : -# 2857| v2857_4(void) = Call[String] : func:r2857_3, this:r2857_1 -# 2857| mu2857_5(unknown) = ^CallSideEffect : ~m? -# 2857| mu2857_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2857_1 -# 2858| r2858_1(glval) = VariableAddress[x946] : -# 2858| r2858_2(glval) = FunctionAddress[~String] : -# 2858| v2858_3(void) = Call[~String] : func:r2858_2, this:r2858_1 -# 2858| mu2858_4(unknown) = ^CallSideEffect : ~m? -# 2858| v2858_5(void) = ^IndirectReadSideEffect[-1] : &:r2858_1, ~m? -# 2858| mu2858_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2858_1 -# 2858| r2858_7(bool) = Constant[0] : -# 2858| v2858_8(void) = ConditionalBranch : r2858_7 +# 35| Block 947 +# 35| r35_13245(glval) = VariableAddress[x946] : +# 35| mu35_13246(String) = Uninitialized[x946] : &:r35_13245 +# 35| r35_13247(glval) = FunctionAddress[String] : +# 35| v35_13248(void) = Call[String] : func:r35_13247, this:r35_13245 +# 35| mu35_13249(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13245 +# 35| r35_13251(glval) = VariableAddress[x946] : +# 35| r35_13252(glval) = FunctionAddress[~String] : +# 35| v35_13253(void) = Call[~String] : func:r35_13252, this:r35_13251 +# 35| mu35_13254(unknown) = ^CallSideEffect : ~m? +# 35| v35_13255(void) = ^IndirectReadSideEffect[-1] : &:r35_13251, ~m? +# 35| mu35_13256(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13251 +# 35| r35_13257(bool) = Constant[0] : +# 35| v35_13258(void) = ConditionalBranch : r35_13257 #-----| False -> Block 948 #-----| True (back edge) -> Block 947 -# 2860| Block 948 -# 2860| r2860_1(glval) = VariableAddress[x947] : -# 2860| mu2860_2(String) = Uninitialized[x947] : &:r2860_1 -# 2860| r2860_3(glval) = FunctionAddress[String] : -# 2860| v2860_4(void) = Call[String] : func:r2860_3, this:r2860_1 -# 2860| mu2860_5(unknown) = ^CallSideEffect : ~m? -# 2860| mu2860_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2860_1 -# 2861| r2861_1(glval) = VariableAddress[x947] : -# 2861| r2861_2(glval) = FunctionAddress[~String] : -# 2861| v2861_3(void) = Call[~String] : func:r2861_2, this:r2861_1 -# 2861| mu2861_4(unknown) = ^CallSideEffect : ~m? -# 2861| v2861_5(void) = ^IndirectReadSideEffect[-1] : &:r2861_1, ~m? -# 2861| mu2861_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2861_1 -# 2861| r2861_7(bool) = Constant[0] : -# 2861| v2861_8(void) = ConditionalBranch : r2861_7 +# 35| Block 948 +# 35| r35_13259(glval) = VariableAddress[x947] : +# 35| mu35_13260(String) = Uninitialized[x947] : &:r35_13259 +# 35| r35_13261(glval) = FunctionAddress[String] : +# 35| v35_13262(void) = Call[String] : func:r35_13261, this:r35_13259 +# 35| mu35_13263(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13259 +# 35| r35_13265(glval) = VariableAddress[x947] : +# 35| r35_13266(glval) = FunctionAddress[~String] : +# 35| v35_13267(void) = Call[~String] : func:r35_13266, this:r35_13265 +# 35| mu35_13268(unknown) = ^CallSideEffect : ~m? +# 35| v35_13269(void) = ^IndirectReadSideEffect[-1] : &:r35_13265, ~m? +# 35| mu35_13270(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13265 +# 35| r35_13271(bool) = Constant[0] : +# 35| v35_13272(void) = ConditionalBranch : r35_13271 #-----| False -> Block 949 #-----| True (back edge) -> Block 948 -# 2863| Block 949 -# 2863| r2863_1(glval) = VariableAddress[x948] : -# 2863| mu2863_2(String) = Uninitialized[x948] : &:r2863_1 -# 2863| r2863_3(glval) = FunctionAddress[String] : -# 2863| v2863_4(void) = Call[String] : func:r2863_3, this:r2863_1 -# 2863| mu2863_5(unknown) = ^CallSideEffect : ~m? -# 2863| mu2863_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2863_1 -# 2864| r2864_1(glval) = VariableAddress[x948] : -# 2864| r2864_2(glval) = FunctionAddress[~String] : -# 2864| v2864_3(void) = Call[~String] : func:r2864_2, this:r2864_1 -# 2864| mu2864_4(unknown) = ^CallSideEffect : ~m? -# 2864| v2864_5(void) = ^IndirectReadSideEffect[-1] : &:r2864_1, ~m? -# 2864| mu2864_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2864_1 -# 2864| r2864_7(bool) = Constant[0] : -# 2864| v2864_8(void) = ConditionalBranch : r2864_7 +# 35| Block 949 +# 35| r35_13273(glval) = VariableAddress[x948] : +# 35| mu35_13274(String) = Uninitialized[x948] : &:r35_13273 +# 35| r35_13275(glval) = FunctionAddress[String] : +# 35| v35_13276(void) = Call[String] : func:r35_13275, this:r35_13273 +# 35| mu35_13277(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13273 +# 35| r35_13279(glval) = VariableAddress[x948] : +# 35| r35_13280(glval) = FunctionAddress[~String] : +# 35| v35_13281(void) = Call[~String] : func:r35_13280, this:r35_13279 +# 35| mu35_13282(unknown) = ^CallSideEffect : ~m? +# 35| v35_13283(void) = ^IndirectReadSideEffect[-1] : &:r35_13279, ~m? +# 35| mu35_13284(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13279 +# 35| r35_13285(bool) = Constant[0] : +# 35| v35_13286(void) = ConditionalBranch : r35_13285 #-----| False -> Block 950 #-----| True (back edge) -> Block 949 -# 2866| Block 950 -# 2866| r2866_1(glval) = VariableAddress[x949] : -# 2866| mu2866_2(String) = Uninitialized[x949] : &:r2866_1 -# 2866| r2866_3(glval) = FunctionAddress[String] : -# 2866| v2866_4(void) = Call[String] : func:r2866_3, this:r2866_1 -# 2866| mu2866_5(unknown) = ^CallSideEffect : ~m? -# 2866| mu2866_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2866_1 -# 2867| r2867_1(glval) = VariableAddress[x949] : -# 2867| r2867_2(glval) = FunctionAddress[~String] : -# 2867| v2867_3(void) = Call[~String] : func:r2867_2, this:r2867_1 -# 2867| mu2867_4(unknown) = ^CallSideEffect : ~m? -# 2867| v2867_5(void) = ^IndirectReadSideEffect[-1] : &:r2867_1, ~m? -# 2867| mu2867_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2867_1 -# 2867| r2867_7(bool) = Constant[0] : -# 2867| v2867_8(void) = ConditionalBranch : r2867_7 +# 35| Block 950 +# 35| r35_13287(glval) = VariableAddress[x949] : +# 35| mu35_13288(String) = Uninitialized[x949] : &:r35_13287 +# 35| r35_13289(glval) = FunctionAddress[String] : +# 35| v35_13290(void) = Call[String] : func:r35_13289, this:r35_13287 +# 35| mu35_13291(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13287 +# 35| r35_13293(glval) = VariableAddress[x949] : +# 35| r35_13294(glval) = FunctionAddress[~String] : +# 35| v35_13295(void) = Call[~String] : func:r35_13294, this:r35_13293 +# 35| mu35_13296(unknown) = ^CallSideEffect : ~m? +# 35| v35_13297(void) = ^IndirectReadSideEffect[-1] : &:r35_13293, ~m? +# 35| mu35_13298(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13293 +# 35| r35_13299(bool) = Constant[0] : +# 35| v35_13300(void) = ConditionalBranch : r35_13299 #-----| False -> Block 951 #-----| True (back edge) -> Block 950 -# 2869| Block 951 -# 2869| r2869_1(glval) = VariableAddress[x950] : -# 2869| mu2869_2(String) = Uninitialized[x950] : &:r2869_1 -# 2869| r2869_3(glval) = FunctionAddress[String] : -# 2869| v2869_4(void) = Call[String] : func:r2869_3, this:r2869_1 -# 2869| mu2869_5(unknown) = ^CallSideEffect : ~m? -# 2869| mu2869_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2869_1 -# 2870| r2870_1(glval) = VariableAddress[x950] : -# 2870| r2870_2(glval) = FunctionAddress[~String] : -# 2870| v2870_3(void) = Call[~String] : func:r2870_2, this:r2870_1 -# 2870| mu2870_4(unknown) = ^CallSideEffect : ~m? -# 2870| v2870_5(void) = ^IndirectReadSideEffect[-1] : &:r2870_1, ~m? -# 2870| mu2870_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2870_1 -# 2870| r2870_7(bool) = Constant[0] : -# 2870| v2870_8(void) = ConditionalBranch : r2870_7 +# 35| Block 951 +# 35| r35_13301(glval) = VariableAddress[x950] : +# 35| mu35_13302(String) = Uninitialized[x950] : &:r35_13301 +# 35| r35_13303(glval) = FunctionAddress[String] : +# 35| v35_13304(void) = Call[String] : func:r35_13303, this:r35_13301 +# 35| mu35_13305(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13301 +# 35| r35_13307(glval) = VariableAddress[x950] : +# 35| r35_13308(glval) = FunctionAddress[~String] : +# 35| v35_13309(void) = Call[~String] : func:r35_13308, this:r35_13307 +# 35| mu35_13310(unknown) = ^CallSideEffect : ~m? +# 35| v35_13311(void) = ^IndirectReadSideEffect[-1] : &:r35_13307, ~m? +# 35| mu35_13312(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13307 +# 35| r35_13313(bool) = Constant[0] : +# 35| v35_13314(void) = ConditionalBranch : r35_13313 #-----| False -> Block 952 #-----| True (back edge) -> Block 951 -# 2872| Block 952 -# 2872| r2872_1(glval) = VariableAddress[x951] : -# 2872| mu2872_2(String) = Uninitialized[x951] : &:r2872_1 -# 2872| r2872_3(glval) = FunctionAddress[String] : -# 2872| v2872_4(void) = Call[String] : func:r2872_3, this:r2872_1 -# 2872| mu2872_5(unknown) = ^CallSideEffect : ~m? -# 2872| mu2872_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2872_1 -# 2873| r2873_1(glval) = VariableAddress[x951] : -# 2873| r2873_2(glval) = FunctionAddress[~String] : -# 2873| v2873_3(void) = Call[~String] : func:r2873_2, this:r2873_1 -# 2873| mu2873_4(unknown) = ^CallSideEffect : ~m? -# 2873| v2873_5(void) = ^IndirectReadSideEffect[-1] : &:r2873_1, ~m? -# 2873| mu2873_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2873_1 -# 2873| r2873_7(bool) = Constant[0] : -# 2873| v2873_8(void) = ConditionalBranch : r2873_7 +# 35| Block 952 +# 35| r35_13315(glval) = VariableAddress[x951] : +# 35| mu35_13316(String) = Uninitialized[x951] : &:r35_13315 +# 35| r35_13317(glval) = FunctionAddress[String] : +# 35| v35_13318(void) = Call[String] : func:r35_13317, this:r35_13315 +# 35| mu35_13319(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13315 +# 35| r35_13321(glval) = VariableAddress[x951] : +# 35| r35_13322(glval) = FunctionAddress[~String] : +# 35| v35_13323(void) = Call[~String] : func:r35_13322, this:r35_13321 +# 35| mu35_13324(unknown) = ^CallSideEffect : ~m? +# 35| v35_13325(void) = ^IndirectReadSideEffect[-1] : &:r35_13321, ~m? +# 35| mu35_13326(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13321 +# 35| r35_13327(bool) = Constant[0] : +# 35| v35_13328(void) = ConditionalBranch : r35_13327 #-----| False -> Block 953 #-----| True (back edge) -> Block 952 -# 2875| Block 953 -# 2875| r2875_1(glval) = VariableAddress[x952] : -# 2875| mu2875_2(String) = Uninitialized[x952] : &:r2875_1 -# 2875| r2875_3(glval) = FunctionAddress[String] : -# 2875| v2875_4(void) = Call[String] : func:r2875_3, this:r2875_1 -# 2875| mu2875_5(unknown) = ^CallSideEffect : ~m? -# 2875| mu2875_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2875_1 -# 2876| r2876_1(glval) = VariableAddress[x952] : -# 2876| r2876_2(glval) = FunctionAddress[~String] : -# 2876| v2876_3(void) = Call[~String] : func:r2876_2, this:r2876_1 -# 2876| mu2876_4(unknown) = ^CallSideEffect : ~m? -# 2876| v2876_5(void) = ^IndirectReadSideEffect[-1] : &:r2876_1, ~m? -# 2876| mu2876_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2876_1 -# 2876| r2876_7(bool) = Constant[0] : -# 2876| v2876_8(void) = ConditionalBranch : r2876_7 +# 35| Block 953 +# 35| r35_13329(glval) = VariableAddress[x952] : +# 35| mu35_13330(String) = Uninitialized[x952] : &:r35_13329 +# 35| r35_13331(glval) = FunctionAddress[String] : +# 35| v35_13332(void) = Call[String] : func:r35_13331, this:r35_13329 +# 35| mu35_13333(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13329 +# 35| r35_13335(glval) = VariableAddress[x952] : +# 35| r35_13336(glval) = FunctionAddress[~String] : +# 35| v35_13337(void) = Call[~String] : func:r35_13336, this:r35_13335 +# 35| mu35_13338(unknown) = ^CallSideEffect : ~m? +# 35| v35_13339(void) = ^IndirectReadSideEffect[-1] : &:r35_13335, ~m? +# 35| mu35_13340(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13335 +# 35| r35_13341(bool) = Constant[0] : +# 35| v35_13342(void) = ConditionalBranch : r35_13341 #-----| False -> Block 954 #-----| True (back edge) -> Block 953 -# 2878| Block 954 -# 2878| r2878_1(glval) = VariableAddress[x953] : -# 2878| mu2878_2(String) = Uninitialized[x953] : &:r2878_1 -# 2878| r2878_3(glval) = FunctionAddress[String] : -# 2878| v2878_4(void) = Call[String] : func:r2878_3, this:r2878_1 -# 2878| mu2878_5(unknown) = ^CallSideEffect : ~m? -# 2878| mu2878_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2878_1 -# 2879| r2879_1(glval) = VariableAddress[x953] : -# 2879| r2879_2(glval) = FunctionAddress[~String] : -# 2879| v2879_3(void) = Call[~String] : func:r2879_2, this:r2879_1 -# 2879| mu2879_4(unknown) = ^CallSideEffect : ~m? -# 2879| v2879_5(void) = ^IndirectReadSideEffect[-1] : &:r2879_1, ~m? -# 2879| mu2879_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2879_1 -# 2879| r2879_7(bool) = Constant[0] : -# 2879| v2879_8(void) = ConditionalBranch : r2879_7 +# 35| Block 954 +# 35| r35_13343(glval) = VariableAddress[x953] : +# 35| mu35_13344(String) = Uninitialized[x953] : &:r35_13343 +# 35| r35_13345(glval) = FunctionAddress[String] : +# 35| v35_13346(void) = Call[String] : func:r35_13345, this:r35_13343 +# 35| mu35_13347(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13343 +# 35| r35_13349(glval) = VariableAddress[x953] : +# 35| r35_13350(glval) = FunctionAddress[~String] : +# 35| v35_13351(void) = Call[~String] : func:r35_13350, this:r35_13349 +# 35| mu35_13352(unknown) = ^CallSideEffect : ~m? +# 35| v35_13353(void) = ^IndirectReadSideEffect[-1] : &:r35_13349, ~m? +# 35| mu35_13354(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13349 +# 35| r35_13355(bool) = Constant[0] : +# 35| v35_13356(void) = ConditionalBranch : r35_13355 #-----| False -> Block 955 #-----| True (back edge) -> Block 954 -# 2881| Block 955 -# 2881| r2881_1(glval) = VariableAddress[x954] : -# 2881| mu2881_2(String) = Uninitialized[x954] : &:r2881_1 -# 2881| r2881_3(glval) = FunctionAddress[String] : -# 2881| v2881_4(void) = Call[String] : func:r2881_3, this:r2881_1 -# 2881| mu2881_5(unknown) = ^CallSideEffect : ~m? -# 2881| mu2881_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2881_1 -# 2882| r2882_1(glval) = VariableAddress[x954] : -# 2882| r2882_2(glval) = FunctionAddress[~String] : -# 2882| v2882_3(void) = Call[~String] : func:r2882_2, this:r2882_1 -# 2882| mu2882_4(unknown) = ^CallSideEffect : ~m? -# 2882| v2882_5(void) = ^IndirectReadSideEffect[-1] : &:r2882_1, ~m? -# 2882| mu2882_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2882_1 -# 2882| r2882_7(bool) = Constant[0] : -# 2882| v2882_8(void) = ConditionalBranch : r2882_7 +# 35| Block 955 +# 35| r35_13357(glval) = VariableAddress[x954] : +# 35| mu35_13358(String) = Uninitialized[x954] : &:r35_13357 +# 35| r35_13359(glval) = FunctionAddress[String] : +# 35| v35_13360(void) = Call[String] : func:r35_13359, this:r35_13357 +# 35| mu35_13361(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13362(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13357 +# 35| r35_13363(glval) = VariableAddress[x954] : +# 35| r35_13364(glval) = FunctionAddress[~String] : +# 35| v35_13365(void) = Call[~String] : func:r35_13364, this:r35_13363 +# 35| mu35_13366(unknown) = ^CallSideEffect : ~m? +# 35| v35_13367(void) = ^IndirectReadSideEffect[-1] : &:r35_13363, ~m? +# 35| mu35_13368(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13363 +# 35| r35_13369(bool) = Constant[0] : +# 35| v35_13370(void) = ConditionalBranch : r35_13369 #-----| False -> Block 956 #-----| True (back edge) -> Block 955 -# 2884| Block 956 -# 2884| r2884_1(glval) = VariableAddress[x955] : -# 2884| mu2884_2(String) = Uninitialized[x955] : &:r2884_1 -# 2884| r2884_3(glval) = FunctionAddress[String] : -# 2884| v2884_4(void) = Call[String] : func:r2884_3, this:r2884_1 -# 2884| mu2884_5(unknown) = ^CallSideEffect : ~m? -# 2884| mu2884_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2884_1 -# 2885| r2885_1(glval) = VariableAddress[x955] : -# 2885| r2885_2(glval) = FunctionAddress[~String] : -# 2885| v2885_3(void) = Call[~String] : func:r2885_2, this:r2885_1 -# 2885| mu2885_4(unknown) = ^CallSideEffect : ~m? -# 2885| v2885_5(void) = ^IndirectReadSideEffect[-1] : &:r2885_1, ~m? -# 2885| mu2885_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2885_1 -# 2885| r2885_7(bool) = Constant[0] : -# 2885| v2885_8(void) = ConditionalBranch : r2885_7 +# 35| Block 956 +# 35| r35_13371(glval) = VariableAddress[x955] : +# 35| mu35_13372(String) = Uninitialized[x955] : &:r35_13371 +# 35| r35_13373(glval) = FunctionAddress[String] : +# 35| v35_13374(void) = Call[String] : func:r35_13373, this:r35_13371 +# 35| mu35_13375(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13376(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13371 +# 35| r35_13377(glval) = VariableAddress[x955] : +# 35| r35_13378(glval) = FunctionAddress[~String] : +# 35| v35_13379(void) = Call[~String] : func:r35_13378, this:r35_13377 +# 35| mu35_13380(unknown) = ^CallSideEffect : ~m? +# 35| v35_13381(void) = ^IndirectReadSideEffect[-1] : &:r35_13377, ~m? +# 35| mu35_13382(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13377 +# 35| r35_13383(bool) = Constant[0] : +# 35| v35_13384(void) = ConditionalBranch : r35_13383 #-----| False -> Block 957 #-----| True (back edge) -> Block 956 -# 2887| Block 957 -# 2887| r2887_1(glval) = VariableAddress[x956] : -# 2887| mu2887_2(String) = Uninitialized[x956] : &:r2887_1 -# 2887| r2887_3(glval) = FunctionAddress[String] : -# 2887| v2887_4(void) = Call[String] : func:r2887_3, this:r2887_1 -# 2887| mu2887_5(unknown) = ^CallSideEffect : ~m? -# 2887| mu2887_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2887_1 -# 2888| r2888_1(glval) = VariableAddress[x956] : -# 2888| r2888_2(glval) = FunctionAddress[~String] : -# 2888| v2888_3(void) = Call[~String] : func:r2888_2, this:r2888_1 -# 2888| mu2888_4(unknown) = ^CallSideEffect : ~m? -# 2888| v2888_5(void) = ^IndirectReadSideEffect[-1] : &:r2888_1, ~m? -# 2888| mu2888_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2888_1 -# 2888| r2888_7(bool) = Constant[0] : -# 2888| v2888_8(void) = ConditionalBranch : r2888_7 +# 35| Block 957 +# 35| r35_13385(glval) = VariableAddress[x956] : +# 35| mu35_13386(String) = Uninitialized[x956] : &:r35_13385 +# 35| r35_13387(glval) = FunctionAddress[String] : +# 35| v35_13388(void) = Call[String] : func:r35_13387, this:r35_13385 +# 35| mu35_13389(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13390(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13385 +# 35| r35_13391(glval) = VariableAddress[x956] : +# 35| r35_13392(glval) = FunctionAddress[~String] : +# 35| v35_13393(void) = Call[~String] : func:r35_13392, this:r35_13391 +# 35| mu35_13394(unknown) = ^CallSideEffect : ~m? +# 35| v35_13395(void) = ^IndirectReadSideEffect[-1] : &:r35_13391, ~m? +# 35| mu35_13396(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13391 +# 35| r35_13397(bool) = Constant[0] : +# 35| v35_13398(void) = ConditionalBranch : r35_13397 #-----| False -> Block 958 #-----| True (back edge) -> Block 957 -# 2890| Block 958 -# 2890| r2890_1(glval) = VariableAddress[x957] : -# 2890| mu2890_2(String) = Uninitialized[x957] : &:r2890_1 -# 2890| r2890_3(glval) = FunctionAddress[String] : -# 2890| v2890_4(void) = Call[String] : func:r2890_3, this:r2890_1 -# 2890| mu2890_5(unknown) = ^CallSideEffect : ~m? -# 2890| mu2890_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2890_1 -# 2891| r2891_1(glval) = VariableAddress[x957] : -# 2891| r2891_2(glval) = FunctionAddress[~String] : -# 2891| v2891_3(void) = Call[~String] : func:r2891_2, this:r2891_1 -# 2891| mu2891_4(unknown) = ^CallSideEffect : ~m? -# 2891| v2891_5(void) = ^IndirectReadSideEffect[-1] : &:r2891_1, ~m? -# 2891| mu2891_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2891_1 -# 2891| r2891_7(bool) = Constant[0] : -# 2891| v2891_8(void) = ConditionalBranch : r2891_7 +# 35| Block 958 +# 35| r35_13399(glval) = VariableAddress[x957] : +# 35| mu35_13400(String) = Uninitialized[x957] : &:r35_13399 +# 35| r35_13401(glval) = FunctionAddress[String] : +# 35| v35_13402(void) = Call[String] : func:r35_13401, this:r35_13399 +# 35| mu35_13403(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13404(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13399 +# 35| r35_13405(glval) = VariableAddress[x957] : +# 35| r35_13406(glval) = FunctionAddress[~String] : +# 35| v35_13407(void) = Call[~String] : func:r35_13406, this:r35_13405 +# 35| mu35_13408(unknown) = ^CallSideEffect : ~m? +# 35| v35_13409(void) = ^IndirectReadSideEffect[-1] : &:r35_13405, ~m? +# 35| mu35_13410(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13405 +# 35| r35_13411(bool) = Constant[0] : +# 35| v35_13412(void) = ConditionalBranch : r35_13411 #-----| False -> Block 959 #-----| True (back edge) -> Block 958 -# 2893| Block 959 -# 2893| r2893_1(glval) = VariableAddress[x958] : -# 2893| mu2893_2(String) = Uninitialized[x958] : &:r2893_1 -# 2893| r2893_3(glval) = FunctionAddress[String] : -# 2893| v2893_4(void) = Call[String] : func:r2893_3, this:r2893_1 -# 2893| mu2893_5(unknown) = ^CallSideEffect : ~m? -# 2893| mu2893_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2893_1 -# 2894| r2894_1(glval) = VariableAddress[x958] : -# 2894| r2894_2(glval) = FunctionAddress[~String] : -# 2894| v2894_3(void) = Call[~String] : func:r2894_2, this:r2894_1 -# 2894| mu2894_4(unknown) = ^CallSideEffect : ~m? -# 2894| v2894_5(void) = ^IndirectReadSideEffect[-1] : &:r2894_1, ~m? -# 2894| mu2894_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2894_1 -# 2894| r2894_7(bool) = Constant[0] : -# 2894| v2894_8(void) = ConditionalBranch : r2894_7 +# 35| Block 959 +# 35| r35_13413(glval) = VariableAddress[x958] : +# 35| mu35_13414(String) = Uninitialized[x958] : &:r35_13413 +# 35| r35_13415(glval) = FunctionAddress[String] : +# 35| v35_13416(void) = Call[String] : func:r35_13415, this:r35_13413 +# 35| mu35_13417(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13418(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13413 +# 35| r35_13419(glval) = VariableAddress[x958] : +# 35| r35_13420(glval) = FunctionAddress[~String] : +# 35| v35_13421(void) = Call[~String] : func:r35_13420, this:r35_13419 +# 35| mu35_13422(unknown) = ^CallSideEffect : ~m? +# 35| v35_13423(void) = ^IndirectReadSideEffect[-1] : &:r35_13419, ~m? +# 35| mu35_13424(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13419 +# 35| r35_13425(bool) = Constant[0] : +# 35| v35_13426(void) = ConditionalBranch : r35_13425 #-----| False -> Block 960 #-----| True (back edge) -> Block 959 -# 2896| Block 960 -# 2896| r2896_1(glval) = VariableAddress[x959] : -# 2896| mu2896_2(String) = Uninitialized[x959] : &:r2896_1 -# 2896| r2896_3(glval) = FunctionAddress[String] : -# 2896| v2896_4(void) = Call[String] : func:r2896_3, this:r2896_1 -# 2896| mu2896_5(unknown) = ^CallSideEffect : ~m? -# 2896| mu2896_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2896_1 -# 2897| r2897_1(glval) = VariableAddress[x959] : -# 2897| r2897_2(glval) = FunctionAddress[~String] : -# 2897| v2897_3(void) = Call[~String] : func:r2897_2, this:r2897_1 -# 2897| mu2897_4(unknown) = ^CallSideEffect : ~m? -# 2897| v2897_5(void) = ^IndirectReadSideEffect[-1] : &:r2897_1, ~m? -# 2897| mu2897_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2897_1 -# 2897| r2897_7(bool) = Constant[0] : -# 2897| v2897_8(void) = ConditionalBranch : r2897_7 +# 35| Block 960 +# 35| r35_13427(glval) = VariableAddress[x959] : +# 35| mu35_13428(String) = Uninitialized[x959] : &:r35_13427 +# 35| r35_13429(glval) = FunctionAddress[String] : +# 35| v35_13430(void) = Call[String] : func:r35_13429, this:r35_13427 +# 35| mu35_13431(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13432(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13427 +# 35| r35_13433(glval) = VariableAddress[x959] : +# 35| r35_13434(glval) = FunctionAddress[~String] : +# 35| v35_13435(void) = Call[~String] : func:r35_13434, this:r35_13433 +# 35| mu35_13436(unknown) = ^CallSideEffect : ~m? +# 35| v35_13437(void) = ^IndirectReadSideEffect[-1] : &:r35_13433, ~m? +# 35| mu35_13438(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13433 +# 35| r35_13439(bool) = Constant[0] : +# 35| v35_13440(void) = ConditionalBranch : r35_13439 #-----| False -> Block 961 #-----| True (back edge) -> Block 960 -# 2899| Block 961 -# 2899| r2899_1(glval) = VariableAddress[x960] : -# 2899| mu2899_2(String) = Uninitialized[x960] : &:r2899_1 -# 2899| r2899_3(glval) = FunctionAddress[String] : -# 2899| v2899_4(void) = Call[String] : func:r2899_3, this:r2899_1 -# 2899| mu2899_5(unknown) = ^CallSideEffect : ~m? -# 2899| mu2899_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2899_1 -# 2900| r2900_1(glval) = VariableAddress[x960] : -# 2900| r2900_2(glval) = FunctionAddress[~String] : -# 2900| v2900_3(void) = Call[~String] : func:r2900_2, this:r2900_1 -# 2900| mu2900_4(unknown) = ^CallSideEffect : ~m? -# 2900| v2900_5(void) = ^IndirectReadSideEffect[-1] : &:r2900_1, ~m? -# 2900| mu2900_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2900_1 -# 2900| r2900_7(bool) = Constant[0] : -# 2900| v2900_8(void) = ConditionalBranch : r2900_7 +# 35| Block 961 +# 35| r35_13441(glval) = VariableAddress[x960] : +# 35| mu35_13442(String) = Uninitialized[x960] : &:r35_13441 +# 35| r35_13443(glval) = FunctionAddress[String] : +# 35| v35_13444(void) = Call[String] : func:r35_13443, this:r35_13441 +# 35| mu35_13445(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13446(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13441 +# 35| r35_13447(glval) = VariableAddress[x960] : +# 35| r35_13448(glval) = FunctionAddress[~String] : +# 35| v35_13449(void) = Call[~String] : func:r35_13448, this:r35_13447 +# 35| mu35_13450(unknown) = ^CallSideEffect : ~m? +# 35| v35_13451(void) = ^IndirectReadSideEffect[-1] : &:r35_13447, ~m? +# 35| mu35_13452(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13447 +# 35| r35_13453(bool) = Constant[0] : +# 35| v35_13454(void) = ConditionalBranch : r35_13453 #-----| False -> Block 962 #-----| True (back edge) -> Block 961 -# 2902| Block 962 -# 2902| r2902_1(glval) = VariableAddress[x961] : -# 2902| mu2902_2(String) = Uninitialized[x961] : &:r2902_1 -# 2902| r2902_3(glval) = FunctionAddress[String] : -# 2902| v2902_4(void) = Call[String] : func:r2902_3, this:r2902_1 -# 2902| mu2902_5(unknown) = ^CallSideEffect : ~m? -# 2902| mu2902_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2902_1 -# 2903| r2903_1(glval) = VariableAddress[x961] : -# 2903| r2903_2(glval) = FunctionAddress[~String] : -# 2903| v2903_3(void) = Call[~String] : func:r2903_2, this:r2903_1 -# 2903| mu2903_4(unknown) = ^CallSideEffect : ~m? -# 2903| v2903_5(void) = ^IndirectReadSideEffect[-1] : &:r2903_1, ~m? -# 2903| mu2903_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2903_1 -# 2903| r2903_7(bool) = Constant[0] : -# 2903| v2903_8(void) = ConditionalBranch : r2903_7 +# 35| Block 962 +# 35| r35_13455(glval) = VariableAddress[x961] : +# 35| mu35_13456(String) = Uninitialized[x961] : &:r35_13455 +# 35| r35_13457(glval) = FunctionAddress[String] : +# 35| v35_13458(void) = Call[String] : func:r35_13457, this:r35_13455 +# 35| mu35_13459(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13460(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13455 +# 35| r35_13461(glval) = VariableAddress[x961] : +# 35| r35_13462(glval) = FunctionAddress[~String] : +# 35| v35_13463(void) = Call[~String] : func:r35_13462, this:r35_13461 +# 35| mu35_13464(unknown) = ^CallSideEffect : ~m? +# 35| v35_13465(void) = ^IndirectReadSideEffect[-1] : &:r35_13461, ~m? +# 35| mu35_13466(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13461 +# 35| r35_13467(bool) = Constant[0] : +# 35| v35_13468(void) = ConditionalBranch : r35_13467 #-----| False -> Block 963 #-----| True (back edge) -> Block 962 -# 2905| Block 963 -# 2905| r2905_1(glval) = VariableAddress[x962] : -# 2905| mu2905_2(String) = Uninitialized[x962] : &:r2905_1 -# 2905| r2905_3(glval) = FunctionAddress[String] : -# 2905| v2905_4(void) = Call[String] : func:r2905_3, this:r2905_1 -# 2905| mu2905_5(unknown) = ^CallSideEffect : ~m? -# 2905| mu2905_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2905_1 -# 2906| r2906_1(glval) = VariableAddress[x962] : -# 2906| r2906_2(glval) = FunctionAddress[~String] : -# 2906| v2906_3(void) = Call[~String] : func:r2906_2, this:r2906_1 -# 2906| mu2906_4(unknown) = ^CallSideEffect : ~m? -# 2906| v2906_5(void) = ^IndirectReadSideEffect[-1] : &:r2906_1, ~m? -# 2906| mu2906_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2906_1 -# 2906| r2906_7(bool) = Constant[0] : -# 2906| v2906_8(void) = ConditionalBranch : r2906_7 +# 35| Block 963 +# 35| r35_13469(glval) = VariableAddress[x962] : +# 35| mu35_13470(String) = Uninitialized[x962] : &:r35_13469 +# 35| r35_13471(glval) = FunctionAddress[String] : +# 35| v35_13472(void) = Call[String] : func:r35_13471, this:r35_13469 +# 35| mu35_13473(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13474(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13469 +# 35| r35_13475(glval) = VariableAddress[x962] : +# 35| r35_13476(glval) = FunctionAddress[~String] : +# 35| v35_13477(void) = Call[~String] : func:r35_13476, this:r35_13475 +# 35| mu35_13478(unknown) = ^CallSideEffect : ~m? +# 35| v35_13479(void) = ^IndirectReadSideEffect[-1] : &:r35_13475, ~m? +# 35| mu35_13480(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13475 +# 35| r35_13481(bool) = Constant[0] : +# 35| v35_13482(void) = ConditionalBranch : r35_13481 #-----| False -> Block 964 #-----| True (back edge) -> Block 963 -# 2908| Block 964 -# 2908| r2908_1(glval) = VariableAddress[x963] : -# 2908| mu2908_2(String) = Uninitialized[x963] : &:r2908_1 -# 2908| r2908_3(glval) = FunctionAddress[String] : -# 2908| v2908_4(void) = Call[String] : func:r2908_3, this:r2908_1 -# 2908| mu2908_5(unknown) = ^CallSideEffect : ~m? -# 2908| mu2908_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2908_1 -# 2909| r2909_1(glval) = VariableAddress[x963] : -# 2909| r2909_2(glval) = FunctionAddress[~String] : -# 2909| v2909_3(void) = Call[~String] : func:r2909_2, this:r2909_1 -# 2909| mu2909_4(unknown) = ^CallSideEffect : ~m? -# 2909| v2909_5(void) = ^IndirectReadSideEffect[-1] : &:r2909_1, ~m? -# 2909| mu2909_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2909_1 -# 2909| r2909_7(bool) = Constant[0] : -# 2909| v2909_8(void) = ConditionalBranch : r2909_7 +# 35| Block 964 +# 35| r35_13483(glval) = VariableAddress[x963] : +# 35| mu35_13484(String) = Uninitialized[x963] : &:r35_13483 +# 35| r35_13485(glval) = FunctionAddress[String] : +# 35| v35_13486(void) = Call[String] : func:r35_13485, this:r35_13483 +# 35| mu35_13487(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13488(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13483 +# 35| r35_13489(glval) = VariableAddress[x963] : +# 35| r35_13490(glval) = FunctionAddress[~String] : +# 35| v35_13491(void) = Call[~String] : func:r35_13490, this:r35_13489 +# 35| mu35_13492(unknown) = ^CallSideEffect : ~m? +# 35| v35_13493(void) = ^IndirectReadSideEffect[-1] : &:r35_13489, ~m? +# 35| mu35_13494(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13489 +# 35| r35_13495(bool) = Constant[0] : +# 35| v35_13496(void) = ConditionalBranch : r35_13495 #-----| False -> Block 965 #-----| True (back edge) -> Block 964 -# 2911| Block 965 -# 2911| r2911_1(glval) = VariableAddress[x964] : -# 2911| mu2911_2(String) = Uninitialized[x964] : &:r2911_1 -# 2911| r2911_3(glval) = FunctionAddress[String] : -# 2911| v2911_4(void) = Call[String] : func:r2911_3, this:r2911_1 -# 2911| mu2911_5(unknown) = ^CallSideEffect : ~m? -# 2911| mu2911_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2911_1 -# 2912| r2912_1(glval) = VariableAddress[x964] : -# 2912| r2912_2(glval) = FunctionAddress[~String] : -# 2912| v2912_3(void) = Call[~String] : func:r2912_2, this:r2912_1 -# 2912| mu2912_4(unknown) = ^CallSideEffect : ~m? -# 2912| v2912_5(void) = ^IndirectReadSideEffect[-1] : &:r2912_1, ~m? -# 2912| mu2912_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2912_1 -# 2912| r2912_7(bool) = Constant[0] : -# 2912| v2912_8(void) = ConditionalBranch : r2912_7 +# 35| Block 965 +# 35| r35_13497(glval) = VariableAddress[x964] : +# 35| mu35_13498(String) = Uninitialized[x964] : &:r35_13497 +# 35| r35_13499(glval) = FunctionAddress[String] : +# 35| v35_13500(void) = Call[String] : func:r35_13499, this:r35_13497 +# 35| mu35_13501(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13502(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13497 +# 35| r35_13503(glval) = VariableAddress[x964] : +# 35| r35_13504(glval) = FunctionAddress[~String] : +# 35| v35_13505(void) = Call[~String] : func:r35_13504, this:r35_13503 +# 35| mu35_13506(unknown) = ^CallSideEffect : ~m? +# 35| v35_13507(void) = ^IndirectReadSideEffect[-1] : &:r35_13503, ~m? +# 35| mu35_13508(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13503 +# 35| r35_13509(bool) = Constant[0] : +# 35| v35_13510(void) = ConditionalBranch : r35_13509 #-----| False -> Block 966 #-----| True (back edge) -> Block 965 -# 2914| Block 966 -# 2914| r2914_1(glval) = VariableAddress[x965] : -# 2914| mu2914_2(String) = Uninitialized[x965] : &:r2914_1 -# 2914| r2914_3(glval) = FunctionAddress[String] : -# 2914| v2914_4(void) = Call[String] : func:r2914_3, this:r2914_1 -# 2914| mu2914_5(unknown) = ^CallSideEffect : ~m? -# 2914| mu2914_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2914_1 -# 2915| r2915_1(glval) = VariableAddress[x965] : -# 2915| r2915_2(glval) = FunctionAddress[~String] : -# 2915| v2915_3(void) = Call[~String] : func:r2915_2, this:r2915_1 -# 2915| mu2915_4(unknown) = ^CallSideEffect : ~m? -# 2915| v2915_5(void) = ^IndirectReadSideEffect[-1] : &:r2915_1, ~m? -# 2915| mu2915_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2915_1 -# 2915| r2915_7(bool) = Constant[0] : -# 2915| v2915_8(void) = ConditionalBranch : r2915_7 +# 35| Block 966 +# 35| r35_13511(glval) = VariableAddress[x965] : +# 35| mu35_13512(String) = Uninitialized[x965] : &:r35_13511 +# 35| r35_13513(glval) = FunctionAddress[String] : +# 35| v35_13514(void) = Call[String] : func:r35_13513, this:r35_13511 +# 35| mu35_13515(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13516(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13511 +# 35| r35_13517(glval) = VariableAddress[x965] : +# 35| r35_13518(glval) = FunctionAddress[~String] : +# 35| v35_13519(void) = Call[~String] : func:r35_13518, this:r35_13517 +# 35| mu35_13520(unknown) = ^CallSideEffect : ~m? +# 35| v35_13521(void) = ^IndirectReadSideEffect[-1] : &:r35_13517, ~m? +# 35| mu35_13522(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13517 +# 35| r35_13523(bool) = Constant[0] : +# 35| v35_13524(void) = ConditionalBranch : r35_13523 #-----| False -> Block 967 #-----| True (back edge) -> Block 966 -# 2917| Block 967 -# 2917| r2917_1(glval) = VariableAddress[x966] : -# 2917| mu2917_2(String) = Uninitialized[x966] : &:r2917_1 -# 2917| r2917_3(glval) = FunctionAddress[String] : -# 2917| v2917_4(void) = Call[String] : func:r2917_3, this:r2917_1 -# 2917| mu2917_5(unknown) = ^CallSideEffect : ~m? -# 2917| mu2917_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2917_1 -# 2918| r2918_1(glval) = VariableAddress[x966] : -# 2918| r2918_2(glval) = FunctionAddress[~String] : -# 2918| v2918_3(void) = Call[~String] : func:r2918_2, this:r2918_1 -# 2918| mu2918_4(unknown) = ^CallSideEffect : ~m? -# 2918| v2918_5(void) = ^IndirectReadSideEffect[-1] : &:r2918_1, ~m? -# 2918| mu2918_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2918_1 -# 2918| r2918_7(bool) = Constant[0] : -# 2918| v2918_8(void) = ConditionalBranch : r2918_7 +# 35| Block 967 +# 35| r35_13525(glval) = VariableAddress[x966] : +# 35| mu35_13526(String) = Uninitialized[x966] : &:r35_13525 +# 35| r35_13527(glval) = FunctionAddress[String] : +# 35| v35_13528(void) = Call[String] : func:r35_13527, this:r35_13525 +# 35| mu35_13529(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13530(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13525 +# 35| r35_13531(glval) = VariableAddress[x966] : +# 35| r35_13532(glval) = FunctionAddress[~String] : +# 35| v35_13533(void) = Call[~String] : func:r35_13532, this:r35_13531 +# 35| mu35_13534(unknown) = ^CallSideEffect : ~m? +# 35| v35_13535(void) = ^IndirectReadSideEffect[-1] : &:r35_13531, ~m? +# 35| mu35_13536(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13531 +# 35| r35_13537(bool) = Constant[0] : +# 35| v35_13538(void) = ConditionalBranch : r35_13537 #-----| False -> Block 968 #-----| True (back edge) -> Block 967 -# 2920| Block 968 -# 2920| r2920_1(glval) = VariableAddress[x967] : -# 2920| mu2920_2(String) = Uninitialized[x967] : &:r2920_1 -# 2920| r2920_3(glval) = FunctionAddress[String] : -# 2920| v2920_4(void) = Call[String] : func:r2920_3, this:r2920_1 -# 2920| mu2920_5(unknown) = ^CallSideEffect : ~m? -# 2920| mu2920_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2920_1 -# 2921| r2921_1(glval) = VariableAddress[x967] : -# 2921| r2921_2(glval) = FunctionAddress[~String] : -# 2921| v2921_3(void) = Call[~String] : func:r2921_2, this:r2921_1 -# 2921| mu2921_4(unknown) = ^CallSideEffect : ~m? -# 2921| v2921_5(void) = ^IndirectReadSideEffect[-1] : &:r2921_1, ~m? -# 2921| mu2921_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2921_1 -# 2921| r2921_7(bool) = Constant[0] : -# 2921| v2921_8(void) = ConditionalBranch : r2921_7 +# 35| Block 968 +# 35| r35_13539(glval) = VariableAddress[x967] : +# 35| mu35_13540(String) = Uninitialized[x967] : &:r35_13539 +# 35| r35_13541(glval) = FunctionAddress[String] : +# 35| v35_13542(void) = Call[String] : func:r35_13541, this:r35_13539 +# 35| mu35_13543(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13544(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13539 +# 35| r35_13545(glval) = VariableAddress[x967] : +# 35| r35_13546(glval) = FunctionAddress[~String] : +# 35| v35_13547(void) = Call[~String] : func:r35_13546, this:r35_13545 +# 35| mu35_13548(unknown) = ^CallSideEffect : ~m? +# 35| v35_13549(void) = ^IndirectReadSideEffect[-1] : &:r35_13545, ~m? +# 35| mu35_13550(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13545 +# 35| r35_13551(bool) = Constant[0] : +# 35| v35_13552(void) = ConditionalBranch : r35_13551 #-----| False -> Block 969 #-----| True (back edge) -> Block 968 -# 2923| Block 969 -# 2923| r2923_1(glval) = VariableAddress[x968] : -# 2923| mu2923_2(String) = Uninitialized[x968] : &:r2923_1 -# 2923| r2923_3(glval) = FunctionAddress[String] : -# 2923| v2923_4(void) = Call[String] : func:r2923_3, this:r2923_1 -# 2923| mu2923_5(unknown) = ^CallSideEffect : ~m? -# 2923| mu2923_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2923_1 -# 2924| r2924_1(glval) = VariableAddress[x968] : -# 2924| r2924_2(glval) = FunctionAddress[~String] : -# 2924| v2924_3(void) = Call[~String] : func:r2924_2, this:r2924_1 -# 2924| mu2924_4(unknown) = ^CallSideEffect : ~m? -# 2924| v2924_5(void) = ^IndirectReadSideEffect[-1] : &:r2924_1, ~m? -# 2924| mu2924_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2924_1 -# 2924| r2924_7(bool) = Constant[0] : -# 2924| v2924_8(void) = ConditionalBranch : r2924_7 +# 35| Block 969 +# 35| r35_13553(glval) = VariableAddress[x968] : +# 35| mu35_13554(String) = Uninitialized[x968] : &:r35_13553 +# 35| r35_13555(glval) = FunctionAddress[String] : +# 35| v35_13556(void) = Call[String] : func:r35_13555, this:r35_13553 +# 35| mu35_13557(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13558(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13553 +# 35| r35_13559(glval) = VariableAddress[x968] : +# 35| r35_13560(glval) = FunctionAddress[~String] : +# 35| v35_13561(void) = Call[~String] : func:r35_13560, this:r35_13559 +# 35| mu35_13562(unknown) = ^CallSideEffect : ~m? +# 35| v35_13563(void) = ^IndirectReadSideEffect[-1] : &:r35_13559, ~m? +# 35| mu35_13564(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13559 +# 35| r35_13565(bool) = Constant[0] : +# 35| v35_13566(void) = ConditionalBranch : r35_13565 #-----| False -> Block 970 #-----| True (back edge) -> Block 969 -# 2926| Block 970 -# 2926| r2926_1(glval) = VariableAddress[x969] : -# 2926| mu2926_2(String) = Uninitialized[x969] : &:r2926_1 -# 2926| r2926_3(glval) = FunctionAddress[String] : -# 2926| v2926_4(void) = Call[String] : func:r2926_3, this:r2926_1 -# 2926| mu2926_5(unknown) = ^CallSideEffect : ~m? -# 2926| mu2926_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2926_1 -# 2927| r2927_1(glval) = VariableAddress[x969] : -# 2927| r2927_2(glval) = FunctionAddress[~String] : -# 2927| v2927_3(void) = Call[~String] : func:r2927_2, this:r2927_1 -# 2927| mu2927_4(unknown) = ^CallSideEffect : ~m? -# 2927| v2927_5(void) = ^IndirectReadSideEffect[-1] : &:r2927_1, ~m? -# 2927| mu2927_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2927_1 -# 2927| r2927_7(bool) = Constant[0] : -# 2927| v2927_8(void) = ConditionalBranch : r2927_7 +# 35| Block 970 +# 35| r35_13567(glval) = VariableAddress[x969] : +# 35| mu35_13568(String) = Uninitialized[x969] : &:r35_13567 +# 35| r35_13569(glval) = FunctionAddress[String] : +# 35| v35_13570(void) = Call[String] : func:r35_13569, this:r35_13567 +# 35| mu35_13571(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13572(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13567 +# 35| r35_13573(glval) = VariableAddress[x969] : +# 35| r35_13574(glval) = FunctionAddress[~String] : +# 35| v35_13575(void) = Call[~String] : func:r35_13574, this:r35_13573 +# 35| mu35_13576(unknown) = ^CallSideEffect : ~m? +# 35| v35_13577(void) = ^IndirectReadSideEffect[-1] : &:r35_13573, ~m? +# 35| mu35_13578(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13573 +# 35| r35_13579(bool) = Constant[0] : +# 35| v35_13580(void) = ConditionalBranch : r35_13579 #-----| False -> Block 971 #-----| True (back edge) -> Block 970 -# 2929| Block 971 -# 2929| r2929_1(glval) = VariableAddress[x970] : -# 2929| mu2929_2(String) = Uninitialized[x970] : &:r2929_1 -# 2929| r2929_3(glval) = FunctionAddress[String] : -# 2929| v2929_4(void) = Call[String] : func:r2929_3, this:r2929_1 -# 2929| mu2929_5(unknown) = ^CallSideEffect : ~m? -# 2929| mu2929_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2929_1 -# 2930| r2930_1(glval) = VariableAddress[x970] : -# 2930| r2930_2(glval) = FunctionAddress[~String] : -# 2930| v2930_3(void) = Call[~String] : func:r2930_2, this:r2930_1 -# 2930| mu2930_4(unknown) = ^CallSideEffect : ~m? -# 2930| v2930_5(void) = ^IndirectReadSideEffect[-1] : &:r2930_1, ~m? -# 2930| mu2930_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2930_1 -# 2930| r2930_7(bool) = Constant[0] : -# 2930| v2930_8(void) = ConditionalBranch : r2930_7 +# 35| Block 971 +# 35| r35_13581(glval) = VariableAddress[x970] : +# 35| mu35_13582(String) = Uninitialized[x970] : &:r35_13581 +# 35| r35_13583(glval) = FunctionAddress[String] : +# 35| v35_13584(void) = Call[String] : func:r35_13583, this:r35_13581 +# 35| mu35_13585(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13586(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13581 +# 35| r35_13587(glval) = VariableAddress[x970] : +# 35| r35_13588(glval) = FunctionAddress[~String] : +# 35| v35_13589(void) = Call[~String] : func:r35_13588, this:r35_13587 +# 35| mu35_13590(unknown) = ^CallSideEffect : ~m? +# 35| v35_13591(void) = ^IndirectReadSideEffect[-1] : &:r35_13587, ~m? +# 35| mu35_13592(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13587 +# 35| r35_13593(bool) = Constant[0] : +# 35| v35_13594(void) = ConditionalBranch : r35_13593 #-----| False -> Block 972 #-----| True (back edge) -> Block 971 -# 2932| Block 972 -# 2932| r2932_1(glval) = VariableAddress[x971] : -# 2932| mu2932_2(String) = Uninitialized[x971] : &:r2932_1 -# 2932| r2932_3(glval) = FunctionAddress[String] : -# 2932| v2932_4(void) = Call[String] : func:r2932_3, this:r2932_1 -# 2932| mu2932_5(unknown) = ^CallSideEffect : ~m? -# 2932| mu2932_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2932_1 -# 2933| r2933_1(glval) = VariableAddress[x971] : -# 2933| r2933_2(glval) = FunctionAddress[~String] : -# 2933| v2933_3(void) = Call[~String] : func:r2933_2, this:r2933_1 -# 2933| mu2933_4(unknown) = ^CallSideEffect : ~m? -# 2933| v2933_5(void) = ^IndirectReadSideEffect[-1] : &:r2933_1, ~m? -# 2933| mu2933_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2933_1 -# 2933| r2933_7(bool) = Constant[0] : -# 2933| v2933_8(void) = ConditionalBranch : r2933_7 +# 35| Block 972 +# 35| r35_13595(glval) = VariableAddress[x971] : +# 35| mu35_13596(String) = Uninitialized[x971] : &:r35_13595 +# 35| r35_13597(glval) = FunctionAddress[String] : +# 35| v35_13598(void) = Call[String] : func:r35_13597, this:r35_13595 +# 35| mu35_13599(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13600(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13595 +# 35| r35_13601(glval) = VariableAddress[x971] : +# 35| r35_13602(glval) = FunctionAddress[~String] : +# 35| v35_13603(void) = Call[~String] : func:r35_13602, this:r35_13601 +# 35| mu35_13604(unknown) = ^CallSideEffect : ~m? +# 35| v35_13605(void) = ^IndirectReadSideEffect[-1] : &:r35_13601, ~m? +# 35| mu35_13606(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13601 +# 35| r35_13607(bool) = Constant[0] : +# 35| v35_13608(void) = ConditionalBranch : r35_13607 #-----| False -> Block 973 #-----| True (back edge) -> Block 972 -# 2935| Block 973 -# 2935| r2935_1(glval) = VariableAddress[x972] : -# 2935| mu2935_2(String) = Uninitialized[x972] : &:r2935_1 -# 2935| r2935_3(glval) = FunctionAddress[String] : -# 2935| v2935_4(void) = Call[String] : func:r2935_3, this:r2935_1 -# 2935| mu2935_5(unknown) = ^CallSideEffect : ~m? -# 2935| mu2935_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2935_1 -# 2936| r2936_1(glval) = VariableAddress[x972] : -# 2936| r2936_2(glval) = FunctionAddress[~String] : -# 2936| v2936_3(void) = Call[~String] : func:r2936_2, this:r2936_1 -# 2936| mu2936_4(unknown) = ^CallSideEffect : ~m? -# 2936| v2936_5(void) = ^IndirectReadSideEffect[-1] : &:r2936_1, ~m? -# 2936| mu2936_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2936_1 -# 2936| r2936_7(bool) = Constant[0] : -# 2936| v2936_8(void) = ConditionalBranch : r2936_7 +# 35| Block 973 +# 35| r35_13609(glval) = VariableAddress[x972] : +# 35| mu35_13610(String) = Uninitialized[x972] : &:r35_13609 +# 35| r35_13611(glval) = FunctionAddress[String] : +# 35| v35_13612(void) = Call[String] : func:r35_13611, this:r35_13609 +# 35| mu35_13613(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13614(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13609 +# 35| r35_13615(glval) = VariableAddress[x972] : +# 35| r35_13616(glval) = FunctionAddress[~String] : +# 35| v35_13617(void) = Call[~String] : func:r35_13616, this:r35_13615 +# 35| mu35_13618(unknown) = ^CallSideEffect : ~m? +# 35| v35_13619(void) = ^IndirectReadSideEffect[-1] : &:r35_13615, ~m? +# 35| mu35_13620(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13615 +# 35| r35_13621(bool) = Constant[0] : +# 35| v35_13622(void) = ConditionalBranch : r35_13621 #-----| False -> Block 974 #-----| True (back edge) -> Block 973 -# 2938| Block 974 -# 2938| r2938_1(glval) = VariableAddress[x973] : -# 2938| mu2938_2(String) = Uninitialized[x973] : &:r2938_1 -# 2938| r2938_3(glval) = FunctionAddress[String] : -# 2938| v2938_4(void) = Call[String] : func:r2938_3, this:r2938_1 -# 2938| mu2938_5(unknown) = ^CallSideEffect : ~m? -# 2938| mu2938_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2938_1 -# 2939| r2939_1(glval) = VariableAddress[x973] : -# 2939| r2939_2(glval) = FunctionAddress[~String] : -# 2939| v2939_3(void) = Call[~String] : func:r2939_2, this:r2939_1 -# 2939| mu2939_4(unknown) = ^CallSideEffect : ~m? -# 2939| v2939_5(void) = ^IndirectReadSideEffect[-1] : &:r2939_1, ~m? -# 2939| mu2939_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2939_1 -# 2939| r2939_7(bool) = Constant[0] : -# 2939| v2939_8(void) = ConditionalBranch : r2939_7 +# 35| Block 974 +# 35| r35_13623(glval) = VariableAddress[x973] : +# 35| mu35_13624(String) = Uninitialized[x973] : &:r35_13623 +# 35| r35_13625(glval) = FunctionAddress[String] : +# 35| v35_13626(void) = Call[String] : func:r35_13625, this:r35_13623 +# 35| mu35_13627(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13628(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13623 +# 35| r35_13629(glval) = VariableAddress[x973] : +# 35| r35_13630(glval) = FunctionAddress[~String] : +# 35| v35_13631(void) = Call[~String] : func:r35_13630, this:r35_13629 +# 35| mu35_13632(unknown) = ^CallSideEffect : ~m? +# 35| v35_13633(void) = ^IndirectReadSideEffect[-1] : &:r35_13629, ~m? +# 35| mu35_13634(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13629 +# 35| r35_13635(bool) = Constant[0] : +# 35| v35_13636(void) = ConditionalBranch : r35_13635 #-----| False -> Block 975 #-----| True (back edge) -> Block 974 -# 2941| Block 975 -# 2941| r2941_1(glval) = VariableAddress[x974] : -# 2941| mu2941_2(String) = Uninitialized[x974] : &:r2941_1 -# 2941| r2941_3(glval) = FunctionAddress[String] : -# 2941| v2941_4(void) = Call[String] : func:r2941_3, this:r2941_1 -# 2941| mu2941_5(unknown) = ^CallSideEffect : ~m? -# 2941| mu2941_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2941_1 -# 2942| r2942_1(glval) = VariableAddress[x974] : -# 2942| r2942_2(glval) = FunctionAddress[~String] : -# 2942| v2942_3(void) = Call[~String] : func:r2942_2, this:r2942_1 -# 2942| mu2942_4(unknown) = ^CallSideEffect : ~m? -# 2942| v2942_5(void) = ^IndirectReadSideEffect[-1] : &:r2942_1, ~m? -# 2942| mu2942_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2942_1 -# 2942| r2942_7(bool) = Constant[0] : -# 2942| v2942_8(void) = ConditionalBranch : r2942_7 +# 35| Block 975 +# 35| r35_13637(glval) = VariableAddress[x974] : +# 35| mu35_13638(String) = Uninitialized[x974] : &:r35_13637 +# 35| r35_13639(glval) = FunctionAddress[String] : +# 35| v35_13640(void) = Call[String] : func:r35_13639, this:r35_13637 +# 35| mu35_13641(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13642(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13637 +# 35| r35_13643(glval) = VariableAddress[x974] : +# 35| r35_13644(glval) = FunctionAddress[~String] : +# 35| v35_13645(void) = Call[~String] : func:r35_13644, this:r35_13643 +# 35| mu35_13646(unknown) = ^CallSideEffect : ~m? +# 35| v35_13647(void) = ^IndirectReadSideEffect[-1] : &:r35_13643, ~m? +# 35| mu35_13648(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13643 +# 35| r35_13649(bool) = Constant[0] : +# 35| v35_13650(void) = ConditionalBranch : r35_13649 #-----| False -> Block 976 #-----| True (back edge) -> Block 975 -# 2944| Block 976 -# 2944| r2944_1(glval) = VariableAddress[x975] : -# 2944| mu2944_2(String) = Uninitialized[x975] : &:r2944_1 -# 2944| r2944_3(glval) = FunctionAddress[String] : -# 2944| v2944_4(void) = Call[String] : func:r2944_3, this:r2944_1 -# 2944| mu2944_5(unknown) = ^CallSideEffect : ~m? -# 2944| mu2944_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2944_1 -# 2945| r2945_1(glval) = VariableAddress[x975] : -# 2945| r2945_2(glval) = FunctionAddress[~String] : -# 2945| v2945_3(void) = Call[~String] : func:r2945_2, this:r2945_1 -# 2945| mu2945_4(unknown) = ^CallSideEffect : ~m? -# 2945| v2945_5(void) = ^IndirectReadSideEffect[-1] : &:r2945_1, ~m? -# 2945| mu2945_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2945_1 -# 2945| r2945_7(bool) = Constant[0] : -# 2945| v2945_8(void) = ConditionalBranch : r2945_7 +# 35| Block 976 +# 35| r35_13651(glval) = VariableAddress[x975] : +# 35| mu35_13652(String) = Uninitialized[x975] : &:r35_13651 +# 35| r35_13653(glval) = FunctionAddress[String] : +# 35| v35_13654(void) = Call[String] : func:r35_13653, this:r35_13651 +# 35| mu35_13655(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13656(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13651 +# 35| r35_13657(glval) = VariableAddress[x975] : +# 35| r35_13658(glval) = FunctionAddress[~String] : +# 35| v35_13659(void) = Call[~String] : func:r35_13658, this:r35_13657 +# 35| mu35_13660(unknown) = ^CallSideEffect : ~m? +# 35| v35_13661(void) = ^IndirectReadSideEffect[-1] : &:r35_13657, ~m? +# 35| mu35_13662(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13657 +# 35| r35_13663(bool) = Constant[0] : +# 35| v35_13664(void) = ConditionalBranch : r35_13663 #-----| False -> Block 977 #-----| True (back edge) -> Block 976 -# 2947| Block 977 -# 2947| r2947_1(glval) = VariableAddress[x976] : -# 2947| mu2947_2(String) = Uninitialized[x976] : &:r2947_1 -# 2947| r2947_3(glval) = FunctionAddress[String] : -# 2947| v2947_4(void) = Call[String] : func:r2947_3, this:r2947_1 -# 2947| mu2947_5(unknown) = ^CallSideEffect : ~m? -# 2947| mu2947_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2947_1 -# 2948| r2948_1(glval) = VariableAddress[x976] : -# 2948| r2948_2(glval) = FunctionAddress[~String] : -# 2948| v2948_3(void) = Call[~String] : func:r2948_2, this:r2948_1 -# 2948| mu2948_4(unknown) = ^CallSideEffect : ~m? -# 2948| v2948_5(void) = ^IndirectReadSideEffect[-1] : &:r2948_1, ~m? -# 2948| mu2948_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2948_1 -# 2948| r2948_7(bool) = Constant[0] : -# 2948| v2948_8(void) = ConditionalBranch : r2948_7 +# 35| Block 977 +# 35| r35_13665(glval) = VariableAddress[x976] : +# 35| mu35_13666(String) = Uninitialized[x976] : &:r35_13665 +# 35| r35_13667(glval) = FunctionAddress[String] : +# 35| v35_13668(void) = Call[String] : func:r35_13667, this:r35_13665 +# 35| mu35_13669(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13670(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13665 +# 35| r35_13671(glval) = VariableAddress[x976] : +# 35| r35_13672(glval) = FunctionAddress[~String] : +# 35| v35_13673(void) = Call[~String] : func:r35_13672, this:r35_13671 +# 35| mu35_13674(unknown) = ^CallSideEffect : ~m? +# 35| v35_13675(void) = ^IndirectReadSideEffect[-1] : &:r35_13671, ~m? +# 35| mu35_13676(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13671 +# 35| r35_13677(bool) = Constant[0] : +# 35| v35_13678(void) = ConditionalBranch : r35_13677 #-----| False -> Block 978 #-----| True (back edge) -> Block 977 -# 2950| Block 978 -# 2950| r2950_1(glval) = VariableAddress[x977] : -# 2950| mu2950_2(String) = Uninitialized[x977] : &:r2950_1 -# 2950| r2950_3(glval) = FunctionAddress[String] : -# 2950| v2950_4(void) = Call[String] : func:r2950_3, this:r2950_1 -# 2950| mu2950_5(unknown) = ^CallSideEffect : ~m? -# 2950| mu2950_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2950_1 -# 2951| r2951_1(glval) = VariableAddress[x977] : -# 2951| r2951_2(glval) = FunctionAddress[~String] : -# 2951| v2951_3(void) = Call[~String] : func:r2951_2, this:r2951_1 -# 2951| mu2951_4(unknown) = ^CallSideEffect : ~m? -# 2951| v2951_5(void) = ^IndirectReadSideEffect[-1] : &:r2951_1, ~m? -# 2951| mu2951_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2951_1 -# 2951| r2951_7(bool) = Constant[0] : -# 2951| v2951_8(void) = ConditionalBranch : r2951_7 +# 35| Block 978 +# 35| r35_13679(glval) = VariableAddress[x977] : +# 35| mu35_13680(String) = Uninitialized[x977] : &:r35_13679 +# 35| r35_13681(glval) = FunctionAddress[String] : +# 35| v35_13682(void) = Call[String] : func:r35_13681, this:r35_13679 +# 35| mu35_13683(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13684(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13679 +# 35| r35_13685(glval) = VariableAddress[x977] : +# 35| r35_13686(glval) = FunctionAddress[~String] : +# 35| v35_13687(void) = Call[~String] : func:r35_13686, this:r35_13685 +# 35| mu35_13688(unknown) = ^CallSideEffect : ~m? +# 35| v35_13689(void) = ^IndirectReadSideEffect[-1] : &:r35_13685, ~m? +# 35| mu35_13690(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13685 +# 35| r35_13691(bool) = Constant[0] : +# 35| v35_13692(void) = ConditionalBranch : r35_13691 #-----| False -> Block 979 #-----| True (back edge) -> Block 978 -# 2953| Block 979 -# 2953| r2953_1(glval) = VariableAddress[x978] : -# 2953| mu2953_2(String) = Uninitialized[x978] : &:r2953_1 -# 2953| r2953_3(glval) = FunctionAddress[String] : -# 2953| v2953_4(void) = Call[String] : func:r2953_3, this:r2953_1 -# 2953| mu2953_5(unknown) = ^CallSideEffect : ~m? -# 2953| mu2953_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2953_1 -# 2954| r2954_1(glval) = VariableAddress[x978] : -# 2954| r2954_2(glval) = FunctionAddress[~String] : -# 2954| v2954_3(void) = Call[~String] : func:r2954_2, this:r2954_1 -# 2954| mu2954_4(unknown) = ^CallSideEffect : ~m? -# 2954| v2954_5(void) = ^IndirectReadSideEffect[-1] : &:r2954_1, ~m? -# 2954| mu2954_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2954_1 -# 2954| r2954_7(bool) = Constant[0] : -# 2954| v2954_8(void) = ConditionalBranch : r2954_7 +# 35| Block 979 +# 35| r35_13693(glval) = VariableAddress[x978] : +# 35| mu35_13694(String) = Uninitialized[x978] : &:r35_13693 +# 35| r35_13695(glval) = FunctionAddress[String] : +# 35| v35_13696(void) = Call[String] : func:r35_13695, this:r35_13693 +# 35| mu35_13697(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13698(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13693 +# 35| r35_13699(glval) = VariableAddress[x978] : +# 35| r35_13700(glval) = FunctionAddress[~String] : +# 35| v35_13701(void) = Call[~String] : func:r35_13700, this:r35_13699 +# 35| mu35_13702(unknown) = ^CallSideEffect : ~m? +# 35| v35_13703(void) = ^IndirectReadSideEffect[-1] : &:r35_13699, ~m? +# 35| mu35_13704(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13699 +# 35| r35_13705(bool) = Constant[0] : +# 35| v35_13706(void) = ConditionalBranch : r35_13705 #-----| False -> Block 980 #-----| True (back edge) -> Block 979 -# 2956| Block 980 -# 2956| r2956_1(glval) = VariableAddress[x979] : -# 2956| mu2956_2(String) = Uninitialized[x979] : &:r2956_1 -# 2956| r2956_3(glval) = FunctionAddress[String] : -# 2956| v2956_4(void) = Call[String] : func:r2956_3, this:r2956_1 -# 2956| mu2956_5(unknown) = ^CallSideEffect : ~m? -# 2956| mu2956_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2956_1 -# 2957| r2957_1(glval) = VariableAddress[x979] : -# 2957| r2957_2(glval) = FunctionAddress[~String] : -# 2957| v2957_3(void) = Call[~String] : func:r2957_2, this:r2957_1 -# 2957| mu2957_4(unknown) = ^CallSideEffect : ~m? -# 2957| v2957_5(void) = ^IndirectReadSideEffect[-1] : &:r2957_1, ~m? -# 2957| mu2957_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2957_1 -# 2957| r2957_7(bool) = Constant[0] : -# 2957| v2957_8(void) = ConditionalBranch : r2957_7 +# 35| Block 980 +# 35| r35_13707(glval) = VariableAddress[x979] : +# 35| mu35_13708(String) = Uninitialized[x979] : &:r35_13707 +# 35| r35_13709(glval) = FunctionAddress[String] : +# 35| v35_13710(void) = Call[String] : func:r35_13709, this:r35_13707 +# 35| mu35_13711(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13712(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13707 +# 35| r35_13713(glval) = VariableAddress[x979] : +# 35| r35_13714(glval) = FunctionAddress[~String] : +# 35| v35_13715(void) = Call[~String] : func:r35_13714, this:r35_13713 +# 35| mu35_13716(unknown) = ^CallSideEffect : ~m? +# 35| v35_13717(void) = ^IndirectReadSideEffect[-1] : &:r35_13713, ~m? +# 35| mu35_13718(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13713 +# 35| r35_13719(bool) = Constant[0] : +# 35| v35_13720(void) = ConditionalBranch : r35_13719 #-----| False -> Block 981 #-----| True (back edge) -> Block 980 -# 2959| Block 981 -# 2959| r2959_1(glval) = VariableAddress[x980] : -# 2959| mu2959_2(String) = Uninitialized[x980] : &:r2959_1 -# 2959| r2959_3(glval) = FunctionAddress[String] : -# 2959| v2959_4(void) = Call[String] : func:r2959_3, this:r2959_1 -# 2959| mu2959_5(unknown) = ^CallSideEffect : ~m? -# 2959| mu2959_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2959_1 -# 2960| r2960_1(glval) = VariableAddress[x980] : -# 2960| r2960_2(glval) = FunctionAddress[~String] : -# 2960| v2960_3(void) = Call[~String] : func:r2960_2, this:r2960_1 -# 2960| mu2960_4(unknown) = ^CallSideEffect : ~m? -# 2960| v2960_5(void) = ^IndirectReadSideEffect[-1] : &:r2960_1, ~m? -# 2960| mu2960_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2960_1 -# 2960| r2960_7(bool) = Constant[0] : -# 2960| v2960_8(void) = ConditionalBranch : r2960_7 +# 35| Block 981 +# 35| r35_13721(glval) = VariableAddress[x980] : +# 35| mu35_13722(String) = Uninitialized[x980] : &:r35_13721 +# 35| r35_13723(glval) = FunctionAddress[String] : +# 35| v35_13724(void) = Call[String] : func:r35_13723, this:r35_13721 +# 35| mu35_13725(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13726(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13721 +# 35| r35_13727(glval) = VariableAddress[x980] : +# 35| r35_13728(glval) = FunctionAddress[~String] : +# 35| v35_13729(void) = Call[~String] : func:r35_13728, this:r35_13727 +# 35| mu35_13730(unknown) = ^CallSideEffect : ~m? +# 35| v35_13731(void) = ^IndirectReadSideEffect[-1] : &:r35_13727, ~m? +# 35| mu35_13732(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13727 +# 35| r35_13733(bool) = Constant[0] : +# 35| v35_13734(void) = ConditionalBranch : r35_13733 #-----| False -> Block 982 #-----| True (back edge) -> Block 981 -# 2962| Block 982 -# 2962| r2962_1(glval) = VariableAddress[x981] : -# 2962| mu2962_2(String) = Uninitialized[x981] : &:r2962_1 -# 2962| r2962_3(glval) = FunctionAddress[String] : -# 2962| v2962_4(void) = Call[String] : func:r2962_3, this:r2962_1 -# 2962| mu2962_5(unknown) = ^CallSideEffect : ~m? -# 2962| mu2962_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2962_1 -# 2963| r2963_1(glval) = VariableAddress[x981] : -# 2963| r2963_2(glval) = FunctionAddress[~String] : -# 2963| v2963_3(void) = Call[~String] : func:r2963_2, this:r2963_1 -# 2963| mu2963_4(unknown) = ^CallSideEffect : ~m? -# 2963| v2963_5(void) = ^IndirectReadSideEffect[-1] : &:r2963_1, ~m? -# 2963| mu2963_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2963_1 -# 2963| r2963_7(bool) = Constant[0] : -# 2963| v2963_8(void) = ConditionalBranch : r2963_7 +# 35| Block 982 +# 35| r35_13735(glval) = VariableAddress[x981] : +# 35| mu35_13736(String) = Uninitialized[x981] : &:r35_13735 +# 35| r35_13737(glval) = FunctionAddress[String] : +# 35| v35_13738(void) = Call[String] : func:r35_13737, this:r35_13735 +# 35| mu35_13739(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13740(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13735 +# 35| r35_13741(glval) = VariableAddress[x981] : +# 35| r35_13742(glval) = FunctionAddress[~String] : +# 35| v35_13743(void) = Call[~String] : func:r35_13742, this:r35_13741 +# 35| mu35_13744(unknown) = ^CallSideEffect : ~m? +# 35| v35_13745(void) = ^IndirectReadSideEffect[-1] : &:r35_13741, ~m? +# 35| mu35_13746(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13741 +# 35| r35_13747(bool) = Constant[0] : +# 35| v35_13748(void) = ConditionalBranch : r35_13747 #-----| False -> Block 983 #-----| True (back edge) -> Block 982 -# 2965| Block 983 -# 2965| r2965_1(glval) = VariableAddress[x982] : -# 2965| mu2965_2(String) = Uninitialized[x982] : &:r2965_1 -# 2965| r2965_3(glval) = FunctionAddress[String] : -# 2965| v2965_4(void) = Call[String] : func:r2965_3, this:r2965_1 -# 2965| mu2965_5(unknown) = ^CallSideEffect : ~m? -# 2965| mu2965_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2965_1 -# 2966| r2966_1(glval) = VariableAddress[x982] : -# 2966| r2966_2(glval) = FunctionAddress[~String] : -# 2966| v2966_3(void) = Call[~String] : func:r2966_2, this:r2966_1 -# 2966| mu2966_4(unknown) = ^CallSideEffect : ~m? -# 2966| v2966_5(void) = ^IndirectReadSideEffect[-1] : &:r2966_1, ~m? -# 2966| mu2966_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2966_1 -# 2966| r2966_7(bool) = Constant[0] : -# 2966| v2966_8(void) = ConditionalBranch : r2966_7 +# 35| Block 983 +# 35| r35_13749(glval) = VariableAddress[x982] : +# 35| mu35_13750(String) = Uninitialized[x982] : &:r35_13749 +# 35| r35_13751(glval) = FunctionAddress[String] : +# 35| v35_13752(void) = Call[String] : func:r35_13751, this:r35_13749 +# 35| mu35_13753(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13754(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13749 +# 35| r35_13755(glval) = VariableAddress[x982] : +# 35| r35_13756(glval) = FunctionAddress[~String] : +# 35| v35_13757(void) = Call[~String] : func:r35_13756, this:r35_13755 +# 35| mu35_13758(unknown) = ^CallSideEffect : ~m? +# 35| v35_13759(void) = ^IndirectReadSideEffect[-1] : &:r35_13755, ~m? +# 35| mu35_13760(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13755 +# 35| r35_13761(bool) = Constant[0] : +# 35| v35_13762(void) = ConditionalBranch : r35_13761 #-----| False -> Block 984 #-----| True (back edge) -> Block 983 -# 2968| Block 984 -# 2968| r2968_1(glval) = VariableAddress[x983] : -# 2968| mu2968_2(String) = Uninitialized[x983] : &:r2968_1 -# 2968| r2968_3(glval) = FunctionAddress[String] : -# 2968| v2968_4(void) = Call[String] : func:r2968_3, this:r2968_1 -# 2968| mu2968_5(unknown) = ^CallSideEffect : ~m? -# 2968| mu2968_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2968_1 -# 2969| r2969_1(glval) = VariableAddress[x983] : -# 2969| r2969_2(glval) = FunctionAddress[~String] : -# 2969| v2969_3(void) = Call[~String] : func:r2969_2, this:r2969_1 -# 2969| mu2969_4(unknown) = ^CallSideEffect : ~m? -# 2969| v2969_5(void) = ^IndirectReadSideEffect[-1] : &:r2969_1, ~m? -# 2969| mu2969_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2969_1 -# 2969| r2969_7(bool) = Constant[0] : -# 2969| v2969_8(void) = ConditionalBranch : r2969_7 +# 35| Block 984 +# 35| r35_13763(glval) = VariableAddress[x983] : +# 35| mu35_13764(String) = Uninitialized[x983] : &:r35_13763 +# 35| r35_13765(glval) = FunctionAddress[String] : +# 35| v35_13766(void) = Call[String] : func:r35_13765, this:r35_13763 +# 35| mu35_13767(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13768(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13763 +# 35| r35_13769(glval) = VariableAddress[x983] : +# 35| r35_13770(glval) = FunctionAddress[~String] : +# 35| v35_13771(void) = Call[~String] : func:r35_13770, this:r35_13769 +# 35| mu35_13772(unknown) = ^CallSideEffect : ~m? +# 35| v35_13773(void) = ^IndirectReadSideEffect[-1] : &:r35_13769, ~m? +# 35| mu35_13774(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13769 +# 35| r35_13775(bool) = Constant[0] : +# 35| v35_13776(void) = ConditionalBranch : r35_13775 #-----| False -> Block 985 #-----| True (back edge) -> Block 984 -# 2971| Block 985 -# 2971| r2971_1(glval) = VariableAddress[x984] : -# 2971| mu2971_2(String) = Uninitialized[x984] : &:r2971_1 -# 2971| r2971_3(glval) = FunctionAddress[String] : -# 2971| v2971_4(void) = Call[String] : func:r2971_3, this:r2971_1 -# 2971| mu2971_5(unknown) = ^CallSideEffect : ~m? -# 2971| mu2971_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2971_1 -# 2972| r2972_1(glval) = VariableAddress[x984] : -# 2972| r2972_2(glval) = FunctionAddress[~String] : -# 2972| v2972_3(void) = Call[~String] : func:r2972_2, this:r2972_1 -# 2972| mu2972_4(unknown) = ^CallSideEffect : ~m? -# 2972| v2972_5(void) = ^IndirectReadSideEffect[-1] : &:r2972_1, ~m? -# 2972| mu2972_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2972_1 -# 2972| r2972_7(bool) = Constant[0] : -# 2972| v2972_8(void) = ConditionalBranch : r2972_7 +# 35| Block 985 +# 35| r35_13777(glval) = VariableAddress[x984] : +# 35| mu35_13778(String) = Uninitialized[x984] : &:r35_13777 +# 35| r35_13779(glval) = FunctionAddress[String] : +# 35| v35_13780(void) = Call[String] : func:r35_13779, this:r35_13777 +# 35| mu35_13781(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13782(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13777 +# 35| r35_13783(glval) = VariableAddress[x984] : +# 35| r35_13784(glval) = FunctionAddress[~String] : +# 35| v35_13785(void) = Call[~String] : func:r35_13784, this:r35_13783 +# 35| mu35_13786(unknown) = ^CallSideEffect : ~m? +# 35| v35_13787(void) = ^IndirectReadSideEffect[-1] : &:r35_13783, ~m? +# 35| mu35_13788(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13783 +# 35| r35_13789(bool) = Constant[0] : +# 35| v35_13790(void) = ConditionalBranch : r35_13789 #-----| False -> Block 986 #-----| True (back edge) -> Block 985 -# 2974| Block 986 -# 2974| r2974_1(glval) = VariableAddress[x985] : -# 2974| mu2974_2(String) = Uninitialized[x985] : &:r2974_1 -# 2974| r2974_3(glval) = FunctionAddress[String] : -# 2974| v2974_4(void) = Call[String] : func:r2974_3, this:r2974_1 -# 2974| mu2974_5(unknown) = ^CallSideEffect : ~m? -# 2974| mu2974_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2974_1 -# 2975| r2975_1(glval) = VariableAddress[x985] : -# 2975| r2975_2(glval) = FunctionAddress[~String] : -# 2975| v2975_3(void) = Call[~String] : func:r2975_2, this:r2975_1 -# 2975| mu2975_4(unknown) = ^CallSideEffect : ~m? -# 2975| v2975_5(void) = ^IndirectReadSideEffect[-1] : &:r2975_1, ~m? -# 2975| mu2975_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2975_1 -# 2975| r2975_7(bool) = Constant[0] : -# 2975| v2975_8(void) = ConditionalBranch : r2975_7 +# 35| Block 986 +# 35| r35_13791(glval) = VariableAddress[x985] : +# 35| mu35_13792(String) = Uninitialized[x985] : &:r35_13791 +# 35| r35_13793(glval) = FunctionAddress[String] : +# 35| v35_13794(void) = Call[String] : func:r35_13793, this:r35_13791 +# 35| mu35_13795(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13796(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13791 +# 35| r35_13797(glval) = VariableAddress[x985] : +# 35| r35_13798(glval) = FunctionAddress[~String] : +# 35| v35_13799(void) = Call[~String] : func:r35_13798, this:r35_13797 +# 35| mu35_13800(unknown) = ^CallSideEffect : ~m? +# 35| v35_13801(void) = ^IndirectReadSideEffect[-1] : &:r35_13797, ~m? +# 35| mu35_13802(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13797 +# 35| r35_13803(bool) = Constant[0] : +# 35| v35_13804(void) = ConditionalBranch : r35_13803 #-----| False -> Block 987 #-----| True (back edge) -> Block 986 -# 2977| Block 987 -# 2977| r2977_1(glval) = VariableAddress[x986] : -# 2977| mu2977_2(String) = Uninitialized[x986] : &:r2977_1 -# 2977| r2977_3(glval) = FunctionAddress[String] : -# 2977| v2977_4(void) = Call[String] : func:r2977_3, this:r2977_1 -# 2977| mu2977_5(unknown) = ^CallSideEffect : ~m? -# 2977| mu2977_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2977_1 -# 2978| r2978_1(glval) = VariableAddress[x986] : -# 2978| r2978_2(glval) = FunctionAddress[~String] : -# 2978| v2978_3(void) = Call[~String] : func:r2978_2, this:r2978_1 -# 2978| mu2978_4(unknown) = ^CallSideEffect : ~m? -# 2978| v2978_5(void) = ^IndirectReadSideEffect[-1] : &:r2978_1, ~m? -# 2978| mu2978_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2978_1 -# 2978| r2978_7(bool) = Constant[0] : -# 2978| v2978_8(void) = ConditionalBranch : r2978_7 +# 35| Block 987 +# 35| r35_13805(glval) = VariableAddress[x986] : +# 35| mu35_13806(String) = Uninitialized[x986] : &:r35_13805 +# 35| r35_13807(glval) = FunctionAddress[String] : +# 35| v35_13808(void) = Call[String] : func:r35_13807, this:r35_13805 +# 35| mu35_13809(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13810(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13805 +# 35| r35_13811(glval) = VariableAddress[x986] : +# 35| r35_13812(glval) = FunctionAddress[~String] : +# 35| v35_13813(void) = Call[~String] : func:r35_13812, this:r35_13811 +# 35| mu35_13814(unknown) = ^CallSideEffect : ~m? +# 35| v35_13815(void) = ^IndirectReadSideEffect[-1] : &:r35_13811, ~m? +# 35| mu35_13816(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13811 +# 35| r35_13817(bool) = Constant[0] : +# 35| v35_13818(void) = ConditionalBranch : r35_13817 #-----| False -> Block 988 #-----| True (back edge) -> Block 987 -# 2980| Block 988 -# 2980| r2980_1(glval) = VariableAddress[x987] : -# 2980| mu2980_2(String) = Uninitialized[x987] : &:r2980_1 -# 2980| r2980_3(glval) = FunctionAddress[String] : -# 2980| v2980_4(void) = Call[String] : func:r2980_3, this:r2980_1 -# 2980| mu2980_5(unknown) = ^CallSideEffect : ~m? -# 2980| mu2980_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2980_1 -# 2981| r2981_1(glval) = VariableAddress[x987] : -# 2981| r2981_2(glval) = FunctionAddress[~String] : -# 2981| v2981_3(void) = Call[~String] : func:r2981_2, this:r2981_1 -# 2981| mu2981_4(unknown) = ^CallSideEffect : ~m? -# 2981| v2981_5(void) = ^IndirectReadSideEffect[-1] : &:r2981_1, ~m? -# 2981| mu2981_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2981_1 -# 2981| r2981_7(bool) = Constant[0] : -# 2981| v2981_8(void) = ConditionalBranch : r2981_7 +# 35| Block 988 +# 35| r35_13819(glval) = VariableAddress[x987] : +# 35| mu35_13820(String) = Uninitialized[x987] : &:r35_13819 +# 35| r35_13821(glval) = FunctionAddress[String] : +# 35| v35_13822(void) = Call[String] : func:r35_13821, this:r35_13819 +# 35| mu35_13823(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13824(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13819 +# 35| r35_13825(glval) = VariableAddress[x987] : +# 35| r35_13826(glval) = FunctionAddress[~String] : +# 35| v35_13827(void) = Call[~String] : func:r35_13826, this:r35_13825 +# 35| mu35_13828(unknown) = ^CallSideEffect : ~m? +# 35| v35_13829(void) = ^IndirectReadSideEffect[-1] : &:r35_13825, ~m? +# 35| mu35_13830(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13825 +# 35| r35_13831(bool) = Constant[0] : +# 35| v35_13832(void) = ConditionalBranch : r35_13831 #-----| False -> Block 989 #-----| True (back edge) -> Block 988 -# 2983| Block 989 -# 2983| r2983_1(glval) = VariableAddress[x988] : -# 2983| mu2983_2(String) = Uninitialized[x988] : &:r2983_1 -# 2983| r2983_3(glval) = FunctionAddress[String] : -# 2983| v2983_4(void) = Call[String] : func:r2983_3, this:r2983_1 -# 2983| mu2983_5(unknown) = ^CallSideEffect : ~m? -# 2983| mu2983_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2983_1 -# 2984| r2984_1(glval) = VariableAddress[x988] : -# 2984| r2984_2(glval) = FunctionAddress[~String] : -# 2984| v2984_3(void) = Call[~String] : func:r2984_2, this:r2984_1 -# 2984| mu2984_4(unknown) = ^CallSideEffect : ~m? -# 2984| v2984_5(void) = ^IndirectReadSideEffect[-1] : &:r2984_1, ~m? -# 2984| mu2984_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2984_1 -# 2984| r2984_7(bool) = Constant[0] : -# 2984| v2984_8(void) = ConditionalBranch : r2984_7 +# 35| Block 989 +# 35| r35_13833(glval) = VariableAddress[x988] : +# 35| mu35_13834(String) = Uninitialized[x988] : &:r35_13833 +# 35| r35_13835(glval) = FunctionAddress[String] : +# 35| v35_13836(void) = Call[String] : func:r35_13835, this:r35_13833 +# 35| mu35_13837(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13838(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13833 +# 35| r35_13839(glval) = VariableAddress[x988] : +# 35| r35_13840(glval) = FunctionAddress[~String] : +# 35| v35_13841(void) = Call[~String] : func:r35_13840, this:r35_13839 +# 35| mu35_13842(unknown) = ^CallSideEffect : ~m? +# 35| v35_13843(void) = ^IndirectReadSideEffect[-1] : &:r35_13839, ~m? +# 35| mu35_13844(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13839 +# 35| r35_13845(bool) = Constant[0] : +# 35| v35_13846(void) = ConditionalBranch : r35_13845 #-----| False -> Block 990 #-----| True (back edge) -> Block 989 -# 2986| Block 990 -# 2986| r2986_1(glval) = VariableAddress[x989] : -# 2986| mu2986_2(String) = Uninitialized[x989] : &:r2986_1 -# 2986| r2986_3(glval) = FunctionAddress[String] : -# 2986| v2986_4(void) = Call[String] : func:r2986_3, this:r2986_1 -# 2986| mu2986_5(unknown) = ^CallSideEffect : ~m? -# 2986| mu2986_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2986_1 -# 2987| r2987_1(glval) = VariableAddress[x989] : -# 2987| r2987_2(glval) = FunctionAddress[~String] : -# 2987| v2987_3(void) = Call[~String] : func:r2987_2, this:r2987_1 -# 2987| mu2987_4(unknown) = ^CallSideEffect : ~m? -# 2987| v2987_5(void) = ^IndirectReadSideEffect[-1] : &:r2987_1, ~m? -# 2987| mu2987_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2987_1 -# 2987| r2987_7(bool) = Constant[0] : -# 2987| v2987_8(void) = ConditionalBranch : r2987_7 +# 35| Block 990 +# 35| r35_13847(glval) = VariableAddress[x989] : +# 35| mu35_13848(String) = Uninitialized[x989] : &:r35_13847 +# 35| r35_13849(glval) = FunctionAddress[String] : +# 35| v35_13850(void) = Call[String] : func:r35_13849, this:r35_13847 +# 35| mu35_13851(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13852(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13847 +# 35| r35_13853(glval) = VariableAddress[x989] : +# 35| r35_13854(glval) = FunctionAddress[~String] : +# 35| v35_13855(void) = Call[~String] : func:r35_13854, this:r35_13853 +# 35| mu35_13856(unknown) = ^CallSideEffect : ~m? +# 35| v35_13857(void) = ^IndirectReadSideEffect[-1] : &:r35_13853, ~m? +# 35| mu35_13858(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13853 +# 35| r35_13859(bool) = Constant[0] : +# 35| v35_13860(void) = ConditionalBranch : r35_13859 #-----| False -> Block 991 #-----| True (back edge) -> Block 990 -# 2989| Block 991 -# 2989| r2989_1(glval) = VariableAddress[x990] : -# 2989| mu2989_2(String) = Uninitialized[x990] : &:r2989_1 -# 2989| r2989_3(glval) = FunctionAddress[String] : -# 2989| v2989_4(void) = Call[String] : func:r2989_3, this:r2989_1 -# 2989| mu2989_5(unknown) = ^CallSideEffect : ~m? -# 2989| mu2989_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2989_1 -# 2990| r2990_1(glval) = VariableAddress[x990] : -# 2990| r2990_2(glval) = FunctionAddress[~String] : -# 2990| v2990_3(void) = Call[~String] : func:r2990_2, this:r2990_1 -# 2990| mu2990_4(unknown) = ^CallSideEffect : ~m? -# 2990| v2990_5(void) = ^IndirectReadSideEffect[-1] : &:r2990_1, ~m? -# 2990| mu2990_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2990_1 -# 2990| r2990_7(bool) = Constant[0] : -# 2990| v2990_8(void) = ConditionalBranch : r2990_7 +# 35| Block 991 +# 35| r35_13861(glval) = VariableAddress[x990] : +# 35| mu35_13862(String) = Uninitialized[x990] : &:r35_13861 +# 35| r35_13863(glval) = FunctionAddress[String] : +# 35| v35_13864(void) = Call[String] : func:r35_13863, this:r35_13861 +# 35| mu35_13865(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13866(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13861 +# 35| r35_13867(glval) = VariableAddress[x990] : +# 35| r35_13868(glval) = FunctionAddress[~String] : +# 35| v35_13869(void) = Call[~String] : func:r35_13868, this:r35_13867 +# 35| mu35_13870(unknown) = ^CallSideEffect : ~m? +# 35| v35_13871(void) = ^IndirectReadSideEffect[-1] : &:r35_13867, ~m? +# 35| mu35_13872(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13867 +# 35| r35_13873(bool) = Constant[0] : +# 35| v35_13874(void) = ConditionalBranch : r35_13873 #-----| False -> Block 992 #-----| True (back edge) -> Block 991 -# 2992| Block 992 -# 2992| r2992_1(glval) = VariableAddress[x991] : -# 2992| mu2992_2(String) = Uninitialized[x991] : &:r2992_1 -# 2992| r2992_3(glval) = FunctionAddress[String] : -# 2992| v2992_4(void) = Call[String] : func:r2992_3, this:r2992_1 -# 2992| mu2992_5(unknown) = ^CallSideEffect : ~m? -# 2992| mu2992_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2992_1 -# 2993| r2993_1(glval) = VariableAddress[x991] : -# 2993| r2993_2(glval) = FunctionAddress[~String] : -# 2993| v2993_3(void) = Call[~String] : func:r2993_2, this:r2993_1 -# 2993| mu2993_4(unknown) = ^CallSideEffect : ~m? -# 2993| v2993_5(void) = ^IndirectReadSideEffect[-1] : &:r2993_1, ~m? -# 2993| mu2993_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2993_1 -# 2993| r2993_7(bool) = Constant[0] : -# 2993| v2993_8(void) = ConditionalBranch : r2993_7 +# 35| Block 992 +# 35| r35_13875(glval) = VariableAddress[x991] : +# 35| mu35_13876(String) = Uninitialized[x991] : &:r35_13875 +# 35| r35_13877(glval) = FunctionAddress[String] : +# 35| v35_13878(void) = Call[String] : func:r35_13877, this:r35_13875 +# 35| mu35_13879(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13880(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13875 +# 35| r35_13881(glval) = VariableAddress[x991] : +# 35| r35_13882(glval) = FunctionAddress[~String] : +# 35| v35_13883(void) = Call[~String] : func:r35_13882, this:r35_13881 +# 35| mu35_13884(unknown) = ^CallSideEffect : ~m? +# 35| v35_13885(void) = ^IndirectReadSideEffect[-1] : &:r35_13881, ~m? +# 35| mu35_13886(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13881 +# 35| r35_13887(bool) = Constant[0] : +# 35| v35_13888(void) = ConditionalBranch : r35_13887 #-----| False -> Block 993 #-----| True (back edge) -> Block 992 -# 2995| Block 993 -# 2995| r2995_1(glval) = VariableAddress[x992] : -# 2995| mu2995_2(String) = Uninitialized[x992] : &:r2995_1 -# 2995| r2995_3(glval) = FunctionAddress[String] : -# 2995| v2995_4(void) = Call[String] : func:r2995_3, this:r2995_1 -# 2995| mu2995_5(unknown) = ^CallSideEffect : ~m? -# 2995| mu2995_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2995_1 -# 2996| r2996_1(glval) = VariableAddress[x992] : -# 2996| r2996_2(glval) = FunctionAddress[~String] : -# 2996| v2996_3(void) = Call[~String] : func:r2996_2, this:r2996_1 -# 2996| mu2996_4(unknown) = ^CallSideEffect : ~m? -# 2996| v2996_5(void) = ^IndirectReadSideEffect[-1] : &:r2996_1, ~m? -# 2996| mu2996_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2996_1 -# 2996| r2996_7(bool) = Constant[0] : -# 2996| v2996_8(void) = ConditionalBranch : r2996_7 +# 35| Block 993 +# 35| r35_13889(glval) = VariableAddress[x992] : +# 35| mu35_13890(String) = Uninitialized[x992] : &:r35_13889 +# 35| r35_13891(glval) = FunctionAddress[String] : +# 35| v35_13892(void) = Call[String] : func:r35_13891, this:r35_13889 +# 35| mu35_13893(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13894(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13889 +# 35| r35_13895(glval) = VariableAddress[x992] : +# 35| r35_13896(glval) = FunctionAddress[~String] : +# 35| v35_13897(void) = Call[~String] : func:r35_13896, this:r35_13895 +# 35| mu35_13898(unknown) = ^CallSideEffect : ~m? +# 35| v35_13899(void) = ^IndirectReadSideEffect[-1] : &:r35_13895, ~m? +# 35| mu35_13900(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13895 +# 35| r35_13901(bool) = Constant[0] : +# 35| v35_13902(void) = ConditionalBranch : r35_13901 #-----| False -> Block 994 #-----| True (back edge) -> Block 993 -# 2998| Block 994 -# 2998| r2998_1(glval) = VariableAddress[x993] : -# 2998| mu2998_2(String) = Uninitialized[x993] : &:r2998_1 -# 2998| r2998_3(glval) = FunctionAddress[String] : -# 2998| v2998_4(void) = Call[String] : func:r2998_3, this:r2998_1 -# 2998| mu2998_5(unknown) = ^CallSideEffect : ~m? -# 2998| mu2998_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2998_1 -# 2999| r2999_1(glval) = VariableAddress[x993] : -# 2999| r2999_2(glval) = FunctionAddress[~String] : -# 2999| v2999_3(void) = Call[~String] : func:r2999_2, this:r2999_1 -# 2999| mu2999_4(unknown) = ^CallSideEffect : ~m? -# 2999| v2999_5(void) = ^IndirectReadSideEffect[-1] : &:r2999_1, ~m? -# 2999| mu2999_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2999_1 -# 2999| r2999_7(bool) = Constant[0] : -# 2999| v2999_8(void) = ConditionalBranch : r2999_7 +# 35| Block 994 +# 35| r35_13903(glval) = VariableAddress[x993] : +# 35| mu35_13904(String) = Uninitialized[x993] : &:r35_13903 +# 35| r35_13905(glval) = FunctionAddress[String] : +# 35| v35_13906(void) = Call[String] : func:r35_13905, this:r35_13903 +# 35| mu35_13907(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13908(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13903 +# 35| r35_13909(glval) = VariableAddress[x993] : +# 35| r35_13910(glval) = FunctionAddress[~String] : +# 35| v35_13911(void) = Call[~String] : func:r35_13910, this:r35_13909 +# 35| mu35_13912(unknown) = ^CallSideEffect : ~m? +# 35| v35_13913(void) = ^IndirectReadSideEffect[-1] : &:r35_13909, ~m? +# 35| mu35_13914(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13909 +# 35| r35_13915(bool) = Constant[0] : +# 35| v35_13916(void) = ConditionalBranch : r35_13915 #-----| False -> Block 995 #-----| True (back edge) -> Block 994 -# 3001| Block 995 -# 3001| r3001_1(glval) = VariableAddress[x994] : -# 3001| mu3001_2(String) = Uninitialized[x994] : &:r3001_1 -# 3001| r3001_3(glval) = FunctionAddress[String] : -# 3001| v3001_4(void) = Call[String] : func:r3001_3, this:r3001_1 -# 3001| mu3001_5(unknown) = ^CallSideEffect : ~m? -# 3001| mu3001_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3001_1 -# 3002| r3002_1(glval) = VariableAddress[x994] : -# 3002| r3002_2(glval) = FunctionAddress[~String] : -# 3002| v3002_3(void) = Call[~String] : func:r3002_2, this:r3002_1 -# 3002| mu3002_4(unknown) = ^CallSideEffect : ~m? -# 3002| v3002_5(void) = ^IndirectReadSideEffect[-1] : &:r3002_1, ~m? -# 3002| mu3002_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3002_1 -# 3002| r3002_7(bool) = Constant[0] : -# 3002| v3002_8(void) = ConditionalBranch : r3002_7 +# 35| Block 995 +# 35| r35_13917(glval) = VariableAddress[x994] : +# 35| mu35_13918(String) = Uninitialized[x994] : &:r35_13917 +# 35| r35_13919(glval) = FunctionAddress[String] : +# 35| v35_13920(void) = Call[String] : func:r35_13919, this:r35_13917 +# 35| mu35_13921(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13922(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13917 +# 35| r35_13923(glval) = VariableAddress[x994] : +# 35| r35_13924(glval) = FunctionAddress[~String] : +# 35| v35_13925(void) = Call[~String] : func:r35_13924, this:r35_13923 +# 35| mu35_13926(unknown) = ^CallSideEffect : ~m? +# 35| v35_13927(void) = ^IndirectReadSideEffect[-1] : &:r35_13923, ~m? +# 35| mu35_13928(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13923 +# 35| r35_13929(bool) = Constant[0] : +# 35| v35_13930(void) = ConditionalBranch : r35_13929 #-----| False -> Block 996 #-----| True (back edge) -> Block 995 -# 3004| Block 996 -# 3004| r3004_1(glval) = VariableAddress[x995] : -# 3004| mu3004_2(String) = Uninitialized[x995] : &:r3004_1 -# 3004| r3004_3(glval) = FunctionAddress[String] : -# 3004| v3004_4(void) = Call[String] : func:r3004_3, this:r3004_1 -# 3004| mu3004_5(unknown) = ^CallSideEffect : ~m? -# 3004| mu3004_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3004_1 -# 3005| r3005_1(glval) = VariableAddress[x995] : -# 3005| r3005_2(glval) = FunctionAddress[~String] : -# 3005| v3005_3(void) = Call[~String] : func:r3005_2, this:r3005_1 -# 3005| mu3005_4(unknown) = ^CallSideEffect : ~m? -# 3005| v3005_5(void) = ^IndirectReadSideEffect[-1] : &:r3005_1, ~m? -# 3005| mu3005_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3005_1 -# 3005| r3005_7(bool) = Constant[0] : -# 3005| v3005_8(void) = ConditionalBranch : r3005_7 +# 35| Block 996 +# 35| r35_13931(glval) = VariableAddress[x995] : +# 35| mu35_13932(String) = Uninitialized[x995] : &:r35_13931 +# 35| r35_13933(glval) = FunctionAddress[String] : +# 35| v35_13934(void) = Call[String] : func:r35_13933, this:r35_13931 +# 35| mu35_13935(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13936(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13931 +# 35| r35_13937(glval) = VariableAddress[x995] : +# 35| r35_13938(glval) = FunctionAddress[~String] : +# 35| v35_13939(void) = Call[~String] : func:r35_13938, this:r35_13937 +# 35| mu35_13940(unknown) = ^CallSideEffect : ~m? +# 35| v35_13941(void) = ^IndirectReadSideEffect[-1] : &:r35_13937, ~m? +# 35| mu35_13942(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13937 +# 35| r35_13943(bool) = Constant[0] : +# 35| v35_13944(void) = ConditionalBranch : r35_13943 #-----| False -> Block 997 #-----| True (back edge) -> Block 996 -# 3007| Block 997 -# 3007| r3007_1(glval) = VariableAddress[x996] : -# 3007| mu3007_2(String) = Uninitialized[x996] : &:r3007_1 -# 3007| r3007_3(glval) = FunctionAddress[String] : -# 3007| v3007_4(void) = Call[String] : func:r3007_3, this:r3007_1 -# 3007| mu3007_5(unknown) = ^CallSideEffect : ~m? -# 3007| mu3007_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3007_1 -# 3008| r3008_1(glval) = VariableAddress[x996] : -# 3008| r3008_2(glval) = FunctionAddress[~String] : -# 3008| v3008_3(void) = Call[~String] : func:r3008_2, this:r3008_1 -# 3008| mu3008_4(unknown) = ^CallSideEffect : ~m? -# 3008| v3008_5(void) = ^IndirectReadSideEffect[-1] : &:r3008_1, ~m? -# 3008| mu3008_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3008_1 -# 3008| r3008_7(bool) = Constant[0] : -# 3008| v3008_8(void) = ConditionalBranch : r3008_7 +# 35| Block 997 +# 35| r35_13945(glval) = VariableAddress[x996] : +# 35| mu35_13946(String) = Uninitialized[x996] : &:r35_13945 +# 35| r35_13947(glval) = FunctionAddress[String] : +# 35| v35_13948(void) = Call[String] : func:r35_13947, this:r35_13945 +# 35| mu35_13949(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13950(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13945 +# 35| r35_13951(glval) = VariableAddress[x996] : +# 35| r35_13952(glval) = FunctionAddress[~String] : +# 35| v35_13953(void) = Call[~String] : func:r35_13952, this:r35_13951 +# 35| mu35_13954(unknown) = ^CallSideEffect : ~m? +# 35| v35_13955(void) = ^IndirectReadSideEffect[-1] : &:r35_13951, ~m? +# 35| mu35_13956(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13951 +# 35| r35_13957(bool) = Constant[0] : +# 35| v35_13958(void) = ConditionalBranch : r35_13957 #-----| False -> Block 998 #-----| True (back edge) -> Block 997 -# 3010| Block 998 -# 3010| r3010_1(glval) = VariableAddress[x997] : -# 3010| mu3010_2(String) = Uninitialized[x997] : &:r3010_1 -# 3010| r3010_3(glval) = FunctionAddress[String] : -# 3010| v3010_4(void) = Call[String] : func:r3010_3, this:r3010_1 -# 3010| mu3010_5(unknown) = ^CallSideEffect : ~m? -# 3010| mu3010_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3010_1 -# 3011| r3011_1(glval) = VariableAddress[x997] : -# 3011| r3011_2(glval) = FunctionAddress[~String] : -# 3011| v3011_3(void) = Call[~String] : func:r3011_2, this:r3011_1 -# 3011| mu3011_4(unknown) = ^CallSideEffect : ~m? -# 3011| v3011_5(void) = ^IndirectReadSideEffect[-1] : &:r3011_1, ~m? -# 3011| mu3011_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3011_1 -# 3011| r3011_7(bool) = Constant[0] : -# 3011| v3011_8(void) = ConditionalBranch : r3011_7 +# 35| Block 998 +# 35| r35_13959(glval) = VariableAddress[x997] : +# 35| mu35_13960(String) = Uninitialized[x997] : &:r35_13959 +# 35| r35_13961(glval) = FunctionAddress[String] : +# 35| v35_13962(void) = Call[String] : func:r35_13961, this:r35_13959 +# 35| mu35_13963(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13964(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13959 +# 35| r35_13965(glval) = VariableAddress[x997] : +# 35| r35_13966(glval) = FunctionAddress[~String] : +# 35| v35_13967(void) = Call[~String] : func:r35_13966, this:r35_13965 +# 35| mu35_13968(unknown) = ^CallSideEffect : ~m? +# 35| v35_13969(void) = ^IndirectReadSideEffect[-1] : &:r35_13965, ~m? +# 35| mu35_13970(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13965 +# 35| r35_13971(bool) = Constant[0] : +# 35| v35_13972(void) = ConditionalBranch : r35_13971 #-----| False -> Block 999 #-----| True (back edge) -> Block 998 -# 3013| Block 999 -# 3013| r3013_1(glval) = VariableAddress[x998] : -# 3013| mu3013_2(String) = Uninitialized[x998] : &:r3013_1 -# 3013| r3013_3(glval) = FunctionAddress[String] : -# 3013| v3013_4(void) = Call[String] : func:r3013_3, this:r3013_1 -# 3013| mu3013_5(unknown) = ^CallSideEffect : ~m? -# 3013| mu3013_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3013_1 -# 3014| r3014_1(glval) = VariableAddress[x998] : -# 3014| r3014_2(glval) = FunctionAddress[~String] : -# 3014| v3014_3(void) = Call[~String] : func:r3014_2, this:r3014_1 -# 3014| mu3014_4(unknown) = ^CallSideEffect : ~m? -# 3014| v3014_5(void) = ^IndirectReadSideEffect[-1] : &:r3014_1, ~m? -# 3014| mu3014_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3014_1 -# 3014| r3014_7(bool) = Constant[0] : -# 3014| v3014_8(void) = ConditionalBranch : r3014_7 +# 35| Block 999 +# 35| r35_13973(glval) = VariableAddress[x998] : +# 35| mu35_13974(String) = Uninitialized[x998] : &:r35_13973 +# 35| r35_13975(glval) = FunctionAddress[String] : +# 35| v35_13976(void) = Call[String] : func:r35_13975, this:r35_13973 +# 35| mu35_13977(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13978(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13973 +# 35| r35_13979(glval) = VariableAddress[x998] : +# 35| r35_13980(glval) = FunctionAddress[~String] : +# 35| v35_13981(void) = Call[~String] : func:r35_13980, this:r35_13979 +# 35| mu35_13982(unknown) = ^CallSideEffect : ~m? +# 35| v35_13983(void) = ^IndirectReadSideEffect[-1] : &:r35_13979, ~m? +# 35| mu35_13984(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13979 +# 35| r35_13985(bool) = Constant[0] : +# 35| v35_13986(void) = ConditionalBranch : r35_13985 #-----| False -> Block 1000 #-----| True (back edge) -> Block 999 -# 3016| Block 1000 -# 3016| r3016_1(glval) = VariableAddress[x999] : -# 3016| mu3016_2(String) = Uninitialized[x999] : &:r3016_1 -# 3016| r3016_3(glval) = FunctionAddress[String] : -# 3016| v3016_4(void) = Call[String] : func:r3016_3, this:r3016_1 -# 3016| mu3016_5(unknown) = ^CallSideEffect : ~m? -# 3016| mu3016_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3016_1 -# 3017| r3017_1(glval) = VariableAddress[x999] : -# 3017| r3017_2(glval) = FunctionAddress[~String] : -# 3017| v3017_3(void) = Call[~String] : func:r3017_2, this:r3017_1 -# 3017| mu3017_4(unknown) = ^CallSideEffect : ~m? -# 3017| v3017_5(void) = ^IndirectReadSideEffect[-1] : &:r3017_1, ~m? -# 3017| mu3017_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3017_1 -# 3017| r3017_7(bool) = Constant[0] : -# 3017| v3017_8(void) = ConditionalBranch : r3017_7 +# 35| Block 1000 +# 35| r35_13987(glval) = VariableAddress[x999] : +# 35| mu35_13988(String) = Uninitialized[x999] : &:r35_13987 +# 35| r35_13989(glval) = FunctionAddress[String] : +# 35| v35_13990(void) = Call[String] : func:r35_13989, this:r35_13987 +# 35| mu35_13991(unknown) = ^CallSideEffect : ~m? +# 35| mu35_13992(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13987 +# 35| r35_13993(glval) = VariableAddress[x999] : +# 35| r35_13994(glval) = FunctionAddress[~String] : +# 35| v35_13995(void) = Call[~String] : func:r35_13994, this:r35_13993 +# 35| mu35_13996(unknown) = ^CallSideEffect : ~m? +# 35| v35_13997(void) = ^IndirectReadSideEffect[-1] : &:r35_13993, ~m? +# 35| mu35_13998(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_13993 +# 35| r35_13999(bool) = Constant[0] : +# 35| v35_14000(void) = ConditionalBranch : r35_13999 #-----| False -> Block 1001 #-----| True (back edge) -> Block 1000 -# 3019| Block 1001 -# 3019| r3019_1(glval) = VariableAddress[x1000] : -# 3019| mu3019_2(String) = Uninitialized[x1000] : &:r3019_1 -# 3019| r3019_3(glval) = FunctionAddress[String] : -# 3019| v3019_4(void) = Call[String] : func:r3019_3, this:r3019_1 -# 3019| mu3019_5(unknown) = ^CallSideEffect : ~m? -# 3019| mu3019_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3019_1 -# 3020| r3020_1(glval) = VariableAddress[x1000] : -# 3020| r3020_2(glval) = FunctionAddress[~String] : -# 3020| v3020_3(void) = Call[~String] : func:r3020_2, this:r3020_1 -# 3020| mu3020_4(unknown) = ^CallSideEffect : ~m? -# 3020| v3020_5(void) = ^IndirectReadSideEffect[-1] : &:r3020_1, ~m? -# 3020| mu3020_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3020_1 -# 3020| r3020_7(bool) = Constant[0] : -# 3020| v3020_8(void) = ConditionalBranch : r3020_7 +# 35| Block 1001 +# 35| r35_14001(glval) = VariableAddress[x1000] : +# 35| mu35_14002(String) = Uninitialized[x1000] : &:r35_14001 +# 35| r35_14003(glval) = FunctionAddress[String] : +# 35| v35_14004(void) = Call[String] : func:r35_14003, this:r35_14001 +# 35| mu35_14005(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14006(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14001 +# 35| r35_14007(glval) = VariableAddress[x1000] : +# 35| r35_14008(glval) = FunctionAddress[~String] : +# 35| v35_14009(void) = Call[~String] : func:r35_14008, this:r35_14007 +# 35| mu35_14010(unknown) = ^CallSideEffect : ~m? +# 35| v35_14011(void) = ^IndirectReadSideEffect[-1] : &:r35_14007, ~m? +# 35| mu35_14012(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14007 +# 35| r35_14013(bool) = Constant[0] : +# 35| v35_14014(void) = ConditionalBranch : r35_14013 #-----| False -> Block 1002 #-----| True (back edge) -> Block 1001 -# 3022| Block 1002 -# 3022| r3022_1(glval) = VariableAddress[x1001] : -# 3022| mu3022_2(String) = Uninitialized[x1001] : &:r3022_1 -# 3022| r3022_3(glval) = FunctionAddress[String] : -# 3022| v3022_4(void) = Call[String] : func:r3022_3, this:r3022_1 -# 3022| mu3022_5(unknown) = ^CallSideEffect : ~m? -# 3022| mu3022_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3022_1 -# 3023| r3023_1(glval) = VariableAddress[x1001] : -# 3023| r3023_2(glval) = FunctionAddress[~String] : -# 3023| v3023_3(void) = Call[~String] : func:r3023_2, this:r3023_1 -# 3023| mu3023_4(unknown) = ^CallSideEffect : ~m? -# 3023| v3023_5(void) = ^IndirectReadSideEffect[-1] : &:r3023_1, ~m? -# 3023| mu3023_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3023_1 -# 3023| r3023_7(bool) = Constant[0] : -# 3023| v3023_8(void) = ConditionalBranch : r3023_7 +# 35| Block 1002 +# 35| r35_14015(glval) = VariableAddress[x1001] : +# 35| mu35_14016(String) = Uninitialized[x1001] : &:r35_14015 +# 35| r35_14017(glval) = FunctionAddress[String] : +# 35| v35_14018(void) = Call[String] : func:r35_14017, this:r35_14015 +# 35| mu35_14019(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14020(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14015 +# 35| r35_14021(glval) = VariableAddress[x1001] : +# 35| r35_14022(glval) = FunctionAddress[~String] : +# 35| v35_14023(void) = Call[~String] : func:r35_14022, this:r35_14021 +# 35| mu35_14024(unknown) = ^CallSideEffect : ~m? +# 35| v35_14025(void) = ^IndirectReadSideEffect[-1] : &:r35_14021, ~m? +# 35| mu35_14026(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14021 +# 35| r35_14027(bool) = Constant[0] : +# 35| v35_14028(void) = ConditionalBranch : r35_14027 #-----| False -> Block 1003 #-----| True (back edge) -> Block 1002 -# 3025| Block 1003 -# 3025| r3025_1(glval) = VariableAddress[x1002] : -# 3025| mu3025_2(String) = Uninitialized[x1002] : &:r3025_1 -# 3025| r3025_3(glval) = FunctionAddress[String] : -# 3025| v3025_4(void) = Call[String] : func:r3025_3, this:r3025_1 -# 3025| mu3025_5(unknown) = ^CallSideEffect : ~m? -# 3025| mu3025_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3025_1 -# 3026| r3026_1(glval) = VariableAddress[x1002] : -# 3026| r3026_2(glval) = FunctionAddress[~String] : -# 3026| v3026_3(void) = Call[~String] : func:r3026_2, this:r3026_1 -# 3026| mu3026_4(unknown) = ^CallSideEffect : ~m? -# 3026| v3026_5(void) = ^IndirectReadSideEffect[-1] : &:r3026_1, ~m? -# 3026| mu3026_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3026_1 -# 3026| r3026_7(bool) = Constant[0] : -# 3026| v3026_8(void) = ConditionalBranch : r3026_7 +# 35| Block 1003 +# 35| r35_14029(glval) = VariableAddress[x1002] : +# 35| mu35_14030(String) = Uninitialized[x1002] : &:r35_14029 +# 35| r35_14031(glval) = FunctionAddress[String] : +# 35| v35_14032(void) = Call[String] : func:r35_14031, this:r35_14029 +# 35| mu35_14033(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14034(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14029 +# 35| r35_14035(glval) = VariableAddress[x1002] : +# 35| r35_14036(glval) = FunctionAddress[~String] : +# 35| v35_14037(void) = Call[~String] : func:r35_14036, this:r35_14035 +# 35| mu35_14038(unknown) = ^CallSideEffect : ~m? +# 35| v35_14039(void) = ^IndirectReadSideEffect[-1] : &:r35_14035, ~m? +# 35| mu35_14040(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14035 +# 35| r35_14041(bool) = Constant[0] : +# 35| v35_14042(void) = ConditionalBranch : r35_14041 #-----| False -> Block 1004 #-----| True (back edge) -> Block 1003 -# 3028| Block 1004 -# 3028| r3028_1(glval) = VariableAddress[x1003] : -# 3028| mu3028_2(String) = Uninitialized[x1003] : &:r3028_1 -# 3028| r3028_3(glval) = FunctionAddress[String] : -# 3028| v3028_4(void) = Call[String] : func:r3028_3, this:r3028_1 -# 3028| mu3028_5(unknown) = ^CallSideEffect : ~m? -# 3028| mu3028_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3028_1 -# 3029| r3029_1(glval) = VariableAddress[x1003] : -# 3029| r3029_2(glval) = FunctionAddress[~String] : -# 3029| v3029_3(void) = Call[~String] : func:r3029_2, this:r3029_1 -# 3029| mu3029_4(unknown) = ^CallSideEffect : ~m? -# 3029| v3029_5(void) = ^IndirectReadSideEffect[-1] : &:r3029_1, ~m? -# 3029| mu3029_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3029_1 -# 3029| r3029_7(bool) = Constant[0] : -# 3029| v3029_8(void) = ConditionalBranch : r3029_7 +# 35| Block 1004 +# 35| r35_14043(glval) = VariableAddress[x1003] : +# 35| mu35_14044(String) = Uninitialized[x1003] : &:r35_14043 +# 35| r35_14045(glval) = FunctionAddress[String] : +# 35| v35_14046(void) = Call[String] : func:r35_14045, this:r35_14043 +# 35| mu35_14047(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14048(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14043 +# 35| r35_14049(glval) = VariableAddress[x1003] : +# 35| r35_14050(glval) = FunctionAddress[~String] : +# 35| v35_14051(void) = Call[~String] : func:r35_14050, this:r35_14049 +# 35| mu35_14052(unknown) = ^CallSideEffect : ~m? +# 35| v35_14053(void) = ^IndirectReadSideEffect[-1] : &:r35_14049, ~m? +# 35| mu35_14054(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14049 +# 35| r35_14055(bool) = Constant[0] : +# 35| v35_14056(void) = ConditionalBranch : r35_14055 #-----| False -> Block 1005 #-----| True (back edge) -> Block 1004 -# 3031| Block 1005 -# 3031| r3031_1(glval) = VariableAddress[x1004] : -# 3031| mu3031_2(String) = Uninitialized[x1004] : &:r3031_1 -# 3031| r3031_3(glval) = FunctionAddress[String] : -# 3031| v3031_4(void) = Call[String] : func:r3031_3, this:r3031_1 -# 3031| mu3031_5(unknown) = ^CallSideEffect : ~m? -# 3031| mu3031_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3031_1 -# 3032| r3032_1(glval) = VariableAddress[x1004] : -# 3032| r3032_2(glval) = FunctionAddress[~String] : -# 3032| v3032_3(void) = Call[~String] : func:r3032_2, this:r3032_1 -# 3032| mu3032_4(unknown) = ^CallSideEffect : ~m? -# 3032| v3032_5(void) = ^IndirectReadSideEffect[-1] : &:r3032_1, ~m? -# 3032| mu3032_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3032_1 -# 3032| r3032_7(bool) = Constant[0] : -# 3032| v3032_8(void) = ConditionalBranch : r3032_7 +# 35| Block 1005 +# 35| r35_14057(glval) = VariableAddress[x1004] : +# 35| mu35_14058(String) = Uninitialized[x1004] : &:r35_14057 +# 35| r35_14059(glval) = FunctionAddress[String] : +# 35| v35_14060(void) = Call[String] : func:r35_14059, this:r35_14057 +# 35| mu35_14061(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14062(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14057 +# 35| r35_14063(glval) = VariableAddress[x1004] : +# 35| r35_14064(glval) = FunctionAddress[~String] : +# 35| v35_14065(void) = Call[~String] : func:r35_14064, this:r35_14063 +# 35| mu35_14066(unknown) = ^CallSideEffect : ~m? +# 35| v35_14067(void) = ^IndirectReadSideEffect[-1] : &:r35_14063, ~m? +# 35| mu35_14068(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14063 +# 35| r35_14069(bool) = Constant[0] : +# 35| v35_14070(void) = ConditionalBranch : r35_14069 #-----| False -> Block 1006 #-----| True (back edge) -> Block 1005 -# 3034| Block 1006 -# 3034| r3034_1(glval) = VariableAddress[x1005] : -# 3034| mu3034_2(String) = Uninitialized[x1005] : &:r3034_1 -# 3034| r3034_3(glval) = FunctionAddress[String] : -# 3034| v3034_4(void) = Call[String] : func:r3034_3, this:r3034_1 -# 3034| mu3034_5(unknown) = ^CallSideEffect : ~m? -# 3034| mu3034_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3034_1 -# 3035| r3035_1(glval) = VariableAddress[x1005] : -# 3035| r3035_2(glval) = FunctionAddress[~String] : -# 3035| v3035_3(void) = Call[~String] : func:r3035_2, this:r3035_1 -# 3035| mu3035_4(unknown) = ^CallSideEffect : ~m? -# 3035| v3035_5(void) = ^IndirectReadSideEffect[-1] : &:r3035_1, ~m? -# 3035| mu3035_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3035_1 -# 3035| r3035_7(bool) = Constant[0] : -# 3035| v3035_8(void) = ConditionalBranch : r3035_7 +# 35| Block 1006 +# 35| r35_14071(glval) = VariableAddress[x1005] : +# 35| mu35_14072(String) = Uninitialized[x1005] : &:r35_14071 +# 35| r35_14073(glval) = FunctionAddress[String] : +# 35| v35_14074(void) = Call[String] : func:r35_14073, this:r35_14071 +# 35| mu35_14075(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14076(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14071 +# 35| r35_14077(glval) = VariableAddress[x1005] : +# 35| r35_14078(glval) = FunctionAddress[~String] : +# 35| v35_14079(void) = Call[~String] : func:r35_14078, this:r35_14077 +# 35| mu35_14080(unknown) = ^CallSideEffect : ~m? +# 35| v35_14081(void) = ^IndirectReadSideEffect[-1] : &:r35_14077, ~m? +# 35| mu35_14082(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14077 +# 35| r35_14083(bool) = Constant[0] : +# 35| v35_14084(void) = ConditionalBranch : r35_14083 #-----| False -> Block 1007 #-----| True (back edge) -> Block 1006 -# 3037| Block 1007 -# 3037| r3037_1(glval) = VariableAddress[x1006] : -# 3037| mu3037_2(String) = Uninitialized[x1006] : &:r3037_1 -# 3037| r3037_3(glval) = FunctionAddress[String] : -# 3037| v3037_4(void) = Call[String] : func:r3037_3, this:r3037_1 -# 3037| mu3037_5(unknown) = ^CallSideEffect : ~m? -# 3037| mu3037_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3037_1 -# 3038| r3038_1(glval) = VariableAddress[x1006] : -# 3038| r3038_2(glval) = FunctionAddress[~String] : -# 3038| v3038_3(void) = Call[~String] : func:r3038_2, this:r3038_1 -# 3038| mu3038_4(unknown) = ^CallSideEffect : ~m? -# 3038| v3038_5(void) = ^IndirectReadSideEffect[-1] : &:r3038_1, ~m? -# 3038| mu3038_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3038_1 -# 3038| r3038_7(bool) = Constant[0] : -# 3038| v3038_8(void) = ConditionalBranch : r3038_7 +# 35| Block 1007 +# 35| r35_14085(glval) = VariableAddress[x1006] : +# 35| mu35_14086(String) = Uninitialized[x1006] : &:r35_14085 +# 35| r35_14087(glval) = FunctionAddress[String] : +# 35| v35_14088(void) = Call[String] : func:r35_14087, this:r35_14085 +# 35| mu35_14089(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14090(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14085 +# 35| r35_14091(glval) = VariableAddress[x1006] : +# 35| r35_14092(glval) = FunctionAddress[~String] : +# 35| v35_14093(void) = Call[~String] : func:r35_14092, this:r35_14091 +# 35| mu35_14094(unknown) = ^CallSideEffect : ~m? +# 35| v35_14095(void) = ^IndirectReadSideEffect[-1] : &:r35_14091, ~m? +# 35| mu35_14096(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14091 +# 35| r35_14097(bool) = Constant[0] : +# 35| v35_14098(void) = ConditionalBranch : r35_14097 #-----| False -> Block 1008 #-----| True (back edge) -> Block 1007 -# 3040| Block 1008 -# 3040| r3040_1(glval) = VariableAddress[x1007] : -# 3040| mu3040_2(String) = Uninitialized[x1007] : &:r3040_1 -# 3040| r3040_3(glval) = FunctionAddress[String] : -# 3040| v3040_4(void) = Call[String] : func:r3040_3, this:r3040_1 -# 3040| mu3040_5(unknown) = ^CallSideEffect : ~m? -# 3040| mu3040_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3040_1 -# 3041| r3041_1(glval) = VariableAddress[x1007] : -# 3041| r3041_2(glval) = FunctionAddress[~String] : -# 3041| v3041_3(void) = Call[~String] : func:r3041_2, this:r3041_1 -# 3041| mu3041_4(unknown) = ^CallSideEffect : ~m? -# 3041| v3041_5(void) = ^IndirectReadSideEffect[-1] : &:r3041_1, ~m? -# 3041| mu3041_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3041_1 -# 3041| r3041_7(bool) = Constant[0] : -# 3041| v3041_8(void) = ConditionalBranch : r3041_7 +# 35| Block 1008 +# 35| r35_14099(glval) = VariableAddress[x1007] : +# 35| mu35_14100(String) = Uninitialized[x1007] : &:r35_14099 +# 35| r35_14101(glval) = FunctionAddress[String] : +# 35| v35_14102(void) = Call[String] : func:r35_14101, this:r35_14099 +# 35| mu35_14103(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14104(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14099 +# 35| r35_14105(glval) = VariableAddress[x1007] : +# 35| r35_14106(glval) = FunctionAddress[~String] : +# 35| v35_14107(void) = Call[~String] : func:r35_14106, this:r35_14105 +# 35| mu35_14108(unknown) = ^CallSideEffect : ~m? +# 35| v35_14109(void) = ^IndirectReadSideEffect[-1] : &:r35_14105, ~m? +# 35| mu35_14110(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14105 +# 35| r35_14111(bool) = Constant[0] : +# 35| v35_14112(void) = ConditionalBranch : r35_14111 #-----| False -> Block 1009 #-----| True (back edge) -> Block 1008 -# 3043| Block 1009 -# 3043| r3043_1(glval) = VariableAddress[x1008] : -# 3043| mu3043_2(String) = Uninitialized[x1008] : &:r3043_1 -# 3043| r3043_3(glval) = FunctionAddress[String] : -# 3043| v3043_4(void) = Call[String] : func:r3043_3, this:r3043_1 -# 3043| mu3043_5(unknown) = ^CallSideEffect : ~m? -# 3043| mu3043_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3043_1 -# 3044| r3044_1(glval) = VariableAddress[x1008] : -# 3044| r3044_2(glval) = FunctionAddress[~String] : -# 3044| v3044_3(void) = Call[~String] : func:r3044_2, this:r3044_1 -# 3044| mu3044_4(unknown) = ^CallSideEffect : ~m? -# 3044| v3044_5(void) = ^IndirectReadSideEffect[-1] : &:r3044_1, ~m? -# 3044| mu3044_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3044_1 -# 3044| r3044_7(bool) = Constant[0] : -# 3044| v3044_8(void) = ConditionalBranch : r3044_7 +# 35| Block 1009 +# 35| r35_14113(glval) = VariableAddress[x1008] : +# 35| mu35_14114(String) = Uninitialized[x1008] : &:r35_14113 +# 35| r35_14115(glval) = FunctionAddress[String] : +# 35| v35_14116(void) = Call[String] : func:r35_14115, this:r35_14113 +# 35| mu35_14117(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14118(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14113 +# 35| r35_14119(glval) = VariableAddress[x1008] : +# 35| r35_14120(glval) = FunctionAddress[~String] : +# 35| v35_14121(void) = Call[~String] : func:r35_14120, this:r35_14119 +# 35| mu35_14122(unknown) = ^CallSideEffect : ~m? +# 35| v35_14123(void) = ^IndirectReadSideEffect[-1] : &:r35_14119, ~m? +# 35| mu35_14124(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14119 +# 35| r35_14125(bool) = Constant[0] : +# 35| v35_14126(void) = ConditionalBranch : r35_14125 #-----| False -> Block 1010 #-----| True (back edge) -> Block 1009 -# 3046| Block 1010 -# 3046| r3046_1(glval) = VariableAddress[x1009] : -# 3046| mu3046_2(String) = Uninitialized[x1009] : &:r3046_1 -# 3046| r3046_3(glval) = FunctionAddress[String] : -# 3046| v3046_4(void) = Call[String] : func:r3046_3, this:r3046_1 -# 3046| mu3046_5(unknown) = ^CallSideEffect : ~m? -# 3046| mu3046_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3046_1 -# 3047| r3047_1(glval) = VariableAddress[x1009] : -# 3047| r3047_2(glval) = FunctionAddress[~String] : -# 3047| v3047_3(void) = Call[~String] : func:r3047_2, this:r3047_1 -# 3047| mu3047_4(unknown) = ^CallSideEffect : ~m? -# 3047| v3047_5(void) = ^IndirectReadSideEffect[-1] : &:r3047_1, ~m? -# 3047| mu3047_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3047_1 -# 3047| r3047_7(bool) = Constant[0] : -# 3047| v3047_8(void) = ConditionalBranch : r3047_7 +# 35| Block 1010 +# 35| r35_14127(glval) = VariableAddress[x1009] : +# 35| mu35_14128(String) = Uninitialized[x1009] : &:r35_14127 +# 35| r35_14129(glval) = FunctionAddress[String] : +# 35| v35_14130(void) = Call[String] : func:r35_14129, this:r35_14127 +# 35| mu35_14131(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14132(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14127 +# 35| r35_14133(glval) = VariableAddress[x1009] : +# 35| r35_14134(glval) = FunctionAddress[~String] : +# 35| v35_14135(void) = Call[~String] : func:r35_14134, this:r35_14133 +# 35| mu35_14136(unknown) = ^CallSideEffect : ~m? +# 35| v35_14137(void) = ^IndirectReadSideEffect[-1] : &:r35_14133, ~m? +# 35| mu35_14138(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14133 +# 35| r35_14139(bool) = Constant[0] : +# 35| v35_14140(void) = ConditionalBranch : r35_14139 #-----| False -> Block 1011 #-----| True (back edge) -> Block 1010 -# 3049| Block 1011 -# 3049| r3049_1(glval) = VariableAddress[x1010] : -# 3049| mu3049_2(String) = Uninitialized[x1010] : &:r3049_1 -# 3049| r3049_3(glval) = FunctionAddress[String] : -# 3049| v3049_4(void) = Call[String] : func:r3049_3, this:r3049_1 -# 3049| mu3049_5(unknown) = ^CallSideEffect : ~m? -# 3049| mu3049_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3049_1 -# 3050| r3050_1(glval) = VariableAddress[x1010] : -# 3050| r3050_2(glval) = FunctionAddress[~String] : -# 3050| v3050_3(void) = Call[~String] : func:r3050_2, this:r3050_1 -# 3050| mu3050_4(unknown) = ^CallSideEffect : ~m? -# 3050| v3050_5(void) = ^IndirectReadSideEffect[-1] : &:r3050_1, ~m? -# 3050| mu3050_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3050_1 -# 3050| r3050_7(bool) = Constant[0] : -# 3050| v3050_8(void) = ConditionalBranch : r3050_7 +# 35| Block 1011 +# 35| r35_14141(glval) = VariableAddress[x1010] : +# 35| mu35_14142(String) = Uninitialized[x1010] : &:r35_14141 +# 35| r35_14143(glval) = FunctionAddress[String] : +# 35| v35_14144(void) = Call[String] : func:r35_14143, this:r35_14141 +# 35| mu35_14145(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14146(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14141 +# 35| r35_14147(glval) = VariableAddress[x1010] : +# 35| r35_14148(glval) = FunctionAddress[~String] : +# 35| v35_14149(void) = Call[~String] : func:r35_14148, this:r35_14147 +# 35| mu35_14150(unknown) = ^CallSideEffect : ~m? +# 35| v35_14151(void) = ^IndirectReadSideEffect[-1] : &:r35_14147, ~m? +# 35| mu35_14152(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14147 +# 35| r35_14153(bool) = Constant[0] : +# 35| v35_14154(void) = ConditionalBranch : r35_14153 #-----| False -> Block 1012 #-----| True (back edge) -> Block 1011 -# 3052| Block 1012 -# 3052| r3052_1(glval) = VariableAddress[x1011] : -# 3052| mu3052_2(String) = Uninitialized[x1011] : &:r3052_1 -# 3052| r3052_3(glval) = FunctionAddress[String] : -# 3052| v3052_4(void) = Call[String] : func:r3052_3, this:r3052_1 -# 3052| mu3052_5(unknown) = ^CallSideEffect : ~m? -# 3052| mu3052_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3052_1 -# 3053| r3053_1(glval) = VariableAddress[x1011] : -# 3053| r3053_2(glval) = FunctionAddress[~String] : -# 3053| v3053_3(void) = Call[~String] : func:r3053_2, this:r3053_1 -# 3053| mu3053_4(unknown) = ^CallSideEffect : ~m? -# 3053| v3053_5(void) = ^IndirectReadSideEffect[-1] : &:r3053_1, ~m? -# 3053| mu3053_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3053_1 -# 3053| r3053_7(bool) = Constant[0] : -# 3053| v3053_8(void) = ConditionalBranch : r3053_7 +# 35| Block 1012 +# 35| r35_14155(glval) = VariableAddress[x1011] : +# 35| mu35_14156(String) = Uninitialized[x1011] : &:r35_14155 +# 35| r35_14157(glval) = FunctionAddress[String] : +# 35| v35_14158(void) = Call[String] : func:r35_14157, this:r35_14155 +# 35| mu35_14159(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14160(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14155 +# 35| r35_14161(glval) = VariableAddress[x1011] : +# 35| r35_14162(glval) = FunctionAddress[~String] : +# 35| v35_14163(void) = Call[~String] : func:r35_14162, this:r35_14161 +# 35| mu35_14164(unknown) = ^CallSideEffect : ~m? +# 35| v35_14165(void) = ^IndirectReadSideEffect[-1] : &:r35_14161, ~m? +# 35| mu35_14166(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14161 +# 35| r35_14167(bool) = Constant[0] : +# 35| v35_14168(void) = ConditionalBranch : r35_14167 #-----| False -> Block 1013 #-----| True (back edge) -> Block 1012 -# 3055| Block 1013 -# 3055| r3055_1(glval) = VariableAddress[x1012] : -# 3055| mu3055_2(String) = Uninitialized[x1012] : &:r3055_1 -# 3055| r3055_3(glval) = FunctionAddress[String] : -# 3055| v3055_4(void) = Call[String] : func:r3055_3, this:r3055_1 -# 3055| mu3055_5(unknown) = ^CallSideEffect : ~m? -# 3055| mu3055_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3055_1 -# 3056| r3056_1(glval) = VariableAddress[x1012] : -# 3056| r3056_2(glval) = FunctionAddress[~String] : -# 3056| v3056_3(void) = Call[~String] : func:r3056_2, this:r3056_1 -# 3056| mu3056_4(unknown) = ^CallSideEffect : ~m? -# 3056| v3056_5(void) = ^IndirectReadSideEffect[-1] : &:r3056_1, ~m? -# 3056| mu3056_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3056_1 -# 3056| r3056_7(bool) = Constant[0] : -# 3056| v3056_8(void) = ConditionalBranch : r3056_7 +# 35| Block 1013 +# 35| r35_14169(glval) = VariableAddress[x1012] : +# 35| mu35_14170(String) = Uninitialized[x1012] : &:r35_14169 +# 35| r35_14171(glval) = FunctionAddress[String] : +# 35| v35_14172(void) = Call[String] : func:r35_14171, this:r35_14169 +# 35| mu35_14173(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14174(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14169 +# 35| r35_14175(glval) = VariableAddress[x1012] : +# 35| r35_14176(glval) = FunctionAddress[~String] : +# 35| v35_14177(void) = Call[~String] : func:r35_14176, this:r35_14175 +# 35| mu35_14178(unknown) = ^CallSideEffect : ~m? +# 35| v35_14179(void) = ^IndirectReadSideEffect[-1] : &:r35_14175, ~m? +# 35| mu35_14180(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14175 +# 35| r35_14181(bool) = Constant[0] : +# 35| v35_14182(void) = ConditionalBranch : r35_14181 #-----| False -> Block 1014 #-----| True (back edge) -> Block 1013 -# 3058| Block 1014 -# 3058| r3058_1(glval) = VariableAddress[x1013] : -# 3058| mu3058_2(String) = Uninitialized[x1013] : &:r3058_1 -# 3058| r3058_3(glval) = FunctionAddress[String] : -# 3058| v3058_4(void) = Call[String] : func:r3058_3, this:r3058_1 -# 3058| mu3058_5(unknown) = ^CallSideEffect : ~m? -# 3058| mu3058_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3058_1 -# 3059| r3059_1(glval) = VariableAddress[x1013] : -# 3059| r3059_2(glval) = FunctionAddress[~String] : -# 3059| v3059_3(void) = Call[~String] : func:r3059_2, this:r3059_1 -# 3059| mu3059_4(unknown) = ^CallSideEffect : ~m? -# 3059| v3059_5(void) = ^IndirectReadSideEffect[-1] : &:r3059_1, ~m? -# 3059| mu3059_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3059_1 -# 3059| r3059_7(bool) = Constant[0] : -# 3059| v3059_8(void) = ConditionalBranch : r3059_7 +# 35| Block 1014 +# 35| r35_14183(glval) = VariableAddress[x1013] : +# 35| mu35_14184(String) = Uninitialized[x1013] : &:r35_14183 +# 35| r35_14185(glval) = FunctionAddress[String] : +# 35| v35_14186(void) = Call[String] : func:r35_14185, this:r35_14183 +# 35| mu35_14187(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14188(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14183 +# 35| r35_14189(glval) = VariableAddress[x1013] : +# 35| r35_14190(glval) = FunctionAddress[~String] : +# 35| v35_14191(void) = Call[~String] : func:r35_14190, this:r35_14189 +# 35| mu35_14192(unknown) = ^CallSideEffect : ~m? +# 35| v35_14193(void) = ^IndirectReadSideEffect[-1] : &:r35_14189, ~m? +# 35| mu35_14194(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14189 +# 35| r35_14195(bool) = Constant[0] : +# 35| v35_14196(void) = ConditionalBranch : r35_14195 #-----| False -> Block 1015 #-----| True (back edge) -> Block 1014 -# 3061| Block 1015 -# 3061| r3061_1(glval) = VariableAddress[x1014] : -# 3061| mu3061_2(String) = Uninitialized[x1014] : &:r3061_1 -# 3061| r3061_3(glval) = FunctionAddress[String] : -# 3061| v3061_4(void) = Call[String] : func:r3061_3, this:r3061_1 -# 3061| mu3061_5(unknown) = ^CallSideEffect : ~m? -# 3061| mu3061_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3061_1 -# 3062| r3062_1(glval) = VariableAddress[x1014] : -# 3062| r3062_2(glval) = FunctionAddress[~String] : -# 3062| v3062_3(void) = Call[~String] : func:r3062_2, this:r3062_1 -# 3062| mu3062_4(unknown) = ^CallSideEffect : ~m? -# 3062| v3062_5(void) = ^IndirectReadSideEffect[-1] : &:r3062_1, ~m? -# 3062| mu3062_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3062_1 -# 3062| r3062_7(bool) = Constant[0] : -# 3062| v3062_8(void) = ConditionalBranch : r3062_7 +# 35| Block 1015 +# 35| r35_14197(glval) = VariableAddress[x1014] : +# 35| mu35_14198(String) = Uninitialized[x1014] : &:r35_14197 +# 35| r35_14199(glval) = FunctionAddress[String] : +# 35| v35_14200(void) = Call[String] : func:r35_14199, this:r35_14197 +# 35| mu35_14201(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14202(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14197 +# 35| r35_14203(glval) = VariableAddress[x1014] : +# 35| r35_14204(glval) = FunctionAddress[~String] : +# 35| v35_14205(void) = Call[~String] : func:r35_14204, this:r35_14203 +# 35| mu35_14206(unknown) = ^CallSideEffect : ~m? +# 35| v35_14207(void) = ^IndirectReadSideEffect[-1] : &:r35_14203, ~m? +# 35| mu35_14208(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14203 +# 35| r35_14209(bool) = Constant[0] : +# 35| v35_14210(void) = ConditionalBranch : r35_14209 #-----| False -> Block 1016 #-----| True (back edge) -> Block 1015 -# 3064| Block 1016 -# 3064| r3064_1(glval) = VariableAddress[x1015] : -# 3064| mu3064_2(String) = Uninitialized[x1015] : &:r3064_1 -# 3064| r3064_3(glval) = FunctionAddress[String] : -# 3064| v3064_4(void) = Call[String] : func:r3064_3, this:r3064_1 -# 3064| mu3064_5(unknown) = ^CallSideEffect : ~m? -# 3064| mu3064_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3064_1 -# 3065| r3065_1(glval) = VariableAddress[x1015] : -# 3065| r3065_2(glval) = FunctionAddress[~String] : -# 3065| v3065_3(void) = Call[~String] : func:r3065_2, this:r3065_1 -# 3065| mu3065_4(unknown) = ^CallSideEffect : ~m? -# 3065| v3065_5(void) = ^IndirectReadSideEffect[-1] : &:r3065_1, ~m? -# 3065| mu3065_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3065_1 -# 3065| r3065_7(bool) = Constant[0] : -# 3065| v3065_8(void) = ConditionalBranch : r3065_7 +# 35| Block 1016 +# 35| r35_14211(glval) = VariableAddress[x1015] : +# 35| mu35_14212(String) = Uninitialized[x1015] : &:r35_14211 +# 35| r35_14213(glval) = FunctionAddress[String] : +# 35| v35_14214(void) = Call[String] : func:r35_14213, this:r35_14211 +# 35| mu35_14215(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14216(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14211 +# 35| r35_14217(glval) = VariableAddress[x1015] : +# 35| r35_14218(glval) = FunctionAddress[~String] : +# 35| v35_14219(void) = Call[~String] : func:r35_14218, this:r35_14217 +# 35| mu35_14220(unknown) = ^CallSideEffect : ~m? +# 35| v35_14221(void) = ^IndirectReadSideEffect[-1] : &:r35_14217, ~m? +# 35| mu35_14222(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14217 +# 35| r35_14223(bool) = Constant[0] : +# 35| v35_14224(void) = ConditionalBranch : r35_14223 #-----| False -> Block 1017 #-----| True (back edge) -> Block 1016 -# 3067| Block 1017 -# 3067| r3067_1(glval) = VariableAddress[x1016] : -# 3067| mu3067_2(String) = Uninitialized[x1016] : &:r3067_1 -# 3067| r3067_3(glval) = FunctionAddress[String] : -# 3067| v3067_4(void) = Call[String] : func:r3067_3, this:r3067_1 -# 3067| mu3067_5(unknown) = ^CallSideEffect : ~m? -# 3067| mu3067_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3067_1 -# 3068| r3068_1(glval) = VariableAddress[x1016] : -# 3068| r3068_2(glval) = FunctionAddress[~String] : -# 3068| v3068_3(void) = Call[~String] : func:r3068_2, this:r3068_1 -# 3068| mu3068_4(unknown) = ^CallSideEffect : ~m? -# 3068| v3068_5(void) = ^IndirectReadSideEffect[-1] : &:r3068_1, ~m? -# 3068| mu3068_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3068_1 -# 3068| r3068_7(bool) = Constant[0] : -# 3068| v3068_8(void) = ConditionalBranch : r3068_7 +# 35| Block 1017 +# 35| r35_14225(glval) = VariableAddress[x1016] : +# 35| mu35_14226(String) = Uninitialized[x1016] : &:r35_14225 +# 35| r35_14227(glval) = FunctionAddress[String] : +# 35| v35_14228(void) = Call[String] : func:r35_14227, this:r35_14225 +# 35| mu35_14229(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14230(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14225 +# 35| r35_14231(glval) = VariableAddress[x1016] : +# 35| r35_14232(glval) = FunctionAddress[~String] : +# 35| v35_14233(void) = Call[~String] : func:r35_14232, this:r35_14231 +# 35| mu35_14234(unknown) = ^CallSideEffect : ~m? +# 35| v35_14235(void) = ^IndirectReadSideEffect[-1] : &:r35_14231, ~m? +# 35| mu35_14236(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14231 +# 35| r35_14237(bool) = Constant[0] : +# 35| v35_14238(void) = ConditionalBranch : r35_14237 #-----| False -> Block 1018 #-----| True (back edge) -> Block 1017 -# 3070| Block 1018 -# 3070| r3070_1(glval) = VariableAddress[x1017] : -# 3070| mu3070_2(String) = Uninitialized[x1017] : &:r3070_1 -# 3070| r3070_3(glval) = FunctionAddress[String] : -# 3070| v3070_4(void) = Call[String] : func:r3070_3, this:r3070_1 -# 3070| mu3070_5(unknown) = ^CallSideEffect : ~m? -# 3070| mu3070_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3070_1 -# 3071| r3071_1(glval) = VariableAddress[x1017] : -# 3071| r3071_2(glval) = FunctionAddress[~String] : -# 3071| v3071_3(void) = Call[~String] : func:r3071_2, this:r3071_1 -# 3071| mu3071_4(unknown) = ^CallSideEffect : ~m? -# 3071| v3071_5(void) = ^IndirectReadSideEffect[-1] : &:r3071_1, ~m? -# 3071| mu3071_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3071_1 -# 3071| r3071_7(bool) = Constant[0] : -# 3071| v3071_8(void) = ConditionalBranch : r3071_7 +# 35| Block 1018 +# 35| r35_14239(glval) = VariableAddress[x1017] : +# 35| mu35_14240(String) = Uninitialized[x1017] : &:r35_14239 +# 35| r35_14241(glval) = FunctionAddress[String] : +# 35| v35_14242(void) = Call[String] : func:r35_14241, this:r35_14239 +# 35| mu35_14243(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14244(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14239 +# 35| r35_14245(glval) = VariableAddress[x1017] : +# 35| r35_14246(glval) = FunctionAddress[~String] : +# 35| v35_14247(void) = Call[~String] : func:r35_14246, this:r35_14245 +# 35| mu35_14248(unknown) = ^CallSideEffect : ~m? +# 35| v35_14249(void) = ^IndirectReadSideEffect[-1] : &:r35_14245, ~m? +# 35| mu35_14250(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14245 +# 35| r35_14251(bool) = Constant[0] : +# 35| v35_14252(void) = ConditionalBranch : r35_14251 #-----| False -> Block 1019 #-----| True (back edge) -> Block 1018 -# 3073| Block 1019 -# 3073| r3073_1(glval) = VariableAddress[x1018] : -# 3073| mu3073_2(String) = Uninitialized[x1018] : &:r3073_1 -# 3073| r3073_3(glval) = FunctionAddress[String] : -# 3073| v3073_4(void) = Call[String] : func:r3073_3, this:r3073_1 -# 3073| mu3073_5(unknown) = ^CallSideEffect : ~m? -# 3073| mu3073_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3073_1 -# 3074| r3074_1(glval) = VariableAddress[x1018] : -# 3074| r3074_2(glval) = FunctionAddress[~String] : -# 3074| v3074_3(void) = Call[~String] : func:r3074_2, this:r3074_1 -# 3074| mu3074_4(unknown) = ^CallSideEffect : ~m? -# 3074| v3074_5(void) = ^IndirectReadSideEffect[-1] : &:r3074_1, ~m? -# 3074| mu3074_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3074_1 -# 3074| r3074_7(bool) = Constant[0] : -# 3074| v3074_8(void) = ConditionalBranch : r3074_7 +# 35| Block 1019 +# 35| r35_14253(glval) = VariableAddress[x1018] : +# 35| mu35_14254(String) = Uninitialized[x1018] : &:r35_14253 +# 35| r35_14255(glval) = FunctionAddress[String] : +# 35| v35_14256(void) = Call[String] : func:r35_14255, this:r35_14253 +# 35| mu35_14257(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14258(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14253 +# 35| r35_14259(glval) = VariableAddress[x1018] : +# 35| r35_14260(glval) = FunctionAddress[~String] : +# 35| v35_14261(void) = Call[~String] : func:r35_14260, this:r35_14259 +# 35| mu35_14262(unknown) = ^CallSideEffect : ~m? +# 35| v35_14263(void) = ^IndirectReadSideEffect[-1] : &:r35_14259, ~m? +# 35| mu35_14264(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14259 +# 35| r35_14265(bool) = Constant[0] : +# 35| v35_14266(void) = ConditionalBranch : r35_14265 #-----| False -> Block 1020 #-----| True (back edge) -> Block 1019 -# 3076| Block 1020 -# 3076| r3076_1(glval) = VariableAddress[x1019] : -# 3076| mu3076_2(String) = Uninitialized[x1019] : &:r3076_1 -# 3076| r3076_3(glval) = FunctionAddress[String] : -# 3076| v3076_4(void) = Call[String] : func:r3076_3, this:r3076_1 -# 3076| mu3076_5(unknown) = ^CallSideEffect : ~m? -# 3076| mu3076_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3076_1 -# 3077| r3077_1(glval) = VariableAddress[x1019] : -# 3077| r3077_2(glval) = FunctionAddress[~String] : -# 3077| v3077_3(void) = Call[~String] : func:r3077_2, this:r3077_1 -# 3077| mu3077_4(unknown) = ^CallSideEffect : ~m? -# 3077| v3077_5(void) = ^IndirectReadSideEffect[-1] : &:r3077_1, ~m? -# 3077| mu3077_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3077_1 -# 3077| r3077_7(bool) = Constant[0] : -# 3077| v3077_8(void) = ConditionalBranch : r3077_7 +# 35| Block 1020 +# 35| r35_14267(glval) = VariableAddress[x1019] : +# 35| mu35_14268(String) = Uninitialized[x1019] : &:r35_14267 +# 35| r35_14269(glval) = FunctionAddress[String] : +# 35| v35_14270(void) = Call[String] : func:r35_14269, this:r35_14267 +# 35| mu35_14271(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14272(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14267 +# 35| r35_14273(glval) = VariableAddress[x1019] : +# 35| r35_14274(glval) = FunctionAddress[~String] : +# 35| v35_14275(void) = Call[~String] : func:r35_14274, this:r35_14273 +# 35| mu35_14276(unknown) = ^CallSideEffect : ~m? +# 35| v35_14277(void) = ^IndirectReadSideEffect[-1] : &:r35_14273, ~m? +# 35| mu35_14278(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14273 +# 35| r35_14279(bool) = Constant[0] : +# 35| v35_14280(void) = ConditionalBranch : r35_14279 #-----| False -> Block 1021 #-----| True (back edge) -> Block 1020 -# 3079| Block 1021 -# 3079| r3079_1(glval) = VariableAddress[x1020] : -# 3079| mu3079_2(String) = Uninitialized[x1020] : &:r3079_1 -# 3079| r3079_3(glval) = FunctionAddress[String] : -# 3079| v3079_4(void) = Call[String] : func:r3079_3, this:r3079_1 -# 3079| mu3079_5(unknown) = ^CallSideEffect : ~m? -# 3079| mu3079_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3079_1 -# 3080| r3080_1(glval) = VariableAddress[x1020] : -# 3080| r3080_2(glval) = FunctionAddress[~String] : -# 3080| v3080_3(void) = Call[~String] : func:r3080_2, this:r3080_1 -# 3080| mu3080_4(unknown) = ^CallSideEffect : ~m? -# 3080| v3080_5(void) = ^IndirectReadSideEffect[-1] : &:r3080_1, ~m? -# 3080| mu3080_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3080_1 -# 3080| r3080_7(bool) = Constant[0] : -# 3080| v3080_8(void) = ConditionalBranch : r3080_7 +# 35| Block 1021 +# 35| r35_14281(glval) = VariableAddress[x1020] : +# 35| mu35_14282(String) = Uninitialized[x1020] : &:r35_14281 +# 35| r35_14283(glval) = FunctionAddress[String] : +# 35| v35_14284(void) = Call[String] : func:r35_14283, this:r35_14281 +# 35| mu35_14285(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14286(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14281 +# 35| r35_14287(glval) = VariableAddress[x1020] : +# 35| r35_14288(glval) = FunctionAddress[~String] : +# 35| v35_14289(void) = Call[~String] : func:r35_14288, this:r35_14287 +# 35| mu35_14290(unknown) = ^CallSideEffect : ~m? +# 35| v35_14291(void) = ^IndirectReadSideEffect[-1] : &:r35_14287, ~m? +# 35| mu35_14292(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14287 +# 35| r35_14293(bool) = Constant[0] : +# 35| v35_14294(void) = ConditionalBranch : r35_14293 #-----| False -> Block 1022 #-----| True (back edge) -> Block 1021 -# 3082| Block 1022 -# 3082| r3082_1(glval) = VariableAddress[x1021] : -# 3082| mu3082_2(String) = Uninitialized[x1021] : &:r3082_1 -# 3082| r3082_3(glval) = FunctionAddress[String] : -# 3082| v3082_4(void) = Call[String] : func:r3082_3, this:r3082_1 -# 3082| mu3082_5(unknown) = ^CallSideEffect : ~m? -# 3082| mu3082_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3082_1 -# 3083| r3083_1(glval) = VariableAddress[x1021] : -# 3083| r3083_2(glval) = FunctionAddress[~String] : -# 3083| v3083_3(void) = Call[~String] : func:r3083_2, this:r3083_1 -# 3083| mu3083_4(unknown) = ^CallSideEffect : ~m? -# 3083| v3083_5(void) = ^IndirectReadSideEffect[-1] : &:r3083_1, ~m? -# 3083| mu3083_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3083_1 -# 3083| r3083_7(bool) = Constant[0] : -# 3083| v3083_8(void) = ConditionalBranch : r3083_7 +# 35| Block 1022 +# 35| r35_14295(glval) = VariableAddress[x1021] : +# 35| mu35_14296(String) = Uninitialized[x1021] : &:r35_14295 +# 35| r35_14297(glval) = FunctionAddress[String] : +# 35| v35_14298(void) = Call[String] : func:r35_14297, this:r35_14295 +# 35| mu35_14299(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14300(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14295 +# 35| r35_14301(glval) = VariableAddress[x1021] : +# 35| r35_14302(glval) = FunctionAddress[~String] : +# 35| v35_14303(void) = Call[~String] : func:r35_14302, this:r35_14301 +# 35| mu35_14304(unknown) = ^CallSideEffect : ~m? +# 35| v35_14305(void) = ^IndirectReadSideEffect[-1] : &:r35_14301, ~m? +# 35| mu35_14306(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14301 +# 35| r35_14307(bool) = Constant[0] : +# 35| v35_14308(void) = ConditionalBranch : r35_14307 #-----| False -> Block 1023 #-----| True (back edge) -> Block 1022 -# 3085| Block 1023 -# 3085| r3085_1(glval) = VariableAddress[x1022] : -# 3085| mu3085_2(String) = Uninitialized[x1022] : &:r3085_1 -# 3085| r3085_3(glval) = FunctionAddress[String] : -# 3085| v3085_4(void) = Call[String] : func:r3085_3, this:r3085_1 -# 3085| mu3085_5(unknown) = ^CallSideEffect : ~m? -# 3085| mu3085_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3085_1 -# 3086| r3086_1(glval) = VariableAddress[x1022] : -# 3086| r3086_2(glval) = FunctionAddress[~String] : -# 3086| v3086_3(void) = Call[~String] : func:r3086_2, this:r3086_1 -# 3086| mu3086_4(unknown) = ^CallSideEffect : ~m? -# 3086| v3086_5(void) = ^IndirectReadSideEffect[-1] : &:r3086_1, ~m? -# 3086| mu3086_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3086_1 -# 3086| r3086_7(bool) = Constant[0] : -# 3086| v3086_8(void) = ConditionalBranch : r3086_7 +# 35| Block 1023 +# 35| r35_14309(glval) = VariableAddress[x1022] : +# 35| mu35_14310(String) = Uninitialized[x1022] : &:r35_14309 +# 35| r35_14311(glval) = FunctionAddress[String] : +# 35| v35_14312(void) = Call[String] : func:r35_14311, this:r35_14309 +# 35| mu35_14313(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14314(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14309 +# 35| r35_14315(glval) = VariableAddress[x1022] : +# 35| r35_14316(glval) = FunctionAddress[~String] : +# 35| v35_14317(void) = Call[~String] : func:r35_14316, this:r35_14315 +# 35| mu35_14318(unknown) = ^CallSideEffect : ~m? +# 35| v35_14319(void) = ^IndirectReadSideEffect[-1] : &:r35_14315, ~m? +# 35| mu35_14320(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14315 +# 35| r35_14321(bool) = Constant[0] : +# 35| v35_14322(void) = ConditionalBranch : r35_14321 #-----| False -> Block 1024 #-----| True (back edge) -> Block 1023 -# 3088| Block 1024 -# 3088| r3088_1(glval) = VariableAddress[x1023] : -# 3088| mu3088_2(String) = Uninitialized[x1023] : &:r3088_1 -# 3088| r3088_3(glval) = FunctionAddress[String] : -# 3088| v3088_4(void) = Call[String] : func:r3088_3, this:r3088_1 -# 3088| mu3088_5(unknown) = ^CallSideEffect : ~m? -# 3088| mu3088_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3088_1 -# 3089| r3089_1(glval) = VariableAddress[x1023] : -# 3089| r3089_2(glval) = FunctionAddress[~String] : -# 3089| v3089_3(void) = Call[~String] : func:r3089_2, this:r3089_1 -# 3089| mu3089_4(unknown) = ^CallSideEffect : ~m? -# 3089| v3089_5(void) = ^IndirectReadSideEffect[-1] : &:r3089_1, ~m? -# 3089| mu3089_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3089_1 -# 3089| r3089_7(bool) = Constant[0] : -# 3089| v3089_8(void) = ConditionalBranch : r3089_7 +# 35| Block 1024 +# 35| r35_14323(glval) = VariableAddress[x1023] : +# 35| mu35_14324(String) = Uninitialized[x1023] : &:r35_14323 +# 35| r35_14325(glval) = FunctionAddress[String] : +# 35| v35_14326(void) = Call[String] : func:r35_14325, this:r35_14323 +# 35| mu35_14327(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14328(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14323 +# 35| r35_14329(glval) = VariableAddress[x1023] : +# 35| r35_14330(glval) = FunctionAddress[~String] : +# 35| v35_14331(void) = Call[~String] : func:r35_14330, this:r35_14329 +# 35| mu35_14332(unknown) = ^CallSideEffect : ~m? +# 35| v35_14333(void) = ^IndirectReadSideEffect[-1] : &:r35_14329, ~m? +# 35| mu35_14334(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14329 +# 35| r35_14335(bool) = Constant[0] : +# 35| v35_14336(void) = ConditionalBranch : r35_14335 #-----| False -> Block 1025 #-----| True (back edge) -> Block 1024 -# 3091| Block 1025 -# 3091| r3091_1(glval) = VariableAddress[x1024] : -# 3091| mu3091_2(String) = Uninitialized[x1024] : &:r3091_1 -# 3091| r3091_3(glval) = FunctionAddress[String] : -# 3091| v3091_4(void) = Call[String] : func:r3091_3, this:r3091_1 -# 3091| mu3091_5(unknown) = ^CallSideEffect : ~m? -# 3091| mu3091_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3091_1 -# 3092| r3092_1(glval) = VariableAddress[x1024] : -# 3092| r3092_2(glval) = FunctionAddress[~String] : -# 3092| v3092_3(void) = Call[~String] : func:r3092_2, this:r3092_1 -# 3092| mu3092_4(unknown) = ^CallSideEffect : ~m? -# 3092| v3092_5(void) = ^IndirectReadSideEffect[-1] : &:r3092_1, ~m? -# 3092| mu3092_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r3092_1 -# 3092| r3092_7(bool) = Constant[0] : -# 3092| v3092_8(void) = ConditionalBranch : r3092_7 +# 35| Block 1025 +# 35| r35_14337(glval) = VariableAddress[x1024] : +# 35| mu35_14338(String) = Uninitialized[x1024] : &:r35_14337 +# 35| r35_14339(glval) = FunctionAddress[String] : +# 35| v35_14340(void) = Call[String] : func:r35_14339, this:r35_14337 +# 35| mu35_14341(unknown) = ^CallSideEffect : ~m? +# 35| mu35_14342(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14337 +# 35| r35_14343(glval) = VariableAddress[x1024] : +# 35| r35_14344(glval) = FunctionAddress[~String] : +# 35| v35_14345(void) = Call[~String] : func:r35_14344, this:r35_14343 +# 35| mu35_14346(unknown) = ^CallSideEffect : ~m? +# 35| v35_14347(void) = ^IndirectReadSideEffect[-1] : &:r35_14343, ~m? +# 35| mu35_14348(String) = ^IndirectMayWriteSideEffect[-1] : &:r35_14343 +# 35| r35_14349(bool) = Constant[0] : +# 35| v35_14350(void) = ConditionalBranch : r35_14349 #-----| False -> Block 1026 #-----| True (back edge) -> Block 1025 -# 3093| Block 1026 -# 3093| v3093_1(void) = NoOp : -# 17| v17_4(void) = ReturnVoid : -# 17| v17_5(void) = AliasedUse : ~m? -# 17| v17_6(void) = ExitFunction : +# 36| Block 1026 +# 36| v36_1(void) = NoOp : +# 34| v34_4(void) = ReturnVoid : +# 34| v34_5(void) = AliasedUse : ~m? +# 34| v34_6(void) = ExitFunction : perf-regression.cpp: # 6| void Big::Big() @@ -36162,46 +36384,49 @@ try_except.c: # 11| r11_2(int) = Constant[0] : # 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 # 11| mu11_4(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 6 +#-----| Goto -> Block 7 -# 13| Block 1 -# 13| r13_1(int) = Constant[0] : -# 13| r13_2(bool) = CompareEQ : r13_8, r13_1 -# 13| v13_3(void) = ConditionalBranch : r13_2 -#-----| False -> Block 2 -#-----| True -> Block 3 +# 6| Block 1 +# 6| v6_4(void) = AliasedUse : ~m? +# 6| v6_5(void) = ExitFunction : -# 13| Block 2 -# 13| r13_4(int) = Constant[1] : -# 13| r13_5(bool) = CompareEQ : r13_8, r13_4 -# 13| v13_6(void) = ConditionalBranch : r13_5 -#-----| True -> Block 5 +# 6| Block 2 +# 6| v6_6(void) = Unwind : +#-----| Goto -> Block 1 # 13| Block 3 -# 13| v13_7(void) = Unwind : -#-----| Goto -> Block 6 +# 13| r13_1(int) = Constant[0] : +# 13| r13_2(bool) = CompareEQ : r13_7, r13_1 +# 13| v13_3(void) = ConditionalBranch : r13_2 +#-----| False -> Block 4 +#-----| True -> Block 2 # 13| Block 4 -# 13| r13_8(int) = Constant[0] : -# 13| r13_9(int) = Constant[-1] : -# 13| r13_10(bool) = CompareEQ : r13_8, r13_9 -# 13| v13_11(void) = ConditionalBranch : r13_10 -#-----| False -> Block 1 -#-----| True -> Block 3 +# 13| r13_4(int) = Constant[1] : +# 13| r13_5(bool) = CompareEQ : r13_7, r13_4 +# 13| v13_6(void) = ConditionalBranch : r13_5 +#-----| True -> Block 6 -# 14| Block 5 +# 13| Block 5 +# 13| r13_7(int) = Constant[0] : +# 13| r13_8(int) = Constant[-1] : +# 13| r13_9(bool) = CompareEQ : r13_7, r13_8 +# 13| v13_10(void) = ConditionalBranch : r13_9 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 14| Block 6 # 14| r14_1(glval) = FunctionAddress[sink] : # 14| r14_2(glval) = VariableAddress[x] : # 14| r14_3(int) = Load[x] : &:r14_2, ~m? # 14| v14_4(void) = Call[sink] : func:r14_1, 0:r14_3 # 14| mu14_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 6 +#-----| Goto -> Block 7 -# 16| Block 6 -# 16| v16_1(void) = NoOp : -# 6| v6_4(void) = ReturnVoid : -# 6| v6_5(void) = AliasedUse : ~m? -# 6| v6_6(void) = ExitFunction : +# 16| Block 7 +# 16| v16_1(void) = NoOp : +# 6| v6_7(void) = ReturnVoid : +#-----| Goto -> Block 1 # 18| void g() # 18| Block 0 @@ -36232,8 +36457,15 @@ try_except.c: # 26| mu26_5(unknown) = ^CallSideEffect : ~m? # 28| v28_1(void) = NoOp : # 18| v18_4(void) = ReturnVoid : -# 18| v18_5(void) = AliasedUse : ~m? -# 18| v18_6(void) = ExitFunction : +#-----| Goto -> Block 1 + +# 18| Block 1 +# 18| v18_5(void) = AliasedUse : ~m? +# 18| v18_6(void) = ExitFunction : + +# 18| Block 2 +# 18| v18_7(void) = Unwind : +#-----| Goto -> Block 1 # 32| void h(int) # 32| Block 0 @@ -36248,53 +36480,56 @@ try_except.c: # 35| r35_1(glval) = VariableAddress[b] : # 35| r35_2(int) = Load[b] : &:r35_1, ~m? # 35| v35_3(void) = ConditionalBranch : r35_2 -#-----| False -> Block 7 -#-----| True -> Block 1 +#-----| False -> Block 8 +#-----| True -> Block 3 -# 36| Block 1 +# 32| Block 1 +# 32| v32_6(void) = AliasedUse : ~m? +# 32| v32_7(void) = ExitFunction : + +# 32| Block 2 +# 32| v32_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 36| Block 3 # 36| r36_1(glval) = FunctionAddress[AfxThrowMemoryException] : # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| mu36_3(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 - -# 39| Block 2 -# 39| r39_1(int) = Constant[0] : -# 39| r39_2(bool) = CompareEQ : r39_8, r39_1 -# 39| v39_3(void) = ConditionalBranch : r39_2 -#-----| False -> Block 3 -#-----| True -> Block 4 - -# 39| Block 3 -# 39| r39_4(int) = Constant[1] : -# 39| r39_5(bool) = CompareEQ : r39_8, r39_4 -# 39| v39_6(void) = ConditionalBranch : r39_5 -#-----| True -> Block 6 +#-----| Goto -> Block 8 # 39| Block 4 -# 39| v39_7(void) = Unwind : -#-----| Goto -> Block 7 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r39_7, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False -> Block 5 +#-----| True -> Block 2 # 39| Block 5 -# 39| r39_8(int) = Constant[1] : -# 39| r39_9(int) = Constant[-1] : -# 39| r39_10(bool) = CompareEQ : r39_8, r39_9 -# 39| v39_11(void) = ConditionalBranch : r39_10 -#-----| False -> Block 2 -#-----| True -> Block 4 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r39_7, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| True -> Block 7 -# 40| Block 6 +# 39| Block 6 +# 39| r39_7(int) = Constant[1] : +# 39| r39_8(int) = Constant[-1] : +# 39| r39_9(bool) = CompareEQ : r39_7, r39_8 +# 39| v39_10(void) = ConditionalBranch : r39_9 +#-----| False -> Block 4 +#-----| True -> Block 2 + +# 40| Block 7 # 40| r40_1(glval) = FunctionAddress[sink] : # 40| r40_2(glval) = VariableAddress[x] : # 40| r40_3(int) = Load[x] : &:r40_2, ~m? # 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 # 40| mu40_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +#-----| Goto -> Block 8 -# 42| Block 7 -# 42| v42_1(void) = NoOp : -# 32| v32_6(void) = ReturnVoid : -# 32| v32_7(void) = AliasedUse : ~m? -# 32| v32_8(void) = ExitFunction : +# 42| Block 8 +# 42| v42_1(void) = NoOp : +# 32| v32_9(void) = ReturnVoid : +#-----| Goto -> Block 1 try_except.cpp: # 6| void f_cpp() @@ -36319,46 +36554,49 @@ try_except.cpp: # 11| r11_2(int) = Constant[0] : # 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 # 11| mu11_4(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 6 +#-----| Goto -> Block 7 -# 13| Block 1 -# 13| r13_1(int) = Constant[0] : -# 13| r13_2(bool) = CompareEQ : r13_8, r13_1 -# 13| v13_3(void) = ConditionalBranch : r13_2 -#-----| False -> Block 2 -#-----| True -> Block 3 +# 6| Block 1 +# 6| v6_4(void) = AliasedUse : ~m? +# 6| v6_5(void) = ExitFunction : -# 13| Block 2 -# 13| r13_4(int) = Constant[1] : -# 13| r13_5(bool) = CompareEQ : r13_8, r13_4 -# 13| v13_6(void) = ConditionalBranch : r13_5 -#-----| True -> Block 5 +# 6| Block 2 +# 6| v6_6(void) = Unwind : +#-----| Goto -> Block 1 # 13| Block 3 -# 13| v13_7(void) = Unwind : -#-----| Goto -> Block 6 +# 13| r13_1(int) = Constant[0] : +# 13| r13_2(bool) = CompareEQ : r13_7, r13_1 +# 13| v13_3(void) = ConditionalBranch : r13_2 +#-----| False -> Block 4 +#-----| True -> Block 2 # 13| Block 4 -# 13| r13_8(int) = Constant[0] : -# 13| r13_9(int) = Constant[-1] : -# 13| r13_10(bool) = CompareEQ : r13_8, r13_9 -# 13| v13_11(void) = ConditionalBranch : r13_10 -#-----| False -> Block 1 -#-----| True -> Block 3 +# 13| r13_4(int) = Constant[1] : +# 13| r13_5(bool) = CompareEQ : r13_7, r13_4 +# 13| v13_6(void) = ConditionalBranch : r13_5 +#-----| True -> Block 6 -# 14| Block 5 +# 13| Block 5 +# 13| r13_7(int) = Constant[0] : +# 13| r13_8(int) = Constant[-1] : +# 13| r13_9(bool) = CompareEQ : r13_7, r13_8 +# 13| v13_10(void) = ConditionalBranch : r13_9 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 14| Block 6 # 14| r14_1(glval) = FunctionAddress[sink] : # 14| r14_2(glval) = VariableAddress[x] : # 14| r14_3(int) = Load[x] : &:r14_2, ~m? # 14| v14_4(void) = Call[sink] : func:r14_1, 0:r14_3 # 14| mu14_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 6 +#-----| Goto -> Block 7 -# 16| Block 6 -# 16| v16_1(void) = NoOp : -# 6| v6_4(void) = ReturnVoid : -# 6| v6_5(void) = AliasedUse : ~m? -# 6| v6_6(void) = ExitFunction : +# 16| Block 7 +# 16| v16_1(void) = NoOp : +# 6| v6_7(void) = ReturnVoid : +#-----| Goto -> Block 1 # 18| void g_cpp() # 18| Block 0 @@ -36389,8 +36627,15 @@ try_except.cpp: # 26| mu26_5(unknown) = ^CallSideEffect : ~m? # 28| v28_1(void) = NoOp : # 18| v18_4(void) = ReturnVoid : -# 18| v18_5(void) = AliasedUse : ~m? -# 18| v18_6(void) = ExitFunction : +#-----| Goto -> Block 1 + +# 18| Block 1 +# 18| v18_5(void) = AliasedUse : ~m? +# 18| v18_6(void) = ExitFunction : + +# 18| Block 2 +# 18| v18_7(void) = Unwind : +#-----| Goto -> Block 1 # 32| void h_cpp(int) # 32| Block 0 @@ -36407,53 +36652,56 @@ try_except.cpp: # 35| r35_3(int) = Constant[0] : # 35| r35_4(bool) = CompareNE : r35_2, r35_3 # 35| v35_5(void) = ConditionalBranch : r35_4 -#-----| False -> Block 7 -#-----| True -> Block 1 +#-----| False -> Block 8 +#-----| True -> Block 3 -# 36| Block 1 +# 32| Block 1 +# 32| v32_6(void) = AliasedUse : ~m? +# 32| v32_7(void) = ExitFunction : + +# 32| Block 2 +# 32| v32_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 36| Block 3 # 36| r36_1(glval) = FunctionAddress[AfxThrowMemoryException] : # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| mu36_3(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 - -# 39| Block 2 -# 39| r39_1(int) = Constant[0] : -# 39| r39_2(bool) = CompareEQ : r39_8, r39_1 -# 39| v39_3(void) = ConditionalBranch : r39_2 -#-----| False -> Block 3 -#-----| True -> Block 4 - -# 39| Block 3 -# 39| r39_4(int) = Constant[1] : -# 39| r39_5(bool) = CompareEQ : r39_8, r39_4 -# 39| v39_6(void) = ConditionalBranch : r39_5 -#-----| True -> Block 6 +#-----| Goto -> Block 8 # 39| Block 4 -# 39| v39_7(void) = Unwind : -#-----| Goto -> Block 7 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r39_7, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False -> Block 5 +#-----| True -> Block 2 # 39| Block 5 -# 39| r39_8(int) = Constant[1] : -# 39| r39_9(int) = Constant[-1] : -# 39| r39_10(bool) = CompareEQ : r39_8, r39_9 -# 39| v39_11(void) = ConditionalBranch : r39_10 -#-----| False -> Block 2 -#-----| True -> Block 4 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r39_7, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| True -> Block 7 -# 40| Block 6 +# 39| Block 6 +# 39| r39_7(int) = Constant[1] : +# 39| r39_8(int) = Constant[-1] : +# 39| r39_9(bool) = CompareEQ : r39_7, r39_8 +# 39| v39_10(void) = ConditionalBranch : r39_9 +#-----| False -> Block 4 +#-----| True -> Block 2 + +# 40| Block 7 # 40| r40_1(glval) = FunctionAddress[sink] : # 40| r40_2(glval) = VariableAddress[x] : # 40| r40_3(int) = Load[x] : &:r40_2, ~m? # 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 # 40| mu40_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +#-----| Goto -> Block 8 -# 42| Block 7 -# 42| v42_1(void) = NoOp : -# 32| v32_6(void) = ReturnVoid : -# 32| v32_7(void) = AliasedUse : ~m? -# 32| v32_8(void) = ExitFunction : +# 42| Block 8 +# 42| v42_1(void) = NoOp : +# 32| v32_9(void) = ReturnVoid : +#-----| Goto -> Block 1 # 44| void throw_cpp(int) # 44| Block 0 @@ -36470,7 +36718,7 @@ try_except.cpp: # 47| r47_3(int) = Constant[0] : # 47| r47_4(bool) = CompareNE : r47_2, r47_3 # 47| v47_5(void) = ConditionalBranch : r47_4 -#-----| False -> Block 9 +#-----| False -> Block 8 #-----| True -> Block 3 # 44| Block 1 @@ -36486,42 +36734,38 @@ try_except.cpp: # 48| r48_2(int) = Constant[1] : # 48| mu48_3(int) = Store[#throw48:13] : &:r48_1, r48_2 # 48| v48_4(void) = ThrowValue : &:r48_1, ~m? -#-----| Exception -> Block 7 +#-----| Exception -> Block 6 # 51| Block 4 # 51| r51_1(int) = Constant[0] : -# 51| r51_2(bool) = CompareEQ : r51_8, r51_1 +# 51| r51_2(bool) = CompareEQ : r51_7, r51_1 # 51| v51_3(void) = ConditionalBranch : r51_2 #-----| False -> Block 5 -#-----| True -> Block 6 +#-----| True -> Block 2 # 51| Block 5 # 51| r51_4(int) = Constant[1] : -# 51| r51_5(bool) = CompareEQ : r51_8, r51_4 +# 51| r51_5(bool) = CompareEQ : r51_7, r51_4 # 51| v51_6(void) = ConditionalBranch : r51_5 -#-----| True -> Block 8 +#-----| True -> Block 7 # 51| Block 6 -# 51| v51_7(void) = Unwind : -#-----| Goto -> Block 9 - -# 51| Block 7 -# 51| r51_8(int) = Constant[1] : -# 51| r51_9(int) = Constant[-1] : -# 51| r51_10(bool) = CompareEQ : r51_8, r51_9 -# 51| v51_11(void) = ConditionalBranch : r51_10 +# 51| r51_7(int) = Constant[1] : +# 51| r51_8(int) = Constant[-1] : +# 51| r51_9(bool) = CompareEQ : r51_7, r51_8 +# 51| v51_10(void) = ConditionalBranch : r51_9 #-----| False -> Block 4 -#-----| True -> Block 6 +#-----| True -> Block 2 -# 52| Block 8 +# 52| Block 7 # 52| r52_1(glval) = FunctionAddress[sink] : # 52| r52_2(glval) = VariableAddress[x] : # 52| r52_3(int) = Load[x] : &:r52_2, ~m? # 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 # 52| mu52_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 9 +#-----| Goto -> Block 8 -# 54| Block 9 +# 54| Block 8 # 54| v54_1(void) = NoOp : # 44| v44_9(void) = ReturnVoid : #-----| Goto -> Block 1 diff --git a/cpp/ql/test/library-tests/ir/ir/try_except.cpp b/cpp/ql/test/library-tests/ir/ir/try_except.cpp index fd8c5f59f1a..9bf297263b7 100644 --- a/cpp/ql/test/library-tests/ir/ir/try_except.cpp +++ b/cpp/ql/test/library-tests/ir/ir/try_except.cpp @@ -51,4 +51,4 @@ void throw_cpp(int b) { __except (1) { sink(x); } -} \ No newline at end of file +} diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected index 5a0234a4cc4..199d61f015d 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected @@ -29,26 +29,4 @@ fieldAddressOnNonPointer thisArgumentIsNonPointer | ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:96:3:96:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:100:3:100:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:104:3:104:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:109:3:109:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected index 5a0234a4cc4..199d61f015d 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected @@ -29,26 +29,4 @@ fieldAddressOnNonPointer thisArgumentIsNonPointer | ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:87:20:87:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:91:21:91:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:95:20:95:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:96:3:96:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:99:21:99:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:100:3:100:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:103:20:103:20 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:104:3:104:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:108:21:108:21 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:109:3:109:3 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| file://:0:0:0:0 | VariableAddress: (unnamed local variable) | Variable address instruction 'VariableAddress: (unnamed local variable)' has no associated variable, in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | missingCppType diff --git a/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_consistency.expected index 064c06f9102..3e1b675f84e 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_consistency.expected @@ -7,8 +7,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| ms_try_mix.cpp:38:5:38:5 | Chi: c106 | Instruction 'Chi: c106' has no successors in function '$@'. | ms_try_mix.cpp:29:6:29:19 | void ms_finally_mix(int) | void ms_finally_mix(int) | -| ms_try_mix.cpp:53:5:53:11 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:49:6:49:28 | void ms_empty_finally_at_end() | void ms_empty_finally_at_end() | | stmt_expr.cpp:27:5:27:15 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | stmt_expr.cpp:21:13:21:13 | void stmtexpr::g(int) | void stmtexpr::g(int) | ambiguousSuccessors unexplainedLoop diff --git a/cpp/ql/test/library-tests/syntax-zoo/raw_consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/raw_consistency.expected index 484e9586944..9e3d40c99c5 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/raw_consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/raw_consistency.expected @@ -8,8 +8,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| ms_try_mix.cpp:38:5:38:5 | IndirectMayWriteSideEffect: c106 | Instruction 'IndirectMayWriteSideEffect: c106' has no successors in function '$@'. | ms_try_mix.cpp:29:6:29:19 | void ms_finally_mix(int) | void ms_finally_mix(int) | -| ms_try_mix.cpp:53:5:53:11 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:49:6:49:28 | void ms_empty_finally_at_end() | void ms_empty_finally_at_end() | | stmt_expr.cpp:27:5:27:15 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | stmt_expr.cpp:21:13:21:13 | void stmtexpr::g(int) | void stmtexpr::g(int) | | stmt_expr.cpp:29:11:32:11 | CopyValue: (statement expression) | Instruction 'CopyValue: (statement expression)' has no successors in function '$@'. | stmt_expr.cpp:21:13:21:13 | void stmtexpr::g(int) | void stmtexpr::g(int) | | stmt_in_type.cpp:5:53:5:53 | Constant: 1 | Instruction 'Constant: 1' has no successors in function '$@'. | stmt_in_type.cpp:2:6:2:12 | void cpp_fun() | void cpp_fun() | diff --git a/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_consistency.expected index c4d1fc89735..3e1b675f84e 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_consistency.expected @@ -7,8 +7,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| ms_try_mix.cpp:38:5:38:5 | IndirectMayWriteSideEffect: c106 | Instruction 'IndirectMayWriteSideEffect: c106' has no successors in function '$@'. | ms_try_mix.cpp:29:6:29:19 | void ms_finally_mix(int) | void ms_finally_mix(int) | -| ms_try_mix.cpp:53:5:53:11 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:49:6:49:28 | void ms_empty_finally_at_end() | void ms_empty_finally_at_end() | | stmt_expr.cpp:27:5:27:15 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | stmt_expr.cpp:21:13:21:13 | void stmtexpr::g(int) | void stmtexpr::g(int) | ambiguousSuccessors unexplainedLoop diff --git a/cpp/ql/test/library-tests/types/datasizeof/datasizeof.cpp b/cpp/ql/test/library-tests/types/datasizeof/datasizeof.cpp new file mode 100644 index 00000000000..b6e65889a68 --- /dev/null +++ b/cpp/ql/test/library-tests/types/datasizeof/datasizeof.cpp @@ -0,0 +1,30 @@ +// semmle-extractor-options: --clang --edg --clang_version --edg 190000 + +typedef unsigned int size_t; + +class MyClass +{ +public: + int x; + int *ptr; + char c; +}; + +void func() { + int i; + char c; + int * ptr; + MyClass mc; + int arr[10]; + + size_t sz1 = __datasizeof(int); + size_t sz2 = __datasizeof(char); + size_t sz3 = __datasizeof(int *); + size_t sz4 = __datasizeof(MyClass); + size_t sz5 = __datasizeof(i); + size_t sz6 = __datasizeof(c); + size_t sz7 = __datasizeof(ptr); + size_t sz8 = __datasizeof(mc); + size_t sz9 = __datasizeof(arr); + size_t sz10 = __datasizeof(arr[4]); +} diff --git a/cpp/ql/test/library-tests/types/datasizeof/datasizeof.expected b/cpp/ql/test/library-tests/types/datasizeof/datasizeof.expected new file mode 100644 index 00000000000..0ba70c61898 --- /dev/null +++ b/cpp/ql/test/library-tests/types/datasizeof/datasizeof.expected @@ -0,0 +1,10 @@ +| datasizeof.cpp:20:15:20:31 | __datasizeof(int) | 4 | DatasizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | +| datasizeof.cpp:21:15:21:32 | __datasizeof(char) | 1 | DatasizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | char | +| datasizeof.cpp:22:15:22:33 | __datasizeof(int *) | 8 | DatasizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int * | +| datasizeof.cpp:23:15:23:35 | __datasizeof(MyClass) | 24 | DatasizeofTypeOperator.getTypeOperand() | datasizeof.cpp:5:7:5:13 | MyClass | +| datasizeof.cpp:24:15:24:29 | __datasizeof() | 4 | DatasizeofExprOperator.getExprOperand() | datasizeof.cpp:24:28:24:28 | i | +| datasizeof.cpp:25:15:25:29 | __datasizeof() | 1 | DatasizeofExprOperator.getExprOperand() | datasizeof.cpp:25:28:25:28 | c | +| datasizeof.cpp:26:15:26:31 | __datasizeof() | 8 | DatasizeofExprOperator.getExprOperand() | datasizeof.cpp:26:28:26:30 | ptr | +| datasizeof.cpp:27:15:27:30 | __datasizeof() | 24 | DatasizeofExprOperator.getExprOperand() | datasizeof.cpp:27:28:27:29 | mc | +| datasizeof.cpp:28:15:28:31 | __datasizeof() | 40 | DatasizeofExprOperator.getExprOperand() | datasizeof.cpp:28:28:28:30 | arr | +| datasizeof.cpp:29:16:29:35 | __datasizeof() | 4 | DatasizeofExprOperator.getExprOperand() | datasizeof.cpp:29:29:29:34 | access to array | diff --git a/cpp/ql/test/library-tests/types/datasizeof/datasizeof.ql b/cpp/ql/test/library-tests/types/datasizeof/datasizeof.ql new file mode 100644 index 00000000000..3b839b4a8b9 --- /dev/null +++ b/cpp/ql/test/library-tests/types/datasizeof/datasizeof.ql @@ -0,0 +1,10 @@ +import cpp + +from DatasizeofOperator sto, string elemDesc, Element e +where + elemDesc = "DatasizeofTypeOperator.getTypeOperand()" and + e = sto.(DatasizeofTypeOperator).getTypeOperand() + or + elemDesc = "DatasizeofExprOperator.getExprOperand()" and + e = sto.(DatasizeofExprOperator).getExprOperand() +select sto, sto.getValue(), elemDesc, e diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.expected b/cpp/ql/test/library-tests/types/sizeof/sizeof.expected index e75583fb9e5..c0d075126df 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.expected +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.expected @@ -1,10 +1,10 @@ -| sizeof.cpp:19:15:19:25 | sizeof(int) | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | -| sizeof.cpp:20:15:20:26 | sizeof(char) | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | char | -| sizeof.cpp:21:15:21:27 | sizeof(int *) | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int * | -| sizeof.cpp:22:15:22:29 | sizeof(MyClass) | SizeofTypeOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | -| sizeof.cpp:23:15:23:23 | sizeof() | SizeofExprOperator.getExprOperand() | sizeof.cpp:23:22:23:22 | i | -| sizeof.cpp:24:15:24:23 | sizeof() | SizeofExprOperator.getExprOperand() | sizeof.cpp:24:22:24:22 | c | -| sizeof.cpp:25:15:25:25 | sizeof() | SizeofExprOperator.getExprOperand() | sizeof.cpp:25:22:25:24 | ptr | -| sizeof.cpp:26:15:26:24 | sizeof() | SizeofExprOperator.getExprOperand() | sizeof.cpp:26:22:26:23 | mc | -| sizeof.cpp:27:15:27:25 | sizeof() | SizeofExprOperator.getExprOperand() | sizeof.cpp:27:22:27:24 | arr | -| sizeof.cpp:28:16:28:29 | sizeof() | SizeofExprOperator.getExprOperand() | sizeof.cpp:28:23:28:28 | access to array | +| sizeof.cpp:19:15:19:25 | sizeof(int) | 4 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | +| sizeof.cpp:20:15:20:26 | sizeof(char) | 1 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | char | +| sizeof.cpp:21:15:21:27 | sizeof(int *) | 8 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int * | +| sizeof.cpp:22:15:22:29 | sizeof(MyClass) | 16 | SizeofTypeOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | +| sizeof.cpp:23:15:23:23 | sizeof() | 4 | SizeofExprOperator.getExprOperand() | sizeof.cpp:23:22:23:22 | i | +| sizeof.cpp:24:15:24:23 | sizeof() | 1 | SizeofExprOperator.getExprOperand() | sizeof.cpp:24:22:24:22 | c | +| sizeof.cpp:25:15:25:25 | sizeof() | 8 | SizeofExprOperator.getExprOperand() | sizeof.cpp:25:22:25:24 | ptr | +| sizeof.cpp:26:15:26:24 | sizeof() | 16 | SizeofExprOperator.getExprOperand() | sizeof.cpp:26:22:26:23 | mc | +| sizeof.cpp:27:15:27:25 | sizeof() | 40 | SizeofExprOperator.getExprOperand() | sizeof.cpp:27:22:27:24 | arr | +| sizeof.cpp:28:16:28:29 | sizeof() | 4 | SizeofExprOperator.getExprOperand() | sizeof.cpp:28:23:28:28 | access to array | diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql index db8beba69a0..531f55ee45c 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql @@ -7,4 +7,4 @@ where or elemDesc = "SizeofExprOperator.getExprOperand()" and e = sto.(SizeofExprOperator).getExprOperand() -select sto, elemDesc, e +select sto, sto.getValue(), elemDesc, e diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected b/cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected index 05fdfd7f035..891141f56f1 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected @@ -16,7 +16,6 @@ edges | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:153:5:153:5 | a | provenance | | | test_free.cpp:233:14:233:15 | pointer to free output argument | test_free.cpp:234:9:234:11 | *... ++ | provenance | | | test_free.cpp:234:9:234:11 | *... ++ | test_free.cpp:236:9:236:10 | * ... | provenance | | -| test_free.cpp:238:15:238:17 | *... ++ | test_free.cpp:238:15:238:17 | *... ++ | provenance | | | test_free.cpp:238:15:238:17 | *... ++ | test_free.cpp:241:9:241:10 | * ... | provenance | | | test_free.cpp:239:14:239:15 | pointer to free output argument | test_free.cpp:238:15:238:17 | *... ++ | provenance | | | test_free.cpp:245:10:245:11 | pointer to free output argument | test_free.cpp:246:9:246:10 | * ... | provenance | | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/UnboundedWrite.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/UnboundedWrite.expected index cde0ba8bc75..c71c9c7926e 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/UnboundedWrite.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/UnboundedWrite.expected @@ -31,9 +31,9 @@ edges | main.cpp:9:29:9:32 | *argv | tests_restrict.c:15:41:15:44 | *argv | provenance | | | main.cpp:9:29:9:32 | tests_restrict_main output argument | main.cpp:10:20:10:23 | **argv | provenance | | | main.cpp:9:29:9:32 | tests_restrict_main output argument | main.cpp:10:20:10:23 | *argv | provenance | | -| main.cpp:10:20:10:23 | **argv | tests.cpp:657:32:657:35 | **argv | provenance | | -| main.cpp:10:20:10:23 | *argv | tests.cpp:657:32:657:35 | **argv | provenance | | -| main.cpp:10:20:10:23 | *argv | tests.cpp:657:32:657:35 | *argv | provenance | | +| main.cpp:10:20:10:23 | **argv | tests.cpp:689:32:689:35 | **argv | provenance | | +| main.cpp:10:20:10:23 | *argv | tests.cpp:689:32:689:35 | **argv | provenance | | +| main.cpp:10:20:10:23 | *argv | tests.cpp:689:32:689:35 | *argv | provenance | | | overflowdestination.cpp:23:45:23:48 | **argv | overflowdestination.cpp:23:45:23:48 | **argv | provenance | | | overflowdestination.cpp:23:45:23:48 | **argv | overflowdestination.cpp:23:45:23:48 | *argv | provenance | | | test_buffer_overrun.cpp:32:46:32:49 | **argv | test_buffer_overrun.cpp:32:46:32:49 | **argv | provenance | | @@ -46,12 +46,12 @@ edges | tests.cpp:628:14:628:14 | *s [*home] | tests.cpp:628:14:628:19 | *home | provenance | | | tests.cpp:628:14:628:14 | *s [*home] | tests.cpp:628:16:628:19 | *home | provenance | | | tests.cpp:628:16:628:19 | *home | tests.cpp:628:14:628:19 | *home | provenance | | -| tests.cpp:657:32:657:35 | **argv | tests.cpp:682:9:682:15 | *access to array | provenance | | -| tests.cpp:657:32:657:35 | **argv | tests.cpp:683:9:683:15 | *access to array | provenance | | -| tests.cpp:657:32:657:35 | *argv | tests.cpp:682:9:682:15 | *access to array | provenance | | -| tests.cpp:657:32:657:35 | *argv | tests.cpp:683:9:683:15 | *access to array | provenance | | -| tests.cpp:682:9:682:15 | *access to array | tests.cpp:613:19:613:24 | *source | provenance | | -| tests.cpp:683:9:683:15 | *access to array | tests.cpp:622:19:622:24 | *source | provenance | | +| tests.cpp:689:32:689:35 | **argv | tests.cpp:714:9:714:15 | *access to array | provenance | | +| tests.cpp:689:32:689:35 | **argv | tests.cpp:715:9:715:15 | *access to array | provenance | | +| tests.cpp:689:32:689:35 | *argv | tests.cpp:714:9:714:15 | *access to array | provenance | | +| tests.cpp:689:32:689:35 | *argv | tests.cpp:715:9:715:15 | *access to array | provenance | | +| tests.cpp:714:9:714:15 | *access to array | tests.cpp:613:19:613:24 | *source | provenance | | +| tests.cpp:715:9:715:15 | *access to array | tests.cpp:622:19:622:24 | *source | provenance | | | tests_restrict.c:15:41:15:44 | **argv | tests_restrict.c:15:41:15:44 | **argv | provenance | | | tests_restrict.c:15:41:15:44 | *argv | tests_restrict.c:15:41:15:44 | *argv | provenance | | nodes @@ -85,10 +85,10 @@ nodes | tests.cpp:628:14:628:14 | *s [*home] | semmle.label | *s [*home] | | tests.cpp:628:14:628:19 | *home | semmle.label | *home | | tests.cpp:628:16:628:19 | *home | semmle.label | *home | -| tests.cpp:657:32:657:35 | **argv | semmle.label | **argv | -| tests.cpp:657:32:657:35 | *argv | semmle.label | *argv | -| tests.cpp:682:9:682:15 | *access to array | semmle.label | *access to array | -| tests.cpp:683:9:683:15 | *access to array | semmle.label | *access to array | +| tests.cpp:689:32:689:35 | **argv | semmle.label | **argv | +| tests.cpp:689:32:689:35 | *argv | semmle.label | *argv | +| tests.cpp:714:9:714:15 | *access to array | semmle.label | *access to array | +| tests.cpp:715:9:715:15 | *access to array | semmle.label | *access to array | | tests_restrict.c:15:41:15:44 | **argv | semmle.label | **argv | | tests_restrict.c:15:41:15:44 | **argv | semmle.label | **argv | | tests_restrict.c:15:41:15:44 | *argv | semmle.label | *argv | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp index 9120377edd7..50ee477085e 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp @@ -654,6 +654,38 @@ void test26(bool cond) if (ptr[-1] == 0) { return; } // GOOD: accesses buffer[1] } +#define IND 100 +#define MAX_SIZE 100 +void test27(){ + char *src = ""; + char *dest = "abcdefgh"; + int ind = 100; + char buffer[MAX_SIZE]; + + strncpy(dest, src, 8); // GOOD, strncpy will not read past null terminator of source + + if(IND < MAX_SIZE){ + buffer[IND] = 0; // GOOD: out of bounds, but inaccessible code + } +} + +typedef struct _MYSTRUCT { + unsigned long a; + unsigned short b; + unsigned char z[ 100 ]; +} MYSTRUCT; + + +const MYSTRUCT _myStruct = { 0 }; +typedef const MYSTRUCT& MYSTRUCTREF; + +// False positive case due to use of typedefs +int test28(MYSTRUCTREF g) +{ + return memcmp(&g, &_myStruct, sizeof(MYSTRUCT)); // GOOD +} + + int tests_main(int argc, char *argv[]) { long long arr17[19]; diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected index c21f9c38855..97bd3603cd3 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected @@ -32,6 +32,8 @@ edges | test.cpp:24:11:24:18 | call to get_rand | test.cpp:25:7:25:7 | r | provenance | | | test.cpp:30:13:30:14 | get_rand2 output argument | test.cpp:31:7:31:7 | r | provenance | | | test.cpp:36:13:36:13 | get_rand3 output argument | test.cpp:37:7:37:7 | r | provenance | | +| test.cpp:62:19:62:24 | call to rand | test.cpp:62:19:62:24 | call to rand | provenance | | +| test.cpp:62:19:62:24 | call to rand | test.cpp:65:9:65:9 | x | provenance | | | test.cpp:86:10:86:13 | call to rand | test.cpp:86:10:86:13 | call to rand | provenance | | | test.cpp:86:10:86:13 | call to rand | test.cpp:90:10:90:10 | x | provenance | | | test.cpp:98:10:98:13 | call to rand | test.cpp:98:10:98:13 | call to rand | provenance | | @@ -105,6 +107,9 @@ nodes | test.cpp:31:7:31:7 | r | semmle.label | r | | test.cpp:36:13:36:13 | get_rand3 output argument | semmle.label | get_rand3 output argument | | test.cpp:37:7:37:7 | r | semmle.label | r | +| test.cpp:62:19:62:24 | call to rand | semmle.label | call to rand | +| test.cpp:62:19:62:24 | call to rand | semmle.label | call to rand | +| test.cpp:65:9:65:9 | x | semmle.label | x | | test.cpp:86:10:86:13 | call to rand | semmle.label | call to rand | | test.cpp:86:10:86:13 | call to rand | semmle.label | call to rand | | test.cpp:90:10:90:10 | x | semmle.label | x | @@ -156,6 +161,7 @@ subpaths | test.cpp:25:7:25:7 | r | test.cpp:8:9:8:12 | call to rand | test.cpp:25:7:25:7 | r | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:8:9:8:12 | call to rand | uncontrolled value | | test.cpp:31:7:31:7 | r | test.cpp:13:10:13:13 | call to rand | test.cpp:31:7:31:7 | r | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:13:10:13:13 | call to rand | uncontrolled value | | test.cpp:37:7:37:7 | r | test.cpp:18:9:18:12 | call to rand | test.cpp:37:7:37:7 | r | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:18:9:18:12 | call to rand | uncontrolled value | +| test.cpp:65:9:65:9 | x | test.cpp:62:19:62:24 | call to rand | test.cpp:65:9:65:9 | x | This arithmetic expression depends on an $@, potentially causing an underflow. | test.cpp:62:19:62:22 | call to rand | uncontrolled value | | test.cpp:90:10:90:10 | x | test.cpp:86:10:86:13 | call to rand | test.cpp:90:10:90:10 | x | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:86:10:86:13 | call to rand | uncontrolled value | | test.cpp:102:10:102:10 | x | test.cpp:98:10:98:13 | call to rand | test.cpp:102:10:102:10 | x | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:98:10:98:13 | call to rand | uncontrolled value | | test.cpp:146:9:146:9 | y | test.cpp:137:10:137:13 | call to rand | test.cpp:146:9:146:9 | y | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:137:10:137:13 | call to rand | uncontrolled value | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/test.cpp index 6df97ef5452..f5e401c60cd 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/test.cpp @@ -62,7 +62,7 @@ unsigned int test_remainder_subtract_unsigned() unsigned int x = rand(); unsigned int y = x % 100; // y <= x - return x - y; // GOOD (as y <= x) + return x - y; // GOOD (as y <= x) [FALSE POSITIVE] } typedef unsigned long size_t; diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected index 9e5f61c7c88..4235033abcc 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected @@ -13,26 +13,30 @@ edges | test.cpp:133:19:133:32 | *call to getenv | test.cpp:133:14:133:17 | call to atoi | provenance | TaintFunction | | test.cpp:148:15:148:18 | call to atol | test.cpp:152:11:152:28 | ... * ... | provenance | | | test.cpp:148:20:148:33 | *call to getenv | test.cpp:148:15:148:18 | call to atol | provenance | TaintFunction | -| test.cpp:224:8:224:23 | *get_tainted_size | test.cpp:256:9:256:24 | call to get_tainted_size | provenance | | -| test.cpp:226:9:226:42 | ... * ... | test.cpp:224:8:224:23 | *get_tainted_size | provenance | | -| test.cpp:226:14:226:27 | *call to getenv | test.cpp:226:9:226:42 | ... * ... | provenance | TaintFunction | -| test.cpp:245:21:245:21 | s | test.cpp:246:21:246:21 | s | provenance | | -| test.cpp:252:19:252:52 | ... * ... | test.cpp:254:9:254:18 | local_size | provenance | | -| test.cpp:252:19:252:52 | ... * ... | test.cpp:260:11:260:20 | local_size | provenance | | -| test.cpp:252:19:252:52 | ... * ... | test.cpp:262:10:262:19 | local_size | provenance | | -| test.cpp:252:24:252:37 | *call to getenv | test.cpp:252:19:252:52 | ... * ... | provenance | TaintFunction | -| test.cpp:262:10:262:19 | local_size | test.cpp:245:21:245:21 | s | provenance | | -| test.cpp:265:20:265:27 | *out_size | test.cpp:304:17:304:20 | get_size output argument | provenance | | -| test.cpp:265:20:265:27 | *out_size | test.cpp:320:18:320:21 | get_size output argument | provenance | | -| test.cpp:266:2:266:32 | ... = ... | test.cpp:265:20:265:27 | *out_size | provenance | | -| test.cpp:266:18:266:31 | *call to getenv | test.cpp:266:2:266:32 | ... = ... | provenance | TaintFunction | -| test.cpp:274:15:274:18 | call to atoi | test.cpp:278:11:278:29 | ... * ... | provenance | | -| test.cpp:274:20:274:33 | *call to getenv | test.cpp:274:15:274:18 | call to atoi | provenance | TaintFunction | -| test.cpp:304:17:304:20 | get_size output argument | test.cpp:306:11:306:28 | ... * ... | provenance | | -| test.cpp:320:18:320:21 | get_size output argument | test.cpp:323:10:323:27 | ... * ... | provenance | | -| test.cpp:368:13:368:16 | call to atoi | test.cpp:370:35:370:38 | size | provenance | | -| test.cpp:368:13:368:16 | call to atoi | test.cpp:371:35:371:38 | size | provenance | | -| test.cpp:368:18:368:31 | *call to getenv | test.cpp:368:13:368:16 | call to atoi | provenance | TaintFunction | +| test.cpp:190:14:190:17 | call to atoi | test.cpp:194:11:194:28 | ... * ... | provenance | | +| test.cpp:190:19:190:32 | *call to getenv | test.cpp:190:14:190:17 | call to atoi | provenance | TaintFunction | +| test.cpp:205:14:205:17 | call to atoi | test.cpp:209:11:209:28 | ... * ... | provenance | | +| test.cpp:205:19:205:32 | *call to getenv | test.cpp:205:14:205:17 | call to atoi | provenance | TaintFunction | +| test.cpp:239:8:239:23 | *get_tainted_size | test.cpp:271:9:271:24 | call to get_tainted_size | provenance | | +| test.cpp:241:9:241:42 | ... * ... | test.cpp:239:8:239:23 | *get_tainted_size | provenance | | +| test.cpp:241:14:241:27 | *call to getenv | test.cpp:241:9:241:42 | ... * ... | provenance | TaintFunction | +| test.cpp:260:21:260:21 | s | test.cpp:261:21:261:21 | s | provenance | | +| test.cpp:267:19:267:52 | ... * ... | test.cpp:269:9:269:18 | local_size | provenance | | +| test.cpp:267:19:267:52 | ... * ... | test.cpp:275:11:275:20 | local_size | provenance | | +| test.cpp:267:19:267:52 | ... * ... | test.cpp:277:10:277:19 | local_size | provenance | | +| test.cpp:267:24:267:37 | *call to getenv | test.cpp:267:19:267:52 | ... * ... | provenance | TaintFunction | +| test.cpp:277:10:277:19 | local_size | test.cpp:260:21:260:21 | s | provenance | | +| test.cpp:280:20:280:27 | *out_size | test.cpp:319:17:319:20 | get_size output argument | provenance | | +| test.cpp:280:20:280:27 | *out_size | test.cpp:335:18:335:21 | get_size output argument | provenance | | +| test.cpp:281:2:281:32 | ... = ... | test.cpp:280:20:280:27 | *out_size | provenance | | +| test.cpp:281:18:281:31 | *call to getenv | test.cpp:281:2:281:32 | ... = ... | provenance | TaintFunction | +| test.cpp:289:15:289:18 | call to atoi | test.cpp:293:11:293:29 | ... * ... | provenance | | +| test.cpp:289:20:289:33 | *call to getenv | test.cpp:289:15:289:18 | call to atoi | provenance | TaintFunction | +| test.cpp:319:17:319:20 | get_size output argument | test.cpp:321:11:321:28 | ... * ... | provenance | | +| test.cpp:335:18:335:21 | get_size output argument | test.cpp:338:10:338:27 | ... * ... | provenance | | +| test.cpp:383:13:383:16 | call to atoi | test.cpp:385:35:385:38 | size | provenance | | +| test.cpp:383:13:383:16 | call to atoi | test.cpp:386:35:386:38 | size | provenance | | +| test.cpp:383:18:383:31 | *call to getenv | test.cpp:383:13:383:16 | call to atoi | provenance | TaintFunction | nodes | test.cpp:39:27:39:30 | **argv | semmle.label | **argv | | test.cpp:40:16:40:19 | call to atoi | semmle.label | call to atoi | @@ -52,31 +56,37 @@ nodes | test.cpp:148:15:148:18 | call to atol | semmle.label | call to atol | | test.cpp:148:20:148:33 | *call to getenv | semmle.label | *call to getenv | | test.cpp:152:11:152:28 | ... * ... | semmle.label | ... * ... | -| test.cpp:224:8:224:23 | *get_tainted_size | semmle.label | *get_tainted_size | -| test.cpp:226:9:226:42 | ... * ... | semmle.label | ... * ... | -| test.cpp:226:14:226:27 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:245:21:245:21 | s | semmle.label | s | -| test.cpp:246:21:246:21 | s | semmle.label | s | -| test.cpp:252:19:252:52 | ... * ... | semmle.label | ... * ... | -| test.cpp:252:24:252:37 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:254:9:254:18 | local_size | semmle.label | local_size | -| test.cpp:256:9:256:24 | call to get_tainted_size | semmle.label | call to get_tainted_size | -| test.cpp:260:11:260:20 | local_size | semmle.label | local_size | -| test.cpp:262:10:262:19 | local_size | semmle.label | local_size | -| test.cpp:265:20:265:27 | *out_size | semmle.label | *out_size | -| test.cpp:266:2:266:32 | ... = ... | semmle.label | ... = ... | -| test.cpp:266:18:266:31 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:274:15:274:18 | call to atoi | semmle.label | call to atoi | -| test.cpp:274:20:274:33 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:278:11:278:29 | ... * ... | semmle.label | ... * ... | -| test.cpp:304:17:304:20 | get_size output argument | semmle.label | get_size output argument | -| test.cpp:306:11:306:28 | ... * ... | semmle.label | ... * ... | -| test.cpp:320:18:320:21 | get_size output argument | semmle.label | get_size output argument | -| test.cpp:323:10:323:27 | ... * ... | semmle.label | ... * ... | -| test.cpp:368:13:368:16 | call to atoi | semmle.label | call to atoi | -| test.cpp:368:18:368:31 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:370:35:370:38 | size | semmle.label | size | -| test.cpp:371:35:371:38 | size | semmle.label | size | +| test.cpp:190:14:190:17 | call to atoi | semmle.label | call to atoi | +| test.cpp:190:19:190:32 | *call to getenv | semmle.label | *call to getenv | +| test.cpp:194:11:194:28 | ... * ... | semmle.label | ... * ... | +| test.cpp:205:14:205:17 | call to atoi | semmle.label | call to atoi | +| test.cpp:205:19:205:32 | *call to getenv | semmle.label | *call to getenv | +| test.cpp:209:11:209:28 | ... * ... | semmle.label | ... * ... | +| test.cpp:239:8:239:23 | *get_tainted_size | semmle.label | *get_tainted_size | +| test.cpp:241:9:241:42 | ... * ... | semmle.label | ... * ... | +| test.cpp:241:14:241:27 | *call to getenv | semmle.label | *call to getenv | +| test.cpp:260:21:260:21 | s | semmle.label | s | +| test.cpp:261:21:261:21 | s | semmle.label | s | +| test.cpp:267:19:267:52 | ... * ... | semmle.label | ... * ... | +| test.cpp:267:24:267:37 | *call to getenv | semmle.label | *call to getenv | +| test.cpp:269:9:269:18 | local_size | semmle.label | local_size | +| test.cpp:271:9:271:24 | call to get_tainted_size | semmle.label | call to get_tainted_size | +| test.cpp:275:11:275:20 | local_size | semmle.label | local_size | +| test.cpp:277:10:277:19 | local_size | semmle.label | local_size | +| test.cpp:280:20:280:27 | *out_size | semmle.label | *out_size | +| test.cpp:281:2:281:32 | ... = ... | semmle.label | ... = ... | +| test.cpp:281:18:281:31 | *call to getenv | semmle.label | *call to getenv | +| test.cpp:289:15:289:18 | call to atoi | semmle.label | call to atoi | +| test.cpp:289:20:289:33 | *call to getenv | semmle.label | *call to getenv | +| test.cpp:293:11:293:29 | ... * ... | semmle.label | ... * ... | +| test.cpp:319:17:319:20 | get_size output argument | semmle.label | get_size output argument | +| test.cpp:321:11:321:28 | ... * ... | semmle.label | ... * ... | +| test.cpp:335:18:335:21 | get_size output argument | semmle.label | get_size output argument | +| test.cpp:338:10:338:27 | ... * ... | semmle.label | ... * ... | +| test.cpp:383:13:383:16 | call to atoi | semmle.label | call to atoi | +| test.cpp:383:18:383:31 | *call to getenv | semmle.label | *call to getenv | +| test.cpp:385:35:385:38 | size | semmle.label | size | +| test.cpp:386:35:386:38 | size | semmle.label | size | subpaths #select | test.cpp:43:31:43:36 | call to malloc | test.cpp:39:27:39:30 | **argv | test.cpp:43:38:43:44 | tainted | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:39:27:39:30 | **argv | user input (a command-line argument) | @@ -88,12 +98,14 @@ subpaths | test.cpp:128:17:128:22 | call to malloc | test.cpp:124:18:124:31 | *call to getenv | test.cpp:128:24:128:41 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:124:18:124:31 | *call to getenv | user input (an environment variable) | | test.cpp:135:3:135:8 | call to malloc | test.cpp:133:19:133:32 | *call to getenv | test.cpp:135:10:135:27 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:133:19:133:32 | *call to getenv | user input (an environment variable) | | test.cpp:152:4:152:9 | call to malloc | test.cpp:148:20:148:33 | *call to getenv | test.cpp:152:11:152:28 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:148:20:148:33 | *call to getenv | user input (an environment variable) | -| test.cpp:246:14:246:19 | call to malloc | test.cpp:252:24:252:37 | *call to getenv | test.cpp:246:21:246:21 | s | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:252:24:252:37 | *call to getenv | user input (an environment variable) | -| test.cpp:254:2:254:7 | call to malloc | test.cpp:252:24:252:37 | *call to getenv | test.cpp:254:9:254:18 | local_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:252:24:252:37 | *call to getenv | user input (an environment variable) | -| test.cpp:256:2:256:7 | call to malloc | test.cpp:226:14:226:27 | *call to getenv | test.cpp:256:9:256:24 | call to get_tainted_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:226:14:226:27 | *call to getenv | user input (an environment variable) | -| test.cpp:260:2:260:9 | call to my_alloc | test.cpp:252:24:252:37 | *call to getenv | test.cpp:260:11:260:20 | local_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:252:24:252:37 | *call to getenv | user input (an environment variable) | -| test.cpp:278:4:278:9 | call to malloc | test.cpp:274:20:274:33 | *call to getenv | test.cpp:278:11:278:29 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:274:20:274:33 | *call to getenv | user input (an environment variable) | -| test.cpp:306:4:306:9 | call to malloc | test.cpp:266:18:266:31 | *call to getenv | test.cpp:306:11:306:28 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:266:18:266:31 | *call to getenv | user input (an environment variable) | -| test.cpp:323:3:323:8 | call to malloc | test.cpp:266:18:266:31 | *call to getenv | test.cpp:323:10:323:27 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:266:18:266:31 | *call to getenv | user input (an environment variable) | -| test.cpp:370:25:370:33 | call to MyMalloc1 | test.cpp:368:18:368:31 | *call to getenv | test.cpp:370:35:370:38 | size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:368:18:368:31 | *call to getenv | user input (an environment variable) | -| test.cpp:371:25:371:33 | call to MyMalloc2 | test.cpp:368:18:368:31 | *call to getenv | test.cpp:371:35:371:38 | size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:368:18:368:31 | *call to getenv | user input (an environment variable) | +| test.cpp:194:4:194:9 | call to malloc | test.cpp:190:19:190:32 | *call to getenv | test.cpp:194:11:194:28 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:190:19:190:32 | *call to getenv | user input (an environment variable) | +| test.cpp:209:4:209:9 | call to malloc | test.cpp:205:19:205:32 | *call to getenv | test.cpp:209:11:209:28 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:205:19:205:32 | *call to getenv | user input (an environment variable) | +| test.cpp:261:14:261:19 | call to malloc | test.cpp:267:24:267:37 | *call to getenv | test.cpp:261:21:261:21 | s | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:267:24:267:37 | *call to getenv | user input (an environment variable) | +| test.cpp:269:2:269:7 | call to malloc | test.cpp:267:24:267:37 | *call to getenv | test.cpp:269:9:269:18 | local_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:267:24:267:37 | *call to getenv | user input (an environment variable) | +| test.cpp:271:2:271:7 | call to malloc | test.cpp:241:14:241:27 | *call to getenv | test.cpp:271:9:271:24 | call to get_tainted_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:241:14:241:27 | *call to getenv | user input (an environment variable) | +| test.cpp:275:2:275:9 | call to my_alloc | test.cpp:267:24:267:37 | *call to getenv | test.cpp:275:11:275:20 | local_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:267:24:267:37 | *call to getenv | user input (an environment variable) | +| test.cpp:293:4:293:9 | call to malloc | test.cpp:289:20:289:33 | *call to getenv | test.cpp:293:11:293:29 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:289:20:289:33 | *call to getenv | user input (an environment variable) | +| test.cpp:321:4:321:9 | call to malloc | test.cpp:281:18:281:31 | *call to getenv | test.cpp:321:11:321:28 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:281:18:281:31 | *call to getenv | user input (an environment variable) | +| test.cpp:338:3:338:8 | call to malloc | test.cpp:281:18:281:31 | *call to getenv | test.cpp:338:10:338:27 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:281:18:281:31 | *call to getenv | user input (an environment variable) | +| test.cpp:385:25:385:33 | call to MyMalloc1 | test.cpp:383:18:383:31 | *call to getenv | test.cpp:385:35:385:38 | size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:383:18:383:31 | *call to getenv | user input (an environment variable) | +| test.cpp:386:25:386:33 | call to MyMalloc2 | test.cpp:383:18:383:31 | *call to getenv | test.cpp:386:35:386:38 | size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:383:18:383:31 | *call to getenv | user input (an environment variable) | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/test.cpp index f262d1943d0..e13c50a960b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/test.cpp @@ -191,7 +191,22 @@ void more_bounded_tests() { if (size % 100) { - malloc(size * sizeof(int)); // BAD [NOT DETECTED] + malloc(size * sizeof(int)); // BAD + } + } + + { + int size = atoi(getenv("USER")); + int size2 = size & 7; // Pick the first three bits of size + malloc(size2 * sizeof(int)); // GOOD + } + + { + int size = atoi(getenv("USER")); + + if (size & 7) + { + malloc(size * sizeof(int)); // BAD } } diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected index b6e6310b779..c60b26aae40 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected @@ -22,11 +22,9 @@ edges | test.c:41:5:41:24 | ... = ... | test.c:44:7:44:10 | len2 | provenance | | | test.c:41:5:41:24 | ... = ... | test.c:44:7:44:12 | ... -- | provenance | | | test.c:44:7:44:12 | ... -- | test.c:44:7:44:10 | len2 | provenance | | -| test.c:44:7:44:12 | ... -- | test.c:44:7:44:12 | ... -- | provenance | | | test.c:51:5:51:24 | ... = ... | test.c:54:7:54:10 | len3 | provenance | | | test.c:51:5:51:24 | ... = ... | test.c:54:7:54:12 | ... -- | provenance | | | test.c:54:7:54:12 | ... -- | test.c:54:7:54:10 | len3 | provenance | | -| test.c:54:7:54:12 | ... -- | test.c:54:7:54:12 | ... -- | provenance | | nodes | test2.cpp:12:21:12:21 | v | semmle.label | v | | test2.cpp:14:11:14:11 | v | semmle.label | v | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/LoopConditionsConst.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/LoopConditionsConst.expected index f0ada1ce16a..b3a0f5f2388 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/LoopConditionsConst.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/LoopConditionsConst.expected @@ -2,25 +2,25 @@ | test.cpp:43:2:45:2 | for(...;...;...) ... | test.cpp:43:18:43:26 | ... < ... | | i | { ... } | i | ExprStmt | | test.cpp:74:2:77:2 | while (...) ... | test.cpp:74:9:74:17 | ... > ... | 1 | count | { ... } | count | ExprStmt | | test.cpp:84:2:88:2 | while (...) ... | test.cpp:84:9:84:17 | ... > ... | | count | { ... } | count | if (...) ... | -| test.cpp:171:3:173:3 | while (...) ... | test.cpp:171:10:171:43 | ... != ... | 0 | | { ... } | 0 | return ... | -| test.cpp:251:2:255:2 | while (...) ... | test.cpp:251:9:251:12 | loop | 1 | loop | { ... } | loop | return ... | -| test.cpp:263:2:267:2 | while (...) ... | test.cpp:263:9:263:20 | ... && ... | 1 | 1 | { ... } | ... && ... | return ... | -| test.cpp:275:2:279:2 | while (...) ... | test.cpp:275:9:275:13 | ! ... | 1 | stop | { ... } | stop | return ... | -| test.cpp:287:2:291:2 | while (...) ... | test.cpp:287:9:287:20 | ... && ... | 1 | loop | { ... } | loop | return ... | -| test.cpp:299:2:303:2 | while (...) ... | test.cpp:299:9:299:20 | ... && ... | 1 | loop | { ... } | ... && ..., loop | return ... | -| test.cpp:311:2:315:2 | while (...) ... | test.cpp:311:9:311:21 | ... \|\| ... | 1 | ... \|\| ... | { ... } | 0 | return ... | -| test.cpp:323:2:328:2 | while (...) ... | test.cpp:323:9:323:17 | ... ? ... : ... | | b, c | { ... } | c | return ... | -| test.cpp:336:2:341:2 | while (...) ... | test.cpp:336:9:336:21 | ... \|\| ... | 1 | b, c | { ... } | c | return ... | -| test.cpp:348:2:351:17 | do (...) ... | test.cpp:351:11:351:15 | 0 | | { ... } | { ... } | { ... } | return ... | -| test.cpp:361:2:364:2 | while (...) ... | test.cpp:361:9:361:21 | ... \|\| ... | 1 | ... \|\| ... | { ... } | 0 | while (...) ... | -| test.cpp:365:2:368:2 | while (...) ... | test.cpp:365:9:365:13 | ! ... | 1 | stop | { ... } | stop | while (...) ... | -| test.cpp:369:2:373:2 | while (...) ... | test.cpp:369:9:369:21 | ... \|\| ... | 1 | b, c | { ... } | c | do (...) ... | -| test.cpp:374:2:376:17 | do (...) ... | test.cpp:376:11:376:15 | 0 | | do (...) ... | { ... } | { ... } | return ... | -| test.cpp:384:2:386:2 | while (...) ... | test.cpp:384:9:384:12 | 1 | 1 | 1 | { ... } | | return ... | -| test.cpp:394:2:396:2 | while (...) ... | test.cpp:394:9:394:21 | ... , ... | | { ... } | { ... } | | | -| test.cpp:404:3:408:3 | while (...) ... | test.cpp:404:10:404:13 | loop | 1 | loop | { ... } | | | -| test.cpp:416:2:418:2 | for(...;...;...) ... | test.cpp:416:18:416:23 | ... < ... | 1 | i | { ... } | i | return ... | -| test.cpp:424:2:425:2 | for(...;...;...) ... | test.cpp:424:18:424:23 | ... < ... | 1 | i | { ... } | i | return ... | -| test.cpp:433:2:434:2 | for(...;...;...) ... | test.cpp:433:18:433:22 | 0 | 0 | | { ... } | 0 | return ... | -| test.cpp:559:3:564:3 | while (...) ... | test.cpp:559:9:559:15 | call to getBool | | call to getBool | { ... } | call to getBool | ExprStmt | -| test.cpp:574:3:579:3 | while (...) ... | test.cpp:574:10:574:16 | call to getBool | | call to getBool | { ... } | call to getBool | ExprStmt | +| test.cpp:172:3:174:3 | while (...) ... | test.cpp:172:10:172:43 | ... != ... | | args | { ... } | args | return ... | +| test.cpp:259:2:263:2 | while (...) ... | test.cpp:259:9:259:12 | loop | 1 | loop | { ... } | loop | return ... | +| test.cpp:271:2:275:2 | while (...) ... | test.cpp:271:9:271:20 | ... && ... | 1 | 1 | { ... } | ... && ... | return ... | +| test.cpp:283:2:287:2 | while (...) ... | test.cpp:283:9:283:13 | ! ... | 1 | stop | { ... } | stop | return ... | +| test.cpp:295:2:299:2 | while (...) ... | test.cpp:295:9:295:20 | ... && ... | 1 | loop | { ... } | loop | return ... | +| test.cpp:307:2:311:2 | while (...) ... | test.cpp:307:9:307:20 | ... && ... | 1 | loop | { ... } | ... && ..., loop | return ... | +| test.cpp:319:2:323:2 | while (...) ... | test.cpp:319:9:319:21 | ... \|\| ... | 1 | ... \|\| ... | { ... } | 0 | return ... | +| test.cpp:331:2:336:2 | while (...) ... | test.cpp:331:9:331:17 | ... ? ... : ... | | b, c | { ... } | c | return ... | +| test.cpp:344:2:349:2 | while (...) ... | test.cpp:344:9:344:21 | ... \|\| ... | 1 | b, c | { ... } | c | return ... | +| test.cpp:356:2:359:17 | do (...) ... | test.cpp:359:11:359:15 | 0 | | { ... } | { ... } | { ... } | return ... | +| test.cpp:369:2:372:2 | while (...) ... | test.cpp:369:9:369:21 | ... \|\| ... | 1 | ... \|\| ... | { ... } | 0 | while (...) ... | +| test.cpp:373:2:376:2 | while (...) ... | test.cpp:373:9:373:13 | ! ... | 1 | stop | { ... } | stop | while (...) ... | +| test.cpp:377:2:381:2 | while (...) ... | test.cpp:377:9:377:21 | ... \|\| ... | 1 | b, c | { ... } | c | do (...) ... | +| test.cpp:382:2:384:17 | do (...) ... | test.cpp:384:11:384:15 | 0 | | do (...) ... | { ... } | { ... } | return ... | +| test.cpp:392:2:394:2 | while (...) ... | test.cpp:392:9:392:12 | 1 | 1 | 1 | { ... } | | return ... | +| test.cpp:402:2:404:2 | while (...) ... | test.cpp:402:9:402:21 | ... , ... | | { ... } | { ... } | | | +| test.cpp:412:3:416:3 | while (...) ... | test.cpp:412:10:412:13 | loop | 1 | loop | { ... } | | | +| test.cpp:424:2:426:2 | for(...;...;...) ... | test.cpp:424:18:424:23 | ... < ... | 1 | i | { ... } | i | return ... | +| test.cpp:432:2:433:2 | for(...;...;...) ... | test.cpp:432:18:432:23 | ... < ... | 1 | i | { ... } | i | return ... | +| test.cpp:441:2:442:2 | for(...;...;...) ... | test.cpp:441:18:441:22 | 0 | 0 | | { ... } | 0 | return ... | +| test.cpp:567:3:572:3 | while (...) ... | test.cpp:567:9:567:15 | call to getBool | | call to getBool | { ... } | call to getBool | ExprStmt | +| test.cpp:582:3:587:3 | while (...) ... | test.cpp:582:10:582:16 | call to getBool | | call to getBool | { ... } | call to getBool | ExprStmt | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected index d27b2c996b3..a8b3c7782e7 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected @@ -2,28 +2,28 @@ edges nodes | test.cpp:11:6:11:8 | definition of foo | semmle.label | definition of foo | | test.cpp:111:6:111:8 | definition of foo | semmle.label | definition of foo | -| test.cpp:218:7:218:7 | definition of x | semmle.label | definition of x | -| test.cpp:241:6:241:6 | definition of i | semmle.label | definition of i | -| test.cpp:333:7:333:7 | definition of a | semmle.label | definition of a | -| test.cpp:358:7:358:7 | definition of a | semmle.label | definition of a | -| test.cpp:359:6:359:8 | definition of val | semmle.label | definition of val | -| test.cpp:414:9:414:9 | definition of j | semmle.label | definition of j | -| test.cpp:431:9:431:9 | definition of j | semmle.label | definition of j | -| test.cpp:452:6:452:6 | definition of x | semmle.label | definition of x | -| test.cpp:458:6:458:6 | definition of x | semmle.label | definition of x | -| test.cpp:464:6:464:6 | definition of x | semmle.label | definition of x | -| test.cpp:471:6:471:6 | definition of x | semmle.label | definition of x | +| test.cpp:226:7:226:7 | definition of x | semmle.label | definition of x | +| test.cpp:249:6:249:6 | definition of i | semmle.label | definition of i | +| test.cpp:341:7:341:7 | definition of a | semmle.label | definition of a | +| test.cpp:366:7:366:7 | definition of a | semmle.label | definition of a | +| test.cpp:367:6:367:8 | definition of val | semmle.label | definition of val | +| test.cpp:422:9:422:9 | definition of j | semmle.label | definition of j | +| test.cpp:439:9:439:9 | definition of j | semmle.label | definition of j | +| test.cpp:460:6:460:6 | definition of x | semmle.label | definition of x | +| test.cpp:466:6:466:6 | definition of x | semmle.label | definition of x | +| test.cpp:472:6:472:6 | definition of x | semmle.label | definition of x | +| test.cpp:479:6:479:6 | definition of x | semmle.label | definition of x | #select | test.cpp:12:6:12:8 | foo | test.cpp:11:6:11:8 | definition of foo | test.cpp:11:6:11:8 | definition of foo | The variable $@ may not be initialized at this access. | test.cpp:11:6:11:8 | foo | foo | | test.cpp:113:6:113:8 | foo | test.cpp:111:6:111:8 | definition of foo | test.cpp:111:6:111:8 | definition of foo | The variable $@ may not be initialized at this access. | test.cpp:111:6:111:8 | foo | foo | -| test.cpp:219:3:219:3 | x | test.cpp:218:7:218:7 | definition of x | test.cpp:218:7:218:7 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:218:7:218:7 | x | x | -| test.cpp:243:13:243:13 | i | test.cpp:241:6:241:6 | definition of i | test.cpp:241:6:241:6 | definition of i | The variable $@ may not be initialized at this access. | test.cpp:241:6:241:6 | i | i | -| test.cpp:336:10:336:10 | a | test.cpp:333:7:333:7 | definition of a | test.cpp:333:7:333:7 | definition of a | The variable $@ may not be initialized at this access. | test.cpp:333:7:333:7 | a | a | -| test.cpp:369:10:369:10 | a | test.cpp:358:7:358:7 | definition of a | test.cpp:358:7:358:7 | definition of a | The variable $@ may not be initialized at this access. | test.cpp:358:7:358:7 | a | a | -| test.cpp:378:9:378:11 | val | test.cpp:359:6:359:8 | definition of val | test.cpp:359:6:359:8 | definition of val | The variable $@ may not be initialized at this access. | test.cpp:359:6:359:8 | val | val | -| test.cpp:417:10:417:10 | j | test.cpp:414:9:414:9 | definition of j | test.cpp:414:9:414:9 | definition of j | The variable $@ may not be initialized at this access. | test.cpp:414:9:414:9 | j | j | -| test.cpp:436:9:436:9 | j | test.cpp:431:9:431:9 | definition of j | test.cpp:431:9:431:9 | definition of j | The variable $@ may not be initialized at this access. | test.cpp:431:9:431:9 | j | j | -| test.cpp:454:2:454:2 | x | test.cpp:452:6:452:6 | definition of x | test.cpp:452:6:452:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:452:6:452:6 | x | x | -| test.cpp:460:7:460:7 | x | test.cpp:458:6:458:6 | definition of x | test.cpp:458:6:458:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:458:6:458:6 | x | x | -| test.cpp:467:2:467:2 | x | test.cpp:464:6:464:6 | definition of x | test.cpp:464:6:464:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:464:6:464:6 | x | x | -| test.cpp:474:7:474:7 | x | test.cpp:471:6:471:6 | definition of x | test.cpp:471:6:471:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:471:6:471:6 | x | x | +| test.cpp:227:3:227:3 | x | test.cpp:226:7:226:7 | definition of x | test.cpp:226:7:226:7 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:226:7:226:7 | x | x | +| test.cpp:251:13:251:13 | i | test.cpp:249:6:249:6 | definition of i | test.cpp:249:6:249:6 | definition of i | The variable $@ may not be initialized at this access. | test.cpp:249:6:249:6 | i | i | +| test.cpp:344:10:344:10 | a | test.cpp:341:7:341:7 | definition of a | test.cpp:341:7:341:7 | definition of a | The variable $@ may not be initialized at this access. | test.cpp:341:7:341:7 | a | a | +| test.cpp:377:10:377:10 | a | test.cpp:366:7:366:7 | definition of a | test.cpp:366:7:366:7 | definition of a | The variable $@ may not be initialized at this access. | test.cpp:366:7:366:7 | a | a | +| test.cpp:386:9:386:11 | val | test.cpp:367:6:367:8 | definition of val | test.cpp:367:6:367:8 | definition of val | The variable $@ may not be initialized at this access. | test.cpp:367:6:367:8 | val | val | +| test.cpp:425:10:425:10 | j | test.cpp:422:9:422:9 | definition of j | test.cpp:422:9:422:9 | definition of j | The variable $@ may not be initialized at this access. | test.cpp:422:9:422:9 | j | j | +| test.cpp:444:9:444:9 | j | test.cpp:439:9:439:9 | definition of j | test.cpp:439:9:439:9 | definition of j | The variable $@ may not be initialized at this access. | test.cpp:439:9:439:9 | j | j | +| test.cpp:462:2:462:2 | x | test.cpp:460:6:460:6 | definition of x | test.cpp:460:6:460:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:460:6:460:6 | x | x | +| test.cpp:468:7:468:7 | x | test.cpp:466:6:466:6 | definition of x | test.cpp:466:6:466:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:466:6:466:6 | x | x | +| test.cpp:475:2:475:2 | x | test.cpp:472:6:472:6 | definition of x | test.cpp:472:6:472:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:472:6:472:6 | x | x | +| test.cpp:482:7:482:7 | x | test.cpp:479:6:479:6 | definition of x | test.cpp:479:6:479:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:479:6:479:6 | x | x | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp index eab71b1aec5..14c00675545 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp @@ -156,11 +156,12 @@ int absCorrect2(int i) { return j; // correct: j always initialized before use } +typedef __builtin_va_list va_list; +#define va_start(v, l) __builtin_va_start(v,l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v, l) __builtin_va_arg(v,l) +#define va_copy(d, s) __builtin_va_copy(d,s) -typedef void *va_list; -#define va_start(ap, parmN) -#define va_end(ap) -#define va_arg(ap, type) ((type)0) #define NULL 0 // Variadic initialisation @@ -176,7 +177,7 @@ void init(int val, ...) { void test15() { int foo; init(42, &foo, NULL); - use(foo); //GOOD -- initialised by `init` + use(foo); // GOOD -- initialised by `init` } // Variadic non-initialisation @@ -192,6 +193,13 @@ void test16() { use(foo); // BAD (NOT REPORTED) } +void test_va_copy(va_list va) { + va_list va2; + va_copy(va2, va); // GOOD -- this is an initialization + use(va2); + va_end(va2); +} + bool test17(bool b) { int foo; int *p = nullptr; diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.expected index 991ff2de8a4..53907bfeb40 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.expected @@ -17,3 +17,4 @@ | test.cpp:229:15:229:35 | new | This allocation cannot throw. $@ is unnecessary. | test.cpp:231:16:231:19 | { ... } | This catch block | | test.cpp:242:14:242:34 | new | This allocation cannot throw. $@ is unnecessary. | test.cpp:243:34:243:36 | { ... } | This catch block | | test.cpp:276:17:276:31 | new[] | This allocation cannot return null. $@ is unnecessary. | test.cpp:277:8:277:12 | ! ... | This check | +| test.cpp:288:19:288:47 | new[] | This allocation cannot throw. $@ is unnecessary. | test.cpp:291:30:293:5 | { ... } | This catch block | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-570/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-570/test.cpp index 977b6e878a2..9df901ca5a9 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-570/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-570/test.cpp @@ -282,7 +282,7 @@ namespace qhelp { } // BAD: the allocation won't throw an exception, but - // instead return a null pointer. [NOT DETECTED] + // instead return a null pointer. void bad2(std::size_t length) noexcept { try { int* dest = new(std::nothrow) int[length]; diff --git a/csharp/.gitignore b/csharp/.gitignore index f3ea7470cb9..362df6f453e 100644 --- a/csharp/.gitignore +++ b/csharp/.gitignore @@ -11,7 +11,6 @@ csharp.log *.tlog .vs *.user -.vscode/launch.json extractor/Semmle.Extraction.CSharp.Driver/Properties/launchSettings.json paket-files/ diff --git a/csharp/.vscode/launch.json b/csharp/.vscode/launch.json new file mode 100644 index 00000000000..46858861047 --- /dev/null +++ b/csharp/.vscode/launch.json @@ -0,0 +1,65 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C#: Standalone Debug", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "dotnet: build", + "program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Standalone/bin/Debug/net8.0/Semmle.Extraction.CSharp.Standalone.dll", + "args": [], + // Set the path to the folder that should be extracted: + "cwd": "${workspaceFolder}/ql/test/library-tests/standalone/standalonemode", + "env": { + "CODEQL_THREADS": "1", + "CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY": "progress+++", + "CODEQL_EXTRACTOR_CSHARP_OPTION_TRAP_COMPRESSION": "NONE", + }, + "stopAtEntry": true, + "console": "internalConsole", + "justMyCode": false, + "symbolOptions": { + "searchPaths": [], + "searchMicrosoftSymbolServer": true, + "searchNuGetOrgSymbolServer": true + }, + "sourceLinkOptions": { + "*": { + "enabled": true + } + }, + "suppressJITOptimizations": true + }, + { + "name": "C#: Autobuild Debug", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "dotnet: build", + "program": "${workspaceFolder}/autobuilder/Semmle.Autobuild.CSharp/bin/Debug/net8.0/Semmle.Autobuild.CSharp.dll", + // Set the path to the folder that should be extracted: + "cwd": "${workspaceFolder}/ql/integration-tests/all-platforms/autobuild", + "stopAtEntry": true, + "args": [], + "env": { + // The below folders need to exist before debugging + "CODEQL_EXTRACTOR_CSHARP_TRAP_DIR": "${workspaceFolder}/ql/integration-tests/DB", + "CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR": "${workspaceFolder}/ql/integration-tests/DB", + "CODEQL_EXTRACTOR_CSHARP_DIAGNOSTIC_DIR": "${workspaceFolder}/ql/integration-tests/DB", + "CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR": "${workspaceFolder}/ql/integration-tests/DB", + } + }, + { + "name": "C#: Binary Log Debug", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "dotnet: build", + "program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Driver/bin/Debug/net8.0/Semmle.Extraction.CSharp.Driver.dll", + "stopAtEntry": true, + "args": [ + "--binlog", + "${workspaceFolder}/ql/integration-tests/all-platforms/binlog/test.binlog" + ], + "env": {} + }, + ] +} diff --git a/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/old.dbscheme b/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/old.dbscheme new file mode 100644 index 00000000000..a2bda57dbc6 --- /dev/null +++ b/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/old.dbscheme @@ -0,0 +1,1459 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/semmlecode.csharp.dbscheme b/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/semmlecode.csharp.dbscheme new file mode 100644 index 00000000000..15b989afd2b --- /dev/null +++ b/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/semmlecode.csharp.dbscheme @@ -0,0 +1,2099 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); + +/* Common Intermediate Language - CIL */ + +case @cil_instruction.opcode of + 0 = @cil_nop +| 1 = @cil_break +| 2 = @cil_ldarg_0 +| 3 = @cil_ldarg_1 +| 4 = @cil_ldarg_2 +| 5 = @cil_ldarg_3 +| 6 = @cil_ldloc_0 +| 7 = @cil_ldloc_1 +| 8 = @cil_ldloc_2 +| 9 = @cil_ldloc_3 +| 10 = @cil_stloc_0 +| 11 = @cil_stloc_1 +| 12 = @cil_stloc_2 +| 13 = @cil_stloc_3 +| 14 = @cil_ldarg_s +| 15 = @cil_ldarga_s +| 16 = @cil_starg_s +| 17 = @cil_ldloc_s +| 18 = @cil_ldloca_s +| 19 = @cil_stloc_s +| 20 = @cil_ldnull +| 21 = @cil_ldc_i4_m1 +| 22 = @cil_ldc_i4_0 +| 23 = @cil_ldc_i4_1 +| 24 = @cil_ldc_i4_2 +| 25 = @cil_ldc_i4_3 +| 26 = @cil_ldc_i4_4 +| 27 = @cil_ldc_i4_5 +| 28 = @cil_ldc_i4_6 +| 29 = @cil_ldc_i4_7 +| 30 = @cil_ldc_i4_8 +| 31 = @cil_ldc_i4_s +| 32 = @cil_ldc_i4 +| 33 = @cil_ldc_i8 +| 34 = @cil_ldc_r4 +| 35 = @cil_ldc_r8 +| 37 = @cil_dup +| 38 = @cil_pop +| 39 = @cil_jmp +| 40 = @cil_call +| 41 = @cil_calli +| 42 = @cil_ret +| 43 = @cil_br_s +| 44 = @cil_brfalse_s +| 45 = @cil_brtrue_s +| 46 = @cil_beq_s +| 47 = @cil_bge_s +| 48 = @cil_bgt_s +| 49 = @cil_ble_s +| 50 = @cil_blt_s +| 51 = @cil_bne_un_s +| 52 = @cil_bge_un_s +| 53 = @cil_bgt_un_s +| 54 = @cil_ble_un_s +| 55 = @cil_blt_un_s +| 56 = @cil_br +| 57 = @cil_brfalse +| 58 = @cil_brtrue +| 59 = @cil_beq +| 60 = @cil_bge +| 61 = @cil_bgt +| 62 = @cil_ble +| 63 = @cil_blt +| 64 = @cil_bne_un +| 65 = @cil_bge_un +| 66 = @cil_bgt_un +| 67 = @cil_ble_un +| 68 = @cil_blt_un +| 69 = @cil_switch +| 70 = @cil_ldind_i1 +| 71 = @cil_ldind_u1 +| 72 = @cil_ldind_i2 +| 73 = @cil_ldind_u2 +| 74 = @cil_ldind_i4 +| 75 = @cil_ldind_u4 +| 76 = @cil_ldind_i8 +| 77 = @cil_ldind_i +| 78 = @cil_ldind_r4 +| 79 = @cil_ldind_r8 +| 80 = @cil_ldind_ref +| 81 = @cil_stind_ref +| 82 = @cil_stind_i1 +| 83 = @cil_stind_i2 +| 84 = @cil_stind_i4 +| 85 = @cil_stind_i8 +| 86 = @cil_stind_r4 +| 87 = @cil_stind_r8 +| 88 = @cil_add +| 89 = @cil_sub +| 90 = @cil_mul +| 91 = @cil_div +| 92 = @cil_div_un +| 93 = @cil_rem +| 94 = @cil_rem_un +| 95 = @cil_and +| 96 = @cil_or +| 97 = @cil_xor +| 98 = @cil_shl +| 99 = @cil_shr +| 100 = @cil_shr_un +| 101 = @cil_neg +| 102 = @cil_not +| 103 = @cil_conv_i1 +| 104 = @cil_conv_i2 +| 105 = @cil_conv_i4 +| 106 = @cil_conv_i8 +| 107 = @cil_conv_r4 +| 108 = @cil_conv_r8 +| 109 = @cil_conv_u4 +| 110 = @cil_conv_u8 +| 111 = @cil_callvirt +| 112 = @cil_cpobj +| 113 = @cil_ldobj +| 114 = @cil_ldstr +| 115 = @cil_newobj +| 116 = @cil_castclass +| 117 = @cil_isinst +| 118 = @cil_conv_r_un +| 121 = @cil_unbox +| 122 = @cil_throw +| 123 = @cil_ldfld +| 124 = @cil_ldflda +| 125 = @cil_stfld +| 126 = @cil_ldsfld +| 127 = @cil_ldsflda +| 128 = @cil_stsfld +| 129 = @cil_stobj +| 130 = @cil_conv_ovf_i1_un +| 131 = @cil_conv_ovf_i2_un +| 132 = @cil_conv_ovf_i4_un +| 133 = @cil_conv_ovf_i8_un +| 134 = @cil_conv_ovf_u1_un +| 135 = @cil_conv_ovf_u2_un +| 136 = @cil_conv_ovf_u4_un +| 137 = @cil_conv_ovf_u8_un +| 138 = @cil_conv_ovf_i_un +| 139 = @cil_conv_ovf_u_un +| 140 = @cil_box +| 141 = @cil_newarr +| 142 = @cil_ldlen +| 143 = @cil_ldelema +| 144 = @cil_ldelem_i1 +| 145 = @cil_ldelem_u1 +| 146 = @cil_ldelem_i2 +| 147 = @cil_ldelem_u2 +| 148 = @cil_ldelem_i4 +| 149 = @cil_ldelem_u4 +| 150 = @cil_ldelem_i8 +| 151 = @cil_ldelem_i +| 152 = @cil_ldelem_r4 +| 153 = @cil_ldelem_r8 +| 154 = @cil_ldelem_ref +| 155 = @cil_stelem_i +| 156 = @cil_stelem_i1 +| 157 = @cil_stelem_i2 +| 158 = @cil_stelem_i4 +| 159 = @cil_stelem_i8 +| 160 = @cil_stelem_r4 +| 161 = @cil_stelem_r8 +| 162 = @cil_stelem_ref +| 163 = @cil_ldelem +| 164 = @cil_stelem +| 165 = @cil_unbox_any +| 179 = @cil_conv_ovf_i1 +| 180 = @cil_conv_ovf_u1 +| 181 = @cil_conv_ovf_i2 +| 182 = @cil_conv_ovf_u2 +| 183 = @cil_conv_ovf_i4 +| 184 = @cil_conv_ovf_u4 +| 185 = @cil_conv_ovf_i8 +| 186 = @cil_conv_ovf_u8 +| 194 = @cil_refanyval +| 195 = @cil_ckinfinite +| 198 = @cil_mkrefany +| 208 = @cil_ldtoken +| 209 = @cil_conv_u2 +| 210 = @cil_conv_u1 +| 211 = @cil_conv_i +| 212 = @cil_conv_ovf_i +| 213 = @cil_conv_ovf_u +| 214 = @cil_add_ovf +| 215 = @cil_add_ovf_un +| 216 = @cil_mul_ovf +| 217 = @cil_mul_ovf_un +| 218 = @cil_sub_ovf +| 219 = @cil_sub_ovf_un +| 220 = @cil_endfinally +| 221 = @cil_leave +| 222 = @cil_leave_s +| 223 = @cil_stind_i +| 224 = @cil_conv_u +| 65024 = @cil_arglist +| 65025 = @cil_ceq +| 65026 = @cil_cgt +| 65027 = @cil_cgt_un +| 65028 = @cil_clt +| 65029 = @cil_clt_un +| 65030 = @cil_ldftn +| 65031 = @cil_ldvirtftn +| 65033 = @cil_ldarg +| 65034 = @cil_ldarga +| 65035 = @cil_starg +| 65036 = @cil_ldloc +| 65037 = @cil_ldloca +| 65038 = @cil_stloc +| 65039 = @cil_localloc +| 65041 = @cil_endfilter +| 65042 = @cil_unaligned +| 65043 = @cil_volatile +| 65044 = @cil_tail +| 65045 = @cil_initobj +| 65046 = @cil_constrained +| 65047 = @cil_cpblk +| 65048 = @cil_initblk +| 65050 = @cil_rethrow +| 65052 = @cil_sizeof +| 65053 = @cil_refanytype +| 65054 = @cil_readonly +; + +// CIL ignored instructions + +@cil_ignore = @cil_nop | @cil_break | @cil_volatile | @cil_unaligned; + +// CIL local/parameter/field access + +@cil_ldarg_any = @cil_ldarg_0 | @cil_ldarg_1 | @cil_ldarg_2 | @cil_ldarg_3 | @cil_ldarg_s | @cil_ldarga_s | @cil_ldarg | @cil_ldarga; +@cil_starg_any = @cil_starg | @cil_starg_s; + +@cil_ldloc_any = @cil_ldloc_0 | @cil_ldloc_1 | @cil_ldloc_2 | @cil_ldloc_3 | @cil_ldloc_s | @cil_ldloca_s | @cil_ldloc | @cil_ldloca; +@cil_stloc_any = @cil_stloc_0 | @cil_stloc_1 | @cil_stloc_2 | @cil_stloc_3 | @cil_stloc_s | @cil_stloc; + +@cil_ldfld_any = @cil_ldfld | @cil_ldsfld | @cil_ldsflda | @cil_ldflda; +@cil_stfld_any = @cil_stfld | @cil_stsfld; + +@cil_local_access = @cil_stloc_any | @cil_ldloc_any; +@cil_arg_access = @cil_starg_any | @cil_ldarg_any; +@cil_read_access = @cil_ldloc_any | @cil_ldarg_any | @cil_ldfld_any; +@cil_write_access = @cil_stloc_any | @cil_starg_any | @cil_stfld_any; + +@cil_stack_access = @cil_local_access | @cil_arg_access; +@cil_field_access = @cil_ldfld_any | @cil_stfld_any; + +@cil_access = @cil_read_access | @cil_write_access; + +// CIL constant/literal instructions + +@cil_ldc_i = @cil_ldc_i4_any | @cil_ldc_i8; + +@cil_ldc_i4_any = @cil_ldc_i4_m1 | @cil_ldc_i4_0 | @cil_ldc_i4_1 | @cil_ldc_i4_2 | @cil_ldc_i4_3 | + @cil_ldc_i4_4 | @cil_ldc_i4_5 | @cil_ldc_i4_6 | @cil_ldc_i4_7 | @cil_ldc_i4_8 | @cil_ldc_i4_s | @cil_ldc_i4; + +@cil_ldc_r = @cil_ldc_r4 | @cil_ldc_r8; + +@cil_literal = @cil_ldnull | @cil_ldc_i | @cil_ldc_r | @cil_ldstr; + +// Control flow + +@cil_conditional_jump = @cil_binary_jump | @cil_unary_jump; +@cil_binary_jump = @cil_beq_s | @cil_bge_s | @cil_bgt_s | @cil_ble_s | @cil_blt_s | + @cil_bne_un_s | @cil_bge_un_s | @cil_bgt_un_s | @cil_ble_un_s | @cil_blt_un_s | + @cil_beq | @cil_bge | @cil_bgt | @cil_ble | @cil_blt | + @cil_bne_un | @cil_bge_un | @cil_bgt_un | @cil_ble_un | @cil_blt_un; +@cil_unary_jump = @cil_brfalse_s | @cil_brtrue_s | @cil_brfalse | @cil_brtrue | @cil_switch; +@cil_unconditional_jump = @cil_br | @cil_br_s | @cil_leave_any; +@cil_leave_any = @cil_leave | @cil_leave_s; +@cil_jump = @cil_unconditional_jump | @cil_conditional_jump; + +// CIL call instructions + +@cil_call_any = @cil_jmp | @cil_call | @cil_calli | @cil_tail | @cil_callvirt | @cil_newobj; + +// CIL expression instructions + +@cil_expr = @cil_literal | @cil_binary_expr | @cil_unary_expr | @cil_call_any | @cil_read_access | + @cil_newarr | @cil_ldtoken | @cil_sizeof | + @cil_ldftn | @cil_ldvirtftn | @cil_localloc | @cil_mkrefany | @cil_refanytype | @cil_arglist | @cil_dup; + +@cil_unary_expr = + @cil_conversion_operation | @cil_unary_arithmetic_operation | @cil_unary_bitwise_operation| + @cil_ldlen | @cil_isinst | @cil_box | @cil_ldobj | @cil_castclass | @cil_unbox_any | + @cil_ldind | @cil_unbox; + +@cil_conversion_operation = + @cil_conv_i1 | @cil_conv_i2 | @cil_conv_i4 | @cil_conv_i8 | + @cil_conv_u1 | @cil_conv_u2 | @cil_conv_u4 | @cil_conv_u8 | + @cil_conv_ovf_i | @cil_conv_ovf_i_un | @cil_conv_ovf_i1 | @cil_conv_ovf_i1_un | + @cil_conv_ovf_i2 | @cil_conv_ovf_i2_un | @cil_conv_ovf_i4 | @cil_conv_ovf_i4_un | + @cil_conv_ovf_i8 | @cil_conv_ovf_i8_un | @cil_conv_ovf_u | @cil_conv_ovf_u_un | + @cil_conv_ovf_u1 | @cil_conv_ovf_u1_un | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | + @cil_conv_ovf_u4 | @cil_conv_ovf_u4_un | @cil_conv_ovf_u8 | @cil_conv_ovf_u8_un | + @cil_conv_r4 | @cil_conv_r8 | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | + @cil_conv_i | @cil_conv_u | @cil_conv_r_un; + +@cil_ldind = @cil_ldind_i | @cil_ldind_i1 | @cil_ldind_i2 | @cil_ldind_i4 | @cil_ldind_i8 | + @cil_ldind_r4 | @cil_ldind_r8 | @cil_ldind_ref | @cil_ldind_u1 | @cil_ldind_u2 | @cil_ldind_u4; + +@cil_stind = @cil_stind_i | @cil_stind_i1 | @cil_stind_i2 | @cil_stind_i4 | @cil_stind_i8 | + @cil_stind_r4 | @cil_stind_r8 | @cil_stind_ref; + +@cil_bitwise_operation = @cil_binary_bitwise_operation | @cil_unary_bitwise_operation; + +@cil_binary_bitwise_operation = @cil_and | @cil_or | @cil_xor | @cil_shr | @cil_shr | @cil_shr_un | @cil_shl; + +@cil_binary_arithmetic_operation = @cil_add | @cil_sub | @cil_mul | @cil_div | @cil_div_un | + @cil_rem | @cil_rem_un | @cil_add_ovf | @cil_add_ovf_un | @cil_mul_ovf | @cil_mul_ovf_un | + @cil_sub_ovf | @cil_sub_ovf_un; + +@cil_unary_bitwise_operation = @cil_not; + +@cil_binary_expr = @cil_binary_arithmetic_operation | @cil_binary_bitwise_operation | @cil_read_array | @cil_comparison_operation; + +@cil_unary_arithmetic_operation = @cil_neg; + +@cil_comparison_operation = @cil_cgt_un | @cil_ceq | @cil_cgt | @cil_clt | @cil_clt_un; + +// Elements that retrieve an address of something +@cil_read_ref = @cil_ldloca_s | @cil_ldarga_s | @cil_ldflda | @cil_ldsflda | @cil_ldelema; + +// CIL array instructions + +@cil_read_array = + @cil_ldelem | @cil_ldelema | @cil_ldelem_i1 | @cil_ldelem_ref | @cil_ldelem_i | + @cil_ldelem_i1 | @cil_ldelem_i2 | @cil_ldelem_i4 | @cil_ldelem_i8 | @cil_ldelem_r4 | + @cil_ldelem_r8 | @cil_ldelem_u1 | @cil_ldelem_u2 | @cil_ldelem_u4; + +@cil_write_array = @cil_stelem | @cil_stelem_ref | + @cil_stelem_i | @cil_stelem_i1 | @cil_stelem_i2 | @cil_stelem_i4 | @cil_stelem_i8 | + @cil_stelem_r4 | @cil_stelem_r8; + +@cil_throw_any = @cil_throw | @cil_rethrow; + +#keyset[impl, index] +cil_instruction( + unique int id: @cil_instruction, + int opcode: int ref, + int index: int ref, + int impl: @cil_method_implementation ref); + +cil_jump( + unique int instruction: @cil_jump ref, + int target: @cil_instruction ref); + +cil_access( + unique int instruction: @cil_instruction ref, + int target: @cil_accessible ref); + +cil_value( + unique int instruction: @cil_literal ref, + string value: string ref); + +#keyset[instruction, index] +cil_switch( + int instruction: @cil_switch ref, + int index: int ref, + int target: @cil_instruction ref); + +cil_instruction_location( + unique int id: @cil_instruction ref, + int loc: @location ref); + +cil_type_location( + int id: @cil_type ref, + int loc: @location ref); + +cil_method_location( + int id: @cil_method ref, + int loc: @location ref); + +@cil_namespace = @namespace; + +@cil_type_container = @cil_type | @cil_namespace | @cil_method; + +case @cil_type.kind of + 0 = @cil_valueorreftype +| 1 = @cil_typeparameter +| 2 = @cil_array_type +| 3 = @cil_pointer_type +| 4 = @cil_function_pointer_type +; + +cil_type( + unique int id: @cil_type, + string name: string ref, + int kind: int ref, + int parent: @cil_type_container ref, + int sourceDecl: @cil_type ref); + +cil_pointer_type( + unique int id: @cil_pointer_type ref, + int pointee: @cil_type ref); + +cil_array_type( + unique int id: @cil_array_type ref, + int element_type: @cil_type ref, + int rank: int ref); + +cil_function_pointer_return_type( + unique int id: @cil_function_pointer_type ref, + int return_type: @cil_type ref); + +cil_method( + unique int id: @cil_method, + string name: string ref, + int parent: @cil_type ref, + int return_type: @cil_type ref); + +cil_method_source_declaration( + unique int method: @cil_method ref, + int source: @cil_method ref); + +cil_method_implementation( + unique int id: @cil_method_implementation, + int method: @cil_method ref, + int location: @assembly ref); + +cil_implements( + int id: @cil_method ref, + int decl: @cil_method ref); + +#keyset[parent, name] +cil_field( + unique int id: @cil_field, + int parent: @cil_type ref, + string name: string ref, + int field_type: @cil_type ref); + +@cil_element = @cil_instruction | @cil_declaration | @cil_handler | @cil_attribute | @cil_namespace; +@cil_named_element = @cil_declaration | @cil_namespace; +@cil_declaration = @cil_variable | @cil_method | @cil_type | @cil_member; +@cil_accessible = @cil_declaration; +@cil_variable = @cil_field | @cil_stack_variable; +@cil_stack_variable = @cil_local_variable | @cil_parameter; +@cil_member = @cil_method | @cil_type | @cil_field | @cil_property | @cil_event; +@cil_custom_modifier_receiver = @cil_method | @cil_property | @cil_parameter | @cil_field | @cil_function_pointer_type; +@cil_parameterizable = @cil_method | @cil_function_pointer_type; +@cil_has_type_annotation = @cil_stack_variable | @cil_property | @cil_field | @cil_method | @cil_function_pointer_type; + +#keyset[parameterizable, index] +cil_parameter( + unique int id: @cil_parameter, + int parameterizable: @cil_parameterizable ref, + int index: int ref, + int param_type: @cil_type ref); + +cil_parameter_in(unique int id: @cil_parameter ref); +cil_parameter_out(unique int id: @cil_parameter ref); + +cil_setter(unique int prop: @cil_property ref, + int method: @cil_method ref); + +#keyset[id, modifier] +cil_custom_modifiers( + int id: @cil_custom_modifier_receiver ref, + int modifier: @cil_type ref, + int kind: int ref); // modreq: 1, modopt: 0 + +cil_type_annotation( + int id: @cil_has_type_annotation ref, + int annotation: int ref); + +cil_getter(unique int prop: @cil_property ref, + int method: @cil_method ref); + +cil_adder(unique int event: @cil_event ref, + int method: @cil_method ref); + +cil_remover(unique int event: @cil_event ref, int method: @cil_method ref); + +cil_raiser(unique int event: @cil_event ref, int method: @cil_method ref); + +cil_property( + unique int id: @cil_property, + int parent: @cil_type ref, + string name: string ref, + int property_type: @cil_type ref); + +#keyset[parent, name] +cil_event(unique int id: @cil_event, + int parent: @cil_type ref, + string name: string ref, + int event_type: @cil_type ref); + +#keyset[impl, index] +cil_local_variable( + unique int id: @cil_local_variable, + int impl: @cil_method_implementation ref, + int index: int ref, + int var_type: @cil_type ref); + +cil_function_pointer_calling_conventions( + int id: @cil_function_pointer_type ref, + int kind: int ref); + +// CIL handlers (exception handlers etc). + +case @cil_handler.kind of + 0 = @cil_catch_handler +| 1 = @cil_filter_handler +| 2 = @cil_finally_handler +| 4 = @cil_fault_handler +; + +#keyset[impl, index] +cil_handler( + unique int id: @cil_handler, + int impl: @cil_method_implementation ref, + int index: int ref, + int kind: int ref, + int try_start: @cil_instruction ref, + int try_end: @cil_instruction ref, + int handler_start: @cil_instruction ref); + +cil_handler_filter( + unique int id: @cil_handler ref, + int filter_start: @cil_instruction ref); + +cil_handler_type( + unique int id: @cil_handler ref, + int catch_type: @cil_type ref); + +@cil_controlflow_node = @cil_entry_point | @cil_instruction; + +@cil_entry_point = @cil_method_implementation | @cil_handler; + +@cil_dataflow_node = @cil_instruction | @cil_variable | @cil_method; + +cil_method_stack_size( + unique int method: @cil_method_implementation ref, + int size: int ref); + +// CIL modifiers + +cil_public(int id: @cil_member ref); +cil_private(int id: @cil_member ref); +cil_protected(int id: @cil_member ref); +cil_internal(int id: @cil_member ref); +cil_static(int id: @cil_member ref); +cil_sealed(int id: @cil_member ref); +cil_virtual(int id: @cil_method ref); +cil_abstract(int id: @cil_member ref); +cil_class(int id: @cil_type ref); +cil_interface(int id: @cil_type ref); +cil_security(int id: @cil_member ref); +cil_requiresecobject(int id: @cil_method ref); +cil_specialname(int id: @cil_method ref); +cil_newslot(int id: @cil_method ref); + +cil_base_class(unique int id: @cil_type ref, int base: @cil_type ref); +cil_base_interface(int id: @cil_type ref, int base: @cil_type ref); +cil_enum_underlying_type(unique int id: @cil_type ref, int underlying: @cil_type ref); + +#keyset[unbound, index] +cil_type_parameter( + int unbound: @cil_member ref, + int index: int ref, + int param: @cil_typeparameter ref); + +#keyset[bound, index] +cil_type_argument( + int bound: @cil_member ref, + int index: int ref, + int t: @cil_type ref); + +// CIL type parameter constraints + +cil_typeparam_covariant(int tp: @cil_typeparameter ref); +cil_typeparam_contravariant(int tp: @cil_typeparameter ref); +cil_typeparam_class(int tp: @cil_typeparameter ref); +cil_typeparam_struct(int tp: @cil_typeparameter ref); +cil_typeparam_new(int tp: @cil_typeparameter ref); +cil_typeparam_constraint(int tp: @cil_typeparameter ref, int supertype: @cil_type ref); + +// CIL attributes + +cil_attribute( + unique int attributeid: @cil_attribute, + int element: @cil_declaration ref, + int constructor: @cil_method ref); + +#keyset[attribute_id, param] +cil_attribute_named_argument( + int attribute_id: @cil_attribute ref, + string param: string ref, + string value: string ref); + +#keyset[attribute_id, index] +cil_attribute_positional_argument( + int attribute_id: @cil_attribute ref, + int index: int ref, + string value: string ref); + + +// Common .Net data model covering both C# and CIL + +// Common elements +@dotnet_element = @element | @cil_element; +@dotnet_named_element = @named_element | @cil_named_element; +@dotnet_callable = @callable | @cil_method; +@dotnet_variable = @variable | @cil_variable; +@dotnet_field = @field | @cil_field; +@dotnet_parameter = @parameter | @cil_parameter; +@dotnet_declaration = @declaration | @cil_declaration; +@dotnet_member = @member | @cil_member; +@dotnet_event = @event | @cil_event; +@dotnet_property = @property | @cil_property | @indexer; +@dotnet_parameterizable = @parameterizable | @cil_parameterizable; + +// Common types +@dotnet_type = @type | @cil_type; +@dotnet_call = @call | @cil_call_any; +@dotnet_throw = @throw_element | @cil_throw_any; +@dotnet_valueorreftype = @cil_valueorreftype | @value_or_ref_type | @cil_array_type | @void_type; +@dotnet_typeparameter = @type_parameter | @cil_typeparameter; +@dotnet_array_type = @array_type | @cil_array_type; +@dotnet_pointer_type = @pointer_type | @cil_pointer_type; +@dotnet_type_parameter = @type_parameter | @cil_typeparameter; +@dotnet_generic = @dotnet_valueorreftype | @dotnet_callable; + +// Attributes +@dotnet_attribute = @attribute | @cil_attribute; + +// Expressions +@dotnet_expr = @expr | @cil_expr; + +// Literals +@dotnet_literal = @literal_expr | @cil_literal; +@dotnet_string_literal = @string_literal_expr | @cil_ldstr; +@dotnet_int_literal = @integer_literal_expr | @cil_ldc_i; +@dotnet_float_literal = @float_literal_expr | @cil_ldc_r; +@dotnet_null_literal = @null_literal_expr | @cil_ldnull; + +@metadata_entity = @cil_method | @cil_type | @cil_field | @cil_property | @field | @property | + @callable | @value_or_ref_type | @void_type; + +metadata_handle(int entity : @metadata_entity ref, int location: @assembly ref, int handle: int ref) diff --git a/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/upgrade.properties b/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/upgrade.properties new file mode 100644 index 00000000000..9caf80911b0 --- /dev/null +++ b/csharp/downgrades/a2bda57dbc6eea94c50128522aae536e8edd5a3c/upgrade.properties @@ -0,0 +1,2 @@ +description: Add `cil` and `dotnet` related relations and types. +compatibility: backwards diff --git a/csharp/downgrades/ab09ac8287516082b7a7367f8fda1862b1be47c5/upgrade.properties b/csharp/downgrades/ab09ac8287516082b7a7367f8fda1862b1be47c5/upgrade.properties index bdd9f3ceb83..4cf530dfc85 100644 --- a/csharp/downgrades/ab09ac8287516082b7a7367f8fda1862b1be47c5/upgrade.properties +++ b/csharp/downgrades/ab09ac8287516082b7a7367f8fda1862b1be47c5/upgrade.properties @@ -1,3 +1,3 @@ description: Remove 'kind' from 'attributes'. -compatability: full -attributes.rel: reorder attributes.rel (@attribute id, int kind, @type_or_ref type_id, @attributable target) id type_id target \ No newline at end of file +compatibility: full +attributes.rel: reorder attributes.rel (@attribute id, int kind, @type_or_ref type_id, @attributable target) id type_id target diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CachedSymbol.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CachedSymbol.cs index 8dd3694a715..4a4d483ea37 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CachedSymbol.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CachedSymbol.cs @@ -144,50 +144,5 @@ namespace Semmle.Extraction.CSharp.Entities public override bool NeedsPopulation => Context.Defines(Symbol); public Extraction.Entities.Location Location => Context.CreateLocation(ReportingLocation); - - protected void PopulateMetadataHandle(TextWriter trapFile) - { - var handle = MetadataHandle; - - if (handle.HasValue) - trapFile.metadata_handle(this, Location, MetadataTokens.GetToken(handle.Value)); - } - - private static System.Reflection.PropertyInfo? GetPropertyInfo(object o, string name) - { - return o.GetType().GetProperty(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetProperty); - } - - public Handle? MetadataHandle - { - get - { - var handleProp = GetPropertyInfo(Symbol, "Handle"); - object handleObj = Symbol; - - if (handleProp is null) - { - var underlyingSymbolProp = GetPropertyInfo(Symbol, "UnderlyingSymbol"); - if (underlyingSymbolProp?.GetValue(Symbol) is object underlying) - { - handleProp = GetPropertyInfo(underlying, "Handle"); - handleObj = underlying; - } - } - - if (handleProp is not null) - { - switch (handleProp.GetValue(handleObj)) - { - case MethodDefinitionHandle md: return md; - case TypeDefinitionHandle td: return td; - case PropertyDefinitionHandle pd: return pd; - case FieldDefinitionHandle fd: return fd; - } - } - - return null; - } - } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs index f423f42dd5c..4894da062e3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs @@ -26,7 +26,6 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { - PopulateMetadataHandle(trapFile); PopulateAttributes(); ContainingType!.PopulateGenerics(); PopulateNullability(trapFile, Symbol.GetAnnotatedType()); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs index 9ab2514918b..06c44c3bed3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs @@ -51,6 +51,7 @@ namespace Semmle.Extraction.CSharp.Entities } } + PopulateAttributes(); PopulateModifiers(trapFile); BindComments(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs index eba65db03b6..c1a2082a3ba 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs @@ -360,7 +360,6 @@ namespace Semmle.Extraction.CSharp.Entities PopulateParameters(); PopulateMethodBody(trapFile); PopulateGenerics(trapFile); - PopulateMetadataHandle(trapFile); PopulateNullability(trapFile, Symbol.GetAnnotatedReturnType()); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs index 99f64e46c7b..ef00877c5cd 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs @@ -34,7 +34,6 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { - PopulateMetadataHandle(trapFile); PopulateAttributes(); PopulateModifiers(trapFile); BindComments(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs index e3919d40800..56382923a48 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs @@ -77,7 +77,6 @@ namespace Semmle.Extraction.CSharp.Entities protected void PopulateType(TextWriter trapFile, bool constructUnderlyingTupleType = false) { - PopulateMetadataHandle(trapFile); PopulateAttributes(); trapFile.Write("types("); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs b/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs index 9d4f913ff9c..49d08fc80ef 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs @@ -233,9 +233,6 @@ namespace Semmle.Extraction.CSharp internal static void localvars(this TextWriter trapFile, LocalVariable key, VariableKind kind, string name, int @var, Type type, Expression expr) => trapFile.WriteTuple("localvars", key, (int)kind, name, @var, type, expr); - public static void metadata_handle(this TextWriter trapFile, IEntity entity, Location assembly, int handleValue) => - trapFile.WriteTuple("metadata_handle", entity, assembly, handleValue); - internal static void method_location(this TextWriter trapFile, Method method, Location location) => trapFile.WriteTuple("method_location", method, location); diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index eb7af5234e3..c469ca5f4ff 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.7.25 + +No user-facing changes. + +## 1.7.24 + +No user-facing changes. + +## 1.7.23 + +No user-facing changes. + ## 1.7.22 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.23.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.23.md new file mode 100644 index 00000000000..97c0d95c5c3 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.23.md @@ -0,0 +1,3 @@ +## 1.7.23 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.24.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.24.md new file mode 100644 index 00000000000..28d2972c5d5 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.24.md @@ -0,0 +1,3 @@ +## 1.7.24 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.25.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.25.md new file mode 100644 index 00000000000..c47ad925d55 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.25.md @@ -0,0 +1,3 @@ +## 1.7.25 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 6a79a0ec163..317528bce5f 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.22 +lastReleaseVersion: 1.7.25 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 07db663f549..ca0697ac40b 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.23-dev +version: 1.7.26-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index eb7af5234e3..c469ca5f4ff 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.7.25 + +No user-facing changes. + +## 1.7.24 + +No user-facing changes. + +## 1.7.23 + +No user-facing changes. + ## 1.7.22 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.23.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.23.md new file mode 100644 index 00000000000..97c0d95c5c3 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.23.md @@ -0,0 +1,3 @@ +## 1.7.23 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.24.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.24.md new file mode 100644 index 00000000000..28d2972c5d5 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.24.md @@ -0,0 +1,3 @@ +## 1.7.24 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.25.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.25.md new file mode 100644 index 00000000000..c47ad925d55 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.25.md @@ -0,0 +1,3 @@ +## 1.7.25 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 6a79a0ec163..317528bce5f 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.22 +lastReleaseVersion: 1.7.25 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 880aae8371f..221eca049fe 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.23-dev +version: 1.7.26-dev groups: - csharp - solorigate diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/Files.ql b/csharp/ql/integration-tests/all-platforms/cshtml/Files.ql index 3933d037ed5..bea5557a25f 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml/Files.ql +++ b/csharp/ql/integration-tests/all-platforms/cshtml/Files.ql @@ -1,5 +1,5 @@ import csharp from File f -where f.fromSource() or f.getExtension() = "cshtml" +where f.fromSource() select f diff --git a/csharp/ql/integration-tests/linux-only/compiler_args/CompilerArgs.expected b/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected similarity index 100% rename from csharp/ql/integration-tests/linux-only/compiler_args/CompilerArgs.expected rename to csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected diff --git a/csharp/ql/integration-tests/linux-only/compiler_args/CompilerArgs.ql b/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.ql similarity index 100% rename from csharp/ql/integration-tests/linux-only/compiler_args/CompilerArgs.ql rename to csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.ql diff --git a/csharp/ql/integration-tests/linux-only/compiler_args/Program.cs b/csharp/ql/integration-tests/linux/compiler_args/Program.cs similarity index 100% rename from csharp/ql/integration-tests/linux-only/compiler_args/Program.cs rename to csharp/ql/integration-tests/linux/compiler_args/Program.cs diff --git a/csharp/ql/integration-tests/linux-only/compiler_args/global.json b/csharp/ql/integration-tests/linux/compiler_args/global.json similarity index 100% rename from csharp/ql/integration-tests/linux-only/compiler_args/global.json rename to csharp/ql/integration-tests/linux/compiler_args/global.json diff --git a/csharp/ql/integration-tests/linux-only/compiler_args/test.csproj b/csharp/ql/integration-tests/linux/compiler_args/test.csproj similarity index 100% rename from csharp/ql/integration-tests/linux-only/compiler_args/test.csproj rename to csharp/ql/integration-tests/linux/compiler_args/test.csproj diff --git a/csharp/ql/integration-tests/linux-only/compiler_args/test.py b/csharp/ql/integration-tests/linux/compiler_args/test.py similarity index 100% rename from csharp/ql/integration-tests/linux-only/compiler_args/test.py rename to csharp/ql/integration-tests/linux/compiler_args/test.py diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/Program.cs b/csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/Program.cs similarity index 100% rename from csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/Program.cs rename to csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/Program.cs diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/global.json b/csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/global.json similarity index 100% rename from csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/global.json rename to csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/global.json diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.csproj b/csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/test.csproj similarity index 100% rename from csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.csproj rename to csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/test.csproj diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py b/csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/test.py similarity index 100% rename from csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py rename to csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/test.py diff --git a/csharp/ql/integration-tests/posix-only/diag_autobuild_script/build.sh b/csharp/ql/integration-tests/posix/diag_autobuild_script/build.sh similarity index 100% rename from csharp/ql/integration-tests/posix-only/diag_autobuild_script/build.sh rename to csharp/ql/integration-tests/posix/diag_autobuild_script/build.sh diff --git a/csharp/ql/integration-tests/posix-only/diag_autobuild_script/diagnostics.expected b/csharp/ql/integration-tests/posix/diag_autobuild_script/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/diag_autobuild_script/diagnostics.expected rename to csharp/ql/integration-tests/posix/diag_autobuild_script/diagnostics.expected diff --git a/csharp/ql/integration-tests/posix-only/diag_autobuild_script/test.py b/csharp/ql/integration-tests/posix/diag_autobuild_script/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/diag_autobuild_script/test.py rename to csharp/ql/integration-tests/posix/diag_autobuild_script/test.py diff --git a/csharp/ql/integration-tests/posix-only/diag_multiple_scripts/build.sh b/csharp/ql/integration-tests/posix/diag_multiple_scripts/build.sh similarity index 100% rename from csharp/ql/integration-tests/posix-only/diag_multiple_scripts/build.sh rename to csharp/ql/integration-tests/posix/diag_multiple_scripts/build.sh diff --git a/csharp/ql/integration-tests/posix-only/diag_multiple_scripts/diagnostics.expected b/csharp/ql/integration-tests/posix/diag_multiple_scripts/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/diag_multiple_scripts/diagnostics.expected rename to csharp/ql/integration-tests/posix/diag_multiple_scripts/diagnostics.expected diff --git a/csharp/ql/integration-tests/posix-only/diag_multiple_scripts/scripts/build.sh b/csharp/ql/integration-tests/posix/diag_multiple_scripts/scripts/build.sh similarity index 100% rename from csharp/ql/integration-tests/posix-only/diag_multiple_scripts/scripts/build.sh rename to csharp/ql/integration-tests/posix/diag_multiple_scripts/scripts/build.sh diff --git a/csharp/ql/integration-tests/posix-only/diag_multiple_scripts/test.py b/csharp/ql/integration-tests/posix/diag_multiple_scripts/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/diag_multiple_scripts/test.py rename to csharp/ql/integration-tests/posix/diag_multiple_scripts/test.py diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/UnitTest1.cs b/csharp/ql/integration-tests/posix/dotnet_test/UnitTest1.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test/UnitTest1.cs rename to csharp/ql/integration-tests/posix/dotnet_test/UnitTest1.cs diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/diagnostics.expected b/csharp/ql/integration-tests/posix/dotnet_test/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test/diagnostics.expected rename to csharp/ql/integration-tests/posix/dotnet_test/diagnostics.expected diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/dotnet_test.csproj b/csharp/ql/integration-tests/posix/dotnet_test/dotnet_test.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test/dotnet_test.csproj rename to csharp/ql/integration-tests/posix/dotnet_test/dotnet_test.csproj diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/global.json b/csharp/ql/integration-tests/posix/dotnet_test/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test/global.json rename to csharp/ql/integration-tests/posix/dotnet_test/global.json diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/test.py b/csharp/ql/integration-tests/posix/dotnet_test/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test/test.py rename to csharp/ql/integration-tests/posix/dotnet_test/test.py diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/UnitTest1.cs b/csharp/ql/integration-tests/posix/dotnet_test_mstest/UnitTest1.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test_mstest/UnitTest1.cs rename to csharp/ql/integration-tests/posix/dotnet_test_mstest/UnitTest1.cs diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/Usings.cs b/csharp/ql/integration-tests/posix/dotnet_test_mstest/Usings.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test_mstest/Usings.cs rename to csharp/ql/integration-tests/posix/dotnet_test_mstest/Usings.cs diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/diagnostics.expected b/csharp/ql/integration-tests/posix/dotnet_test_mstest/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test_mstest/diagnostics.expected rename to csharp/ql/integration-tests/posix/dotnet_test_mstest/diagnostics.expected diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj b/csharp/ql/integration-tests/posix/dotnet_test_mstest/dotnet_test_mstest.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj rename to csharp/ql/integration-tests/posix/dotnet_test_mstest/dotnet_test_mstest.csproj diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/global.json b/csharp/ql/integration-tests/posix/dotnet_test_mstest/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test_mstest/global.json rename to csharp/ql/integration-tests/posix/dotnet_test_mstest/global.json diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/test.py b/csharp/ql/integration-tests/posix/dotnet_test_mstest/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/dotnet_test_mstest/test.py rename to csharp/ql/integration-tests/posix/dotnet_test_mstest/test.py diff --git a/csharp/ql/integration-tests/posix-only/inherit-env-vars/Program.cs b/csharp/ql/integration-tests/posix/inherit-env-vars/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/inherit-env-vars/Program.cs rename to csharp/ql/integration-tests/posix/inherit-env-vars/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/inherit-env-vars/build.sh b/csharp/ql/integration-tests/posix/inherit-env-vars/build.sh similarity index 100% rename from csharp/ql/integration-tests/posix-only/inherit-env-vars/build.sh rename to csharp/ql/integration-tests/posix/inherit-env-vars/build.sh diff --git a/csharp/ql/integration-tests/posix-only/inherit-env-vars/diagnostics.expected b/csharp/ql/integration-tests/posix/inherit-env-vars/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/inherit-env-vars/diagnostics.expected rename to csharp/ql/integration-tests/posix/inherit-env-vars/diagnostics.expected diff --git a/csharp/ql/integration-tests/posix-only/inherit-env-vars/global.json b/csharp/ql/integration-tests/posix/inherit-env-vars/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/inherit-env-vars/global.json rename to csharp/ql/integration-tests/posix/inherit-env-vars/global.json diff --git a/csharp/ql/integration-tests/posix-only/inherit-env-vars/proj.csproj.no_auto b/csharp/ql/integration-tests/posix/inherit-env-vars/proj.csproj.no_auto similarity index 100% rename from csharp/ql/integration-tests/posix-only/inherit-env-vars/proj.csproj.no_auto rename to csharp/ql/integration-tests/posix/inherit-env-vars/proj.csproj.no_auto diff --git a/csharp/ql/integration-tests/posix-only/inherit-env-vars/test.py b/csharp/ql/integration-tests/posix/inherit-env-vars/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/inherit-env-vars/test.py rename to csharp/ql/integration-tests/posix/inherit-env-vars/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies/global.json rename to csharp/ql/integration-tests/posix/standalone_dependencies/global.json diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/standalone.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies/standalone.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies/standalone.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies/standalone.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/global.json rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/global.json diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/standalone1.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/standalone1.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/standalone1.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/standalone1.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/standalone2.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/standalone2.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/standalone2.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/standalone2.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/global.json rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/global.json diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net48.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/net48.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net48.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/net48.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net70.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/net70.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net70.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/net70.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/global.json rename to csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/global.json diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/packages.config b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/packages.config similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/packages.config rename to csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/packages.config diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/test_old.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/test_old.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/test_old.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/test_old.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/test_sdk.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/test_sdk.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/test_sdk.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/test_sdk.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/global.json rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/global.json diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/packages.config b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/packages.config similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/packages.config rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/packages.config diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/test.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/test.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/test.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/test.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/global.json rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget/global.json diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/packages.config b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/packages.config similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/packages.config rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget/packages.config diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/test.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/test.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/test.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget/test.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/CompilationInfo.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/CompilationInfo.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/CompilationInfo.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/CompilationInfo.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/CompilationInfo.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/CompilationInfo.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/CompilationInfo.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/CompilationInfo.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/proj/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/proj/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/proj/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/proj/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/proj/nuget.config b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/proj/nuget.config similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/proj/nuget.config rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/proj/nuget.config diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/proj/proj.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/proj/proj.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/proj/proj.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/proj/proj.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/standalone.sln b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/standalone.sln similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/standalone.sln rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/standalone.sln diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/diagnostics.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/diagnostics.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/diagnostics.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/proj/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/proj/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/nuget.config b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/proj/nuget.config similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/nuget.config rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/proj/nuget.config diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/proj.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/proj/proj.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/proj.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/proj/proj.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/standalone.sln b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/standalone.sln similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/standalone.sln rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/standalone.sln diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/CompilationInfo.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/CompilationInfo.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/CompilationInfo.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/CompilationInfo.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/CompilationInfo.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/CompilationInfo.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/CompilationInfo.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/CompilationInfo.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/diagnostics.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/diagnostics.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/diagnostics.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/proj/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/proj/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/proj/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/proj/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/proj/nuget.config b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/proj/nuget.config similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/proj/nuget.config rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/proj/nuget.config diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/proj/proj.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/proj/proj.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/proj/proj.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/proj/proj.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/standalone.sln b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/standalone.sln similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/standalone.sln rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/standalone.sln diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/nuget.config b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/nuget.config similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/nuget.config rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/nuget.config diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/global.json rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/global.json diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/packages.config b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/packages.config similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/packages.config rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/packages.config diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/test.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/test.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/test.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/test.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.expected rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.expected diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.ql rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.ql diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Program.cs rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/d1/test1.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/d1/test1.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/d1/test1.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/d1/test1.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/d2/test2.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/d2/test2.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/d2/test2.csproj rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/d2/test2.csproj diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/global.json rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/global.json diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/test.py rename to csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/test.py diff --git a/csharp/ql/integration-tests/posix-only/warn_as_error/Errors.expected b/csharp/ql/integration-tests/posix/warn_as_error/Errors.expected similarity index 100% rename from csharp/ql/integration-tests/posix-only/warn_as_error/Errors.expected rename to csharp/ql/integration-tests/posix/warn_as_error/Errors.expected diff --git a/csharp/ql/integration-tests/posix-only/warn_as_error/Errors.ql b/csharp/ql/integration-tests/posix/warn_as_error/Errors.ql similarity index 100% rename from csharp/ql/integration-tests/posix-only/warn_as_error/Errors.ql rename to csharp/ql/integration-tests/posix/warn_as_error/Errors.ql diff --git a/csharp/ql/integration-tests/posix-only/warn_as_error/Program.cs b/csharp/ql/integration-tests/posix/warn_as_error/Program.cs similarity index 100% rename from csharp/ql/integration-tests/posix-only/warn_as_error/Program.cs rename to csharp/ql/integration-tests/posix/warn_as_error/Program.cs diff --git a/csharp/ql/integration-tests/posix-only/warn_as_error/WarnAsError.csproj b/csharp/ql/integration-tests/posix/warn_as_error/WarnAsError.csproj similarity index 100% rename from csharp/ql/integration-tests/posix-only/warn_as_error/WarnAsError.csproj rename to csharp/ql/integration-tests/posix/warn_as_error/WarnAsError.csproj diff --git a/csharp/ql/integration-tests/posix-only/warn_as_error/build.sh b/csharp/ql/integration-tests/posix/warn_as_error/build.sh similarity index 100% rename from csharp/ql/integration-tests/posix-only/warn_as_error/build.sh rename to csharp/ql/integration-tests/posix/warn_as_error/build.sh diff --git a/csharp/ql/integration-tests/posix-only/warn_as_error/global.json b/csharp/ql/integration-tests/posix/warn_as_error/global.json similarity index 100% rename from csharp/ql/integration-tests/posix-only/warn_as_error/global.json rename to csharp/ql/integration-tests/posix/warn_as_error/global.json diff --git a/csharp/ql/integration-tests/posix-only/warn_as_error/test.py b/csharp/ql/integration-tests/posix/warn_as_error/test.py similarity index 100% rename from csharp/ql/integration-tests/posix-only/warn_as_error/test.py rename to csharp/ql/integration-tests/posix/warn_as_error/test.py diff --git a/csharp/ql/integration-tests/windows-only/diag_autobuild_script/build.bat b/csharp/ql/integration-tests/windows/diag_autobuild_script/build.bat similarity index 100% rename from csharp/ql/integration-tests/windows-only/diag_autobuild_script/build.bat rename to csharp/ql/integration-tests/windows/diag_autobuild_script/build.bat diff --git a/csharp/ql/integration-tests/windows-only/diag_autobuild_script/diagnostics.expected b/csharp/ql/integration-tests/windows/diag_autobuild_script/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/windows-only/diag_autobuild_script/diagnostics.expected rename to csharp/ql/integration-tests/windows/diag_autobuild_script/diagnostics.expected diff --git a/csharp/ql/integration-tests/windows-only/diag_autobuild_script/test.py b/csharp/ql/integration-tests/windows/diag_autobuild_script/test.py similarity index 100% rename from csharp/ql/integration-tests/windows-only/diag_autobuild_script/test.py rename to csharp/ql/integration-tests/windows/diag_autobuild_script/test.py diff --git a/csharp/ql/integration-tests/windows-only/diag_multiple_scripts/build.bat b/csharp/ql/integration-tests/windows/diag_multiple_scripts/build.bat similarity index 100% rename from csharp/ql/integration-tests/windows-only/diag_multiple_scripts/build.bat rename to csharp/ql/integration-tests/windows/diag_multiple_scripts/build.bat diff --git a/csharp/ql/integration-tests/windows-only/diag_multiple_scripts/diagnostics.expected b/csharp/ql/integration-tests/windows/diag_multiple_scripts/diagnostics.expected similarity index 100% rename from csharp/ql/integration-tests/windows-only/diag_multiple_scripts/diagnostics.expected rename to csharp/ql/integration-tests/windows/diag_multiple_scripts/diagnostics.expected diff --git a/csharp/ql/integration-tests/windows-only/diag_multiple_scripts/scripts/build.bat b/csharp/ql/integration-tests/windows/diag_multiple_scripts/scripts/build.bat similarity index 100% rename from csharp/ql/integration-tests/windows-only/diag_multiple_scripts/scripts/build.bat rename to csharp/ql/integration-tests/windows/diag_multiple_scripts/scripts/build.bat diff --git a/csharp/ql/integration-tests/windows-only/diag_multiple_scripts/test.py b/csharp/ql/integration-tests/windows/diag_multiple_scripts/test.py similarity index 100% rename from csharp/ql/integration-tests/windows-only/diag_multiple_scripts/test.py rename to csharp/ql/integration-tests/windows/diag_multiple_scripts/test.py diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.expected similarity index 100% rename from csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.expected rename to csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.expected diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql b/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.ql similarity index 100% rename from csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql rename to csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.ql diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Program.cs b/csharp/ql/integration-tests/windows/standalone_dependencies/Program.cs similarity index 100% rename from csharp/ql/integration-tests/windows-only/standalone_dependencies/Program.cs rename to csharp/ql/integration-tests/windows/standalone_dependencies/Program.cs diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/global.json b/csharp/ql/integration-tests/windows/standalone_dependencies/global.json similarity index 100% rename from csharp/ql/integration-tests/windows-only/standalone_dependencies/global.json rename to csharp/ql/integration-tests/windows/standalone_dependencies/global.json diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/standalone.csproj b/csharp/ql/integration-tests/windows/standalone_dependencies/standalone.csproj similarity index 100% rename from csharp/ql/integration-tests/windows-only/standalone_dependencies/standalone.csproj rename to csharp/ql/integration-tests/windows/standalone_dependencies/standalone.csproj diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/test.py b/csharp/ql/integration-tests/windows/standalone_dependencies/test.py similarity index 100% rename from csharp/ql/integration-tests/windows-only/standalone_dependencies/test.py rename to csharp/ql/integration-tests/windows/standalone_dependencies/test.py diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 50a19e99d36..f27c109e269 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,33 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. + +### Minor Analysis Improvements + +* Parameters of public methods in abstract controller-like classes are now considered remote flow sources. +* The reported location of `partial` methods has been changed from the definition to the implementation part. + +## 1.2.0 + +### New Features + +* C# support for `build-mode: none` is now out of beta, and generally available. + +## 1.1.0 + +### Major Analysis Improvements + +* Added support for data flow through side-effects on static fields. For example, when a static field containing an array is updated. + +### Minor Analysis Improvements + +* Added some new `local` source models. Most prominently `System.IO.Path.GetTempPath` and `System.Environment.GetFolderPath`. This might produce more alerts, if the `local` threat model is enabled. +* The extractor has been changed to not skip source files that have already been seen. This has an impact on source files that are compiled multiple times in the build process. Source files with conditional compilation preprocessor directives (such as `#if`) are now extracted for each set of preprocessor symbols that are used during the build process. + ## 1.0.5 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/2024-05-23-static-field-side-effect.md b/csharp/ql/lib/change-notes/2024-05-23-static-field-side-effect.md deleted file mode 100644 index f41dfab76d4..00000000000 --- a/csharp/ql/lib/change-notes/2024-05-23-static-field-side-effect.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Added support for data flow through side-effects on static fields. For example, when a static field containing an array is updated. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-07-10-conditional-compilation.md b/csharp/ql/lib/change-notes/2024-07-10-conditional-compilation.md deleted file mode 100644 index a4a59b2abea..00000000000 --- a/csharp/ql/lib/change-notes/2024-07-10-conditional-compilation.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The extractor has been changed to not skip source files that have already been seen. This has an impact on source files that are compiled multiple times in the build process. Source files with conditional compilation preprocessor directives (such as `#if`) are now extracted for each set of preprocessor symbols that are used during the build process. diff --git a/csharp/ql/lib/change-notes/2024-07-19-added-sources.md b/csharp/ql/lib/change-notes/2024-07-19-added-sources.md deleted file mode 100644 index 43e7b947a98..00000000000 --- a/csharp/ql/lib/change-notes/2024-07-19-added-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added some new `local` source models. Most prominently `System.IO.Path.GetTempPath` and `System.Environment.GetFolderPath`. This might produce more alerts, if the `local` threat model is enabled. diff --git a/csharp/ql/lib/change-notes/2024-08-21-abstract-asp-controller.md b/csharp/ql/lib/change-notes/2024-08-21-abstract-asp-controller.md deleted file mode 100644 index 61d4f6ec600..00000000000 --- a/csharp/ql/lib/change-notes/2024-08-21-abstract-asp-controller.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Parameters of public methods in abstract controller-like classes are now considered remote flow sources. diff --git a/csharp/ql/lib/change-notes/2024-08-21-partial-methods.md b/csharp/ql/lib/change-notes/2024-08-21-partial-methods.md deleted file mode 100644 index f750ccacf57..00000000000 --- a/csharp/ql/lib/change-notes/2024-08-21-partial-methods.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The reported location of `partial` methods has been changed from the definition to the implementation part. diff --git a/csharp/ql/lib/change-notes/2024-09-16-accessor-mad.md b/csharp/ql/lib/change-notes/2024-09-16-accessor-mad.md new file mode 100644 index 00000000000..3ccdcffef24 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-09-16-accessor-mad.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* C#: Add support for MaD directly on properties and indexers using *attributes*. Using `Attribute.Getter` or `Attribute.Setter` in the model `ext` field applies the model to the getter or setter for properties and indexers. Prior to this change `Attribute` models unintentionally worked for property setters (if the property is decorated with the matching attribute). That is, a model that uses the `Attribute` feature directly on a property for a property setter needs to be changed to `Attribute.Setter`. diff --git a/csharp/ql/lib/change-notes/2024-09-16-delete-cil.md b/csharp/ql/lib/change-notes/2024-09-16-delete-cil.md new file mode 100644 index 00000000000..288fc29e5cb --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-09-16-delete-cil.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* C#: Remove all CIL tables and related QL library functionality. diff --git a/csharp/ql/lib/change-notes/2024-09-16-indexer-attributes.md b/csharp/ql/lib/change-notes/2024-09-16-indexer-attributes.md new file mode 100644 index 00000000000..4d1fbee6d4c --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-09-16-indexer-attributes.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C#: Add extractor support for attributes on indexers. diff --git a/csharp/ql/lib/change-notes/released/1.1.0.md b/csharp/ql/lib/change-notes/released/1.1.0.md new file mode 100644 index 00000000000..a02581a221b --- /dev/null +++ b/csharp/ql/lib/change-notes/released/1.1.0.md @@ -0,0 +1,10 @@ +## 1.1.0 + +### Major Analysis Improvements + +* Added support for data flow through side-effects on static fields. For example, when a static field containing an array is updated. + +### Minor Analysis Improvements + +* Added some new `local` source models. Most prominently `System.IO.Path.GetTempPath` and `System.Environment.GetFolderPath`. This might produce more alerts, if the `local` threat model is enabled. +* The extractor has been changed to not skip source files that have already been seen. This has an impact on source files that are compiled multiple times in the build process. Source files with conditional compilation preprocessor directives (such as `#if`) are now extracted for each set of preprocessor symbols that are used during the build process. diff --git a/csharp/ql/lib/change-notes/released/1.2.0.md b/csharp/ql/lib/change-notes/released/1.2.0.md new file mode 100644 index 00000000000..1f6f7da7ece --- /dev/null +++ b/csharp/ql/lib/change-notes/released/1.2.0.md @@ -0,0 +1,5 @@ +## 1.2.0 + +### New Features + +* C# support for `build-mode: none` is now out of beta, and generally available. diff --git a/csharp/ql/lib/change-notes/released/2.0.0.md b/csharp/ql/lib/change-notes/released/2.0.0.md new file mode 100644 index 00000000000..e70aaa595dc --- /dev/null +++ b/csharp/ql/lib/change-notes/released/2.0.0.md @@ -0,0 +1,12 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. + +### Minor Analysis Improvements + +* Parameters of public methods in abstract controller-like classes are now considered remote flow sources. +* The reported location of `partial` methods has been changed from the definition to the implementation part. diff --git a/csharp/ql/lib/cil.qll b/csharp/ql/lib/cil.qll deleted file mode 100644 index b46c328ab91..00000000000 --- a/csharp/ql/lib/cil.qll +++ /dev/null @@ -1,5 +0,0 @@ -/** - * The default QL library for modeling the Common Intermediate Language (CIL). - */ - -import semmle.code.cil.CIL as CIL diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 42da17b3841..0abe6ccede0 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 2.0.0 diff --git a/csharp/ql/lib/dotnet.qll b/csharp/ql/lib/dotnet.qll deleted file mode 100644 index 2814ac41fc1..00000000000 --- a/csharp/ql/lib/dotnet.qll +++ /dev/null @@ -1,5 +0,0 @@ -/** - * The default QL library for modeling .NET definitions for both C# and CIL code. - */ - -deprecated import semmle.code.dotnet.DotNet as DotNet diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 2bba2984c8f..9fdd0511ccd 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 1.0.6-dev +version: 2.0.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/lib/semmle/code/cil/Access.qll b/csharp/ql/lib/semmle/code/cil/Access.qll deleted file mode 100644 index 9c23976543b..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Access.qll +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Provides classes for accesses. - * - * An access is any read or write of a variable. - */ - -private import CIL - -/** An instruction that accesses a variable. */ -deprecated class Access extends Instruction, @cil_access { - /** Gets the declaration referenced by this instruction. */ - Variable getTarget() { cil_access(this, result) } -} - -/** - * An instruction that accesses a variable. - * This class is provided for consistency with the C# data model. - */ -deprecated class VariableAccess extends Access, @cil_access { } - -/** An instruction that reads a variable. */ -deprecated class ReadAccess extends VariableAccess, Expr, @cil_read_access { - override Type getType() { result = this.getTarget().getType() } -} - -/** An instruction yielding an address. */ -deprecated class ReadRef extends Expr, @cil_read_ref { } - -/** An instruction that reads the address of a variable. */ -deprecated class ReadRefAccess extends ReadAccess, ReadRef { } - -/** An instruction that writes a variable. */ -deprecated class WriteAccess extends VariableAccess, @cil_write_access { - /** Gets the expression whose value is used in this variable write. */ - Expr getExpr() { none() } -} - -/** An instruction that accesses a parameter. */ -deprecated class ParameterAccess extends StackVariableAccess, @cil_arg_access { - override MethodParameter getTarget() { result = StackVariableAccess.super.getTarget() } -} - -/** An instruction that reads a parameter. */ -deprecated class ParameterReadAccess extends ParameterAccess, ReadAccess { - override int getPopCount() { result = 0 } -} - -/** An instruction that writes to a parameter. */ -deprecated class ParameterWriteAccess extends ParameterAccess, WriteAccess { - override int getPopCount() { result = 1 } - - override Expr getExpr() { result = this.getOperand(0) } -} - -/** An access to the `this` parameter. */ -deprecated class ThisAccess extends ParameterReadAccess { - ThisAccess() { this.getTarget() instanceof ThisParameter } -} - -/** An instruction that accesses a stack variable. */ -deprecated class StackVariableAccess extends VariableAccess, @cil_stack_access { - override StackVariable getTarget() { result = VariableAccess.super.getTarget() } -} - -/** An instruction that accesses a local variable. */ -deprecated class LocalVariableAccess extends StackVariableAccess, @cil_local_access { - override LocalVariable getTarget() { result = StackVariableAccess.super.getTarget() } -} - -/** An instruction that writes to a local variable. */ -deprecated class LocalVariableWriteAccess extends LocalVariableAccess, WriteAccess { - override int getPopCount() { result = 1 } - - override Expr getExpr() { result = this.getOperand(0) } - - override string getExtra() { result = "L" + this.getTarget().getIndex() } -} - -/** An instruction that reads a local variable. */ -deprecated class LocalVariableReadAccess extends LocalVariableAccess, ReadAccess { - override int getPopCount() { result = 0 } -} - -/** An instruction that accesses a field. */ -deprecated class FieldAccess extends VariableAccess, @cil_field_access { - override Field getTarget() { result = VariableAccess.super.getTarget() } - - override string getExtra() { result = this.getTarget().getName() } - - /** Gets the qualifier of the access, if any. */ - abstract Expr getQualifier(); -} - -/** An instruction that reads a field. */ -abstract deprecated class FieldReadAccess extends FieldAccess, ReadAccess { } - -/** An instruction that writes a field. */ -abstract deprecated class FieldWriteAccess extends FieldAccess, WriteAccess { } diff --git a/csharp/ql/lib/semmle/code/cil/Attribute.qll b/csharp/ql/lib/semmle/code/cil/Attribute.qll deleted file mode 100644 index 431438fb5e9..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Attribute.qll +++ /dev/null @@ -1,45 +0,0 @@ -/** Provides the `Attribute` class. */ - -private import CIL -private import semmle.code.csharp.Location as CS - -/** An attribute to a declaration, such as a method, field, type or parameter. */ -deprecated class Attribute extends Element, @cil_attribute { - /** Gets the declaration this attribute is attached to. */ - Declaration getDeclaration() { cil_attribute(this, result, _) } - - /** Gets the constructor used to construct this attribute. */ - Method getConstructor() { cil_attribute(this, _, result) } - - /** Gets the type of this attribute. */ - Type getType() { result = this.getConstructor().getDeclaringType() } - - override string toString() { result = "[" + this.getType().getName() + "(...)]" } - - /** Gets the value of the `i`th argument of this attribute. */ - string getArgument(int i) { cil_attribute_positional_argument(this, i, result) } - - /** Gets the value of the named argument `name`. */ - string getNamedArgument(string name) { cil_attribute_named_argument(this, name, result) } - - /** Gets an argument of this attribute, if any. */ - string getAnArgument() { result = this.getArgument(_) or result = this.getNamedArgument(_) } - - override CS::Location getLocation() { result = this.getDeclaration().getLocation() } -} - -/** A generic attribute to a declaration. */ -deprecated class GenericAttribute extends Attribute { - private ConstructedType type; - - GenericAttribute() { type = this.getType() } - - /** Gets the total number of type arguments. */ - int getNumberOfTypeArguments() { result = count(int i | cil_type_argument(type, i, _)) } - - /** Gets the `i`th type argument, if any. */ - Type getTypeArgument(int i) { result = type.getTypeArgument(i) } - - /** Get a type argument. */ - Type getATypeArgument() { result = this.getTypeArgument(_) } -} diff --git a/csharp/ql/lib/semmle/code/cil/BasicBlock.qll b/csharp/ql/lib/semmle/code/cil/BasicBlock.qll deleted file mode 100644 index 94126193bcc..00000000000 --- a/csharp/ql/lib/semmle/code/cil/BasicBlock.qll +++ /dev/null @@ -1,401 +0,0 @@ -/** - * Provides classes representing basic blocks. - */ - -private import CIL - -/** - * A basic block, that is, a maximal straight-line sequence of control flow nodes - * without branches or joins. - */ -deprecated class BasicBlock extends Cached::TBasicBlockStart { - /** Gets an immediate successor of this basic block, if any. */ - BasicBlock getASuccessor() { result.getFirstNode() = this.getLastNode().getASuccessor() } - - /** Gets an immediate predecessor of this basic block, if any. */ - BasicBlock getAPredecessor() { result.getASuccessor() = this } - - /** - * Gets an immediate `true` successor, if any. - * - * An immediate `true` successor is a successor that is reached when - * the condition that ends this basic block evaluates to `true`. - * - * Example: - * - * ```csharp - * if (x < 0) - * x = -x; - * ``` - * - * The basic block on line 2 is an immediate `true` successor of the - * basic block on line 1. - */ - BasicBlock getATrueSuccessor() { result.getFirstNode() = this.getLastNode().getTrueSuccessor() } - - /** - * Gets an immediate `false` successor, if any. - * - * An immediate `false` successor is a successor that is reached when - * the condition that ends this basic block evaluates to `false`. - * - * Example: - * - * ```csharp - * if (!(x >= 0)) - * x = -x; - * ``` - * - * The basic block on line 2 is an immediate `false` successor of the - * basic block on line 1. - */ - BasicBlock getAFalseSuccessor() { result.getFirstNode() = this.getLastNode().getFalseSuccessor() } - - /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */ - ControlFlowNode getNode(int pos) { Cached::bbIndex(this.getFirstNode(), result, pos) } - - /** Gets a control flow node in this basic block. */ - ControlFlowNode getANode() { result = this.getNode(_) } - - /** Gets the first control flow node in this basic block. */ - ControlFlowNode getFirstNode() { this = Cached::TBasicBlockStart(result) } - - /** Gets the last control flow node in this basic block. */ - ControlFlowNode getLastNode() { result = this.getNode(this.length() - 1) } - - /** Gets the length of this basic block. */ - int length() { result = strictcount(this.getANode()) } - - /** - * Holds if this basic block strictly dominates basic block `bb`. - * - * That is, all paths reaching basic block `bb` from some entry point - * basic block must go through this basic block (which must be different - * from `bb`). - * - * Example: - * - * ```csharp - * int M(string s) { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The basic block starting on line 2 strictly dominates the - * basic block on line 4 (all paths from the entry point of `M` - * to `return s.Length;` must go through the null check). - */ - predicate strictlyDominates(BasicBlock bb) { bbIDominates+(this, bb) } - - /** - * Holds if this basic block dominates basic block `bb`. - * - * That is, all paths reaching basic block `bb` from some entry point - * basic block must go through this basic block. - * - * Example: - * - * ```csharp - * int M(string s) { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The basic block starting on line 2 dominates the basic - * block on line 4 (all paths from the entry point of `M` to - * `return s.Length;` must go through the null check). - * - * This predicate is *reflexive*, so for example `if (s == null)` dominates - * itself. - */ - predicate dominates(BasicBlock bb) { - bb = this or - this.strictlyDominates(bb) - } - - /** - * Holds if `df` is in the dominance frontier of this basic block. - * That is, this basic block dominates a predecessor of `df`, but - * does not dominate `df` itself. - * - * Example: - * - * ```csharp - * if (x < 0) { - * x = -x; - * if (x > 10) - * x--; - * } - * Console.Write(x); - * ``` - * - * The basic block on line 6 is in the dominance frontier - * of the basic block starting on line 2 because that block - * dominates the basic block on line 4, which is a predecessor of - * `Console.Write(x);`. Also, the basic block starting on line 2 - * does not dominate the basic block on line 6. - */ - predicate inDominanceFrontier(BasicBlock df) { - this.dominatesPredecessor(df) and - not this.strictlyDominates(df) - } - - /** - * Holds if this basic block dominates a predecessor of `df`. - */ - private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) } - - /** - * Gets the basic block that immediately dominates this basic block, if any. - * - * That is, all paths reaching this basic block from some entry point - * basic block must go through the result, which is an immediate basic block - * predecessor of this basic block. - * - * Example: - * - * ```csharp - * int M(string s) { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The basic block starting on line 2 is an immediate dominator of - * the basic block online 4 (all paths from the entry point of `M` - * to `return s.Length;` must go through the null check, and the null check - * is an immediate predecessor of `return s.Length;`). - */ - BasicBlock getImmediateDominator() { bbIDominates(result, this) } - - /** - * Holds if this basic block strictly post-dominates basic block `bb`. - * - * That is, all paths reaching an exit point basic block from basic - * block `bb` must go through this basic block (which must be different - * from `bb`). - * - * Example: - * - * ```csharp - * int M(string s) { - * try { - * return s.Length; - * } - * finally { - * Console.WriteLine("M"); - * } - * } - * ``` - * - * The basic block on line 6 strictly post-dominates the basic block on - * line 3 (all paths to the exit point of `M` from `return s.Length;` - * must go through the `WriteLine` call). - */ - predicate strictlyPostDominates(BasicBlock bb) { bbIPostDominates+(this, bb) } - - /** - * Holds if this basic block post-dominates basic block `bb`. - * - * That is, all paths reaching an exit point basic block from basic - * block `bb` must go through this basic block. - * - * Example: - * - * ```csharp - * int M(string s) { - * try { - * return s.Length; - * } - * finally { - * Console.WriteLine("M"); - * } - * } - * ``` - * - * The basic block on line 6 post-dominates the basic block on line 3 - * (all paths to the exit point of `M` from `return s.Length;` must go - * through the `WriteLine` call). - * - * This predicate is *reflexive*, so for example `Console.WriteLine("M");` - * post-dominates itself. - */ - predicate postDominates(BasicBlock bb) { - this.strictlyPostDominates(bb) or - this = bb - } - - /** - * Holds if this basic block is in a loop in the control flow graph. This - * includes loops created by `goto` statements. This predicate may not hold - * even if this basic block is syntactically inside a `while` loop if the - * necessary back edges are unreachable. - */ - predicate inLoop() { this.getASuccessor+() = this } - - /** Gets a textual representation of this basic block. */ - string toString() { result = this.getFirstNode().toString() } - - /** Gets the location of this basic block. */ - Location getLocation() { result = this.getFirstNode().getLocation() } -} - -/** - * Internal implementation details. - */ -cached -deprecated private module Cached { - /** Internal representation of basic blocks. */ - cached - newtype TBasicBlock = TBasicBlockStart(ControlFlowNode cfn) { startsBB(cfn) } - - /** Holds if `cfn` starts a new basic block. */ - private predicate startsBB(ControlFlowNode cfn) { - not exists(cfn.getAPredecessor()) and exists(cfn.getASuccessor()) - or - cfn.isJoin() - or - cfn.getAPredecessor().isBranch() - } - - /** - * Holds if `succ` is a control flow successor of `pred` within - * the same basic block. - */ - private predicate intraBBSucc(ControlFlowNode pred, ControlFlowNode succ) { - succ = pred.getASuccessor() and - not startsBB(succ) - } - - /** - * Holds if `cfn` is the `i`th node in basic block `bb`. - * - * In other words, `i` is the shortest distance from a node `bb` - * that starts a basic block to `cfn` along the `intraBBSucc` relation. - */ - cached - predicate bbIndex(ControlFlowNode bbStart, ControlFlowNode cfn, int i) = - shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i) -} - -/** - * Holds if the first node of basic block `succ` is a control flow - * successor of the last node of basic block `pred`. - */ -deprecated private predicate succBB(BasicBlock pred, BasicBlock succ) { - succ = pred.getASuccessor() -} - -/** Holds if `dom` is an immediate dominator of `bb`. */ -deprecated predicate bbIDominates(BasicBlock dom, BasicBlock bb) = - idominance(entryBB/1, succBB/2)(_, dom, bb) - -/** Holds if `pred` is a basic block predecessor of `succ`. */ -deprecated private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) } - -/** Holds if `dom` is an immediate post-dominator of `bb`. */ -deprecated predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) = - idominance(exitBB/1, predBB/2)(_, dom, bb) - -/** - * An entry basic block, that is, a basic block whose first node is - * the entry node of a callable. - */ -deprecated class EntryBasicBlock extends BasicBlock { - EntryBasicBlock() { entryBB(this) } -} - -/** Holds if `bb` is an entry basic block. */ -deprecated private predicate entryBB(BasicBlock bb) { - bb.getFirstNode() instanceof MethodImplementation -} - -/** - * An exit basic block, that is, a basic block whose last node is - * an exit node. - */ -deprecated class ExitBasicBlock extends BasicBlock { - ExitBasicBlock() { exitBB(this) } -} - -/** Holds if `bb` is an exit basic block. */ -deprecated private predicate exitBB(BasicBlock bb) { not exists(bb.getLastNode().getASuccessor()) } - -/** - * A basic block with more than one predecessor. - */ -deprecated class JoinBlock extends BasicBlock { - JoinBlock() { this.getFirstNode().isJoin() } -} - -/** A basic block that terminates in a condition, splitting the subsequent control flow. */ -deprecated class ConditionBlock extends BasicBlock { - ConditionBlock() { - exists(BasicBlock succ | - succ = this.getATrueSuccessor() - or - succ = this.getAFalseSuccessor() - ) - } - - /** - * Holds if basic block `controlled` is controlled by this basic block with - * Boolean value `testIsTrue`. That is, `controlled` can only be reached from - * the callable entry point by going via the true edge (`testIsTrue = true`) - * or false edge (`testIsTrue = false`) out of this basic block. - */ - predicate controls(BasicBlock controlled, boolean testIsTrue) { - /* - * For this block to control the block `controlled` with `testIsTrue` the following must be true: - * Execution must have passed through the test i.e. `this` must strictly dominate `controlled`. - * Execution must have passed through the `testIsTrue` edge leaving `this`. - * - * Although "passed through the true edge" implies that `this.getATrueSuccessor()` dominates `controlled`, - * the reverse is not true, as flow may have passed through another edge to get to `this.getATrueSuccessor()` - * so we need to assert that `this.getATrueSuccessor()` dominates `controlled` *and* that - * all predecessors of `this.getATrueSuccessor()` are either `this` or dominated by `this.getATrueSuccessor()`. - * - * For example, in the following C# snippet: - * ```csharp - * if (x) - * controlled; - * false_successor; - * uncontrolled; - * ``` - * `false_successor` dominates `uncontrolled`, but not all of its predecessors are `this` (`if (x)`) - * or dominated by itself. Whereas in the following code: - * ```csharp - * if (x) - * while (controlled) - * also_controlled; - * false_successor; - * uncontrolled; - * ``` - * the block `while controlled` is controlled because all of its predecessors are `this` (`if (x)`) - * or (in the case of `also_controlled`) dominated by itself. - * - * The additional constraint on the predecessors of the test successor implies - * that `this` strictly dominates `controlled` so that isn't necessary to check - * directly. - */ - - exists(BasicBlock succ | - this.isCandidateSuccessor(succ, testIsTrue) and - succ.dominates(controlled) - ) - } - - private predicate isCandidateSuccessor(BasicBlock succ, boolean testIsTrue) { - ( - testIsTrue = true and succ = this.getATrueSuccessor() - or - testIsTrue = false and succ = this.getAFalseSuccessor() - ) and - forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != this | succ.dominates(pred)) - } -} diff --git a/csharp/ql/lib/semmle/code/cil/CIL.qll b/csharp/ql/lib/semmle/code/cil/CIL.qll deleted file mode 100644 index db0018d8216..00000000000 --- a/csharp/ql/lib/semmle/code/cil/CIL.qll +++ /dev/null @@ -1,23 +0,0 @@ -/** Provides the core CIL data model. */ - -import semmle.code.csharp.Location -import Element -import Instruction -import Instructions -import Access -import Variable -import Declaration -import Generics -import Type -import Types -import Method -import InstructionGroups -import BasicBlock -import Handler -import ControlFlow -import DataFlow -import Attribute -import Stubs -import CustomModifierReceiver -import Parameterizable -import semmle.code.cil.Ssa diff --git a/csharp/ql/lib/semmle/code/cil/CallableReturns.qll b/csharp/ql/lib/semmle/code/cil/CallableReturns.qll deleted file mode 100644 index 4fc49adcf44..00000000000 --- a/csharp/ql/lib/semmle/code/cil/CallableReturns.qll +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Provides predicates for analysing the return values of callables. - */ - -private import CIL - -cached -private module Cached { - /** Holds if method `m` always returns null. */ - cached - deprecated predicate alwaysNullMethod(Method m) { - forex(Expr e | m.canReturn(e) | alwaysNullExpr(e)) - } - - /** Holds if method `m` always returns non-null. */ - cached - deprecated predicate alwaysNotNullMethod(Method m) { - forex(Expr e | m.canReturn(e) | alwaysNotNullExpr(e)) - } - - /** Holds if method `m` always throws an exception. */ - cached - deprecated predicate alwaysThrowsMethod(Method m) { - m.hasBody() and - not exists(m.getImplementation().getAnInstruction().(Return)) - } - - /** Holds if method `m` always throws an exception of type `t`. */ - cached - deprecated predicate alwaysThrowsException(Method m, Type t) { - alwaysThrowsMethod(m) and - forex(Throw ex | ex = m.getImplementation().getAnInstruction() | t = ex.getExceptionType()) - } -} - -import Cached - -pragma[noinline] -deprecated private predicate alwaysNullVariableUpdate(VariableUpdate vu) { - forex(Expr src | src = vu.getSource() | alwaysNullExpr(src)) -} - -/** Holds if expression `expr` always evaluates to `null`. */ -deprecated private predicate alwaysNullExpr(Expr expr) { - expr instanceof NullLiteral - or - alwaysNullMethod(expr.(StaticCall).getTarget()) - or - forex(Ssa::Definition def | - expr = any(Ssa::Definition def0 | def = def0.getAnUltimateDefinition()).getARead() - | - alwaysNullVariableUpdate(def.getVariableUpdate()) - ) -} - -pragma[noinline] -deprecated private predicate alwaysNotNullVariableUpdate(VariableUpdate vu) { - forex(Expr src | src = vu.getSource() | alwaysNotNullExpr(src)) -} - -/** Holds if expression `expr` always evaluates to non-null. */ -deprecated private predicate alwaysNotNullExpr(Expr expr) { - expr instanceof Opcodes::NewObj - or - expr instanceof Literal and not expr instanceof NullLiteral - or - alwaysNotNullMethod(expr.(StaticCall).getTarget()) - or - forex(Ssa::Definition def | - expr = any(Ssa::Definition def0 | def = def0.getAnUltimateDefinition()).getARead() - | - alwaysNotNullVariableUpdate(def.getVariableUpdate()) - ) -} diff --git a/csharp/ql/lib/semmle/code/cil/ConsistencyChecks.qll b/csharp/ql/lib/semmle/code/cil/ConsistencyChecks.qll deleted file mode 100644 index 612e94711a2..00000000000 --- a/csharp/ql/lib/semmle/code/cil/ConsistencyChecks.qll +++ /dev/null @@ -1,787 +0,0 @@ -/** - * Provides checks for the consistency of the data model and database. - */ - -private import CIL -private import csharp as CS -private import semmle.code.csharp.commons.QualifiedName - -private newtype ConsistencyCheck = - MissingEntityCheck() or - deprecated TypeCheck(Type t) or - deprecated CfgCheck(ControlFlowNode n) or - deprecated DeclarationCheck(Declaration d) or - MissingCSharpCheck(CS::Declaration d) - -/** - * A consistency violation in the database or data model. - */ -abstract deprecated class ConsistencyViolation extends ConsistencyCheck { - abstract string toString(); - - abstract string getMessage(); -} - -/** - * A check that is deliberately disabled. - */ -abstract deprecated class DisabledCheck extends ConsistencyViolation { - DisabledCheck() { none() } -} - -/** - * A consistency violation on a control flow node. - */ -abstract deprecated class CfgViolation extends ConsistencyViolation, CfgCheck { - ControlFlowNode node; - - CfgViolation() { this = CfgCheck(node) } - - override string toString() { result = node.toString() } -} - -/** - * A consistency violation in a specific instruction. - */ -abstract deprecated class InstructionViolation extends CfgViolation, CfgCheck { - Instruction instruction; - - InstructionViolation() { this = CfgCheck(instruction) } - - private string getInstructionsUpTo() { - result = - concat(Instruction i | - i.getIndex() <= instruction.getIndex() and - i.getImplementation() = instruction.getImplementation() - | - i.toString() + " [push: " + i.getPushCount() + ", pop: " + i.getPopCount() + "]", "; " - order by - i.getIndex() - ) - } - - override string toString() { - result = - instruction.getImplementation().getMethod().toStringWithTypes() + ": " + - instruction.toString() + ", " + this.getInstructionsUpTo() - } -} - -/** - * A literal that does not have exactly one `getValue()`. - */ -deprecated class MissingValue extends InstructionViolation { - MissingValue() { exists(Literal l | l = instruction | count(l.getValue()) != 1) } - - override string getMessage() { result = "Literal has invalid getValue()" } -} - -/** - * A call that does not have exactly one `getTarget()`. - */ -deprecated class MissingCallTarget extends InstructionViolation { - MissingCallTarget() { - exists(Call c | c = instruction | - count(c.getTarget()) != 1 and not c instanceof Opcodes::Calli - or - count(c.(Opcodes::Calli).getTargetType()) != 1 and c instanceof Opcodes::Calli - ) - } - - override string getMessage() { result = "Call has invalid target" } -} - -/** - * An instruction that has not been assigned a specific QL class. - */ -deprecated class MissingOpCode extends InstructionViolation { - MissingOpCode() { not exists(instruction.getOpcodeName()) } - - override string getMessage() { - result = "Opcode " + instruction.getOpcode() + " is missing a QL class" - } - - override string toString() { - result = "Unknown instruction in " + instruction.getImplementation().getMethod().toString() - } -} - -/** - * An instruction that is missing an operand. It means that there is no instruction which pushes - * a value onto the stack for this instruction to pop. - * - * If this fails, it means that the `getPopCount`/`getPushCount`/control flow graph has failed. - * It could also mean that the target of a call has failed and has not determined the - * correct number of arguments. - */ -deprecated class MissingOperand extends InstructionViolation { - MissingOperand() { - exists(int op | op in [0 .. instruction.getPopCount() - 1] | - not exists(instruction.getOperand(op)) and not instruction instanceof DeadInstruction - ) - } - - int getMissingOperand() { - result in [0 .. instruction.getPopCount() - 1] and - not exists(instruction.getOperand(result)) - } - - override string getMessage() { - result = "This instruction is missing operand " + this.getMissingOperand() - } -} - -/** - * A dead instruction, not reachable from any entry point. - * These should not exist, however it turns out that the Mono compiler sometimes - * emits them. - */ -deprecated class DeadInstruction extends Instruction { - DeadInstruction() { not exists(EntryPoint e | e.getASuccessor+() = this) } -} - -/** - * An instruction that is not reachable from any entry point. - * - * If this fails, it means that the calculation of the call graph is incorrect. - * Disabled, because Mono compiler sometimes emits dead instructions. - */ -deprecated class DeadInstructionViolation extends InstructionViolation, DisabledCheck { - DeadInstructionViolation() { instruction instanceof DeadInstruction } - - override string getMessage() { result = "This instruction is not reachable" } -} - -deprecated class YesNoBranch extends ConditionalBranch { - YesNoBranch() { not this instanceof Opcodes::Switch } -} - -/** - * A branch instruction that does not have exactly 2 successors. - */ -deprecated class InvalidBranchSuccessors extends InstructionViolation { - InvalidBranchSuccessors() { - // Mono compiler sometimes generates branches to the next instruction, which is just wrong. - // However it is valid CIL. - exists(YesNoBranch i | i = instruction | not count(i.getASuccessor()) in [1 .. 2]) - } - - override string getMessage() { - result = "Conditional branch has " + count(instruction.getASuccessor()) + " successors" - } -} - -/** - * An instruction that has a true/false successor but is not a branch. - */ -deprecated class OnlyYesNoBranchHasTrueFalseSuccessors extends InstructionViolation { - OnlyYesNoBranchHasTrueFalseSuccessors() { - (exists(instruction.getTrueSuccessor()) or exists(instruction.getFalseSuccessor())) and - not instruction instanceof YesNoBranch - } - - override string getMessage() { result = "This instruction has getTrue/FalseSuccessor()" } -} - -/** - * An unconditional branch instruction that has more than one successor. - */ -deprecated class UnconditionalBranchSuccessors extends InstructionViolation { - UnconditionalBranchSuccessors() { - exists(UnconditionalBranch i | i = instruction | count(i.getASuccessor()) != 1) - } - - override string getMessage() { - result = "Unconditional branch has " + count(instruction.getASuccessor()) + " successors" - } -} - -/** - * A branch instruction that does not have a true successor. - */ -deprecated class NoTrueSuccessor extends InstructionViolation { - NoTrueSuccessor() { exists(YesNoBranch i | i = instruction | not exists(i.getTrueSuccessor())) } - - override string getMessage() { result = "Missing a true successor" } -} - -/** - * A branch instruction that does not have a false successor. - */ -deprecated class NoFalseSuccessor extends InstructionViolation { - NoFalseSuccessor() { exists(YesNoBranch i | i = instruction | not exists(i.getFalseSuccessor())) } - - override string getMessage() { result = "Missing a false successor" } -} - -/** - * An instruction whose true successor is not a successor. - */ -deprecated class TrueSuccessorIsSuccessor extends InstructionViolation { - TrueSuccessorIsSuccessor() { - exists(instruction.getTrueSuccessor()) and - not instruction.getTrueSuccessor() = instruction.getASuccessor() - } - - override string getMessage() { result = "True successor isn't a successor" } -} - -/** - * An instruction whose false successor is not a successor. - */ -deprecated class FalseSuccessorIsSuccessor extends InstructionViolation { - FalseSuccessorIsSuccessor() { - exists(instruction.getFalseSuccessor()) and - not instruction.getFalseSuccessor() = instruction.getASuccessor() - } - - override string getMessage() { result = "True successor isn't a successor" } -} - -/** - * An access that does not have exactly one target. - */ -deprecated class AccessMissingTarget extends InstructionViolation { - AccessMissingTarget() { exists(Access i | i = instruction | count(i.getTarget()) != 1) } - - override string getMessage() { result = "Access has invalid getTarget()" } -} - -/** - * A catch handler that doesn't have a caught exception type. - */ -deprecated class CatchHandlerMissingType extends CfgViolation { - CatchHandlerMissingType() { exists(CatchHandler h | h = node | not exists(h.getCaughtType())) } - - override string getMessage() { result = "Catch handler missing caught type" } -} - -/** - * A CFG node that does not have a stack size. - */ -deprecated class MissingStackSize extends CfgViolation { - MissingStackSize() { - ( - not exists(node.getStackSizeAfter()) or - not exists(node.getStackSizeBefore()) - ) and - not node instanceof DeadInstruction - } - - override string getMessage() { result = "Inconsistent stack size" } -} - -/** - * A CFG node that does not have exactly one stack size. - * Disabled because inconsistent stack sizes have been observed. - */ -deprecated class InvalidStackSize extends CfgViolation, DisabledCheck { - InvalidStackSize() { - ( - count(node.getStackSizeAfter()) != 1 or - count(node.getStackSizeBefore()) != 1 - ) and - not node instanceof DeadInstruction - } - - override string getMessage() { - result = - "Inconsistent stack sizes " + count(node.getStackSizeBefore()) + " before and " + - count(node.getStackSizeAfter()) + " after" - } -} - -/** - * A CFG node that does not have exactly 1 `getPopCount()`. - */ -deprecated class InconsistentPopCount extends CfgViolation { - InconsistentPopCount() { count(node.getPopCount()) != 1 } - - override string getMessage() { - result = "Cfg node has " + count(node.getPopCount()) + " pop counts" - } -} - -/** - * A CFG node that does not have exactly one `getPushCount()`. - */ -deprecated class InconsistentPushCount extends CfgViolation { - InconsistentPushCount() { count(node.getPushCount()) != 1 } - - override string getMessage() { - result = "Cfg node has " + count(node.getPushCount()) + " push counts" - } -} - -/** - * A return instruction that does not have a stack size of 0 after it. - */ -deprecated class InvalidReturn extends InstructionViolation { - InvalidReturn() { instruction instanceof Return and instruction.getStackSizeAfter() != 0 } - - override string getMessage() { result = "Return has invalid stack size" } -} - -/** - * A throw instruction that does not have a stack size of 0 after it. - */ -deprecated class InvalidThrow extends InstructionViolation, DisabledCheck { - InvalidThrow() { instruction instanceof Throw and instruction.getStackSizeAfter() != 0 } - - override string getMessage() { - result = "Throw has invalid stack size: " + instruction.getStackSizeAfter() - } -} - -/** - * A field access where the field is "static" but the instruction is "instance". - */ -deprecated class StaticFieldTarget extends InstructionViolation { - StaticFieldTarget() { - exists(FieldAccess i | i = instruction | - (i instanceof Opcodes::Stfld or i instanceof Opcodes::Stfld) and - i.getTarget().isStatic() - ) - } - - override string getMessage() { result = "Inconsistent static field" } -} - -/** - * A branch without a target. - */ -deprecated class BranchWithoutTarget extends InstructionViolation { - BranchWithoutTarget() { - instruction = any(Branch b | not exists(b.getTarget()) and not b instanceof Opcodes::Switch) - } - - override string getMessage() { result = "Branch without target" } -} - -/** - * A consistency violation in a type. - */ -deprecated class TypeViolation extends ConsistencyViolation, TypeCheck { - /** Gets the type containing the violation. */ - Type getType() { this = TypeCheck(result) } - - override string toString() { result = this.getType().toString() } - - abstract override string getMessage(); -} - -/** - * A type that has both type arguments and type parameters. - */ -deprecated class TypeIsBothConstructedAndUnbound extends TypeViolation { - TypeIsBothConstructedAndUnbound() { - this.getType() instanceof ConstructedGeneric and this.getType() instanceof UnboundGeneric - } - - override string getMessage() { result = "Type is both constructed and unbound" } -} - -/** - * The location of a constructed generic type should be the same - * as the location of its unbound generic type. - */ -deprecated class InconsistentTypeLocation extends TypeViolation { - InconsistentTypeLocation() { - this.getType().getLocation() != this.getType().getUnboundDeclaration().getLocation() - } - - override string getMessage() { result = "Inconsistent constructed type location" } -} - -/** - * A constructed type that does not match its unbound generic type. - */ -deprecated class TypeParameterMismatch extends TypeViolation { - TypeParameterMismatch() { - this.getType().(ConstructedGeneric).getNumberOfTypeArguments() != - this.getType().getUnboundType().(UnboundGeneric).getNumberOfTypeParameters() - } - - override string getMessage() { - result = - "Constructed type (" + this.getType().toStringWithTypes() + ") has " + - this.getType().(ConstructedGeneric).getNumberOfTypeArguments() + - " type arguments and unbound type (" + this.getType().getUnboundType().toStringWithTypes() + - ") has " + this.getType().getUnboundType().(UnboundGeneric).getNumberOfTypeParameters() + - " type parameters" - } -} - -/** - * A consistency violation in a method. - */ -deprecated class MethodViolation extends ConsistencyViolation, DeclarationCheck { - /** Gets the method containing the violation. */ - Method getMethod() { this = DeclarationCheck(result) } - - override string toString() { result = this.getMethod().toString() } - - override string getMessage() { none() } -} - -/** - * The location of a constructed method should be equal to the - * location of its unbound generic. - */ -deprecated class InconsistentMethodLocation extends MethodViolation { - InconsistentMethodLocation() { - this.getMethod().getLocation() != this.getMethod().getUnboundDeclaration().getLocation() - } - - override string getMessage() { result = "Inconsistent constructed method location" } -} - -/** - * A constructed method that does not match its unbound method. - */ -deprecated class ConstructedMethodTypeParams extends MethodViolation { - ConstructedMethodTypeParams() { - this.getMethod().(ConstructedGeneric).getNumberOfTypeArguments() != - this.getMethod().getUnboundDeclaration().(UnboundGeneric).getNumberOfTypeParameters() - } - - override string getMessage() { - result = - "The constructed method " + this.getMethod().toStringWithTypes() + - " does not match unbound method " + - this.getMethod().getUnboundDeclaration().toStringWithTypes() - } -} - -/** - * A violation marking an entity that should be present but is not. - */ -abstract deprecated class MissingEntityViolation extends ConsistencyViolation, MissingEntityCheck { - override string toString() { result = "Missing entity" } -} - -/** - * The type `object` is missing from the database. - */ -deprecated class MissingObjectViolation extends MissingEntityViolation { - MissingObjectViolation() { - exists(this) and - not exists(ObjectType o) - } - - override string getMessage() { result = "Object missing" } -} - -/** - * An override that is invalid because the overridden method is not in a base class. - */ -deprecated class InvalidOverride extends MethodViolation { - private Method base; - - InvalidOverride() { - base = this.getMethod().getOverriddenMethod() and - not this.getMethod().getDeclaringType().getABaseType+() = base.getDeclaringType() and - base.getDeclaringType().isUnboundDeclaration() // Bases classes of constructed types aren't extracted properly. - } - - override string getMessage() { - exists(string qualifier, string type | - base.getDeclaringType().hasFullyQualifiedName(qualifier, type) - | - result = - "Overridden method from " + getQualifiedName(qualifier, type) + " is not in a base type" - ) - } -} - -/** - * A pointer type that does not have a pointee type. - */ -deprecated class InvalidPointerType extends TypeViolation { - InvalidPointerType() { - exists(PointerType p | p = this.getType() | count(p.getReferentType()) != 1) - } - - override string getMessage() { result = "Invalid Pointertype.getPointeeType()" } -} - -/** - * An array with an invalid `getElementType`. - */ -deprecated class ArrayTypeMissingElement extends TypeViolation { - ArrayTypeMissingElement() { - exists(ArrayType t | t = this.getType() | count(t.getElementType()) != 1) - } - - override string getMessage() { result = "Invalid ArrayType.getElementType()" } -} - -/** - * An array with an invalid `getRank`. - */ -deprecated class ArrayTypeInvalidRank extends TypeViolation { - ArrayTypeInvalidRank() { exists(ArrayType t | t = this.getType() | not t.getRank() > 0) } - - override string getMessage() { result = "Invalid ArrayType.getRank()" } -} - -/** - * A type should have at most one kind, except for missing referenced types - * where the interface/class is unknown. - */ -deprecated class KindViolation extends TypeViolation { - KindViolation() { - count(typeKind(this.getType())) != 1 and - exists(this.getType().getLocation()) - } - - override string getMessage() { - result = "Invalid kinds on type: " + concat(typeKind(this.getType()), " ") - } -} - -/** - * The type of a kind must be consistent between a constructed generic and its - * unbound generic. - */ -deprecated class InconsistentKind extends TypeViolation { - InconsistentKind() { - typeKind(this.getType()) != typeKind(this.getType().getUnboundDeclaration()) - } - - override string getMessage() { result = "Inconsistent type kind of source declaration" } -} - -deprecated private string typeKind(Type t) { - t instanceof Interface and result = "interface" - or - t instanceof Class and result = "class" - or - t instanceof TypeParameter and result = "type parameter" - or - t instanceof ArrayType and result = "array" - or - t instanceof PointerType and result = "pointer" -} - -/** - * A violation in a `Member`. - */ -abstract deprecated class DeclarationViolation extends ConsistencyViolation, DeclarationCheck { - abstract override string getMessage(); - - /** Gets the member containing the potential violation. */ - Declaration getDeclaration() { this = DeclarationCheck(result) } - - override string toString() { result = this.getDeclaration().toString() } -} - -/** - * Properties that have no accessors. - */ -deprecated class PropertyWithNoAccessors extends DeclarationViolation { - PropertyWithNoAccessors() { - exists(Property p | p = this.getDeclaration() | not exists(p.getAnAccessor())) - } - - override string getMessage() { result = "Property has no accessors" } -} - -/** - * An expression that have an unexpected push count. - */ -deprecated class ExprPushCount extends InstructionViolation { - ExprPushCount() { - instruction instanceof Expr and - not instruction instanceof Opcodes::Dup and - if instruction instanceof Call - then not instruction.getPushCount() in [0 .. 1] - else instruction.(Expr).getPushCount() != 1 - } - - override string getMessage() { - result = "Instruction has unexpected push count " + instruction.getPushCount() - } -} - -/** - * An expression that does not have exactly one type. - * Note that calls with no return have type `System.Void`. - */ -deprecated class ExprMissingType extends InstructionViolation { - ExprMissingType() { - // Don't have types for the following op codes: - not instruction instanceof Opcodes::Ldftn and - not instruction instanceof Opcodes::Localloc and - not instruction instanceof Opcodes::Ldvirtftn and - not instruction instanceof Opcodes::Arglist and - not instruction instanceof Opcodes::Refanytype and - instruction.getPushCount() >= 1 and - count(instruction.getType()) != 1 and - // OS specific (osx) specific inconsistency - not instruction - .getImplementation() - .getMethod() - .hasFullyQualifiedName("System.Runtime.InteropServices.RuntimeInformation", - "get_OSDescription") - } - - override string getMessage() { result = "Expression is missing getType()" } -} - -/** - * An instruction that has a push count of 0, yet is still used as an operand - */ -deprecated class InvalidExpressionViolation extends InstructionViolation { - InvalidExpressionViolation() { - instruction.getPushCount() = 0 and - exists(Instruction expr | instruction = expr.getAnOperand()) - } - - override string getMessage() { - result = "This instruction is used as an operand but pushes no values" - } -} - -/** - * A type that has multiple entities with the same qualified name in `System`. - * .NET Core does sometimes duplicate types, so this check is disabled. - */ -deprecated class TypeMultiplyDefined extends TypeViolation, DisabledCheck { - TypeMultiplyDefined() { - this.getType().getParent().getName() = "System" and - not this.getType() instanceof ConstructedGeneric and - not this.getType() instanceof ArrayType and - this.getType().isPublic() and - count(Type t | - not t instanceof ConstructedGeneric and - t.toStringWithTypes() = this.getType().toStringWithTypes() - ) != 1 - } - - override string getMessage() { - result = - "This type (" + this.getType().toStringWithTypes() + ") has " + - count(Type t | - not t instanceof ConstructedGeneric and - t.toStringWithTypes() = this.getType().toStringWithTypes() - ) + " entities" - } -} - -/** - * A C# declaration which is expected to have a corresponding CIL declaration, but for some reason does not. - */ -deprecated class MissingCilDeclaration extends ConsistencyViolation, MissingCSharpCheck { - MissingCilDeclaration() { - exists(CS::Declaration decl | this = MissingCSharpCheck(decl) | - expectedCilDeclaration(decl) and - not exists(Declaration d | decl = d.getCSharpDeclaration()) - ) - } - - CS::Declaration getDeclaration() { this = MissingCSharpCheck(result) } - - override string getMessage() { - result = - "Cannot locate CIL for " + this.getDeclaration().toStringWithTypes() + " of class " + - this.getDeclaration().getPrimaryQlClasses() - } - - override string toString() { result = this.getDeclaration().toStringWithTypes() } -} - -/** - * Holds if the C# declaration is expected to have a CIl declaration. - */ -deprecated private predicate expectedCilDeclaration(CS::Declaration decl) { - decl = decl.getUnboundDeclaration() and - not decl instanceof CS::ArrayType and - decl.getALocation() instanceof CS::Assembly and - not decl.(CS::Modifiable).isInternal() and - not decl.(CS::Constructor).getNumberOfParameters() = 0 and // These are sometimes implicit - not decl.(CS::Method).getReturnType() instanceof CS::UnknownType and - not exists(CS::Parameter p | p = decl.(CS::Parameterizable).getAParameter() | - not expectedCilDeclaration(p) - ) and - not decl instanceof CS::AnonymousClass and - (decl instanceof CS::Parameter implies expectedCilDeclaration(decl.(CS::Parameter).getType())) and - (decl instanceof CS::Parameter implies expectedCilDeclaration(decl.getParent())) and - (decl instanceof CS::Member implies expectedCilDeclaration(decl.getParent())) and - ( - decl instanceof CS::Field - or - decl instanceof CS::Property - or - decl instanceof CS::ValueOrRefType - or - decl instanceof CS::Event - or - decl instanceof CS::Constructor - or - decl instanceof CS::Destructor - or - decl instanceof CS::Operator - or - decl instanceof CS::Method - or - decl instanceof CS::Parameter - ) -} - -/** A member with an invalid name. */ -deprecated class MemberWithInvalidName extends DeclarationViolation { - MemberWithInvalidName() { - exists(string name | name = this.getDeclaration().(Member).getName() | - exists(name.indexOf(".")) and - not name = ".ctor" and - not name = ".cctor" - ) - } - - override string getMessage() { - result = "Invalid name " + this.getDeclaration().(Member).getName() - } -} - -deprecated class ConstructedSourceDeclarationMethod extends MethodViolation { - Method method; - - ConstructedSourceDeclarationMethod() { - method = this.getMethod() and - method = method.getUnboundDeclaration() and - ( - method instanceof ConstructedGeneric or - method.getDeclaringType() instanceof ConstructedGeneric - ) - } - - override string getMessage() { - result = "Source declaration " + method.toStringWithTypes() + " is constructed" - } -} - -/** A declaration with multiple labels. */ -deprecated class DeclarationWithMultipleLabels extends DeclarationViolation { - DeclarationWithMultipleLabels() { - exists(Declaration d | this = DeclarationCheck(d) | strictcount(d.getLabel()) > 1) - } - - override string getMessage() { - result = "Multiple labels " + concat(this.getDeclaration().getLabel(), ", ") - } -} - -/** A declaration without a label. */ -deprecated class DeclarationWithoutLabel extends DeclarationViolation { - DeclarationWithoutLabel() { - exists(Declaration d | this = DeclarationCheck(d) | - d.isUnboundDeclaration() and - not d instanceof TypeParameter and - not exists(d.getLabel()) and - (d instanceof Callable or d instanceof Type) - ) - } - - override string getMessage() { result = "No label" } -} diff --git a/csharp/ql/lib/semmle/code/cil/ControlFlow.qll b/csharp/ql/lib/semmle/code/cil/ControlFlow.qll deleted file mode 100644 index a2f5fcffa67..00000000000 --- a/csharp/ql/lib/semmle/code/cil/ControlFlow.qll +++ /dev/null @@ -1,179 +0,0 @@ -/** - * Provides classes for control flow. - */ - -private import CIL - -/** A node in the control flow graph. */ -deprecated class ControlFlowNode extends @cil_controlflow_node { - /** Gets a textual representation of this control flow node. */ - string toString() { none() } - - /** Gets the location of this control flow node. */ - Location getLocation() { none() } - - /** - * Gets the number of items this node pushes onto the stack. - * This value is either 0 or 1, except for the instruction `dup` - * which pushes 2 values onto the stack. - */ - int getPushCount() { result = 0 } - - /** Gets the number of items this node pops from the stack. */ - int getPopCount() { result = 0 } - - /** Gets a successor of this node, if any. */ - final Instruction getASuccessor() { result = this.getASuccessorType(_) } - - /** Gets a true successor of this node, if any. */ - final Instruction getTrueSuccessor() { result = this.getASuccessorType(any(TrueFlow f)) } - - /** Gets a false successor of this node, if any. */ - final Instruction getFalseSuccessor() { result = this.getASuccessorType(any(FalseFlow f)) } - - /** Gets a successor to this node, of type `type`, if any. */ - cached - Instruction getASuccessorType(FlowType t) { none() } - - /** Gets a predecessor of this node, if any. */ - ControlFlowNode getAPredecessor() { result.getASuccessor() = this } - - /** - * Gets an instruction that supplies the `i`th operand to this instruction. - * Note that this can be multi-valued. - */ - cached - ControlFlowNode getOperand(int i) { - // Immediate predecessor pushes the operand - i in [0 .. this.getPopCount() - 1] and - result = this.getAPredecessor() and - i < result.getPushCount() - or - // Transitive predecessor pushes the operand - exists(ControlFlowNode mid, int pushes | this.getOperandRec(mid, i, pushes) | - pushes - mid.getStackDelta() < result.getPushCount() and - result = mid.getAPredecessor() - ) - } - - /** - * Gets the type of the `i`th operand. Unlike `getOperand(i).getType()`, this - * predicate takes into account when there are multiple possible operands with - * different types. - */ - Type getOperandType(int i) { - strictcount(this.getOperand(i)) = 1 and - result = this.getOperand(i).getType() - or - strictcount(this.getOperand(i)) = 2 and - exists(ControlFlowNode op1, ControlFlowNode op2, Type t2 | - op1 = this.getOperand(i) and - op2 = this.getOperand(i) and - op1 != op2 and - result = op1.getType() and - t2 = op2.getType() - | - result = t2 - or - result.(PrimitiveType).getUnderlyingType().getConversionIndex() > - t2.(PrimitiveType).getUnderlyingType().getConversionIndex() - or - op2 instanceof NullLiteral - ) - } - - /** Gets an operand of this instruction, if any. */ - ControlFlowNode getAnOperand() { result = this.getOperand(_) } - - /** Gets an expression that consumes the output of this instruction on the stack. */ - Instruction getParentExpr() { this = result.getAnOperand() } - - /** - * Holds if `pred` is a transitive predecessor of this instruction, this - * instruction pops operand `i`, `pushes` additional pushes are required - * for operand `i` at node `pred`, and no instruction between (and including) - * `pred` and this instruction is a push for operand `i`. - */ - private predicate getOperandRec(ControlFlowNode pred, int i, int pushes) { - // Invariant: no node is a push for operand `i` - pushes >= pred.getPushCount() and - ( - i in [0 .. this.getPopCount() - 1] and - pred = this.getAPredecessor() and - pushes = i - or - exists(ControlFlowNode mid, int pushes0 | this.getOperandRec(mid, i, pushes0) | - pushes = pushes0 - mid.getStackDelta() and - // This is a guard to prevent ill formed programs - // and other logic errors going into an infinite loop. - pushes <= this.getImplementation().getStackSize() and - pred = mid.getAPredecessor() - ) - ) - } - - private int getStackDelta() { result = this.getPushCount() - this.getPopCount() } - - /** Gets the stack size before this instruction. */ - int getStackSizeBefore() { result = this.getAPredecessor().getStackSizeAfter() } - - /** Gets the stack size after this instruction. */ - final int getStackSizeAfter() { - // This is a guard to prevent ill formed programs - // and other logic errors going into an infinite loop. - result in [0 .. this.getImplementation().getStackSize()] and - result = this.getStackSizeBefore() + this.getStackDelta() - } - - /** Gets the method containing this control flow node. */ - MethodImplementation getImplementation() { none() } - - /** - * Gets the type of the item pushed onto the stack, if any. - * - * If called via `ControlFlowNode::getOperand(i).getType()`, consider using - * `ControlFlowNode::getOperandType(i)` instead. - */ - cached - Type getType() { none() } - - /** Holds if this control flow node has more than one predecessor. */ - predicate isJoin() { strictcount(this.getAPredecessor()) > 1 } - - /** Holds if this control flow node has more than one successor. */ - predicate isBranch() { strictcount(this.getASuccessor()) > 1 } -} - -/** - * A control flow entry point. Either a method (`MethodImplementation`) or a handler (`Handler`). - * - * Handlers are control flow nodes because they push the handled exception onto the stack. - */ -deprecated class EntryPoint extends ControlFlowNode, @cil_entry_point { - override int getStackSizeBefore() { result = 0 } -} - -deprecated private newtype TFlowType = - TNormalFlow() or - TTrueFlow() or - TFalseFlow() - -/** A type of control flow. Either normal flow (`NormalFlow`), true flow (`TrueFlow`) or false flow (`FalseFlow`). */ -abstract deprecated class FlowType extends TFlowType { - abstract string toString(); -} - -/** Normal control flow. */ -deprecated class NormalFlow extends FlowType, TNormalFlow { - override string toString() { result = "" } -} - -/** True control flow. */ -deprecated class TrueFlow extends FlowType, TTrueFlow { - override string toString() { result = "true" } -} - -/** False control flow. */ -deprecated class FalseFlow extends FlowType, TFalseFlow { - override string toString() { result = "false" } -} diff --git a/csharp/ql/lib/semmle/code/cil/CustomModifierReceiver.qll b/csharp/ql/lib/semmle/code/cil/CustomModifierReceiver.qll deleted file mode 100644 index b18a51702cf..00000000000 --- a/csharp/ql/lib/semmle/code/cil/CustomModifierReceiver.qll +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Provides a class to represent `modopt` and `modreq` declarations. - */ - -private import CIL -private import dotnet - -/** - * A class to represent entities that can receive custom modifiers. Custom modifiers can be attached to - * - the type of a `Field`, - * - the return type of a `Method` or `Property`, - * - the type of parameters. - * A `CustomModifierReceiver` is therefore either a `Field`, `Property`, `Method`, or `Parameter`. - */ -deprecated class CustomModifierReceiver extends Declaration, @cil_custom_modifier_receiver { - /** Holds if this targeted type has `modifier` applied as `modreq`. */ - predicate hasRequiredCustomModifier(Type modifier) { cil_custom_modifiers(this, modifier, 1) } - - /** Holds if this targeted type has `modifier` applied as `modopt`. */ - predicate hasOptionalCustomModifier(Type modifier) { cil_custom_modifiers(this, modifier, 0) } -} diff --git a/csharp/ql/lib/semmle/code/cil/DataFlow.qll b/csharp/ql/lib/semmle/code/cil/DataFlow.qll deleted file mode 100644 index 9da00db0ade..00000000000 --- a/csharp/ql/lib/semmle/code/cil/DataFlow.qll +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Provides a collection of building blocks and utilities for data flow. - */ - -private import CIL - -/** - * A node in the data flow graph. - * - * Either an instruction (`Instruction`), a method return (`Method`), or a variable (`Variable`). - */ -deprecated class DataFlowNode extends @cil_dataflow_node { - /** Gets a textual representation of this data flow node. */ - abstract string toString(); - - /** Gets the type of this data flow node. */ - Type getType() { none() } - - /** Gets the method that contains this dataflow node. */ - Method getMethod() { none() } - - /** Gets the location of this dataflow node. */ - Location getLocation() { none() } -} - -/** A node that updates a variable. */ -abstract deprecated class VariableUpdate extends DataFlowNode { - /** Gets the value assigned, if any. */ - abstract DataFlowNode getSource(); - - /** Gets the variable that is updated. */ - abstract Variable getVariable(); - - /** Holds if this variable update happens at index `i` in basic block `bb`. */ - abstract predicate updatesAt(BasicBlock bb, int i); -} - -deprecated private class MethodParameterDef extends VariableUpdate, MethodParameter { - override MethodParameter getSource() { result = this } - - override MethodParameter getVariable() { result = this } - - override predicate updatesAt(BasicBlock bb, int i) { - bb.(EntryBasicBlock).getANode().getImplementation().getMethod() = this.getMethod() and - i = -1 - } -} - -deprecated private class VariableWrite extends VariableUpdate, WriteAccess { - override Expr getSource() { result = this.getExpr() } - - override Variable getVariable() { result = this.getTarget() } - - override predicate updatesAt(BasicBlock bb, int i) { this = bb.getNode(i) } -} - -deprecated private class MethodOutOrRefTarget extends VariableUpdate, Call { - int parameterIndex; - - MethodOutOrRefTarget() { this.getTarget().getRawParameter(parameterIndex).hasOutFlag() } - - override Variable getVariable() { - result = this.getRawArgument(parameterIndex).(ReadAccess).getTarget() - } - - override Expr getSource() { none() } - - override predicate updatesAt(BasicBlock bb, int i) { this = bb.getNode(i) } -} diff --git a/csharp/ql/lib/semmle/code/cil/Declaration.qll b/csharp/ql/lib/semmle/code/cil/Declaration.qll deleted file mode 100644 index 9c0343fb34c..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Declaration.qll +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Provides classes for declarations and members. - */ - -import CIL -private import dotnet -private import semmle.code.csharp.Member as CS -private import semmle.code.csharp.commons.QualifiedName - -/** - * A declaration. Either a member (`Member`) or a variable (`Variable`). - */ -deprecated class Declaration extends DotNet::Declaration, Element, @cil_declaration { - /** Gets an attribute (for example `[Obsolete]`) of this declaration, if any. */ - Attribute getAnAttribute() { result.getDeclaration() = this } - - /** - * Gets the C# declaration corresponding to this CIL declaration, if any. - * Note that this is only for source/unconstructed declarations. - */ - CS::Declaration getCSharpDeclaration() { - result = toCSharpNonTypeParameter(this) or - result = toCSharpTypeParameter(this) - } - - override Declaration getUnboundDeclaration() { result = this } - - deprecated override predicate hasQualifiedName(string qualifier, string name) { - exists(string dqualifier, string dname | - this.getDeclaringType().hasQualifiedName(dqualifier, dname) and - qualifier = getQualifiedName(dqualifier, dname) - ) and - name = this.getName() - } - - override predicate hasFullyQualifiedName(string qualifier, string name) { - exists(string dqualifier, string dname | - this.getDeclaringType().hasFullyQualifiedName(dqualifier, dname) and - qualifier = getQualifiedName(dqualifier, dname) - ) and - name = this.getName() - } -} - -deprecated private CS::Declaration toCSharpNonTypeParameter(Declaration d) { - result.(DotNet::Declaration).matchesHandle(d) -} - -deprecated private CS::TypeParameter toCSharpTypeParameter(TypeParameter tp) { - toCSharpTypeParameterJoin(tp, result.getIndex(), result.getGeneric()) -} - -pragma[nomagic] -deprecated private predicate toCSharpTypeParameterJoin( - TypeParameter tp, int i, CS::UnboundGeneric ug -) { - exists(TypeContainer tc | - tp.getIndex() = i and - tc = tp.getGeneric() and - ug = toCSharpNonTypeParameter(tc) - ) -} - -/** - * A member of a type. Either a type (`Type`), a method (`Method`), a property (`Property`), or an event (`Event`). - */ -deprecated class Member extends DotNet::Member, Declaration, @cil_member { - override predicate isPublic() { cil_public(this) } - - override predicate isProtected() { cil_protected(this) } - - override predicate isPrivate() { cil_private(this) } - - override predicate isInternal() { cil_internal(this) } - - override predicate isSealed() { cil_sealed(this) } - - override predicate isAbstract() { cil_abstract(this) } - - override predicate isStatic() { cil_static(this) } - - /** Holds if this member has a security attribute. */ - predicate hasSecurity() { cil_security(this) } - - override Location getLocation() { result = this.getDeclaringType().getLocation() } -} - -/** A property. */ -deprecated class Property extends DotNet::Property, Member, CustomModifierReceiver, @cil_property { - override string getName() { cil_property(this, _, result, _) } - - /** Gets the type of this property. */ - override Type getType() { cil_property(this, _, _, result) } - - override ValueOrRefType getDeclaringType() { cil_property(this, result, _, _) } - - /** Gets the getter of this property, if any. */ - override Getter getGetter() { this = result.getProperty() } - - /** Gets the setter of this property, if any. */ - override Setter getSetter() { this = result.getProperty() } - - /** Gets an accessor of this property. */ - Accessor getAnAccessor() { result = this.getGetter() or result = this.getSetter() } - - override string toString() { result = "property " + this.getName() } - - override string toStringWithTypes() { - result = - this.getType().toStringWithTypes() + " " + this.getDeclaringType().toStringWithTypes() + "." + - this.getName() - } -} - -/** A property that is trivial (wraps a field). */ -deprecated class TrivialProperty extends Property { - TrivialProperty() { - this.getGetter().(TrivialGetter).getField() = this.getSetter().(TrivialSetter).getField() - } - - /** Gets the underlying field of this property. */ - Field getField() { result = this.getGetter().(TrivialGetter).getField() } -} - -/** An event. */ -deprecated class Event extends DotNet::Event, Member, @cil_event { - override string getName() { cil_event(this, _, result, _) } - - /** Gets the type of this event. */ - Type getType() { cil_event(this, _, _, result) } - - override ValueOrRefType getDeclaringType() { cil_event(this, result, _, _) } - - /** Gets the add event accessor. */ - Method getAddEventAccessor() { cil_adder(this, result) } - - /** Gets the remove event accessor. */ - Method getRemoveEventAccessor() { cil_remover(this, result) } - - /** Gets the raiser. */ - Method getRaiser() { cil_raiser(this, result) } - - override string toString() { result = "event " + this.getName() } - - override string toStringWithTypes() { - result = this.getDeclaringType().toStringWithTypes() + "." + this.getName() - } -} diff --git a/csharp/ql/lib/semmle/code/cil/Element.qll b/csharp/ql/lib/semmle/code/cil/Element.qll deleted file mode 100644 index 58e6a76b315..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Element.qll +++ /dev/null @@ -1,15 +0,0 @@ -/** Provides the `Element` class, the base class of all CIL program elements. */ - -private import dotnet -import semmle.code.csharp.Location - -/** An element. */ -deprecated class Element extends DotNet::Element, @cil_element { - override Location getLocation() { result = bestLocation(this) } -} - -cached -deprecated private Location bestLocation(Element e) { - result = e.getALocation() and - (e.getALocation().getFile().isPdbSourceFile() implies result.getFile().isPdbSourceFile()) -} diff --git a/csharp/ql/lib/semmle/code/cil/Generics.qll b/csharp/ql/lib/semmle/code/cil/Generics.qll deleted file mode 100644 index 0a929e8dc6d..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Generics.qll +++ /dev/null @@ -1,59 +0,0 @@ -/** Provides classes for generic types and methods. */ - -private import CIL -private import dotnet - -/** - * A generic declaration. Either an unbound generic (`UnboundGeneric`) or a - * constructed generic (`ConstructedGeneric`). - */ -deprecated class Generic extends DotNet::Generic, Declaration, TypeContainer { - Generic() { - cil_type_parameter(this, _, _) or - cil_type_argument(this, _, _) - } -} - -/** An unbound generic type or method. */ -deprecated class UnboundGeneric extends Generic, DotNet::UnboundGeneric { - UnboundGeneric() { cil_type_parameter(this, _, _) } - - final override TypeParameter getTypeParameter(int n) { cil_type_parameter(this, n, result) } -} - -/** A constructed generic type or method. */ -deprecated class ConstructedGeneric extends Generic, DotNet::ConstructedGeneric { - ConstructedGeneric() { cil_type_argument(this, _, _) } - - final override Type getTypeArgument(int n) { cil_type_argument(this, n, result) } -} - -/** Gets the concatenation of the `getName()` of type arguments. */ -language[monotonicAggregates] -deprecated private string getTypeArgumentsNames(ConstructedGeneric cg) { - result = strictconcat(Type t, int i | t = cg.getTypeArgument(i) | t.getName(), "," order by i) -} - -/** An unbound generic type. */ -deprecated class UnboundGenericType extends UnboundGeneric, Type { } - -/** An unbound generic method. */ -deprecated class UnboundGenericMethod extends UnboundGeneric, Method { } - -/** A constructed generic type. */ -deprecated class ConstructedType extends ConstructedGeneric, Type { - final override UnboundGenericType getUnboundGeneric() { result = this.getUnboundType() } - - override predicate isInterface() { this.getUnboundType().isInterface() } - - override predicate isClass() { this.getUnboundType().isClass() } - - final override string getName() { - result = this.getUndecoratedName() + "<" + getTypeArgumentsNames(this) + ">" - } -} - -/** A constructed generic method. */ -deprecated class ConstructedMethod extends ConstructedGeneric, Method { - final override UnboundGenericMethod getUnboundGeneric() { result = this.getUnboundMethod() } -} diff --git a/csharp/ql/lib/semmle/code/cil/Handler.qll b/csharp/ql/lib/semmle/code/cil/Handler.qll deleted file mode 100644 index b408222742d..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Handler.qll +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Provides classes for different types of handler. - */ - -private import CIL - -/** - * A handler is a piece of code that can be executed out of sequence, for example - * when an instruction generates an exception or leaves a `finally` block. - * - * Each handler has a scope representing the block of instructions guarded by - * this handler (corresponding to a C# `try { ... }` block), and a block of instructions - * to execute when the handler is triggered (corresponding to a `catch` or `finally` block). - * - * Handlers are entry points (`EntryPoint`) so that they can - * provide values on the stack, for example the value of the current exception. This is why - * some handlers have a push count of 1. - * - * Either a finally handler (`FinallyHandler`), filter handler (`FilterHandler`), - * catch handler (`CatchHandler`), or a fault handler (`FaultHandler`). - */ -deprecated class Handler extends Element, EntryPoint, @cil_handler { - override MethodImplementation getImplementation() { cil_handler(this, result, _, _, _, _, _) } - - /** Gets the 0-based index of this handler. Handlers are evaluated in this sequence. */ - int getIndex() { cil_handler(this, _, result, _, _, _, _) } - - /** Gets the first instruction in the `try` block of this handler. */ - Instruction getTryStart() { cil_handler(this, _, _, _, result, _, _) } - - /** Gets the last instruction in the `try` block of this handler. */ - Instruction getTryEnd() { cil_handler(this, _, _, _, _, result, _) } - - /** Gets the first instruction in the `catch`/`finally` block. */ - Instruction getHandlerStart() { cil_handler(this, _, _, _, _, _, result) } - - /** - * Holds if the instruction `i` is in the scope of this handler. - */ - predicate isInScope(Instruction i) { - i.getImplementation() = this.getImplementation() and - i.getIndex() in [this.getTryStart().getIndex() .. this.getTryEnd().getIndex()] - } - - override string toString() { none() } - - override Instruction getASuccessorType(FlowType t) { - result = this.getHandlerStart() and - t instanceof NormalFlow - } - - /** Gets the type of the caught exception, if any. */ - Type getCaughtType() { cil_handler_type(this, result) } - - override Location getLocation() { result = this.getTryStart().getLocation() } -} - -/** A handler corresponding to a `finally` block. */ -deprecated class FinallyHandler extends Handler, @cil_finally_handler { - override string toString() { result = "finally {...}" } -} - -/** A handler corresponding to a `where()` clause. */ -deprecated class FilterHandler extends Handler, @cil_filter_handler { - override string toString() { result = "where (...)" } - - /** Gets the filter clause - the start of a sequence of instructions to evaluate the filter function. */ - Instruction getFilterClause() { cil_handler_filter(this, result) } - - override int getPushCount() { result = 1 } -} - -/** A handler corresponding to a `catch` clause. */ -deprecated class CatchHandler extends Handler, @cil_catch_handler { - override string toString() { result = "catch(" + this.getCaughtType().getName() + ") {...}" } - - override int getPushCount() { result = 1 } -} - -/** A handler for memory faults. */ -deprecated class FaultHandler extends Handler, @cil_fault_handler { - override string toString() { result = "fault {...}" } -} diff --git a/csharp/ql/lib/semmle/code/cil/Instruction.qll b/csharp/ql/lib/semmle/code/cil/Instruction.qll deleted file mode 100644 index 5edba5a15ce..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Instruction.qll +++ /dev/null @@ -1,70 +0,0 @@ -/** Provides the `Instruction` class. */ - -private import CIL - -/** An instruction. */ -deprecated class Instruction extends Element, ControlFlowNode, DataFlowNode, @cil_instruction { - override string toString() { result = this.getOpcodeName() } - - /** Gets a more verbose textual representation of this instruction. */ - string toStringExtra() { - result = this.getIndex() + ": " + this.getOpcodeName() + this.getExtraStr() - } - - /** Gets the method containing this instruction. */ - override MethodImplementation getImplementation() { cil_instruction(this, _, _, result) } - - override Method getMethod() { result = this.getImplementation().getMethod() } - - /** - * Gets the index of this instruction. - * Instructions are sequenced from 0. - */ - int getIndex() { cil_instruction(this, _, result, _) } - - /** Gets the opcode of this instruction. */ - final int getOpcode() { cil_instruction(this, result, _, _) } - - /** Gets the opcode name of this instruction, for example `ldnull`. */ - string getOpcodeName() { none() } - - /** Gets an extra field to display for this instruction, if any. */ - string getExtra() { none() } - - private string getExtraStr() { - if exists(this.getExtra()) then result = " " + this.getExtra() else result = "" - } - - /** Gets the declaration accessed by this instruction, if any. */ - Declaration getAccess() { cil_access(this, result) } - - /** Gets a successor instruction to this instruction. */ - override Instruction getASuccessorType(FlowType t) { - t instanceof NormalFlow and - this.canFlowNext() and - result = this.getImplementation().getInstruction(this.getIndex() + 1) - } - - /** Holds if this instruction passes control flow into the next instruction. */ - predicate canFlowNext() { any() } - - /** - * Gets the `i`th handler that applies to this instruction. - * Indexed from 0. - */ - Handler getHandler(int i) { - result.isInScope(this) and - result.getIndex() = - rank[i + 1](int hi | exists(Handler h | h.isInScope(this) and hi = h.getIndex())) - } - - override Type getType() { result = ControlFlowNode.super.getType() } - - override Location getALocation() { - cil_instruction_location(this, result) // The source code, if available - or - result = this.getImplementation().getLocation() // The containing assembly - } - - override Location getLocation() { result = Element.super.getLocation() } -} diff --git a/csharp/ql/lib/semmle/code/cil/InstructionGroups.qll b/csharp/ql/lib/semmle/code/cil/InstructionGroups.qll deleted file mode 100644 index c43c06b72b4..00000000000 --- a/csharp/ql/lib/semmle/code/cil/InstructionGroups.qll +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Provides classes representing various classes of expression - * and other instructions. - */ - -private import CIL -private import dotnet - -/** - * An instruction that pushes a value onto the stack. - */ -deprecated class Expr extends DotNet::Expr, Instruction, @cil_expr { - override int getPushCount() { result = 1 } - - override Type getType() { result = Instruction.super.getType() } - - override Method getEnclosingCallable() { result = this.getImplementation().getMethod() } - - /** - * The "parent" of a CIL expression is taken to be the instruction - * that consumes the value pushed by this instruction. - */ - override Expr getParent() { this = result.getAnOperand() } -} - -/** An instruction that changes control flow. */ -deprecated class Branch extends Instruction, @cil_jump { - /** Gets the instruction that is jumped to. */ - Instruction getTarget() { cil_jump(this, result) } - - override string getExtra() { result = this.getTarget().getIndex() + ":" } -} - -/** An instruction that unconditionally jumps to another instruction. */ -deprecated class UnconditionalBranch extends Branch, @cil_unconditional_jump { - override Instruction getASuccessorType(FlowType t) { - t instanceof NormalFlow and result = this.getTarget() - } - - override predicate canFlowNext() { none() } -} - -/** An instruction that jumps to a target based on a condition. */ -deprecated class ConditionalBranch extends Branch, @cil_conditional_jump { - override Instruction getASuccessorType(FlowType t) { - t instanceof TrueFlow and result = this.getTarget() - or - t instanceof FalseFlow and result = this.getImplementation().getInstruction(this.getIndex() + 1) - } - - override int getPushCount() { result = 0 } -} - -/** An expression with two operands. */ -deprecated class BinaryExpr extends Expr, @cil_binary_expr { - override int getPopCount() { result = 2 } -} - -/** An expression with one operand. */ -deprecated class UnaryExpr extends Expr, @cil_unary_expr { - override int getPopCount() { result = 1 } - - /** Gets the operand of this unary expression. */ - Expr getOperand() { result = this.getOperand(0) } -} - -/** A binary expression that compares two values. */ -deprecated class ComparisonOperation extends BinaryExpr, @cil_comparison_operation { - override BoolType getType() { exists(result) } -} - -/** A binary arithmetic expression. */ -deprecated class BinaryArithmeticExpr extends BinaryExpr, @cil_binary_arithmetic_operation { - override Type getType() { - exists(Type t0, Type t1 | - t0 = this.getOperandType(0).getUnderlyingType() and - t1 = this.getOperandType(1).getUnderlyingType() - | - t0 = t1 and result = t0 - or - t0.getConversionIndex() < t1.getConversionIndex() and result = t1 - or - t0.getConversionIndex() > t1.getConversionIndex() and result = t0 - ) - } -} - -/** A binary bitwise expression. */ -deprecated class BinaryBitwiseOperation extends BinaryExpr, @cil_binary_bitwise_operation { - // This is wrong but efficient - should depend on the types of the operands. - override IntType getType() { exists(result) } -} - -/** A unary bitwise expression. */ -deprecated class UnaryBitwiseOperation extends UnaryExpr, @cil_unary_bitwise_operation { - // This is wrong but efficient - should depend on the types of the operands. - override IntType getType() { exists(result) } -} - -/** A unary expression that converts a value from one primitive type to another. */ -deprecated class Conversion extends UnaryExpr, @cil_conversion_operation { - /** Gets the expression being converted. */ - Expr getExpr() { result = this.getOperand(0) } -} - -/** A branch that leaves the scope of a `Handler`. */ -deprecated class Leave extends UnconditionalBranch, @cil_leave_any { } - -/** An expression that pushes a literal value onto the stack. */ -deprecated class Literal extends DotNet::Literal, Expr, @cil_literal { - /** Gets the pushed value. */ - override string getValue() { cil_value(this, result) } - - override string getExtra() { result = this.getValue() } -} - -/** An integer literal. */ -deprecated class IntLiteral extends Literal, @cil_ldc_i { - override string getExtra() { none() } - - override IntType getType() { exists(result) } -} - -/** An expression that pushes a `float`/`Single`. */ -deprecated class FloatLiteral extends Literal, @cil_ldc_r { } - -/** An expression that pushes a `null` value onto the stack. */ -deprecated class NullLiteral extends Literal, @cil_ldnull { } - -/** An expression that pushes a string onto the stack. */ -deprecated class StringLiteral extends Literal, @cil_ldstr { } - -/** A branch with one operand. */ -deprecated class UnaryBranch extends ConditionalBranch, @cil_unary_jump { - override int getPopCount() { result = 1 } - - override int getPushCount() { result = 0 } -} - -/** A branch with two operands. */ -deprecated class BinaryBranch extends ConditionalBranch, @cil_binary_jump { - override int getPopCount() { result = 2 } - - override int getPushCount() { result = 0 } -} - -/** A call. */ -deprecated class Call extends Expr, DotNet::Call, @cil_call_any { - /** Gets the method that is called. */ - override Method getTarget() { cil_access(this, result) } - - override Method getARuntimeTarget() { result = this.getTarget().getAnOverrider*() } - - override string getExtra() { result = this.getTarget().getFullyQualifiedName() } - - /** - * Gets the return type of the call. Methods that do not return a value - * return the `void` type, `System.Void`, although the value of `getPushCount` is - * 0 in this case. - */ - override Type getType() { result = this.getTarget().getReturnType() } - - // The number of items popped/pushed from the stack - // depends on the target of the call. - override int getPopCount() { result = this.getTarget().getCallPopCount() } - - override int getPushCount() { result = this.getTarget().getCallPushCount() } - - /** - * Holds if this is a "tail call", meaning that control does not return to the - * calling method. - */ - predicate isTailCall() { - this.getImplementation().getInstruction(this.getIndex() - 1) instanceof Opcodes::Tail - } - - /** Holds if this call is virtual and could go to an overriding method. */ - predicate isVirtual() { none() } - - override Expr getRawArgument(int i) { result = this.getOperand(this.getPopCount() - i - 1) } - - /** Gets the qualifier of this call, if any. */ - Expr getQualifier() { result = this.getRawArgument(0) and not this.getTarget().isStatic() } - - override Expr getArgument(int i) { - if this.getTarget().isStatic() - then result = this.getRawArgument(i) - else ( - result = this.getRawArgument(i + 1) and i >= 0 - ) - } - - override Expr getArgumentForParameter(DotNet::Parameter param) { - exists(int index | - result = this.getRawArgument(index) and param = this.getTarget().getRawParameter(index) - ) - } -} - -/** A tail call. */ -deprecated class TailCall extends Call { - TailCall() { this.isTailCall() } - - override predicate canFlowNext() { none() } -} - -/** A call to a static target. */ -deprecated class StaticCall extends Call { - StaticCall() { not this.isVirtual() } -} - -/** A call to a virtual target. */ -deprecated class VirtualCall extends Call { - VirtualCall() { this.isVirtual() } -} - -/** A read of an array element. */ -deprecated class ReadArrayElement extends BinaryExpr, @cil_read_array { - /** Gets the array being read. */ - Expr getArray() { result = this.getOperand(1) } - - /** Gets the index into the array. */ - Expr getArrayIndex() { result = this.getOperand(0) } -} - -/** A write of an array element. */ -deprecated class WriteArrayElement extends Instruction, @cil_write_array { - override int getPushCount() { result = 0 } - - override int getPopCount() { result = 3 } -} - -/** A `return` statement. */ -deprecated class Return extends Instruction, @cil_ret { - /** Gets the expression being returned, if any. */ - Expr getExpr() { result = this.getOperand(0) } - - override predicate canFlowNext() { none() } -} - -/** A `throw` statement. */ -deprecated class Throw extends Instruction, DotNet::Throw, @cil_throw_any { - override Expr getExpr() { result = this.getOperand(0) } - - /** Gets the type of the exception being thrown. */ - Type getExceptionType() { result = this.getOperandType(0) } - - override predicate canFlowNext() { none() } -} - -/** Stores a value at an address/location. */ -deprecated class StoreIndirect extends Instruction, @cil_stind { - override int getPopCount() { result = 2 } - - /** Gets the location to store the value at. */ - Expr getAddress() { result = this.getOperand(1) } - - /** Gets the value to store. */ - Expr getExpr() { result = this.getOperand(0) } -} - -/** Loads a value from an address/location. */ -deprecated class LoadIndirect extends UnaryExpr, @cil_ldind { } diff --git a/csharp/ql/lib/semmle/code/cil/Instructions.qll b/csharp/ql/lib/semmle/code/cil/Instructions.qll deleted file mode 100644 index 6de4e718416..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Instructions.qll +++ /dev/null @@ -1,1432 +0,0 @@ -/** - * Provides classes representing individual opcodes. - * - * See ECMA-335 (https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf) - * pages 32-101 for a detailed explanation of these instructions. - */ - -private import CIL -private import semmle.code.dotnet.Variable as DotNet - -deprecated module Opcodes { - /** An `ldc.i4.m1` instruction. */ - class Ldc_i4_m1 extends IntLiteral, @cil_ldc_i4_m1 { - override string getOpcodeName() { result = "ldc.i4.m1" } - - override string getValue() { result = "-1" } - } - - /** An `ldc.i4.0` instruction. */ - class Ldc_i4_0 extends IntLiteral, @cil_ldc_i4_0 { - override string getOpcodeName() { result = "ldc.i4.0" } - - override string getValue() { result = "0" } - } - - /** An `ldc.i4.1` instruction. */ - class Ldc_i4_1 extends IntLiteral, @cil_ldc_i4_1 { - override string getOpcodeName() { result = "ldc.i4.1" } - - override string getValue() { result = "1" } - } - - /** An `ldc.i4.2` instruction. */ - class Ldc_i4_2 extends IntLiteral, @cil_ldc_i4_2 { - override string getOpcodeName() { result = "ldc.i4.2" } - - override string getValue() { result = "2" } - } - - /** An `ldc.i4.3` instruction. */ - class Ldc_i4_3 extends IntLiteral, @cil_ldc_i4_3 { - override string getOpcodeName() { result = "ldc.i4.3" } - - override string getValue() { result = "3" } - } - - /** An `ldc.i4.4` instruction. */ - class Ldc_i4_4 extends IntLiteral, @cil_ldc_i4_4 { - override string getOpcodeName() { result = "ldc.i4.4" } - - override string getValue() { result = "4" } - } - - /** An `ldc.i4.5` instruction. */ - class Ldc_i4_5 extends IntLiteral, @cil_ldc_i4_5 { - override string getOpcodeName() { result = "ldc.i4.5" } - - override string getValue() { result = "5" } - } - - /** An `ldc.i4.6` instruction. */ - class Ldc_i4_6 extends IntLiteral, @cil_ldc_i4_6 { - override string getOpcodeName() { result = "ldc.i4.6" } - - override string getValue() { result = "6" } - } - - /** An `ldc.i4.7` instruction. */ - class Ldc_i4_7 extends IntLiteral, @cil_ldc_i4_7 { - override string getOpcodeName() { result = "ldc.i4.7" } - - override string getValue() { result = "7" } - } - - /** An `ldc.i4.8` instruction. */ - class Ldc_i4_8 extends IntLiteral, @cil_ldc_i4_8 { - override string getOpcodeName() { result = "ldc.i4.8" } - - override string getValue() { result = "8" } - } - - /** An `ldc.i4` instruction. */ - class Ldc_i4 extends IntLiteral, @cil_ldc_i4 { - override string getOpcodeName() { result = "ldc.i4" } - - override string getExtra() { result = this.getValue() } - } - - /** An `ldc.i8` instruction. */ - class Ldc_i8 extends IntLiteral, @cil_ldc_i8 { - override string getOpcodeName() { result = "ldc.i8" } - - override string getExtra() { result = this.getValue() } - } - - /** An `ldc.i4.s` instruction. */ - class Ldc_i4_s extends IntLiteral, @cil_ldc_i4_s { - override string getOpcodeName() { result = "ldc.i4.s" } - - override string getExtra() { result = this.getValue() } - } - - /** An `ldnull` instruction. */ - class Ldnull extends Literal, @cil_ldnull { - override string getOpcodeName() { result = "ldnull" } - - override string getValue() { result = "null" } - - override string getExtra() { none() } - - override Type getType() { result instanceof ObjectType } - } - - /** An `ldc.r4` instruction. */ - class Ldc_r4 extends FloatLiteral, @cil_ldc_r4 { - override string getOpcodeName() { result = "ldc.r4" } - - override string getExtra() { result = this.getValue() } - - override Type getType() { result instanceof FloatType } - } - - /** An `ldc.r8` instruction. */ - class Ldc_r8 extends FloatLiteral, @cil_ldc_r8 { - override string getOpcodeName() { result = "ldc.r8" } - - override string getExtra() { result = this.getValue() } - - override Type getType() { result instanceof DoubleType } - } - - /** An `add` instruction. */ - class Add extends BinaryArithmeticExpr, @cil_add { - override string getOpcodeName() { result = "add" } - } - - /** An `add.ovf` instruction. */ - class Add_ovf extends BinaryArithmeticExpr, @cil_add_ovf { - override string getOpcodeName() { result = "add.ovf" } - } - - /** An `add.ovf.un` instruction. */ - class Add_ovf_un extends BinaryArithmeticExpr, @cil_add_ovf_un { - override string getOpcodeName() { result = "add.ovf.un" } - } - - /** A `sub` instruction. */ - class Sub extends BinaryArithmeticExpr, @cil_sub { - override string getOpcodeName() { result = "sub" } - } - - /** A `sub.ovf` instruction. */ - class Sub_ovf extends BinaryArithmeticExpr, @cil_sub_ovf { - override string getOpcodeName() { result = "sub.ovf" } - } - - /** A `sub.ovf.un` instruction. */ - class Sub_ovf_un extends BinaryArithmeticExpr, @cil_sub_ovf_un { - override string getOpcodeName() { result = "sub.ovf.un" } - } - - /** A `mul` instruction. */ - class Mul extends BinaryArithmeticExpr, @cil_mul { - override string getOpcodeName() { result = "mul" } - } - - /** A `mul.ovf` instruction. */ - class Mul_ovf extends BinaryArithmeticExpr, @cil_mul_ovf { - override string getOpcodeName() { result = "mul.ovf" } - } - - /** A `mul.ovf.un` instruction. */ - class Mul_ovf_un extends BinaryArithmeticExpr, @cil_mul_ovf_un { - override string getOpcodeName() { result = "mul.ovf.un" } - } - - /** A `div` instruction. */ - class Div extends BinaryArithmeticExpr, @cil_div { - override string getOpcodeName() { result = "div" } - } - - /** A `div.un` instruction. */ - class Div_un extends BinaryArithmeticExpr, @cil_div_un { - override string getOpcodeName() { result = "div.un" } - } - - /** A `rem` instruction. */ - class Rem extends BinaryArithmeticExpr, @cil_rem { - override string getOpcodeName() { result = "rem" } - } - - /** A `rem.un` instruction. */ - class Rem_un extends BinaryArithmeticExpr, @cil_rem_un { - override string getOpcodeName() { result = "rem.un" } - } - - /** A `neg` instruction. */ - class Neg extends UnaryExpr, @cil_neg { - override string getOpcodeName() { result = "neg" } - - override NumericType getType() { - result = this.getOperandType(0) - or - this.getOperandType(0) instanceof Enum and result instanceof IntType - } - } - - /** An `and` instruction. */ - class And extends BinaryBitwiseOperation, @cil_and { - override string getOpcodeName() { result = "and" } - } - - /** An `or` instruction. */ - class Or extends BinaryBitwiseOperation, @cil_or { - override string getOpcodeName() { result = "or" } - } - - /** An `xor` instruction. */ - class Xor extends BinaryBitwiseOperation, @cil_xor { - override string getOpcodeName() { result = "xor" } - } - - /** A `not` instruction. */ - class Not extends UnaryBitwiseOperation, @cil_not { - override string getOpcodeName() { result = "not" } - } - - /** A `shl` instruction. */ - class Shl extends BinaryBitwiseOperation, @cil_shl { - override string getOpcodeName() { result = "shl" } - } - - /** A `shr` instruction. */ - class Shr extends BinaryBitwiseOperation, @cil_shr { - override string getOpcodeName() { result = "shr" } - } - - /** A `shr.un` instruction. */ - class Shr_un extends BinaryBitwiseOperation, @cil_shr_un { - override string getOpcodeName() { result = "shr.un" } - } - - /** A `ceq` instruction. */ - class Ceq extends ComparisonOperation, @cil_ceq { - override string getOpcodeName() { result = "ceq" } - } - - /** A `pop` instruction. */ - class Pop extends Instruction, @cil_pop { - override string getOpcodeName() { result = "pop" } - - override int getPopCount() { result = 1 } - } - - /** A `dup` instruction. */ - class Dup extends Expr, @cil_dup { - override string getOpcodeName() { result = "dup" } - - override int getPopCount() { result = 1 } - - override int getPushCount() { result = 2 } // This is the only instruction that pushes 2 items - - override Type getType() { result = this.getOperandType(0) } - } - - /** A `ret` instruction. */ - class Ret extends Return, @cil_ret { - override string getOpcodeName() { result = "ret" } - - override predicate canFlowNext() { none() } - - override int getPopCount() { - if this.getImplementation().getMethod().returnsVoid() then result = 0 else result = 1 - } - } - - /** A `nop` instruction. */ - class Nop extends Instruction, @cil_nop { - override string getOpcodeName() { result = "nop" } - } - - /** An `ldstr` instruction. */ - class Ldstr extends StringLiteral, @cil_ldstr { - override string getOpcodeName() { result = "ldstr" } - - override string getExtra() { result = "\"" + this.getValue() + "\"" } - - override Type getType() { result instanceof StringType } - } - - /** A `br` instruction. */ - class Br extends UnconditionalBranch, @cil_br { - override string getOpcodeName() { result = "br" } - } - - /** A `br.s` instruction. */ - class Br_s extends UnconditionalBranch, @cil_br_s { - override string getOpcodeName() { result = "br.s" } - } - - /** A `brfalse.s` instruction. */ - class Brfalse_s extends UnaryBranch, @cil_brfalse_s { - override string getOpcodeName() { result = "brfalse.s" } - } - - /** A `brfalse` instruction. */ - class Brfalse extends UnaryBranch, @cil_brfalse { - override string getOpcodeName() { result = "brfalse" } - } - - /** A `brtrue.s` instruction. */ - class Brtrue_s extends UnaryBranch, @cil_brtrue_s { - override string getOpcodeName() { result = "brtrue.s" } - } - - /** A `brtrue` instruction. */ - class Brtrue extends UnaryBranch, @cil_brtrue { - override string getOpcodeName() { result = "brtrue" } - } - - /** A `blt.s` instruction. */ - class Blt_s extends BinaryBranch, @cil_blt_s { - override string getOpcodeName() { result = "blt.s" } - } - - /** A `blt` instruction. */ - class Blt extends BinaryBranch, @cil_blt { - override string getOpcodeName() { result = "blt" } - } - - /** A `blt.un.s` instruction. */ - class Blt_un_s extends BinaryBranch, @cil_blt_un_s { - override string getOpcodeName() { result = "blt.un.s" } - } - - /** A `blt.un` instruction. */ - class Blt_un extends BinaryBranch, @cil_blt_un { - override string getOpcodeName() { result = "blt.un" } - } - - /** A `bgt.un` instruction. */ - class Bgt_un extends BinaryBranch, @cil_bgt_un { - override string getOpcodeName() { result = "bgt.un" } - } - - /** A `ble.un.s` instruction. */ - class Ble_un_s extends BinaryBranch, @cil_ble_un_s { - override string getOpcodeName() { result = "ble.un.s" } - } - - /** A `ble.un` instruction. */ - class Ble_un extends BinaryBranch, @cil_ble_un { - override string getOpcodeName() { result = "ble.un" } - } - - /** A `bge.s` instruction. */ - class Bge_s extends BinaryBranch, @cil_bge_s { - override string getOpcodeName() { result = "bge.s" } - } - - /** A `ble.un` instruction. */ - class Bge_un extends BinaryBranch, @cil_bge_un { - override string getOpcodeName() { result = "bge.un" } - } - - /** A `bge` instruction. */ - class Bge extends BinaryBranch, @cil_bge { - override string getOpcodeName() { result = "bge" } - } - - /** A `bne.un.s` instruction. */ - class Bne_un_s extends BinaryBranch, @cil_bne_un_s { - override string getOpcodeName() { result = "bne.un.s" } - } - - /** A `bne.un` instruction. */ - class Bne_un extends BinaryBranch, @cil_bne_un { - override string getOpcodeName() { result = "bne.un" } - } - - /** A `beq` instruction. */ - class Beq extends BinaryBranch, @cil_beq { - override string getOpcodeName() { result = "beq" } - } - - /** A `beq.s` instruction. */ - class Beq_s extends BinaryBranch, @cil_beq_s { - override string getOpcodeName() { result = "beq.s" } - } - - /** A `ble.s` instruction. */ - class Ble_s extends BinaryBranch, @cil_ble_s { - override string getOpcodeName() { result = "ble.s" } - } - - /** A `ble` instruction. */ - class Ble extends BinaryBranch, @cil_ble { - override string getOpcodeName() { result = "ble" } - } - - /** A `bgt.s` instruction. */ - class Bgt_s extends BinaryBranch, @cil_bgt_s { - override string getOpcodeName() { result = "bgt.s" } - } - - /** A `bgt` instruction. */ - class Bgt extends BinaryBranch, @cil_bgt { - override string getOpcodeName() { result = "bgt" } - } - - /** A `bgt.in.s` instruction. */ - class Bgt_in_s extends BinaryBranch, @cil_bgt_un_s { - override string getOpcodeName() { result = "bgt.in.s" } - } - - /** A `bge.in.s` instruction. */ - class Bge_in_s extends BinaryBranch, @cil_bge_un_s { - override string getOpcodeName() { result = "bge.un.s" } - } - - /** A `switch` instruction. */ - class Switch extends ConditionalBranch, @cil_switch { - override string getOpcodeName() { result = "switch" } - - /** Gets the `n`th jump target of this switch. */ - Instruction getTarget(int n) { cil_switch(this, n, result) } - - override Instruction getASuccessorType(FlowType t) { - t instanceof NormalFlow and - ( - result = this.getTarget(_) or - result = this.getImplementation().getInstruction(this.getIndex() + 1) - ) - } - - override string getExtra() { - result = concat(int n | exists(this.getTarget(n)) | this.getTarget(n).getIndex() + ":", " ") - } - } - - /** A `leave` instruction. */ - class Leave_ extends Leave, @cil_leave { - override string getOpcodeName() { result = "leave" } - } - - /** A `leave.s` instruction. */ - class Leave_s extends Leave, @cil_leave_s { - override string getOpcodeName() { result = "leave.s" } - } - - /** An `endfilter` instruction. */ - class Endfilter extends Instruction, @cil_endfilter { - override string getOpcodeName() { result = "endfilter" } - } - - /** An `endfinally` instruction. */ - class Endfinally extends Instruction, @cil_endfinally { - override string getOpcodeName() { result = "endfinally" } - - override predicate canFlowNext() { none() } - } - - /** A `cgt.un` instruction. */ - class Cgt_un extends ComparisonOperation, @cil_cgt_un { - override string getOpcodeName() { result = "cgt.un" } - } - - /** A `cgt` instruction. */ - class Cgt extends ComparisonOperation, @cil_cgt { - override string getOpcodeName() { result = "cgt" } - } - - /** A `clt.un` instruction. */ - class Clt_un extends ComparisonOperation, @cil_clt_un { - override string getOpcodeName() { result = "clt.un" } - } - - /** A `clt` instruction. */ - class Clt extends ComparisonOperation, @cil_clt { - override string getOpcodeName() { result = "clt" } - } - - /** A `call` instruction. */ - class Call_ extends Call, @cil_call { - override string getOpcodeName() { result = "call" } - } - - /** A `calli` instruction. */ - class Calli extends Call, @cil_calli { - override string getOpcodeName() { result = "calli" } - - override Callable getTarget() { none() } - - /** Gets the function pointer type targeted by this instruction. */ - FunctionPointerType getTargetType() { cil_access(this, result) } - - // The number of items popped/pushed from the stack depends on the target of - // the call. Also, we need to pop the function pointer itself too. - override int getPopCount() { result = this.getTargetType().getCallPopCount() + 1 } - - override int getPushCount() { result = this.getTargetType().getCallPushCount() } - } - - /** A `callvirt` instruction. */ - class Callvirt extends Call, @cil_callvirt { - override string getOpcodeName() { result = "callvirt" } - - override predicate isVirtual() { any() } - } - - /** A `tail.` instruction. */ - class Tail extends Instruction, @cil_tail { - override string getOpcodeName() { result = "tail." } - } - - /** A `jmp` instruction. */ - class Jmp extends Call, @cil_jmp { - override string getOpcodeName() { result = "jmp" } - - override predicate isTailCall() { any() } - } - - /** An `isinst` instruction. */ - class Isinst extends UnaryExpr, @cil_isinst { - override string getOpcodeName() { result = "isinst" } - - override BoolType getType() { exists(result) } - - /** Gets the type that is being tested against. */ - Type getTestedType() { result = this.getAccess() } - - override string getExtra() { result = this.getTestedType().getFullyQualifiedName() } - } - - /** A `castclass` instruction. */ - class Castclass extends UnaryExpr, @cil_castclass { - override string getOpcodeName() { result = "castclass" } - - override Type getType() { result = this.getAccess() } - - /** Gets the type that is being cast to. */ - Type getTestedType() { result = this.getAccess() } - - override string getExtra() { result = this.getTestedType().getFullyQualifiedName() } - } - - /** An `stloc.0` instruction. */ - class Stloc_0 extends LocalVariableWriteAccess, @cil_stloc_0 { - override string getOpcodeName() { result = "stloc.0" } - - override LocalVariable getTarget() { result = this.getImplementation().getLocalVariable(0) } - } - - /** An `stloc.1` instruction. */ - class Stloc_1 extends LocalVariableWriteAccess, @cil_stloc_1 { - override string getOpcodeName() { result = "stloc.1" } - - override LocalVariable getTarget() { result = this.getImplementation().getLocalVariable(1) } - } - - /** An `stloc.2` instruction. */ - class Stloc_2 extends LocalVariableWriteAccess, @cil_stloc_2 { - override string getOpcodeName() { result = "stloc.2" } - - override LocalVariable getTarget() { result = this.getImplementation().getLocalVariable(2) } - } - - /** An `stloc.3` instruction. */ - class Stloc_3 extends LocalVariableWriteAccess, @cil_stloc_3 { - override string getOpcodeName() { result = "stloc.3" } - - override LocalVariable getTarget() { result = this.getImplementation().getLocalVariable(3) } - } - - /** An `stloc.s` instruction. */ - class Stloc_s extends LocalVariableWriteAccess, @cil_stloc_s { - override string getOpcodeName() { result = "stloc.s" } - - override LocalVariable getTarget() { cil_access(this, result) } - } - - /** An `stloc` instruction. */ - class Stloc extends LocalVariableWriteAccess, @cil_stloc { - override string getOpcodeName() { result = "stloc" } - - override LocalVariable getTarget() { cil_access(this, result) } - } - - /** An `ldloc.0` instruction. */ - class Ldloc_0 extends LocalVariableReadAccess, @cil_ldloc_0 { - override string getOpcodeName() { result = "ldloc.0" } - - override LocalVariable getTarget() { result = this.getImplementation().getLocalVariable(0) } - } - - /** An `ldloc.1` instruction. */ - class Ldloc_1 extends LocalVariableReadAccess, @cil_ldloc_1 { - override string getOpcodeName() { result = "ldloc.1" } - - override LocalVariable getTarget() { result = this.getImplementation().getLocalVariable(1) } - } - - /** An `ldloc.2` instruction. */ - class Ldloc_2 extends LocalVariableReadAccess, @cil_ldloc_2 { - override string getOpcodeName() { result = "ldloc.2" } - - override LocalVariable getTarget() { result = this.getImplementation().getLocalVariable(2) } - } - - /** An `ldloc.3` instruction. */ - class Ldloc_3 extends LocalVariableReadAccess, @cil_ldloc_3 { - override string getOpcodeName() { result = "ldloc.3" } - - override LocalVariable getTarget() { result = this.getImplementation().getLocalVariable(3) } - } - - /** An `ldloc.s` instruction. */ - class Ldloc_s extends LocalVariableReadAccess, @cil_ldloc_s { - override string getOpcodeName() { result = "ldloc.s" } - - override LocalVariable getTarget() { cil_access(this, result) } - - override string getExtra() { result = "L" + this.getTarget().getIndex() } - } - - /** An `ldloca.s` instruction. */ - class Ldloca_s extends LocalVariableReadAccess, ReadRefAccess, @cil_ldloca_s { - override string getOpcodeName() { result = "ldloca.s" } - - override LocalVariable getTarget() { cil_access(this, result) } - - override string getExtra() { result = "L" + this.getTarget().getIndex() } - } - - /** An `ldloc` instruction. */ - class Ldloc extends LocalVariableReadAccess, @cil_ldloc { - override string getOpcodeName() { result = "ldloc" } - - override LocalVariable getTarget() { cil_access(this, result) } - - override string getExtra() { result = "L" + this.getTarget().getIndex() } - } - - /** An `ldarg.0` instruction. */ - class Ldarg_0 extends ParameterReadAccess, @cil_ldarg_0 { - override string getOpcodeName() { result = "ldarg.0" } - - override MethodParameter getTarget() { - result = this.getImplementation().getMethod().getRawParameter(0) - } - } - - /** An `ldarg.1` instruction. */ - class Ldarg_1 extends ParameterReadAccess, @cil_ldarg_1 { - override string getOpcodeName() { result = "ldarg.1" } - - override MethodParameter getTarget() { - result = this.getImplementation().getMethod().getRawParameter(1) - } - } - - /** An `ldarg.2` instruction. */ - class Ldarg_2 extends ParameterReadAccess, @cil_ldarg_2 { - override string getOpcodeName() { result = "ldarg.2" } - - override MethodParameter getTarget() { - result = this.getImplementation().getMethod().getRawParameter(2) - } - } - - /** An `ldarg.3` instruction. */ - class Ldarg_3 extends ParameterReadAccess, @cil_ldarg_3 { - override string getOpcodeName() { result = "ldarg.3" } - - override MethodParameter getTarget() { - result = this.getImplementation().getMethod().getRawParameter(3) - } - } - - /** An `ldarg.s` instruction. */ - class Ldarg_s extends ParameterReadAccess, @cil_ldarg_s { - override string getOpcodeName() { result = "ldarg.s" } - - override MethodParameter getTarget() { cil_access(this, result) } - - override string getExtra() { result = this.getTarget().getIndex().toString() } - } - - /** An `ldarg` instruction. */ - class Ldarg extends ParameterReadAccess, @cil_ldarg { - override string getOpcodeName() { result = "ldarg" } - - override MethodParameter getTarget() { cil_access(this, result) } - } - - /** An `ldarga.s` instruction. */ - class Ldarga_s extends ParameterReadAccess, ReadRefAccess, @cil_ldarga_s { - override string getOpcodeName() { result = "ldarga.s" } - - override MethodParameter getTarget() { cil_access(this, result) } - } - - /** An `starg.s` instruction. */ - class Starg_s extends ParameterWriteAccess, @cil_starg_s { - override string getOpcodeName() { result = "starg.s" } - - override MethodParameter getTarget() { cil_access(this, result) } - } - - /** An `ldfld` instruction. */ - class Ldfld extends FieldReadAccess, @cil_ldfld { - override string getOpcodeName() { result = "ldfld" } - - override int getPopCount() { result = 1 } - - override Expr getQualifier() { result = this.getOperand(0) } - } - - /** An `ldflda` instruction. */ - class Ldflda extends FieldReadAccess, ReadRefAccess, @cil_ldflda { - override string getOpcodeName() { result = "ldflda" } - - override int getPopCount() { result = 1 } - - override Expr getQualifier() { result = this.getOperand(0) } - } - - /** An `ldsfld` instruction. */ - class Ldsfld extends FieldReadAccess, @cil_ldsfld { - override string getOpcodeName() { result = "ldsfld" } - - override int getPopCount() { result = 0 } - - override Expr getQualifier() { none() } - } - - /** An `ldsflda` instruction. */ - class Ldsflda extends FieldReadAccess, ReadRefAccess, @cil_ldsflda { - override string getOpcodeName() { result = "ldsflda" } - - override int getPopCount() { result = 0 } - - override Expr getQualifier() { none() } - } - - /** An `stfld` instruction. */ - class Stfld extends FieldWriteAccess, @cil_stfld { - override string getOpcodeName() { result = "stfld" } - - override int getPopCount() { result = 2 } - - override Expr getQualifier() { result = this.getOperand(1) } - - override Expr getExpr() { result = this.getOperand(0) } - } - - /** An `stsfld` instruction. */ - class Stsfld extends FieldWriteAccess, @cil_stsfld { - override string getOpcodeName() { result = "stsfld" } - - override int getPopCount() { result = 1 } - - override Expr getQualifier() { none() } - - override Expr getExpr() { result = this.getOperand(0) } - } - - /** A `newobj` instruction. */ - class NewObj extends Call, @cil_newobj { - override string getOpcodeName() { result = "newobj" } - - override int getPushCount() { result = 1 } - - override int getPopCount() { result = count(this.getARawTargetParameter()) - 1 } - - override Type getType() { result = this.getTarget().getDeclaringType() } - - override Expr getArgument(int i) { result = this.getRawArgument(i) } - - pragma[noinline] - private Parameter getARawTargetParameter() { result = this.getTarget().getARawParameter() } - - override Expr getArgumentForParameter(DotNet::Parameter param) { - exists(int index | - result = this.getArgument(index) and - param = this.getTarget().getParameter(index) - ) - } - } - - /** An `initobj` instruction. */ - class Initobj extends Instruction, @cil_initobj { - override string getOpcodeName() { result = "initobj" } - - override int getPopCount() { result = 1 } // ?? - } - - /** A `box` instruction. */ - class Box extends UnaryExpr, @cil_box { - override string getOpcodeName() { result = "box" } - - override Type getType() { result = this.getAccess() } - } - - /** An `unbox.any` instruction. */ - class Unbox_any extends UnaryExpr, @cil_unbox_any { - override string getOpcodeName() { result = "unbox.any" } - - override Type getType() { result = this.getAccess() } - } - - /** An `unbox` instruction. */ - class Unbox extends UnaryExpr, @cil_unbox { - override string getOpcodeName() { result = "unbox" } - - override Type getType() { result = this.getAccess() } - } - - /** An `ldobj` instruction. */ - class Ldobj extends UnaryExpr, @cil_ldobj { - override string getOpcodeName() { result = "ldobj" } - - /** Gets the type of the object. */ - Type getTarget() { cil_access(this, result) } - - override Type getType() { result = this.getAccess() } - } - - /** An `ldtoken` instruction. */ - class Ldtoken extends Expr, @cil_ldtoken { - override string getOpcodeName() { result = "ldtoken" } - - // Not really sure what a type of a token is so use `object`. - override ObjectType getType() { exists(result) } - } - - /** A `constrained.` instruction. */ - class Constrained extends Instruction, @cil_constrained { - override string getOpcodeName() { result = "constrained." } - } - - /** A `throw` instruction. */ - class Throw_ extends Throw, @cil_throw { - override string getOpcodeName() { result = "throw" } - - override int getPopCount() { result = 1 } - } - - /** A `rethrow` instruction. */ - class ReThrow extends Throw, @cil_rethrow { - override string getOpcodeName() { result = "rethrow" } - } - - /** A `ldlen` instruction. */ - class Ldlen extends UnaryExpr, @cil_ldlen { - override string getOpcodeName() { result = "ldlen" } - - override IntType getType() { exists(result) } - } - - /** A `newarr` instruction. */ - class Newarr extends Expr, @cil_newarr { - override string getOpcodeName() { result = "newarr" } - - override int getPushCount() { result = 1 } - - override int getPopCount() { result = 1 } - - override Type getType() { - // Note that this is technically wrong - it should be - // result.(ArrayType).getElementType() = getAccess() - // However the (ArrayType) may not be in the database. - result = this.getAccess() - } - - override string getExtra() { result = this.getType().getFullyQualifiedName() } - } - - /** An `ldelem` instruction. */ - class Ldelem extends ReadArrayElement, @cil_ldelem { - override string getOpcodeName() { result = "ldelem" } - - override Type getType() { result = this.getAccess() } - } - - /** An `ldelem.ref` instruction. */ - class Ldelem_ref extends ReadArrayElement, @cil_ldelem_ref { - override string getOpcodeName() { result = "ldelem.ref" } - - override Type getType() { result = this.getOperandType(1) } - } - - /** An `ldelema` instruction. */ - class Ldelema extends ReadArrayElement, ReadRef, @cil_ldelema { - override string getOpcodeName() { result = "ldelema" } - - override Type getType() { result = this.getAccess() } - } - - /** An `stelem.ref` instruction. */ - class Stelem_ref extends WriteArrayElement, @cil_stelem_ref { - override string getOpcodeName() { result = "stelem.ref" } - } - - /** An `stelem` instruction. */ - class Stelem extends WriteArrayElement, @cil_stelem { - override string getOpcodeName() { result = "stelem" } - } - - /** An `stelem.i` instruction. */ - class Stelem_i extends WriteArrayElement, @cil_stelem_i { - override string getOpcodeName() { result = "stelem.i" } - } - - /** An `stelem.i1` instruction. */ - class Stelem_i1 extends WriteArrayElement, @cil_stelem_i1 { - override string getOpcodeName() { result = "stelem.i1" } - } - - /** An `stelem.i2` instruction. */ - class Stelem_i2 extends WriteArrayElement, @cil_stelem_i2 { - override string getOpcodeName() { result = "stelem.i2" } - } - - /** An `stelem.i4` instruction. */ - class Stelem_i4 extends WriteArrayElement, @cil_stelem_i4 { - override string getOpcodeName() { result = "stelem.i4" } - } - - /** An `stelem.i8` instruction. */ - class Stelem_i8 extends WriteArrayElement, @cil_stelem_i8 { - override string getOpcodeName() { result = "stelem.i8" } - } - - /** An `stelem.r4` instruction. */ - class Stelem_r4 extends WriteArrayElement, @cil_stelem_r4 { - override string getOpcodeName() { result = "stelem.r4" } - } - - /** An `stelem.r8` instruction. */ - class Stelem_r8 extends WriteArrayElement, @cil_stelem_r8 { - override string getOpcodeName() { result = "stelem.r8" } - } - - /** An `ldelem.i` instruction. */ - class Ldelem_i extends ReadArrayElement, @cil_ldelem_i { - override string getOpcodeName() { result = "ldelem.i" } - - override IntType getType() { exists(result) } - } - - /** An `ldelem.i1` instruction. */ - class Ldelem_i1 extends ReadArrayElement, @cil_ldelem_i1 { - override string getOpcodeName() { result = "ldelem.i1" } - - override SByteType getType() { exists(result) } - } - - /** An `ldelem.i2` instruction. */ - class Ldelem_i2 extends ReadArrayElement, @cil_ldelem_i2 { - override string getOpcodeName() { result = "ldelem.i2" } - - override ShortType getType() { exists(result) } - } - - /** An `ldelem.i4` instruction. */ - class Ldelem_i4 extends ReadArrayElement, @cil_ldelem_i4 { - override string getOpcodeName() { result = "ldelem.i4" } - - override IntType getType() { exists(result) } - } - - /** An `ldelem.i8` instruction. */ - class Ldelem_i8 extends ReadArrayElement, @cil_ldelem_i8 { - override string getOpcodeName() { result = "ldelem.i8" } - - override LongType getType() { exists(result) } - } - - /** An `ldelem.r4` instruction. */ - class Ldelem_r4 extends ReadArrayElement, @cil_ldelem_r4 { - override string getOpcodeName() { result = "ldelem.r4" } - - override FloatType getType() { exists(result) } - } - - /** An `ldelem.r8` instruction. */ - class Ldelem_r8 extends ReadArrayElement, @cil_ldelem_r8 { - override string getOpcodeName() { result = "ldelem.r8" } - - override DoubleType getType() { exists(result) } - } - - /** An `ldelem.u1` instruction. */ - class Ldelem_u1 extends ReadArrayElement, @cil_ldelem_u1 { - override string getOpcodeName() { result = "ldelem.u1" } - - override ByteType getType() { exists(result) } - } - - /** An `ldelem.u2` instruction. */ - class Ldelem_u2 extends ReadArrayElement, @cil_ldelem_u2 { - override string getOpcodeName() { result = "ldelem.u2" } - - override UShortType getType() { exists(result) } - } - - /** An `ldelem.u4` instruction. */ - class Ldelem_u4 extends ReadArrayElement, @cil_ldelem_u4 { - override string getOpcodeName() { result = "ldelem.u4" } - - override UIntType getType() { exists(result) } - } - - /** A `conv.i` instruction. */ - class Conv_i extends Conversion, @cil_conv_i { - override string getOpcodeName() { result = "conv.i" } - - override IntType getType() { exists(result) } - } - - /** A `conv.ovf.i` instruction. */ - class Conv_ovf_i extends Conversion, @cil_conv_ovf_i { - override string getOpcodeName() { result = "conv.ovf.i" } - - override IntType getType() { exists(result) } - } - - /** A `conv.ovf.i.un` instruction. */ - class Conv_ovf_i_un extends Conversion, @cil_conv_ovf_i_un { - override string getOpcodeName() { result = "conv.ovf.i.un" } - - override UIntType getType() { exists(result) } - } - - /** A `conv.i1` instruction. */ - class Conv_i1 extends Conversion, @cil_conv_i1 { - override string getOpcodeName() { result = "conv.i1" } - - override SByteType getType() { exists(result) } - } - - /** A `conv.ovf.i1` instruction. */ - class Conv_ovf_i1 extends Conversion, @cil_conv_ovf_i1 { - override string getOpcodeName() { result = "conv.ovf.i1" } - - override SByteType getType() { exists(result) } - } - - /** A `conv.ovf.i1.un` instruction. */ - class Conv_ovf_i1_un extends Conversion, @cil_conv_ovf_i1_un { - override string getOpcodeName() { result = "conv.ovf.i1.un" } - - override SByteType getType() { exists(result) } - } - - /** A `conv.i2` instruction. */ - class Conv_i2 extends Conversion, @cil_conv_i2 { - override string getOpcodeName() { result = "conv.i2" } - - override ShortType getType() { exists(result) } - } - - /** A `conv.ovf.i2` instruction. */ - class Conv_ovf_i2 extends Conversion, @cil_conv_ovf_i2 { - override string getOpcodeName() { result = "conv.ovf.i2" } - - override ShortType getType() { exists(result) } - } - - /** A `conv.ovf.i2.un` instruction. */ - class Conv_ovf_i2_un extends Conversion, @cil_conv_ovf_i2_un { - override string getOpcodeName() { result = "conv.ovf.i2.un" } - - override ShortType getType() { exists(result) } - } - - /** A `conv.i4` instruction. */ - class Conv_i4 extends Conversion, @cil_conv_i4 { - override string getOpcodeName() { result = "conv.i4" } - - override IntType getType() { exists(result) } - } - - /** A `conv.ovf.i4` instruction. */ - class Conv_ovf_i4 extends Conversion, @cil_conv_ovf_i4 { - override string getOpcodeName() { result = "conv.ovf.i4" } - - override IntType getType() { exists(result) } - } - - /** A `conv.ovf.i4.un` instruction. */ - class Conv_ovf_i4_un extends Conversion, @cil_conv_ovf_i4_un { - override string getOpcodeName() { result = "conv.ovf.i4.un" } - - override IntType getType() { exists(result) } - } - - /** A `conv.i8` instruction. */ - class Conv_i8 extends Conversion, @cil_conv_i8 { - override string getOpcodeName() { result = "conv.i8" } - - override LongType getType() { exists(result) } - } - - /** A `conv.ovf.i8` instruction. */ - class Conv_ovf_i8 extends Conversion, @cil_conv_ovf_i8 { - override string getOpcodeName() { result = "conv.ovf.i8" } - - override LongType getType() { exists(result) } - } - - /** A `conv.ovf.i8.un` instruction. */ - class Conv_ovf_i8_un extends Conversion, @cil_conv_ovf_i8_un { - override string getOpcodeName() { result = "conv.ovf.i8.un" } - - override LongType getType() { exists(result) } - } - - /** A `conv.u` instruction. */ - class Conv_u extends Conversion, @cil_conv_u { - override string getOpcodeName() { result = "conv.u" } - - override UIntType getType() { exists(result) } - } - - /** A `conv.ovf.u` instruction. */ - class Conv_ovf_u extends Conversion, @cil_conv_ovf_u { - override string getOpcodeName() { result = "conv.ovf.u" } - - override UIntType getType() { exists(result) } - } - - /** A `conv.ovf.u.un` instruction. */ - class Conv_ovf_u_un extends Conversion, @cil_conv_ovf_u_un { - override string getOpcodeName() { result = "conv.ovf.u.un" } - - override UIntType getType() { exists(result) } - } - - /** A `conv.u1` instruction. */ - class Conv_u1 extends Conversion, @cil_conv_u1 { - override string getOpcodeName() { result = "conv.u1" } - - override ByteType getType() { exists(result) } - } - - /** A `conv.ovf.u1` instruction. */ - class Conv_ovf_u1 extends Conversion, @cil_conv_ovf_u1 { - override string getOpcodeName() { result = "conv.ovf.u1" } - - override ByteType getType() { exists(result) } - } - - /** A `conv.ovf.u1.un` instruction. */ - class Conv_ovf_u1_un extends Conversion, @cil_conv_ovf_u1_un { - override string getOpcodeName() { result = "conv.ovf.u1.un" } - - override ByteType getType() { exists(result) } - } - - /** A `conv.u2` instruction. */ - class Conv_u2 extends Conversion, @cil_conv_u2 { - override string getOpcodeName() { result = "conv.u2" } - - override UShortType getType() { exists(result) } - } - - /** A `conv.ovf.u2` instruction. */ - class Conv_ovf_u2 extends Conversion, @cil_conv_ovf_u2 { - override string getOpcodeName() { result = "conv.ovf.u2" } - - override UShortType getType() { exists(result) } - } - - /** A `conv.ovf.u2.un` instruction. */ - class Conv_ovf_u2_un extends Conversion, @cil_conv_ovf_u2_un { - override string getOpcodeName() { result = "conv.ovf.u2.un" } - - override UShortType getType() { exists(result) } - } - - /** A `conv.u4` instruction. */ - class Conv_u4 extends Conversion, @cil_conv_u4 { - override string getOpcodeName() { result = "conv.u4" } - - override UIntType getType() { exists(result) } - } - - /** A `conv.ovf.u4` instruction. */ - class Conv_ovf_u4 extends Conversion, @cil_conv_ovf_u4 { - override string getOpcodeName() { result = "conv.ovf.u4" } - - override UIntType getType() { exists(result) } - } - - /** A `conv.ovf.u4.un` instruction. */ - class Conv_ovf_u4_un extends Conversion, @cil_conv_ovf_u4_un { - override string getOpcodeName() { result = "conv.ovf.u4.un" } - - override UIntType getType() { exists(result) } - } - - /** A `conv.u8` instruction. */ - class Conv_u8 extends Conversion, @cil_conv_u8 { - override string getOpcodeName() { result = "conv.u8" } - - override ULongType getType() { exists(result) } - } - - /** A `conv.ovf.u8` instruction. */ - class Conv_ovf_u8 extends Conversion, @cil_conv_ovf_u8 { - override string getOpcodeName() { result = "conv.ovf.u8" } - - override ULongType getType() { exists(result) } - } - - /** A `conv.ovf.u8.un` instruction. */ - class Conv_ovf_u8_un extends Conversion, @cil_conv_ovf_u8_un { - override string getOpcodeName() { result = "conv.ovf.u8.un" } - - override ULongType getType() { exists(result) } - } - - /** A `conv.r4` instruction. */ - class Conv_r4 extends Conversion, @cil_conv_r4 { - override string getOpcodeName() { result = "conv.r4" } - - override FloatType getType() { exists(result) } - } - - /** A `conv.r8` instruction. */ - class Conv_r8 extends Conversion, @cil_conv_r8 { - override string getOpcodeName() { result = "conv.r8" } - - override DoubleType getType() { exists(result) } - } - - /** A `conv.r.un` instruction. */ - class Conv_r_un extends Conversion, @cil_conv_r_un { - override string getOpcodeName() { result = "conv.r.un" } - - override DoubleType getType() { exists(result) } // ?? - } - - /** A `volatile.` instruction. */ - class Volatile extends Instruction, @cil_volatile { - override string getOpcodeName() { result = "volatile." } - } - - /** An `ldind.i` instruction. */ - class Ldind_i extends LoadIndirect, @cil_ldind_i { - override string getOpcodeName() { result = "ldind.i" } - - override IntType getType() { exists(result) } - } - - /** An `ldind.i1` instruction. */ - class Ldind_i1 extends LoadIndirect, @cil_ldind_i1 { - override string getOpcodeName() { result = "ldind.i1" } - - override SByteType getType() { exists(result) } - } - - /** An `ldind.i2` instruction. */ - class Ldind_i2 extends LoadIndirect, @cil_ldind_i2 { - override string getOpcodeName() { result = "ldind.i2" } - - override ShortType getType() { exists(result) } - } - - /** An `ldind.i4` instruction. */ - class Ldind_i4 extends LoadIndirect, @cil_ldind_i4 { - override string getOpcodeName() { result = "ldind.i4" } - - override IntType getType() { exists(result) } - } - - /** An `ldind.i8` instruction. */ - class Ldind_i8 extends LoadIndirect, @cil_ldind_i8 { - override string getOpcodeName() { result = "ldind.i8" } - - override LongType getType() { exists(result) } - } - - /** An `ldind.r4` instruction. */ - class Ldind_r4 extends LoadIndirect, @cil_ldind_r4 { - override string getOpcodeName() { result = "ldind.r4" } - - override FloatType getType() { exists(result) } - } - - /** An `ldind.r8` instruction. */ - class Ldind_r8 extends LoadIndirect, @cil_ldind_r8 { - override string getOpcodeName() { result = "ldind.r8" } - - override DoubleType getType() { exists(result) } - } - - /** An `ldind.ref` instruction. */ - class Ldind_ref extends LoadIndirect, @cil_ldind_ref { - override string getOpcodeName() { result = "ldind.ref" } - - override ObjectType getType() { exists(result) } - } - - /** An `ldind.u1` instruction. */ - class Ldind_u1 extends LoadIndirect, @cil_ldind_u1 { - override string getOpcodeName() { result = "ldind.u1" } - - override ByteType getType() { exists(result) } - } - - /** An `ldind.u2` instruction. */ - class Ldind_u2 extends LoadIndirect, @cil_ldind_u2 { - override string getOpcodeName() { result = "ldind.u2" } - - override UShortType getType() { exists(result) } - } - - /** An `ldind.u4` instruction. */ - class Ldind_u4 extends LoadIndirect, @cil_ldind_u4 { - override string getOpcodeName() { result = "ldind.u4" } - - override UIntType getType() { exists(result) } - } - - /** An `stind.i` instruction. */ - class Stind_i extends StoreIndirect, @cil_stind_i { - override string getOpcodeName() { result = "stind.i" } - } - - /** An `stind.i1` instruction. */ - class Stind_i1 extends StoreIndirect, @cil_stind_i1 { - override string getOpcodeName() { result = "stind.i1" } - } - - /** An `stind.i2` instruction. */ - class Stind_i2 extends StoreIndirect, @cil_stind_i2 { - override string getOpcodeName() { result = "stind.i2" } - } - - /** An `stind.i4` instruction. */ - class Stind_i4 extends StoreIndirect, @cil_stind_i4 { - override string getOpcodeName() { result = "stind.i4" } - } - - /** An `stind.i8` instruction. */ - class Stind_i8 extends StoreIndirect, @cil_stind_i8 { - override string getOpcodeName() { result = "stind.i8" } - } - - /** An `stind.r4` instruction. */ - class Stind_r4 extends StoreIndirect, @cil_stind_r4 { - override string getOpcodeName() { result = "stind.r4" } - } - - /** An `stind.r8` instruction. */ - class Stind_r8 extends StoreIndirect, @cil_stind_r8 { - override string getOpcodeName() { result = "stind.r8" } - } - - /** An `stind.ref` instruction. */ - class Stind_ref extends StoreIndirect, @cil_stind_ref { - override string getOpcodeName() { result = "stind.ref" } - } - - /** An `stobj` instruction. */ - class Stobj extends Instruction, @cil_stobj { - override string getOpcodeName() { result = "stobj" } - - override int getPopCount() { result = 2 } - } - - /** An `ldftn` instruction. */ - class Ldftn extends Expr, @cil_ldftn { - override string getOpcodeName() { result = "ldftn" } - - override int getPopCount() { result = 0 } - } - - /** An `ldvirtftn` instruction. */ - class Ldvirtftn extends Expr, @cil_ldvirtftn { - override string getOpcodeName() { result = "ldvirtftn" } - - override int getPopCount() { result = 1 } - } - - /** A `sizeof` instruction. */ - class Sizeof extends Expr, @cil_sizeof { - override string getOpcodeName() { result = "sizeof" } - - override IntType getType() { exists(result) } - } - - /** A `localloc` instruction. */ - class Localloc extends Expr, @cil_localloc { - override string getOpcodeName() { result = "localloc" } - - override int getPopCount() { result = 1 } - - override PointerType getType() { result.getReferentType() instanceof ByteType } - } - - /** A `readonly.` instruction. */ - class Readonly extends Instruction, @cil_readonly { - override string getOpcodeName() { result = "readonly." } - } - - /** A `mkrefany` instruction. */ - class Mkrefany extends Expr, @cil_mkrefany { - override string getOpcodeName() { result = "mkrefany" } - - override int getPopCount() { result = 1 } - - override Type getType() { result = this.getAccess() } - } - - /** A `refanytype` instruction. */ - class Refanytype extends Expr, @cil_refanytype { - override string getOpcodeName() { result = "refanytype" } - - override int getPopCount() { result = 1 } - - override SystemType getType() { exists(result) } - } - - /** An `arglist` instruction. */ - class Arglist extends Expr, @cil_arglist { - override string getOpcodeName() { result = "arglist" } - } -} diff --git a/csharp/ql/lib/semmle/code/cil/Method.qll b/csharp/ql/lib/semmle/code/cil/Method.qll deleted file mode 100644 index cfc38f58202..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Method.qll +++ /dev/null @@ -1,296 +0,0 @@ -/** - * Provides classes for methods. - * - * Methods and implementations are different because there can be several implementations for the same - * method in different assemblies. It is not really possible to guarantee which methods will be loaded - * at run-time. - */ - -private import CIL -private import dotnet - -/** - * An implementation of a method in an assembly. - */ -deprecated class MethodImplementation extends EntryPoint, @cil_method_implementation { - /** Gets the method of this implementation. */ - Method getMethod() { cil_method_implementation(this, result, _) } - - override MethodImplementation getImplementation() { result = this } - - /** Gets the location of this implementation. */ - override Assembly getLocation() { cil_method_implementation(this, _, result) } - - /** Gets the instruction at index `index`. */ - Instruction getInstruction(int index) { cil_instruction(result, _, index, this) } - - /** Gets the `n`th local variable of this implementation. */ - LocalVariable getLocalVariable(int n) { cil_local_variable(result, this, n, _) } - - /** Gets a local variable of this implementation, if any. */ - LocalVariable getALocalVariable() { result = this.getLocalVariable(_) } - - /** Gets an instruction in this implementation, if any. */ - Instruction getAnInstruction() { result = this.getInstruction(_) } - - /** Gets the total number of instructions in this implementation. */ - int getNumberOfInstructions() { result = count(this.getAnInstruction()) } - - /** Gets the `i`th handler in this implementation. */ - Handler getHandler(int i) { result.getImplementation() = this and result.getIndex() = i } - - /** Gets a handler in this implementation, if any. */ - Handler getAHandler() { result.getImplementation() = this } - - override Instruction getASuccessorType(FlowType t) { - t instanceof NormalFlow and result.getImplementation() = this and result.getIndex() = 0 - } - - /** Gets the maximum stack size of this implementation. */ - int getStackSize() { cil_method_stack_size(this, result) } - - override string toString() { result = this.getMethod().toString() } - - /** Gets a string representing the disassembly of this implementation. */ - string getDisassembly() { - result = - concat(Instruction i | - i = this.getAnInstruction() - | - i.toStringExtra(), ", " order by i.getIndex() - ) - } -} - -/** - * A method, which corresponds to any callable in C#, including constructors, - * destructors, operators, accessors and so on. - */ -deprecated class Method extends DotNet::Callable, Element, Member, TypeContainer, DataFlowNode, - CustomModifierReceiver, Parameterizable, @cil_method -{ - /** - * Gets a method implementation, if any. Note that there can - * be several implementations in different assemblies. - */ - MethodImplementation getAnImplementation() { result.getMethod() = this } - - /** Gets the "best" implementation of this method, if any. */ - BestImplementation getImplementation() { result = this.getAnImplementation() } - - override Method getMethod() { result = this } - - override string getName() { cil_method(this, result, _, _) } - - override string getUndecoratedName() { result = this.getName() } - - override string toString() { result = this.getName() } - - override Type getDeclaringType() { cil_method(this, _, result, _) } - - override Location getLocation() { result = Element.super.getLocation() } - - override Location getALocation() { cil_method_location(this.getUnboundMethod+(), result) } - - override MethodParameter getParameter(int n) { - if this.isStatic() - then result = this.getRawParameter(n) - else ( - result = this.getRawParameter(n + 1) and n >= 0 - ) - } - - override Type getType() { result = this.getReturnType() } - - /** Gets the return type of this method. */ - override Type getReturnType() { cil_method(this, _, _, result) } - - /** Holds if the return type is `void`. */ - predicate returnsVoid() { this.getReturnType() instanceof VoidType } - - /** Gets the number of stack items pushed in a call to this method. */ - int getCallPushCount() { if this.returnsVoid() then result = 0 else result = 1 } - - /** Gets the number of stack items popped in a call to this method. */ - int getCallPopCount() { result = count(this.getRawParameter(_)) } - - /** Gets a method called by this method. */ - Method getACallee() { result = this.getImplementation().getAnInstruction().(Call).getTarget() } - - /** Holds if this method is `virtual`. */ - predicate isVirtual() { cil_virtual(this) } - - /** Holds if the name of this method is special, for example an operator. */ - predicate isSpecial() { cil_specialname(this) } - - /** Holds of this method is marked as secure. */ - predicate isSecureObject() { cil_requiresecobject(this) } - - /** Holds if the method does not override an existing method. */ - predicate isNew() { cil_newslot(this) } - - override predicate isStatic() { cil_static(this) } - - /** Gets the unbound declaration of this method, or the method itself. */ - Method getUnboundMethod() { cil_method_source_declaration(this, result) } - - override Method getUnboundDeclaration() { result = this.getUnboundMethod() } - - /** Holds if this method is an instance constructor. */ - predicate isInstanceConstructor() { this.isSpecial() and this.getName() = ".ctor" } - - /** Holds if this method is a static class constructor. */ - predicate isStaticConstructor() { this.isSpecial() and this.getName() = ".cctor" } - - /** Holds if this method is a constructor (static or instance). */ - predicate isConstructor() { this.isStaticConstructor() or this.isInstanceConstructor() } - - /** Holds if this method is a destructor/finalizer. */ - predicate isFinalizer() { - this.getOverriddenMethod*().hasFullyQualifiedName("System", "Object", "Finalize") - } - - /** Holds if this method is an operator. */ - predicate isOperator() { this.isSpecial() and this.getName().matches("op\\_%") } - - /** Holds if this method is a getter. */ - predicate isGetter() { this.isSpecial() and this.getName().matches("get\\_%") } - - /** Holds if this method is a setter. */ - predicate isSetter() { this.isSpecial() and this.getName().matches("set\\_%") } - - /** Holds if this method is an adder/add event accessor. */ - predicate isAdder() { this.isSpecial() and this.getName().matches("add\\_%") } - - /** Holds if this method is a remover/remove event accessor. */ - predicate isRemove() { this.isSpecial() and this.getName().matches("remove\\_%") } - - /** Holds if this method is an implicit conversion operator. */ - predicate isImplicitConversion() { this.isSpecial() and this.getName() = "op_Implicit" } - - /** Holds if this method is an explicit conversion operator. */ - predicate isExplicitConversion() { this.isSpecial() and this.getName() = "op_Explicit" } - - /** Holds if this method is a conversion operator. */ - predicate isConversion() { this.isImplicitConversion() or this.isExplicitConversion() } - - /** - * Gets a method that is overridden, either in a base class - * or in an interface. - */ - Method getOverriddenMethod() { cil_implements(this, result) } - - /** Gets a method that overrides this method, if any. */ - final Method getAnOverrider() { result.getOverriddenMethod() = this } - - override predicate hasBody() { exists(this.getImplementation()) } - - override predicate canReturn(DotNet::Expr expr) { - exists(Return ret | ret.getImplementation() = this.getImplementation() and expr = ret.getExpr()) - } -} - -/** A destructor/finalizer. */ -deprecated class Destructor extends Method, DotNet::Destructor { - Destructor() { this.isFinalizer() } -} - -/** A constructor. */ -deprecated class Constructor extends Method, DotNet::Constructor { - Constructor() { this.isConstructor() } -} - -/** A static/class constructor. */ -deprecated class StaticConstructor extends Constructor { - StaticConstructor() { this.isStaticConstructor() } -} - -/** An instance constructor. */ -deprecated class InstanceConstructor extends Constructor { - InstanceConstructor() { this.isInstanceConstructor() } -} - -/** A method that always returns the `this` parameter. */ -deprecated class ChainingMethod extends Method { - ChainingMethod() { - forex(Return ret | ret = this.getImplementation().getAnInstruction() | - ret.getExpr() instanceof ThisAccess - ) - } -} - -/** An accessor. */ -abstract deprecated class Accessor extends Method { - /** Gets the property declaring this accessor. */ - abstract Property getProperty(); -} - -/** A getter. */ -deprecated class Getter extends Accessor { - Getter() { cil_getter(_, this) } - - override Property getProperty() { cil_getter(result, this) } -} - -/** - * A method that does nothing but retrieve a field. - * Note that this is not necessarily a property getter. - */ -deprecated class TrivialGetter extends Method { - TrivialGetter() { - exists(MethodImplementation impl | impl = this.getAnImplementation() | - impl.getInstruction(0) instanceof ThisAccess and - impl.getInstruction(1) instanceof FieldReadAccess and - impl.getInstruction(2) instanceof Return - ) - } - - /** Gets the underlying field of this getter. */ - Field getField() { - this.getImplementation().getAnInstruction().(FieldReadAccess).getTarget() = result - } -} - -/** A setter. */ -deprecated class Setter extends Accessor { - Setter() { cil_setter(_, this) } - - override Property getProperty() { cil_setter(result, this) } - - /** Holds if this setter is an `init` accessor. */ - predicate isInitOnly() { - exists(Type t | t.hasFullyQualifiedName("System.Runtime.CompilerServices", "IsExternalInit") | - this.hasRequiredCustomModifier(t) - ) - } -} - -/** - * A method that does nothing but set a field. - * This is not necessarily a property setter. - */ -deprecated class TrivialSetter extends Method { - TrivialSetter() { - exists(MethodImplementation impl | impl = this.getAnImplementation() | - impl.getInstruction(0) instanceof ThisAccess and - impl.getInstruction(1).(ParameterReadAccess).getTarget().getIndex() = 1 and - impl.getInstruction(2) instanceof FieldWriteAccess - ) - } - - /** Gets the underlying field of this setter. */ - Field getField() { - result = this.getImplementation().getAnInstruction().(FieldWriteAccess).getTarget() - } -} - -/** An alias for `Method` for compatibility with the C# data model. */ -deprecated class Callable = Method; - -/** An operator. */ -deprecated class Operator extends Method { - Operator() { this.isOperator() } - - /** Gets the name of the implementing method (for compatibility with C# data model). */ - string getFunctionName() { result = this.getName() } -} diff --git a/csharp/ql/lib/semmle/code/cil/Parameterizable.qll b/csharp/ql/lib/semmle/code/cil/Parameterizable.qll deleted file mode 100644 index 5c4ef2fb51d..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Parameterizable.qll +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Provides `Parameterizable` class. - */ - -private import CIL -private import dotnet - -/** - * A parameterizable entity, such as `FunctionPointerType` or `Method`. - */ -deprecated class Parameterizable extends DotNet::Parameterizable, Element, @cil_parameterizable { - override Parameter getRawParameter(int n) { cil_parameter(result, this, n, _) } - - override Parameter getParameter(int n) { cil_parameter(result, this, n, _) } -} diff --git a/csharp/ql/lib/semmle/code/cil/Ssa.qll b/csharp/ql/lib/semmle/code/cil/Ssa.qll deleted file mode 100644 index 4aebad1a602..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Ssa.qll +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Provides the module `Ssa` for working with static single assignment (SSA) form. - */ - -private import CIL - -/** - * Provides classes for working with static single assignment (SSA) form. - */ -deprecated module Ssa { - private import internal.SsaImpl as SsaImpl - - /** An SSA definition. */ - class Definition extends SsaImpl::Definition { - /** Gets a read of this SSA definition. */ - final ReadAccess getARead() { result = SsaImpl::getARead(this) } - - /** Gets the underlying variable update, if any. */ - final VariableUpdate getVariableUpdate() { - exists(BasicBlock bb, int i | - result.updatesAt(bb, i) and - this.definesAt(result.getVariable(), bb, i) - ) - } - - private Definition getAPhiInput() { result = this.(PhiNode).getAnInput() } - - /** - * Gets a definition that ultimately defines this SSA definition and is - * not itself a phi node. - */ - final Definition getAnUltimateDefinition() { - result = this.getAPhiInput*() and - not result instanceof PhiNode - } - - /** Gets the location of this SSA definition. */ - override Location getLocation() { result = this.getVariableUpdate().getLocation() } - } - - /** A phi node. */ - class PhiNode extends SsaImpl::PhiNode, Definition { - final override Location getLocation() { result = this.getBasicBlock().getLocation() } - - /** Gets an input to this phi node. */ - final Definition getAnInput() { result = SsaImpl::getAPhiInput(this) } - } -} diff --git a/csharp/ql/lib/semmle/code/cil/Stubs.qll b/csharp/ql/lib/semmle/code/cil/Stubs.qll deleted file mode 100644 index 45bad86cfb8..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Stubs.qll +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Provides classes and predicates for identifying stub code. - */ - -import CIL - -/** - * The average number of instructions per method, - * below which an assembly is probably a stub. - */ -deprecated private float stubInstructionThreshold() { result = 5.1 } - -cached -private module Cached { - /** - * A simple heuristic for determining whether an assembly is a - * reference assembly where the method bodies have dummy implementations. - * Look at the average number of instructions per method. - */ - cached - deprecated predicate assemblyIsStubImpl(Assembly asm) { - exists(int totalInstructions, int totalImplementations | - totalInstructions = count(Instruction i | i.getImplementation().getLocation() = asm) and - totalImplementations = - count(MethodImplementation i | i.getImplementation().getLocation() = asm) and - totalInstructions.(float) / totalImplementations.(float) < stubInstructionThreshold() - ) - } - - cached - deprecated predicate bestImplementation(MethodImplementation mi) { - exists(Assembly asm | - asm = mi.getLocation() and - (assemblyIsStubImpl(asm) implies asm.getFile().extractedQlTest()) and - mi = - max(MethodImplementation impl | - mi.getMethod() = impl.getMethod() - | - impl order by impl.getNumberOfInstructions(), impl.getLocation().getFile().toString() desc - ) and - exists(mi.getAnInstruction()) - ) - } -} - -private import Cached - -deprecated predicate assemblyIsStub = assemblyIsStubImpl/1; - -/** - * A method implementation that is the "best" one for a particular method, - * if there are several potential implementations to choose between, and - * excludes implementations that are probably from stub/reference assemblies. - */ -deprecated class BestImplementation extends MethodImplementation { - BestImplementation() { bestImplementation(this) } -} diff --git a/csharp/ql/lib/semmle/code/cil/Type.qll b/csharp/ql/lib/semmle/code/cil/Type.qll deleted file mode 100644 index 370a1437c8c..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Type.qll +++ /dev/null @@ -1,125 +0,0 @@ -/** - * Provides classes for types and associated classes. - */ - -import CIL -private import dotnet -private import semmle.code.csharp.commons.QualifiedName - -/** - * Something that contains other types. - * - * Either a type (`Type`), a method(`Method`), or a namespace (`Namespace`). - */ -deprecated class TypeContainer extends DotNet::NamedElement, @cil_type_container { - /** Gets the parent of this type container, if any. */ - TypeContainer getParent() { none() } - - override string toStringWithTypes() { result = this.getLabel() } -} - -/** A namespace. */ -deprecated class Namespace extends DotNet::Namespace, TypeContainer, @namespace { - override string toString() { result = this.getFullName() } - - override Namespace getParent() { result = this.getParentNamespace() } - - override Namespace getParentNamespace() { parent_namespace(this, result) } - - override Location getLocation() { none() } -} - -/** - * A type. - */ -deprecated class Type extends DotNet::Type, Declaration, TypeContainer, @cil_type { - override TypeContainer getParent() { cil_type(this, _, _, result, _) } - - override string getName() { cil_type(this, result, _, _, _) } - - override string toString() { result = this.getName() } - - /** Gets the containing type of this type, if any. */ - override Type getDeclaringType() { result = this.getParent() } - - /** Gets a member of this type, if any. */ - Member getAMember() { result.getDeclaringType() = this } - - /** - * Gets the unbound generic type of this type, or `this` if the type - * is already unbound. - */ - Type getUnboundType() { cil_type(this, _, _, _, result) } - - deprecated override predicate hasQualifiedName(string qualifier, string name) { - name = this.getName() and - exists(string pqualifier, string pname | this.getParent().hasQualifiedName(pqualifier, pname) | - qualifier = getQualifiedName(pqualifier, pname) - ) - } - - override predicate hasFullyQualifiedName(string qualifier, string name) { - name = this.getName() and - exists(string pqualifier, string pname | - this.getParent().hasFullyQualifiedName(pqualifier, pname) - | - qualifier = getQualifiedName(pqualifier, pname) - ) - } - - override Location getALocation() { cil_type_location(this.getUnboundDeclaration(), result) } - - /** Holds if this type is a class. */ - predicate isClass() { cil_class(this) } - - /** Holds if this type is an interface. */ - predicate isInterface() { cil_interface(this) } - - /** - * Holds if this type is a member of the `System` namespace and has the name - * `name`. - */ - predicate isSystemType(string name) { - exists(Namespace system | this.getParent() = system | - system.getName() = "System" and - system.getParentNamespace().getName() = "" and - name = this.getName() - ) - } - - /** Holds if this type is an `enum`. */ - predicate isEnum() { this.getBaseClass().isSystemType("Enum") } - - /** Holds if this type is public. */ - predicate isPublic() { cil_public(this) } - - /** Holds if this type is private. */ - predicate isPrivate() { cil_private(this) } - - /** Gets the machine type used to store this type. */ - Type getUnderlyingType() { result = this } - - // Class hierarchy - /** Gets the immediate base class of this class, if any. */ - Type getBaseClass() { cil_base_class(this, result) } - - /** Gets an immediate base interface of this class, if any. */ - Type getABaseInterface() { cil_base_interface(this, result) } - - /** Gets an immediate base type of this type, if any. */ - Type getABaseType() { result = this.getBaseClass() or result = this.getABaseInterface() } - - /** Gets an immediate subtype of this type, if any. */ - Type getASubtype() { result.getABaseType() = this } - - /** Gets the namespace directly containing this type, if any. */ - Namespace getNamespace() { result = this.getParent() } - - /** - * Gets an index for implicit conversions. A type can be converted to another numeric type - * of a higher index. - */ - int getConversionIndex() { result = 0 } - - override Type getUnboundDeclaration() { cil_type(this, _, _, _, result) } -} diff --git a/csharp/ql/lib/semmle/code/cil/Types.qll b/csharp/ql/lib/semmle/code/cil/Types.qll deleted file mode 100644 index 184bbd21c30..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Types.qll +++ /dev/null @@ -1,318 +0,0 @@ -/** - * Provides classes representing various types. - */ - -private import CIL -private import dotnet - -/** A type parameter. */ -deprecated class TypeParameter extends DotNet::TypeParameter, Type, @cil_typeparameter { - override int getIndex() { cil_type_parameter(_, result, this) } - - /** Gets the generic type/method declaring this type parameter. */ - TypeContainer getGeneric() { cil_type_parameter(result, _, this) } - - override Location getLocation() { result = this.getParent().getLocation() } - - /** Holds if this type parameter has the `new` constraint. */ - predicate isDefaultConstructible() { cil_typeparam_new(this) } - - /** Holds if this type parameter has the `struct` constraint. */ - predicate isStruct() { cil_typeparam_struct(this) } - - override predicate isClass() { cil_typeparam_class(this) } - - /** Holds if this type parameter is covariant/is `in`. */ - predicate isCovariant() { cil_typeparam_covariant(this) } - - /** Holds if this type parameter is contravariant/is `out`. */ - predicate isContravariant() { cil_typeparam_contravariant(this) } - - /** Gets a type constraint on this type parameter, if any. */ - Type getATypeConstraint() { cil_typeparam_constraint(this, result) } -} - -/** A value or reference type. */ -deprecated class ValueOrRefType extends DotNet::ValueOrRefType, Type, @cil_valueorreftype { - override ValueOrRefType getDeclaringType() { result = this.getParent() } - - override string getUndecoratedName() { cil_type(this, result, _, _, _) } - - override Namespace getDeclaringNamespace() { result = this.getNamespace() } - - override ValueOrRefType getABaseType() { result = Type.super.getABaseType() } -} - -/** An `enum`. */ -deprecated class Enum extends ValueOrRefType { - Enum() { this.isEnum() } - - override IntegralType getUnderlyingType() { - cil_enum_underlying_type(this, result) - or - not cil_enum_underlying_type(this, _) and - result instanceof IntType - } -} - -/** A `class`. */ -deprecated class Class extends ValueOrRefType { - Class() { this.isClass() } -} - -/** An `interface`. */ -deprecated class Interface extends ValueOrRefType { - Interface() { this.isInterface() } -} - -/** An array. */ -deprecated class ArrayType extends DotNet::ArrayType, Type, @cil_array_type { - override Type getElementType() { cil_array_type(this, result, _) } - - /** Gets the rank of this array. */ - int getRank() { cil_array_type(this, _, result) } - - override string toStringWithTypes() { result = DotNet::ArrayType.super.toStringWithTypes() } - - override Location getLocation() { result = this.getElementType().getLocation() } - - override ValueOrRefType getABaseType() { result = Type.super.getABaseType() } -} - -/** A pointer type. */ -deprecated class PointerType extends DotNet::PointerType, PrimitiveType, @cil_pointer_type { - override Type getReferentType() { cil_pointer_type(this, result) } - - override IntType getUnderlyingType() { any() } - - override string getName() { result = DotNet::PointerType.super.getName() } - - override Location getLocation() { result = this.getReferentType().getLocation() } - - override string toString() { result = DotNet::PointerType.super.toString() } - - override string toStringWithTypes() { result = DotNet::PointerType.super.toStringWithTypes() } -} - -/** A primitive type, built into the runtime. */ -abstract deprecated class PrimitiveType extends Type { } - -/** - * A primitive numeric type. - * Either an integral type (`IntegralType`) or a floating point type (`FloatingPointType`). - */ -abstract deprecated class NumericType extends PrimitiveType, ValueOrRefType { } - -/** A floating point type. Either single precision (`FloatType`) or double precision (`DoubleType`). */ -abstract deprecated class FloatingPointType extends NumericType { } - -/** - * An integral numeric type. Either a signed integral type (`SignedIntegralType`) - * or an unsigned integral type (`UnsignedIntegralType`). - */ -abstract deprecated class IntegralType extends NumericType { } - -/** A signed integral type. */ -abstract deprecated class SignedIntegralType extends IntegralType { } - -/** An unsigned integral type. */ -abstract deprecated class UnsignedIntegralType extends IntegralType { } - -/** The `void` type, `System.Void`. */ -deprecated class VoidType extends PrimitiveType { - VoidType() { this.isSystemType("Void") } - - override string toString() { result = "void" } - - override string toStringWithTypes() { result = "void" } -} - -/** The type `System.Int32`. */ -deprecated class IntType extends SignedIntegralType { - IntType() { this.isSystemType("Int32") } - - override string toStringWithTypes() { result = "int" } - - override int getConversionIndex() { result = 8 } - - override IntType getUnderlyingType() { result = this } -} - -/** The type `System.IntPtr`. */ -deprecated class IntPtrType extends PrimitiveType { - IntPtrType() { this.isSystemType("IntPtr") } - - override IntType getUnderlyingType() { any() } -} - -/** The type `System.UIntPtr`. */ -deprecated class UIntPtrType extends PrimitiveType { - UIntPtrType() { this.isSystemType("UIntPtr") } - - override IntType getUnderlyingType() { any() } -} - -/** The type `System.UInt32`. */ -deprecated class UIntType extends UnsignedIntegralType { - UIntType() { this.isSystemType("UInt32") } - - override string toStringWithTypes() { result = "uint" } - - override int getConversionIndex() { result = 7 } - - override IntType getUnderlyingType() { any() } -} - -/** The type `System.SByte`. */ -deprecated class SByteType extends SignedIntegralType { - SByteType() { this.isSystemType("SByte") } - - override string toStringWithTypes() { result = "sbyte" } - - override int getConversionIndex() { result = 2 } -} - -/** The type `System.Byte`. */ -deprecated class ByteType extends UnsignedIntegralType { - ByteType() { this.isSystemType("Byte") } - - override string toStringWithTypes() { result = "byte" } - - override int getConversionIndex() { result = 1 } - - override SByteType getUnderlyingType() { any() } -} - -/** The type `System.Int16`. */ -deprecated class ShortType extends SignedIntegralType { - ShortType() { this.isSystemType("Int16") } - - override string toStringWithTypes() { result = "short" } - - override int getConversionIndex() { result = 4 } -} - -/** The type `System.UInt16`. */ -deprecated class UShortType extends UnsignedIntegralType { - UShortType() { this.isSystemType("UInt16") } - - override string toStringWithTypes() { result = "ushort" } - - override int getConversionIndex() { result = 3 } - - override ShortType getUnderlyingType() { any() } -} - -/** The type `System.Int64`. */ -deprecated class LongType extends SignedIntegralType { - LongType() { this.isSystemType("Int64") } - - override string toStringWithTypes() { result = "long" } - - override int getConversionIndex() { result = 10 } -} - -/** The type `System.UInt64`. */ -deprecated class ULongType extends UnsignedIntegralType { - ULongType() { this.isSystemType("UInt64") } - - override string toStringWithTypes() { result = "ulong" } - - override int getConversionIndex() { result = 9 } - - override LongType getUnderlyingType() { any() } -} - -/** The type `System.Decimal`. */ -deprecated class DecimalType extends SignedIntegralType { - DecimalType() { this.isSystemType("Decimal") } - - override string toStringWithTypes() { result = "decimal" } - - override int getConversionIndex() { result = 13 } -} - -/** The type `System.String`. */ -deprecated class StringType extends PrimitiveType, ValueOrRefType { - StringType() { this.isSystemType("String") } - - override string toStringWithTypes() { result = "string" } -} - -/** The type `System.Object`. */ -deprecated class ObjectType extends ValueOrRefType { - ObjectType() { this.isSystemType("Object") } - - override string toStringWithTypes() { result = "object" } -} - -/** The type `System.Boolean`. */ -deprecated class BoolType extends PrimitiveType, ValueOrRefType { - BoolType() { this.isSystemType("Boolean") } - - override string toStringWithTypes() { result = "bool" } - - override IntType getUnderlyingType() { any() } -} - -/** The type `System.Double`. */ -deprecated class DoubleType extends FloatingPointType { - DoubleType() { this.isSystemType("Double") } - - override string toStringWithTypes() { result = "double" } - - override int getConversionIndex() { result = 12 } -} - -/** The type `System.Single`. */ -deprecated class FloatType extends FloatingPointType { - FloatType() { this.isSystemType("Single") } - - override string toStringWithTypes() { result = "float" } - - override int getConversionIndex() { result = 4 } -} - -/** The type `System.Char`. */ -deprecated class CharType extends IntegralType { - CharType() { this.isSystemType("Char") } - - override string toStringWithTypes() { result = "char" } - - override int getConversionIndex() { result = 6 } - - override IntType getUnderlyingType() { any() } -} - -/** The type `System.Type`. */ -deprecated class SystemType extends ValueOrRefType { - SystemType() { this.isSystemType("Type") } -} - -/** - * A function pointer type, for example - * - * ```csharp - * delegate* - * ``` - */ -deprecated class FunctionPointerType extends Type, CustomModifierReceiver, Parameterizable, - @cil_function_pointer_type -{ - /** Gets the return type of this function pointer. */ - Type getReturnType() { cil_function_pointer_return_type(this, result) } - - /** Gets the calling convention. */ - int getCallingConvention() { cil_function_pointer_calling_conventions(this, result) } - - /** Holds if the return type is `void`. */ - predicate returnsVoid() { this.getReturnType() instanceof VoidType } - - /** Gets the number of stack items pushed in a call to this method. */ - int getCallPushCount() { if this.returnsVoid() then result = 0 else result = 1 } - - /** Gets the number of stack items popped in a call to this method. */ - int getCallPopCount() { result = count(this.getRawParameter(_)) } - - override string getLabel() { result = this.getName() } -} diff --git a/csharp/ql/lib/semmle/code/cil/Variable.qll b/csharp/ql/lib/semmle/code/cil/Variable.qll deleted file mode 100644 index 99c3d049700..00000000000 --- a/csharp/ql/lib/semmle/code/cil/Variable.qll +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Provides classes for variables. - */ - -private import CIL -private import dotnet - -/** A variable. Either a stack variable (`StackVariable`) or a field (`Field`). */ -deprecated class Variable extends DotNet::Variable, Declaration, DataFlowNode, @cil_variable { - /** Gets the type of this variable. */ - override Type getType() { none() } - - /** Gets a textual representation of this variable including type information. */ - override string toStringWithTypes() { none() } - - /** Gets an access to this variable, if any. */ - VariableAccess getAnAccess() { result.getTarget() = this } - - /** Gets a read access to this variable, if any. */ - ReadAccess getARead() { result = this.getAnAccess() } - - /** Gets a write access to this variable, if any. */ - WriteAccess getAWrite() { result = this.getAnAccess() } - - override string toString() { result = Declaration.super.toString() } - - override Location getLocation() { result = Declaration.super.getLocation() } -} - -/** A stack variable. Either a local variable (`LocalVariable`) or a parameter (`Parameter`). */ -deprecated class StackVariable extends Variable, @cil_stack_variable { - deprecated override predicate hasQualifiedName(string qualifier, string name) { none() } - - override predicate hasFullyQualifiedName(string qualifier, string name) { none() } -} - -/** - * A local variable. - * - * Each method in CIL has a number of typed local variables, in addition to the evaluation stack. - */ -deprecated class LocalVariable extends StackVariable, @cil_local_variable { - override string toString() { - result = - "Local variable " + this.getIndex() + " of method " + - this.getImplementation().getMethod().getName() - } - - /** Gets the method implementation defining this local variable. */ - MethodImplementation getImplementation() { this = result.getALocalVariable() } - - /** Gets the index number of this local variable. This is not usually significant. */ - int getIndex() { this = this.getImplementation().getLocalVariable(result) } - - override Type getType() { cil_local_variable(this, _, _, result) } - - override Location getLocation() { result = this.getImplementation().getLocation() } - - override Method getMethod() { result = this.getImplementation().getMethod() } -} - -/** A parameter of a `Method` or `FunctionPointerType`. */ -deprecated class Parameter extends DotNet::Parameter, CustomModifierReceiver, @cil_parameter { - override Parameterizable getDeclaringElement() { cil_parameter(this, result, _, _) } - - /** Gets the index of this parameter. */ - int getIndex() { cil_parameter(this, _, result, _) } - - override string toString() { - result = "Parameter " + this.getIndex() + " of " + this.getDeclaringElement().getName() - } - - override Type getType() { cil_parameter(this, _, _, result) } - - /** - * Holds if this parameter has an "out" flag, meaning that it will - * be passed by reference and written to. - */ - predicate hasOutFlag() { cil_parameter_out(this) } - - /** - * Holds if this parameter has an "in" flag, meaning that it will - * be passed by reference and may be read from and written to. - */ - predicate hasInFlag() { cil_parameter_in(this) } - - /** Holds if this parameter has C# `out` semantics. */ - override predicate isOut() { this.hasOutFlag() and not this.hasInFlag() } - - /** Holds if this parameter has C# `ref` semantics. */ - override predicate isRef() { this.hasOutFlag() and this.hasInFlag() } - - override string toStringWithTypes() { - result = this.getPrefix() + this.getType().toStringWithTypes() - } - - private string getPrefix() { - if this.isOut() - then result = "out " - else - if this.isRef() - then result = "ref " - else result = "" - } - - override Location getLocation() { result = this.getDeclaringElement().getLocation() } -} - -/** A method parameter. */ -deprecated class MethodParameter extends Parameter, StackVariable { - /** Gets the method declaring this parameter. */ - override Method getMethod() { this = result.getARawParameter() } - - override ParameterAccess getAnAccess() { result.getTarget() = this } - - /** Gets a parameter in an overridden method. */ - MethodParameter getOverriddenParameter() { - result = this.getMethod().getOverriddenMethod().getRawParameter(this.getRawPosition()) - } - - override MethodParameter getUnboundDeclaration() { - result = this.getMethod().getUnboundDeclaration().getRawParameter(this.getRawPosition()) - } - - override string toString() { result = Parameter.super.toString() } - - override string toStringWithTypes() { result = Parameter.super.toStringWithTypes() } - - override Type getType() { result = Parameter.super.getType() } - - override Location getLocation() { result = Parameter.super.getLocation() } -} - -/** A parameter corresponding to `this`. */ -deprecated class ThisParameter extends MethodParameter { - ThisParameter() { - not this.getMethod().isStatic() and - this.getIndex() = 0 - } -} - -/** A field. */ -deprecated class Field extends DotNet::Field, Variable, Member, CustomModifierReceiver, @cil_field { - override string toString() { result = this.getName() } - - override string toStringWithTypes() { - result = this.getDeclaringType().toStringWithTypes() + "." + this.getName() - } - - override string getName() { cil_field(this, _, result, _) } - - override Type getType() { cil_field(this, _, _, result) } - - override ValueOrRefType getDeclaringType() { cil_field(this, result, _, _) } - - override Location getLocation() { result = this.getDeclaringType().getLocation() } - - /** Holds if this declaration is `ref`. */ - predicate isRef() { cil_type_annotation(this, 32) } -} diff --git a/csharp/ql/lib/semmle/code/cil/internal/SsaImpl.qll b/csharp/ql/lib/semmle/code/cil/internal/SsaImpl.qll deleted file mode 100644 index 41acf8ed1f6..00000000000 --- a/csharp/ql/lib/semmle/code/cil/internal/SsaImpl.qll +++ /dev/null @@ -1,87 +0,0 @@ -private import cil -private import CIL -private import codeql.ssa.Ssa as SsaImplCommon - -deprecated private module SsaInput implements SsaImplCommon::InputSig { - class BasicBlock = CIL::BasicBlock; - - class ControlFlowNode = CIL::ControlFlowNode; - - BasicBlock getImmediateBasicBlockDominator(BasicBlock bb) { result = bb.getImmediateDominator() } - - BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() } - - class ExitBasicBlock extends BasicBlock, CIL::ExitBasicBlock { } - - class SourceVariable = CIL::StackVariable; - - predicate variableWrite(BasicBlock bb, int i, SourceVariable v, boolean certain) { - forceCachingInSameStage() and - exists(CIL::VariableUpdate vu | - vu.updatesAt(bb, i) and - v = vu.getVariable() and - certain = true - ) - } - - predicate variableRead(BasicBlock bb, int i, SourceVariable v, boolean certain) { - exists(CIL::ReadAccess ra | bb.getNode(i) = ra | - ra.getTarget() = v and - certain = true - ) - } -} - -deprecated import SsaImplCommon::Make - -cached -private module Cached { - private import CIL - - cached - deprecated predicate forceCachingInSameStage() { any() } - - cached - deprecated ReadAccess getARead(Definition def) { - exists(BasicBlock bb, int i | - ssaDefReachesRead(_, def, bb, i) and - result = bb.getNode(i) - ) - } - - cached - deprecated ReadAccess getAFirstReadExt(DefinitionExt def) { - exists(BasicBlock bb1, int i1, BasicBlock bb2, int i2 | - def.definesAt(_, bb1, i1, _) and - adjacentDefReadExt(def, _, bb1, i1, bb2, i2) and - result = bb2.getNode(i2) - ) - } - - cached - deprecated predicate hasAdjacentReadsExt(DefinitionExt def, ReadAccess first, ReadAccess second) { - exists(BasicBlock bb1, int i1, BasicBlock bb2, int i2 | - first = bb1.getNode(i1) and - adjacentDefReadExt(def, _, bb1, i1, bb2, i2) and - second = bb2.getNode(i2) - ) - } - - cached - deprecated Definition getAPhiInput(PhiNode phi) { phiHasInputFromBlock(phi, result, _) } - - cached - deprecated predicate lastRefBeforeRedefExt( - DefinitionExt def, BasicBlock bb, int i, DefinitionExt next - ) { - lastRefRedefExt(def, _, bb, i, next) - } -} - -import Cached - -private module Deprecated { - private import CIL -} - -import Deprecated diff --git a/csharp/ql/lib/semmle/code/csharp/Callable.qll b/csharp/ql/lib/semmle/code/csharp/Callable.qll index 59cffa8d39e..03de29d6d43 100644 --- a/csharp/ql/lib/semmle/code/csharp/Callable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Callable.qll @@ -21,70 +21,6 @@ private import TypeRef * (`LocalFunction`). */ class Callable extends Parameterizable, ExprOrStmtParent, @callable { - pragma[noinline] - deprecated private string getDeclaringTypeLabel() { result = this.getDeclaringType().getLabel() } - - pragma[noinline] - deprecated private string getParameterTypeLabelNonGeneric(int p) { - not this instanceof Generic and - result = this.getParameter(p).getType().getLabel() - } - - language[monotonicAggregates] - pragma[nomagic] - deprecated private string getMethodParamListNonGeneric() { - result = - concat(int p | - p in [0 .. this.getNumberOfParameters() - 1] - | - this.getParameterTypeLabelNonGeneric(p), "," order by p - ) - } - - pragma[noinline] - deprecated private string getParameterTypeLabelGeneric(int p) { - this instanceof Generic and - result = this.getParameter(p).getType().getLabel() - } - - language[monotonicAggregates] - pragma[nomagic] - deprecated private string getMethodParamListGeneric() { - result = - concat(int p | - p in [0 .. this.getNumberOfParameters() - 1] - | - this.getParameterTypeLabelGeneric(p), "," order by p - ) - } - - pragma[noinline] - deprecated private string getLabelNonGeneric() { - not this instanceof Generic and - result = - this.getReturnTypeLabel() + " " + this.getDeclaringTypeLabel() + "." + - this.getUndecoratedName() + "(" + this.getMethodParamListNonGeneric() + ")" - } - - pragma[noinline] - deprecated private string getLabelGeneric() { - result = - this.getReturnTypeLabel() + " " + this.getDeclaringTypeLabel() + "." + - this.getUndecoratedName() + getGenericsLabel(this) + "(" + this.getMethodParamListGeneric() + - ")" - } - - deprecated final override string getLabel() { - result = this.getLabelNonGeneric() or - result = this.getLabelGeneric() - } - - deprecated private string getReturnTypeLabel() { - result = this.getReturnType().getLabel() - or - not exists(this.getReturnType()) and result = "System.Void" - } - /** Gets the return type of this callable. */ Type getReturnType() { none() } diff --git a/csharp/ql/lib/semmle/code/csharp/Element.qll b/csharp/ql/lib/semmle/code/csharp/Element.qll index a48241a1408..faf636d9623 100644 --- a/csharp/ql/lib/semmle/code/csharp/Element.qll +++ b/csharp/ql/lib/semmle/code/csharp/Element.qll @@ -27,12 +27,6 @@ class Element extends @element { /** Holds if this element is from an assembly. */ predicate fromLibrary() { this.getFile().fromLibrary() } - /** - * Gets the "language" of this program element, as defined by the extension of the filename. - * For example, C# has language "cs", and Visual Basic has language "vb". - */ - deprecated final string getLanguage() { result = this.getLocation().getFile().getExtension() } - /** * Gets a comma-separated list of the names of the primary CodeQL classes to which this element belongs. * @@ -159,29 +153,5 @@ class NamedElement extends Element, @named_element { qualifier = "" and name = this.getName() } - /** Gets a unique string label for this element. */ - cached - deprecated string getLabel() { none() } - - /** Holds if `other` has the same metadata handle in the same assembly. */ - deprecated predicate matchesHandle(NamedElement other) { - exists(Assembly asm, int handle | - metadata_handle(this, asm, handle) and - metadata_handle(other, asm, handle) - ) - } - - /** - * Holds if this element was compiled from source code that is also present in the - * database. That is, this element corresponds to another element from source. - */ - deprecated predicate compiledFromSource() { - not this.fromSource() and - exists(NamedElement other | other != this | - this.matchesHandle(other) and - other.fromSource() - ) - } - override string toString() { result = this.getName() } } diff --git a/csharp/ql/lib/semmle/code/csharp/File.qll b/csharp/ql/lib/semmle/code/csharp/File.qll index 3e1a0ca477b..464e08cebb4 100644 --- a/csharp/ql/lib/semmle/code/csharp/File.qll +++ b/csharp/ql/lib/semmle/code/csharp/File.qll @@ -61,7 +61,7 @@ class File extends Container, Impl::File { /** Holds if this file contains source code. */ final predicate fromSource() { - this.getExtension() = ["cs", "cshtml"] and + this.getExtension() = ["cs", "cshtml", "razor"] and not this.isStub() } diff --git a/csharp/ql/lib/semmle/code/csharp/Generics.qll b/csharp/ql/lib/semmle/code/csharp/Generics.qll index dd60ed0b0de..4790c9637fc 100644 --- a/csharp/ql/lib/semmle/code/csharp/Generics.qll +++ b/csharp/ql/lib/semmle/code/csharp/Generics.qll @@ -103,33 +103,6 @@ class ConstructedGeneric extends Generic { final int getNumberOfTypeArguments() { result = count(int i | exists(this.getTypeArgument(i))) } } -/** - * INTERNAL: Do not use. - * - * Constructs the label suffix for a generic method or type. - */ -deprecated string getGenericsLabel(Generic g) { - result = "`" + g.(UnboundGeneric).getNumberOfTypeParameters() - or - result = "<" + typeArgs(g) + ">" -} - -pragma[noinline] -deprecated private string getTypeArgumentLabel(ConstructedGeneric generic, int p) { - result = generic.getTypeArgument(p).getLabel() -} - -language[monotonicAggregates] -pragma[nomagic] -deprecated private string typeArgs(ConstructedGeneric generic) { - result = - concat(int p | - p in [0 .. generic.getNumberOfTypeArguments() - 1] - | - getTypeArgumentLabel(generic, p), "," - ) -} - /** Gets the type arguments as a comma-separated string. */ language[monotonicAggregates] private string getTypeArgumentsToString(ConstructedGeneric cg) { @@ -264,8 +237,6 @@ class TypeParameter extends Type, @type_parameter { /** Gets the index of this type parameter. For example the index of `U` in `Func` is 1. */ override int getIndex() { type_parameters(this, result, _, _) } - deprecated final override string getLabel() { result = "!" + this.getIndex() } - override string getUndecoratedName() { result = "!" + this.getIndex() } /** Gets the generic that defines this type parameter. */ diff --git a/csharp/ql/lib/semmle/code/csharp/Type.qll b/csharp/ql/lib/semmle/code/csharp/Type.qll index 1fd8e41642b..e5a2c1b07c1 100644 --- a/csharp/ql/lib/semmle/code/csharp/Type.qll +++ b/csharp/ql/lib/semmle/code/csharp/Type.qll @@ -76,30 +76,6 @@ class ValueOrRefType extends Type, Attributable, @value_or_ref_type { /** Gets a nested child type, if any. */ NestedType getAChildType() { nested_types(result, this, _) } - deprecated private string getPrefixWithTypes() { - result = this.getDeclaringType().getLabel() + "." - or - if this.getDeclaringNamespace().isGlobalNamespace() - then result = "" - else result = this.getDeclaringNamespace().getFullName() + "." - } - - pragma[noinline] - deprecated private string getLabelNonGeneric() { - not this instanceof Generic and - result = this.getPrefixWithTypes() + this.getUndecoratedName() - } - - pragma[noinline] - deprecated private string getLabelGeneric() { - result = this.getPrefixWithTypes() + this.getUndecoratedName() + getGenericsLabel(this) - } - - deprecated override string getLabel() { - result = this.getLabelNonGeneric() or - result = this.getLabelGeneric() - } - /** * Gets the source namespace declaration in which this type is declared, if any. * This only holds for non-nested types. @@ -996,8 +972,6 @@ class FunctionPointerType extends Type, Parameterizable, @function_pointer_type AnnotatedType getAnnotatedReturnType() { result.appliesTo(this) } override string getAPrimaryQlClass() { result = "FunctionPointerType" } - - deprecated override string getLabel() { result = this.getName() } } /** @@ -1116,8 +1090,6 @@ class ArrayType extends RefType, @array_type { array_element_type(this, _, _, getTypeRef(result)) } - deprecated final override string getLabel() { result = this.getElementType().getLabel() + "[]" } - /** Holds if this array type has the same shape (dimension and rank) as `that` array type. */ predicate hasSameShapeAs(ArrayType that) { this.getDimension() = that.getDimension() and @@ -1180,8 +1152,6 @@ class PointerType extends Type, @pointer_type { final override string getName() { types(this, _, result) } - deprecated final override string getLabel() { result = this.getReferentType().getLabel() + "*" } - final override string getUndecoratedName() { result = this.getReferentType().getUndecoratedName() } @@ -1271,8 +1241,6 @@ class TupleType extends ValueType, @tuple_type { ")" } - deprecated override string getLabel() { result = this.getUnderlyingType().getLabel() } - override Type getChild(int i) { result = this.getUnderlyingType().getChild(i) } override string getAPrimaryQlClass() { result = "TupleType" } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/BaseSSA.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/BaseSSA.qll index 7a20ceb7abd..e39d26d80b2 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/BaseSSA.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/BaseSSA.qll @@ -29,7 +29,7 @@ module BaseSsa { ) { exists(ControlFlow::ControlFlow::BasicBlocks::EntryBlock entry | c = entry.getCallable() and - // In case `c` has multiple bodies, we want each body to gets its own implicit + // In case `c` has multiple bodies, we want each body to get its own implicit // entry definition. In case `c` doesn't have multiple bodies, the line below // is simply the same as `bb = entry`, because `entry.getFirstNode().getASuccessor()` // will be in the entry block. diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll index 3b1439511d1..359fa71744b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll index 3b1439511d1..359fa71744b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll index 3b1439511d1..359fa71744b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll index 3b1439511d1..359fa71744b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll index 3b1439511d1..359fa71744b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index 7253d0581a5..52c4c58d977 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -267,8 +267,9 @@ module VariableCapture { private predicate closureFlowStep(ControlFlow::Nodes::ExprNode e1, ControlFlow::Nodes::ExprNode e2) { e1 = LocalFlow::getALastEvalNode(e2) or - exists(Ssa::Definition def | - LocalFlow::ssaDefAssigns(def.getAnUltimateDefinition(), e1) and + exists(Ssa::Definition def, AssignableDefinition adef | + LocalFlow::defAssigns(adef, _, e1) and + def.getAnUltimateDefinition().(Ssa::ExplicitDefinition).getADefinition() = adef and exists(def.getAReadAtNode(e2)) ) } @@ -492,6 +493,30 @@ module VariableCapture { } } +/** Provides logic related to SSA. */ +module SsaFlow { + private module Impl = SsaImpl::DataFlowIntegration; + + Impl::Node asNode(Node n) { + n = TSsaNode(result) + or + result.(Impl::ExprNode).getExpr() = n.(ExprNode).getControlFlowNode() + or + result.(Impl::ExprPostUpdateNode).getExpr() = + n.(PostUpdateNode).getPreUpdateNode().(ExprNode).getControlFlowNode() + or + result.(Impl::ParameterNode).getParameter() = n.(ExplicitParameterNode).getSsaDefinition() + } + + predicate localFlowStep(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo, boolean isUseStep) { + Impl::localFlowStep(def, asNode(nodeFrom), asNode(nodeTo), isUseStep) + } + + predicate localMustFlowStep(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) { + Impl::localMustFlowStep(def, asNode(nodeFrom), asNode(nodeTo)) + } +} + /** Provides predicates related to local data flow. */ module LocalFlow { class LocalExprStepConfiguration extends ControlFlowReachabilityConfiguration { @@ -617,105 +642,6 @@ module LocalFlow { any(LocalExprStepConfiguration x).hasDefPath(_, value, def, cfnDef) } - predicate ssaDefAssigns(Ssa::ExplicitDefinition ssaDef, ControlFlow::Nodes::ExprNode value) { - exists(AssignableDefinition def, ControlFlow::Node cfnDef | - any(LocalExprStepConfiguration conf).hasDefPath(_, value, def, cfnDef) and - ssaDef.getADefinition() = def and - ssaDef.getControlFlowNode() = cfnDef - ) - } - - /** - * An uncertain SSA definition. Either an uncertain explicit definition or an - * uncertain qualifier definition. - * - * Restricts `Ssa::UncertainDefinition` by excluding implicit call definitions, - * as we---conservatively---consider such definitions to be certain. - */ - class UncertainExplicitSsaDefinition extends Ssa::UncertainDefinition { - UncertainExplicitSsaDefinition() { - this instanceof Ssa::ExplicitDefinition - or - this = - any(Ssa::ImplicitQualifierDefinition qdef | - qdef.getQualifierDefinition() instanceof UncertainExplicitSsaDefinition - ) - } - } - - /** An SSA definition into which another SSA definition may flow. */ - private class SsaInputDefinitionExtNode extends SsaDefinitionExtNode { - SsaInputDefinitionExtNode() { - def instanceof Ssa::PhiNode - or - def instanceof SsaImpl::PhiReadNode - or - def instanceof LocalFlow::UncertainExplicitSsaDefinition - } - } - - /** - * Holds if `nodeFrom` is a last node referencing SSA definition `def`, which - * can reach `next`. - */ - private predicate localFlowSsaInputFromDef( - Node nodeFrom, SsaImpl::DefinitionExt def, SsaInputDefinitionExtNode next - ) { - exists(ControlFlow::BasicBlock bb, int i | - SsaImpl::lastRefBeforeRedefExt(def, bb, i, next.getDefinitionExt()) and - def.definesAt(_, bb, i, _) and - def = getSsaDefinitionExt(nodeFrom) and - nodeFrom != next - ) - } - - /** - * Holds if `read` is a last node reading SSA definition `def`, which - * can reach `next`. - */ - predicate localFlowSsaInputFromRead( - Node read, SsaImpl::DefinitionExt def, SsaInputDefinitionExtNode next - ) { - exists(ControlFlow::BasicBlock bb, int i | - SsaImpl::lastRefBeforeRedefExt(def, bb, i, next.getDefinitionExt()) and - read.asExprAtNode(bb.getNode(i)) instanceof AssignableRead - ) - } - - private SsaImpl::DefinitionExt getSsaDefinitionExt(Node n) { - result = n.(SsaDefinitionExtNode).getDefinitionExt() - or - result = n.(ExplicitParameterNode).getSsaDefinition() - } - - /** - * Holds if there is a local use-use flow step from `nodeFrom` to `nodeTo` - * involving SSA definition `def`. - */ - predicate localSsaFlowStepUseUse(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) { - exists(ControlFlow::Node cfnFrom, ControlFlow::Node cfnTo | - SsaImpl::adjacentReadPairSameVarExt(def, cfnFrom, cfnTo) and - nodeTo = TExprNode(cfnTo) and - nodeFrom = TExprNode(cfnFrom) - ) - } - - /** - * Holds if there is a local flow step from `nodeFrom` to `nodeTo` involving - * SSA definition `def`. - */ - predicate localSsaFlowStep(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) { - // Flow from SSA definition/parameter to first read - def = getSsaDefinitionExt(nodeFrom) and - SsaImpl::firstReadSameVarExt(def, nodeTo.(ExprNode).getControlFlowNode()) - or - // Flow from read to next read - localSsaFlowStepUseUse(def, nodeFrom.(PostUpdateNode).getPreUpdateNode(), nodeTo) - or - // Flow into phi (read)/uncertain SSA definition node from def - localFlowSsaInputFromDef(nodeFrom, def, nodeTo) - } - /** * Holds if the source variable of SSA definition `def` is an instance field. */ @@ -800,10 +726,7 @@ module LocalFlow { node2.asExpr() instanceof AssignExpr ) or - exists(SsaImpl::Definition def | - def = getSsaDefinitionExt(node1) and - exists(SsaImpl::getAReadAtNode(def, node2.(ExprNode).getControlFlowNode())) - ) + SsaFlow::localMustFlowStep(_, node1, node2) or node2 = node1.(LocalFunctionCreationNode).getAnAccess(true) or @@ -827,23 +750,15 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) { ( LocalFlow::localFlowStepCommon(nodeFrom, nodeTo) or - exists(SsaImpl::DefinitionExt def | + exists(SsaImpl::DefinitionExt def, boolean isUseStep | + SsaFlow::localFlowStep(def, nodeFrom, nodeTo, isUseStep) and not LocalFlow::usesInstanceField(def) and not def instanceof VariableCapture::CapturedSsaDefinitionExt | - LocalFlow::localSsaFlowStep(def, nodeFrom, nodeTo) + isUseStep = false or - LocalFlow::localSsaFlowStepUseUse(def, nodeFrom, nodeTo) and - not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _) and - nodeFrom != nodeTo - or - // Flow into phi (read)/uncertain SSA definition node from read - exists(Node read | LocalFlow::localFlowSsaInputFromRead(read, def, nodeTo) | - nodeFrom = read and - not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _) - or - nodeFrom.(PostUpdateNode).getPreUpdateNode() = read - ) + isUseStep = true and + not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _) ) or nodeTo.(ObjectCreationNode).getPreUpdateNode() = nodeFrom.(ObjectInitializerNode) @@ -1099,11 +1014,7 @@ private module Cached { cached newtype TNode = TExprNode(ControlFlow::Nodes::ElementNode cfn) { cfn.getAstNode() instanceof Expr } or - TSsaDefinitionExtNode(SsaImpl::DefinitionExt def) { - // Handled by `TExplicitParameterNode` below - not def instanceof Ssa::ImplicitParameterDefinition and - def.getBasicBlock() = any(DataFlowCallable c).getAControlFlowNode().getBasicBlock() - } or + TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or TAssignableDefinitionNode(AssignableDefinition def, ControlFlow::Node cfn) { cfn = def.getExpr().getAControlFlowNode() } or @@ -1166,17 +1077,7 @@ private module Cached { predicate localFlowStepImpl(Node nodeFrom, Node nodeTo) { LocalFlow::localFlowStepCommon(nodeFrom, nodeTo) or - LocalFlow::localSsaFlowStepUseUse(_, nodeFrom, nodeTo) and - nodeFrom != nodeTo - or - LocalFlow::localSsaFlowStep(_, nodeFrom, nodeTo) - or - // Flow into phi (read)/uncertain SSA definition node from read - exists(Node read | LocalFlow::localFlowSsaInputFromRead(read, _, nodeTo) | - nodeFrom = read - or - nodeFrom.(PostUpdateNode).getPreUpdateNode() = read - ) + SsaFlow::localFlowStep(_, nodeFrom, nodeTo, _) or // Simple flow through library code is included in the exposed local // step relation, even though flow is technically inter-procedural @@ -1245,7 +1146,7 @@ import Cached /** Holds if `n` should be hidden from path explanations. */ predicate nodeIsHidden(Node n) { - n instanceof SsaDefinitionExtNode + n instanceof SsaNode or exists(Parameter p | p = n.(ParameterNode).getParameter() | not p.fromSource()) or @@ -1279,13 +1180,16 @@ predicate nodeIsHidden(Node n) { n instanceof CaptureNode } -/** An SSA definition, viewed as a node in a data flow graph. */ -class SsaDefinitionExtNode extends NodeImpl, TSsaDefinitionExtNode { +/** An SSA node. */ +abstract class SsaNode extends NodeImpl, TSsaNode { + SsaImpl::DataFlowIntegration::SsaNode node; SsaImpl::DefinitionExt def; - SsaDefinitionExtNode() { this = TSsaDefinitionExtNode(def) } + SsaNode() { + this = TSsaNode(node) and + def = node.getDefinitionExt() + } - /** Gets the underlying SSA definition. */ SsaImpl::DefinitionExt getDefinitionExt() { result = def } override DataFlowCallable getEnclosingCallableImpl() { @@ -1298,9 +1202,57 @@ class SsaDefinitionExtNode extends NodeImpl, TSsaDefinitionExtNode { result = def.(Ssa::Definition).getControlFlowNode() } - override Location getLocationImpl() { result = def.getLocation() } + override Location getLocationImpl() { result = node.getLocation() } - override string toStringImpl() { result = def.toString() } + override string toStringImpl() { result = node.toString() } +} + +/** An (extended) SSA definition, viewed as a node in a data flow graph. */ +class SsaDefinitionExtNode extends SsaNode { + override SsaImpl::DataFlowIntegration::SsaDefinitionExtNode node; +} + +/** + * A node that represents an input to an SSA phi (read) definition. + * + * This allows for barrier guards to filter input to phi nodes. For example, in + * + * ```csharp + * var x = taint; + * if (x != "safe") + * { + * x = "safe"; + * } + * sink(x); + * ``` + * + * the `false` edge out of `x != "safe"` guards the input from `x = taint` into the + * `phi` node after the condition. + * + * It is also relevant to filter input into phi read nodes: + * + * ```csharp + * var x = taint; + * if (b) + * { + * if (x != "safe1") + * { + * return; + * } + * } else { + * if (x != "safe2") + * { + * return; + * } + * } + * + * sink(x); + * ``` + * + * both inputs into the phi read node after the outer condition are guarded. + */ +class SsaInputNode extends SsaNode { + override SsaImpl::DataFlowIntegration::SsaInputNode node; } /** A definition, viewed as a node in a data flow graph. */ @@ -2946,7 +2898,7 @@ private predicate delegateCreationStep(Node nodeFrom, Node nodeTo) { /** Extra data-flow steps needed for lambda flow analysis. */ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preservesValue) { exists(SsaImpl::DefinitionExt def | - LocalFlow::localSsaFlowStep(def, nodeFrom, nodeTo) and + SsaFlow::localFlowStep(def, nodeFrom, nodeTo, _) and preservesValue = true | LocalFlow::usesInstanceField(def) @@ -3075,6 +3027,7 @@ ContentApprox getContentApprox(Content c) { * ensuring that they are visible to the taint tracking / data flow library. */ private module SyntheticFields { + private import semmle.code.csharp.dataflow.internal.ExternalFlow private import semmle.code.csharp.frameworks.system.threading.Tasks private import semmle.code.csharp.frameworks.system.runtime.CompilerServices } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index df876aae455..35c4c673a00 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -171,8 +171,14 @@ signature predicate guardChecksSig(Guard g, Expr e, AbstractValue v); * in data flow and taint tracking. */ module BarrierGuard { + private import SsaImpl as SsaImpl + /** Gets a node that is safely guarded by the given guard check. */ - ExprNode getABarrierNode() { + pragma[nomagic] + Node getABarrierNode() { + SsaFlow::asNode(result) = + SsaImpl::DataFlowIntegration::BarrierGuard::getABarrierNode() + or exists(Guard g, Expr e, AbstractValue v | guardChecks(g, e, v) and g.controlsNode(result.getControlFlowNode(), e, v) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll index f1c299c2f25..4ac73cae9e9 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -28,11 +28,14 @@ * types can be short names or fully qualified names (mixing these two options * is not allowed within a single signature). * 6. The `ext` column specifies additional API-graph-like edges. Currently - * there are only two valid values: "" and "Attribute". The empty string has no - * effect. "Attribute" applies if `name` and `signature` were left blank and - * acts by selecting an element that is attributed with the attribute type - * selected by the first 4 columns. This can be another member such as a field, - * property, method, or parameter. + * there are only a few valid values: "", "Attribute", "Attribute.Getter" and "Attribute.Setter". + * The empty string has no effect. "Attribute" applies if `name` and `signature` were left blank + * and acts by selecting an element (except for properties and indexers) that is attributed with + * the attribute type selected by the first 4 columns. This can be another member such as + * a field, method, or parameter. "Attribute.Getter" and "Attribute.Setter" work similar to + * "Attribute", except that they can only be applied to properties and indexers. + * "Attribute.Setter" selects the setter element of a property/indexer and "Attribute.Getter" + * selects the getter. * 7. The `input` column specifies how data enters the element selected by the * first 6 columns, and the `output` column specifies how data leaves the * element selected by the first 6 columns. For sinks, an `input` can be either "", @@ -96,6 +99,7 @@ private import FlowSummaryImpl::Private::External private import semmle.code.csharp.commons.QualifiedName private import semmle.code.csharp.dispatch.OverridableCallable private import semmle.code.csharp.frameworks.System +private import codeql.dataflow.internal.AccessPathSyntax as AccessPathSyntax private import codeql.mad.ModelValidation as SharedModelVal /** @@ -194,8 +198,6 @@ predicate modelCoverage(string namespace, int namespaces, string kind, string pa /** Provides a query predicate to check the MaD models for validation errors. */ module ModelValidation { - private import codeql.dataflow.internal.AccessPathSyntax as AccessPathSyntax - private predicate getRelevantAccessPath(string path) { summaryModel(_, _, _, _, _, _, path, _, _, _, _) or summaryModel(_, _, _, _, _, _, _, path, _, _, _) or @@ -289,7 +291,7 @@ module ModelValidation { not signature.regexpMatch("|\\([a-zA-Z0-9_<>\\.\\+\\*,\\[\\]]*\\)") and result = "Dubious signature \"" + signature + "\" in " + pred + " model." or - not ext.regexpMatch("|Attribute") and + not ext = ["", "Attribute", "Attribute.Getter", "Attribute.Setter"] and result = "Unrecognized extra API graph element \"" + ext + "\" in " + pred + " model." or invalidProvenance(provenance) and @@ -406,6 +408,30 @@ Declaration interpretBaseDeclaration(string namespace, string type, string name, ) } +pragma[inline] +private Declaration interpretExt(Declaration d, ExtPath ext) { + ext = "" and result = d + or + ext.getToken(0) = "Attribute" and + ( + not exists(ext.getToken(1)) and + result.(Attributable).getAnAttribute().getType() = d and + not result instanceof Property and + not result instanceof Indexer + or + exists(string accessor | accessor = ext.getToken(1) | + result.(Accessor).getDeclaration().getAnAttribute().getType() = d and + ( + result instanceof Getter and + accessor = "Getter" + or + result instanceof Setter and + accessor = "Setter" + ) + ) + ) +} + /** Gets the source/sink/summary/neutral element corresponding to the supplied parameters. */ pragma[nomagic] Declaration interpretElement( @@ -425,12 +451,29 @@ Declaration interpretElement( ) ) | - ext = "" and result = d - or - ext = "Attribute" and result.(Attributable).getAnAttribute().getType() = d + result = interpretExt(d, ext) ) } +private predicate relevantExt(string ext) { + summaryModel(_, _, _, _, _, ext, _, _, _, _, _) or + sourceModel(_, _, _, _, _, ext, _, _, _, _) or + sinkModel(_, _, _, _, _, ext, _, _, _, _) +} + +private class ExtPath = AccessPathSyntax::AccessPath::AccessPath; + +private predicate parseSynthField(AccessPathToken c, string name) { + c.getName() = "SyntheticField" and name = c.getAnArgument() +} + +/** + * An adapter class for adding synthetic fields from MaD. + */ +private class SyntheticFieldAdapter extends SyntheticField { + SyntheticFieldAdapter() { parseSynthField(_, this) } +} + cached private module Cached { /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll index 8fd12d90ae7..00665d836e1 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll @@ -6,6 +6,7 @@ import csharp private import codeql.ssa.Ssa as SsaImplCommon private import AssignableDefinitions private import semmle.code.csharp.controlflow.internal.PreSsa +private import semmle.code.csharp.controlflow.Guards as Guards private module SsaInput implements SsaImplCommon::InputSig { class BasicBlock = ControlFlow::BasicBlock; @@ -49,7 +50,7 @@ private module SsaInput implements SsaImplCommon::InputSig { } } -private import SsaImplCommon::Make as Impl +import SsaImplCommon::Make as Impl class Definition = Impl::Definition; @@ -108,7 +109,11 @@ private module SourceVariableImpl { */ predicate isPlainFieldOrPropAccess(FieldOrPropAccess fpa, FieldOrProp fp, Callable c) { fieldOrPropAccessInCallable(fpa, fp, c) and - (ownFieldOrPropAccess(fpa) or fp.isStatic()) + ( + ownFieldOrPropAccess(fpa) + or + fp.isStatic() and not fp instanceof EnumConstant + ) } /** @@ -757,24 +762,6 @@ private predicate adjacentDefReachesRead( ) } -private predicate adjacentDefReachesReadExt( - DefinitionExt def, SsaInput::SourceVariable v, SsaInput::BasicBlock bb1, int i1, - SsaInput::BasicBlock bb2, int i2 -) { - Impl::adjacentDefReadExt(def, v, bb1, i1, bb2, i2) and - ( - def.definesAt(v, bb1, i1, _) - or - SsaInput::variableRead(bb1, i1, v, true) - ) - or - exists(SsaInput::BasicBlock bb3, int i3 | - adjacentDefReachesReadExt(def, v, bb1, i1, bb3, i3) and - SsaInput::variableRead(bb3, i3, v, false) and - Impl::adjacentDefReadExt(def, v, bb3, i3, bb2, i2) - ) -} - /** Same as `adjacentDefRead`, but skips uncertain reads. */ pragma[nomagic] private predicate adjacentDefSkipUncertainReads( @@ -786,17 +773,6 @@ private predicate adjacentDefSkipUncertainReads( ) } -/** Same as `adjacentDefReadExt`, but skips uncertain reads. */ -pragma[nomagic] -private predicate adjacentDefSkipUncertainReadsExt( - DefinitionExt def, SsaInput::BasicBlock bb1, int i1, SsaInput::BasicBlock bb2, int i2 -) { - exists(SsaInput::SourceVariable v | - adjacentDefReachesReadExt(def, v, bb1, i1, bb2, i2) and - SsaInput::variableRead(bb2, i2, v, true) - ) -} - private predicate adjacentDefReachesUncertainRead( Definition def, SsaInput::BasicBlock bb1, int i1, SsaInput::BasicBlock bb2, int i2 ) { @@ -806,16 +782,6 @@ private predicate adjacentDefReachesUncertainRead( ) } -pragma[nomagic] -private predicate adjacentDefReachesUncertainReadExt( - DefinitionExt def, SsaInput::BasicBlock bb1, int i1, SsaInput::BasicBlock bb2, int i2 -) { - exists(SsaInput::SourceVariable v | - adjacentDefReachesReadExt(def, v, bb1, i1, bb2, i2) and - SsaInput::variableRead(bb2, i2, v, false) - ) -} - /** Same as `lastRefRedef`, but skips uncertain reads. */ pragma[nomagic] private predicate lastRefSkipUncertainReads(Definition def, SsaInput::BasicBlock bb, int i) { @@ -870,7 +836,7 @@ private module Cached { predicate implicitEntryDefinition(ControlFlow::ControlFlow::BasicBlock bb, Ssa::SourceVariable v) { exists(ControlFlow::ControlFlow::BasicBlocks::EntryBlock entry, Callable c | c = entry.getCallable() and - // In case `c` has multiple bodies, we want each body to gets its own implicit + // In case `c` has multiple bodies, we want each body to get its own implicit // entry definition. In case `c` doesn't have multiple bodies, the line below // is simply the same as `bb = entry`, because `entry.getFirstNode().getASuccessor()` // will be in the entry block. @@ -965,19 +931,6 @@ private module Cached { ) } - /** - * Holds if the value defined at SSA definition `def` can reach a read at `cfn`, - * without passing through any other read. - */ - cached - predicate firstReadSameVarExt(DefinitionExt def, ControlFlow::Node cfn) { - exists(ControlFlow::BasicBlock bb1, int i1, ControlFlow::BasicBlock bb2, int i2 | - def.definesAt(_, bb1, i1, _) and - adjacentDefSkipUncertainReadsExt(def, bb1, i1, bb2, i2) and - cfn = bb2.getNode(i2) - ) - } - /** * Holds if the read at `cfn2` is a read of the same SSA definition `def` * as the read at `cfn1`, and `cfn2` can be reached from `cfn1` without @@ -993,23 +946,6 @@ private module Cached { ) } - /** - * Holds if the read at `cfn2` is a read of the same SSA definition `def` - * as the read at `cfn1`, and `cfn2` can be reached from `cfn1` without - * passing through another read. - */ - cached - predicate adjacentReadPairSameVarExt( - DefinitionExt def, ControlFlow::Node cfn1, ControlFlow::Node cfn2 - ) { - exists(ControlFlow::BasicBlock bb1, int i1, ControlFlow::BasicBlock bb2, int i2 | - cfn1 = bb1.getNode(i1) and - variableReadActual(bb1, i1, _) and - adjacentDefSkipUncertainReadsExt(def, bb1, i1, bb2, i2) and - cfn2 = bb2.getNode(i2) - ) - } - cached predicate lastRefBeforeRedef(Definition def, ControlFlow::BasicBlock bb, int i, Definition next) { Impl::lastRefRedef(def, bb, i, next) and @@ -1021,21 +957,6 @@ private module Cached { ) } - cached - predicate lastRefBeforeRedefExt( - DefinitionExt def, ControlFlow::BasicBlock bb, int i, DefinitionExt next - ) { - exists(SsaInput::SourceVariable v | - Impl::lastRefRedefExt(def, v, bb, i, next) and - not SsaInput::variableRead(bb, i, v, false) - ) - or - exists(SsaInput::BasicBlock bb0, int i0 | - Impl::lastRefRedefExt(def, _, bb0, i0, next) and - adjacentDefReachesUncertainReadExt(def, bb, i, bb0, i0) - ) - } - cached predicate lastReadSameVar(Definition def, ControlFlow::Node cfn) { exists(ControlFlow::BasicBlock bb, int i | @@ -1061,6 +982,41 @@ private module Cached { outRefExitRead(bb, i, v) ) } + + cached + module DataFlowIntegration { + import DataFlowIntegrationImpl + + cached + predicate localFlowStep(DefinitionExt def, Node nodeFrom, Node nodeTo, boolean isUseStep) { + DataFlowIntegrationImpl::localFlowStep(def, nodeFrom, nodeTo, isUseStep) + } + + cached + predicate localMustFlowStep(DefinitionExt def, Node nodeFrom, Node nodeTo) { + DataFlowIntegrationImpl::localMustFlowStep(def, nodeFrom, nodeTo) + } + + signature predicate guardChecksSig(Guards::Guard g, Expr e, Guards::AbstractValue v); + + cached // nothing is actually cached + module BarrierGuard { + private predicate guardChecksAdjTypes( + DataFlowIntegrationInput::Guard g, DataFlowIntegrationInput::Expr e, boolean branch + ) { + exists(Guards::AbstractValues::BooleanValue v | + guardChecks(g, e.getAstNode(), v) and + branch = v.getValue() + ) + } + + private Node getABarrierNodeImpl() { + result = DataFlowIntegrationImpl::BarrierGuard::getABarrierNode() + } + + predicate getABarrierNode = getABarrierNodeImpl/0; + } + } } import Cached @@ -1118,3 +1074,64 @@ class PhiReadNode extends DefinitionExt, Impl::PhiReadNode { result = this.getSourceVariable().getEnclosingCallable() } } + +private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInputSig { + private import csharp as Cs + private import semmle.code.csharp.controlflow.BasicBlocks + + class Expr extends ControlFlow::Node { + predicate hasCfgNode(ControlFlow::BasicBlock bb, int i) { this = bb.getNode(i) } + } + + Expr getARead(Definition def) { exists(getAReadAtNode(def, result)) } + + predicate ssaDefAssigns(WriteDefinition def, Expr value) { + // exclude flow directly from RHS to SSA definition, as we instead want to + // go from RHS to matching assingnable definition, and from there to SSA definition + none() + } + + class Parameter = Ssa::ImplicitParameterDefinition; + + predicate ssaDefInitializesParam(WriteDefinition def, Parameter p) { def = p } + + /** + * Allows for flow into uncertain defintions that are not call definitions, + * as we, conservatively, consider such definitions to be certain. + */ + predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { + def instanceof Ssa::ExplicitDefinition + or + def = + any(Ssa::ImplicitQualifierDefinition qdef | + allowFlowIntoUncertainDef(qdef.getQualifierDefinition()) + ) + } + + class Guard extends Guards::Guard { + predicate hasCfgNode(ControlFlow::BasicBlock bb, int i) { + this.getAControlFlowNode() = bb.getNode(i) + } + } + + /** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */ + predicate guardControlsBlock(Guard guard, ControlFlow::BasicBlock bb, boolean branch) { + exists(ConditionBlock conditionBlock, ControlFlow::SuccessorTypes::ConditionalSuccessor s | + guard.getAControlFlowNode() = conditionBlock.getLastNode() and + s.getValue() = branch and + conditionBlock.controls(bb, s) + ) + } + + /** Gets an immediate conditional successor of basic block `bb`, if any. */ + ControlFlow::BasicBlock getAConditionalBasicBlockSuccessor( + ControlFlow::BasicBlock bb, boolean branch + ) { + exists(ControlFlow::SuccessorTypes::ConditionalSuccessor s | + result = bb.getASuccessorByType(s) and + s.getValue() = branch + ) + } +} + +private module DataFlowIntegrationImpl = Impl::DataFlowIntegration; diff --git a/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll index 31670bce305..82bd0d30cab 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll @@ -58,24 +58,6 @@ class SymmetricEncryptionCreateDecryptorSink extends SymmetricEncryptionKeySink override string getDescription() { result = "Decryptor(rgbKey, IV)" } } -/** - * DEPRECATED: Use `SymmetricKey` instead. - * - * Symmetric Key Data Flow configuration. - */ -deprecated class SymmetricKeyTaintTrackingConfiguration extends TaintTracking::Configuration { - SymmetricKeyTaintTrackingConfiguration() { this = "SymmetricKeyTaintTracking" } - - /** Holds if the node is a key source. */ - override predicate isSource(DataFlow::Node src) { src instanceof KeySource } - - /** Holds if the node is a symmetric encryption key sink. */ - override predicate isSink(DataFlow::Node sink) { sink instanceof SymmetricEncryptionKeySink } - - /** Holds if the node is a key sanitizer. */ - override predicate isSanitizer(DataFlow::Node sanitizer) { sanitizer instanceof KeySanitizer } -} - /** * Symmetric Key Data Flow configuration. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll b/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll index 741635bb47f..2e387cc2da6 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll @@ -61,33 +61,6 @@ module HardcodedSymmetricEncryptionKey { } } - /** - * DEPRECATED: Use `HardCodedSymmetricEncryption` instead. - * - * A taint-tracking configuration for uncontrolled data in path expression vulnerabilities. - */ - deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "HardcodedSymmetricEncryptionKey" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } - - /** - * Since `CryptographicBuffer` uses native code inside, taint tracking doesn't pass through it. - * Need to create an additional custom step. - */ - override predicate isAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(MethodCall mc, CryptographicBuffer c | - pred.asExpr() = mc.getAnArgument() and - mc.getTarget() = c.getAMethod() and - succ.asExpr() = mc - ) - } - } - /** * A taint-tracking configuration for uncontrolled data in path expression vulnerabilities. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll index d0c46ba6448..cbb10146a6a 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll @@ -23,21 +23,6 @@ abstract class Sink extends DataFlow::ExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `ClearTextStorage` instead. - * - * A taint-tracking configuration for cleartext storage of sensitive information. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "ClearTextStorage" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for cleartext storage of sensitive information. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll index e33c4e37d28..2b55697ebda 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll @@ -24,21 +24,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `CodeInjection` instead. - * - * A taint-tracking configuration for user input treated as code vulnerabilities. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "CodeInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for user input treated as code vulnerabilities. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll index d0b24125ba9..24c80c07f89 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll @@ -23,21 +23,6 @@ abstract class Sink extends DataFlow::ExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `CommandInjection` instead. - * - * A taint-tracking configuration for command injection vulnerabilities. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "CommandInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for command injection vulnerabilities. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll index cd7119a36af..2bc10dead22 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll @@ -30,21 +30,6 @@ abstract class Sink extends ApiSinkExprNode { */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `ConditionalBypass` instead. - * - * A taint-tracking configuration for user-controlled bypass of sensitive method. - */ -deprecated class Configuration extends TaintTracking::Configuration { - Configuration() { this = "UserControlledBypassOfSensitiveMethodConfiguration" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for user-controlled bypass of sensitive method. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll index 1e5f5ae8256..0726acb05ed 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll @@ -23,21 +23,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `ExposureOfPrivateInformation` instead. - * - * A taint-tracking configuration for private information flowing unencrypted to an external location. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "ExposureOfPrivateInformation" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for private information flowing unencrypted to an external location. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll index 41888fc2557..69a1823a455 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll @@ -73,19 +73,6 @@ class ExternalApiDataNode extends DataFlow::Node { } } -/** - * DEPRECATED: Use `RemoteSourceToExternalApi` instead. - * - * A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. - */ -deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { - UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } -} - /** A configuration for tracking flow from `ThreatModelFlowSource`s to `ExternalApiDataNode`s. */ private module RemoteSourceToExternalApiConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/HardcodedCredentialsQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/HardcodedCredentialsQuery.qll index 63a0bb50732..72951df2f97 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/HardcodedCredentialsQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/HardcodedCredentialsQuery.qll @@ -38,46 +38,6 @@ abstract class Sink extends ApiSinkExprNode { */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `HardcodedCredentials` instead. - * - * A taint-tracking configuration for hard coded credentials. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "HardcodedCredentials" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { - sink instanceof Sink and - // Ignore values that are ultimately returned by mocks, as they don't represent "real" - // credentials. - not any(ReturnedByMockObject mock).getAMemberInitializationValue() = sink.asExpr() and - not any(ReturnedByMockObject mock).getAnArgument() = sink.asExpr() - } - - override predicate hasFlowPath(DataFlow::PathNode source, DataFlow::PathNode sink) { - super.hasFlowPath(source, sink) and - // Exclude hard-coded credentials in tests if they only flow to calls to methods with a name - // like "Add*" "Create*" or "Update*". The rationale is that hard-coded credentials within - // tests that are only used for creating or setting values within tests are unlikely to - // represent credentials to some accessible system. - not ( - source.getNode().asExpr().getFile() instanceof TestFile and - exists(MethodCall createOrAddCall, string createOrAddMethodName | - createOrAddMethodName.matches("Update%") or - createOrAddMethodName.matches("Create%") or - createOrAddMethodName.matches("Add%") - | - createOrAddCall.getTarget().hasName(createOrAddMethodName) and - createOrAddCall.getAnArgument() = sink.getNode().asExpr() - ) - ) - } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for hard coded credentials. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll index 78800f39209..bdba76bfb5c 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll @@ -26,21 +26,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `LdapInjection` instead. - * - * A taint-tracking configuration for unvalidated user input that is used to construct LDAP queries. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "LDAPInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for unvalidated user input that is used to construct LDAP queries. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll index f0153fea2d4..7c4429bcbf8 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll @@ -26,21 +26,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `LogForging` instead. - * - * A taint-tracking configuration for untrusted user input used in log entries. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "LogForging" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for untrusted user input used in log entries. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll index 9333b5b37f2..4e14bed2c33 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll @@ -29,22 +29,6 @@ abstract class Sink extends ApiSinkExprNode { */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `MissingXxmlValidation` instead. - * - * A taint-tracking configuration for untrusted user input processed as XML without validation against a - * known schema. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "MissingXMLValidation" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for untrusted user input processed as XML without validation against a * known schema. diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll index bf4fbd99323..f6225ce36bd 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll @@ -25,21 +25,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `ReDoS` instead. - * - * A taint-tracking configuration for untrusted user input used in dangerous regular expression operations. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "ReDoS" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for untrusted user input used in dangerous regular expression operations. */ @@ -85,20 +70,6 @@ predicate isExponentialRegex(StringLiteral s) { s.getValue().regexpMatch(".*\\(\\([^()*+\\]]+\\]?\\)(\\*|\\+)\\.?\\)(\\*|\\+).*") } -/** - * DEPRECATED: Use `ExponentialRegexDataflow` instead. - * - * A data flow configuration for tracking exponential worst case time regular expression string - * literals to the pattern argument of a regex. - */ -deprecated class ExponentialRegexDataflow extends DataFlow2::Configuration { - ExponentialRegexDataflow() { this = "ExponentialRegex" } - - override predicate isSource(DataFlow::Node s) { isExponentialRegex(s.asExpr()) } - - override predicate isSink(DataFlow::Node s) { s.asExpr() = any(RegexOperation c).getPattern() } -} - /** * A data flow configuration for tracking exponential worst case time regular expression string * literals to the pattern argument of a regex. diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll index 1a053c29f24..8affdb1e9dd 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll @@ -24,21 +24,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `RegexInjection` instead. - * - * A taint-tracking configuration for untrusted user input used to construct regular expressions. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "RegexInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for untrusted user input used to construct regular expressions. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll index fb016dcddae..dd1c088042d 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll @@ -23,21 +23,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `ResourceInjection` instead. - * - * A taint-tracking configuration for untrusted user input used in resource descriptors. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "ResourceInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for untrusted user input used in resource descriptors. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll index 6473aa58e1c..5a900461af7 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll @@ -24,21 +24,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `SqlInjection` instead. - * - * A taint-tracking configuration for SQL injection vulnerabilities. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "SqlInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for SQL injection vulnerabilities. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll index ca2b13439ce..21c3cbdf942 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll @@ -26,21 +26,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `TaintedPath` instead. - * - * A taint-tracking configuration for uncontrolled data in path expression vulnerabilities. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "TaintedPath" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for uncontrolled data in path expression vulnerabilities. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll index a5341aca42f..51aef35272f 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll @@ -51,21 +51,6 @@ abstract class Sanitizer extends DataFlow::Node { } private class ThreatModelSource extends Source instanceof ThreatModelFlowSource { } -/** - * DEPRECATED: Use `TaintToObjectMethodTracking` instead. - * - * User input to object method call deserialization flow tracking. - */ -deprecated class TaintToObjectMethodTrackingConfig extends TaintTracking::Configuration { - TaintToObjectMethodTrackingConfig() { this = "TaintToObjectMethodTrackingConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof InstanceMethodSink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * User input to object method call deserialization flow tracking configuration. */ @@ -82,23 +67,6 @@ private module TaintToObjectMethodTrackingConfig implements DataFlow::ConfigSig */ module TaintToObjectMethodTracking = TaintTracking::Global; -/** - * DEPRECATED: Use `JsonConvertTracking` instead. - * - * User input to `JsonConvert` call deserialization flow tracking. - */ -deprecated class JsonConvertTrackingConfig extends TaintTracking::Configuration { - JsonConvertTrackingConfig() { this = "JsonConvertTrackingConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { - sink instanceof NewtonsoftJsonConvertDeserializeObjectMethodSink - } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * User input to `JsonConvert` call deserialization flow tracking configuration. */ @@ -117,61 +85,6 @@ private module JsonConvertTrackingConfig implements DataFlow::ConfigSig { */ module JsonConvertTracking = TaintTracking::Global; -/** - * DEPRECATED: Use `TypeNameTracking` instead. - * - * Tracks unsafe `TypeNameHandling` setting to `JsonConvert` call - */ -deprecated class TypeNameTrackingConfig extends DataFlow::Configuration { - TypeNameTrackingConfig() { this = "TypeNameTrackingConfig" } - - override predicate isSource(DataFlow::Node source) { - ( - source.asExpr() instanceof MemberConstantAccess and - source.getType() instanceof TypeNameHandlingEnum - or - source.asExpr() instanceof IntegerLiteral - ) and - source.asExpr().hasValue() and - not source.asExpr().getValue() = "0" - } - - override predicate isSink(DataFlow::Node sink) { - exists(MethodCall mc, Method m, Expr expr | - m = mc.getTarget() and - ( - not mc.getArgument(0).hasValue() and - m instanceof NewtonsoftJsonConvertClassDeserializeObjectMethod - ) and - expr = mc.getAnArgument() and - sink.asExpr() = expr and - expr.getType() instanceof JsonSerializerSettingsClass - ) - } - - override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - node1.asExpr() instanceof IntegerLiteral and - node2.asExpr().(CastExpr).getExpr() = node1.asExpr() - or - node1.getType() instanceof TypeNameHandlingEnum and - exists(PropertyWrite pw, Property p, Assignment a | - a.getLValue() = pw and - pw.getProperty() = p and - p.getDeclaringType() instanceof JsonSerializerSettingsClass and - p.hasName("TypeNameHandling") and - ( - node1.asExpr() = a.getRValue() and - node2.asExpr() = pw.getQualifier() - or - exists(ObjectInitializer oi | - node1.asExpr() = oi.getAMemberInitializer().getRValue() and - node2.asExpr() = oi - ) - ) - ) - } -} - /** * Configuration module for tracking unsafe `TypeNameHandling` setting to `JsonConvert` calls. */ @@ -228,24 +141,6 @@ private module TypeNameTrackingConfig implements DataFlow::ConfigSig { */ module TypeNameTracking = DataFlow::Global; -/** - * DEPRECATED: Use `TaintToConstructorOrStaticMethodTracking` instead. - * - * User input to static method or constructor call deserialization flow tracking. - */ -deprecated class TaintToConstructorOrStaticMethodTrackingConfig extends TaintTracking::Configuration -{ - TaintToConstructorOrStaticMethodTrackingConfig() { - this = "TaintToConstructorOrStaticMethodTrackingConfig" - } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ConstructorOrStaticMethodSink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * User input to static method or constructor call deserialization flow tracking configuration. */ @@ -263,41 +158,6 @@ private module TaintToConstructorOrStaticMethodTrackingConfig implements DataFlo module TaintToConstructorOrStaticMethodTracking = TaintTracking::Global; -/** - * DEPRECATED: Use `TaintToObjectTypeTracking` instead. - * - * User input to instance type flow tracking. - */ -deprecated class TaintToObjectTypeTrackingConfig extends TaintTracking2::Configuration { - TaintToObjectTypeTrackingConfig() { this = "TaintToObjectTypeTrackingConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { - exists(MethodCall mc | - mc.getTarget() instanceof UnsafeDeserializer and - sink.asExpr() = mc.getQualifier() - ) - } - - override predicate isAdditionalTaintStep(DataFlow::Node n1, DataFlow::Node n2) { - exists(MethodCall mc, Method m | - m = mc.getTarget() and - m.getDeclaringType().hasFullyQualifiedName("System", "Type") and - m.hasName("GetType") and - m.isStatic() and - n1.asExpr() = mc.getArgument(0) and - n2.asExpr() = mc - ) - or - exists(ObjectCreation oc | - n1.asExpr() = oc.getAnArgument() and - n2.asExpr() = oc and - oc.getObjectType() instanceof StrongTypeDeserializer - ) - } -} - /** * User input to instance type flow tracking config. */ @@ -334,29 +194,6 @@ private module TaintToObjectTypeTrackingConfig implements DataFlow::ConfigSig { */ module TaintToObjectTypeTracking = TaintTracking::Global; -/** - * DEPRECATED: Use `WeakTypeCreationToUsageTracking` instead. - * - * Unsafe deserializer creation to usage tracking config. - */ -deprecated class WeakTypeCreationToUsageTrackingConfig extends TaintTracking2::Configuration { - WeakTypeCreationToUsageTrackingConfig() { this = "DeserializerCreationToUsageTrackingConfig" } - - override predicate isSource(DataFlow::Node source) { - exists(ObjectCreation oc | - oc.getObjectType() instanceof WeakTypeDeserializer and - source.asExpr() = oc - ) - } - - override predicate isSink(DataFlow::Node sink) { - exists(MethodCall mc | - mc.getTarget() instanceof UnsafeDeserializer and - sink.asExpr() = mc.getQualifier() - ) - } -} - /** * Unsafe deserializer creation to usage tracking config. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll index b21d5846bf5..09f6130985f 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll @@ -28,21 +28,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `UrlRedirect` instead. - * - * A taint-tracking configuration for reasoning about unvalidated URL redirect vulnerabilities. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "UrlRedirect" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for reasoning about unvalidated URL redirect vulnerabilities. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XMLEntityInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XMLEntityInjectionQuery.qll index 0bb842adf79..4efeadb3c7e 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XMLEntityInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XMLEntityInjectionQuery.qll @@ -44,26 +44,6 @@ private class InsecureXmlSink extends Sink { */ abstract class Sanitizer extends DataFlow::Node { } -/** - * DEPRECATED: Use `XmlEntityInjection` instead. - * - * A taint-tracking configuration for untrusted user input used in XML processing. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "XMLInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } - - override predicate hasFlowPath(DataFlow::PathNode source, DataFlow::PathNode sink) { - super.hasFlowPath(source, sink) and - exists(sink.getNode().(Sink).getReason()) - } -} - /** * A taint-tracking configuration for untrusted user input used in XML processing. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll index c471a432425..0e8e41c9773 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll @@ -24,21 +24,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `XpathInjection` instead. - * - * A taint-tracking configuration for untrusted user input used in XPath expression. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "XPathInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for untrusted user input used in XPath expression. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll index b9fd47689f9..4ea9e562bb5 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll @@ -141,21 +141,6 @@ abstract class Source extends DataFlow::Node { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `XssTracking` instead. - * - * A taint-tracking configuration for cross-site scripting (XSS) vulnerabilities. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking2::Configuration { - TaintTrackingConfiguration() { this = "XSSDataFlowConfiguration" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for cross-site scripting (XSS) vulnerabilities. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll index 93e7b601585..fad3917553d 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll @@ -21,21 +21,6 @@ abstract class Sink extends ApiSinkExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `ZipSlip` instead. - * - * A taint tracking configuration for Zip Slip. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "ZipSlipTaintTracking" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint tracking configuration for Zip Slip. */ diff --git a/csharp/ql/lib/semmle/code/dotnet/Callable.qll b/csharp/ql/lib/semmle/code/dotnet/Callable.qll deleted file mode 100644 index f3f65c75a5e..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Callable.qll +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Provides `Callable` classes, which are things that can be called - * such as methods and constructors. - */ - -import Declaration -import Variable -import Expr -import Parameterizable - -/** A .Net callable. */ -deprecated class Callable extends Parameterizable, @dotnet_callable { - /** Holds if this callable has a body or an implementation. */ - predicate hasBody() { none() } - - /** Holds if this callable can return expression `e`. */ - predicate canReturn(Expr e) { none() } - - pragma[noinline] - private string getDeclaringTypeLabel() { result = this.getDeclaringType().getLabel() } - - pragma[noinline] - private string getParameterTypeLabelNonGeneric(int p) { - not this instanceof Generic and - result = this.getParameter(p).getType().getLabel() - } - - language[monotonicAggregates] - pragma[nomagic] - private string getMethodParamListNonGeneric() { - result = - concat(int p | - p in [0 .. this.getNumberOfParameters() - 1] - | - this.getParameterTypeLabelNonGeneric(p), "," order by p - ) - } - - pragma[noinline] - private string getParameterTypeLabelGeneric(int p) { - this instanceof Generic and - result = this.getParameter(p).getType().getLabel() - } - - language[monotonicAggregates] - pragma[nomagic] - private string getMethodParamListGeneric() { - result = - concat(int p | - p in [0 .. this.getNumberOfParameters() - 1] - | - this.getParameterTypeLabelGeneric(p), "," order by p - ) - } - - pragma[noinline] - private string getLabelNonGeneric() { - not this instanceof Generic and - result = - this.getReturnTypeLabel() + " " + this.getDeclaringTypeLabel() + "." + - this.getUndecoratedName() + "(" + this.getMethodParamListNonGeneric() + ")" - } - - pragma[noinline] - private string getLabelGeneric() { - result = - this.getReturnTypeLabel() + " " + this.getDeclaringTypeLabel() + "." + - this.getUndecoratedName() + getGenericsLabel(this) + "(" + this.getMethodParamListGeneric() + - ")" - } - - final override string getLabel() { - result = this.getLabelNonGeneric() or - result = this.getLabelGeneric() - } - - private string getReturnTypeLabel() { - result = this.getReturnType().getLabel() - or - not exists(this.getReturnType()) and result = "System.Void" - } - - /** Gets the return type of this callable. */ - Type getReturnType() { none() } -} - -/** A constructor. */ -abstract deprecated class Constructor extends Callable { } - -/** A destructor/finalizer. */ -abstract deprecated class Destructor extends Callable { } - -pragma[nomagic] -deprecated private ValueOrRefType getARecordBaseType(ValueOrRefType t) { - exists(Callable c | - c.hasName("$") and - c.getNumberOfParameters() = 0 and - t = c.getDeclaringType() and - result = t - ) - or - result = getARecordBaseType(t).getABaseType() -} - -/** A clone method on a record. */ -deprecated class RecordCloneCallable extends Callable { - RecordCloneCallable() { - this.getDeclaringType() instanceof ValueOrRefType and - this.hasName("$") and - this.getNumberOfParameters() = 0 and - this.getReturnType() = getARecordBaseType(this.getDeclaringType()) and - this.(Member).isPublic() and - not this.(Member).isStatic() - } - - /** Gets the constructor that this clone method calls. */ - Constructor getConstructor() { - result.getDeclaringType() = this.getDeclaringType() and - result.getNumberOfParameters() = 1 and - result.getParameter(0).getType() = this.getDeclaringType() - } -} diff --git a/csharp/ql/lib/semmle/code/dotnet/Declaration.qll b/csharp/ql/lib/semmle/code/dotnet/Declaration.qll deleted file mode 100644 index b03f8ae4ba5..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Declaration.qll +++ /dev/null @@ -1,123 +0,0 @@ -/** - * Provides classes for .Net declarations. - */ - -import Element -import Type -private import semmle.code.csharp.commons.QualifiedName - -/** A declaration. */ -deprecated class Declaration extends NamedElement, @dotnet_declaration { - /** Gets the name of this declaration, without additional decoration such as `<...>`. */ - string getUndecoratedName() { none() } - - /** Holds if this element has undecorated name 'name'. */ - final predicate hasUndecoratedName(string name) { name = this.getUndecoratedName() } - - /** Gets the type containing this declaration, if any. */ - Type getDeclaringType() { none() } - - /** - * Gets the unbound version of this declaration, that is, the declaration where - * all type arguments have been removed. For example, in - * - * ```csharp - * class C - * { - * class Nested - * { - * } - * - * void Method() { } - * } - * ``` - * - * we have the following - * - * | Declaration | Unbound declaration | - * |-------------------------|---------------------| - * | `C` | ``C`1`` | - * | ``C`1.Nested`` | ``C`1.Nested`` | - * | `C.Nested` | ``C`1.Nested`` | - * | ``C`1.Method`1`` | ``C`1.Method`1`` | - * | ``C.Method`1`` | ``C`1.Method`1`` | - * | `C.Method` | ``C`1.Method`1`` | - */ - Declaration getUnboundDeclaration() { result = this } - - /** Holds if this declaration is unbound. */ - final predicate isUnboundDeclaration() { this.getUnboundDeclaration() = this } -} - -/** A member of a type. */ -deprecated class Member extends Declaration, @dotnet_member { - /** Holds if this member is declared `public`. */ - predicate isPublic() { none() } - - /** Holds if this member is declared `protected.` */ - predicate isProtected() { none() } - - /** Holds if this member is `private`. */ - predicate isPrivate() { none() } - - /** Holds if this member is `internal`. */ - predicate isInternal() { none() } - - /** Holds if this member is `sealed`. */ - predicate isSealed() { none() } - - /** Holds if this member is `abstract`. */ - predicate isAbstract() { none() } - - /** Holds if this member is `static`. */ - predicate isStatic() { none() } - - /** Holds if this member is declared `required`. */ - predicate isRequired() { none() } - - /** Holds if this member is declared `file` local. */ - predicate isFile() { none() } - - /** - * DEPRECATED: Use `hasFullyQualifiedName` instead. - * - * Holds if this member has name `name` and is defined in type `type` - * with namespace `namespace`. - */ - cached - deprecated predicate hasQualifiedName(string namespace, string type, string name) { - this.getDeclaringType().hasQualifiedName(namespace, type) and - name = this.getName() - } - - /** - * Holds if this member has name `name` and is defined in type `type` - * with namespace `namespace`. - */ - cached - predicate hasFullyQualifiedName(string namespace, string type, string name) { - this.getDeclaringType().hasFullyQualifiedName(namespace, type) and - name = this.getName() - } -} - -/** A property. */ -deprecated class Property extends Member, @dotnet_property { - /** Gets the getter of this property, if any. */ - Callable getGetter() { none() } - - /** Gets the setter of this property, if any. */ - Callable getSetter() { none() } - - /** Gets the type of this property. */ - Type getType() { none() } -} - -/** An event. */ -deprecated class Event extends Member, @dotnet_event { - /** Gets the adder of this event, if any. */ - Callable getAdder() { none() } - - /** Gets the remover of this event, if any. */ - Callable getRemover() { none() } -} diff --git a/csharp/ql/lib/semmle/code/dotnet/DotNet.qll b/csharp/ql/lib/semmle/code/dotnet/DotNet.qll deleted file mode 100644 index 48fd6d64615..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/DotNet.qll +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Provides a common model for all .Net languages, including C# and CIL. - */ - -import Element -import Namespace -import Declaration -import Generics -import Type -import Variable -import Callable -import Expr -import Utils diff --git a/csharp/ql/lib/semmle/code/dotnet/Element.qll b/csharp/ql/lib/semmle/code/dotnet/Element.qll deleted file mode 100644 index 96ad2ab1edf..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Element.qll +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Provides the .Net `Element` class. - */ - -private import DotNet -import semmle.code.csharp.Location - -/** - * A .Net program element. - */ -deprecated class Element extends @dotnet_element { - /** Gets a textual representation of this element. */ - cached - string toString() { none() } - - /** Gets the location of this element. */ - pragma[nomagic] - Location getLocation() { none() } - - /** - * Gets a location of this element, which can include locations in - * both DLLs and source files. - */ - Location getALocation() { none() } - - /** Gets the file containing this element. */ - final File getFile() { result = this.getLocation().getFile() } - - /** Holds if this element is from source code. */ - predicate fromSource() { this.getFile().fromSource() } - - /** Holds if this element is from an assembly. */ - predicate fromLibrary() { this.getFile().fromLibrary() } - - /** - * Gets the "language" of this program element, as defined by the extension of the filename. - * For example, C# has language "cs", and Visual Basic has language "vb". - */ - final string getLanguage() { result = this.getLocation().getFile().getExtension() } - - /** Gets the full textual representation of this element, including type information. */ - string toStringWithTypes() { result = this.toString() } - - /** - * Gets a comma-separated list of the names of the primary CodeQL classes to which this element belongs. - * - * If no primary class can be determined, the result is `"???"`. - */ - final string getPrimaryQlClasses() { - result = strictconcat(this.getAPrimaryQlClass(), ",") - or - not exists(this.getAPrimaryQlClass()) and - result = "???" - } - - /** - * Gets the name of a primary CodeQL class to which this element belongs. - * - * For most elements, this is simply the most precise syntactic category to - * which they belong; for example, `AddExpr` is a primary class, but - * `BinaryOperation` is not. - * - * If no primary classes match, this predicate has no result. If multiple - * primary classes match, this predicate can have multiple results. - * - * See also `getPrimaryQlClasses`, which is better to use in most cases. - */ - string getAPrimaryQlClass() { none() } -} - -/** An element that has a name. */ -deprecated class NamedElement extends Element, @dotnet_named_element { - /** Gets the name of this element. */ - cached - string getName() { none() } - - /** Holds if this element has name 'name'. */ - final predicate hasName(string name) { name = this.getName() } - - /** - * Gets the fully qualified name of this element, for example the - * fully qualified name of `M` on line 3 is `N.C.M` in - * - * ```csharp - * namespace N { - * class C { - * void M(int i, string s) { } - * } - * } - * ``` - */ - cached - deprecated final string getQualifiedName() { - exists(string qualifier, string name | this.hasQualifiedName(qualifier, name) | - if qualifier = "" then result = name else result = qualifier + "." + name - ) - } - - /** - * Gets the fully qualified name of this element, for example the - * fully qualified name of `M` on line 3 is `N.C.M` in - * - * ```csharp - * namespace N { - * class C { - * void M(int i, string s) { } - * } - * } - * ``` - * - * Unbound generic types, such as `IList`, are represented as - * ``System.Collections.Generic.IList`1``. - */ - cached - final string getFullyQualifiedName() { - exists(string qualifier, string name | this.hasFullyQualifiedName(qualifier, name) | - if qualifier = "" then result = name else result = qualifier + "." + name - ) - } - - /** - * DEPRECATED: Use `hasFullyQualifiedName` instead. - * - * Holds if this element has the qualified name `qualifier`.`name`. - */ - cached - deprecated predicate hasQualifiedName(string qualifier, string name) { - qualifier = "" and name = this.getName() - } - - /** Holds if this element has the fully qualified name `qualifier`.`name`. */ - cached - predicate hasFullyQualifiedName(string qualifier, string name) { - qualifier = "" and name = this.getName() - } - - /** Gets a unique string label for this element. */ - cached - string getLabel() { none() } - - /** Holds if `other` has the same metadata handle in the same assembly. */ - predicate matchesHandle(NamedElement other) { - exists(Assembly asm, int handle | - metadata_handle(this, asm, handle) and - metadata_handle(other, asm, handle) - ) - } - - /** - * Holds if this element was compiled from source code that is also present in the - * database. That is, this element corresponds to another element from source. - */ - predicate compiledFromSource() { - not this.fromSource() and - exists(NamedElement other | other != this | - this.matchesHandle(other) and - other.fromSource() - ) - } - - override string toString() { result = this.getName() } -} diff --git a/csharp/ql/lib/semmle/code/dotnet/Expr.qll b/csharp/ql/lib/semmle/code/dotnet/Expr.qll deleted file mode 100644 index 47e90d02169..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Expr.qll +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Provides .Net expression classes. - */ - -import Expr -import Type -import Callable - -/** An expression. */ -deprecated class Expr extends Element, @dotnet_expr { - /** Gets the callable containing this expression. */ - Callable getEnclosingCallable() { none() } - - /** Gets the type of this expression. */ - Type getType() { none() } - - /** Gets the constant value of this expression, if any. */ - string getValue() { none() } - - /** Holds if this expression has a value. */ - final predicate hasValue() { exists(this.getValue()) } - - /** - * Gets the parent of this expression. This is for example the element - * that uses the result of this expression. - */ - Element getParent() { none() } -} - -/** A call. */ -deprecated class Call extends Expr, @dotnet_call { - /** Gets the target of this call. */ - Callable getTarget() { none() } - - /** Gets any potential target of this call. */ - Callable getARuntimeTarget() { none() } - - /** - * Gets the `i`th "raw" argument to this call, if any. - * For instance methods, argument 0 is the qualifier. - */ - Expr getRawArgument(int i) { none() } - - /** Gets the `i`th argument to this call, if any. */ - Expr getArgument(int i) { none() } - - /** Gets an argument to this call. */ - Expr getAnArgument() { result = this.getArgument(_) } - - /** Gets the expression that is supplied for parameter `p`. */ - Expr getArgumentForParameter(Parameter p) { none() } -} - -/** A literal expression. */ -deprecated class Literal extends Expr, @dotnet_literal { } - -/** A string literal expression. */ -deprecated class StringLiteral extends Literal, @dotnet_string_literal { } - -/** An integer literal expression. */ -deprecated class IntLiteral extends Literal, @dotnet_int_literal { } - -/** A `null` literal expression. */ -deprecated class NullLiteral extends Literal, @dotnet_null_literal { } diff --git a/csharp/ql/lib/semmle/code/dotnet/Generics.qll b/csharp/ql/lib/semmle/code/dotnet/Generics.qll deleted file mode 100644 index 7c20578f4b1..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Generics.qll +++ /dev/null @@ -1,72 +0,0 @@ -/** Provides classes for generic types and methods. */ - -import Declaration - -/** - * A generic declaration. Either an unbound generic (`UnboundGeneric`) or a - * constructed generic (`ConstructedGeneric`). - */ -abstract deprecated class Generic extends Declaration, @dotnet_generic { } - -/** An unbound generic. */ -abstract deprecated class UnboundGeneric extends Generic { - /** Gets the `i`th type parameter, if any. */ - abstract TypeParameter getTypeParameter(int i); - - /** Gets a type parameter. */ - TypeParameter getATypeParameter() { result = this.getTypeParameter(_) } - - /** - * Gets one of the constructed versions of this declaration, - * which has been bound to a specific set of types. - */ - ConstructedGeneric getAConstructedGeneric() { result.getUnboundGeneric() = this } - - /** Gets the total number of type parameters. */ - int getNumberOfTypeParameters() { result = count(int i | exists(this.getTypeParameter(i))) } -} - -/** A constructed generic. */ -abstract deprecated class ConstructedGeneric extends Generic { - /** Gets the `i`th type argument, if any. */ - abstract Type getTypeArgument(int i); - - /** Gets a type argument. */ - Type getATypeArgument() { result = this.getTypeArgument(_) } - - /** - * Gets the unbound generic declaration from which this declaration was - * constructed. - */ - UnboundGeneric getUnboundGeneric() { none() } - - /** Gets the total number of type arguments. */ - final int getNumberOfTypeArguments() { result = count(int i | exists(this.getTypeArgument(i))) } -} - -/** - * INTERNAL: Do not use. - * - * Constructs the label suffix for a generic method or type. - */ -deprecated string getGenericsLabel(Generic g) { - result = "`" + g.(UnboundGeneric).getNumberOfTypeParameters() - or - result = "<" + typeArgs(g) + ">" -} - -pragma[noinline] -deprecated private string getTypeArgumentLabel(ConstructedGeneric generic, int p) { - result = generic.getTypeArgument(p).getLabel() -} - -language[monotonicAggregates] -pragma[nomagic] -deprecated private string typeArgs(ConstructedGeneric generic) { - result = - concat(int p | - p in [0 .. generic.getNumberOfTypeArguments() - 1] - | - getTypeArgumentLabel(generic, p), "," - ) -} diff --git a/csharp/ql/lib/semmle/code/dotnet/Namespace.qll b/csharp/ql/lib/semmle/code/dotnet/Namespace.qll deleted file mode 100644 index 1b307407e9f..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Namespace.qll +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Provides the `Namespace` class to represent .Net namespaces. - */ - -private import Declaration -private import semmle.code.csharp.commons.QualifiedName - -/** A namespace. */ -deprecated class Namespace extends Declaration, @namespace { - /** - * Gets the parent namespace, if any. For example the parent namespace of `System.IO` - * is `System`. The parent namespace of `System` is the global namespace. - */ - Namespace getParentNamespace() { none() } - - /** - * Gets a child namespace, if any. For example `System.IO` is a child in - * the namespace `System`. - */ - Namespace getAChildNamespace() { result.getParentNamespace() = this } - - /** - * Holds if this namespace has the qualified name `qualifier`.`name`. - * - * For example if the qualified name is `System.Collections.Generic`, then - * `qualifier`=`System.Collections` and `name`=`Generic`. - */ - deprecated override predicate hasQualifiedName(string qualifier, string name) { - namespaceHasQualifiedName(this, qualifier, name) - } - - /** - * Holds if this namespace has the qualified name `qualifier`.`name`. - * - * For example if the qualified name is `System.Collections.Generic`, then - * `qualifier`=`System.Collections` and `name`=`Generic`. - */ - override predicate hasFullyQualifiedName(string qualifier, string name) { - namespaceHasQualifiedName(this, qualifier, name) - } - - /** Gets a textual representation of this namespace. */ - override string toString() { result = this.getFullName() } - - /** Holds if this is the global namespace. */ - final predicate isGlobalNamespace() { this.getName() = "" } - - /** Gets the simple name of this namespace, for example `IO` in `System.IO`. */ - final override string getName() { namespaces(this, result) } - - final override string getUndecoratedName() { namespaces(this, result) } - - override string getAPrimaryQlClass() { result = "Namespace" } - - /** - * Get the fully qualified name of this namespace. - */ - string getFullName() { - exists(string namespace, string name | - namespaceHasQualifiedName(this, namespace, name) and - result = getQualifiedName(namespace, name) - ) - } -} - -/** The global namespace. */ -deprecated class GlobalNamespace extends Namespace { - GlobalNamespace() { this.getName() = "" } -} diff --git a/csharp/ql/lib/semmle/code/dotnet/Parameterizable.qll b/csharp/ql/lib/semmle/code/dotnet/Parameterizable.qll deleted file mode 100644 index 49aa10510b3..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Parameterizable.qll +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Provides a general parameterizable entity to represent constructs that might - * have parameters. - */ - -import Declaration - -/** - * A general parameterizable entity, such as a callable, delegate type, accessor, - * indexer, or function pointer type. - */ -deprecated class Parameterizable extends Declaration, @dotnet_parameterizable { - /** Gets raw parameter `i`, including the `this` parameter at index 0. */ - Parameter getRawParameter(int i) { none() } - - /** Gets the `i`th parameter, excluding the `this` parameter. */ - Parameter getParameter(int i) { none() } - - /** Gets the number of parameters of this callable. */ - int getNumberOfParameters() { result = count(this.getAParameter()) } - - /** Holds if this declaration has no parameters. */ - predicate hasNoParameters() { not exists(this.getAParameter()) } - - /** Gets a parameter, if any. */ - Parameter getAParameter() { result = this.getParameter(_) } - - /** Gets a raw parameter (including the qualifier), if any. */ - final Parameter getARawParameter() { result = this.getRawParameter(_) } -} diff --git a/csharp/ql/lib/semmle/code/dotnet/Type.qll b/csharp/ql/lib/semmle/code/dotnet/Type.qll deleted file mode 100644 index 7b94fd06b61..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Type.qll +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Provides classes for .Net types. - */ - -import Declaration -import Namespace -import Callable -import Generics - -/** - * A type. Either a value or reference type (`ValueOrRefType`), a type parameter (`TypeParameter`), - * a pointer type (`PointerType`), or an array type (`ArrayType`). - */ -deprecated class Type extends Declaration, @dotnet_type { - /** Gets the name of this type without additional syntax such as `[]` or `*`. */ - override string getUndecoratedName() { none() } -} - -/** - * A value or reference type. - */ -deprecated class ValueOrRefType extends Type, @dotnet_valueorreftype { - /** Gets the namespace declaring this type, if any. */ - Namespace getDeclaringNamespace() { none() } - - private string getPrefixWithTypes() { - result = this.getDeclaringType().getLabel() + "." - or - if this.getDeclaringNamespace().isGlobalNamespace() - then result = "" - else result = this.getDeclaringNamespace().getFullName() + "." - } - - pragma[noinline] - private string getLabelNonGeneric() { - not this instanceof Generic and - result = this.getPrefixWithTypes() + this.getUndecoratedName() - } - - pragma[noinline] - private string getLabelGeneric() { - result = this.getPrefixWithTypes() + this.getUndecoratedName() + getGenericsLabel(this) - } - - override string getLabel() { - result = this.getLabelNonGeneric() or - result = this.getLabelGeneric() - } - - /** Gets a base type of this type, if any. */ - ValueOrRefType getABaseType() { none() } - - /** Holds if this type is a `record`. */ - predicate isRecord() { exists(RecordCloneCallable c | c.getDeclaringType() = this) } -} - -/** - * A type parameter, for example `T` in `System.Nullable`. - */ -deprecated class TypeParameter extends Type, @dotnet_type_parameter { - /** Gets the generic type or method declaring this type parameter. */ - UnboundGeneric getDeclaringGeneric() { this = result.getATypeParameter() } - - /** Gets the index of this type parameter. For example the index of `U` in `Func` is 1. */ - int getIndex() { none() } - - final override string getLabel() { result = "!" + this.getIndex() } - - override string getUndecoratedName() { result = "!" + this.getIndex() } -} - -/** A pointer type. */ -deprecated class PointerType extends Type, @dotnet_pointer_type { - /** Gets the type referred by this pointer type, for example `char` in `char*`. */ - Type getReferentType() { none() } - - override string getName() { result = this.getReferentType().getName() + "*" } - - final override string getLabel() { result = this.getReferentType().getLabel() + "*" } - - override string toStringWithTypes() { result = this.getReferentType().toStringWithTypes() + "*" } -} - -/** An array type. */ -deprecated class ArrayType extends ValueOrRefType, @dotnet_array_type { - /** Gets the type of the array element. */ - Type getElementType() { none() } - - final override string getLabel() { result = this.getElementType().getLabel() + "[]" } - - override string toStringWithTypes() { result = this.getElementType().toStringWithTypes() + "[]" } - - override string getAPrimaryQlClass() { result = "ArrayType" } -} diff --git a/csharp/ql/lib/semmle/code/dotnet/Utils.qll b/csharp/ql/lib/semmle/code/dotnet/Utils.qll deleted file mode 100644 index b69993ce97e..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Utils.qll +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Provides some useful .Net classes. - */ - -import Element -import Expr - -/** A throw element. */ -deprecated class Throw extends Element, @dotnet_throw { - /** Gets the expression being thrown, if any. */ - Expr getExpr() { none() } -} diff --git a/csharp/ql/lib/semmle/code/dotnet/Variable.qll b/csharp/ql/lib/semmle/code/dotnet/Variable.qll deleted file mode 100644 index a0cea24e7fd..00000000000 --- a/csharp/ql/lib/semmle/code/dotnet/Variable.qll +++ /dev/null @@ -1,34 +0,0 @@ -/** Provides classes for .Net variables, such as fields and parameters. */ - -import Declaration -import Callable - -/** A .Net variable. */ -deprecated class Variable extends Declaration, @dotnet_variable { - /** Gets the type of this variable. */ - Type getType() { none() } -} - -/** A .Net field. */ -deprecated class Field extends Variable, Member, @dotnet_field { } - -/** A parameter to a .Net callable, property or function pointer type. */ -deprecated class Parameter extends Variable, @dotnet_parameter { - /** Gets the raw position of this parameter, including the `this` parameter at index 0. */ - final int getRawPosition() { this = this.getDeclaringElement().getRawParameter(result) } - - /** Gets the position of this parameter, excluding the `this` parameter. */ - int getPosition() { this = this.getDeclaringElement().getParameter(result) } - - /** Gets the callable defining this parameter, if any. */ - Callable getCallable() { result = this.getDeclaringElement() } - - /** Gets the declaring `Parameterizable`. */ - Parameterizable getDeclaringElement() { none() } - - /** Holds if this is an `out` parameter. */ - predicate isOut() { none() } - - /** Holds if this is a `ref` parameter. */ - predicate isRef() { none() } -} diff --git a/csharp/ql/lib/semmlecode.csharp.dbscheme b/csharp/ql/lib/semmlecode.csharp.dbscheme index 15b989afd2b..a2bda57dbc6 100644 --- a/csharp/ql/lib/semmlecode.csharp.dbscheme +++ b/csharp/ql/lib/semmlecode.csharp.dbscheme @@ -1457,643 +1457,3 @@ asp_tag_name( unique int tag: @asp_open_tag ref, string name: string ref); asp_tag_isempty(int tag: @asp_open_tag ref); - -/* Common Intermediate Language - CIL */ - -case @cil_instruction.opcode of - 0 = @cil_nop -| 1 = @cil_break -| 2 = @cil_ldarg_0 -| 3 = @cil_ldarg_1 -| 4 = @cil_ldarg_2 -| 5 = @cil_ldarg_3 -| 6 = @cil_ldloc_0 -| 7 = @cil_ldloc_1 -| 8 = @cil_ldloc_2 -| 9 = @cil_ldloc_3 -| 10 = @cil_stloc_0 -| 11 = @cil_stloc_1 -| 12 = @cil_stloc_2 -| 13 = @cil_stloc_3 -| 14 = @cil_ldarg_s -| 15 = @cil_ldarga_s -| 16 = @cil_starg_s -| 17 = @cil_ldloc_s -| 18 = @cil_ldloca_s -| 19 = @cil_stloc_s -| 20 = @cil_ldnull -| 21 = @cil_ldc_i4_m1 -| 22 = @cil_ldc_i4_0 -| 23 = @cil_ldc_i4_1 -| 24 = @cil_ldc_i4_2 -| 25 = @cil_ldc_i4_3 -| 26 = @cil_ldc_i4_4 -| 27 = @cil_ldc_i4_5 -| 28 = @cil_ldc_i4_6 -| 29 = @cil_ldc_i4_7 -| 30 = @cil_ldc_i4_8 -| 31 = @cil_ldc_i4_s -| 32 = @cil_ldc_i4 -| 33 = @cil_ldc_i8 -| 34 = @cil_ldc_r4 -| 35 = @cil_ldc_r8 -| 37 = @cil_dup -| 38 = @cil_pop -| 39 = @cil_jmp -| 40 = @cil_call -| 41 = @cil_calli -| 42 = @cil_ret -| 43 = @cil_br_s -| 44 = @cil_brfalse_s -| 45 = @cil_brtrue_s -| 46 = @cil_beq_s -| 47 = @cil_bge_s -| 48 = @cil_bgt_s -| 49 = @cil_ble_s -| 50 = @cil_blt_s -| 51 = @cil_bne_un_s -| 52 = @cil_bge_un_s -| 53 = @cil_bgt_un_s -| 54 = @cil_ble_un_s -| 55 = @cil_blt_un_s -| 56 = @cil_br -| 57 = @cil_brfalse -| 58 = @cil_brtrue -| 59 = @cil_beq -| 60 = @cil_bge -| 61 = @cil_bgt -| 62 = @cil_ble -| 63 = @cil_blt -| 64 = @cil_bne_un -| 65 = @cil_bge_un -| 66 = @cil_bgt_un -| 67 = @cil_ble_un -| 68 = @cil_blt_un -| 69 = @cil_switch -| 70 = @cil_ldind_i1 -| 71 = @cil_ldind_u1 -| 72 = @cil_ldind_i2 -| 73 = @cil_ldind_u2 -| 74 = @cil_ldind_i4 -| 75 = @cil_ldind_u4 -| 76 = @cil_ldind_i8 -| 77 = @cil_ldind_i -| 78 = @cil_ldind_r4 -| 79 = @cil_ldind_r8 -| 80 = @cil_ldind_ref -| 81 = @cil_stind_ref -| 82 = @cil_stind_i1 -| 83 = @cil_stind_i2 -| 84 = @cil_stind_i4 -| 85 = @cil_stind_i8 -| 86 = @cil_stind_r4 -| 87 = @cil_stind_r8 -| 88 = @cil_add -| 89 = @cil_sub -| 90 = @cil_mul -| 91 = @cil_div -| 92 = @cil_div_un -| 93 = @cil_rem -| 94 = @cil_rem_un -| 95 = @cil_and -| 96 = @cil_or -| 97 = @cil_xor -| 98 = @cil_shl -| 99 = @cil_shr -| 100 = @cil_shr_un -| 101 = @cil_neg -| 102 = @cil_not -| 103 = @cil_conv_i1 -| 104 = @cil_conv_i2 -| 105 = @cil_conv_i4 -| 106 = @cil_conv_i8 -| 107 = @cil_conv_r4 -| 108 = @cil_conv_r8 -| 109 = @cil_conv_u4 -| 110 = @cil_conv_u8 -| 111 = @cil_callvirt -| 112 = @cil_cpobj -| 113 = @cil_ldobj -| 114 = @cil_ldstr -| 115 = @cil_newobj -| 116 = @cil_castclass -| 117 = @cil_isinst -| 118 = @cil_conv_r_un -| 121 = @cil_unbox -| 122 = @cil_throw -| 123 = @cil_ldfld -| 124 = @cil_ldflda -| 125 = @cil_stfld -| 126 = @cil_ldsfld -| 127 = @cil_ldsflda -| 128 = @cil_stsfld -| 129 = @cil_stobj -| 130 = @cil_conv_ovf_i1_un -| 131 = @cil_conv_ovf_i2_un -| 132 = @cil_conv_ovf_i4_un -| 133 = @cil_conv_ovf_i8_un -| 134 = @cil_conv_ovf_u1_un -| 135 = @cil_conv_ovf_u2_un -| 136 = @cil_conv_ovf_u4_un -| 137 = @cil_conv_ovf_u8_un -| 138 = @cil_conv_ovf_i_un -| 139 = @cil_conv_ovf_u_un -| 140 = @cil_box -| 141 = @cil_newarr -| 142 = @cil_ldlen -| 143 = @cil_ldelema -| 144 = @cil_ldelem_i1 -| 145 = @cil_ldelem_u1 -| 146 = @cil_ldelem_i2 -| 147 = @cil_ldelem_u2 -| 148 = @cil_ldelem_i4 -| 149 = @cil_ldelem_u4 -| 150 = @cil_ldelem_i8 -| 151 = @cil_ldelem_i -| 152 = @cil_ldelem_r4 -| 153 = @cil_ldelem_r8 -| 154 = @cil_ldelem_ref -| 155 = @cil_stelem_i -| 156 = @cil_stelem_i1 -| 157 = @cil_stelem_i2 -| 158 = @cil_stelem_i4 -| 159 = @cil_stelem_i8 -| 160 = @cil_stelem_r4 -| 161 = @cil_stelem_r8 -| 162 = @cil_stelem_ref -| 163 = @cil_ldelem -| 164 = @cil_stelem -| 165 = @cil_unbox_any -| 179 = @cil_conv_ovf_i1 -| 180 = @cil_conv_ovf_u1 -| 181 = @cil_conv_ovf_i2 -| 182 = @cil_conv_ovf_u2 -| 183 = @cil_conv_ovf_i4 -| 184 = @cil_conv_ovf_u4 -| 185 = @cil_conv_ovf_i8 -| 186 = @cil_conv_ovf_u8 -| 194 = @cil_refanyval -| 195 = @cil_ckinfinite -| 198 = @cil_mkrefany -| 208 = @cil_ldtoken -| 209 = @cil_conv_u2 -| 210 = @cil_conv_u1 -| 211 = @cil_conv_i -| 212 = @cil_conv_ovf_i -| 213 = @cil_conv_ovf_u -| 214 = @cil_add_ovf -| 215 = @cil_add_ovf_un -| 216 = @cil_mul_ovf -| 217 = @cil_mul_ovf_un -| 218 = @cil_sub_ovf -| 219 = @cil_sub_ovf_un -| 220 = @cil_endfinally -| 221 = @cil_leave -| 222 = @cil_leave_s -| 223 = @cil_stind_i -| 224 = @cil_conv_u -| 65024 = @cil_arglist -| 65025 = @cil_ceq -| 65026 = @cil_cgt -| 65027 = @cil_cgt_un -| 65028 = @cil_clt -| 65029 = @cil_clt_un -| 65030 = @cil_ldftn -| 65031 = @cil_ldvirtftn -| 65033 = @cil_ldarg -| 65034 = @cil_ldarga -| 65035 = @cil_starg -| 65036 = @cil_ldloc -| 65037 = @cil_ldloca -| 65038 = @cil_stloc -| 65039 = @cil_localloc -| 65041 = @cil_endfilter -| 65042 = @cil_unaligned -| 65043 = @cil_volatile -| 65044 = @cil_tail -| 65045 = @cil_initobj -| 65046 = @cil_constrained -| 65047 = @cil_cpblk -| 65048 = @cil_initblk -| 65050 = @cil_rethrow -| 65052 = @cil_sizeof -| 65053 = @cil_refanytype -| 65054 = @cil_readonly -; - -// CIL ignored instructions - -@cil_ignore = @cil_nop | @cil_break | @cil_volatile | @cil_unaligned; - -// CIL local/parameter/field access - -@cil_ldarg_any = @cil_ldarg_0 | @cil_ldarg_1 | @cil_ldarg_2 | @cil_ldarg_3 | @cil_ldarg_s | @cil_ldarga_s | @cil_ldarg | @cil_ldarga; -@cil_starg_any = @cil_starg | @cil_starg_s; - -@cil_ldloc_any = @cil_ldloc_0 | @cil_ldloc_1 | @cil_ldloc_2 | @cil_ldloc_3 | @cil_ldloc_s | @cil_ldloca_s | @cil_ldloc | @cil_ldloca; -@cil_stloc_any = @cil_stloc_0 | @cil_stloc_1 | @cil_stloc_2 | @cil_stloc_3 | @cil_stloc_s | @cil_stloc; - -@cil_ldfld_any = @cil_ldfld | @cil_ldsfld | @cil_ldsflda | @cil_ldflda; -@cil_stfld_any = @cil_stfld | @cil_stsfld; - -@cil_local_access = @cil_stloc_any | @cil_ldloc_any; -@cil_arg_access = @cil_starg_any | @cil_ldarg_any; -@cil_read_access = @cil_ldloc_any | @cil_ldarg_any | @cil_ldfld_any; -@cil_write_access = @cil_stloc_any | @cil_starg_any | @cil_stfld_any; - -@cil_stack_access = @cil_local_access | @cil_arg_access; -@cil_field_access = @cil_ldfld_any | @cil_stfld_any; - -@cil_access = @cil_read_access | @cil_write_access; - -// CIL constant/literal instructions - -@cil_ldc_i = @cil_ldc_i4_any | @cil_ldc_i8; - -@cil_ldc_i4_any = @cil_ldc_i4_m1 | @cil_ldc_i4_0 | @cil_ldc_i4_1 | @cil_ldc_i4_2 | @cil_ldc_i4_3 | - @cil_ldc_i4_4 | @cil_ldc_i4_5 | @cil_ldc_i4_6 | @cil_ldc_i4_7 | @cil_ldc_i4_8 | @cil_ldc_i4_s | @cil_ldc_i4; - -@cil_ldc_r = @cil_ldc_r4 | @cil_ldc_r8; - -@cil_literal = @cil_ldnull | @cil_ldc_i | @cil_ldc_r | @cil_ldstr; - -// Control flow - -@cil_conditional_jump = @cil_binary_jump | @cil_unary_jump; -@cil_binary_jump = @cil_beq_s | @cil_bge_s | @cil_bgt_s | @cil_ble_s | @cil_blt_s | - @cil_bne_un_s | @cil_bge_un_s | @cil_bgt_un_s | @cil_ble_un_s | @cil_blt_un_s | - @cil_beq | @cil_bge | @cil_bgt | @cil_ble | @cil_blt | - @cil_bne_un | @cil_bge_un | @cil_bgt_un | @cil_ble_un | @cil_blt_un; -@cil_unary_jump = @cil_brfalse_s | @cil_brtrue_s | @cil_brfalse | @cil_brtrue | @cil_switch; -@cil_unconditional_jump = @cil_br | @cil_br_s | @cil_leave_any; -@cil_leave_any = @cil_leave | @cil_leave_s; -@cil_jump = @cil_unconditional_jump | @cil_conditional_jump; - -// CIL call instructions - -@cil_call_any = @cil_jmp | @cil_call | @cil_calli | @cil_tail | @cil_callvirt | @cil_newobj; - -// CIL expression instructions - -@cil_expr = @cil_literal | @cil_binary_expr | @cil_unary_expr | @cil_call_any | @cil_read_access | - @cil_newarr | @cil_ldtoken | @cil_sizeof | - @cil_ldftn | @cil_ldvirtftn | @cil_localloc | @cil_mkrefany | @cil_refanytype | @cil_arglist | @cil_dup; - -@cil_unary_expr = - @cil_conversion_operation | @cil_unary_arithmetic_operation | @cil_unary_bitwise_operation| - @cil_ldlen | @cil_isinst | @cil_box | @cil_ldobj | @cil_castclass | @cil_unbox_any | - @cil_ldind | @cil_unbox; - -@cil_conversion_operation = - @cil_conv_i1 | @cil_conv_i2 | @cil_conv_i4 | @cil_conv_i8 | - @cil_conv_u1 | @cil_conv_u2 | @cil_conv_u4 | @cil_conv_u8 | - @cil_conv_ovf_i | @cil_conv_ovf_i_un | @cil_conv_ovf_i1 | @cil_conv_ovf_i1_un | - @cil_conv_ovf_i2 | @cil_conv_ovf_i2_un | @cil_conv_ovf_i4 | @cil_conv_ovf_i4_un | - @cil_conv_ovf_i8 | @cil_conv_ovf_i8_un | @cil_conv_ovf_u | @cil_conv_ovf_u_un | - @cil_conv_ovf_u1 | @cil_conv_ovf_u1_un | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | - @cil_conv_ovf_u4 | @cil_conv_ovf_u4_un | @cil_conv_ovf_u8 | @cil_conv_ovf_u8_un | - @cil_conv_r4 | @cil_conv_r8 | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | - @cil_conv_i | @cil_conv_u | @cil_conv_r_un; - -@cil_ldind = @cil_ldind_i | @cil_ldind_i1 | @cil_ldind_i2 | @cil_ldind_i4 | @cil_ldind_i8 | - @cil_ldind_r4 | @cil_ldind_r8 | @cil_ldind_ref | @cil_ldind_u1 | @cil_ldind_u2 | @cil_ldind_u4; - -@cil_stind = @cil_stind_i | @cil_stind_i1 | @cil_stind_i2 | @cil_stind_i4 | @cil_stind_i8 | - @cil_stind_r4 | @cil_stind_r8 | @cil_stind_ref; - -@cil_bitwise_operation = @cil_binary_bitwise_operation | @cil_unary_bitwise_operation; - -@cil_binary_bitwise_operation = @cil_and | @cil_or | @cil_xor | @cil_shr | @cil_shr | @cil_shr_un | @cil_shl; - -@cil_binary_arithmetic_operation = @cil_add | @cil_sub | @cil_mul | @cil_div | @cil_div_un | - @cil_rem | @cil_rem_un | @cil_add_ovf | @cil_add_ovf_un | @cil_mul_ovf | @cil_mul_ovf_un | - @cil_sub_ovf | @cil_sub_ovf_un; - -@cil_unary_bitwise_operation = @cil_not; - -@cil_binary_expr = @cil_binary_arithmetic_operation | @cil_binary_bitwise_operation | @cil_read_array | @cil_comparison_operation; - -@cil_unary_arithmetic_operation = @cil_neg; - -@cil_comparison_operation = @cil_cgt_un | @cil_ceq | @cil_cgt | @cil_clt | @cil_clt_un; - -// Elements that retrieve an address of something -@cil_read_ref = @cil_ldloca_s | @cil_ldarga_s | @cil_ldflda | @cil_ldsflda | @cil_ldelema; - -// CIL array instructions - -@cil_read_array = - @cil_ldelem | @cil_ldelema | @cil_ldelem_i1 | @cil_ldelem_ref | @cil_ldelem_i | - @cil_ldelem_i1 | @cil_ldelem_i2 | @cil_ldelem_i4 | @cil_ldelem_i8 | @cil_ldelem_r4 | - @cil_ldelem_r8 | @cil_ldelem_u1 | @cil_ldelem_u2 | @cil_ldelem_u4; - -@cil_write_array = @cil_stelem | @cil_stelem_ref | - @cil_stelem_i | @cil_stelem_i1 | @cil_stelem_i2 | @cil_stelem_i4 | @cil_stelem_i8 | - @cil_stelem_r4 | @cil_stelem_r8; - -@cil_throw_any = @cil_throw | @cil_rethrow; - -#keyset[impl, index] -cil_instruction( - unique int id: @cil_instruction, - int opcode: int ref, - int index: int ref, - int impl: @cil_method_implementation ref); - -cil_jump( - unique int instruction: @cil_jump ref, - int target: @cil_instruction ref); - -cil_access( - unique int instruction: @cil_instruction ref, - int target: @cil_accessible ref); - -cil_value( - unique int instruction: @cil_literal ref, - string value: string ref); - -#keyset[instruction, index] -cil_switch( - int instruction: @cil_switch ref, - int index: int ref, - int target: @cil_instruction ref); - -cil_instruction_location( - unique int id: @cil_instruction ref, - int loc: @location ref); - -cil_type_location( - int id: @cil_type ref, - int loc: @location ref); - -cil_method_location( - int id: @cil_method ref, - int loc: @location ref); - -@cil_namespace = @namespace; - -@cil_type_container = @cil_type | @cil_namespace | @cil_method; - -case @cil_type.kind of - 0 = @cil_valueorreftype -| 1 = @cil_typeparameter -| 2 = @cil_array_type -| 3 = @cil_pointer_type -| 4 = @cil_function_pointer_type -; - -cil_type( - unique int id: @cil_type, - string name: string ref, - int kind: int ref, - int parent: @cil_type_container ref, - int sourceDecl: @cil_type ref); - -cil_pointer_type( - unique int id: @cil_pointer_type ref, - int pointee: @cil_type ref); - -cil_array_type( - unique int id: @cil_array_type ref, - int element_type: @cil_type ref, - int rank: int ref); - -cil_function_pointer_return_type( - unique int id: @cil_function_pointer_type ref, - int return_type: @cil_type ref); - -cil_method( - unique int id: @cil_method, - string name: string ref, - int parent: @cil_type ref, - int return_type: @cil_type ref); - -cil_method_source_declaration( - unique int method: @cil_method ref, - int source: @cil_method ref); - -cil_method_implementation( - unique int id: @cil_method_implementation, - int method: @cil_method ref, - int location: @assembly ref); - -cil_implements( - int id: @cil_method ref, - int decl: @cil_method ref); - -#keyset[parent, name] -cil_field( - unique int id: @cil_field, - int parent: @cil_type ref, - string name: string ref, - int field_type: @cil_type ref); - -@cil_element = @cil_instruction | @cil_declaration | @cil_handler | @cil_attribute | @cil_namespace; -@cil_named_element = @cil_declaration | @cil_namespace; -@cil_declaration = @cil_variable | @cil_method | @cil_type | @cil_member; -@cil_accessible = @cil_declaration; -@cil_variable = @cil_field | @cil_stack_variable; -@cil_stack_variable = @cil_local_variable | @cil_parameter; -@cil_member = @cil_method | @cil_type | @cil_field | @cil_property | @cil_event; -@cil_custom_modifier_receiver = @cil_method | @cil_property | @cil_parameter | @cil_field | @cil_function_pointer_type; -@cil_parameterizable = @cil_method | @cil_function_pointer_type; -@cil_has_type_annotation = @cil_stack_variable | @cil_property | @cil_field | @cil_method | @cil_function_pointer_type; - -#keyset[parameterizable, index] -cil_parameter( - unique int id: @cil_parameter, - int parameterizable: @cil_parameterizable ref, - int index: int ref, - int param_type: @cil_type ref); - -cil_parameter_in(unique int id: @cil_parameter ref); -cil_parameter_out(unique int id: @cil_parameter ref); - -cil_setter(unique int prop: @cil_property ref, - int method: @cil_method ref); - -#keyset[id, modifier] -cil_custom_modifiers( - int id: @cil_custom_modifier_receiver ref, - int modifier: @cil_type ref, - int kind: int ref); // modreq: 1, modopt: 0 - -cil_type_annotation( - int id: @cil_has_type_annotation ref, - int annotation: int ref); - -cil_getter(unique int prop: @cil_property ref, - int method: @cil_method ref); - -cil_adder(unique int event: @cil_event ref, - int method: @cil_method ref); - -cil_remover(unique int event: @cil_event ref, int method: @cil_method ref); - -cil_raiser(unique int event: @cil_event ref, int method: @cil_method ref); - -cil_property( - unique int id: @cil_property, - int parent: @cil_type ref, - string name: string ref, - int property_type: @cil_type ref); - -#keyset[parent, name] -cil_event(unique int id: @cil_event, - int parent: @cil_type ref, - string name: string ref, - int event_type: @cil_type ref); - -#keyset[impl, index] -cil_local_variable( - unique int id: @cil_local_variable, - int impl: @cil_method_implementation ref, - int index: int ref, - int var_type: @cil_type ref); - -cil_function_pointer_calling_conventions( - int id: @cil_function_pointer_type ref, - int kind: int ref); - -// CIL handlers (exception handlers etc). - -case @cil_handler.kind of - 0 = @cil_catch_handler -| 1 = @cil_filter_handler -| 2 = @cil_finally_handler -| 4 = @cil_fault_handler -; - -#keyset[impl, index] -cil_handler( - unique int id: @cil_handler, - int impl: @cil_method_implementation ref, - int index: int ref, - int kind: int ref, - int try_start: @cil_instruction ref, - int try_end: @cil_instruction ref, - int handler_start: @cil_instruction ref); - -cil_handler_filter( - unique int id: @cil_handler ref, - int filter_start: @cil_instruction ref); - -cil_handler_type( - unique int id: @cil_handler ref, - int catch_type: @cil_type ref); - -@cil_controlflow_node = @cil_entry_point | @cil_instruction; - -@cil_entry_point = @cil_method_implementation | @cil_handler; - -@cil_dataflow_node = @cil_instruction | @cil_variable | @cil_method; - -cil_method_stack_size( - unique int method: @cil_method_implementation ref, - int size: int ref); - -// CIL modifiers - -cil_public(int id: @cil_member ref); -cil_private(int id: @cil_member ref); -cil_protected(int id: @cil_member ref); -cil_internal(int id: @cil_member ref); -cil_static(int id: @cil_member ref); -cil_sealed(int id: @cil_member ref); -cil_virtual(int id: @cil_method ref); -cil_abstract(int id: @cil_member ref); -cil_class(int id: @cil_type ref); -cil_interface(int id: @cil_type ref); -cil_security(int id: @cil_member ref); -cil_requiresecobject(int id: @cil_method ref); -cil_specialname(int id: @cil_method ref); -cil_newslot(int id: @cil_method ref); - -cil_base_class(unique int id: @cil_type ref, int base: @cil_type ref); -cil_base_interface(int id: @cil_type ref, int base: @cil_type ref); -cil_enum_underlying_type(unique int id: @cil_type ref, int underlying: @cil_type ref); - -#keyset[unbound, index] -cil_type_parameter( - int unbound: @cil_member ref, - int index: int ref, - int param: @cil_typeparameter ref); - -#keyset[bound, index] -cil_type_argument( - int bound: @cil_member ref, - int index: int ref, - int t: @cil_type ref); - -// CIL type parameter constraints - -cil_typeparam_covariant(int tp: @cil_typeparameter ref); -cil_typeparam_contravariant(int tp: @cil_typeparameter ref); -cil_typeparam_class(int tp: @cil_typeparameter ref); -cil_typeparam_struct(int tp: @cil_typeparameter ref); -cil_typeparam_new(int tp: @cil_typeparameter ref); -cil_typeparam_constraint(int tp: @cil_typeparameter ref, int supertype: @cil_type ref); - -// CIL attributes - -cil_attribute( - unique int attributeid: @cil_attribute, - int element: @cil_declaration ref, - int constructor: @cil_method ref); - -#keyset[attribute_id, param] -cil_attribute_named_argument( - int attribute_id: @cil_attribute ref, - string param: string ref, - string value: string ref); - -#keyset[attribute_id, index] -cil_attribute_positional_argument( - int attribute_id: @cil_attribute ref, - int index: int ref, - string value: string ref); - - -// Common .Net data model covering both C# and CIL - -// Common elements -@dotnet_element = @element | @cil_element; -@dotnet_named_element = @named_element | @cil_named_element; -@dotnet_callable = @callable | @cil_method; -@dotnet_variable = @variable | @cil_variable; -@dotnet_field = @field | @cil_field; -@dotnet_parameter = @parameter | @cil_parameter; -@dotnet_declaration = @declaration | @cil_declaration; -@dotnet_member = @member | @cil_member; -@dotnet_event = @event | @cil_event; -@dotnet_property = @property | @cil_property | @indexer; -@dotnet_parameterizable = @parameterizable | @cil_parameterizable; - -// Common types -@dotnet_type = @type | @cil_type; -@dotnet_call = @call | @cil_call_any; -@dotnet_throw = @throw_element | @cil_throw_any; -@dotnet_valueorreftype = @cil_valueorreftype | @value_or_ref_type | @cil_array_type | @void_type; -@dotnet_typeparameter = @type_parameter | @cil_typeparameter; -@dotnet_array_type = @array_type | @cil_array_type; -@dotnet_pointer_type = @pointer_type | @cil_pointer_type; -@dotnet_type_parameter = @type_parameter | @cil_typeparameter; -@dotnet_generic = @dotnet_valueorreftype | @dotnet_callable; - -// Attributes -@dotnet_attribute = @attribute | @cil_attribute; - -// Expressions -@dotnet_expr = @expr | @cil_expr; - -// Literals -@dotnet_literal = @literal_expr | @cil_literal; -@dotnet_string_literal = @string_literal_expr | @cil_ldstr; -@dotnet_int_literal = @integer_literal_expr | @cil_ldc_i; -@dotnet_float_literal = @float_literal_expr | @cil_ldc_r; -@dotnet_null_literal = @null_literal_expr | @cil_ldnull; - -@metadata_entity = @cil_method | @cil_type | @cil_field | @cil_property | @field | @property | - @callable | @value_or_ref_type | @void_type; - -metadata_handle(int entity : @metadata_entity ref, int location: @assembly ref, int handle: int ref) diff --git a/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/old.dbscheme b/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/old.dbscheme new file mode 100644 index 00000000000..15b989afd2b --- /dev/null +++ b/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/old.dbscheme @@ -0,0 +1,2099 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); + +/* Common Intermediate Language - CIL */ + +case @cil_instruction.opcode of + 0 = @cil_nop +| 1 = @cil_break +| 2 = @cil_ldarg_0 +| 3 = @cil_ldarg_1 +| 4 = @cil_ldarg_2 +| 5 = @cil_ldarg_3 +| 6 = @cil_ldloc_0 +| 7 = @cil_ldloc_1 +| 8 = @cil_ldloc_2 +| 9 = @cil_ldloc_3 +| 10 = @cil_stloc_0 +| 11 = @cil_stloc_1 +| 12 = @cil_stloc_2 +| 13 = @cil_stloc_3 +| 14 = @cil_ldarg_s +| 15 = @cil_ldarga_s +| 16 = @cil_starg_s +| 17 = @cil_ldloc_s +| 18 = @cil_ldloca_s +| 19 = @cil_stloc_s +| 20 = @cil_ldnull +| 21 = @cil_ldc_i4_m1 +| 22 = @cil_ldc_i4_0 +| 23 = @cil_ldc_i4_1 +| 24 = @cil_ldc_i4_2 +| 25 = @cil_ldc_i4_3 +| 26 = @cil_ldc_i4_4 +| 27 = @cil_ldc_i4_5 +| 28 = @cil_ldc_i4_6 +| 29 = @cil_ldc_i4_7 +| 30 = @cil_ldc_i4_8 +| 31 = @cil_ldc_i4_s +| 32 = @cil_ldc_i4 +| 33 = @cil_ldc_i8 +| 34 = @cil_ldc_r4 +| 35 = @cil_ldc_r8 +| 37 = @cil_dup +| 38 = @cil_pop +| 39 = @cil_jmp +| 40 = @cil_call +| 41 = @cil_calli +| 42 = @cil_ret +| 43 = @cil_br_s +| 44 = @cil_brfalse_s +| 45 = @cil_brtrue_s +| 46 = @cil_beq_s +| 47 = @cil_bge_s +| 48 = @cil_bgt_s +| 49 = @cil_ble_s +| 50 = @cil_blt_s +| 51 = @cil_bne_un_s +| 52 = @cil_bge_un_s +| 53 = @cil_bgt_un_s +| 54 = @cil_ble_un_s +| 55 = @cil_blt_un_s +| 56 = @cil_br +| 57 = @cil_brfalse +| 58 = @cil_brtrue +| 59 = @cil_beq +| 60 = @cil_bge +| 61 = @cil_bgt +| 62 = @cil_ble +| 63 = @cil_blt +| 64 = @cil_bne_un +| 65 = @cil_bge_un +| 66 = @cil_bgt_un +| 67 = @cil_ble_un +| 68 = @cil_blt_un +| 69 = @cil_switch +| 70 = @cil_ldind_i1 +| 71 = @cil_ldind_u1 +| 72 = @cil_ldind_i2 +| 73 = @cil_ldind_u2 +| 74 = @cil_ldind_i4 +| 75 = @cil_ldind_u4 +| 76 = @cil_ldind_i8 +| 77 = @cil_ldind_i +| 78 = @cil_ldind_r4 +| 79 = @cil_ldind_r8 +| 80 = @cil_ldind_ref +| 81 = @cil_stind_ref +| 82 = @cil_stind_i1 +| 83 = @cil_stind_i2 +| 84 = @cil_stind_i4 +| 85 = @cil_stind_i8 +| 86 = @cil_stind_r4 +| 87 = @cil_stind_r8 +| 88 = @cil_add +| 89 = @cil_sub +| 90 = @cil_mul +| 91 = @cil_div +| 92 = @cil_div_un +| 93 = @cil_rem +| 94 = @cil_rem_un +| 95 = @cil_and +| 96 = @cil_or +| 97 = @cil_xor +| 98 = @cil_shl +| 99 = @cil_shr +| 100 = @cil_shr_un +| 101 = @cil_neg +| 102 = @cil_not +| 103 = @cil_conv_i1 +| 104 = @cil_conv_i2 +| 105 = @cil_conv_i4 +| 106 = @cil_conv_i8 +| 107 = @cil_conv_r4 +| 108 = @cil_conv_r8 +| 109 = @cil_conv_u4 +| 110 = @cil_conv_u8 +| 111 = @cil_callvirt +| 112 = @cil_cpobj +| 113 = @cil_ldobj +| 114 = @cil_ldstr +| 115 = @cil_newobj +| 116 = @cil_castclass +| 117 = @cil_isinst +| 118 = @cil_conv_r_un +| 121 = @cil_unbox +| 122 = @cil_throw +| 123 = @cil_ldfld +| 124 = @cil_ldflda +| 125 = @cil_stfld +| 126 = @cil_ldsfld +| 127 = @cil_ldsflda +| 128 = @cil_stsfld +| 129 = @cil_stobj +| 130 = @cil_conv_ovf_i1_un +| 131 = @cil_conv_ovf_i2_un +| 132 = @cil_conv_ovf_i4_un +| 133 = @cil_conv_ovf_i8_un +| 134 = @cil_conv_ovf_u1_un +| 135 = @cil_conv_ovf_u2_un +| 136 = @cil_conv_ovf_u4_un +| 137 = @cil_conv_ovf_u8_un +| 138 = @cil_conv_ovf_i_un +| 139 = @cil_conv_ovf_u_un +| 140 = @cil_box +| 141 = @cil_newarr +| 142 = @cil_ldlen +| 143 = @cil_ldelema +| 144 = @cil_ldelem_i1 +| 145 = @cil_ldelem_u1 +| 146 = @cil_ldelem_i2 +| 147 = @cil_ldelem_u2 +| 148 = @cil_ldelem_i4 +| 149 = @cil_ldelem_u4 +| 150 = @cil_ldelem_i8 +| 151 = @cil_ldelem_i +| 152 = @cil_ldelem_r4 +| 153 = @cil_ldelem_r8 +| 154 = @cil_ldelem_ref +| 155 = @cil_stelem_i +| 156 = @cil_stelem_i1 +| 157 = @cil_stelem_i2 +| 158 = @cil_stelem_i4 +| 159 = @cil_stelem_i8 +| 160 = @cil_stelem_r4 +| 161 = @cil_stelem_r8 +| 162 = @cil_stelem_ref +| 163 = @cil_ldelem +| 164 = @cil_stelem +| 165 = @cil_unbox_any +| 179 = @cil_conv_ovf_i1 +| 180 = @cil_conv_ovf_u1 +| 181 = @cil_conv_ovf_i2 +| 182 = @cil_conv_ovf_u2 +| 183 = @cil_conv_ovf_i4 +| 184 = @cil_conv_ovf_u4 +| 185 = @cil_conv_ovf_i8 +| 186 = @cil_conv_ovf_u8 +| 194 = @cil_refanyval +| 195 = @cil_ckinfinite +| 198 = @cil_mkrefany +| 208 = @cil_ldtoken +| 209 = @cil_conv_u2 +| 210 = @cil_conv_u1 +| 211 = @cil_conv_i +| 212 = @cil_conv_ovf_i +| 213 = @cil_conv_ovf_u +| 214 = @cil_add_ovf +| 215 = @cil_add_ovf_un +| 216 = @cil_mul_ovf +| 217 = @cil_mul_ovf_un +| 218 = @cil_sub_ovf +| 219 = @cil_sub_ovf_un +| 220 = @cil_endfinally +| 221 = @cil_leave +| 222 = @cil_leave_s +| 223 = @cil_stind_i +| 224 = @cil_conv_u +| 65024 = @cil_arglist +| 65025 = @cil_ceq +| 65026 = @cil_cgt +| 65027 = @cil_cgt_un +| 65028 = @cil_clt +| 65029 = @cil_clt_un +| 65030 = @cil_ldftn +| 65031 = @cil_ldvirtftn +| 65033 = @cil_ldarg +| 65034 = @cil_ldarga +| 65035 = @cil_starg +| 65036 = @cil_ldloc +| 65037 = @cil_ldloca +| 65038 = @cil_stloc +| 65039 = @cil_localloc +| 65041 = @cil_endfilter +| 65042 = @cil_unaligned +| 65043 = @cil_volatile +| 65044 = @cil_tail +| 65045 = @cil_initobj +| 65046 = @cil_constrained +| 65047 = @cil_cpblk +| 65048 = @cil_initblk +| 65050 = @cil_rethrow +| 65052 = @cil_sizeof +| 65053 = @cil_refanytype +| 65054 = @cil_readonly +; + +// CIL ignored instructions + +@cil_ignore = @cil_nop | @cil_break | @cil_volatile | @cil_unaligned; + +// CIL local/parameter/field access + +@cil_ldarg_any = @cil_ldarg_0 | @cil_ldarg_1 | @cil_ldarg_2 | @cil_ldarg_3 | @cil_ldarg_s | @cil_ldarga_s | @cil_ldarg | @cil_ldarga; +@cil_starg_any = @cil_starg | @cil_starg_s; + +@cil_ldloc_any = @cil_ldloc_0 | @cil_ldloc_1 | @cil_ldloc_2 | @cil_ldloc_3 | @cil_ldloc_s | @cil_ldloca_s | @cil_ldloc | @cil_ldloca; +@cil_stloc_any = @cil_stloc_0 | @cil_stloc_1 | @cil_stloc_2 | @cil_stloc_3 | @cil_stloc_s | @cil_stloc; + +@cil_ldfld_any = @cil_ldfld | @cil_ldsfld | @cil_ldsflda | @cil_ldflda; +@cil_stfld_any = @cil_stfld | @cil_stsfld; + +@cil_local_access = @cil_stloc_any | @cil_ldloc_any; +@cil_arg_access = @cil_starg_any | @cil_ldarg_any; +@cil_read_access = @cil_ldloc_any | @cil_ldarg_any | @cil_ldfld_any; +@cil_write_access = @cil_stloc_any | @cil_starg_any | @cil_stfld_any; + +@cil_stack_access = @cil_local_access | @cil_arg_access; +@cil_field_access = @cil_ldfld_any | @cil_stfld_any; + +@cil_access = @cil_read_access | @cil_write_access; + +// CIL constant/literal instructions + +@cil_ldc_i = @cil_ldc_i4_any | @cil_ldc_i8; + +@cil_ldc_i4_any = @cil_ldc_i4_m1 | @cil_ldc_i4_0 | @cil_ldc_i4_1 | @cil_ldc_i4_2 | @cil_ldc_i4_3 | + @cil_ldc_i4_4 | @cil_ldc_i4_5 | @cil_ldc_i4_6 | @cil_ldc_i4_7 | @cil_ldc_i4_8 | @cil_ldc_i4_s | @cil_ldc_i4; + +@cil_ldc_r = @cil_ldc_r4 | @cil_ldc_r8; + +@cil_literal = @cil_ldnull | @cil_ldc_i | @cil_ldc_r | @cil_ldstr; + +// Control flow + +@cil_conditional_jump = @cil_binary_jump | @cil_unary_jump; +@cil_binary_jump = @cil_beq_s | @cil_bge_s | @cil_bgt_s | @cil_ble_s | @cil_blt_s | + @cil_bne_un_s | @cil_bge_un_s | @cil_bgt_un_s | @cil_ble_un_s | @cil_blt_un_s | + @cil_beq | @cil_bge | @cil_bgt | @cil_ble | @cil_blt | + @cil_bne_un | @cil_bge_un | @cil_bgt_un | @cil_ble_un | @cil_blt_un; +@cil_unary_jump = @cil_brfalse_s | @cil_brtrue_s | @cil_brfalse | @cil_brtrue | @cil_switch; +@cil_unconditional_jump = @cil_br | @cil_br_s | @cil_leave_any; +@cil_leave_any = @cil_leave | @cil_leave_s; +@cil_jump = @cil_unconditional_jump | @cil_conditional_jump; + +// CIL call instructions + +@cil_call_any = @cil_jmp | @cil_call | @cil_calli | @cil_tail | @cil_callvirt | @cil_newobj; + +// CIL expression instructions + +@cil_expr = @cil_literal | @cil_binary_expr | @cil_unary_expr | @cil_call_any | @cil_read_access | + @cil_newarr | @cil_ldtoken | @cil_sizeof | + @cil_ldftn | @cil_ldvirtftn | @cil_localloc | @cil_mkrefany | @cil_refanytype | @cil_arglist | @cil_dup; + +@cil_unary_expr = + @cil_conversion_operation | @cil_unary_arithmetic_operation | @cil_unary_bitwise_operation| + @cil_ldlen | @cil_isinst | @cil_box | @cil_ldobj | @cil_castclass | @cil_unbox_any | + @cil_ldind | @cil_unbox; + +@cil_conversion_operation = + @cil_conv_i1 | @cil_conv_i2 | @cil_conv_i4 | @cil_conv_i8 | + @cil_conv_u1 | @cil_conv_u2 | @cil_conv_u4 | @cil_conv_u8 | + @cil_conv_ovf_i | @cil_conv_ovf_i_un | @cil_conv_ovf_i1 | @cil_conv_ovf_i1_un | + @cil_conv_ovf_i2 | @cil_conv_ovf_i2_un | @cil_conv_ovf_i4 | @cil_conv_ovf_i4_un | + @cil_conv_ovf_i8 | @cil_conv_ovf_i8_un | @cil_conv_ovf_u | @cil_conv_ovf_u_un | + @cil_conv_ovf_u1 | @cil_conv_ovf_u1_un | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | + @cil_conv_ovf_u4 | @cil_conv_ovf_u4_un | @cil_conv_ovf_u8 | @cil_conv_ovf_u8_un | + @cil_conv_r4 | @cil_conv_r8 | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | + @cil_conv_i | @cil_conv_u | @cil_conv_r_un; + +@cil_ldind = @cil_ldind_i | @cil_ldind_i1 | @cil_ldind_i2 | @cil_ldind_i4 | @cil_ldind_i8 | + @cil_ldind_r4 | @cil_ldind_r8 | @cil_ldind_ref | @cil_ldind_u1 | @cil_ldind_u2 | @cil_ldind_u4; + +@cil_stind = @cil_stind_i | @cil_stind_i1 | @cil_stind_i2 | @cil_stind_i4 | @cil_stind_i8 | + @cil_stind_r4 | @cil_stind_r8 | @cil_stind_ref; + +@cil_bitwise_operation = @cil_binary_bitwise_operation | @cil_unary_bitwise_operation; + +@cil_binary_bitwise_operation = @cil_and | @cil_or | @cil_xor | @cil_shr | @cil_shr | @cil_shr_un | @cil_shl; + +@cil_binary_arithmetic_operation = @cil_add | @cil_sub | @cil_mul | @cil_div | @cil_div_un | + @cil_rem | @cil_rem_un | @cil_add_ovf | @cil_add_ovf_un | @cil_mul_ovf | @cil_mul_ovf_un | + @cil_sub_ovf | @cil_sub_ovf_un; + +@cil_unary_bitwise_operation = @cil_not; + +@cil_binary_expr = @cil_binary_arithmetic_operation | @cil_binary_bitwise_operation | @cil_read_array | @cil_comparison_operation; + +@cil_unary_arithmetic_operation = @cil_neg; + +@cil_comparison_operation = @cil_cgt_un | @cil_ceq | @cil_cgt | @cil_clt | @cil_clt_un; + +// Elements that retrieve an address of something +@cil_read_ref = @cil_ldloca_s | @cil_ldarga_s | @cil_ldflda | @cil_ldsflda | @cil_ldelema; + +// CIL array instructions + +@cil_read_array = + @cil_ldelem | @cil_ldelema | @cil_ldelem_i1 | @cil_ldelem_ref | @cil_ldelem_i | + @cil_ldelem_i1 | @cil_ldelem_i2 | @cil_ldelem_i4 | @cil_ldelem_i8 | @cil_ldelem_r4 | + @cil_ldelem_r8 | @cil_ldelem_u1 | @cil_ldelem_u2 | @cil_ldelem_u4; + +@cil_write_array = @cil_stelem | @cil_stelem_ref | + @cil_stelem_i | @cil_stelem_i1 | @cil_stelem_i2 | @cil_stelem_i4 | @cil_stelem_i8 | + @cil_stelem_r4 | @cil_stelem_r8; + +@cil_throw_any = @cil_throw | @cil_rethrow; + +#keyset[impl, index] +cil_instruction( + unique int id: @cil_instruction, + int opcode: int ref, + int index: int ref, + int impl: @cil_method_implementation ref); + +cil_jump( + unique int instruction: @cil_jump ref, + int target: @cil_instruction ref); + +cil_access( + unique int instruction: @cil_instruction ref, + int target: @cil_accessible ref); + +cil_value( + unique int instruction: @cil_literal ref, + string value: string ref); + +#keyset[instruction, index] +cil_switch( + int instruction: @cil_switch ref, + int index: int ref, + int target: @cil_instruction ref); + +cil_instruction_location( + unique int id: @cil_instruction ref, + int loc: @location ref); + +cil_type_location( + int id: @cil_type ref, + int loc: @location ref); + +cil_method_location( + int id: @cil_method ref, + int loc: @location ref); + +@cil_namespace = @namespace; + +@cil_type_container = @cil_type | @cil_namespace | @cil_method; + +case @cil_type.kind of + 0 = @cil_valueorreftype +| 1 = @cil_typeparameter +| 2 = @cil_array_type +| 3 = @cil_pointer_type +| 4 = @cil_function_pointer_type +; + +cil_type( + unique int id: @cil_type, + string name: string ref, + int kind: int ref, + int parent: @cil_type_container ref, + int sourceDecl: @cil_type ref); + +cil_pointer_type( + unique int id: @cil_pointer_type ref, + int pointee: @cil_type ref); + +cil_array_type( + unique int id: @cil_array_type ref, + int element_type: @cil_type ref, + int rank: int ref); + +cil_function_pointer_return_type( + unique int id: @cil_function_pointer_type ref, + int return_type: @cil_type ref); + +cil_method( + unique int id: @cil_method, + string name: string ref, + int parent: @cil_type ref, + int return_type: @cil_type ref); + +cil_method_source_declaration( + unique int method: @cil_method ref, + int source: @cil_method ref); + +cil_method_implementation( + unique int id: @cil_method_implementation, + int method: @cil_method ref, + int location: @assembly ref); + +cil_implements( + int id: @cil_method ref, + int decl: @cil_method ref); + +#keyset[parent, name] +cil_field( + unique int id: @cil_field, + int parent: @cil_type ref, + string name: string ref, + int field_type: @cil_type ref); + +@cil_element = @cil_instruction | @cil_declaration | @cil_handler | @cil_attribute | @cil_namespace; +@cil_named_element = @cil_declaration | @cil_namespace; +@cil_declaration = @cil_variable | @cil_method | @cil_type | @cil_member; +@cil_accessible = @cil_declaration; +@cil_variable = @cil_field | @cil_stack_variable; +@cil_stack_variable = @cil_local_variable | @cil_parameter; +@cil_member = @cil_method | @cil_type | @cil_field | @cil_property | @cil_event; +@cil_custom_modifier_receiver = @cil_method | @cil_property | @cil_parameter | @cil_field | @cil_function_pointer_type; +@cil_parameterizable = @cil_method | @cil_function_pointer_type; +@cil_has_type_annotation = @cil_stack_variable | @cil_property | @cil_field | @cil_method | @cil_function_pointer_type; + +#keyset[parameterizable, index] +cil_parameter( + unique int id: @cil_parameter, + int parameterizable: @cil_parameterizable ref, + int index: int ref, + int param_type: @cil_type ref); + +cil_parameter_in(unique int id: @cil_parameter ref); +cil_parameter_out(unique int id: @cil_parameter ref); + +cil_setter(unique int prop: @cil_property ref, + int method: @cil_method ref); + +#keyset[id, modifier] +cil_custom_modifiers( + int id: @cil_custom_modifier_receiver ref, + int modifier: @cil_type ref, + int kind: int ref); // modreq: 1, modopt: 0 + +cil_type_annotation( + int id: @cil_has_type_annotation ref, + int annotation: int ref); + +cil_getter(unique int prop: @cil_property ref, + int method: @cil_method ref); + +cil_adder(unique int event: @cil_event ref, + int method: @cil_method ref); + +cil_remover(unique int event: @cil_event ref, int method: @cil_method ref); + +cil_raiser(unique int event: @cil_event ref, int method: @cil_method ref); + +cil_property( + unique int id: @cil_property, + int parent: @cil_type ref, + string name: string ref, + int property_type: @cil_type ref); + +#keyset[parent, name] +cil_event(unique int id: @cil_event, + int parent: @cil_type ref, + string name: string ref, + int event_type: @cil_type ref); + +#keyset[impl, index] +cil_local_variable( + unique int id: @cil_local_variable, + int impl: @cil_method_implementation ref, + int index: int ref, + int var_type: @cil_type ref); + +cil_function_pointer_calling_conventions( + int id: @cil_function_pointer_type ref, + int kind: int ref); + +// CIL handlers (exception handlers etc). + +case @cil_handler.kind of + 0 = @cil_catch_handler +| 1 = @cil_filter_handler +| 2 = @cil_finally_handler +| 4 = @cil_fault_handler +; + +#keyset[impl, index] +cil_handler( + unique int id: @cil_handler, + int impl: @cil_method_implementation ref, + int index: int ref, + int kind: int ref, + int try_start: @cil_instruction ref, + int try_end: @cil_instruction ref, + int handler_start: @cil_instruction ref); + +cil_handler_filter( + unique int id: @cil_handler ref, + int filter_start: @cil_instruction ref); + +cil_handler_type( + unique int id: @cil_handler ref, + int catch_type: @cil_type ref); + +@cil_controlflow_node = @cil_entry_point | @cil_instruction; + +@cil_entry_point = @cil_method_implementation | @cil_handler; + +@cil_dataflow_node = @cil_instruction | @cil_variable | @cil_method; + +cil_method_stack_size( + unique int method: @cil_method_implementation ref, + int size: int ref); + +// CIL modifiers + +cil_public(int id: @cil_member ref); +cil_private(int id: @cil_member ref); +cil_protected(int id: @cil_member ref); +cil_internal(int id: @cil_member ref); +cil_static(int id: @cil_member ref); +cil_sealed(int id: @cil_member ref); +cil_virtual(int id: @cil_method ref); +cil_abstract(int id: @cil_member ref); +cil_class(int id: @cil_type ref); +cil_interface(int id: @cil_type ref); +cil_security(int id: @cil_member ref); +cil_requiresecobject(int id: @cil_method ref); +cil_specialname(int id: @cil_method ref); +cil_newslot(int id: @cil_method ref); + +cil_base_class(unique int id: @cil_type ref, int base: @cil_type ref); +cil_base_interface(int id: @cil_type ref, int base: @cil_type ref); +cil_enum_underlying_type(unique int id: @cil_type ref, int underlying: @cil_type ref); + +#keyset[unbound, index] +cil_type_parameter( + int unbound: @cil_member ref, + int index: int ref, + int param: @cil_typeparameter ref); + +#keyset[bound, index] +cil_type_argument( + int bound: @cil_member ref, + int index: int ref, + int t: @cil_type ref); + +// CIL type parameter constraints + +cil_typeparam_covariant(int tp: @cil_typeparameter ref); +cil_typeparam_contravariant(int tp: @cil_typeparameter ref); +cil_typeparam_class(int tp: @cil_typeparameter ref); +cil_typeparam_struct(int tp: @cil_typeparameter ref); +cil_typeparam_new(int tp: @cil_typeparameter ref); +cil_typeparam_constraint(int tp: @cil_typeparameter ref, int supertype: @cil_type ref); + +// CIL attributes + +cil_attribute( + unique int attributeid: @cil_attribute, + int element: @cil_declaration ref, + int constructor: @cil_method ref); + +#keyset[attribute_id, param] +cil_attribute_named_argument( + int attribute_id: @cil_attribute ref, + string param: string ref, + string value: string ref); + +#keyset[attribute_id, index] +cil_attribute_positional_argument( + int attribute_id: @cil_attribute ref, + int index: int ref, + string value: string ref); + + +// Common .Net data model covering both C# and CIL + +// Common elements +@dotnet_element = @element | @cil_element; +@dotnet_named_element = @named_element | @cil_named_element; +@dotnet_callable = @callable | @cil_method; +@dotnet_variable = @variable | @cil_variable; +@dotnet_field = @field | @cil_field; +@dotnet_parameter = @parameter | @cil_parameter; +@dotnet_declaration = @declaration | @cil_declaration; +@dotnet_member = @member | @cil_member; +@dotnet_event = @event | @cil_event; +@dotnet_property = @property | @cil_property | @indexer; +@dotnet_parameterizable = @parameterizable | @cil_parameterizable; + +// Common types +@dotnet_type = @type | @cil_type; +@dotnet_call = @call | @cil_call_any; +@dotnet_throw = @throw_element | @cil_throw_any; +@dotnet_valueorreftype = @cil_valueorreftype | @value_or_ref_type | @cil_array_type | @void_type; +@dotnet_typeparameter = @type_parameter | @cil_typeparameter; +@dotnet_array_type = @array_type | @cil_array_type; +@dotnet_pointer_type = @pointer_type | @cil_pointer_type; +@dotnet_type_parameter = @type_parameter | @cil_typeparameter; +@dotnet_generic = @dotnet_valueorreftype | @dotnet_callable; + +// Attributes +@dotnet_attribute = @attribute | @cil_attribute; + +// Expressions +@dotnet_expr = @expr | @cil_expr; + +// Literals +@dotnet_literal = @literal_expr | @cil_literal; +@dotnet_string_literal = @string_literal_expr | @cil_ldstr; +@dotnet_int_literal = @integer_literal_expr | @cil_ldc_i; +@dotnet_float_literal = @float_literal_expr | @cil_ldc_r; +@dotnet_null_literal = @null_literal_expr | @cil_ldnull; + +@metadata_entity = @cil_method | @cil_type | @cil_field | @cil_property | @field | @property | + @callable | @value_or_ref_type | @void_type; + +metadata_handle(int entity : @metadata_entity ref, int location: @assembly ref, int handle: int ref) diff --git a/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/semmlecode.csharp.dbscheme b/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/semmlecode.csharp.dbscheme new file mode 100644 index 00000000000..a2bda57dbc6 --- /dev/null +++ b/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/semmlecode.csharp.dbscheme @@ -0,0 +1,1459 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/upgrade.properties b/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/upgrade.properties new file mode 100644 index 00000000000..f6f713882f7 --- /dev/null +++ b/csharp/ql/lib/upgrades/15b989afd2bfc4743536fdb0958c1d8177a32600/upgrade.properties @@ -0,0 +1,66 @@ +description: Delete all `cil` and `dotnet` related relations and types. +compatibility: breaking +cil_instruction.rel: delete +cil_jump.rel: delete +cil_access.rel: delete +cil_value.rel: delete +cil_switch.rel: delete +cil_instruction_location.rel: delete +cil_type_location.rel: delete +cil_method_location.rel: delete +cil_type.rel: delete +cil_pointer_type.rel: delete +cil_array_type.rel: delete +cil_function_pointer_return_type.rel: delete +cil_method.rel: delete +cil_method_source_declaration.rel: delete +cil_method_implementation.rel: delete +cil_implements.rel: delete +cil_field.rel: delete +cil_parameter.rel: delete +cil_parameter_in.rel: delete +cil_parameter_out.rel: delete +cil_setter.rel: delete +cil_custom_modifiers.rel: delete +cil_type_annotation.rel: delete +cil_getter.rel: delete +cil_adder.rel: delete +cil_remover.rel: delete +cil_raiser.rel: delete +cil_property.rel: delete +cil_event.rel: delete +cil_local_variable.rel: delete +cil_function_pointer_calling_conventions.rel: delete +cil_handler.rel: delete +cil_handler_filter.rel: delete +cil_handler_type.rel: delete +cil_method_stack_size.rel: delete +cil_public.rel: delete +cil_private.rel: delete +cil_protected.rel: delete +cil_internal.rel: delete +cil_static.rel: delete +cil_sealed.rel: delete +cil_virtual.rel: delete +cil_abstract.rel: delete +cil_class.rel: delete +cil_interface.rel: delete +cil_security.rel: delete +cil_requiresecobject.rel: delete +cil_specialname.rel: delete +cil_newslot.rel: delete +cil_base_class.rel: delete +cil_base_interface.rel: delete +cil_enum_underlying_type.rel: delete +cil_type_parameter.rel: delete +cil_type_argument.rel: delete +cil_typeparam_covariant.rel: delete +cil_typeparam_contravariant.rel: delete +cil_typeparam_class.rel: delete +cil_typeparam_struct.rel: delete +cil_typeparam_new.rel: delete +cil_typeparam_constraint.rel: delete +cil_attribute.rel: delete +cil_attribute_named_argument.rel: delete +cil_attribute_positional_argument.rel: delete +metadata_handle.rel: delete diff --git a/csharp/ql/lib/upgrades/ba2201248071b2bf0bb52909b35014091d2e18a6/upgrade.properties b/csharp/ql/lib/upgrades/ba2201248071b2bf0bb52909b35014091d2e18a6/upgrade.properties index 453be5a92ce..5b733d3d995 100644 --- a/csharp/ql/lib/upgrades/ba2201248071b2bf0bb52909b35014091d2e18a6/upgrade.properties +++ b/csharp/ql/lib/upgrades/ba2201248071b2bf0bb52909b35014091d2e18a6/upgrade.properties @@ -1,3 +1,3 @@ description: Add 'kind' to 'attributes'. -compatability: backwards -attributes.rel: run attribute_kind.ql \ No newline at end of file +compatibility: backwards +attributes.rel: run attribute_kind.ql diff --git a/csharp/ql/lib/upgrades/dd813977f70fcbf737b0bbe9dc8297edff713168/upgrade.properties b/csharp/ql/lib/upgrades/dd813977f70fcbf737b0bbe9dc8297edff713168/upgrade.properties index 76895754bd0..2ef8410a5d8 100644 --- a/csharp/ql/lib/upgrades/dd813977f70fcbf737b0bbe9dc8297edff713168/upgrade.properties +++ b/csharp/ql/lib/upgrades/dd813977f70fcbf737b0bbe9dc8297edff713168/upgrade.properties @@ -1,4 +1,4 @@ -description: Added '@cil_function_pointer_type' and related relations ('cil_function_pointer_return_type', -'cil_function_pointer_calling_conventions'). Introduced 'cil_type_annotation' and '@cil_has_type_annotation' +description: Added '@cil_function_pointer_type' and related relations ('cil_function_pointer_return_type', \ +'cil_function_pointer_calling_conventions'). Introduced 'cil_type_annotation' and '@cil_has_type_annotation' \ to store by-reference type annotation. Added '@cil_parameterizable' to represent methods and type parameters. compatibility: backwards diff --git a/csharp/ql/lib/upgrades/efcd69e086a26dd33395f2ddb3113b2849399040/upgrade.properties b/csharp/ql/lib/upgrades/efcd69e086a26dd33395f2ddb3113b2849399040/upgrade.properties index 14ab5d3a87c..391e9dc4a96 100644 --- a/csharp/ql/lib/upgrades/efcd69e086a26dd33395f2ddb3113b2849399040/upgrade.properties +++ b/csharp/ql/lib/upgrades/efcd69e086a26dd33395f2ddb3113b2849399040/upgrade.properties @@ -1,5 +1,5 @@ -description: Add '@preprocessor_directive' to store preprocessor directives. Add -'locations_mapped' relation to store location that take into account '#line' -directives. Finally, the '@define_symbol_expr' expression was added to represent +description: Add '@preprocessor_directive' to store preprocessor directives. Add \ +'locations_mapped' relation to store location that take into account '#line' \ +directives. Finally, the '@define_symbol_expr' expression was added to represent \ symbols inside conditions of '#if' and '#elif' directives. compatibility: backwards diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index bd25f8118dd..c1d05cc119e 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 1.0.8 + +No user-facing changes. + +## 1.0.7 + +No user-facing changes. + +## 1.0.6 + +### Minor Analysis Improvements + +* Attributes in the `System.Runtime.CompilerServices` namespace are ignored when checking if a declaration requires documentation comments. +* C# build-mode `none` analyses now report a warning on the CodeQL status page when there are significant analysis problems -- defined as 5% of expressions lacking a type, or 5% of call targets being unknown. Other messages reported on the status page are downgraded from warnings to notes and so are less prominent, but are still available for review. + ## 1.0.5 No user-facing changes. diff --git a/csharp/ql/src/change-notes/2024-08-07-db-quality-diagnostic.md b/csharp/ql/src/change-notes/2024-08-07-db-quality-diagnostic.md deleted file mode 100644 index a22d136ce8b..00000000000 --- a/csharp/ql/src/change-notes/2024-08-07-db-quality-diagnostic.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# build-mode `none` analyses now report a warning on the CodeQL status page when there are significant analysis problems-- defined as 5% of expressions lacking a type, or 5% of call targets being unknown. Other messages reported on the status page are downgraded from warnings to notes and so are less prominent, but are still available for review. \ No newline at end of file diff --git a/csharp/ql/src/change-notes/2024-08-12-doc-comments.md b/csharp/ql/src/change-notes/2024-08-12-doc-comments.md deleted file mode 100644 index e4c49351f3a..00000000000 --- a/csharp/ql/src/change-notes/2024-08-12-doc-comments.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Attributes in the `System.Runtime.CompilerServices` namespace are ignored when checking if a declaration requires documentation comments. \ No newline at end of file diff --git a/csharp/ql/src/change-notes/released/1.0.6.md b/csharp/ql/src/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..c1454642823 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.0.6.md @@ -0,0 +1,6 @@ +## 1.0.6 + +### Minor Analysis Improvements + +* Attributes in the `System.Runtime.CompilerServices` namespace are ignored when checking if a declaration requires documentation comments. +* C# build-mode `none` analyses now report a warning on the CodeQL status page when there are significant analysis problems -- defined as 5% of expressions lacking a type, or 5% of call targets being unknown. Other messages reported on the status page are downgraded from warnings to notes and so are less prominent, but are still available for review. diff --git a/csharp/ql/src/change-notes/released/1.0.7.md b/csharp/ql/src/change-notes/released/1.0.7.md new file mode 100644 index 00000000000..b3a381f0315 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.0.7.md @@ -0,0 +1,3 @@ +## 1.0.7 + +No user-facing changes. diff --git a/csharp/ql/src/change-notes/released/1.0.8.md b/csharp/ql/src/change-notes/released/1.0.8.md new file mode 100644 index 00000000000..b3efd4f66ef --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.0.8.md @@ -0,0 +1,3 @@ +## 1.0.8 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 42da17b3841..5c55fbd52ed 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.8 diff --git a/csharp/ql/src/experimental/CWE-099/TaintedWebClientLib.qll b/csharp/ql/src/experimental/CWE-099/TaintedWebClientLib.qll index e3459dfb1ac..eea18ae3b6e 100644 --- a/csharp/ql/src/experimental/CWE-099/TaintedWebClientLib.qll +++ b/csharp/ql/src/experimental/CWE-099/TaintedWebClientLib.qll @@ -37,21 +37,6 @@ abstract class Sink extends DataFlow::ExprNode { } */ abstract class Sanitizer extends DataFlow::ExprNode { } -/** - * DEPRECATED: Use `TaintedWebClient` instead. - * - * A taint-tracking configuration for uncontrolled data in path expression vulnerabilities. - */ -deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration { - TaintTrackingConfiguration() { this = "TaintedWebClientLib" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } -} - /** * A taint-tracking configuration for uncontrolled data in path expression vulnerabilities. */ diff --git a/csharp/ql/src/experimental/CWE-918/RequestForgery.qll b/csharp/ql/src/experimental/CWE-918/RequestForgery.qll index e1c6875d952..dac68adfcc1 100644 --- a/csharp/ql/src/experimental/CWE-918/RequestForgery.qll +++ b/csharp/ql/src/experimental/CWE-918/RequestForgery.qll @@ -23,39 +23,6 @@ module RequestForgery { */ abstract private class Barrier extends DataFlow::Node { } - /** - * DEPRECATED: Use `RequestForgeryFlow` instead. - * - * A data flow configuration for detecting server side request forgery vulnerabilities. - */ - deprecated class RequestForgeryConfiguration extends DataFlow::Configuration { - RequestForgeryConfiguration() { this = "Server Side Request forgery" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isAdditionalFlowStep(DataFlow::Node prev, DataFlow::Node succ) { - interpolatedStringFlowStep(prev, succ) - or - stringReplaceStep(prev, succ) - or - uriCreationStep(prev, succ) - or - formatConvertStep(prev, succ) - or - toStringStep(prev, succ) - or - stringConcatStep(prev, succ) - or - stringFormatStep(prev, succ) - or - pathCombineStep(prev, succ) - } - - override predicate isBarrier(DataFlow::Node node) { node instanceof Barrier } - } - /** * A data flow configuration for detecting server side request forgery vulnerabilities. */ diff --git a/csharp/ql/src/experimental/Security Features/JsonWebTokenHandler/JsonWebTokenHandlerLib.qll b/csharp/ql/src/experimental/Security Features/JsonWebTokenHandler/JsonWebTokenHandlerLib.qll index 6f86497b41e..476b17e4c69 100644 --- a/csharp/ql/src/experimental/Security Features/JsonWebTokenHandler/JsonWebTokenHandlerLib.qll +++ b/csharp/ql/src/experimental/Security Features/JsonWebTokenHandler/JsonWebTokenHandlerLib.qll @@ -18,27 +18,6 @@ class TokenValidationParametersPropertySensitiveValidation extends Property { } } -/** - * DEPRECATED: Use `FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation` instead. - * - * A dataflow from a `false` value to a write sensitive property for `TokenValidationParameters`. - */ -deprecated class FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation extends DataFlow::Configuration -{ - FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation() { - this = "FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation" - } - - override predicate isSource(DataFlow::Node source) { - source.asExpr().getValue() = "false" and - source.asExpr().getType() instanceof BoolType - } - - override predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(TokenValidationParametersPropertySensitiveValidation p).getAnAssignedValue() - } -} - /** * A dataflow configuration from a `false` value to a write sensitive property for `TokenValidationParameters`. */ diff --git a/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll b/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll index b61bd86ec4e..928cf3bdc4f 100644 --- a/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll +++ b/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll @@ -40,26 +40,6 @@ private module AuthCookieNameConfig implements DataFlow::ConfigSig { */ private module AuthCookieName = DataFlow::Global; -/** - * DEPRECATED: Use `CookieOptionsTracking` instead. - * - * Tracks creation of `CookieOptions` to `IResponseCookies.Append(String, String, CookieOptions)` call as a third parameter. - */ -deprecated class CookieOptionsTrackingConfiguration extends DataFlow::Configuration { - CookieOptionsTrackingConfiguration() { this = "CookieOptionsTrackingConfiguration" } - - override predicate isSource(DataFlow::Node source) { - source.asExpr().(ObjectCreation).getType() instanceof MicrosoftAspNetCoreHttpCookieOptions - } - - override predicate isSink(DataFlow::Node sink) { - exists(MicrosoftAspNetCoreHttpResponseCookies iResponse, MethodCall mc | - iResponse.getAppendMethod() = mc.getTarget() and - mc.getArgument(2) = sink.asExpr() - ) - } -} - /** * Configuration module tracking creation of `CookieOptions` to `IResponseCookies.Append(String, String, CookieOptions)` * calls as a third parameter. @@ -134,28 +114,6 @@ Expr getAValueForProp(ObjectCreation create, Assignment a, string prop) { */ predicate isPropertySet(ObjectCreation oc, string prop) { exists(getAValueForProp(oc, _, prop)) } -/** - * DEPRECATED: Use `OnAppendCookieSecureTracking` instead. - * - * Tracks if a callback used in `OnAppendCookie` sets `Secure` to `true`. - */ -deprecated class OnAppendCookieSecureTrackingConfig extends OnAppendCookieTrackingConfig { - OnAppendCookieSecureTrackingConfig() { this = "OnAppendCookieSecureTrackingConfig" } - - override string propertyName() { result = "Secure" } -} - -/** - * DEPRECATED: Use `OnAppendCookieHttpOnlyTracking` instead. - * - * Tracks if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`. - */ -deprecated class OnAppendCookieHttpOnlyTrackingConfig extends OnAppendCookieTrackingConfig { - OnAppendCookieHttpOnlyTrackingConfig() { this = "OnAppendCookieHttpOnlyTrackingConfig" } - - override string propertyName() { result = "HttpOnly" } -} - /** * Tracks if a callback used in `OnAppendCookie` sets a cookie property to `true`. */ diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 51699111e25..363cfe14e3d 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.0.6-dev +version: 1.0.9-dev groups: - csharp - queries diff --git a/csharp/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql b/csharp/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql new file mode 100644 index 00000000000..62d3ad7f9f4 --- /dev/null +++ b/csharp/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql @@ -0,0 +1,27 @@ +/** + * @name Capture Summary Models Partial Path + * @description Capture Summary Models Partial Path + * @kind path-problem + * @precision low + * @id csharp/utils/modelgenerator/summary-models-partial-path + * @severity info + * @tags modelgenerator + */ + +import csharp +import utils.modelgenerator.internal.CaptureModels +import PartialFlow::PartialPathGraph + +int explorationLimit() { result = 3 } + +module PartialFlow = PropagateFlow::FlowExplorationFwd; + +from + PartialFlow::PartialPathNode source, PartialFlow::PartialPathNode sink, + DataFlowSummaryTargetApi api, DataFlow::ParameterNode p +where + PartialFlow::partialFlow(source, sink, _) and + p = source.getNode() and + p.asParameter() = api.getAParameter() +select sink.getNode(), source, sink, "There is flow from a $@ to $@.", source.getNode(), + "parameter", sink.getNode(), "intermediate value" diff --git a/csharp/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPath.ql b/csharp/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPath.ql new file mode 100644 index 00000000000..7be5a1fc00e --- /dev/null +++ b/csharp/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPath.ql @@ -0,0 +1,24 @@ +/** + * @name Capture Summary Models Path + * @description Capture Summary Models Path + * @kind path-problem + * @precision low + * @id csharp/utils/modelgenerator/summary-models-path + * @severity warning + * @tags modelgenerator + */ + +import csharp +import utils.modelgenerator.internal.CaptureModels +import PropagateFlow::PathGraph + +from + PropagateFlow::PathNode source, PropagateFlow::PathNode sink, DataFlowSummaryTargetApi api, + DataFlow::Node p, DataFlow::Node returnNodeExt +where + PropagateFlow::flowPath(source, sink) and + p = source.getNode() and + returnNodeExt = sink.getNode() and + exists(captureThroughFlow0(api, p, returnNodeExt)) +select sink.getNode(), source, sink, "There is flow from $@ to the $@.", source.getNode(), + "parameter", sink.getNode(), "return value" diff --git a/csharp/ql/src/utils/modelgenerator/debug/README.md b/csharp/ql/src/utils/modelgenerator/debug/README.md new file mode 100644 index 00000000000..8d01e511882 --- /dev/null +++ b/csharp/ql/src/utils/modelgenerator/debug/README.md @@ -0,0 +1 @@ +The queries in this directory are purely used for model generator debugging purposes in VS Code. diff --git a/csharp/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/csharp/ql/src/utils/modelgenerator/internal/CaptureModels.qll index b5eff2664d2..0f24bab005e 100644 --- a/csharp/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/csharp/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -18,17 +18,35 @@ private class ReturnNodeExt extends DataFlow::Node { kind = DataFlowImplCommon::getParamReturnPosition(this, _).getKind() } - string getOutput() { - kind instanceof DataFlowImplCommon::ValueReturnKind and + /** + * Gets the kind of the return node. + */ + DataFlowImplCommon::ReturnKindExt getKind() { result = kind } +} + +bindingset[c] +private signature string printCallableParamSig(Callable c, ParameterPosition p); + +private module PrintReturnNodeExt { + string getOutput(ReturnNodeExt node) { + node.getKind() instanceof DataFlowImplCommon::ValueReturnKind and result = "ReturnValue" or exists(ParameterPosition pos | - pos = kind.(DataFlowImplCommon::ParamUpdateReturnKind).getPosition() and - result = paramReturnNodeAsOutput(returnNodeEnclosingCallable(this), pos) + pos = node.getKind().(DataFlowImplCommon::ParamUpdateReturnKind).getPosition() and + result = printCallableParam(returnNodeEnclosingCallable(node), pos) ) } } +string getOutput(ReturnNodeExt node) { + result = PrintReturnNodeExt::getOutput(node) +} + +string getContentOutput(ReturnNodeExt node) { + result = PrintReturnNodeExt::getOutput(node) +} + class DataFlowSummaryTargetApi extends SummaryTargetApi { DataFlowSummaryTargetApi() { not isUninterestingForDataFlowModels(this) } } @@ -71,7 +89,8 @@ private predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2 * Holds if content `c` is either a field, a synthetic field or language specific * content of a relevant type or a container like content. */ -private predicate isRelevantContent(DataFlow::ContentSet c) { +pragma[nomagic] +private predicate isRelevantContent0(DataFlow::ContentSet c) { isRelevantTypeInContent(c) or containerContent(c) } @@ -85,6 +104,16 @@ string parameterNodeAsInput(DataFlow::ParameterNode p) { result = qualifierString() and p instanceof InstanceParameterNode } +/** + * Gets the MaD string representation of the parameter `p` + * when used in content flow. + */ +string parameterNodeAsContentInput(DataFlow::ParameterNode p) { + result = parameterContentAccess(p.asParameter()) + or + result = qualifierString() and p instanceof InstanceParameterNode +} + /** * Gets the MaD input string representation of `source`. */ @@ -170,7 +199,7 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { ) { exists(DataFlow::ContentSet c | DataFlowImplCommon::store(node1, c.getAStoreContent(), node2, _, _) and - isRelevantContent(c) and + isRelevantContent0(c) and ( state1 instanceof TaintRead and state2.(TaintStore).getStep() = 1 or @@ -180,7 +209,7 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { or exists(DataFlow::ContentSet c | DataFlowPrivate::readStep(node1, c, node2) and - isRelevantContent(c) and + isRelevantContent0(c) and state1.(TaintRead).getStep() + 1 = state2.(TaintRead).getStep() ) } @@ -194,19 +223,94 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { } } -private module PropagateFlow = TaintTracking::GlobalWithState; +module PropagateFlow = TaintTracking::GlobalWithState; + +/** + * Gets the summary model(s) of `api`, if there is flow from parameters to return value or parameter. + */ +string captureThroughFlow0( + DataFlowSummaryTargetApi api, DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt +) { + exists(string input, string output | + p.getEnclosingCallable() = api and + returnNodeExt.(DataFlow::Node).getEnclosingCallable() = api and + input = parameterNodeAsInput(p) and + output = getOutput(returnNodeExt) and + input != output and + result = Printing::asTaintModel(api, input, output) + ) +} /** * Gets the summary model(s) of `api`, if there is flow from parameters to return value or parameter. */ string captureThroughFlow(DataFlowSummaryTargetApi api) { - exists(DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt, string input, string output | + exists(DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt | PropagateFlow::flow(p, returnNodeExt) and - returnNodeExt.(DataFlow::Node).getEnclosingCallable() = api and - input = parameterNodeAsInput(p) and - output = returnNodeExt.getOutput() and + result = captureThroughFlow0(api, p, returnNodeExt) + ) +} + +private module PropagateContentFlowConfig implements ContentDataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof DataFlow::ParameterNode and + source.getEnclosingCallable() instanceof DataFlowSummaryTargetApi + } + + predicate isSink(DataFlow::Node sink) { + sink instanceof ReturnNodeExt and + sink.getEnclosingCallable() instanceof DataFlowSummaryTargetApi + } + + predicate isAdditionalFlowStep = isAdditionalContentFlowStep/2; + + predicate isBarrier(DataFlow::Node n) { + exists(Type t | t = n.getType() and not isRelevantType(t)) + } + + int accessPathLimit() { result = 2 } + + predicate isRelevantContent(DataFlow::ContentSet s) { isRelevantContent0(s) } + + DataFlow::FlowFeature getAFeature() { + result instanceof DataFlow::FeatureEqualSourceSinkCallContext + } +} + +private module PropagateContentFlow = ContentDataFlow::Global; + +private string getContent(PropagateContentFlow::AccessPath ap, int i) { + exists(ContentSet head, PropagateContentFlow::AccessPath tail | + head = ap.getHead() and + tail = ap.getTail() + | + i = 0 and + result = "." + printContent(head) + or + i > 0 and result = getContent(tail, i - 1) + ) +} + +private string printStoreAccessPath(PropagateContentFlow::AccessPath ap) { + result = concat(int i | | getContent(ap, i), "" order by i) +} + +private string printReadAccessPath(PropagateContentFlow::AccessPath ap) { + result = concat(int i | | getContent(ap, i), "" order by i desc) +} + +string captureContentFlow(DataFlowSummaryTargetApi api) { + exists( + DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt, string input, string output, + PropagateContentFlow::AccessPath reads, PropagateContentFlow::AccessPath stores, + boolean preservesValue + | + PropagateContentFlow::flow(p, reads, returnNodeExt, stores, preservesValue) and + returnNodeExt.getEnclosingCallable() = api and + input = parameterNodeAsContentInput(p) + printReadAccessPath(reads) and + output = getContentOutput(returnNodeExt) + printStoreAccessPath(stores) and input != output and - result = Printing::asTaintModel(api, input, output) + result = Printing::asModel(api, input, output, preservesValue) ) } @@ -252,7 +356,7 @@ string captureSource(DataFlowSourceTargetApi api) { ExternalFlow::sourceNode(source, kind) and api = sink.getEnclosingCallable() and not irrelevantSourceSinkApi(source.getEnclosingCallable(), api) and - result = Printing::asSourceModel(api, sink.getOutput(), kind) + result = Printing::asSourceModel(api, getOutput(sink), kind) ) } diff --git a/csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll b/csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll index 89d721b300d..2f2a1ef2761 100644 --- a/csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll +++ b/csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll @@ -5,11 +5,14 @@ private import csharp as CS private import semmle.code.csharp.commons.Util as Util private import semmle.code.csharp.commons.Collections as Collections +private import semmle.code.csharp.commons.QualifiedName as QualifiedName private import semmle.code.csharp.dataflow.internal.DataFlowDispatch private import semmle.code.csharp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl private import semmle.code.csharp.frameworks.system.linq.Expressions private import semmle.code.csharp.frameworks.System +private import semmle.code.csharp.dataflow.internal.TaintTrackingPrivate as TaintTrackingPrivate import semmle.code.csharp.dataflow.internal.ExternalFlow as ExternalFlow +import semmle.code.csharp.dataflow.internal.ContentDataFlow as ContentDataFlow import semmle.code.csharp.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon import semmle.code.csharp.dataflow.internal.DataFlowPrivate as DataFlowPrivate import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch @@ -22,6 +25,8 @@ class Type = CS::Type; class Callable = CS::Callable; +class ContentSet = DataFlow::ContentSet; + /** * Holds if any of the parameters of `api` are `System.Func<>`. */ @@ -241,20 +246,40 @@ string parameterAccess(CS::Parameter p) { else result = "Argument[" + p.getPosition() + "]" } +/** + * Gets the MaD string representation of the parameter `p` + * when used in content flow. + */ +string parameterContentAccess(CS::Parameter p) { result = "Argument[" + p.getPosition() + "]" } + class InstanceParameterNode = DataFlowPrivate::InstanceParameterNode; class ParameterPosition = DataFlowDispatch::ParameterPosition; +private signature string parameterAccessSig(Parameter p); + +module ParamReturnNodeAsOutput { + bindingset[c] + string paramReturnNodeAsOutput(CS::Callable c, ParameterPosition pos) { + result = getParamAccess(c.getParameter(pos.getPosition())) + or + pos.isThisParameter() and + result = qualifierString() + } +} + /** * Gets the MaD string representation of return through parameter at position * `pos` of callable `c`. */ bindingset[c] string paramReturnNodeAsOutput(CS::Callable c, ParameterPosition pos) { - result = parameterAccess(c.getParameter(pos.getPosition())) - or - pos.isThisParameter() and - result = qualifierString() + result = ParamReturnNodeAsOutput::paramReturnNodeAsOutput(c, pos) +} + +bindingset[c] +string paramReturnNodeAsContentOutput(Callable c, ParameterPosition pos) { + result = ParamReturnNodeAsOutput::paramReturnNodeAsOutput(c, pos) } /** @@ -344,3 +369,44 @@ predicate isRelevantSourceKind(string kind) { any() } * Holds if the the content `c` is a container. */ predicate containerContent(DataFlow::ContentSet c) { c.isElement() } + +/** + * Holds if there is a taint step from `node1` to `node2` in content flow. + */ +predicate isAdditionalContentFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { + TaintTrackingPrivate::defaultAdditionalTaintStep(nodeFrom, nodeTo, _) and + not nodeTo.asExpr() instanceof CS::ElementAccess and + not exists(DataFlow::ContentSet c | + DataFlowPrivate::readStep(nodeFrom, c, nodeTo) and containerContent(c) + ) +} + +bindingset[d] +private string getFullyQualifiedName(Declaration d) { + exists(string qualifier, string name | + d.hasFullyQualifiedName(qualifier, name) and + result = QualifiedName::getQualifiedName(qualifier, name) + ) +} + +/** + * Gets the MaD string representation of the contentset `c`. + */ +string printContent(DataFlow::ContentSet c) { + exists(CS::Field f, string name | name = getFullyQualifiedName(f) | + c.isField(f) and + if f.isEffectivelyPublic() + then result = "Field[" + name + "]" + else result = "SyntheticField[" + name + "]" + ) + or + exists(CS::Property p, string name | name = getFullyQualifiedName(p) | + c.isProperty(p) and + if p.isEffectivelyPublic() + then result = "Property[" + name + "]" + else result = "SyntheticField[" + name + "]" + ) + or + c.isElement() and + result = "Element" +} diff --git a/csharp/ql/test/library-tests/attributes/AttributeArguments.expected b/csharp/ql/test/library-tests/attributes/AttributeArguments.expected index aef0c30408b..0aed2d13fbe 100644 --- a/csharp/ql/test/library-tests/attributes/AttributeArguments.expected +++ b/csharp/ql/test/library-tests/attributes/AttributeArguments.expected @@ -82,32 +82,34 @@ arguments | attributes.cs:102:8:102:19 | [My3(...)] | 0 | attributes.cs:102:21:102:21 | 4 | | attributes.cs:107:6:107:17 | [My3(...)] | 0 | attributes.cs:107:19:107:19 | 5 | | attributes.cs:108:14:108:25 | [return: My3(...)] | 0 | attributes.cs:108:27:108:27 | 6 | -| attributes.cs:113:10:113:21 | [My3(...)] | 0 | attributes.cs:113:23:113:23 | 7 | -| attributes.cs:114:18:114:29 | [return: My3(...)] | 0 | attributes.cs:114:31:114:31 | 8 | -| attributes.cs:117:18:117:29 | [My3(...)] | 0 | attributes.cs:117:31:117:31 | 9 | -| attributes.cs:118:17:118:28 | [My3(...)] | 0 | attributes.cs:118:30:118:31 | 10 | -| attributes.cs:125:18:125:29 | [My3(...)] | 0 | attributes.cs:125:31:125:32 | 11 | -| attributes.cs:126:18:126:29 | [return: My3(...)] | 0 | attributes.cs:126:31:126:32 | 12 | -| attributes.cs:129:10:129:21 | [My3(...)] | 0 | attributes.cs:129:23:129:24 | 13 | -| attributes.cs:130:17:130:28 | [My3(...)] | 0 | attributes.cs:130:30:130:31 | 14 | -| attributes.cs:142:6:142:11 | [Params(...)] | 0 | attributes.cs:142:13:142:15 | "a" | -| attributes.cs:142:6:142:11 | [Params(...)] | 1 | attributes.cs:142:18:142:20 | "b" | -| attributes.cs:142:6:142:11 | [Params(...)] | 2 | attributes.cs:142:23:142:23 | 1 | -| attributes.cs:142:6:142:11 | [Params(...)] | 3 | attributes.cs:142:26:142:26 | 2 | -| attributes.cs:142:6:142:11 | [Params(...)] | 4 | attributes.cs:142:29:142:29 | 3 | -| attributes.cs:145:6:145:11 | [Params(...)] | 0 | attributes.cs:145:17:145:19 | "a" | -| attributes.cs:145:6:145:11 | [Params(...)] | 1 | attributes.cs:145:26:145:28 | "b" | -| attributes.cs:145:6:145:11 | [Params(...)] | 2 | attributes.cs:145:31:145:31 | 1 | -| attributes.cs:145:6:145:11 | [Params(...)] | 3 | attributes.cs:145:34:145:34 | 2 | -| attributes.cs:145:6:145:11 | [Params(...)] | 4 | attributes.cs:145:37:145:37 | 3 | -| attributes.cs:148:6:148:11 | [Params(...)] | 0 | attributes.cs:148:35:148:37 | "a" | -| attributes.cs:148:6:148:11 | [Params(...)] | 1 | attributes.cs:148:26:148:28 | "b" | -| attributes.cs:148:6:148:11 | [Params(...)] | 2 | attributes.cs:148:19:148:19 | 1 | -| attributes.cs:151:6:151:11 | [Params(...)] | 0 | attributes.cs:151:45:151:47 | "a" | -| attributes.cs:151:6:151:11 | [Params(...)] | 1 | attributes.cs:151:36:151:38 | "b" | -| attributes.cs:151:6:151:11 | [Params(...)] | 2 | attributes.cs:151:19:151:29 | array creation of type Int32[] | -| attributes.cs:155:2:155:13 | [Experimental(...)] | 0 | attributes.cs:155:15:155:37 | "MyExperimentalClassId" | -| attributes.cs:158:6:158:17 | [Experimental(...)] | 0 | attributes.cs:158:19:158:42 | "MyExperimentalMethodId" | +| attributes.cs:111:6:111:17 | [My3(...)] | 0 | attributes.cs:111:19:111:20 | 15 | +| attributes.cs:114:10:114:21 | [My3(...)] | 0 | attributes.cs:114:23:114:23 | 7 | +| attributes.cs:115:18:115:29 | [return: My3(...)] | 0 | attributes.cs:115:31:115:31 | 8 | +| attributes.cs:118:18:118:29 | [My3(...)] | 0 | attributes.cs:118:31:118:31 | 9 | +| attributes.cs:119:17:119:28 | [My3(...)] | 0 | attributes.cs:119:30:119:31 | 10 | +| attributes.cs:124:6:124:17 | [My3(...)] | 0 | attributes.cs:124:19:124:20 | 16 | +| attributes.cs:127:18:127:29 | [My3(...)] | 0 | attributes.cs:127:31:127:32 | 11 | +| attributes.cs:128:18:128:29 | [return: My3(...)] | 0 | attributes.cs:128:31:128:32 | 12 | +| attributes.cs:131:10:131:21 | [My3(...)] | 0 | attributes.cs:131:23:131:24 | 13 | +| attributes.cs:132:17:132:28 | [My3(...)] | 0 | attributes.cs:132:30:132:31 | 14 | +| attributes.cs:144:6:144:11 | [Params(...)] | 0 | attributes.cs:144:13:144:15 | "a" | +| attributes.cs:144:6:144:11 | [Params(...)] | 1 | attributes.cs:144:18:144:20 | "b" | +| attributes.cs:144:6:144:11 | [Params(...)] | 2 | attributes.cs:144:23:144:23 | 1 | +| attributes.cs:144:6:144:11 | [Params(...)] | 3 | attributes.cs:144:26:144:26 | 2 | +| attributes.cs:144:6:144:11 | [Params(...)] | 4 | attributes.cs:144:29:144:29 | 3 | +| attributes.cs:147:6:147:11 | [Params(...)] | 0 | attributes.cs:147:17:147:19 | "a" | +| attributes.cs:147:6:147:11 | [Params(...)] | 1 | attributes.cs:147:26:147:28 | "b" | +| attributes.cs:147:6:147:11 | [Params(...)] | 2 | attributes.cs:147:31:147:31 | 1 | +| attributes.cs:147:6:147:11 | [Params(...)] | 3 | attributes.cs:147:34:147:34 | 2 | +| attributes.cs:147:6:147:11 | [Params(...)] | 4 | attributes.cs:147:37:147:37 | 3 | +| attributes.cs:150:6:150:11 | [Params(...)] | 0 | attributes.cs:150:35:150:37 | "a" | +| attributes.cs:150:6:150:11 | [Params(...)] | 1 | attributes.cs:150:26:150:28 | "b" | +| attributes.cs:150:6:150:11 | [Params(...)] | 2 | attributes.cs:150:19:150:19 | 1 | +| attributes.cs:153:6:153:11 | [Params(...)] | 0 | attributes.cs:153:45:153:47 | "a" | +| attributes.cs:153:6:153:11 | [Params(...)] | 1 | attributes.cs:153:36:153:38 | "b" | +| attributes.cs:153:6:153:11 | [Params(...)] | 2 | attributes.cs:153:19:153:29 | array creation of type Int32[] | +| attributes.cs:157:2:157:13 | [Experimental(...)] | 0 | attributes.cs:157:15:157:37 | "MyExperimentalClassId" | +| attributes.cs:160:6:160:17 | [Experimental(...)] | 0 | attributes.cs:160:19:160:42 | "MyExperimentalMethodId" | constructorArguments | Assembly1.dll:0:0:0:0 | [Custom(...)] | 0 | Assembly1.dll:0:0:0:0 | 1 | | Assembly1.dll:0:0:0:0 | [Custom(...)] | 0 | Assembly1.dll:0:0:0:0 | 3 | @@ -180,32 +182,34 @@ constructorArguments | attributes.cs:102:8:102:19 | [My3(...)] | 0 | attributes.cs:102:21:102:21 | 4 | | attributes.cs:107:6:107:17 | [My3(...)] | 0 | attributes.cs:107:19:107:19 | 5 | | attributes.cs:108:14:108:25 | [return: My3(...)] | 0 | attributes.cs:108:27:108:27 | 6 | -| attributes.cs:113:10:113:21 | [My3(...)] | 0 | attributes.cs:113:23:113:23 | 7 | -| attributes.cs:114:18:114:29 | [return: My3(...)] | 0 | attributes.cs:114:31:114:31 | 8 | -| attributes.cs:117:18:117:29 | [My3(...)] | 0 | attributes.cs:117:31:117:31 | 9 | -| attributes.cs:118:17:118:28 | [My3(...)] | 0 | attributes.cs:118:30:118:31 | 10 | -| attributes.cs:125:18:125:29 | [My3(...)] | 0 | attributes.cs:125:31:125:32 | 11 | -| attributes.cs:126:18:126:29 | [return: My3(...)] | 0 | attributes.cs:126:31:126:32 | 12 | -| attributes.cs:129:10:129:21 | [My3(...)] | 0 | attributes.cs:129:23:129:24 | 13 | -| attributes.cs:130:17:130:28 | [My3(...)] | 0 | attributes.cs:130:30:130:31 | 14 | -| attributes.cs:142:6:142:11 | [Params(...)] | 0 | attributes.cs:142:13:142:15 | "a" | -| attributes.cs:142:6:142:11 | [Params(...)] | 1 | attributes.cs:142:18:142:20 | "b" | -| attributes.cs:142:6:142:11 | [Params(...)] | 2 | attributes.cs:142:23:142:23 | 1 | -| attributes.cs:142:6:142:11 | [Params(...)] | 3 | attributes.cs:142:26:142:26 | 2 | -| attributes.cs:142:6:142:11 | [Params(...)] | 4 | attributes.cs:142:29:142:29 | 3 | -| attributes.cs:145:6:145:11 | [Params(...)] | 0 | attributes.cs:145:17:145:19 | "a" | -| attributes.cs:145:6:145:11 | [Params(...)] | 1 | attributes.cs:145:26:145:28 | "b" | -| attributes.cs:145:6:145:11 | [Params(...)] | 2 | attributes.cs:145:31:145:31 | 1 | -| attributes.cs:145:6:145:11 | [Params(...)] | 3 | attributes.cs:145:34:145:34 | 2 | -| attributes.cs:145:6:145:11 | [Params(...)] | 4 | attributes.cs:145:37:145:37 | 3 | -| attributes.cs:148:6:148:11 | [Params(...)] | 0 | attributes.cs:148:35:148:37 | "a" | -| attributes.cs:148:6:148:11 | [Params(...)] | 1 | attributes.cs:148:26:148:28 | "b" | -| attributes.cs:148:6:148:11 | [Params(...)] | 2 | attributes.cs:148:19:148:19 | 1 | -| attributes.cs:151:6:151:11 | [Params(...)] | 0 | attributes.cs:151:45:151:47 | "a" | -| attributes.cs:151:6:151:11 | [Params(...)] | 1 | attributes.cs:151:36:151:38 | "b" | -| attributes.cs:151:6:151:11 | [Params(...)] | 2 | attributes.cs:151:19:151:29 | array creation of type Int32[] | -| attributes.cs:155:2:155:13 | [Experimental(...)] | 0 | attributes.cs:155:15:155:37 | "MyExperimentalClassId" | -| attributes.cs:158:6:158:17 | [Experimental(...)] | 0 | attributes.cs:158:19:158:42 | "MyExperimentalMethodId" | +| attributes.cs:111:6:111:17 | [My3(...)] | 0 | attributes.cs:111:19:111:20 | 15 | +| attributes.cs:114:10:114:21 | [My3(...)] | 0 | attributes.cs:114:23:114:23 | 7 | +| attributes.cs:115:18:115:29 | [return: My3(...)] | 0 | attributes.cs:115:31:115:31 | 8 | +| attributes.cs:118:18:118:29 | [My3(...)] | 0 | attributes.cs:118:31:118:31 | 9 | +| attributes.cs:119:17:119:28 | [My3(...)] | 0 | attributes.cs:119:30:119:31 | 10 | +| attributes.cs:124:6:124:17 | [My3(...)] | 0 | attributes.cs:124:19:124:20 | 16 | +| attributes.cs:127:18:127:29 | [My3(...)] | 0 | attributes.cs:127:31:127:32 | 11 | +| attributes.cs:128:18:128:29 | [return: My3(...)] | 0 | attributes.cs:128:31:128:32 | 12 | +| attributes.cs:131:10:131:21 | [My3(...)] | 0 | attributes.cs:131:23:131:24 | 13 | +| attributes.cs:132:17:132:28 | [My3(...)] | 0 | attributes.cs:132:30:132:31 | 14 | +| attributes.cs:144:6:144:11 | [Params(...)] | 0 | attributes.cs:144:13:144:15 | "a" | +| attributes.cs:144:6:144:11 | [Params(...)] | 1 | attributes.cs:144:18:144:20 | "b" | +| attributes.cs:144:6:144:11 | [Params(...)] | 2 | attributes.cs:144:23:144:23 | 1 | +| attributes.cs:144:6:144:11 | [Params(...)] | 3 | attributes.cs:144:26:144:26 | 2 | +| attributes.cs:144:6:144:11 | [Params(...)] | 4 | attributes.cs:144:29:144:29 | 3 | +| attributes.cs:147:6:147:11 | [Params(...)] | 0 | attributes.cs:147:17:147:19 | "a" | +| attributes.cs:147:6:147:11 | [Params(...)] | 1 | attributes.cs:147:26:147:28 | "b" | +| attributes.cs:147:6:147:11 | [Params(...)] | 2 | attributes.cs:147:31:147:31 | 1 | +| attributes.cs:147:6:147:11 | [Params(...)] | 3 | attributes.cs:147:34:147:34 | 2 | +| attributes.cs:147:6:147:11 | [Params(...)] | 4 | attributes.cs:147:37:147:37 | 3 | +| attributes.cs:150:6:150:11 | [Params(...)] | 0 | attributes.cs:150:35:150:37 | "a" | +| attributes.cs:150:6:150:11 | [Params(...)] | 1 | attributes.cs:150:26:150:28 | "b" | +| attributes.cs:150:6:150:11 | [Params(...)] | 2 | attributes.cs:150:19:150:19 | 1 | +| attributes.cs:153:6:153:11 | [Params(...)] | 0 | attributes.cs:153:45:153:47 | "a" | +| attributes.cs:153:6:153:11 | [Params(...)] | 1 | attributes.cs:153:36:153:38 | "b" | +| attributes.cs:153:6:153:11 | [Params(...)] | 2 | attributes.cs:153:19:153:29 | array creation of type Int32[] | +| attributes.cs:157:2:157:13 | [Experimental(...)] | 0 | attributes.cs:157:15:157:37 | "MyExperimentalClassId" | +| attributes.cs:160:6:160:17 | [Experimental(...)] | 0 | attributes.cs:160:19:160:42 | "MyExperimentalMethodId" | namedArguments | Assembly1.dll:0:0:0:0 | [Custom(...)] | Prop2 | Assembly1.dll:0:0:0:0 | array creation of type Object[] | | Assembly1.dll:0:0:0:0 | [Custom(...)] | Prop2 | Assembly1.dll:0:0:0:0 | array creation of type Object[] | diff --git a/csharp/ql/test/library-tests/attributes/AttributeElements.expected b/csharp/ql/test/library-tests/attributes/AttributeElements.expected index 358877e20cf..7b6804927ef 100644 --- a/csharp/ql/test/library-tests/attributes/AttributeElements.expected +++ b/csharp/ql/test/library-tests/attributes/AttributeElements.expected @@ -24,20 +24,22 @@ | attributes.cs:103:17:103:27 | My2Delegate | attributes.cs:102:8:102:19 | [My3(...)] | My3Attribute | | attributes.cs:109:32:109:32 | + | attributes.cs:107:6:107:17 | [My3(...)] | My3Attribute | | attributes.cs:109:32:109:32 | + | attributes.cs:108:14:108:25 | [return: My3(...)] | My3Attribute | -| attributes.cs:115:9:115:11 | get_Item | attributes.cs:113:10:113:21 | [My3(...)] | My3Attribute | -| attributes.cs:115:9:115:11 | get_Item | attributes.cs:114:18:114:29 | [return: My3(...)] | My3Attribute | -| attributes.cs:119:9:119:11 | set_Item | attributes.cs:117:18:117:29 | [My3(...)] | My3Attribute | -| attributes.cs:119:9:119:11 | value | attributes.cs:118:17:118:28 | [My3(...)] | My3Attribute | -| attributes.cs:127:9:127:11 | get_Prop1 | attributes.cs:125:18:125:29 | [My3(...)] | My3Attribute | -| attributes.cs:127:9:127:11 | get_Prop1 | attributes.cs:126:18:126:29 | [return: My3(...)] | My3Attribute | -| attributes.cs:131:9:131:11 | set_Prop1 | attributes.cs:129:10:129:21 | [My3(...)] | My3Attribute | -| attributes.cs:131:9:131:11 | value | attributes.cs:130:17:130:28 | [My3(...)] | My3Attribute | -| attributes.cs:143:17:143:18 | M1 | attributes.cs:142:6:142:11 | [Params(...)] | Class1+ParamsAttribute | -| attributes.cs:146:17:146:18 | M2 | attributes.cs:145:6:145:11 | [Params(...)] | Class1+ParamsAttribute | -| attributes.cs:149:17:149:18 | M3 | attributes.cs:148:6:148:11 | [Params(...)] | Class1+ParamsAttribute | -| attributes.cs:152:17:152:18 | M4 | attributes.cs:151:6:151:11 | [Params(...)] | Class1+ParamsAttribute | -| attributes.cs:156:14:156:32 | MyExperimentalClass | attributes.cs:155:2:155:13 | [Experimental(...)] | System.Diagnostics.CodeAnalysis.ExperimentalAttribute | -| attributes.cs:159:17:159:36 | MyExperimentalMethod | attributes.cs:158:6:158:17 | [Experimental(...)] | System.Diagnostics.CodeAnalysis.ExperimentalAttribute | +| attributes.cs:112:16:112:19 | Item | attributes.cs:111:6:111:17 | [My3(...)] | My3Attribute | +| attributes.cs:116:9:116:11 | get_Item | attributes.cs:114:10:114:21 | [My3(...)] | My3Attribute | +| attributes.cs:116:9:116:11 | get_Item | attributes.cs:115:18:115:29 | [return: My3(...)] | My3Attribute | +| attributes.cs:120:9:120:11 | set_Item | attributes.cs:118:18:118:29 | [My3(...)] | My3Attribute | +| attributes.cs:120:9:120:11 | value | attributes.cs:119:17:119:28 | [My3(...)] | My3Attribute | +| attributes.cs:125:16:125:20 | Prop1 | attributes.cs:124:6:124:17 | [My3(...)] | My3Attribute | +| attributes.cs:129:9:129:11 | get_Prop1 | attributes.cs:127:18:127:29 | [My3(...)] | My3Attribute | +| attributes.cs:129:9:129:11 | get_Prop1 | attributes.cs:128:18:128:29 | [return: My3(...)] | My3Attribute | +| attributes.cs:133:9:133:11 | set_Prop1 | attributes.cs:131:10:131:21 | [My3(...)] | My3Attribute | +| attributes.cs:133:9:133:11 | value | attributes.cs:132:17:132:28 | [My3(...)] | My3Attribute | +| attributes.cs:145:17:145:18 | M1 | attributes.cs:144:6:144:11 | [Params(...)] | Class1+ParamsAttribute | +| attributes.cs:148:17:148:18 | M2 | attributes.cs:147:6:147:11 | [Params(...)] | Class1+ParamsAttribute | +| attributes.cs:151:17:151:18 | M3 | attributes.cs:150:6:150:11 | [Params(...)] | Class1+ParamsAttribute | +| attributes.cs:154:17:154:18 | M4 | attributes.cs:153:6:153:11 | [Params(...)] | Class1+ParamsAttribute | +| attributes.cs:158:14:158:32 | MyExperimentalClass | attributes.cs:157:2:157:13 | [Experimental(...)] | System.Diagnostics.CodeAnalysis.ExperimentalAttribute | +| attributes.cs:161:17:161:36 | MyExperimentalMethod | attributes.cs:160:6:160:17 | [Experimental(...)] | System.Diagnostics.CodeAnalysis.ExperimentalAttribute | | attributes.dll:0:0:0:0 | attributes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | attributes.cs:11:12:11:24 | [assembly: AssemblyTitle(...)] | System.Reflection.AssemblyTitleAttribute | | attributes.dll:0:0:0:0 | attributes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | attributes.cs:12:12:12:30 | [assembly: AssemblyDescription(...)] | System.Reflection.AssemblyDescriptionAttribute | | attributes.dll:0:0:0:0 | attributes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | attributes.cs:13:12:13:32 | [assembly: AssemblyConfiguration(...)] | System.Reflection.AssemblyConfigurationAttribute | diff --git a/csharp/ql/test/library-tests/attributes/ExperimentalAttributes.expected b/csharp/ql/test/library-tests/attributes/ExperimentalAttributes.expected index dba8c9d047f..55180cc1e74 100644 --- a/csharp/ql/test/library-tests/attributes/ExperimentalAttributes.expected +++ b/csharp/ql/test/library-tests/attributes/ExperimentalAttributes.expected @@ -1,2 +1,2 @@ -| attributes.cs:156:14:156:32 | MyExperimentalClass | attributes.cs:155:2:155:13 | [Experimental(...)] | MyExperimentalClassId | -| attributes.cs:159:17:159:36 | MyExperimentalMethod | attributes.cs:158:6:158:17 | [Experimental(...)] | MyExperimentalMethodId | +| attributes.cs:158:14:158:32 | MyExperimentalClass | attributes.cs:157:2:157:13 | [Experimental(...)] | MyExperimentalClassId | +| attributes.cs:161:17:161:36 | MyExperimentalMethod | attributes.cs:160:6:160:17 | [Experimental(...)] | MyExperimentalMethodId | diff --git a/csharp/ql/test/library-tests/attributes/PrintAst.expected b/csharp/ql/test/library-tests/attributes/PrintAst.expected index 209aba20ff1..2d7424365e9 100644 --- a/csharp/ql/test/library-tests/attributes/PrintAst.expected +++ b/csharp/ql/test/library-tests/attributes/PrintAst.expected @@ -338,136 +338,144 @@ attributes.cs: # 109| 1: [Parameter] b # 109| -1: [TypeMention] MyAttributeUsage # 109| 4: [IntLiteral] 0 -# 111| 6: [Indexer] Item -# 111| -1: [TypeMention] int +# 112| 6: [Indexer] Item +# 112| -1: [TypeMention] int +#-----| 0: (Attributes) +# 111| 1: [DefaultAttribute] [My3(...)] +# 111| -1: [TypeMention] My3Attribute +# 111| 0: [IntLiteral] 15 #-----| 1: (Parameters) -# 111| 0: [Parameter] x -# 111| -1: [TypeMention] int -# 115| 3: [Getter] get_Item +# 112| 0: [Parameter] x +# 112| -1: [TypeMention] int +# 116| 3: [Getter] get_Item #-----| 0: (Attributes) -# 113| 1: [DefaultAttribute] [My3(...)] -# 113| -1: [TypeMention] My3Attribute -# 113| 0: [IntLiteral] 7 -# 114| 2: [ReturnAttribute] [return: My3(...)] +# 114| 1: [DefaultAttribute] [My3(...)] # 114| -1: [TypeMention] My3Attribute -# 114| 0: [IntLiteral] 8 +# 114| 0: [IntLiteral] 7 +# 115| 2: [ReturnAttribute] [return: My3(...)] +# 115| -1: [TypeMention] My3Attribute +# 115| 0: [IntLiteral] 8 #-----| 2: (Parameters) -# 111| 0: [Parameter] x -# 115| 4: [BlockStmt] {...} -# 115| 0: [ReturnStmt] return ...; -# 115| 0: [AddExpr] ... + ... -# 115| 0: [ParameterAccess] access to parameter x -# 115| 1: [IntLiteral] 1 -# 119| 4: [Setter] set_Item +# 112| 0: [Parameter] x +# 116| 4: [BlockStmt] {...} +# 116| 0: [ReturnStmt] return ...; +# 116| 0: [AddExpr] ... + ... +# 116| 0: [ParameterAccess] access to parameter x +# 116| 1: [IntLiteral] 1 +# 120| 4: [Setter] set_Item #-----| 0: (Attributes) -# 117| 1: [DefaultAttribute] [My3(...)] -# 117| -1: [TypeMention] My3Attribute -# 117| 0: [IntLiteral] 9 +# 118| 1: [DefaultAttribute] [My3(...)] +# 118| -1: [TypeMention] My3Attribute +# 118| 0: [IntLiteral] 9 #-----| 2: (Parameters) -# 111| 0: [Parameter] x -# 119| 1: [Parameter] value +# 112| 0: [Parameter] x +# 120| 1: [Parameter] value #-----| 0: (Attributes) -# 118| 1: [DefaultAttribute] [My3(...)] -# 118| -1: [TypeMention] My3Attribute -# 118| 0: [IntLiteral] 10 -# 119| 4: [BlockStmt] {...} -# 119| 0: [ReturnStmt] return ...; -# 122| 7: [Field] p -# 122| -1: [TypeMention] int -# 123| 8: [Property] Prop1 +# 119| 1: [DefaultAttribute] [My3(...)] +# 119| -1: [TypeMention] My3Attribute +# 119| 0: [IntLiteral] 10 +# 120| 4: [BlockStmt] {...} +# 120| 0: [ReturnStmt] return ...; +# 123| 7: [Field] p # 123| -1: [TypeMention] int -# 127| 3: [Getter] get_Prop1 +# 125| 8: [Property] Prop1 +# 125| -1: [TypeMention] int +#-----| 0: (Attributes) +# 124| 1: [DefaultAttribute] [My3(...)] +# 124| -1: [TypeMention] My3Attribute +# 124| 0: [IntLiteral] 16 +# 129| 3: [Getter] get_Prop1 #-----| 0: (Attributes) -# 125| 1: [DefaultAttribute] [My3(...)] -# 125| -1: [TypeMention] My3Attribute -# 125| 0: [IntLiteral] 11 -# 126| 2: [ReturnAttribute] [return: My3(...)] -# 126| -1: [TypeMention] My3Attribute -# 126| 0: [IntLiteral] 12 -# 127| 4: [BlockStmt] {...} -# 127| 0: [ReturnStmt] return ...; -# 127| 0: [FieldAccess] access to field p -# 131| 4: [Setter] set_Prop1 +# 127| 1: [DefaultAttribute] [My3(...)] +# 127| -1: [TypeMention] My3Attribute +# 127| 0: [IntLiteral] 11 +# 128| 2: [ReturnAttribute] [return: My3(...)] +# 128| -1: [TypeMention] My3Attribute +# 128| 0: [IntLiteral] 12 +# 129| 4: [BlockStmt] {...} +# 129| 0: [ReturnStmt] return ...; +# 129| 0: [FieldAccess] access to field p +# 133| 4: [Setter] set_Prop1 #-----| 0: (Attributes) -# 129| 1: [DefaultAttribute] [My3(...)] -# 129| -1: [TypeMention] My3Attribute -# 129| 0: [IntLiteral] 13 +# 131| 1: [DefaultAttribute] [My3(...)] +# 131| -1: [TypeMention] My3Attribute +# 131| 0: [IntLiteral] 13 #-----| 2: (Parameters) -# 131| 0: [Parameter] value +# 133| 0: [Parameter] value #-----| 0: (Attributes) -# 130| 1: [DefaultAttribute] [My3(...)] -# 130| -1: [TypeMention] My3Attribute -# 130| 0: [IntLiteral] 14 -# 131| 4: [BlockStmt] {...} -# 131| 0: [ExprStmt] ...; -# 131| 0: [AssignExpr] ... = ... -# 131| 0: [FieldAccess] access to field p -# 131| 1: [ParameterAccess] access to parameter value -# 135| [Class] Class1 -# 137| 5: [Class] ParamsAttribute +# 132| 1: [DefaultAttribute] [My3(...)] +# 132| -1: [TypeMention] My3Attribute +# 132| 0: [IntLiteral] 14 +# 133| 4: [BlockStmt] {...} +# 133| 0: [ExprStmt] ...; +# 133| 0: [AssignExpr] ... = ... +# 133| 0: [FieldAccess] access to field p +# 133| 1: [ParameterAccess] access to parameter value +# 137| [Class] Class1 +# 139| 5: [Class] ParamsAttribute #-----| 3: (Base types) -# 137| 0: [TypeMention] Attribute -# 139| 4: [InstanceConstructor] ParamsAttribute +# 139| 0: [TypeMention] Attribute +# 141| 4: [InstanceConstructor] ParamsAttribute #-----| 2: (Parameters) -# 139| 0: [Parameter] s1 -# 139| -1: [TypeMention] string -# 139| 1: [Parameter] s2 -# 139| -1: [TypeMention] string -# 139| 2: [Parameter] args -# 139| -1: [TypeMention] Int32[] -# 139| 1: [TypeMention] int -# 139| 4: [BlockStmt] {...} -# 143| 6: [Method] M1 -# 143| -1: [TypeMention] Void +# 141| 0: [Parameter] s1 +# 141| -1: [TypeMention] string +# 141| 1: [Parameter] s2 +# 141| -1: [TypeMention] string +# 141| 2: [Parameter] args +# 141| -1: [TypeMention] Int32[] +# 141| 1: [TypeMention] int +# 141| 4: [BlockStmt] {...} +# 145| 6: [Method] M1 +# 145| -1: [TypeMention] Void #-----| 0: (Attributes) -# 142| 1: [DefaultAttribute] [Params(...)] -# 142| -1: [TypeMention] ParamsAttribute -# 142| 0: [StringLiteralUtf16] "a" -# 142| 1: [StringLiteralUtf16] "b" -# 142| 2: [IntLiteral] 1 -# 142| 3: [IntLiteral] 2 -# 142| 4: [IntLiteral] 3 -# 143| 4: [BlockStmt] {...} -# 146| 7: [Method] M2 -# 146| -1: [TypeMention] Void +# 144| 1: [DefaultAttribute] [Params(...)] +# 144| -1: [TypeMention] ParamsAttribute +# 144| 0: [StringLiteralUtf16] "a" +# 144| 1: [StringLiteralUtf16] "b" +# 144| 2: [IntLiteral] 1 +# 144| 3: [IntLiteral] 2 +# 144| 4: [IntLiteral] 3 +# 145| 4: [BlockStmt] {...} +# 148| 7: [Method] M2 +# 148| -1: [TypeMention] Void #-----| 0: (Attributes) -# 145| 1: [DefaultAttribute] [Params(...)] -# 145| -1: [TypeMention] ParamsAttribute -# 145| 0: [StringLiteralUtf16] "a" -# 145| 1: [StringLiteralUtf16] "b" -# 145| 2: [IntLiteral] 1 -# 145| 3: [IntLiteral] 2 -# 145| 4: [IntLiteral] 3 -# 146| 4: [BlockStmt] {...} -# 149| 8: [Method] M3 -# 149| -1: [TypeMention] Void +# 147| 1: [DefaultAttribute] [Params(...)] +# 147| -1: [TypeMention] ParamsAttribute +# 147| 0: [StringLiteralUtf16] "a" +# 147| 1: [StringLiteralUtf16] "b" +# 147| 2: [IntLiteral] 1 +# 147| 3: [IntLiteral] 2 +# 147| 4: [IntLiteral] 3 +# 148| 4: [BlockStmt] {...} +# 151| 8: [Method] M3 +# 151| -1: [TypeMention] Void #-----| 0: (Attributes) -# 148| 1: [DefaultAttribute] [Params(...)] -# 148| -1: [TypeMention] ParamsAttribute -# 148| 0: [StringLiteralUtf16] "a" -# 148| 1: [StringLiteralUtf16] "b" -# 148| 2: [IntLiteral] 1 -# 149| 4: [BlockStmt] {...} -# 152| 9: [Method] M4 -# 152| -1: [TypeMention] Void +# 150| 1: [DefaultAttribute] [Params(...)] +# 150| -1: [TypeMention] ParamsAttribute +# 150| 0: [StringLiteralUtf16] "a" +# 150| 1: [StringLiteralUtf16] "b" +# 150| 2: [IntLiteral] 1 +# 151| 4: [BlockStmt] {...} +# 154| 9: [Method] M4 +# 154| -1: [TypeMention] Void #-----| 0: (Attributes) -# 151| 1: [DefaultAttribute] [Params(...)] -# 151| -1: [TypeMention] ParamsAttribute -# 151| 0: [StringLiteralUtf16] "a" -# 151| 1: [StringLiteralUtf16] "b" -# 151| 2: [ArrayCreation] array creation of type Int32[] -# 151| -1: [ArrayInitializer] { ..., ... } -# 151| 0: [IntLiteral] 1 -# 152| 4: [BlockStmt] {...} -# 156| [Class] MyExperimentalClass +# 153| 1: [DefaultAttribute] [Params(...)] +# 153| -1: [TypeMention] ParamsAttribute +# 153| 0: [StringLiteralUtf16] "a" +# 153| 1: [StringLiteralUtf16] "b" +# 153| 2: [ArrayCreation] array creation of type Int32[] +# 153| -1: [ArrayInitializer] { ..., ... } +# 153| 0: [IntLiteral] 1 +# 154| 4: [BlockStmt] {...} +# 158| [Class] MyExperimentalClass #-----| 0: (Attributes) -# 155| 1: [DefaultAttribute] [Experimental(...)] -# 155| -1: [TypeMention] ExperimentalAttribute -# 155| 0: [StringLiteralUtf16] "MyExperimentalClassId" -# 159| 5: [Method] MyExperimentalMethod -# 159| -1: [TypeMention] Void +# 157| 1: [DefaultAttribute] [Experimental(...)] +# 157| -1: [TypeMention] ExperimentalAttribute +# 157| 0: [StringLiteralUtf16] "MyExperimentalClassId" +# 161| 5: [Method] MyExperimentalMethod +# 161| -1: [TypeMention] Void #-----| 0: (Attributes) -# 158| 1: [DefaultAttribute] [Experimental(...)] -# 158| -1: [TypeMention] ExperimentalAttribute -# 158| 0: [StringLiteralUtf16] "MyExperimentalMethodId" -# 159| 4: [BlockStmt] {...} +# 160| 1: [DefaultAttribute] [Experimental(...)] +# 160| -1: [TypeMention] ExperimentalAttribute +# 160| 0: [StringLiteralUtf16] "MyExperimentalMethodId" +# 161| 4: [BlockStmt] {...} diff --git a/csharp/ql/test/library-tests/attributes/attributes.cs b/csharp/ql/test/library-tests/attributes/attributes.cs index 25cbf258ab1..9b77535460c 100644 --- a/csharp/ql/test/library-tests/attributes/attributes.cs +++ b/csharp/ql/test/library-tests/attributes/attributes.cs @@ -108,6 +108,7 @@ public class MyAttributeUsage [return: My3Attribute(6)] public static int operator +(MyAttributeUsage a, MyAttributeUsage b) => 0; + [My3Attribute(15)] public int this[int x] { [My3Attribute(7)] @@ -120,6 +121,7 @@ public class MyAttributeUsage } private int p; + [My3Attribute(16)] public int Prop1 { [method: My3Attribute(11)] diff --git a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected index ec78d10b35f..4a16e2491df 100644 --- a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected +++ b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected @@ -12,18 +12,21 @@ | CSharp7.cs:15:9:15:11 | SSA entry def(this.field) | CSharp7.cs:15:18:15:22 | access to field field | | CSharp7.cs:15:9:15:11 | this | CSharp7.cs:15:18:15:22 | this access | | CSharp7.cs:19:9:19:11 | this | CSharp7.cs:19:16:19:20 | this access | +| CSharp7.cs:20:9:20:11 | SSA param(value) | CSharp7.cs:20:24:20:28 | access to parameter value | | CSharp7.cs:20:9:20:11 | this | CSharp7.cs:20:16:20:20 | this access | -| CSharp7.cs:20:9:20:11 | value | CSharp7.cs:20:24:20:28 | access to parameter value | +| CSharp7.cs:20:9:20:11 | value | CSharp7.cs:20:9:20:11 | SSA param(value) | | CSharp7.cs:20:24:20:28 | access to parameter value | CSharp7.cs:20:16:20:20 | access to field field | | CSharp7.cs:23:5:23:27 | this | CSharp7.cs:14:9:14:13 | this access | | CSharp7.cs:24:6:24:28 | this | CSharp7.cs:24:35:24:39 | this access | -| CSharp7.cs:29:19:29:19 | i | CSharp7.cs:31:16:31:16 | access to parameter i | +| CSharp7.cs:29:19:29:19 | SSA param(i) | CSharp7.cs:31:16:31:16 | access to parameter i | +| CSharp7.cs:29:19:29:19 | i | CSharp7.cs:29:19:29:19 | SSA param(i) | | CSharp7.cs:31:16:31:16 | access to parameter i | CSharp7.cs:31:16:31:20 | ... > ... | | CSharp7.cs:31:16:31:16 | access to parameter i | CSharp7.cs:31:24:31:24 | access to parameter i | | CSharp7.cs:31:24:31:24 | access to parameter i | CSharp7.cs:31:16:31:59 | ... ? ... : ... | | CSharp7.cs:39:9:39:9 | access to parameter x | CSharp7.cs:39:9:39:21 | SSA def(x) | | CSharp7.cs:39:13:39:21 | "tainted" | CSharp7.cs:39:9:39:9 | access to parameter x | -| CSharp7.cs:42:19:42:19 | x | CSharp7.cs:44:13:44:13 | access to parameter x | +| CSharp7.cs:42:19:42:19 | SSA param(x) | CSharp7.cs:44:13:44:13 | access to parameter x | +| CSharp7.cs:42:19:42:19 | x | CSharp7.cs:42:19:42:19 | SSA param(x) | | CSharp7.cs:44:9:44:9 | access to parameter y | CSharp7.cs:44:9:44:13 | SSA def(y) | | CSharp7.cs:44:13:44:13 | access to parameter x | CSharp7.cs:44:9:44:9 | access to parameter y | | CSharp7.cs:47:10:47:10 | this | CSharp7.cs:49:9:49:24 | this access | @@ -86,7 +89,8 @@ | CSharp7.cs:77:22:77:28 | (..., ...) | CSharp7.cs:77:9:77:18 | (..., ...) | | CSharp7.cs:77:23:77:24 | "" | CSharp7.cs:77:9:77:28 | ... = ... | | CSharp7.cs:77:27:77:27 | access to local variable x | CSharp7.cs:77:9:77:28 | ... = ... | -| CSharp7.cs:80:21:80:21 | x | CSharp7.cs:82:20:82:20 | access to parameter x | +| CSharp7.cs:80:21:80:21 | SSA param(x) | CSharp7.cs:82:20:82:20 | access to parameter x | +| CSharp7.cs:80:21:80:21 | x | CSharp7.cs:80:21:80:21 | SSA param(x) | | CSharp7.cs:85:10:85:18 | this | CSharp7.cs:90:18:90:28 | this access | | CSharp7.cs:87:13:87:14 | access to local variable t1 | CSharp7.cs:87:13:87:34 | SSA def(t1) | | CSharp7.cs:87:13:87:34 | SSA def(t1) | CSharp7.cs:88:28:88:29 | access to local variable t1 | @@ -133,40 +137,51 @@ | CSharp7.cs:121:28:121:36 | "DefUse3" | CSharp7.cs:121:22:121:24 | access to local variable m12 | | CSharp7.cs:121:28:121:36 | "DefUse3" | CSharp7.cs:121:22:121:36 | ... = ... | | CSharp7.cs:127:9:127:12 | this | CSharp7.cs:133:24:133:25 | this access | -| CSharp7.cs:129:20:129:20 | x | CSharp7.cs:129:32:129:32 | access to parameter x | +| CSharp7.cs:129:20:129:20 | SSA param(x) | CSharp7.cs:129:32:129:32 | access to parameter x | +| CSharp7.cs:129:20:129:20 | x | CSharp7.cs:129:20:129:20 | SSA param(x) | | CSharp7.cs:129:32:129:32 | access to parameter x | CSharp7.cs:129:32:129:36 | ... + ... | | CSharp7.cs:129:36:129:36 | 1 | CSharp7.cs:129:32:129:36 | ... + ... | -| CSharp7.cs:131:22:131:22 | t | CSharp7.cs:131:39:131:39 | access to parameter t | +| CSharp7.cs:131:22:131:22 | SSA param(t) | CSharp7.cs:131:39:131:39 | access to parameter t | +| CSharp7.cs:131:22:131:22 | t | CSharp7.cs:131:22:131:22 | SSA param(t) | | CSharp7.cs:133:24:133:25 | delegate creation of type Func | CSharp7.cs:133:19:133:20 | access to local variable f4 | | CSharp7.cs:133:24:133:25 | this access | CSharp7.cs:154:16:154:17 | this access | -| CSharp7.cs:137:29:137:29 | x | CSharp7.cs:137:34:137:34 | access to parameter x | +| CSharp7.cs:137:29:137:29 | SSA param(x) | CSharp7.cs:137:34:137:34 | access to parameter x | +| CSharp7.cs:137:29:137:29 | x | CSharp7.cs:137:29:137:29 | SSA param(x) | | CSharp7.cs:137:29:137:38 | (...) => ... | CSharp7.cs:137:24:137:25 | access to local variable f5 | | CSharp7.cs:137:34:137:34 | access to parameter x | CSharp7.cs:137:34:137:38 | ... + ... | | CSharp7.cs:137:38:137:38 | 1 | CSharp7.cs:137:34:137:38 | ... + ... | -| CSharp7.cs:139:20:139:20 | x | CSharp7.cs:139:26:139:26 | access to parameter x | +| CSharp7.cs:139:20:139:20 | SSA param(x) | CSharp7.cs:139:26:139:26 | access to parameter x | +| CSharp7.cs:139:20:139:20 | x | CSharp7.cs:139:20:139:20 | SSA param(x) | | CSharp7.cs:139:26:139:26 | access to parameter x | CSharp7.cs:139:26:139:30 | ... > ... | | CSharp7.cs:139:26:139:26 | access to parameter x | CSharp7.cs:139:41:139:41 | access to parameter x | | CSharp7.cs:139:34:139:34 | 1 | CSharp7.cs:139:34:139:46 | ... + ... | | CSharp7.cs:139:34:139:46 | ... + ... | CSharp7.cs:139:26:139:50 | ... ? ... : ... | | CSharp7.cs:139:38:139:46 | call to local function f7 | CSharp7.cs:139:34:139:46 | ... + ... | | CSharp7.cs:139:50:139:50 | 0 | CSharp7.cs:139:26:139:50 | ... ? ... : ... | -| CSharp7.cs:141:20:141:20 | x | CSharp7.cs:141:29:141:29 | access to parameter x | -| CSharp7.cs:145:24:145:24 | x | CSharp7.cs:145:33:145:33 | access to parameter x | +| CSharp7.cs:141:20:141:20 | SSA param(x) | CSharp7.cs:141:29:141:29 | access to parameter x | +| CSharp7.cs:141:20:141:20 | x | CSharp7.cs:141:20:141:20 | SSA param(x) | +| CSharp7.cs:145:24:145:24 | SSA param(x) | CSharp7.cs:145:33:145:33 | access to parameter x | +| CSharp7.cs:145:24:145:24 | x | CSharp7.cs:145:24:145:24 | SSA param(x) | | CSharp7.cs:149:20:152:9 | (...) => ... | CSharp7.cs:149:16:149:16 | access to local variable a | | CSharp7.cs:157:10:157:17 | this | CSharp7.cs:169:9:169:9 | this access | -| CSharp7.cs:160:18:160:18 | t | CSharp7.cs:160:24:160:24 | access to parameter t | -| CSharp7.cs:162:26:162:26 | u | CSharp7.cs:166:22:166:22 | access to parameter u | +| CSharp7.cs:160:18:160:18 | SSA param(t) | CSharp7.cs:160:24:160:24 | access to parameter t | +| CSharp7.cs:160:18:160:18 | t | CSharp7.cs:160:18:160:18 | SSA param(t) | +| CSharp7.cs:162:26:162:26 | SSA param(u) | CSharp7.cs:166:22:166:22 | access to parameter u | +| CSharp7.cs:162:26:162:26 | u | CSharp7.cs:162:26:162:26 | SSA param(u) | | CSharp7.cs:165:13:165:16 | this access | CSharp7.cs:166:20:166:20 | this access | | CSharp7.cs:169:9:169:9 | this access | CSharp7.cs:170:9:170:9 | this access | | CSharp7.cs:173:10:173:19 | this | CSharp7.cs:180:21:180:21 | this access | | CSharp7.cs:175:16:175:18 | access to local variable src | CSharp7.cs:175:16:175:30 | SSA def(src) | | CSharp7.cs:175:16:175:30 | SSA def(src) | CSharp7.cs:180:23:180:25 | access to local variable src | | CSharp7.cs:175:22:175:30 | "tainted" | CSharp7.cs:175:16:175:18 | access to local variable src | -| CSharp7.cs:176:25:176:25 | s | CSharp7.cs:176:33:176:33 | access to parameter s | +| CSharp7.cs:176:25:176:25 | SSA param(s) | CSharp7.cs:176:33:176:33 | access to parameter s | +| CSharp7.cs:176:25:176:25 | s | CSharp7.cs:176:25:176:25 | SSA param(s) | | CSharp7.cs:176:31:176:34 | call to local function g | CSharp7.cs:176:31:176:39 | ... + ... | | CSharp7.cs:176:38:176:39 | "" | CSharp7.cs:176:31:176:39 | ... + ... | -| CSharp7.cs:177:25:177:25 | s | CSharp7.cs:177:31:177:31 | access to parameter s | -| CSharp7.cs:178:25:178:25 | s | CSharp7.cs:178:37:178:37 | access to parameter s | +| CSharp7.cs:177:25:177:25 | SSA param(s) | CSharp7.cs:177:31:177:31 | access to parameter s | +| CSharp7.cs:177:25:177:25 | s | CSharp7.cs:177:25:177:25 | SSA param(s) | +| CSharp7.cs:178:25:178:25 | SSA param(s) | CSharp7.cs:178:37:178:37 | access to parameter s | +| CSharp7.cs:178:25:178:25 | s | CSharp7.cs:178:25:178:25 | SSA param(s) | | CSharp7.cs:180:21:180:21 | this access | CSharp7.cs:181:21:181:21 | this access | | CSharp7.cs:180:21:180:26 | call to local function f | CSharp7.cs:180:13:180:17 | access to local variable sink1 | | CSharp7.cs:180:23:180:25 | [post] access to local variable src | CSharp7.cs:181:23:181:25 | access to local variable src | @@ -205,8 +220,10 @@ | CSharp7.cs:198:26:198:35 | this access | CSharp7.cs:199:9:199:18 | this access | | CSharp7.cs:198:33:198:34 | access to local variable r1 | CSharp7.cs:199:16:199:17 | access to local variable r1 | | CSharp7.cs:199:22:199:22 | 3 | CSharp7.cs:199:9:199:22 | ... = ... | -| CSharp7.cs:202:24:202:24 | p | CSharp7.cs:205:20:205:20 | access to parameter p | -| CSharp7.cs:204:28:204:28 | q | CSharp7.cs:204:44:204:44 | access to parameter q | +| CSharp7.cs:202:24:202:24 | SSA param(p) | CSharp7.cs:205:20:205:20 | access to parameter p | +| CSharp7.cs:202:24:202:24 | p | CSharp7.cs:202:24:202:24 | SSA param(p) | +| CSharp7.cs:204:28:204:28 | SSA param(q) | CSharp7.cs:204:44:204:44 | access to parameter q | +| CSharp7.cs:204:28:204:28 | q | CSharp7.cs:204:28:204:28 | SSA param(q) | | CSharp7.cs:215:9:215:9 | access to parameter x | CSharp7.cs:215:9:215:17 | SSA def(x) | | CSharp7.cs:215:13:215:17 | false | CSharp7.cs:215:9:215:9 | access to parameter x | | CSharp7.cs:219:10:219:13 | this | CSharp7.cs:221:13:221:20 | this access | @@ -224,8 +241,8 @@ | CSharp7.cs:232:16:232:23 | SSA def(o) | CSharp7.cs:233:13:233:13 | access to local variable o | | CSharp7.cs:232:20:232:23 | null | CSharp7.cs:232:16:232:16 | access to local variable o | | CSharp7.cs:233:13:233:13 | access to local variable o | CSharp7.cs:233:18:233:23 | Int32 i1 | +| CSharp7.cs:233:13:233:13 | access to local variable o | CSharp7.cs:235:13:235:42 | [input] SSA phi read(o) | | CSharp7.cs:233:13:233:13 | access to local variable o | CSharp7.cs:237:18:237:18 | access to local variable o | -| CSharp7.cs:233:13:233:13 | access to local variable o | CSharp7.cs:248:9:274:9 | SSA phi read(o) | | CSharp7.cs:233:13:233:23 | [false] ... is ... | CSharp7.cs:233:13:233:33 | [false] ... && ... | | CSharp7.cs:233:13:233:23 | [true] ... is ... | CSharp7.cs:233:13:233:33 | [false] ... && ... | | CSharp7.cs:233:13:233:23 | [true] ... is ... | CSharp7.cs:233:13:233:33 | [true] ... && ... | @@ -235,19 +252,25 @@ | CSharp7.cs:233:28:233:29 | access to local variable i1 | CSharp7.cs:235:38:235:39 | access to local variable i1 | | CSharp7.cs:233:28:233:33 | ... > ... | CSharp7.cs:233:13:233:33 | [false] ... && ... | | CSharp7.cs:233:28:233:33 | ... > ... | CSharp7.cs:233:13:233:33 | [true] ... && ... | +| CSharp7.cs:235:13:235:42 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | | CSharp7.cs:235:33:235:36 | "int " | CSharp7.cs:235:31:235:41 | $"..." | | CSharp7.cs:235:38:235:39 | access to local variable i1 | CSharp7.cs:235:31:235:41 | $"..." | | CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:237:23:237:31 | String s1 | +| CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:239:13:239:45 | [input] SSA phi read(o) | | CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:241:18:241:18 | access to local variable o | -| CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:248:9:274:9 | SSA phi read(o) | | CSharp7.cs:237:23:237:31 | SSA def(s1) | CSharp7.cs:239:41:239:42 | access to local variable s1 | | CSharp7.cs:237:23:237:31 | String s1 | CSharp7.cs:237:23:237:31 | SSA def(s1) | +| CSharp7.cs:239:13:239:45 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | | CSharp7.cs:239:33:239:39 | "string " | CSharp7.cs:239:31:239:44 | $"..." | | CSharp7.cs:239:41:239:42 | access to local variable s1 | CSharp7.cs:239:31:239:44 | $"..." | +| CSharp7.cs:241:18:241:18 | access to local variable o | CSharp7.cs:242:9:243:9 | [input] SSA phi read(o) | | CSharp7.cs:241:18:241:18 | access to local variable o | CSharp7.cs:244:18:244:18 | access to local variable o | -| CSharp7.cs:241:18:241:18 | access to local variable o | CSharp7.cs:248:9:274:9 | SSA phi read(o) | +| CSharp7.cs:242:9:243:9 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | +| CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:244:18:244:28 | [input] SSA phi read(o) | | CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:244:23:244:28 | Object v1 | -| CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:248:9:274:9 | SSA phi read(o) | +| CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:245:9:246:9 | [input] SSA phi read(o) | +| CSharp7.cs:244:18:244:28 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | +| CSharp7.cs:245:9:246:9 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | | CSharp7.cs:248:9:274:9 | SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:254:27:254:27 | access to local variable o | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:257:18:257:23 | Int32 i2 | @@ -281,14 +304,16 @@ | CSharp7.cs:283:13:283:16 | access to local variable list | CSharp7.cs:283:13:283:62 | SSA def(list) | | CSharp7.cs:283:13:283:62 | SSA def(list) | CSharp7.cs:285:39:285:42 | access to local variable list | | CSharp7.cs:283:20:283:62 | call to method Select,(Int32,String)> | CSharp7.cs:283:13:283:16 | access to local variable list | -| CSharp7.cs:283:32:283:35 | item | CSharp7.cs:283:41:283:44 | access to parameter item | +| CSharp7.cs:283:32:283:35 | SSA param(item) | CSharp7.cs:283:41:283:44 | access to parameter item | +| CSharp7.cs:283:32:283:35 | item | CSharp7.cs:283:32:283:35 | SSA param(item) | | CSharp7.cs:283:41:283:44 | access to parameter item | CSharp7.cs:283:41:283:48 | access to property Key | | CSharp7.cs:283:41:283:44 | access to parameter item | CSharp7.cs:283:51:283:54 | access to parameter item | | CSharp7.cs:283:51:283:54 | access to parameter item | CSharp7.cs:283:51:283:60 | access to property Value | | CSharp7.cs:285:39:285:42 | access to local variable list | CSharp7.cs:287:36:287:39 | access to local variable list | | CSharp7.cs:287:36:287:39 | access to local variable list | CSharp7.cs:289:32:289:35 | access to local variable list | | CSharp7.cs:297:18:297:18 | access to local variable x | CSharp7.cs:297:18:297:22 | SSA def(x) | -| CSharp7.cs:297:18:297:22 | SSA def(x) | CSharp7.cs:297:25:297:25 | SSA phi(x) | +| CSharp7.cs:297:18:297:22 | SSA def(x) | CSharp7.cs:297:18:297:22 | [input] SSA phi(x) | +| CSharp7.cs:297:18:297:22 | [input] SSA phi(x) | CSharp7.cs:297:25:297:25 | SSA phi(x) | | CSharp7.cs:297:22:297:22 | 0 | CSharp7.cs:297:18:297:18 | access to local variable x | | CSharp7.cs:297:25:297:25 | SSA phi(x) | CSharp7.cs:297:25:297:25 | access to local variable x | | CSharp7.cs:297:25:297:25 | access to local variable x | CSharp7.cs:297:25:297:30 | ... < ... | @@ -301,5 +326,6 @@ | CSharp7.cs:297:35:297:44 | [true] ... is ... | CSharp7.cs:297:25:297:44 | [true] ... && ... | | CSharp7.cs:297:40:297:44 | Int32 y | CSharp7.cs:297:40:297:44 | SSA def(y) | | CSharp7.cs:297:40:297:44 | SSA def(y) | CSharp7.cs:299:31:299:31 | access to local variable y | -| CSharp7.cs:297:47:297:49 | SSA def(x) | CSharp7.cs:297:25:297:25 | SSA phi(x) | +| CSharp7.cs:297:47:297:49 | SSA def(x) | CSharp7.cs:297:47:297:49 | [input] SSA phi(x) | +| CSharp7.cs:297:47:297:49 | [input] SSA phi(x) | CSharp7.cs:297:25:297:25 | SSA phi(x) | | CSharp7.cs:297:49:297:49 | access to local variable x | CSharp7.cs:297:47:297:49 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/barrier-guards/BarrierFlow.cs b/csharp/ql/test/library-tests/dataflow/barrier-guards/BarrierFlow.cs new file mode 100644 index 00000000000..3f3afed0a14 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/barrier-guards/BarrierFlow.cs @@ -0,0 +1,83 @@ +class BarrierFlow +{ + static object Source(object source) => throw null; + + public static void Sink(object o) { } + + + void M1() + { + var x = Source(1); + + Sink(x); // $ hasValueFlow=1 + } + + void M2() + { + var x = Source(2); + + if (x != "safe") + { + Sink(x); // $ hasValueFlow=2 + } + } + + void M3() + { + var x = Source(3); + + if (x == "safe") + { + Sink(x); + } + } + + void M4() + { + var x = Source(4); + + if (x != "safe") + { + x = "safe"; + } + + Sink(x); + } + + void M5() + { + var x = Source(5); + + if (x == "safe") + { + } + else + { + x = "safe"; + } + + Sink(x); + } + + void M6(bool b) + { + var x = Source(6); + + if (b) + { + if (x != "safe1") + { + return; + } + } + else + { + if (x != "safe2") + { + return; + } + } + + Sink(x); + } +} diff --git a/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected b/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected new file mode 100644 index 00000000000..4fb1c0c3df1 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected @@ -0,0 +1,18 @@ +models +edges +| BarrierFlow.cs:10:13:10:13 | access to local variable x : Object | BarrierFlow.cs:12:14:12:14 | access to local variable x | provenance | | +| BarrierFlow.cs:10:17:10:25 | call to method Source : Object | BarrierFlow.cs:10:13:10:13 | access to local variable x : Object | provenance | | +| BarrierFlow.cs:17:13:17:13 | access to local variable x : Object | BarrierFlow.cs:21:18:21:18 | access to local variable x | provenance | | +| BarrierFlow.cs:17:17:17:25 | call to method Source : Object | BarrierFlow.cs:17:13:17:13 | access to local variable x : Object | provenance | | +nodes +| BarrierFlow.cs:10:13:10:13 | access to local variable x : Object | semmle.label | access to local variable x : Object | +| BarrierFlow.cs:10:17:10:25 | call to method Source : Object | semmle.label | call to method Source : Object | +| BarrierFlow.cs:12:14:12:14 | access to local variable x | semmle.label | access to local variable x | +| BarrierFlow.cs:17:13:17:13 | access to local variable x : Object | semmle.label | access to local variable x : Object | +| BarrierFlow.cs:17:17:17:25 | call to method Source : Object | semmle.label | call to method Source : Object | +| BarrierFlow.cs:21:18:21:18 | access to local variable x | semmle.label | access to local variable x | +subpaths +testFailures +#select +| BarrierFlow.cs:12:14:12:14 | access to local variable x | BarrierFlow.cs:10:17:10:25 | call to method Source : Object | BarrierFlow.cs:12:14:12:14 | access to local variable x | $@ | BarrierFlow.cs:10:17:10:25 | call to method Source : Object | call to method Source : Object | +| BarrierFlow.cs:21:18:21:18 | access to local variable x | BarrierFlow.cs:17:17:17:25 | call to method Source : Object | BarrierFlow.cs:21:18:21:18 | access to local variable x | $@ | BarrierFlow.cs:17:17:17:25 | call to method Source : Object | call to method Source : Object | diff --git a/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql b/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql new file mode 100644 index 00000000000..89bd8ff456e --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql @@ -0,0 +1,35 @@ +/** + * @kind path-problem + */ + +import csharp +import semmle.code.csharp.controlflow.Guards + +private predicate stringConstCompare(Guard guard, Expr testedNode, AbstractValue value) { + guard + .isEquality(any(StringLiteral lit), testedNode, + value.(AbstractValues::BooleanValue).getValue()) +} + +class StringConstCompareBarrier extends DataFlow::Node { + StringConstCompareBarrier() { + this = DataFlow::BarrierGuard::getABarrierNode() + } +} + +import TestUtilities.InlineFlowTest +import PathGraph + +module FlowConfig implements DataFlow::ConfigSig { + predicate isSource = DefaultFlowConfig::isSource/1; + + predicate isSink = DefaultFlowConfig::isSink/1; + + predicate isBarrier(DataFlow::Node n) { n instanceof StringConstCompareBarrier } +} + +import ValueFlowTest + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs index 1090b61a884..aa26a5d4305 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs @@ -291,4 +291,42 @@ namespace My.Qltest static void Sink(object o) { } } + + // Test synthetic fields + public class K { + + public object MyField; + + public void SetMySyntheticField(object o) => throw null; + + public object GetMySyntheticField() => throw null; + + public void SetMyNestedSyntheticField(object o) => throw null; + + public object GetMyNestedSyntheticField() => throw null; + + public void SetMyFieldOnSyntheticField(object o) => throw null; + + public object GetMyFieldOnSyntheticField() => throw null; + + public void M1() { + var o = new object(); + SetMySyntheticField(o); + Sink(GetMySyntheticField()); + } + + public void M2() { + var o = new object(); + SetMyNestedSyntheticField(o); + Sink(GetMyNestedSyntheticField()); + } + + public void M3() { + var o = new object(); + SetMyFieldOnSyntheticField(o); + Sink(GetMyFieldOnSyntheticField()); + } + + static void Sink(object o) { } + } } diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected index cad976516b3..0b80a70fbad 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected @@ -24,6 +24,12 @@ models | 23 | Summary: My.Qltest; I; false; GetFirst; (My.Qltest.MyInlineArray); ; Argument[0].Element; ReturnValue; value; manual | | 24 | Summary: My.Qltest; J; false; get_Prop1; (); ; Argument[this]; ReturnValue; value; manual | | 25 | Summary: My.Qltest; J; false; SetProp1; (System.Object); ; Argument[0]; Argument[this]; value; manual | +| 26 | Summary: My.Qltest; K; false; SetMySyntheticField; (System.Object); ; Argument[0]; Argument[this].SyntheticField[My.Qltest.K.MySyntheticField]; value; manual | +| 27 | Summary: My.Qltest; K; false; GetMySyntheticField; (); ; Argument[this].SyntheticField[My.Qltest.K.MySyntheticField]; ReturnValue; value; manual | +| 28 | Summary: My.Qltest; K; false; SetMyNestedSyntheticField; (System.Object); ; Argument[0]; Argument[this].SyntheticField[My.Qltest.K.MySyntheticField1].SyntheticField[MySyntheticField1.MyNestedSyntheticField]; value; manual | +| 29 | Summary: My.Qltest; K; false; GetMyNestedSyntheticField; (); ; Argument[this].SyntheticField[My.Qltest.K.MySyntheticField1].SyntheticField[MySyntheticField1.MyNestedSyntheticField]; ReturnValue; value; manual | +| 30 | Summary: My.Qltest; K; false; SetMyFieldOnSyntheticField; (System.Object); ; Argument[0]; Argument[this].SyntheticField[My.Qltest.K.MySyntheticField2].Field[My.Qltest.K.MyField]; value; manual | +| 31 | Summary: My.Qltest; K; false; GetMyFieldOnSyntheticField; (); ; Argument[this].SyntheticField[My.Qltest.K.MySyntheticField2].Field[My.Qltest.K.MyField]; ReturnValue; value; manual | edges | ExternalFlow.cs:9:20:9:23 | access to local variable arg1 : Object | ExternalFlow.cs:10:29:10:32 | access to local variable arg1 : Object | provenance | | | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | ExternalFlow.cs:9:20:9:23 | access to local variable arg1 : Object | provenance | | @@ -121,6 +127,21 @@ edges | ExternalFlow.cs:279:13:279:23 | [post] this access : J | ExternalFlow.cs:281:18:281:21 | this access : J | provenance | | | ExternalFlow.cs:279:22:279:22 | access to local variable j : Object | ExternalFlow.cs:279:13:279:23 | [post] this access : J | provenance | MaD:25 | | ExternalFlow.cs:281:18:281:21 | this access : J | ExternalFlow.cs:281:18:281:27 | access to property Prop1 | provenance | MaD:24 | +| ExternalFlow.cs:313:17:313:17 | access to local variable o : Object | ExternalFlow.cs:314:33:314:33 | access to local variable o : Object | provenance | | +| ExternalFlow.cs:313:21:313:32 | object creation of type Object : Object | ExternalFlow.cs:313:17:313:17 | access to local variable o : Object | provenance | | +| ExternalFlow.cs:314:13:314:34 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField] : Object | ExternalFlow.cs:315:18:315:38 | this access : K [synthetic My.Qltest.K.MySyntheticField] : Object | provenance | | +| ExternalFlow.cs:314:33:314:33 | access to local variable o : Object | ExternalFlow.cs:314:13:314:34 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField] : Object | provenance | MaD:26 | +| ExternalFlow.cs:315:18:315:38 | this access : K [synthetic My.Qltest.K.MySyntheticField] : Object | ExternalFlow.cs:315:18:315:38 | call to method GetMySyntheticField | provenance | MaD:27 | +| ExternalFlow.cs:319:17:319:17 | access to local variable o : Object | ExternalFlow.cs:320:39:320:39 | access to local variable o : Object | provenance | | +| ExternalFlow.cs:319:21:319:32 | object creation of type Object : Object | ExternalFlow.cs:319:17:319:17 | access to local variable o : Object | provenance | | +| ExternalFlow.cs:320:13:320:40 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField1, synthetic MySyntheticField1.MyNestedSyntheticField] : Object | ExternalFlow.cs:321:18:321:44 | this access : K [synthetic My.Qltest.K.MySyntheticField1, synthetic MySyntheticField1.MyNestedSyntheticField] : Object | provenance | | +| ExternalFlow.cs:320:39:320:39 | access to local variable o : Object | ExternalFlow.cs:320:13:320:40 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField1, synthetic MySyntheticField1.MyNestedSyntheticField] : Object | provenance | MaD:28 | +| ExternalFlow.cs:321:18:321:44 | this access : K [synthetic My.Qltest.K.MySyntheticField1, synthetic MySyntheticField1.MyNestedSyntheticField] : Object | ExternalFlow.cs:321:18:321:44 | call to method GetMyNestedSyntheticField | provenance | MaD:29 | +| ExternalFlow.cs:325:17:325:17 | access to local variable o : Object | ExternalFlow.cs:326:40:326:40 | access to local variable o : Object | provenance | | +| ExternalFlow.cs:325:21:325:32 | object creation of type Object : Object | ExternalFlow.cs:325:17:325:17 | access to local variable o : Object | provenance | | +| ExternalFlow.cs:326:13:326:41 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField2, field MyField] : Object | ExternalFlow.cs:327:18:327:45 | this access : K [synthetic My.Qltest.K.MySyntheticField2, field MyField] : Object | provenance | | +| ExternalFlow.cs:326:40:326:40 | access to local variable o : Object | ExternalFlow.cs:326:13:326:41 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField2, field MyField] : Object | provenance | MaD:30 | +| ExternalFlow.cs:327:18:327:45 | this access : K [synthetic My.Qltest.K.MySyntheticField2, field MyField] : Object | ExternalFlow.cs:327:18:327:45 | call to method GetMyFieldOnSyntheticField | provenance | MaD:31 | nodes | ExternalFlow.cs:9:20:9:23 | access to local variable arg1 : Object | semmle.label | access to local variable arg1 : Object | | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | @@ -240,6 +261,24 @@ nodes | ExternalFlow.cs:279:22:279:22 | access to local variable j : Object | semmle.label | access to local variable j : Object | | ExternalFlow.cs:281:18:281:21 | this access : J | semmle.label | this access : J | | ExternalFlow.cs:281:18:281:27 | access to property Prop1 | semmle.label | access to property Prop1 | +| ExternalFlow.cs:313:17:313:17 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| ExternalFlow.cs:313:21:313:32 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | +| ExternalFlow.cs:314:13:314:34 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField] : Object | semmle.label | [post] this access : K [synthetic My.Qltest.K.MySyntheticField] : Object | +| ExternalFlow.cs:314:33:314:33 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| ExternalFlow.cs:315:18:315:38 | call to method GetMySyntheticField | semmle.label | call to method GetMySyntheticField | +| ExternalFlow.cs:315:18:315:38 | this access : K [synthetic My.Qltest.K.MySyntheticField] : Object | semmle.label | this access : K [synthetic My.Qltest.K.MySyntheticField] : Object | +| ExternalFlow.cs:319:17:319:17 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| ExternalFlow.cs:319:21:319:32 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | +| ExternalFlow.cs:320:13:320:40 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField1, synthetic MySyntheticField1.MyNestedSyntheticField] : Object | semmle.label | [post] this access : K [synthetic My.Qltest.K.MySyntheticField1, synthetic MySyntheticField1.MyNestedSyntheticField] : Object | +| ExternalFlow.cs:320:39:320:39 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| ExternalFlow.cs:321:18:321:44 | call to method GetMyNestedSyntheticField | semmle.label | call to method GetMyNestedSyntheticField | +| ExternalFlow.cs:321:18:321:44 | this access : K [synthetic My.Qltest.K.MySyntheticField1, synthetic MySyntheticField1.MyNestedSyntheticField] : Object | semmle.label | this access : K [synthetic My.Qltest.K.MySyntheticField1, synthetic MySyntheticField1.MyNestedSyntheticField] : Object | +| ExternalFlow.cs:325:17:325:17 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| ExternalFlow.cs:325:21:325:32 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | +| ExternalFlow.cs:326:13:326:41 | [post] this access : K [synthetic My.Qltest.K.MySyntheticField2, field MyField] : Object | semmle.label | [post] this access : K [synthetic My.Qltest.K.MySyntheticField2, field MyField] : Object | +| ExternalFlow.cs:326:40:326:40 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| ExternalFlow.cs:327:18:327:45 | call to method GetMyFieldOnSyntheticField | semmle.label | call to method GetMyFieldOnSyntheticField | +| ExternalFlow.cs:327:18:327:45 | this access : K [synthetic My.Qltest.K.MySyntheticField2, field MyField] : Object | semmle.label | this access : K [synthetic My.Qltest.K.MySyntheticField2, field MyField] : Object | subpaths | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:35:84:35 | o : Object | ExternalFlow.cs:84:40:84:40 | access to parameter o : Object | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | invalidModelRow @@ -269,3 +308,6 @@ invalidModelRow | ExternalFlow.cs:240:18:240:18 | access to local variable o | ExternalFlow.cs:238:21:238:28 | object creation of type HC : HC | ExternalFlow.cs:240:18:240:18 | access to local variable o | $@ | ExternalFlow.cs:238:21:238:28 | object creation of type HC : HC | object creation of type HC : HC | | ExternalFlow.cs:258:18:258:18 | access to local variable b | ExternalFlow.cs:256:20:256:31 | object creation of type Object : Object | ExternalFlow.cs:258:18:258:18 | access to local variable b | $@ | ExternalFlow.cs:256:20:256:31 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:281:18:281:27 | access to property Prop1 | ExternalFlow.cs:278:21:278:32 | object creation of type Object : Object | ExternalFlow.cs:281:18:281:27 | access to property Prop1 | $@ | ExternalFlow.cs:278:21:278:32 | object creation of type Object : Object | object creation of type Object : Object | +| ExternalFlow.cs:315:18:315:38 | call to method GetMySyntheticField | ExternalFlow.cs:313:21:313:32 | object creation of type Object : Object | ExternalFlow.cs:315:18:315:38 | call to method GetMySyntheticField | $@ | ExternalFlow.cs:313:21:313:32 | object creation of type Object : Object | object creation of type Object : Object | +| ExternalFlow.cs:321:18:321:44 | call to method GetMyNestedSyntheticField | ExternalFlow.cs:319:21:319:32 | object creation of type Object : Object | ExternalFlow.cs:321:18:321:44 | call to method GetMyNestedSyntheticField | $@ | ExternalFlow.cs:319:21:319:32 | object creation of type Object : Object | object creation of type Object : Object | +| ExternalFlow.cs:327:18:327:45 | call to method GetMyFieldOnSyntheticField | ExternalFlow.cs:325:21:325:32 | object creation of type Object : Object | ExternalFlow.cs:327:18:327:45 | call to method GetMyFieldOnSyntheticField | $@ | ExternalFlow.cs:325:21:325:32 | object creation of type Object : Object | object creation of type Object : Object | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml index 6c877d06161..f2cf9972a73 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml @@ -37,6 +37,13 @@ extensions: - ["My.Qltest", "J", false, "SetProp1", "(System.Object)", "", "Argument[0]", "Argument[this]", "value", "manual"] - ["My.Qltest", "J", false, "get_Prop2", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - ["My.Qltest", "J", false, "SetProp2", "(System.Object)", "", "Argument[0]", "Argument[this]", "value", "manual"] + - ["My.Qltest", "K", false, "SetMySyntheticField", "(System.Object)", "", "Argument[0]", "Argument[this].SyntheticField[My.Qltest.K.MySyntheticField]", "value", "manual"] + - ["My.Qltest", "K", false, "GetMySyntheticField", "()", "", "Argument[this].SyntheticField[My.Qltest.K.MySyntheticField]", "ReturnValue", "value", "manual"] + - ["My.Qltest", "K", false, "SetMyNestedSyntheticField", "(System.Object)", "", "Argument[0]", "Argument[this].SyntheticField[My.Qltest.K.MySyntheticField1].SyntheticField[MySyntheticField1.MyNestedSyntheticField]", "value", "manual"] + - ["My.Qltest", "K", false, "GetMyNestedSyntheticField", "()", "", "Argument[this].SyntheticField[My.Qltest.K.MySyntheticField1].SyntheticField[MySyntheticField1.MyNestedSyntheticField]", "ReturnValue", "value", "manual"] + - ["My.Qltest", "K", false, "SetMyFieldOnSyntheticField", "(System.Object)", "", "Argument[0]", "Argument[this].SyntheticField[My.Qltest.K.MySyntheticField2].Field[My.Qltest.K.MyField]", "value", "manual"] + - ["My.Qltest", "K", false, "GetMyFieldOnSyntheticField", "()", "", "Argument[this].SyntheticField[My.Qltest.K.MySyntheticField2].Field[My.Qltest.K.MyField]", "ReturnValue", "value", "manual"] + - addsTo: pack: codeql/csharp-all extensible: neutralModel diff --git a/csharp/ql/test/library-tests/dataflow/external-models/Sinks.cs b/csharp/ql/test/library-tests/dataflow/external-models/Sinks.cs index 6adbd64e5ba..03bc703888a 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/Sinks.cs +++ b/csharp/ql/test/library-tests/dataflow/external-models/Sinks.cs @@ -12,6 +12,12 @@ namespace My.Qltest object fieldWrite = new object(); TaggedField = fieldWrite; + + object propertyWrite = new object(); + TaggedPropertySetter = propertyWrite; + + object indexerWrite = new object(); + this[0] = indexerWrite; } object SinkMethod() @@ -34,7 +40,21 @@ namespace My.Qltest [SinkAttribute] object TaggedField; + + [SinkPropertyAttribute] + object TaggedPropertySetter { get; set; } + + [SinkIndexerAttribute] + object this[int index] + { + get { return null; } + set { } + } } class SinkAttribute : System.Attribute { } -} \ No newline at end of file + + class SinkPropertyAttribute : System.Attribute { } + + class SinkIndexerAttribute : System.Attribute { } +} diff --git a/csharp/ql/test/library-tests/dataflow/external-models/Sources.cs b/csharp/ql/test/library-tests/dataflow/external-models/Sources.cs index 03d174ccb98..6f73f096ef9 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/Sources.cs +++ b/csharp/ql/test/library-tests/dataflow/external-models/Sources.cs @@ -18,14 +18,17 @@ namespace My.Qltest x = TaggedSrcField; x = SrcTwoArg("", ""); + + x = TaggedSrcPropertyGetter; + x = this[0]; } - [SourceAttribute()] + [SourceAttribute] void Tagged1(object taggedMethodParam) { } - void Tagged2([SourceAttribute()] object taggedSrcParam) + void Tagged2([SourceAttribute] object taggedSrcParam) { } @@ -49,14 +52,20 @@ namespace My.Qltest void SrcArg(object src) { } - [SourceAttribute()] + [SourceAttribute] object TaggedSrcMethod() { return null; } - [SourceAttribute()] + [SourceAttribute] object TaggedSrcField; object SrcTwoArg(string s1, string s2) { return null; } + + [SourceAttribute] + object TaggedSrcPropertyGetter { get; } + + [SourceAttribute] + object this[int i] => null; } class SourceAttribute : System.Attribute { } -} \ No newline at end of file +} diff --git a/csharp/ql/test/library-tests/dataflow/external-models/sinks.expected b/csharp/ql/test/library-tests/dataflow/external-models/sinks.expected index 3a4489dcb91..745efba8285 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/sinks.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/sinks.expected @@ -4,5 +4,7 @@ invalidModelRow | Sinks.cs:11:13:11:41 | this access | file-content-store | | Sinks.cs:11:30:11:40 | access to local variable argToTagged | file-content-store | | Sinks.cs:14:27:14:36 | access to local variable fieldWrite | sql-injection | -| Sinks.cs:20:20:20:22 | access to local variable res | js-injection | -| Sinks.cs:27:20:27:25 | access to local variable resTag | html-injection | +| Sinks.cs:17:36:17:48 | access to local variable propertyWrite | sql-injection | +| Sinks.cs:20:23:20:34 | access to local variable indexerWrite | sql-injection | +| Sinks.cs:26:20:26:22 | access to local variable res | js-injection | +| Sinks.cs:33:20:33:25 | access to local variable resTag | html-injection | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/sinks.ext.yml b/csharp/ql/test/library-tests/dataflow/external-models/sinks.ext.yml index c44c1b4fd36..942fe9bd734 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/sinks.ext.yml +++ b/csharp/ql/test/library-tests/dataflow/external-models/sinks.ext.yml @@ -9,3 +9,5 @@ extensions: - ["My.Qltest", "SinkAttribute", false, "", "", "Attribute", "ReturnValue", "html-injection", "manual"] - ["My.Qltest", "SinkAttribute", false, "", "", "Attribute", "Argument", "file-content-store", "manual"] - ["My.Qltest", "SinkAttribute", false, "", "", "Attribute", "", "sql-injection", "manual"] + - ["My.Qltest", "SinkPropertyAttribute", false, "", "", "Attribute.Setter", "Argument[0]", "sql-injection", "manual"] + - ["My.Qltest", "SinkIndexerAttribute", false, "", "", "Attribute.Setter", "Argument[1]", "sql-injection", "manual"] diff --git a/csharp/ql/test/library-tests/dataflow/external-models/srcs.expected b/csharp/ql/test/library-tests/dataflow/external-models/srcs.expected index 8222dd97742..855e51fca56 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/srcs.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/srcs.expected @@ -9,9 +9,11 @@ invalidModelRow | Sources.cs:17:17:17:33 | call to method TaggedSrcMethod | local | | Sources.cs:18:17:18:30 | access to field TaggedSrcField | local | | Sources.cs:20:17:20:33 | call to method SrcTwoArg | local | -| Sources.cs:24:14:24:20 | this | local | -| Sources.cs:24:29:24:45 | taggedMethodParam | local | -| Sources.cs:28:49:28:62 | taggedSrcParam | local | -| Sources.cs:40:45:40:45 | p | local | -| Sources.cs:47:50:47:50 | p | local | -| Sources.cs:53:16:53:30 | this | local | +| Sources.cs:22:17:22:39 | access to property TaggedSrcPropertyGetter | local | +| Sources.cs:23:17:23:23 | access to indexer | local | +| Sources.cs:27:14:27:20 | this | local | +| Sources.cs:27:29:27:45 | taggedMethodParam | local | +| Sources.cs:31:47:31:60 | taggedSrcParam | local | +| Sources.cs:43:45:43:45 | p | local | +| Sources.cs:50:50:50:50 | p | local | +| Sources.cs:56:16:56:30 | this | local | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/srcs.ext.yml b/csharp/ql/test/library-tests/dataflow/external-models/srcs.ext.yml index 163d2636ab0..ca5103b1cd5 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/srcs.ext.yml +++ b/csharp/ql/test/library-tests/dataflow/external-models/srcs.ext.yml @@ -17,4 +17,5 @@ extensions: - ["My.Qltest", "SourceAttribute", false, "", "", "Attribute", "ReturnValue", "local", "manual"] - ["My.Qltest", "SourceAttribute", false, "", "", "Attribute", "Parameter", "local", "manual"] - ["My.Qltest", "SourceAttribute", false, "", "", "Attribute", "", "local", "manual"] - - ["My.Qltest", "A", false, "SrcTwoArg", "(System.String,System.String)", "", "ReturnValue", "local", "manual"] \ No newline at end of file + - ["My.Qltest", "SourceAttribute", false, "", "", "Attribute.Getter", "ReturnValue", "local", "manual"] + - ["My.Qltest", "A", false, "SrcTwoArg", "(System.String,System.String)", "", "ReturnValue", "local", "manual"] diff --git a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 0e656151f08..a8b0a4d0cd5 100644 --- a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -10,7 +10,8 @@ | Capture.cs:51:9:51:15 | this access | Capture.cs:63:9:63:15 | this access | | Capture.cs:58:21:58:21 | 1 | Capture.cs:58:17:58:17 | access to local variable i | | Capture.cs:61:17:61:17 | 1 | Capture.cs:61:13:61:13 | access to local variable i | -| LocalDataFlow.cs:48:24:48:24 | b | LocalDataFlow.cs:84:21:84:21 | access to parameter b | +| LocalDataFlow.cs:48:24:48:24 | SSA param(b) | LocalDataFlow.cs:84:21:84:21 | access to parameter b | +| LocalDataFlow.cs:48:24:48:24 | b | LocalDataFlow.cs:48:24:48:24 | SSA param(b) | | LocalDataFlow.cs:51:13:51:17 | access to local variable sink0 | LocalDataFlow.cs:51:13:51:34 | SSA def(sink0) | | LocalDataFlow.cs:51:13:51:34 | SSA def(sink0) | LocalDataFlow.cs:52:15:52:19 | access to local variable sink0 | | LocalDataFlow.cs:51:21:51:34 | "taint source" | LocalDataFlow.cs:51:13:51:17 | access to local variable sink0 | @@ -64,16 +65,18 @@ | LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | | LocalDataFlow.cs:84:25:84:27 | [b (line 48): true] "a" | LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | | LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | +| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | +| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | +| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | +| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | +| LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | | LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | +| LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | | LocalDataFlow.cs:89:15:89:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:92:13:92:17 | access to local variable sink8 | LocalDataFlow.cs:92:13:92:33 | SSA def(sink8) | @@ -447,7 +450,7 @@ | LocalDataFlow.cs:281:13:281:34 | SSA def(sink70) | LocalDataFlow.cs:282:15:282:20 | access to local variable sink70 | | LocalDataFlow.cs:281:22:281:26 | access to local variable sink0 | LocalDataFlow.cs:281:22:281:34 | SSA def(sink0) | | LocalDataFlow.cs:281:22:281:34 | ... = ... | LocalDataFlow.cs:281:13:281:18 | access to local variable sink70 | -| LocalDataFlow.cs:281:22:281:34 | SSA def(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | +| LocalDataFlow.cs:281:22:281:34 | SSA def(sink0) | LocalDataFlow.cs:313:22:313:29 | [input] SSA phi read(sink0) | | LocalDataFlow.cs:281:22:281:34 | SSA def(sink0) | LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | | LocalDataFlow.cs:281:30:281:34 | access to local variable sink0 | LocalDataFlow.cs:281:22:281:26 | access to local variable sink0 | | LocalDataFlow.cs:281:30:281:34 | access to local variable sink0 | LocalDataFlow.cs:281:22:281:34 | ... = ... | @@ -477,12 +480,14 @@ | LocalDataFlow.cs:307:18:307:33 | String nonSink17 | LocalDataFlow.cs:307:18:307:33 | SSA def(nonSink17) | | LocalDataFlow.cs:313:13:313:18 | access to local variable sink73 | LocalDataFlow.cs:313:13:313:38 | SSA def(sink73) | | LocalDataFlow.cs:313:13:313:38 | SSA def(sink73) | LocalDataFlow.cs:315:15:315:20 | access to local variable sink73 | +| LocalDataFlow.cs:313:22:313:29 | [input] SSA phi read(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | | LocalDataFlow.cs:313:22:313:29 | access to local variable nonSink0 | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | | LocalDataFlow.cs:313:22:313:29 | access to local variable nonSink0 | LocalDataFlow.cs:314:31:314:38 | access to local variable nonSink0 | | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | LocalDataFlow.cs:313:13:313:18 | access to local variable sink73 | | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | +| LocalDataFlow.cs:313:34:313:38 | [input] SSA phi read(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | | LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | -| LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | +| LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:34:313:38 | [input] SSA phi read(sink0) | | LocalDataFlow.cs:314:13:314:18 | access to local variable sink74 | LocalDataFlow.cs:314:13:314:38 | SSA def(sink74) | | LocalDataFlow.cs:314:13:314:38 | SSA def(sink74) | LocalDataFlow.cs:316:15:316:20 | access to local variable sink74 | | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | @@ -490,37 +495,51 @@ | LocalDataFlow.cs:314:31:314:38 | access to local variable nonSink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | | LocalDataFlow.cs:334:28:334:30 | SSA entry def(this.anInt) | LocalDataFlow.cs:334:41:334:45 | access to field anInt | | LocalDataFlow.cs:334:28:334:30 | this | LocalDataFlow.cs:334:41:334:45 | this access | +| LocalDataFlow.cs:334:50:334:52 | SSA param(value) | LocalDataFlow.cs:334:64:334:68 | access to parameter value | | LocalDataFlow.cs:334:50:334:52 | this | LocalDataFlow.cs:334:56:334:60 | this access | -| LocalDataFlow.cs:334:50:334:52 | value | LocalDataFlow.cs:334:64:334:68 | access to parameter value | +| LocalDataFlow.cs:334:50:334:52 | value | LocalDataFlow.cs:334:50:334:52 | SSA param(value) | | LocalDataFlow.cs:334:64:334:68 | access to parameter value | LocalDataFlow.cs:334:56:334:60 | access to field anInt | -| LocalDataFlow.cs:340:41:340:47 | tainted | LocalDataFlow.cs:342:15:342:21 | access to parameter tainted | -| LocalDataFlow.cs:345:44:345:53 | nonTainted | LocalDataFlow.cs:347:15:347:24 | access to parameter nonTainted | -| LocalDataFlow.cs:350:44:350:44 | x | LocalDataFlow.cs:353:21:353:21 | access to parameter x | -| LocalDataFlow.cs:350:67:350:68 | os | LocalDataFlow.cs:356:33:356:34 | access to parameter os | +| LocalDataFlow.cs:340:41:340:47 | SSA param(tainted) | LocalDataFlow.cs:342:15:342:21 | access to parameter tainted | +| LocalDataFlow.cs:340:41:340:47 | tainted | LocalDataFlow.cs:340:41:340:47 | SSA param(tainted) | +| LocalDataFlow.cs:345:44:345:53 | SSA param(nonTainted) | LocalDataFlow.cs:347:15:347:24 | access to parameter nonTainted | +| LocalDataFlow.cs:345:44:345:53 | nonTainted | LocalDataFlow.cs:345:44:345:53 | SSA param(nonTainted) | +| LocalDataFlow.cs:350:44:350:44 | SSA param(x) | LocalDataFlow.cs:353:21:353:21 | access to parameter x | +| LocalDataFlow.cs:350:44:350:44 | x | LocalDataFlow.cs:350:44:350:44 | SSA param(x) | +| LocalDataFlow.cs:350:67:350:68 | SSA param(os) | LocalDataFlow.cs:356:33:356:34 | access to parameter os | +| LocalDataFlow.cs:350:67:350:68 | os | LocalDataFlow.cs:350:67:350:68 | SSA param(os) | | LocalDataFlow.cs:353:21:353:21 | access to parameter x | LocalDataFlow.cs:353:16:353:17 | access to local variable x1 | | LocalDataFlow.cs:353:21:353:21 | access to parameter x | LocalDataFlow.cs:353:16:353:21 | ... = ... | | LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:29 | access to local variable os2 | | LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:34 | ... = ... | -| LocalDataFlow.cs:361:41:361:44 | args | LocalDataFlow.cs:363:29:363:32 | access to parameter args | +| LocalDataFlow.cs:361:41:361:44 | SSA param(args) | LocalDataFlow.cs:363:29:363:32 | access to parameter args | +| LocalDataFlow.cs:361:41:361:44 | args | LocalDataFlow.cs:361:41:361:44 | SSA param(args) | | LocalDataFlow.cs:363:29:363:32 | [post] access to parameter args | LocalDataFlow.cs:364:27:364:30 | access to parameter args | | LocalDataFlow.cs:363:29:363:32 | access to parameter args | LocalDataFlow.cs:364:27:364:30 | access to parameter args | | LocalDataFlow.cs:363:29:363:32 | call to operator implicit conversion | LocalDataFlow.cs:363:22:363:25 | access to local variable span | | LocalDataFlow.cs:364:27:364:30 | call to operator implicit conversion | LocalDataFlow.cs:364:23:364:23 | access to local variable x | -| LocalDataFlow.cs:367:23:367:24 | b1 | LocalDataFlow.cs:371:13:371:14 | access to parameter b1 | -| LocalDataFlow.cs:367:32:367:33 | b2 | LocalDataFlow.cs:374:17:374:18 | access to parameter b2 | +| LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | LocalDataFlow.cs:371:13:371:14 | access to parameter b1 | +| LocalDataFlow.cs:367:23:367:24 | b1 | LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | +| LocalDataFlow.cs:367:32:367:33 | SSA param(b2) | LocalDataFlow.cs:374:17:374:18 | access to parameter b2 | +| LocalDataFlow.cs:367:32:367:33 | b2 | LocalDataFlow.cs:367:32:367:33 | SSA param(b2) | | LocalDataFlow.cs:369:17:369:18 | "" | LocalDataFlow.cs:369:13:369:13 | access to local variable x | | LocalDataFlow.cs:373:13:373:13 | access to local variable x | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | +| LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:376:35:376:35 | access to local variable x | -| LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | | LocalDataFlow.cs:373:17:373:25 | "tainted" | LocalDataFlow.cs:373:13:373:13 | access to local variable x | +| LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | | LocalDataFlow.cs:381:13:381:13 | access to local variable x | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | -| LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | +| LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:381:13:381:29 | [input] SSA phi(x) | +| LocalDataFlow.cs:381:13:381:29 | [input] SSA phi(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | | LocalDataFlow.cs:381:17:381:29 | "not tainted" | LocalDataFlow.cs:381:13:381:13 | access to local variable x | | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | SSA.cs:5:17:5:17 | SSA entry def(this.S) | SSA.cs:67:9:67:14 | access to field S | +| SSA.cs:5:17:5:17 | [input] SSA def(this.S) | SSA.cs:136:23:136:28 | SSA def(this.S) | +| SSA.cs:5:17:5:17 | [input] SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:5:17:5:17 | this | SSA.cs:67:9:67:12 | this access | -| SSA.cs:5:26:5:32 | tainted | SSA.cs:8:24:8:30 | access to parameter tainted | -| SSA.cs:5:42:5:51 | nonTainted | SSA.cs:12:24:12:33 | access to parameter nonTainted | +| SSA.cs:5:26:5:32 | SSA param(tainted) | SSA.cs:8:24:8:30 | access to parameter tainted | +| SSA.cs:5:26:5:32 | tainted | SSA.cs:5:26:5:32 | SSA param(tainted) | +| SSA.cs:5:42:5:51 | SSA param(nonTainted) | SSA.cs:12:24:12:33 | access to parameter nonTainted | +| SSA.cs:5:42:5:51 | nonTainted | SSA.cs:5:42:5:51 | SSA param(nonTainted) | | SSA.cs:8:13:8:20 | access to local variable ssaSink0 | SSA.cs:8:13:8:30 | SSA def(ssaSink0) | | SSA.cs:8:13:8:30 | SSA def(ssaSink0) | SSA.cs:9:15:9:22 | access to local variable ssaSink0 | | SSA.cs:8:24:8:30 | access to parameter tainted | SSA.cs:8:13:8:20 | access to local variable ssaSink0 | @@ -533,78 +552,110 @@ | SSA.cs:12:24:12:33 | access to parameter nonTainted | SSA.cs:23:13:23:22 | access to parameter nonTainted | | SSA.cs:13:15:13:22 | [post] access to local variable nonSink0 | SSA.cs:19:13:19:20 | access to local variable nonSink0 | | SSA.cs:13:15:13:22 | access to local variable nonSink0 | SSA.cs:19:13:19:20 | access to local variable nonSink0 | +| SSA.cs:16:13:16:20 | [post] access to local variable ssaSink0 | SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:16:13:16:20 | [post] access to local variable ssaSink0 | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | -| SSA.cs:16:13:16:20 | [post] access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:16:13:16:20 | access to local variable ssaSink0 | SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:16:13:16:20 | access to local variable ssaSink0 | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | -| SSA.cs:16:13:16:20 | access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:19:13:19:20 | [post] access to local variable nonSink0 | SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | | SSA.cs:19:13:19:20 | [post] access to local variable nonSink0 | SSA.cs:30:24:30:31 | access to local variable nonSink0 | -| SSA.cs:19:13:19:20 | [post] access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | | SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:30:24:30:31 | access to local variable nonSink0 | -| SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | SSA.cs:22:16:22:28 | SSA def(ssaSink1) | -| SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | +| SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:23:13:23:33 | [input] SSA phi(ssaSink1) | | SSA.cs:22:27:22:28 | "" | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | | SSA.cs:23:13:23:22 | [post] access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:22 | access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | +| SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:23:13:23:33 | [input] SSA phi(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | SSA.cs:24:13:24:31 | SSA def(ssaSink1) | -| SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | +| SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:24:13:24:31 | [input] SSA phi(ssaSink1) | +| SSA.cs:24:13:24:31 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:24:13:24:31 | [input] SSA phi(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | -| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:31 | [input] SSA phi read(ssaSink0) | +| SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | -| SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:28:16:28:23 | access to local variable nonSink1 | SSA.cs:28:16:28:28 | SSA def(nonSink1) | -| SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | +| SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:29:13:29:33 | [input] SSA phi(nonSink1) | | SSA.cs:28:27:28:28 | "" | SSA.cs:28:16:28:23 | access to local variable nonSink1 | | SSA.cs:29:13:29:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:22 | access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | +| SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:29:13:29:33 | [input] SSA phi(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | | SSA.cs:30:13:30:20 | access to local variable nonSink1 | SSA.cs:30:13:30:31 | SSA def(nonSink1) | -| SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | +| SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:30:13:30:31 | [input] SSA phi(nonSink1) | +| SSA.cs:30:13:30:31 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:30:13:30:31 | [input] SSA phi(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | | SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:20 | access to local variable nonSink1 | -| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:31 | [input] SSA phi read(nonSink0) | +| SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:49:24:49:31 | access to local variable nonSink0 | -| SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | SSA.cs:34:16:34:28 | SSA def(ssaSink2) | -| SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | +| SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:35:13:35:33 | [input] SSA phi(ssaSink2) | | SSA.cs:34:27:34:28 | "" | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | +| SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | -| SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | -| SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:35:13:35:33 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:39:21:39:28 | access to local variable ssaSink2 | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:41:21:41:28 | access to local variable ssaSink2 | | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | -| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | -| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | -| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | -| SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | +| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | +| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | +| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | +| SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | +| SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | +| SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | +| SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | +| SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | +| SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | -| SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:46:16:46:23 | access to local variable nonSink2 | SSA.cs:46:16:46:28 | SSA def(nonSink2) | -| SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:47:13:47:33 | [input] SSA phi(nonSink2) | | SSA.cs:46:27:46:28 | "" | SSA.cs:46:16:46:23 | access to local variable nonSink2 | +| SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | | SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:50:17:50:26 | access to parameter nonTainted | -| SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | | SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:50:17:50:26 | access to parameter nonTainted | -| SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | +| SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:47:13:47:33 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | | SSA.cs:49:13:49:20 | access to local variable nonSink2 | SSA.cs:49:13:49:31 | SSA def(nonSink2) | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:51:21:51:28 | access to local variable nonSink2 | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:53:21:53:28 | access to local variable nonSink2 | | SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:49:13:49:20 | access to local variable nonSink2 | -| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | -| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | +| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | +| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | +| SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | +| SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | +| SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | +| SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | +| SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | SSA.cs:55:15:55:22 | access to local variable nonSink2 | @@ -613,28 +664,28 @@ | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:67:32:67:38 | access to parameter tainted | | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | SSA.cs:60:15:60:22 | access to local variable ssaSink3 | -| SSA.cs:59:23:59:30 | [post] access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | -| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | +| SSA.cs:59:23:59:30 | [post] access to local variable ssaSink3 | SSA.cs:89:13:89:33 | [input] SSA def(ssaSink3) | | SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | +| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:89:13:89:33 | [input] SSA def(ssaSink3) | | SSA.cs:63:23:63:30 | SSA def(nonSink0) | SSA.cs:64:15:64:22 | access to local variable nonSink0 | -| SSA.cs:63:23:63:30 | [post] access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | -| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | +| SSA.cs:63:23:63:30 | [post] access to local variable nonSink0 | SSA.cs:89:13:89:33 | [input] SSA def(nonSink0) | | SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | +| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:89:13:89:33 | [input] SSA def(nonSink0) | | SSA.cs:67:9:67:12 | [post] this access | SSA.cs:68:23:68:26 | this access | | SSA.cs:67:9:67:12 | this access | SSA.cs:68:23:68:26 | this access | | SSA.cs:67:9:67:14 | [post] access to field S | SSA.cs:68:23:68:28 | access to field S | | SSA.cs:67:9:67:14 | access to field S | SSA.cs:68:23:68:28 | access to field S | | SSA.cs:67:9:67:28 | access to field SsaFieldSink0 | SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | -| SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | +| SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | SSA.cs:89:13:89:33 | [input] SSA qualifier def(this.S.SsaFieldSink0) | | SSA.cs:67:32:67:38 | access to parameter tainted | SSA.cs:67:9:67:28 | access to field SsaFieldSink0 | | SSA.cs:67:32:67:38 | access to parameter tainted | SSA.cs:77:20:77:26 | access to parameter tainted | | SSA.cs:68:23:68:26 | [post] this access | SSA.cs:69:15:69:18 | this access | | SSA.cs:68:23:68:26 | this access | SSA.cs:69:15:69:18 | this access | | SSA.cs:68:23:68:28 | SSA def(this.S) | SSA.cs:69:15:69:20 | access to field S | | SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | SSA.cs:69:15:69:34 | access to field SsaFieldSink0 | -| SSA.cs:68:23:68:28 | [post] access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | -| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | [post] access to field S | SSA.cs:89:13:89:33 | [input] SSA def(this.S) | | SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | access to field S | SSA.cs:89:13:89:33 | [input] SSA def(this.S) | | SSA.cs:69:15:69:18 | [post] this access | SSA.cs:72:9:72:12 | this access | | SSA.cs:69:15:69:18 | this access | SSA.cs:72:9:72:12 | this access | | SSA.cs:69:15:69:20 | [post] access to field S | SSA.cs:72:9:72:14 | access to field S | @@ -644,15 +695,15 @@ | SSA.cs:72:9:72:14 | [post] access to field S | SSA.cs:73:23:73:28 | access to field S | | SSA.cs:72:9:72:14 | access to field S | SSA.cs:73:23:73:28 | access to field S | | SSA.cs:72:9:72:31 | access to field SsaFieldNonSink0 | SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:89:13:89:33 | [input] SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:72:35:72:36 | "" | SSA.cs:72:9:72:31 | access to field SsaFieldNonSink0 | | SSA.cs:73:23:73:26 | [post] this access | SSA.cs:74:15:74:18 | this access | | SSA.cs:73:23:73:26 | this access | SSA.cs:74:15:74:18 | this access | | SSA.cs:73:23:73:28 | SSA def(this.S) | SSA.cs:74:15:74:20 | access to field S | | SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:74:15:74:37 | access to field SsaFieldNonSink0 | -| SSA.cs:73:23:73:28 | [post] access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | -| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | [post] access to field S | SSA.cs:89:13:89:33 | [input] SSA def(this.S) | | SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | access to field S | SSA.cs:89:13:89:33 | [input] SSA def(this.S) | | SSA.cs:74:15:74:18 | [post] this access | SSA.cs:80:9:80:12 | this access | | SSA.cs:74:15:74:18 | this access | SSA.cs:80:9:80:12 | this access | | SSA.cs:74:15:74:20 | [post] access to field S | SSA.cs:80:9:80:14 | access to field S | @@ -663,10 +714,10 @@ | SSA.cs:77:20:77:26 | access to parameter tainted | SSA.cs:80:35:80:41 | access to parameter tainted | | SSA.cs:78:21:78:28 | SSA def(nonSink0) | SSA.cs:79:15:79:22 | access to local variable nonSink0 | | SSA.cs:78:21:78:28 | access to local variable nonSink0 | SSA.cs:78:21:78:28 | SSA def(nonSink0) | +| SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | | SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:104:24:104:31 | access to local variable nonSink0 | -| SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | +| SSA.cs:79:15:79:22 | access to local variable nonSink0 | SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | | SSA.cs:79:15:79:22 | access to local variable nonSink0 | SSA.cs:104:24:104:31 | access to local variable nonSink0 | -| SSA.cs:79:15:79:22 | access to local variable nonSink0 | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | | SSA.cs:80:9:80:12 | [post] this access | SSA.cs:81:21:81:24 | this access | | SSA.cs:80:9:80:12 | this access | SSA.cs:81:21:81:24 | this access | | SSA.cs:80:9:80:14 | [post] access to field S | SSA.cs:81:21:81:26 | access to field S | @@ -695,70 +746,105 @@ | SSA.cs:85:15:85:20 | [post] access to field S | SSA.cs:114:9:114:14 | access to field S | | SSA.cs:85:15:85:20 | access to field S | SSA.cs:114:9:114:14 | access to field S | | SSA.cs:88:16:88:23 | access to local variable ssaSink4 | SSA.cs:88:16:88:28 | SSA def(ssaSink4) | -| SSA.cs:88:16:88:28 | SSA def(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:88:16:88:28 | SSA def(ssaSink4) | SSA.cs:89:13:89:33 | [input] SSA phi(ssaSink4) | | SSA.cs:88:27:88:28 | "" | SSA.cs:88:16:88:23 | access to local variable ssaSink4 | +| SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | | SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:92:17:92:26 | access to parameter nonTainted | -| SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | | SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:92:17:92:26 | access to parameter nonTainted | -| SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:89:13:89:33 | [input] SSA def(nonSink0) | SSA.cs:63:23:63:30 | SSA def(nonSink0) | +| SSA.cs:89:13:89:33 | [input] SSA def(ssaSink3) | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | +| SSA.cs:89:13:89:33 | [input] SSA def(this.S) | SSA.cs:68:23:68:28 | SSA def(this.S) | +| SSA.cs:89:13:89:33 | [input] SSA def(this.S) | SSA.cs:73:23:73:28 | SSA def(this.S) | +| SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | +| SSA.cs:89:13:89:33 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:89:13:89:33 | [input] SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:89:13:89:33 | [input] SSA qualifier def(this.S.SsaFieldSink0) | SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | | SSA.cs:91:13:91:20 | access to local variable ssaSink4 | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:93:21:93:28 | access to local variable ssaSink4 | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:95:21:95:28 | access to local variable ssaSink4 | | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:91:13:91:20 | access to local variable ssaSink4 | -| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | -| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | +| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | +| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | +| SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | +| SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | +| SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | +| SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | +| SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | -| SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | -| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | +| SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:102:13:102:33 | [input] SSA def(ssaSink4) | | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | +| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:102:13:102:33 | [input] SSA def(ssaSink4) | | SSA.cs:101:16:101:23 | access to local variable nonSink3 | SSA.cs:101:16:101:28 | SSA def(nonSink3) | -| SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:102:13:102:33 | [input] SSA phi(nonSink3) | | SSA.cs:101:27:101:28 | "" | SSA.cs:101:16:101:23 | access to local variable nonSink3 | +| SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | | SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:105:17:105:26 | access to parameter nonTainted | -| SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | | SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:105:17:105:26 | access to parameter nonTainted | -| SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:102:13:102:33 | [input] SSA def(ssaSink4) | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | +| SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | +| SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:102:13:102:33 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | | SSA.cs:104:13:104:20 | access to local variable nonSink3 | SSA.cs:104:13:104:31 | SSA def(nonSink3) | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:106:21:106:28 | access to local variable nonSink3 | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:108:21:108:28 | access to local variable nonSink3 | | SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:104:13:104:20 | access to local variable nonSink3 | -| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | -| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | +| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | +| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | +| SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | +| SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | +| SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | +| SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | +| SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:110:23:110:30 | SSA def(nonSink3) | SSA.cs:111:15:111:22 | access to local variable nonSink3 | -| SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | -| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | +| SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:115:13:115:33 | [input] SSA def(nonSink3) | | SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | +| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:115:13:115:33 | [input] SSA def(nonSink3) | | SSA.cs:114:9:114:12 | [post] this access | SSA.cs:117:13:117:16 | this access | | SSA.cs:114:9:114:12 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:114:9:114:12 | this access | SSA.cs:117:13:117:16 | this access | | SSA.cs:114:9:114:12 | this access | SSA.cs:123:23:123:26 | this access | +| SSA.cs:114:9:114:14 | [post] access to field S | SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | | SSA.cs:114:9:114:14 | [post] access to field S | SSA.cs:117:13:117:18 | access to field S | -| SSA.cs:114:9:114:14 | [post] access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | +| SSA.cs:114:9:114:14 | access to field S | SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | | SSA.cs:114:9:114:14 | access to field S | SSA.cs:117:13:117:18 | access to field S | -| SSA.cs:114:9:114:14 | access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | -| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:115:13:115:33 | [input] SSA phi(this.S.SsaFieldSink1) | | SSA.cs:114:32:114:33 | "" | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | +| SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | -| SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | -| SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:115:13:115:33 | [input] SSA def(nonSink3) | SSA.cs:110:23:110:30 | SSA def(nonSink3) | +| SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | +| SSA.cs:115:13:115:33 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | | SSA.cs:117:13:117:16 | [post] this access | SSA.cs:119:21:119:24 | this access | | SSA.cs:117:13:117:16 | [post] this access | SSA.cs:121:21:121:24 | this access | | SSA.cs:117:13:117:16 | this access | SSA.cs:119:21:119:24 | this access | @@ -771,30 +857,38 @@ | SSA.cs:117:13:117:43 | SSA def(this.S.SsaFieldSink1) | SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | | SSA.cs:117:13:117:43 | SSA def(this.S.SsaFieldSink1) | SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | SSA.cs:117:13:117:32 | access to field SsaFieldSink1 | -| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | -| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | +| SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | +| SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | | SSA.cs:119:21:119:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:119:21:119:24 | this access | SSA.cs:123:23:123:26 | this access | -| SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:119:21:119:26 | access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | +| SSA.cs:119:21:119:26 | access to field S | SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | +| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | +| SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | | SSA.cs:121:21:121:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:121:21:121:24 | this access | SSA.cs:123:23:123:26 | this access | -| SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:121:21:121:26 | access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | +| SSA.cs:121:21:121:26 | access to field S | SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | +| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:123:9:123:30 | SSA phi read(this.S) | SSA.cs:123:23:123:28 | access to field S | -| SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | SSA.cs:128:13:128:33 | [input] SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:123:23:123:26 | [post] this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:26 | this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:28 | SSA def(this.S) | SSA.cs:124:15:124:20 | access to field S | | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | SSA.cs:124:15:124:34 | access to field SsaFieldSink1 | -| SSA.cs:123:23:123:28 | [post] access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | -| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | [post] access to field S | SSA.cs:128:13:128:33 | [input] SSA def(this.S) | | SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | access to field S | SSA.cs:128:13:128:33 | [input] SSA def(this.S) | | SSA.cs:124:15:124:18 | [post] this access | SSA.cs:127:9:127:12 | this access | | SSA.cs:124:15:124:18 | this access | SSA.cs:127:9:127:12 | this access | | SSA.cs:124:15:124:20 | [post] access to field S | SSA.cs:127:9:127:14 | access to field S | @@ -803,15 +897,19 @@ | SSA.cs:127:9:127:12 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:127:9:127:12 | this access | SSA.cs:130:13:130:16 | this access | | SSA.cs:127:9:127:12 | this access | SSA.cs:136:23:136:26 | this access | +| SSA.cs:127:9:127:14 | [post] access to field S | SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | | SSA.cs:127:9:127:14 | [post] access to field S | SSA.cs:130:13:130:18 | access to field S | -| SSA.cs:127:9:127:14 | [post] access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | +| SSA.cs:127:9:127:14 | access to field S | SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | | SSA.cs:127:9:127:14 | access to field S | SSA.cs:130:13:130:18 | access to field S | -| SSA.cs:127:9:127:14 | access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:128:13:128:33 | [input] SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:127:35:127:36 | "" | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | | SSA.cs:128:13:128:22 | [post] access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | | SSA.cs:128:13:128:22 | access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | +| SSA.cs:128:13:128:33 | [input] SSA def(this.S) | SSA.cs:123:23:123:28 | SSA def(this.S) | +| SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | +| SSA.cs:128:13:128:33 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:128:13:128:33 | [input] SSA qualifier def(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:130:13:130:16 | [post] this access | SSA.cs:132:21:132:24 | this access | | SSA.cs:130:13:130:16 | [post] this access | SSA.cs:134:21:134:24 | this access | | SSA.cs:130:13:130:16 | this access | SSA.cs:132:21:132:24 | this access | @@ -824,66 +922,86 @@ | SSA.cs:130:13:130:46 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | | SSA.cs:130:13:130:46 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | | SSA.cs:130:39:130:46 | access to local variable nonSink0 | SSA.cs:130:13:130:35 | access to field SsaFieldNonSink0 | +| SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | +| SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:132:21:132:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:132:21:132:24 | this access | SSA.cs:136:23:136:26 | this access | -| SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:132:21:132:26 | access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | +| SSA.cs:132:21:132:26 | access to field S | SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | +| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | +| SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:134:21:134:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:134:21:134:24 | this access | SSA.cs:136:23:136:26 | this access | -| SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:134:21:134:26 | access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | +| SSA.cs:134:21:134:26 | access to field S | SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | +| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:136:9:136:30 | SSA phi read(this.S) | SSA.cs:136:23:136:28 | access to field S | -| SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:5:17:5:17 | [input] SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:136:23:136:26 | [post] this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:26 | this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:28 | SSA def(this.S) | SSA.cs:137:15:137:20 | access to field S | | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:137:15:137:37 | access to field SsaFieldNonSink0 | -| SSA.cs:136:23:136:28 | [post] access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | +| SSA.cs:136:23:136:28 | [post] access to field S | SSA.cs:5:17:5:17 | [input] SSA def(this.S) | +| SSA.cs:136:23:136:28 | access to field S | SSA.cs:5:17:5:17 | [input] SSA def(this.S) | | SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | -| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | -| SSA.cs:144:34:144:34 | t | SSA.cs:146:13:146:13 | access to parameter t | +| SSA.cs:144:34:144:34 | SSA param(t) | SSA.cs:146:13:146:13 | access to parameter t | +| SSA.cs:144:34:144:34 | t | SSA.cs:144:34:144:34 | SSA param(t) | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:146:13:146:13 | (...) ... | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:149:17:149:17 | access to parameter t | | SSA.cs:147:13:147:13 | access to parameter t | SSA.cs:147:13:147:26 | SSA def(t) | -| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:147:13:147:26 | [input] SSA phi(t) | +| SSA.cs:147:13:147:26 | [input] SSA phi(t) | SSA.cs:144:17:144:26 | SSA phi(t) | | SSA.cs:147:17:147:26 | default(...) | SSA.cs:147:13:147:13 | access to parameter t | | SSA.cs:149:13:149:13 | access to parameter t | SSA.cs:149:13:149:17 | SSA def(t) | -| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:149:13:149:17 | [input] SSA phi(t) | +| SSA.cs:149:13:149:17 | [input] SSA phi(t) | SSA.cs:144:17:144:26 | SSA phi(t) | | SSA.cs:149:17:149:17 | access to parameter t | SSA.cs:149:13:149:13 | access to parameter t | -| SSA.cs:152:36:152:36 | t | SSA.cs:154:13:154:13 | access to parameter t | -| SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:152:17:152:28 | SSA phi(t) | +| SSA.cs:152:36:152:36 | SSA param(t) | SSA.cs:154:13:154:13 | access to parameter t | +| SSA.cs:152:36:152:36 | t | SSA.cs:152:36:152:36 | SSA param(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:13 | (...) ... | +| SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:21 | [input] SSA phi(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:155:25:155:25 | access to parameter t | -| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:152:17:152:28 | SSA phi(t) | +| SSA.cs:154:13:154:21 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | +| SSA.cs:155:13:155:26 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | +| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:155:13:155:26 | [input] SSA phi(t) | | SSA.cs:155:25:155:25 | access to parameter t | SSA.cs:155:25:155:25 | SSA def(t) | | SSA.cs:166:10:166:13 | this | SSA.cs:166:19:166:22 | this access | | SSA.cs:166:28:166:31 | null | SSA.cs:166:19:166:24 | access to field S | -| SSA.cs:168:22:168:28 | tainted | SSA.cs:173:24:173:30 | access to parameter tainted | -| SSA.cs:168:35:168:35 | i | SSA.cs:171:13:171:13 | access to parameter i | +| SSA.cs:168:22:168:28 | SSA param(tainted) | SSA.cs:173:24:173:30 | access to parameter tainted | +| SSA.cs:168:22:168:28 | tainted | SSA.cs:168:22:168:28 | SSA param(tainted) | +| SSA.cs:168:35:168:35 | SSA param(i) | SSA.cs:171:13:171:13 | access to parameter i | +| SSA.cs:168:35:168:35 | i | SSA.cs:168:35:168:35 | SSA param(i) | | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | SSA.cs:170:16:170:28 | SSA def(ssaSink5) | -| SSA.cs:170:16:170:28 | SSA def(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | +| SSA.cs:170:16:170:28 | SSA def(ssaSink5) | SSA.cs:171:13:171:19 | [input] SSA phi(ssaSink5) | | SSA.cs:170:27:170:28 | "" | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | | SSA.cs:171:13:171:13 | access to parameter i | SSA.cs:171:13:171:15 | SSA def(i) | -| SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:20:174:20 | SSA phi(i) | +| SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:13:178:13 | [input] SSA phi(i) | +| SSA.cs:171:13:171:19 | [input] SSA phi(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | SSA.cs:173:13:173:30 | SSA def(ssaSink5) | -| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:13:178:13 | [input] SSA phi read(ssaSink5) | | SSA.cs:173:24:173:30 | access to parameter tainted | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | +| SSA.cs:174:13:178:13 | [input] SSA phi read(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:174:13:178:13 | [input] SSA phi(i) | SSA.cs:174:20:174:20 | SSA phi(i) | +| SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | -| SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | | SSA.cs:174:20:174:20 | SSA phi(i) | SSA.cs:174:20:174:20 | access to parameter i | | SSA.cs:174:20:174:20 | access to parameter i | SSA.cs:174:20:174:22 | SSA def(i) | -| SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:174:20:174:20 | SSA phi(i) | +| SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:177:17:177:29 | [input] SSA phi(i) | +| SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | | SSA.cs:176:21:176:28 | [post] access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | -| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | -| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:177:17:177:29 | [input] SSA phi(i) | SSA.cs:174:20:174:20 | SSA phi(i) | +| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | +| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:6:13:6:13 | access to parameter b | -| Splitting.cs:3:28:3:34 | tainted | Splitting.cs:5:17:5:23 | access to parameter tainted | +| Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | +| Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | +| Splitting.cs:3:28:3:34 | SSA param(tainted) | Splitting.cs:5:17:5:23 | access to parameter tainted | +| Splitting.cs:3:28:3:34 | tainted | Splitting.cs:3:28:3:34 | SSA param(tainted) | | Splitting.cs:5:13:5:13 | access to local variable x | Splitting.cs:5:13:5:23 | SSA def(x) | | Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:8:19:8:19 | [b (line 3): true] access to local variable x | | Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:12:15:12:15 | [b (line 3): false] access to local variable x | @@ -895,7 +1013,8 @@ | Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | Splitting.cs:12:15:12:15 | [b (line 3): true] access to local variable x | | Splitting.cs:12:15:12:15 | [b (line 3): true] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | | Splitting.cs:12:15:12:15 | [post] [b (line 3): true] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | -| Splitting.cs:17:18:17:18 | b | Splitting.cs:20:13:20:13 | access to parameter b | +| Splitting.cs:17:18:17:18 | SSA param(b) | Splitting.cs:20:13:20:13 | access to parameter b | +| Splitting.cs:17:18:17:18 | b | Splitting.cs:17:18:17:18 | SSA param(b) | | Splitting.cs:19:13:19:13 | access to local variable x | Splitting.cs:19:13:19:18 | SSA def(x) | | Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:22:19:22:19 | [b (line 17): true] access to local variable x | | Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:25:15:25:15 | [b (line 17): false] access to local variable x | @@ -909,7 +1028,8 @@ | Splitting.cs:25:15:25:15 | [b (line 17): true] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | | Splitting.cs:25:15:25:15 | [post] [b (line 17): false] access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | | Splitting.cs:25:15:25:15 | [post] [b (line 17): true] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | -| Splitting.cs:32:18:32:18 | b | Splitting.cs:35:13:35:13 | access to parameter b | +| Splitting.cs:32:18:32:18 | SSA param(b) | Splitting.cs:35:13:35:13 | access to parameter b | +| Splitting.cs:32:18:32:18 | b | Splitting.cs:32:18:32:18 | SSA param(b) | | Splitting.cs:34:17:34:18 | "" | Splitting.cs:34:13:34:13 | access to local variable x | | Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | [b (line 32): false] access to parameter b | | Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | [b (line 32): true] access to parameter b | @@ -936,7 +1056,8 @@ | Splitting.cs:41:19:41:21 | [b (line 32): false] "d" | Splitting.cs:41:15:41:21 | [b (line 32): false] ... = ... | | Splitting.cs:41:19:41:21 | [b (line 32): true] "d" | Splitting.cs:41:15:41:15 | access to local variable x | | Splitting.cs:41:19:41:21 | [b (line 32): true] "d" | Splitting.cs:41:15:41:21 | [b (line 32): true] ... = ... | -| Splitting.cs:46:18:46:18 | b | Splitting.cs:49:13:49:13 | access to parameter b | +| Splitting.cs:46:18:46:18 | SSA param(b) | Splitting.cs:49:13:49:13 | access to parameter b | +| Splitting.cs:46:18:46:18 | b | Splitting.cs:46:18:46:18 | SSA param(b) | | Splitting.cs:48:13:48:13 | access to local variable x | Splitting.cs:48:13:48:18 | SSA def(x) | | Splitting.cs:48:13:48:18 | SSA def(x) | Splitting.cs:53:13:53:13 | [b (line 46): false] access to local variable x | | Splitting.cs:48:17:48:18 | "" | Splitting.cs:48:13:48:13 | access to local variable x | @@ -994,6 +1115,7 @@ | UseUseExplosion.cs:21:10:21:10 | SSA entry def(this.Prop) | UseUseExplosion.cs:24:13:24:16 | access to property Prop | | UseUseExplosion.cs:21:10:21:10 | this | UseUseExplosion.cs:24:13:24:16 | this access | | UseUseExplosion.cs:23:13:23:13 | access to local variable x | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | +| UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | @@ -1094,907 +1216,1109 @@ | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | -| UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:23:17:23:17 | 0 | UseUseExplosion.cs:23:13:23:13 | access to local variable x | | UseUseExplosion.cs:24:13:24:16 | [post] this access | UseUseExplosion.cs:24:31:24:34 | this access | | UseUseExplosion.cs:24:13:24:16 | [post] this access | UseUseExplosion.cs:24:3193:24:3198 | this access | | UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:31:24:34 | access to property Prop | -| UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:13:24:16 | this access | UseUseExplosion.cs:24:31:24:34 | this access | | UseUseExplosion.cs:24:13:24:16 | this access | UseUseExplosion.cs:24:3193:24:3198 | this access | | UseUseExplosion.cs:24:31:24:34 | [post] this access | UseUseExplosion.cs:24:48:24:51 | this access | | UseUseExplosion.cs:24:31:24:34 | [post] this access | UseUseExplosion.cs:24:3178:24:3183 | this access | | UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:48:24:51 | access to property Prop | -| UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:31:24:34 | this access | UseUseExplosion.cs:24:48:24:51 | this access | | UseUseExplosion.cs:24:31:24:34 | this access | UseUseExplosion.cs:24:3178:24:3183 | this access | | UseUseExplosion.cs:24:48:24:51 | [post] this access | UseUseExplosion.cs:24:65:24:68 | this access | | UseUseExplosion.cs:24:48:24:51 | [post] this access | UseUseExplosion.cs:24:3163:24:3168 | this access | | UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:65:24:68 | access to property Prop | -| UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:48:24:51 | this access | UseUseExplosion.cs:24:65:24:68 | this access | | UseUseExplosion.cs:24:48:24:51 | this access | UseUseExplosion.cs:24:3163:24:3168 | this access | | UseUseExplosion.cs:24:65:24:68 | [post] this access | UseUseExplosion.cs:24:82:24:85 | this access | | UseUseExplosion.cs:24:65:24:68 | [post] this access | UseUseExplosion.cs:24:3148:24:3153 | this access | | UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:82:24:85 | access to property Prop | -| UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:65:24:68 | this access | UseUseExplosion.cs:24:82:24:85 | this access | | UseUseExplosion.cs:24:65:24:68 | this access | UseUseExplosion.cs:24:3148:24:3153 | this access | | UseUseExplosion.cs:24:82:24:85 | [post] this access | UseUseExplosion.cs:24:99:24:102 | this access | | UseUseExplosion.cs:24:82:24:85 | [post] this access | UseUseExplosion.cs:24:3133:24:3138 | this access | | UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:99:24:102 | access to property Prop | -| UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:82:24:85 | this access | UseUseExplosion.cs:24:99:24:102 | this access | | UseUseExplosion.cs:24:82:24:85 | this access | UseUseExplosion.cs:24:3133:24:3138 | this access | | UseUseExplosion.cs:24:99:24:102 | [post] this access | UseUseExplosion.cs:24:116:24:119 | this access | | UseUseExplosion.cs:24:99:24:102 | [post] this access | UseUseExplosion.cs:24:3118:24:3123 | this access | | UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:116:24:119 | access to property Prop | -| UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:99:24:102 | this access | UseUseExplosion.cs:24:116:24:119 | this access | | UseUseExplosion.cs:24:99:24:102 | this access | UseUseExplosion.cs:24:3118:24:3123 | this access | | UseUseExplosion.cs:24:116:24:119 | [post] this access | UseUseExplosion.cs:24:133:24:136 | this access | | UseUseExplosion.cs:24:116:24:119 | [post] this access | UseUseExplosion.cs:24:3103:24:3108 | this access | | UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:133:24:136 | access to property Prop | -| UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:116:24:119 | this access | UseUseExplosion.cs:24:133:24:136 | this access | | UseUseExplosion.cs:24:116:24:119 | this access | UseUseExplosion.cs:24:3103:24:3108 | this access | | UseUseExplosion.cs:24:133:24:136 | [post] this access | UseUseExplosion.cs:24:150:24:153 | this access | | UseUseExplosion.cs:24:133:24:136 | [post] this access | UseUseExplosion.cs:24:3088:24:3093 | this access | | UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:150:24:153 | access to property Prop | -| UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:133:24:136 | this access | UseUseExplosion.cs:24:150:24:153 | this access | | UseUseExplosion.cs:24:133:24:136 | this access | UseUseExplosion.cs:24:3088:24:3093 | this access | | UseUseExplosion.cs:24:150:24:153 | [post] this access | UseUseExplosion.cs:24:167:24:170 | this access | | UseUseExplosion.cs:24:150:24:153 | [post] this access | UseUseExplosion.cs:24:3073:24:3078 | this access | | UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:167:24:170 | access to property Prop | -| UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:150:24:153 | this access | UseUseExplosion.cs:24:167:24:170 | this access | | UseUseExplosion.cs:24:150:24:153 | this access | UseUseExplosion.cs:24:3073:24:3078 | this access | | UseUseExplosion.cs:24:167:24:170 | [post] this access | UseUseExplosion.cs:24:184:24:187 | this access | | UseUseExplosion.cs:24:167:24:170 | [post] this access | UseUseExplosion.cs:24:3058:24:3063 | this access | | UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:184:24:187 | access to property Prop | -| UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:167:24:170 | this access | UseUseExplosion.cs:24:184:24:187 | this access | | UseUseExplosion.cs:24:167:24:170 | this access | UseUseExplosion.cs:24:3058:24:3063 | this access | | UseUseExplosion.cs:24:184:24:187 | [post] this access | UseUseExplosion.cs:24:201:24:204 | this access | | UseUseExplosion.cs:24:184:24:187 | [post] this access | UseUseExplosion.cs:24:3043:24:3048 | this access | | UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:201:24:204 | access to property Prop | -| UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:184:24:187 | this access | UseUseExplosion.cs:24:201:24:204 | this access | | UseUseExplosion.cs:24:184:24:187 | this access | UseUseExplosion.cs:24:3043:24:3048 | this access | | UseUseExplosion.cs:24:201:24:204 | [post] this access | UseUseExplosion.cs:24:218:24:221 | this access | | UseUseExplosion.cs:24:201:24:204 | [post] this access | UseUseExplosion.cs:24:3028:24:3033 | this access | | UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:218:24:221 | access to property Prop | -| UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:201:24:204 | this access | UseUseExplosion.cs:24:218:24:221 | this access | | UseUseExplosion.cs:24:201:24:204 | this access | UseUseExplosion.cs:24:3028:24:3033 | this access | | UseUseExplosion.cs:24:218:24:221 | [post] this access | UseUseExplosion.cs:24:235:24:238 | this access | | UseUseExplosion.cs:24:218:24:221 | [post] this access | UseUseExplosion.cs:24:3013:24:3018 | this access | | UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:235:24:238 | access to property Prop | -| UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:218:24:221 | this access | UseUseExplosion.cs:24:235:24:238 | this access | | UseUseExplosion.cs:24:218:24:221 | this access | UseUseExplosion.cs:24:3013:24:3018 | this access | | UseUseExplosion.cs:24:235:24:238 | [post] this access | UseUseExplosion.cs:24:252:24:255 | this access | | UseUseExplosion.cs:24:235:24:238 | [post] this access | UseUseExplosion.cs:24:2998:24:3003 | this access | | UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:252:24:255 | access to property Prop | -| UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:235:24:238 | this access | UseUseExplosion.cs:24:252:24:255 | this access | | UseUseExplosion.cs:24:235:24:238 | this access | UseUseExplosion.cs:24:2998:24:3003 | this access | | UseUseExplosion.cs:24:252:24:255 | [post] this access | UseUseExplosion.cs:24:269:24:272 | this access | | UseUseExplosion.cs:24:252:24:255 | [post] this access | UseUseExplosion.cs:24:2983:24:2988 | this access | | UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:269:24:272 | access to property Prop | -| UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:252:24:255 | this access | UseUseExplosion.cs:24:269:24:272 | this access | | UseUseExplosion.cs:24:252:24:255 | this access | UseUseExplosion.cs:24:2983:24:2988 | this access | | UseUseExplosion.cs:24:269:24:272 | [post] this access | UseUseExplosion.cs:24:286:24:289 | this access | | UseUseExplosion.cs:24:269:24:272 | [post] this access | UseUseExplosion.cs:24:2968:24:2973 | this access | | UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:286:24:289 | access to property Prop | -| UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:269:24:272 | this access | UseUseExplosion.cs:24:286:24:289 | this access | | UseUseExplosion.cs:24:269:24:272 | this access | UseUseExplosion.cs:24:2968:24:2973 | this access | | UseUseExplosion.cs:24:286:24:289 | [post] this access | UseUseExplosion.cs:24:303:24:306 | this access | | UseUseExplosion.cs:24:286:24:289 | [post] this access | UseUseExplosion.cs:24:2953:24:2958 | this access | | UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:303:24:306 | access to property Prop | -| UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:286:24:289 | this access | UseUseExplosion.cs:24:303:24:306 | this access | | UseUseExplosion.cs:24:286:24:289 | this access | UseUseExplosion.cs:24:2953:24:2958 | this access | | UseUseExplosion.cs:24:303:24:306 | [post] this access | UseUseExplosion.cs:24:320:24:323 | this access | | UseUseExplosion.cs:24:303:24:306 | [post] this access | UseUseExplosion.cs:24:2938:24:2943 | this access | | UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:320:24:323 | access to property Prop | -| UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:303:24:306 | this access | UseUseExplosion.cs:24:320:24:323 | this access | | UseUseExplosion.cs:24:303:24:306 | this access | UseUseExplosion.cs:24:2938:24:2943 | this access | | UseUseExplosion.cs:24:320:24:323 | [post] this access | UseUseExplosion.cs:24:337:24:340 | this access | | UseUseExplosion.cs:24:320:24:323 | [post] this access | UseUseExplosion.cs:24:2923:24:2928 | this access | | UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:337:24:340 | access to property Prop | -| UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:320:24:323 | this access | UseUseExplosion.cs:24:337:24:340 | this access | | UseUseExplosion.cs:24:320:24:323 | this access | UseUseExplosion.cs:24:2923:24:2928 | this access | | UseUseExplosion.cs:24:337:24:340 | [post] this access | UseUseExplosion.cs:24:354:24:357 | this access | | UseUseExplosion.cs:24:337:24:340 | [post] this access | UseUseExplosion.cs:24:2908:24:2913 | this access | | UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:354:24:357 | access to property Prop | -| UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:337:24:340 | this access | UseUseExplosion.cs:24:354:24:357 | this access | | UseUseExplosion.cs:24:337:24:340 | this access | UseUseExplosion.cs:24:2908:24:2913 | this access | | UseUseExplosion.cs:24:354:24:357 | [post] this access | UseUseExplosion.cs:24:371:24:374 | this access | | UseUseExplosion.cs:24:354:24:357 | [post] this access | UseUseExplosion.cs:24:2893:24:2898 | this access | | UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:371:24:374 | access to property Prop | -| UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:354:24:357 | this access | UseUseExplosion.cs:24:371:24:374 | this access | | UseUseExplosion.cs:24:354:24:357 | this access | UseUseExplosion.cs:24:2893:24:2898 | this access | | UseUseExplosion.cs:24:371:24:374 | [post] this access | UseUseExplosion.cs:24:388:24:391 | this access | | UseUseExplosion.cs:24:371:24:374 | [post] this access | UseUseExplosion.cs:24:2878:24:2883 | this access | | UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:388:24:391 | access to property Prop | -| UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:371:24:374 | this access | UseUseExplosion.cs:24:388:24:391 | this access | | UseUseExplosion.cs:24:371:24:374 | this access | UseUseExplosion.cs:24:2878:24:2883 | this access | | UseUseExplosion.cs:24:388:24:391 | [post] this access | UseUseExplosion.cs:24:405:24:408 | this access | | UseUseExplosion.cs:24:388:24:391 | [post] this access | UseUseExplosion.cs:24:2863:24:2868 | this access | | UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:405:24:408 | access to property Prop | -| UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:388:24:391 | this access | UseUseExplosion.cs:24:405:24:408 | this access | | UseUseExplosion.cs:24:388:24:391 | this access | UseUseExplosion.cs:24:2863:24:2868 | this access | | UseUseExplosion.cs:24:405:24:408 | [post] this access | UseUseExplosion.cs:24:422:24:425 | this access | | UseUseExplosion.cs:24:405:24:408 | [post] this access | UseUseExplosion.cs:24:2848:24:2853 | this access | | UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:422:24:425 | access to property Prop | -| UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:405:24:408 | this access | UseUseExplosion.cs:24:422:24:425 | this access | | UseUseExplosion.cs:24:405:24:408 | this access | UseUseExplosion.cs:24:2848:24:2853 | this access | | UseUseExplosion.cs:24:422:24:425 | [post] this access | UseUseExplosion.cs:24:439:24:442 | this access | | UseUseExplosion.cs:24:422:24:425 | [post] this access | UseUseExplosion.cs:24:2833:24:2838 | this access | | UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:439:24:442 | access to property Prop | -| UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:422:24:425 | this access | UseUseExplosion.cs:24:439:24:442 | this access | | UseUseExplosion.cs:24:422:24:425 | this access | UseUseExplosion.cs:24:2833:24:2838 | this access | | UseUseExplosion.cs:24:439:24:442 | [post] this access | UseUseExplosion.cs:24:456:24:459 | this access | | UseUseExplosion.cs:24:439:24:442 | [post] this access | UseUseExplosion.cs:24:2818:24:2823 | this access | | UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:456:24:459 | access to property Prop | -| UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:439:24:442 | this access | UseUseExplosion.cs:24:456:24:459 | this access | | UseUseExplosion.cs:24:439:24:442 | this access | UseUseExplosion.cs:24:2818:24:2823 | this access | | UseUseExplosion.cs:24:456:24:459 | [post] this access | UseUseExplosion.cs:24:473:24:476 | this access | | UseUseExplosion.cs:24:456:24:459 | [post] this access | UseUseExplosion.cs:24:2803:24:2808 | this access | | UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:473:24:476 | access to property Prop | -| UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:456:24:459 | this access | UseUseExplosion.cs:24:473:24:476 | this access | | UseUseExplosion.cs:24:456:24:459 | this access | UseUseExplosion.cs:24:2803:24:2808 | this access | | UseUseExplosion.cs:24:473:24:476 | [post] this access | UseUseExplosion.cs:24:490:24:493 | this access | | UseUseExplosion.cs:24:473:24:476 | [post] this access | UseUseExplosion.cs:24:2788:24:2793 | this access | | UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:490:24:493 | access to property Prop | -| UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:473:24:476 | this access | UseUseExplosion.cs:24:490:24:493 | this access | | UseUseExplosion.cs:24:473:24:476 | this access | UseUseExplosion.cs:24:2788:24:2793 | this access | | UseUseExplosion.cs:24:490:24:493 | [post] this access | UseUseExplosion.cs:24:507:24:510 | this access | | UseUseExplosion.cs:24:490:24:493 | [post] this access | UseUseExplosion.cs:24:2773:24:2778 | this access | | UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:507:24:510 | access to property Prop | -| UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:490:24:493 | this access | UseUseExplosion.cs:24:507:24:510 | this access | | UseUseExplosion.cs:24:490:24:493 | this access | UseUseExplosion.cs:24:2773:24:2778 | this access | | UseUseExplosion.cs:24:507:24:510 | [post] this access | UseUseExplosion.cs:24:524:24:527 | this access | | UseUseExplosion.cs:24:507:24:510 | [post] this access | UseUseExplosion.cs:24:2758:24:2763 | this access | | UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:524:24:527 | access to property Prop | -| UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:507:24:510 | this access | UseUseExplosion.cs:24:524:24:527 | this access | | UseUseExplosion.cs:24:507:24:510 | this access | UseUseExplosion.cs:24:2758:24:2763 | this access | | UseUseExplosion.cs:24:524:24:527 | [post] this access | UseUseExplosion.cs:24:541:24:544 | this access | | UseUseExplosion.cs:24:524:24:527 | [post] this access | UseUseExplosion.cs:24:2743:24:2748 | this access | | UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:541:24:544 | access to property Prop | -| UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:524:24:527 | this access | UseUseExplosion.cs:24:541:24:544 | this access | | UseUseExplosion.cs:24:524:24:527 | this access | UseUseExplosion.cs:24:2743:24:2748 | this access | | UseUseExplosion.cs:24:541:24:544 | [post] this access | UseUseExplosion.cs:24:558:24:561 | this access | | UseUseExplosion.cs:24:541:24:544 | [post] this access | UseUseExplosion.cs:24:2728:24:2733 | this access | | UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:558:24:561 | access to property Prop | -| UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:541:24:544 | this access | UseUseExplosion.cs:24:558:24:561 | this access | | UseUseExplosion.cs:24:541:24:544 | this access | UseUseExplosion.cs:24:2728:24:2733 | this access | | UseUseExplosion.cs:24:558:24:561 | [post] this access | UseUseExplosion.cs:24:575:24:578 | this access | | UseUseExplosion.cs:24:558:24:561 | [post] this access | UseUseExplosion.cs:24:2713:24:2718 | this access | | UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:575:24:578 | access to property Prop | -| UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:558:24:561 | this access | UseUseExplosion.cs:24:575:24:578 | this access | | UseUseExplosion.cs:24:558:24:561 | this access | UseUseExplosion.cs:24:2713:24:2718 | this access | | UseUseExplosion.cs:24:575:24:578 | [post] this access | UseUseExplosion.cs:24:592:24:595 | this access | | UseUseExplosion.cs:24:575:24:578 | [post] this access | UseUseExplosion.cs:24:2698:24:2703 | this access | | UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:592:24:595 | access to property Prop | -| UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:575:24:578 | this access | UseUseExplosion.cs:24:592:24:595 | this access | | UseUseExplosion.cs:24:575:24:578 | this access | UseUseExplosion.cs:24:2698:24:2703 | this access | | UseUseExplosion.cs:24:592:24:595 | [post] this access | UseUseExplosion.cs:24:609:24:612 | this access | | UseUseExplosion.cs:24:592:24:595 | [post] this access | UseUseExplosion.cs:24:2683:24:2688 | this access | | UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:609:24:612 | access to property Prop | -| UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:592:24:595 | this access | UseUseExplosion.cs:24:609:24:612 | this access | | UseUseExplosion.cs:24:592:24:595 | this access | UseUseExplosion.cs:24:2683:24:2688 | this access | | UseUseExplosion.cs:24:609:24:612 | [post] this access | UseUseExplosion.cs:24:626:24:629 | this access | | UseUseExplosion.cs:24:609:24:612 | [post] this access | UseUseExplosion.cs:24:2668:24:2673 | this access | | UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:626:24:629 | access to property Prop | -| UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:609:24:612 | this access | UseUseExplosion.cs:24:626:24:629 | this access | | UseUseExplosion.cs:24:609:24:612 | this access | UseUseExplosion.cs:24:2668:24:2673 | this access | | UseUseExplosion.cs:24:626:24:629 | [post] this access | UseUseExplosion.cs:24:643:24:646 | this access | | UseUseExplosion.cs:24:626:24:629 | [post] this access | UseUseExplosion.cs:24:2653:24:2658 | this access | | UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:643:24:646 | access to property Prop | -| UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:626:24:629 | this access | UseUseExplosion.cs:24:643:24:646 | this access | | UseUseExplosion.cs:24:626:24:629 | this access | UseUseExplosion.cs:24:2653:24:2658 | this access | | UseUseExplosion.cs:24:643:24:646 | [post] this access | UseUseExplosion.cs:24:660:24:663 | this access | | UseUseExplosion.cs:24:643:24:646 | [post] this access | UseUseExplosion.cs:24:2638:24:2643 | this access | | UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:660:24:663 | access to property Prop | -| UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:643:24:646 | this access | UseUseExplosion.cs:24:660:24:663 | this access | | UseUseExplosion.cs:24:643:24:646 | this access | UseUseExplosion.cs:24:2638:24:2643 | this access | | UseUseExplosion.cs:24:660:24:663 | [post] this access | UseUseExplosion.cs:24:677:24:680 | this access | | UseUseExplosion.cs:24:660:24:663 | [post] this access | UseUseExplosion.cs:24:2623:24:2628 | this access | | UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:677:24:680 | access to property Prop | -| UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:660:24:663 | this access | UseUseExplosion.cs:24:677:24:680 | this access | | UseUseExplosion.cs:24:660:24:663 | this access | UseUseExplosion.cs:24:2623:24:2628 | this access | | UseUseExplosion.cs:24:677:24:680 | [post] this access | UseUseExplosion.cs:24:694:24:697 | this access | | UseUseExplosion.cs:24:677:24:680 | [post] this access | UseUseExplosion.cs:24:2608:24:2613 | this access | | UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:694:24:697 | access to property Prop | -| UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:677:24:680 | this access | UseUseExplosion.cs:24:694:24:697 | this access | | UseUseExplosion.cs:24:677:24:680 | this access | UseUseExplosion.cs:24:2608:24:2613 | this access | | UseUseExplosion.cs:24:694:24:697 | [post] this access | UseUseExplosion.cs:24:711:24:714 | this access | | UseUseExplosion.cs:24:694:24:697 | [post] this access | UseUseExplosion.cs:24:2593:24:2598 | this access | | UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:711:24:714 | access to property Prop | -| UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:694:24:697 | this access | UseUseExplosion.cs:24:711:24:714 | this access | | UseUseExplosion.cs:24:694:24:697 | this access | UseUseExplosion.cs:24:2593:24:2598 | this access | | UseUseExplosion.cs:24:711:24:714 | [post] this access | UseUseExplosion.cs:24:728:24:731 | this access | | UseUseExplosion.cs:24:711:24:714 | [post] this access | UseUseExplosion.cs:24:2578:24:2583 | this access | | UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:728:24:731 | access to property Prop | -| UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:711:24:714 | this access | UseUseExplosion.cs:24:728:24:731 | this access | | UseUseExplosion.cs:24:711:24:714 | this access | UseUseExplosion.cs:24:2578:24:2583 | this access | | UseUseExplosion.cs:24:728:24:731 | [post] this access | UseUseExplosion.cs:24:745:24:748 | this access | | UseUseExplosion.cs:24:728:24:731 | [post] this access | UseUseExplosion.cs:24:2563:24:2568 | this access | | UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:745:24:748 | access to property Prop | -| UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:728:24:731 | this access | UseUseExplosion.cs:24:745:24:748 | this access | | UseUseExplosion.cs:24:728:24:731 | this access | UseUseExplosion.cs:24:2563:24:2568 | this access | | UseUseExplosion.cs:24:745:24:748 | [post] this access | UseUseExplosion.cs:24:762:24:765 | this access | | UseUseExplosion.cs:24:745:24:748 | [post] this access | UseUseExplosion.cs:24:2548:24:2553 | this access | | UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:762:24:765 | access to property Prop | -| UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:745:24:748 | this access | UseUseExplosion.cs:24:762:24:765 | this access | | UseUseExplosion.cs:24:745:24:748 | this access | UseUseExplosion.cs:24:2548:24:2553 | this access | | UseUseExplosion.cs:24:762:24:765 | [post] this access | UseUseExplosion.cs:24:779:24:782 | this access | | UseUseExplosion.cs:24:762:24:765 | [post] this access | UseUseExplosion.cs:24:2533:24:2538 | this access | | UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:779:24:782 | access to property Prop | -| UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:762:24:765 | this access | UseUseExplosion.cs:24:779:24:782 | this access | | UseUseExplosion.cs:24:762:24:765 | this access | UseUseExplosion.cs:24:2533:24:2538 | this access | | UseUseExplosion.cs:24:779:24:782 | [post] this access | UseUseExplosion.cs:24:796:24:799 | this access | | UseUseExplosion.cs:24:779:24:782 | [post] this access | UseUseExplosion.cs:24:2518:24:2523 | this access | | UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:796:24:799 | access to property Prop | -| UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:779:24:782 | this access | UseUseExplosion.cs:24:796:24:799 | this access | | UseUseExplosion.cs:24:779:24:782 | this access | UseUseExplosion.cs:24:2518:24:2523 | this access | | UseUseExplosion.cs:24:796:24:799 | [post] this access | UseUseExplosion.cs:24:813:24:816 | this access | | UseUseExplosion.cs:24:796:24:799 | [post] this access | UseUseExplosion.cs:24:2503:24:2508 | this access | | UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:813:24:816 | access to property Prop | -| UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:796:24:799 | this access | UseUseExplosion.cs:24:813:24:816 | this access | | UseUseExplosion.cs:24:796:24:799 | this access | UseUseExplosion.cs:24:2503:24:2508 | this access | | UseUseExplosion.cs:24:813:24:816 | [post] this access | UseUseExplosion.cs:24:830:24:833 | this access | | UseUseExplosion.cs:24:813:24:816 | [post] this access | UseUseExplosion.cs:24:2488:24:2493 | this access | | UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:830:24:833 | access to property Prop | -| UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:813:24:816 | this access | UseUseExplosion.cs:24:830:24:833 | this access | | UseUseExplosion.cs:24:813:24:816 | this access | UseUseExplosion.cs:24:2488:24:2493 | this access | | UseUseExplosion.cs:24:830:24:833 | [post] this access | UseUseExplosion.cs:24:847:24:850 | this access | | UseUseExplosion.cs:24:830:24:833 | [post] this access | UseUseExplosion.cs:24:2473:24:2478 | this access | | UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:847:24:850 | access to property Prop | -| UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:830:24:833 | this access | UseUseExplosion.cs:24:847:24:850 | this access | | UseUseExplosion.cs:24:830:24:833 | this access | UseUseExplosion.cs:24:2473:24:2478 | this access | | UseUseExplosion.cs:24:847:24:850 | [post] this access | UseUseExplosion.cs:24:864:24:867 | this access | | UseUseExplosion.cs:24:847:24:850 | [post] this access | UseUseExplosion.cs:24:2458:24:2463 | this access | | UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:864:24:867 | access to property Prop | -| UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:847:24:850 | this access | UseUseExplosion.cs:24:864:24:867 | this access | | UseUseExplosion.cs:24:847:24:850 | this access | UseUseExplosion.cs:24:2458:24:2463 | this access | | UseUseExplosion.cs:24:864:24:867 | [post] this access | UseUseExplosion.cs:24:881:24:884 | this access | | UseUseExplosion.cs:24:864:24:867 | [post] this access | UseUseExplosion.cs:24:2443:24:2448 | this access | | UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:881:24:884 | access to property Prop | -| UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:864:24:867 | this access | UseUseExplosion.cs:24:881:24:884 | this access | | UseUseExplosion.cs:24:864:24:867 | this access | UseUseExplosion.cs:24:2443:24:2448 | this access | | UseUseExplosion.cs:24:881:24:884 | [post] this access | UseUseExplosion.cs:24:898:24:901 | this access | | UseUseExplosion.cs:24:881:24:884 | [post] this access | UseUseExplosion.cs:24:2428:24:2433 | this access | | UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:898:24:901 | access to property Prop | -| UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:881:24:884 | this access | UseUseExplosion.cs:24:898:24:901 | this access | | UseUseExplosion.cs:24:881:24:884 | this access | UseUseExplosion.cs:24:2428:24:2433 | this access | | UseUseExplosion.cs:24:898:24:901 | [post] this access | UseUseExplosion.cs:24:915:24:918 | this access | | UseUseExplosion.cs:24:898:24:901 | [post] this access | UseUseExplosion.cs:24:2413:24:2418 | this access | | UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:915:24:918 | access to property Prop | -| UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:898:24:901 | this access | UseUseExplosion.cs:24:915:24:918 | this access | | UseUseExplosion.cs:24:898:24:901 | this access | UseUseExplosion.cs:24:2413:24:2418 | this access | | UseUseExplosion.cs:24:915:24:918 | [post] this access | UseUseExplosion.cs:24:932:24:935 | this access | | UseUseExplosion.cs:24:915:24:918 | [post] this access | UseUseExplosion.cs:24:2398:24:2403 | this access | | UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:932:24:935 | access to property Prop | -| UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:915:24:918 | this access | UseUseExplosion.cs:24:932:24:935 | this access | | UseUseExplosion.cs:24:915:24:918 | this access | UseUseExplosion.cs:24:2398:24:2403 | this access | | UseUseExplosion.cs:24:932:24:935 | [post] this access | UseUseExplosion.cs:24:949:24:952 | this access | | UseUseExplosion.cs:24:932:24:935 | [post] this access | UseUseExplosion.cs:24:2383:24:2388 | this access | | UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:949:24:952 | access to property Prop | -| UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:932:24:935 | this access | UseUseExplosion.cs:24:949:24:952 | this access | | UseUseExplosion.cs:24:932:24:935 | this access | UseUseExplosion.cs:24:2383:24:2388 | this access | | UseUseExplosion.cs:24:949:24:952 | [post] this access | UseUseExplosion.cs:24:966:24:969 | this access | | UseUseExplosion.cs:24:949:24:952 | [post] this access | UseUseExplosion.cs:24:2368:24:2373 | this access | | UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:966:24:969 | access to property Prop | -| UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:949:24:952 | this access | UseUseExplosion.cs:24:966:24:969 | this access | | UseUseExplosion.cs:24:949:24:952 | this access | UseUseExplosion.cs:24:2368:24:2373 | this access | | UseUseExplosion.cs:24:966:24:969 | [post] this access | UseUseExplosion.cs:24:983:24:986 | this access | | UseUseExplosion.cs:24:966:24:969 | [post] this access | UseUseExplosion.cs:24:2353:24:2358 | this access | | UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:983:24:986 | access to property Prop | -| UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:966:24:969 | this access | UseUseExplosion.cs:24:983:24:986 | this access | | UseUseExplosion.cs:24:966:24:969 | this access | UseUseExplosion.cs:24:2353:24:2358 | this access | | UseUseExplosion.cs:24:983:24:986 | [post] this access | UseUseExplosion.cs:24:1000:24:1003 | this access | | UseUseExplosion.cs:24:983:24:986 | [post] this access | UseUseExplosion.cs:24:2338:24:2343 | this access | | UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | -| UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:983:24:986 | this access | UseUseExplosion.cs:24:1000:24:1003 | this access | | UseUseExplosion.cs:24:983:24:986 | this access | UseUseExplosion.cs:24:2338:24:2343 | this access | | UseUseExplosion.cs:24:1000:24:1003 | [post] this access | UseUseExplosion.cs:24:1017:24:1020 | this access | | UseUseExplosion.cs:24:1000:24:1003 | [post] this access | UseUseExplosion.cs:24:2323:24:2328 | this access | | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | -| UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1000:24:1003 | this access | UseUseExplosion.cs:24:1017:24:1020 | this access | | UseUseExplosion.cs:24:1000:24:1003 | this access | UseUseExplosion.cs:24:2323:24:2328 | this access | | UseUseExplosion.cs:24:1017:24:1020 | [post] this access | UseUseExplosion.cs:24:1034:24:1037 | this access | | UseUseExplosion.cs:24:1017:24:1020 | [post] this access | UseUseExplosion.cs:24:2308:24:2313 | this access | | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | -| UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1017:24:1020 | this access | UseUseExplosion.cs:24:1034:24:1037 | this access | | UseUseExplosion.cs:24:1017:24:1020 | this access | UseUseExplosion.cs:24:2308:24:2313 | this access | | UseUseExplosion.cs:24:1034:24:1037 | [post] this access | UseUseExplosion.cs:24:1051:24:1054 | this access | | UseUseExplosion.cs:24:1034:24:1037 | [post] this access | UseUseExplosion.cs:24:2293:24:2298 | this access | | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | -| UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1034:24:1037 | this access | UseUseExplosion.cs:24:1051:24:1054 | this access | | UseUseExplosion.cs:24:1034:24:1037 | this access | UseUseExplosion.cs:24:2293:24:2298 | this access | | UseUseExplosion.cs:24:1051:24:1054 | [post] this access | UseUseExplosion.cs:24:1068:24:1071 | this access | | UseUseExplosion.cs:24:1051:24:1054 | [post] this access | UseUseExplosion.cs:24:2278:24:2283 | this access | | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | -| UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1051:24:1054 | this access | UseUseExplosion.cs:24:1068:24:1071 | this access | | UseUseExplosion.cs:24:1051:24:1054 | this access | UseUseExplosion.cs:24:2278:24:2283 | this access | | UseUseExplosion.cs:24:1068:24:1071 | [post] this access | UseUseExplosion.cs:24:1085:24:1088 | this access | | UseUseExplosion.cs:24:1068:24:1071 | [post] this access | UseUseExplosion.cs:24:2263:24:2268 | this access | | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | -| UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1068:24:1071 | this access | UseUseExplosion.cs:24:1085:24:1088 | this access | | UseUseExplosion.cs:24:1068:24:1071 | this access | UseUseExplosion.cs:24:2263:24:2268 | this access | | UseUseExplosion.cs:24:1085:24:1088 | [post] this access | UseUseExplosion.cs:24:1102:24:1105 | this access | | UseUseExplosion.cs:24:1085:24:1088 | [post] this access | UseUseExplosion.cs:24:2248:24:2253 | this access | | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | -| UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1085:24:1088 | this access | UseUseExplosion.cs:24:1102:24:1105 | this access | | UseUseExplosion.cs:24:1085:24:1088 | this access | UseUseExplosion.cs:24:2248:24:2253 | this access | | UseUseExplosion.cs:24:1102:24:1105 | [post] this access | UseUseExplosion.cs:24:1119:24:1122 | this access | | UseUseExplosion.cs:24:1102:24:1105 | [post] this access | UseUseExplosion.cs:24:2233:24:2238 | this access | | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | -| UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1102:24:1105 | this access | UseUseExplosion.cs:24:1119:24:1122 | this access | | UseUseExplosion.cs:24:1102:24:1105 | this access | UseUseExplosion.cs:24:2233:24:2238 | this access | | UseUseExplosion.cs:24:1119:24:1122 | [post] this access | UseUseExplosion.cs:24:1136:24:1139 | this access | | UseUseExplosion.cs:24:1119:24:1122 | [post] this access | UseUseExplosion.cs:24:2218:24:2223 | this access | | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | -| UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1119:24:1122 | this access | UseUseExplosion.cs:24:1136:24:1139 | this access | | UseUseExplosion.cs:24:1119:24:1122 | this access | UseUseExplosion.cs:24:2218:24:2223 | this access | | UseUseExplosion.cs:24:1136:24:1139 | [post] this access | UseUseExplosion.cs:24:1153:24:1156 | this access | | UseUseExplosion.cs:24:1136:24:1139 | [post] this access | UseUseExplosion.cs:24:2203:24:2208 | this access | | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | -| UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1136:24:1139 | this access | UseUseExplosion.cs:24:1153:24:1156 | this access | | UseUseExplosion.cs:24:1136:24:1139 | this access | UseUseExplosion.cs:24:2203:24:2208 | this access | | UseUseExplosion.cs:24:1153:24:1156 | [post] this access | UseUseExplosion.cs:24:1170:24:1173 | this access | | UseUseExplosion.cs:24:1153:24:1156 | [post] this access | UseUseExplosion.cs:24:2188:24:2193 | this access | | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | -| UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1153:24:1156 | this access | UseUseExplosion.cs:24:1170:24:1173 | this access | | UseUseExplosion.cs:24:1153:24:1156 | this access | UseUseExplosion.cs:24:2188:24:2193 | this access | | UseUseExplosion.cs:24:1170:24:1173 | [post] this access | UseUseExplosion.cs:24:1187:24:1190 | this access | | UseUseExplosion.cs:24:1170:24:1173 | [post] this access | UseUseExplosion.cs:24:2173:24:2178 | this access | | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | -| UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1170:24:1173 | this access | UseUseExplosion.cs:24:1187:24:1190 | this access | | UseUseExplosion.cs:24:1170:24:1173 | this access | UseUseExplosion.cs:24:2173:24:2178 | this access | | UseUseExplosion.cs:24:1187:24:1190 | [post] this access | UseUseExplosion.cs:24:1204:24:1207 | this access | | UseUseExplosion.cs:24:1187:24:1190 | [post] this access | UseUseExplosion.cs:24:2158:24:2163 | this access | | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | -| UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1187:24:1190 | this access | UseUseExplosion.cs:24:1204:24:1207 | this access | | UseUseExplosion.cs:24:1187:24:1190 | this access | UseUseExplosion.cs:24:2158:24:2163 | this access | | UseUseExplosion.cs:24:1204:24:1207 | [post] this access | UseUseExplosion.cs:24:1221:24:1224 | this access | | UseUseExplosion.cs:24:1204:24:1207 | [post] this access | UseUseExplosion.cs:24:2143:24:2148 | this access | | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | -| UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1204:24:1207 | this access | UseUseExplosion.cs:24:1221:24:1224 | this access | | UseUseExplosion.cs:24:1204:24:1207 | this access | UseUseExplosion.cs:24:2143:24:2148 | this access | | UseUseExplosion.cs:24:1221:24:1224 | [post] this access | UseUseExplosion.cs:24:1238:24:1241 | this access | | UseUseExplosion.cs:24:1221:24:1224 | [post] this access | UseUseExplosion.cs:24:2128:24:2133 | this access | | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | -| UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1221:24:1224 | this access | UseUseExplosion.cs:24:1238:24:1241 | this access | | UseUseExplosion.cs:24:1221:24:1224 | this access | UseUseExplosion.cs:24:2128:24:2133 | this access | | UseUseExplosion.cs:24:1238:24:1241 | [post] this access | UseUseExplosion.cs:24:1255:24:1258 | this access | | UseUseExplosion.cs:24:1238:24:1241 | [post] this access | UseUseExplosion.cs:24:2113:24:2118 | this access | | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | -| UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1238:24:1241 | this access | UseUseExplosion.cs:24:1255:24:1258 | this access | | UseUseExplosion.cs:24:1238:24:1241 | this access | UseUseExplosion.cs:24:2113:24:2118 | this access | | UseUseExplosion.cs:24:1255:24:1258 | [post] this access | UseUseExplosion.cs:24:1272:24:1275 | this access | | UseUseExplosion.cs:24:1255:24:1258 | [post] this access | UseUseExplosion.cs:24:2098:24:2103 | this access | | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | -| UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1255:24:1258 | this access | UseUseExplosion.cs:24:1272:24:1275 | this access | | UseUseExplosion.cs:24:1255:24:1258 | this access | UseUseExplosion.cs:24:2098:24:2103 | this access | | UseUseExplosion.cs:24:1272:24:1275 | [post] this access | UseUseExplosion.cs:24:1289:24:1292 | this access | | UseUseExplosion.cs:24:1272:24:1275 | [post] this access | UseUseExplosion.cs:24:2083:24:2088 | this access | | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | -| UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1272:24:1275 | this access | UseUseExplosion.cs:24:1289:24:1292 | this access | | UseUseExplosion.cs:24:1272:24:1275 | this access | UseUseExplosion.cs:24:2083:24:2088 | this access | | UseUseExplosion.cs:24:1289:24:1292 | [post] this access | UseUseExplosion.cs:24:1306:24:1309 | this access | | UseUseExplosion.cs:24:1289:24:1292 | [post] this access | UseUseExplosion.cs:24:2068:24:2073 | this access | | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | -| UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1289:24:1292 | this access | UseUseExplosion.cs:24:1306:24:1309 | this access | | UseUseExplosion.cs:24:1289:24:1292 | this access | UseUseExplosion.cs:24:2068:24:2073 | this access | | UseUseExplosion.cs:24:1306:24:1309 | [post] this access | UseUseExplosion.cs:24:1323:24:1326 | this access | | UseUseExplosion.cs:24:1306:24:1309 | [post] this access | UseUseExplosion.cs:24:2053:24:2058 | this access | | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | -| UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1306:24:1309 | this access | UseUseExplosion.cs:24:1323:24:1326 | this access | | UseUseExplosion.cs:24:1306:24:1309 | this access | UseUseExplosion.cs:24:2053:24:2058 | this access | | UseUseExplosion.cs:24:1323:24:1326 | [post] this access | UseUseExplosion.cs:24:1340:24:1343 | this access | | UseUseExplosion.cs:24:1323:24:1326 | [post] this access | UseUseExplosion.cs:24:2038:24:2043 | this access | | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | -| UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1323:24:1326 | this access | UseUseExplosion.cs:24:1340:24:1343 | this access | | UseUseExplosion.cs:24:1323:24:1326 | this access | UseUseExplosion.cs:24:2038:24:2043 | this access | | UseUseExplosion.cs:24:1340:24:1343 | [post] this access | UseUseExplosion.cs:24:1357:24:1360 | this access | | UseUseExplosion.cs:24:1340:24:1343 | [post] this access | UseUseExplosion.cs:24:2023:24:2028 | this access | | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | -| UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1340:24:1343 | this access | UseUseExplosion.cs:24:1357:24:1360 | this access | | UseUseExplosion.cs:24:1340:24:1343 | this access | UseUseExplosion.cs:24:2023:24:2028 | this access | | UseUseExplosion.cs:24:1357:24:1360 | [post] this access | UseUseExplosion.cs:24:1374:24:1377 | this access | | UseUseExplosion.cs:24:1357:24:1360 | [post] this access | UseUseExplosion.cs:24:2008:24:2013 | this access | | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | -| UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1357:24:1360 | this access | UseUseExplosion.cs:24:1374:24:1377 | this access | | UseUseExplosion.cs:24:1357:24:1360 | this access | UseUseExplosion.cs:24:2008:24:2013 | this access | | UseUseExplosion.cs:24:1374:24:1377 | [post] this access | UseUseExplosion.cs:24:1391:24:1394 | this access | | UseUseExplosion.cs:24:1374:24:1377 | [post] this access | UseUseExplosion.cs:24:1993:24:1998 | this access | | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | -| UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1374:24:1377 | this access | UseUseExplosion.cs:24:1391:24:1394 | this access | | UseUseExplosion.cs:24:1374:24:1377 | this access | UseUseExplosion.cs:24:1993:24:1998 | this access | | UseUseExplosion.cs:24:1391:24:1394 | [post] this access | UseUseExplosion.cs:24:1408:24:1411 | this access | | UseUseExplosion.cs:24:1391:24:1394 | [post] this access | UseUseExplosion.cs:24:1978:24:1983 | this access | | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | -| UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1391:24:1394 | this access | UseUseExplosion.cs:24:1408:24:1411 | this access | | UseUseExplosion.cs:24:1391:24:1394 | this access | UseUseExplosion.cs:24:1978:24:1983 | this access | | UseUseExplosion.cs:24:1408:24:1411 | [post] this access | UseUseExplosion.cs:24:1425:24:1428 | this access | | UseUseExplosion.cs:24:1408:24:1411 | [post] this access | UseUseExplosion.cs:24:1963:24:1968 | this access | | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | -| UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1408:24:1411 | this access | UseUseExplosion.cs:24:1425:24:1428 | this access | | UseUseExplosion.cs:24:1408:24:1411 | this access | UseUseExplosion.cs:24:1963:24:1968 | this access | | UseUseExplosion.cs:24:1425:24:1428 | [post] this access | UseUseExplosion.cs:24:1442:24:1445 | this access | | UseUseExplosion.cs:24:1425:24:1428 | [post] this access | UseUseExplosion.cs:24:1948:24:1953 | this access | | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | -| UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1425:24:1428 | this access | UseUseExplosion.cs:24:1442:24:1445 | this access | | UseUseExplosion.cs:24:1425:24:1428 | this access | UseUseExplosion.cs:24:1948:24:1953 | this access | | UseUseExplosion.cs:24:1442:24:1445 | [post] this access | UseUseExplosion.cs:24:1459:24:1462 | this access | | UseUseExplosion.cs:24:1442:24:1445 | [post] this access | UseUseExplosion.cs:24:1933:24:1938 | this access | | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | -| UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1442:24:1445 | this access | UseUseExplosion.cs:24:1459:24:1462 | this access | | UseUseExplosion.cs:24:1442:24:1445 | this access | UseUseExplosion.cs:24:1933:24:1938 | this access | | UseUseExplosion.cs:24:1459:24:1462 | [post] this access | UseUseExplosion.cs:24:1476:24:1479 | this access | | UseUseExplosion.cs:24:1459:24:1462 | [post] this access | UseUseExplosion.cs:24:1918:24:1923 | this access | | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | -| UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1459:24:1462 | this access | UseUseExplosion.cs:24:1476:24:1479 | this access | | UseUseExplosion.cs:24:1459:24:1462 | this access | UseUseExplosion.cs:24:1918:24:1923 | this access | | UseUseExplosion.cs:24:1476:24:1479 | [post] this access | UseUseExplosion.cs:24:1493:24:1496 | this access | | UseUseExplosion.cs:24:1476:24:1479 | [post] this access | UseUseExplosion.cs:24:1903:24:1908 | this access | | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | -| UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1476:24:1479 | this access | UseUseExplosion.cs:24:1493:24:1496 | this access | | UseUseExplosion.cs:24:1476:24:1479 | this access | UseUseExplosion.cs:24:1903:24:1908 | this access | | UseUseExplosion.cs:24:1493:24:1496 | [post] this access | UseUseExplosion.cs:24:1510:24:1513 | this access | | UseUseExplosion.cs:24:1493:24:1496 | [post] this access | UseUseExplosion.cs:24:1888:24:1893 | this access | | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | -| UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1493:24:1496 | this access | UseUseExplosion.cs:24:1510:24:1513 | this access | | UseUseExplosion.cs:24:1493:24:1496 | this access | UseUseExplosion.cs:24:1888:24:1893 | this access | | UseUseExplosion.cs:24:1510:24:1513 | [post] this access | UseUseExplosion.cs:24:1527:24:1530 | this access | | UseUseExplosion.cs:24:1510:24:1513 | [post] this access | UseUseExplosion.cs:24:1873:24:1878 | this access | | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | -| UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1510:24:1513 | this access | UseUseExplosion.cs:24:1527:24:1530 | this access | | UseUseExplosion.cs:24:1510:24:1513 | this access | UseUseExplosion.cs:24:1873:24:1878 | this access | | UseUseExplosion.cs:24:1527:24:1530 | [post] this access | UseUseExplosion.cs:24:1544:24:1547 | this access | | UseUseExplosion.cs:24:1527:24:1530 | [post] this access | UseUseExplosion.cs:24:1858:24:1863 | this access | | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | -| UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1527:24:1530 | this access | UseUseExplosion.cs:24:1544:24:1547 | this access | | UseUseExplosion.cs:24:1527:24:1530 | this access | UseUseExplosion.cs:24:1858:24:1863 | this access | | UseUseExplosion.cs:24:1544:24:1547 | [post] this access | UseUseExplosion.cs:24:1561:24:1564 | this access | | UseUseExplosion.cs:24:1544:24:1547 | [post] this access | UseUseExplosion.cs:24:1843:24:1848 | this access | | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | -| UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1544:24:1547 | this access | UseUseExplosion.cs:24:1561:24:1564 | this access | | UseUseExplosion.cs:24:1544:24:1547 | this access | UseUseExplosion.cs:24:1843:24:1848 | this access | | UseUseExplosion.cs:24:1561:24:1564 | [post] this access | UseUseExplosion.cs:24:1577:24:1580 | this access | | UseUseExplosion.cs:24:1561:24:1564 | [post] this access | UseUseExplosion.cs:24:1828:24:1833 | this access | | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | -| UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1561:24:1564 | this access | UseUseExplosion.cs:24:1577:24:1580 | this access | | UseUseExplosion.cs:24:1561:24:1564 | this access | UseUseExplosion.cs:24:1828:24:1833 | this access | | UseUseExplosion.cs:24:1577:24:1580 | [post] this access | UseUseExplosion.cs:24:1593:24:1596 | this access | | UseUseExplosion.cs:24:1577:24:1580 | [post] this access | UseUseExplosion.cs:24:1813:24:1818 | this access | | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | -| UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1577:24:1580 | this access | UseUseExplosion.cs:24:1593:24:1596 | this access | | UseUseExplosion.cs:24:1577:24:1580 | this access | UseUseExplosion.cs:24:1813:24:1818 | this access | | UseUseExplosion.cs:24:1593:24:1596 | [post] this access | UseUseExplosion.cs:24:1609:24:1612 | this access | | UseUseExplosion.cs:24:1593:24:1596 | [post] this access | UseUseExplosion.cs:24:1798:24:1803 | this access | | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | -| UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1593:24:1596 | this access | UseUseExplosion.cs:24:1609:24:1612 | this access | | UseUseExplosion.cs:24:1593:24:1596 | this access | UseUseExplosion.cs:24:1798:24:1803 | this access | | UseUseExplosion.cs:24:1609:24:1612 | [post] this access | UseUseExplosion.cs:24:1625:24:1628 | this access | | UseUseExplosion.cs:24:1609:24:1612 | [post] this access | UseUseExplosion.cs:24:1783:24:1788 | this access | | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | -| UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1609:24:1612 | this access | UseUseExplosion.cs:24:1625:24:1628 | this access | | UseUseExplosion.cs:24:1609:24:1612 | this access | UseUseExplosion.cs:24:1783:24:1788 | this access | | UseUseExplosion.cs:24:1625:24:1628 | [post] this access | UseUseExplosion.cs:24:1641:24:1644 | this access | | UseUseExplosion.cs:24:1625:24:1628 | [post] this access | UseUseExplosion.cs:24:1768:24:1773 | this access | | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | -| UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1625:24:1628 | this access | UseUseExplosion.cs:24:1641:24:1644 | this access | | UseUseExplosion.cs:24:1625:24:1628 | this access | UseUseExplosion.cs:24:1768:24:1773 | this access | | UseUseExplosion.cs:24:1641:24:1644 | [post] this access | UseUseExplosion.cs:24:1657:24:1660 | this access | | UseUseExplosion.cs:24:1641:24:1644 | [post] this access | UseUseExplosion.cs:24:1753:24:1758 | this access | | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | -| UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1641:24:1644 | this access | UseUseExplosion.cs:24:1657:24:1660 | this access | | UseUseExplosion.cs:24:1641:24:1644 | this access | UseUseExplosion.cs:24:1753:24:1758 | this access | | UseUseExplosion.cs:24:1657:24:1660 | [post] this access | UseUseExplosion.cs:24:1673:24:1676 | this access | | UseUseExplosion.cs:24:1657:24:1660 | [post] this access | UseUseExplosion.cs:24:1738:24:1743 | this access | | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | -| UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1657:24:1660 | this access | UseUseExplosion.cs:24:1673:24:1676 | this access | | UseUseExplosion.cs:24:1657:24:1660 | this access | UseUseExplosion.cs:24:1738:24:1743 | this access | | UseUseExplosion.cs:24:1673:24:1676 | [post] this access | UseUseExplosion.cs:24:1689:24:1692 | this access | | UseUseExplosion.cs:24:1673:24:1676 | [post] this access | UseUseExplosion.cs:24:1723:24:1728 | this access | | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | -| UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1673:24:1676 | this access | UseUseExplosion.cs:24:1689:24:1692 | this access | | UseUseExplosion.cs:24:1673:24:1676 | this access | UseUseExplosion.cs:24:1723:24:1728 | this access | | UseUseExplosion.cs:24:1689:24:1692 | [post] this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:25:13:25:16 | this access | +| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1708:24:1713 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1708:24:1713 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1723:24:1728 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1723:24:1728 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1738:24:1743 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1738:24:1743 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1753:24:1758 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1753:24:1758 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1768:24:1773 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1768:24:1773 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1783:24:1788 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1783:24:1788 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1798:24:1803 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1798:24:1803 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1813:24:1818 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1813:24:1818 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1828:24:1833 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1828:24:1833 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1843:24:1848 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1843:24:1848 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1858:24:1863 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1858:24:1863 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1873:24:1878 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1873:24:1878 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1888:24:1893 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1888:24:1893 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1903:24:1908 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1903:24:1908 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1918:24:1923 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1918:24:1923 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1933:24:1938 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1933:24:1938 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1948:24:1953 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1948:24:1953 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1963:24:1968 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1963:24:1968 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1978:24:1983 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1978:24:1983 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1993:24:1998 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1993:24:1998 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2008:24:2013 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2008:24:2013 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2023:24:2028 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2023:24:2028 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2038:24:2043 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2038:24:2043 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2053:24:2058 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2053:24:2058 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2068:24:2073 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2068:24:2073 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2083:24:2088 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2083:24:2088 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2098:24:2103 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2098:24:2103 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2113:24:2118 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2113:24:2118 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2128:24:2133 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2128:24:2133 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2143:24:2148 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2143:24:2148 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2158:24:2163 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2158:24:2163 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2173:24:2178 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2173:24:2178 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2188:24:2193 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2188:24:2193 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2203:24:2208 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2203:24:2208 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2218:24:2223 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2218:24:2223 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2233:24:2238 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2233:24:2238 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2248:24:2253 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2248:24:2253 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2263:24:2268 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2263:24:2268 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2278:24:2283 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2278:24:2283 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2293:24:2298 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2293:24:2298 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2308:24:2313 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2308:24:2313 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2323:24:2328 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2323:24:2328 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2338:24:2343 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2338:24:2343 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2353:24:2358 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2353:24:2358 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2368:24:2373 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2368:24:2373 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2383:24:2388 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2383:24:2388 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2398:24:2403 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2398:24:2403 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2413:24:2418 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2413:24:2418 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2428:24:2433 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2428:24:2433 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2443:24:2448 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2443:24:2448 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2458:24:2463 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2458:24:2463 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2473:24:2478 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2473:24:2478 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2488:24:2493 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2488:24:2493 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2503:24:2508 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2503:24:2508 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2518:24:2523 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2518:24:2523 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2533:24:2538 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2533:24:2538 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2548:24:2553 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2548:24:2553 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2563:24:2568 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2563:24:2568 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2578:24:2583 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2578:24:2583 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2593:24:2598 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2593:24:2598 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2608:24:2613 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2608:24:2613 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2623:24:2628 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2623:24:2628 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2638:24:2643 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2638:24:2643 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2653:24:2658 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2653:24:2658 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2668:24:2673 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2668:24:2673 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2683:24:2688 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2683:24:2688 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2698:24:2703 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2698:24:2703 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2713:24:2718 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2713:24:2718 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2728:24:2733 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2728:24:2733 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2743:24:2748 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2743:24:2748 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2758:24:2763 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2758:24:2763 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2773:24:2778 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2773:24:2778 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2788:24:2793 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2788:24:2793 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2803:24:2808 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2803:24:2808 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2818:24:2823 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2818:24:2823 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2833:24:2838 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2833:24:2838 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2848:24:2853 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2848:24:2853 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2863:24:2868 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2863:24:2868 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2878:24:2883 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2878:24:2883 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2893:24:2898 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2893:24:2898 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2908:24:2913 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2908:24:2913 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2923:24:2928 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2923:24:2928 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2938:24:2943 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2938:24:2943 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2953:24:2958 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2953:24:2958 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2968:24:2973 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2968:24:2973 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2983:24:2988 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2983:24:2988 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2998:24:3003 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2998:24:3003 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3013:24:3018 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3013:24:3018 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3028:24:3033 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3028:24:3033 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3043:24:3048 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3043:24:3048 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3058:24:3063 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3058:24:3063 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3073:24:3078 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3073:24:3078 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3088:24:3093 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3088:24:3093 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3103:24:3108 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3103:24:3108 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3118:24:3123 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3118:24:3123 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3133:24:3138 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3133:24:3138 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3148:24:3153 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3148:24:3153 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3163:24:3168 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3163:24:3168 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3178:24:3183 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3178:24:3183 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3193:24:3198 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3193:24:3198 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(x) | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1712:25:1712 | access to local variable x | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1727:25:1727 | access to local variable x | diff --git a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected index e1ea6fe13d9..ff7d8b0f6ba 100644 --- a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected @@ -10,7 +10,8 @@ | Capture.cs:51:9:51:15 | this access | Capture.cs:63:9:63:15 | this access | | Capture.cs:58:21:58:21 | 1 | Capture.cs:58:17:58:17 | access to local variable i | | Capture.cs:61:17:61:17 | 1 | Capture.cs:61:13:61:13 | access to local variable i | -| LocalDataFlow.cs:48:24:48:24 | b | LocalDataFlow.cs:84:21:84:21 | access to parameter b | +| LocalDataFlow.cs:48:24:48:24 | SSA param(b) | LocalDataFlow.cs:84:21:84:21 | access to parameter b | +| LocalDataFlow.cs:48:24:48:24 | b | LocalDataFlow.cs:48:24:48:24 | SSA param(b) | | LocalDataFlow.cs:51:13:51:17 | access to local variable sink0 | LocalDataFlow.cs:51:13:51:34 | SSA def(sink0) | | LocalDataFlow.cs:51:13:51:34 | SSA def(sink0) | LocalDataFlow.cs:52:15:52:19 | access to local variable sink0 | | LocalDataFlow.cs:51:21:51:34 | "taint source" | LocalDataFlow.cs:51:13:51:17 | access to local variable sink0 | @@ -72,16 +73,18 @@ | LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | | LocalDataFlow.cs:84:25:84:27 | [b (line 48): true] "a" | LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | | LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | +| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | +| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | +| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | +| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | +| LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | | LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | +| LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | | LocalDataFlow.cs:89:15:89:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:92:13:92:17 | access to local variable sink8 | LocalDataFlow.cs:92:13:92:33 | SSA def(sink8) | @@ -556,7 +559,7 @@ | LocalDataFlow.cs:281:13:281:34 | SSA def(sink70) | LocalDataFlow.cs:282:15:282:20 | access to local variable sink70 | | LocalDataFlow.cs:281:22:281:26 | access to local variable sink0 | LocalDataFlow.cs:281:22:281:34 | SSA def(sink0) | | LocalDataFlow.cs:281:22:281:34 | ... = ... | LocalDataFlow.cs:281:13:281:18 | access to local variable sink70 | -| LocalDataFlow.cs:281:22:281:34 | SSA def(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | +| LocalDataFlow.cs:281:22:281:34 | SSA def(sink0) | LocalDataFlow.cs:313:22:313:29 | [input] SSA phi read(sink0) | | LocalDataFlow.cs:281:22:281:34 | SSA def(sink0) | LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | | LocalDataFlow.cs:281:30:281:34 | access to local variable sink0 | LocalDataFlow.cs:281:22:281:26 | access to local variable sink0 | | LocalDataFlow.cs:281:30:281:34 | access to local variable sink0 | LocalDataFlow.cs:281:22:281:34 | ... = ... | @@ -586,12 +589,14 @@ | LocalDataFlow.cs:307:18:307:33 | String nonSink17 | LocalDataFlow.cs:307:18:307:33 | SSA def(nonSink17) | | LocalDataFlow.cs:313:13:313:18 | access to local variable sink73 | LocalDataFlow.cs:313:13:313:38 | SSA def(sink73) | | LocalDataFlow.cs:313:13:313:38 | SSA def(sink73) | LocalDataFlow.cs:315:15:315:20 | access to local variable sink73 | +| LocalDataFlow.cs:313:22:313:29 | [input] SSA phi read(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | | LocalDataFlow.cs:313:22:313:29 | access to local variable nonSink0 | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | | LocalDataFlow.cs:313:22:313:29 | access to local variable nonSink0 | LocalDataFlow.cs:314:31:314:38 | access to local variable nonSink0 | | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | LocalDataFlow.cs:313:13:313:18 | access to local variable sink73 | | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | +| LocalDataFlow.cs:313:34:313:38 | [input] SSA phi read(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | | LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | -| LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | +| LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:34:313:38 | [input] SSA phi read(sink0) | | LocalDataFlow.cs:314:13:314:18 | access to local variable sink74 | LocalDataFlow.cs:314:13:314:38 | SSA def(sink74) | | LocalDataFlow.cs:314:13:314:38 | SSA def(sink74) | LocalDataFlow.cs:316:15:316:20 | access to local variable sink74 | | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | @@ -599,38 +604,52 @@ | LocalDataFlow.cs:314:31:314:38 | access to local variable nonSink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | | LocalDataFlow.cs:334:28:334:30 | SSA entry def(this.anInt) | LocalDataFlow.cs:334:41:334:45 | access to field anInt | | LocalDataFlow.cs:334:28:334:30 | this | LocalDataFlow.cs:334:41:334:45 | this access | +| LocalDataFlow.cs:334:50:334:52 | SSA param(value) | LocalDataFlow.cs:334:64:334:68 | access to parameter value | | LocalDataFlow.cs:334:50:334:52 | this | LocalDataFlow.cs:334:56:334:60 | this access | -| LocalDataFlow.cs:334:50:334:52 | value | LocalDataFlow.cs:334:64:334:68 | access to parameter value | +| LocalDataFlow.cs:334:50:334:52 | value | LocalDataFlow.cs:334:50:334:52 | SSA param(value) | | LocalDataFlow.cs:334:64:334:68 | access to parameter value | LocalDataFlow.cs:334:56:334:60 | access to field anInt | -| LocalDataFlow.cs:340:41:340:47 | tainted | LocalDataFlow.cs:342:15:342:21 | access to parameter tainted | -| LocalDataFlow.cs:345:44:345:53 | nonTainted | LocalDataFlow.cs:347:15:347:24 | access to parameter nonTainted | -| LocalDataFlow.cs:350:44:350:44 | x | LocalDataFlow.cs:353:21:353:21 | access to parameter x | -| LocalDataFlow.cs:350:67:350:68 | os | LocalDataFlow.cs:356:33:356:34 | access to parameter os | +| LocalDataFlow.cs:340:41:340:47 | SSA param(tainted) | LocalDataFlow.cs:342:15:342:21 | access to parameter tainted | +| LocalDataFlow.cs:340:41:340:47 | tainted | LocalDataFlow.cs:340:41:340:47 | SSA param(tainted) | +| LocalDataFlow.cs:345:44:345:53 | SSA param(nonTainted) | LocalDataFlow.cs:347:15:347:24 | access to parameter nonTainted | +| LocalDataFlow.cs:345:44:345:53 | nonTainted | LocalDataFlow.cs:345:44:345:53 | SSA param(nonTainted) | +| LocalDataFlow.cs:350:44:350:44 | SSA param(x) | LocalDataFlow.cs:353:21:353:21 | access to parameter x | +| LocalDataFlow.cs:350:44:350:44 | x | LocalDataFlow.cs:350:44:350:44 | SSA param(x) | +| LocalDataFlow.cs:350:67:350:68 | SSA param(os) | LocalDataFlow.cs:356:33:356:34 | access to parameter os | +| LocalDataFlow.cs:350:67:350:68 | os | LocalDataFlow.cs:350:67:350:68 | SSA param(os) | | LocalDataFlow.cs:353:21:353:21 | access to parameter x | LocalDataFlow.cs:353:16:353:17 | access to local variable x1 | | LocalDataFlow.cs:353:21:353:21 | access to parameter x | LocalDataFlow.cs:353:16:353:21 | ... = ... | | LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:29 | access to local variable os2 | | LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:34 | ... = ... | -| LocalDataFlow.cs:361:41:361:44 | args | LocalDataFlow.cs:363:29:363:32 | access to parameter args | +| LocalDataFlow.cs:361:41:361:44 | SSA param(args) | LocalDataFlow.cs:363:29:363:32 | access to parameter args | +| LocalDataFlow.cs:361:41:361:44 | args | LocalDataFlow.cs:361:41:361:44 | SSA param(args) | | LocalDataFlow.cs:363:29:363:32 | [post] access to parameter args | LocalDataFlow.cs:364:27:364:30 | access to parameter args | | LocalDataFlow.cs:363:29:363:32 | access to parameter args | LocalDataFlow.cs:363:29:363:32 | call to operator implicit conversion | | LocalDataFlow.cs:363:29:363:32 | access to parameter args | LocalDataFlow.cs:364:27:364:30 | access to parameter args | | LocalDataFlow.cs:363:29:363:32 | call to operator implicit conversion | LocalDataFlow.cs:363:22:363:25 | access to local variable span | | LocalDataFlow.cs:364:27:364:30 | call to operator implicit conversion | LocalDataFlow.cs:364:23:364:23 | access to local variable x | -| LocalDataFlow.cs:367:23:367:24 | b1 | LocalDataFlow.cs:371:13:371:14 | access to parameter b1 | -| LocalDataFlow.cs:367:32:367:33 | b2 | LocalDataFlow.cs:374:17:374:18 | access to parameter b2 | +| LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | LocalDataFlow.cs:371:13:371:14 | access to parameter b1 | +| LocalDataFlow.cs:367:23:367:24 | b1 | LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | +| LocalDataFlow.cs:367:32:367:33 | SSA param(b2) | LocalDataFlow.cs:374:17:374:18 | access to parameter b2 | +| LocalDataFlow.cs:367:32:367:33 | b2 | LocalDataFlow.cs:367:32:367:33 | SSA param(b2) | | LocalDataFlow.cs:369:17:369:18 | "" | LocalDataFlow.cs:369:13:369:13 | access to local variable x | | LocalDataFlow.cs:373:13:373:13 | access to local variable x | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | +| LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:376:35:376:35 | access to local variable x | -| LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | | LocalDataFlow.cs:373:17:373:25 | "tainted" | LocalDataFlow.cs:373:13:373:13 | access to local variable x | +| LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | | LocalDataFlow.cs:381:13:381:13 | access to local variable x | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | -| LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | +| LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:381:13:381:29 | [input] SSA phi(x) | +| LocalDataFlow.cs:381:13:381:29 | [input] SSA phi(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | | LocalDataFlow.cs:381:17:381:29 | "not tainted" | LocalDataFlow.cs:381:13:381:13 | access to local variable x | | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | SSA.cs:5:17:5:17 | SSA entry def(this.S) | SSA.cs:67:9:67:14 | access to field S | +| SSA.cs:5:17:5:17 | [input] SSA def(this.S) | SSA.cs:136:23:136:28 | SSA def(this.S) | +| SSA.cs:5:17:5:17 | [input] SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:5:17:5:17 | this | SSA.cs:67:9:67:12 | this access | -| SSA.cs:5:26:5:32 | tainted | SSA.cs:8:24:8:30 | access to parameter tainted | -| SSA.cs:5:42:5:51 | nonTainted | SSA.cs:12:24:12:33 | access to parameter nonTainted | +| SSA.cs:5:26:5:32 | SSA param(tainted) | SSA.cs:8:24:8:30 | access to parameter tainted | +| SSA.cs:5:26:5:32 | tainted | SSA.cs:5:26:5:32 | SSA param(tainted) | +| SSA.cs:5:42:5:51 | SSA param(nonTainted) | SSA.cs:12:24:12:33 | access to parameter nonTainted | +| SSA.cs:5:42:5:51 | nonTainted | SSA.cs:5:42:5:51 | SSA param(nonTainted) | | SSA.cs:8:13:8:20 | access to local variable ssaSink0 | SSA.cs:8:13:8:30 | SSA def(ssaSink0) | | SSA.cs:8:13:8:30 | SSA def(ssaSink0) | SSA.cs:9:15:9:22 | access to local variable ssaSink0 | | SSA.cs:8:24:8:30 | access to parameter tainted | SSA.cs:8:13:8:20 | access to local variable ssaSink0 | @@ -643,84 +662,116 @@ | SSA.cs:12:24:12:33 | access to parameter nonTainted | SSA.cs:23:13:23:22 | access to parameter nonTainted | | SSA.cs:13:15:13:22 | [post] access to local variable nonSink0 | SSA.cs:19:13:19:20 | access to local variable nonSink0 | | SSA.cs:13:15:13:22 | access to local variable nonSink0 | SSA.cs:19:13:19:20 | access to local variable nonSink0 | +| SSA.cs:16:13:16:20 | [post] access to local variable ssaSink0 | SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:16:13:16:20 | [post] access to local variable ssaSink0 | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | -| SSA.cs:16:13:16:20 | [post] access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:16:13:16:20 | access to local variable ssaSink0 | SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:16:13:16:20 | access to local variable ssaSink0 | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | -| SSA.cs:16:13:16:20 | access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:19:13:19:20 | [post] access to local variable nonSink0 | SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | | SSA.cs:19:13:19:20 | [post] access to local variable nonSink0 | SSA.cs:30:24:30:31 | access to local variable nonSink0 | -| SSA.cs:19:13:19:20 | [post] access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | | SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:30:24:30:31 | access to local variable nonSink0 | -| SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | SSA.cs:22:16:22:28 | SSA def(ssaSink1) | -| SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | +| SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:23:13:23:33 | [input] SSA phi(ssaSink1) | | SSA.cs:22:27:22:28 | "" | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | | SSA.cs:23:13:23:22 | [post] access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:22 | access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:29 | access to property Length | SSA.cs:23:13:23:33 | ... > ... | +| SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:23:13:23:33 | [input] SSA phi(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | SSA.cs:24:13:24:31 | SSA def(ssaSink1) | -| SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | +| SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:24:13:24:31 | [input] SSA phi(ssaSink1) | +| SSA.cs:24:13:24:31 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:24:13:24:31 | [input] SSA phi(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | -| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:31 | [input] SSA phi read(ssaSink0) | +| SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | -| SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:28:16:28:23 | access to local variable nonSink1 | SSA.cs:28:16:28:28 | SSA def(nonSink1) | -| SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | +| SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:29:13:29:33 | [input] SSA phi(nonSink1) | | SSA.cs:28:27:28:28 | "" | SSA.cs:28:16:28:23 | access to local variable nonSink1 | | SSA.cs:29:13:29:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:22 | access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:29 | access to property Length | SSA.cs:29:13:29:33 | ... > ... | +| SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:29:13:29:33 | [input] SSA phi(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | | SSA.cs:30:13:30:20 | access to local variable nonSink1 | SSA.cs:30:13:30:31 | SSA def(nonSink1) | -| SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | +| SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:30:13:30:31 | [input] SSA phi(nonSink1) | +| SSA.cs:30:13:30:31 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:30:13:30:31 | [input] SSA phi(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | | SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:20 | access to local variable nonSink1 | -| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:31 | [input] SSA phi read(nonSink0) | +| SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:49:24:49:31 | access to local variable nonSink0 | -| SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | SSA.cs:34:16:34:28 | SSA def(ssaSink2) | -| SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | +| SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:35:13:35:33 | [input] SSA phi(ssaSink2) | | SSA.cs:34:27:34:28 | "" | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | +| SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | -| SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | -| SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | | SSA.cs:35:13:35:29 | access to property Length | SSA.cs:35:13:35:33 | ... > ... | +| SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:35:13:35:33 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:39:21:39:28 | access to local variable ssaSink2 | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:41:21:41:28 | access to local variable ssaSink2 | | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | -| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | -| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | -| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | +| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | +| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | | SSA.cs:38:17:38:33 | access to property Length | SSA.cs:38:17:38:37 | ... > ... | -| SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | +| SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | +| SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | +| SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | +| SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | +| SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | +| SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | +| SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | -| SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:46:16:46:23 | access to local variable nonSink2 | SSA.cs:46:16:46:28 | SSA def(nonSink2) | -| SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:47:13:47:33 | [input] SSA phi(nonSink2) | | SSA.cs:46:27:46:28 | "" | SSA.cs:46:16:46:23 | access to local variable nonSink2 | +| SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | | SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:50:17:50:26 | access to parameter nonTainted | -| SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | | SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:50:17:50:26 | access to parameter nonTainted | -| SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | | SSA.cs:47:13:47:29 | access to property Length | SSA.cs:47:13:47:33 | ... > ... | +| SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | +| SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:47:13:47:33 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | | SSA.cs:49:13:49:20 | access to local variable nonSink2 | SSA.cs:49:13:49:31 | SSA def(nonSink2) | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:51:21:51:28 | access to local variable nonSink2 | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:53:21:53:28 | access to local variable nonSink2 | | SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:49:13:49:20 | access to local variable nonSink2 | -| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | -| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | +| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | +| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | | SSA.cs:50:17:50:33 | access to property Length | SSA.cs:50:17:50:37 | ... > ... | -| SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | +| SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | +| SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | +| SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | +| SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | +| SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | +| SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | SSA.cs:55:15:55:22 | access to local variable nonSink2 | @@ -729,28 +780,28 @@ | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:67:32:67:38 | access to parameter tainted | | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | SSA.cs:60:15:60:22 | access to local variable ssaSink3 | -| SSA.cs:59:23:59:30 | [post] access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | -| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | +| SSA.cs:59:23:59:30 | [post] access to local variable ssaSink3 | SSA.cs:89:13:89:33 | [input] SSA def(ssaSink3) | | SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | +| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:89:13:89:33 | [input] SSA def(ssaSink3) | | SSA.cs:63:23:63:30 | SSA def(nonSink0) | SSA.cs:64:15:64:22 | access to local variable nonSink0 | -| SSA.cs:63:23:63:30 | [post] access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | -| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | +| SSA.cs:63:23:63:30 | [post] access to local variable nonSink0 | SSA.cs:89:13:89:33 | [input] SSA def(nonSink0) | | SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | +| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:89:13:89:33 | [input] SSA def(nonSink0) | | SSA.cs:67:9:67:12 | [post] this access | SSA.cs:68:23:68:26 | this access | | SSA.cs:67:9:67:12 | this access | SSA.cs:68:23:68:26 | this access | | SSA.cs:67:9:67:14 | [post] access to field S | SSA.cs:68:23:68:28 | access to field S | | SSA.cs:67:9:67:14 | access to field S | SSA.cs:68:23:68:28 | access to field S | | SSA.cs:67:9:67:28 | access to field SsaFieldSink0 | SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | -| SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | +| SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | SSA.cs:89:13:89:33 | [input] SSA qualifier def(this.S.SsaFieldSink0) | | SSA.cs:67:32:67:38 | access to parameter tainted | SSA.cs:67:9:67:28 | access to field SsaFieldSink0 | | SSA.cs:67:32:67:38 | access to parameter tainted | SSA.cs:77:20:77:26 | access to parameter tainted | | SSA.cs:68:23:68:26 | [post] this access | SSA.cs:69:15:69:18 | this access | | SSA.cs:68:23:68:26 | this access | SSA.cs:69:15:69:18 | this access | | SSA.cs:68:23:68:28 | SSA def(this.S) | SSA.cs:69:15:69:20 | access to field S | | SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | SSA.cs:69:15:69:34 | access to field SsaFieldSink0 | -| SSA.cs:68:23:68:28 | [post] access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | -| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | [post] access to field S | SSA.cs:89:13:89:33 | [input] SSA def(this.S) | | SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | access to field S | SSA.cs:89:13:89:33 | [input] SSA def(this.S) | | SSA.cs:69:15:69:18 | [post] this access | SSA.cs:72:9:72:12 | this access | | SSA.cs:69:15:69:18 | this access | SSA.cs:72:9:72:12 | this access | | SSA.cs:69:15:69:20 | [post] access to field S | SSA.cs:72:9:72:14 | access to field S | @@ -760,15 +811,15 @@ | SSA.cs:72:9:72:14 | [post] access to field S | SSA.cs:73:23:73:28 | access to field S | | SSA.cs:72:9:72:14 | access to field S | SSA.cs:73:23:73:28 | access to field S | | SSA.cs:72:9:72:31 | access to field SsaFieldNonSink0 | SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:89:13:89:33 | [input] SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:72:35:72:36 | "" | SSA.cs:72:9:72:31 | access to field SsaFieldNonSink0 | | SSA.cs:73:23:73:26 | [post] this access | SSA.cs:74:15:74:18 | this access | | SSA.cs:73:23:73:26 | this access | SSA.cs:74:15:74:18 | this access | | SSA.cs:73:23:73:28 | SSA def(this.S) | SSA.cs:74:15:74:20 | access to field S | | SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:74:15:74:37 | access to field SsaFieldNonSink0 | -| SSA.cs:73:23:73:28 | [post] access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | -| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | [post] access to field S | SSA.cs:89:13:89:33 | [input] SSA def(this.S) | | SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | access to field S | SSA.cs:89:13:89:33 | [input] SSA def(this.S) | | SSA.cs:74:15:74:18 | [post] this access | SSA.cs:80:9:80:12 | this access | | SSA.cs:74:15:74:18 | this access | SSA.cs:80:9:80:12 | this access | | SSA.cs:74:15:74:20 | [post] access to field S | SSA.cs:80:9:80:14 | access to field S | @@ -779,10 +830,10 @@ | SSA.cs:77:20:77:26 | access to parameter tainted | SSA.cs:80:35:80:41 | access to parameter tainted | | SSA.cs:78:21:78:28 | SSA def(nonSink0) | SSA.cs:79:15:79:22 | access to local variable nonSink0 | | SSA.cs:78:21:78:28 | access to local variable nonSink0 | SSA.cs:78:21:78:28 | SSA def(nonSink0) | +| SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | | SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:104:24:104:31 | access to local variable nonSink0 | -| SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | +| SSA.cs:79:15:79:22 | access to local variable nonSink0 | SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | | SSA.cs:79:15:79:22 | access to local variable nonSink0 | SSA.cs:104:24:104:31 | access to local variable nonSink0 | -| SSA.cs:79:15:79:22 | access to local variable nonSink0 | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | | SSA.cs:80:9:80:12 | [post] this access | SSA.cs:81:21:81:24 | this access | | SSA.cs:80:9:80:12 | this access | SSA.cs:81:21:81:24 | this access | | SSA.cs:80:9:80:14 | [post] access to field S | SSA.cs:81:21:81:26 | access to field S | @@ -811,75 +862,110 @@ | SSA.cs:85:15:85:20 | [post] access to field S | SSA.cs:114:9:114:14 | access to field S | | SSA.cs:85:15:85:20 | access to field S | SSA.cs:114:9:114:14 | access to field S | | SSA.cs:88:16:88:23 | access to local variable ssaSink4 | SSA.cs:88:16:88:28 | SSA def(ssaSink4) | -| SSA.cs:88:16:88:28 | SSA def(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:88:16:88:28 | SSA def(ssaSink4) | SSA.cs:89:13:89:33 | [input] SSA phi(ssaSink4) | | SSA.cs:88:27:88:28 | "" | SSA.cs:88:16:88:23 | access to local variable ssaSink4 | +| SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | | SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:92:17:92:26 | access to parameter nonTainted | -| SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | | SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:92:17:92:26 | access to parameter nonTainted | -| SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | | SSA.cs:89:13:89:29 | access to property Length | SSA.cs:89:13:89:33 | ... > ... | +| SSA.cs:89:13:89:33 | [input] SSA def(nonSink0) | SSA.cs:63:23:63:30 | SSA def(nonSink0) | +| SSA.cs:89:13:89:33 | [input] SSA def(ssaSink3) | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | +| SSA.cs:89:13:89:33 | [input] SSA def(this.S) | SSA.cs:68:23:68:28 | SSA def(this.S) | +| SSA.cs:89:13:89:33 | [input] SSA def(this.S) | SSA.cs:73:23:73:28 | SSA def(this.S) | +| SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | +| SSA.cs:89:13:89:33 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:89:13:89:33 | [input] SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:89:13:89:33 | [input] SSA qualifier def(this.S.SsaFieldSink0) | SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | | SSA.cs:91:13:91:20 | access to local variable ssaSink4 | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:93:21:93:28 | access to local variable ssaSink4 | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:95:21:95:28 | access to local variable ssaSink4 | | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:91:13:91:20 | access to local variable ssaSink4 | -| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | -| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | +| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | +| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | | SSA.cs:92:17:92:33 | access to property Length | SSA.cs:92:17:92:37 | ... > ... | -| SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | +| SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | +| SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | +| SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | +| SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | +| SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | +| SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | -| SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | -| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | +| SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:102:13:102:33 | [input] SSA def(ssaSink4) | | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | +| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:102:13:102:33 | [input] SSA def(ssaSink4) | | SSA.cs:101:16:101:23 | access to local variable nonSink3 | SSA.cs:101:16:101:28 | SSA def(nonSink3) | -| SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:102:13:102:33 | [input] SSA phi(nonSink3) | | SSA.cs:101:27:101:28 | "" | SSA.cs:101:16:101:23 | access to local variable nonSink3 | +| SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | | SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:105:17:105:26 | access to parameter nonTainted | -| SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | | SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:105:17:105:26 | access to parameter nonTainted | -| SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | | SSA.cs:102:13:102:29 | access to property Length | SSA.cs:102:13:102:33 | ... > ... | +| SSA.cs:102:13:102:33 | [input] SSA def(ssaSink4) | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | +| SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | +| SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:102:13:102:33 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | | SSA.cs:104:13:104:20 | access to local variable nonSink3 | SSA.cs:104:13:104:31 | SSA def(nonSink3) | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:106:21:106:28 | access to local variable nonSink3 | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:108:21:108:28 | access to local variable nonSink3 | | SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:104:13:104:20 | access to local variable nonSink3 | -| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | -| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | +| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | +| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | | SSA.cs:105:17:105:33 | access to property Length | SSA.cs:105:17:105:37 | ... > ... | -| SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | +| SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | +| SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | +| SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | +| SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | +| SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | +| SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:110:23:110:30 | SSA def(nonSink3) | SSA.cs:111:15:111:22 | access to local variable nonSink3 | -| SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | -| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | +| SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:115:13:115:33 | [input] SSA def(nonSink3) | | SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | +| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:115:13:115:33 | [input] SSA def(nonSink3) | | SSA.cs:114:9:114:12 | [post] this access | SSA.cs:117:13:117:16 | this access | | SSA.cs:114:9:114:12 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:114:9:114:12 | this access | SSA.cs:117:13:117:16 | this access | | SSA.cs:114:9:114:12 | this access | SSA.cs:123:23:123:26 | this access | +| SSA.cs:114:9:114:14 | [post] access to field S | SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | | SSA.cs:114:9:114:14 | [post] access to field S | SSA.cs:117:13:117:18 | access to field S | -| SSA.cs:114:9:114:14 | [post] access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | +| SSA.cs:114:9:114:14 | access to field S | SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | | SSA.cs:114:9:114:14 | access to field S | SSA.cs:117:13:117:18 | access to field S | -| SSA.cs:114:9:114:14 | access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | -| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:115:13:115:33 | [input] SSA phi(this.S.SsaFieldSink1) | | SSA.cs:114:32:114:33 | "" | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | +| SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | -| SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | -| SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | | SSA.cs:115:13:115:29 | access to property Length | SSA.cs:115:13:115:33 | ... > ... | +| SSA.cs:115:13:115:33 | [input] SSA def(nonSink3) | SSA.cs:110:23:110:30 | SSA def(nonSink3) | +| SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | +| SSA.cs:115:13:115:33 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | | SSA.cs:117:13:117:16 | [post] this access | SSA.cs:119:21:119:24 | this access | | SSA.cs:117:13:117:16 | [post] this access | SSA.cs:121:21:121:24 | this access | | SSA.cs:117:13:117:16 | this access | SSA.cs:119:21:119:24 | this access | @@ -892,31 +978,39 @@ | SSA.cs:117:13:117:43 | SSA def(this.S.SsaFieldSink1) | SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | | SSA.cs:117:13:117:43 | SSA def(this.S.SsaFieldSink1) | SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | SSA.cs:117:13:117:32 | access to field SsaFieldSink1 | -| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | -| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | | SSA.cs:118:17:118:33 | access to property Length | SSA.cs:118:17:118:37 | ... > ... | +| SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | +| SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | | SSA.cs:119:21:119:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:119:21:119:24 | this access | SSA.cs:123:23:123:26 | this access | -| SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:119:21:119:26 | access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | +| SSA.cs:119:21:119:26 | access to field S | SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | +| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | +| SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | +| SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | | SSA.cs:121:21:121:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:121:21:121:24 | this access | SSA.cs:123:23:123:26 | this access | -| SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:121:21:121:26 | access to field S | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | +| SSA.cs:121:21:121:26 | access to field S | SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | +| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:123:9:123:30 | SSA phi read(this.S) | SSA.cs:123:23:123:28 | access to field S | -| SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | SSA.cs:128:13:128:33 | [input] SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:123:23:123:26 | [post] this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:26 | this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:28 | SSA def(this.S) | SSA.cs:124:15:124:20 | access to field S | | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | SSA.cs:124:15:124:34 | access to field SsaFieldSink1 | -| SSA.cs:123:23:123:28 | [post] access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | -| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | [post] access to field S | SSA.cs:128:13:128:33 | [input] SSA def(this.S) | | SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | access to field S | SSA.cs:128:13:128:33 | [input] SSA def(this.S) | | SSA.cs:124:15:124:18 | [post] this access | SSA.cs:127:9:127:12 | this access | | SSA.cs:124:15:124:18 | this access | SSA.cs:127:9:127:12 | this access | | SSA.cs:124:15:124:20 | [post] access to field S | SSA.cs:127:9:127:14 | access to field S | @@ -925,16 +1019,20 @@ | SSA.cs:127:9:127:12 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:127:9:127:12 | this access | SSA.cs:130:13:130:16 | this access | | SSA.cs:127:9:127:12 | this access | SSA.cs:136:23:136:26 | this access | +| SSA.cs:127:9:127:14 | [post] access to field S | SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | | SSA.cs:127:9:127:14 | [post] access to field S | SSA.cs:130:13:130:18 | access to field S | -| SSA.cs:127:9:127:14 | [post] access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | +| SSA.cs:127:9:127:14 | access to field S | SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | | SSA.cs:127:9:127:14 | access to field S | SSA.cs:130:13:130:18 | access to field S | -| SSA.cs:127:9:127:14 | access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:128:13:128:33 | [input] SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:127:35:127:36 | "" | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | | SSA.cs:128:13:128:22 | [post] access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | | SSA.cs:128:13:128:22 | access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | | SSA.cs:128:13:128:29 | access to property Length | SSA.cs:128:13:128:33 | ... > ... | +| SSA.cs:128:13:128:33 | [input] SSA def(this.S) | SSA.cs:123:23:123:28 | SSA def(this.S) | +| SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | +| SSA.cs:128:13:128:33 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:128:13:128:33 | [input] SSA qualifier def(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:130:13:130:16 | [post] this access | SSA.cs:132:21:132:24 | this access | | SSA.cs:130:13:130:16 | [post] this access | SSA.cs:134:21:134:24 | this access | | SSA.cs:130:13:130:16 | this access | SSA.cs:132:21:132:24 | this access | @@ -948,70 +1046,90 @@ | SSA.cs:130:13:130:46 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | | SSA.cs:130:39:130:46 | access to local variable nonSink0 | SSA.cs:130:13:130:35 | access to field SsaFieldNonSink0 | | SSA.cs:131:17:131:33 | access to property Length | SSA.cs:131:17:131:37 | ... > ... | +| SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | +| SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:132:21:132:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:132:21:132:24 | this access | SSA.cs:136:23:136:26 | this access | -| SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:132:21:132:26 | access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | +| SSA.cs:132:21:132:26 | access to field S | SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | +| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | +| SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:134:21:134:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:134:21:134:24 | this access | SSA.cs:136:23:136:26 | this access | -| SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:134:21:134:26 | access to field S | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | +| SSA.cs:134:21:134:26 | access to field S | SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | +| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:136:9:136:30 | SSA phi read(this.S) | SSA.cs:136:23:136:28 | access to field S | -| SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:5:17:5:17 | [input] SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:136:23:136:26 | [post] this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:26 | this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:28 | SSA def(this.S) | SSA.cs:137:15:137:20 | access to field S | | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:137:15:137:37 | access to field SsaFieldNonSink0 | -| SSA.cs:136:23:136:28 | [post] access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | +| SSA.cs:136:23:136:28 | [post] access to field S | SSA.cs:5:17:5:17 | [input] SSA def(this.S) | +| SSA.cs:136:23:136:28 | access to field S | SSA.cs:5:17:5:17 | [input] SSA def(this.S) | | SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | -| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | -| SSA.cs:144:34:144:34 | t | SSA.cs:146:13:146:13 | access to parameter t | +| SSA.cs:144:34:144:34 | SSA param(t) | SSA.cs:146:13:146:13 | access to parameter t | +| SSA.cs:144:34:144:34 | t | SSA.cs:144:34:144:34 | SSA param(t) | | SSA.cs:146:13:146:13 | (...) ... | SSA.cs:146:13:146:21 | ... == ... | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:146:13:146:13 | (...) ... | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:149:17:149:17 | access to parameter t | | SSA.cs:147:13:147:13 | access to parameter t | SSA.cs:147:13:147:26 | SSA def(t) | -| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:147:13:147:26 | [input] SSA phi(t) | +| SSA.cs:147:13:147:26 | [input] SSA phi(t) | SSA.cs:144:17:144:26 | SSA phi(t) | | SSA.cs:147:17:147:26 | default(...) | SSA.cs:147:13:147:13 | access to parameter t | | SSA.cs:149:13:149:13 | access to parameter t | SSA.cs:149:13:149:17 | SSA def(t) | -| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:149:13:149:17 | [input] SSA phi(t) | +| SSA.cs:149:13:149:17 | [input] SSA phi(t) | SSA.cs:144:17:144:26 | SSA phi(t) | | SSA.cs:149:17:149:17 | access to parameter t | SSA.cs:149:13:149:13 | access to parameter t | -| SSA.cs:152:36:152:36 | t | SSA.cs:154:13:154:13 | access to parameter t | +| SSA.cs:152:36:152:36 | SSA param(t) | SSA.cs:154:13:154:13 | access to parameter t | +| SSA.cs:152:36:152:36 | t | SSA.cs:152:36:152:36 | SSA param(t) | | SSA.cs:154:13:154:13 | (...) ... | SSA.cs:154:13:154:21 | ... == ... | -| SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:152:17:152:28 | SSA phi(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:13 | (...) ... | +| SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:21 | [input] SSA phi(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:155:25:155:25 | access to parameter t | -| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:152:17:152:28 | SSA phi(t) | +| SSA.cs:154:13:154:21 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | +| SSA.cs:155:13:155:26 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | +| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:155:13:155:26 | [input] SSA phi(t) | | SSA.cs:155:25:155:25 | access to parameter t | SSA.cs:155:25:155:25 | SSA def(t) | | SSA.cs:166:10:166:13 | this | SSA.cs:166:19:166:22 | this access | | SSA.cs:166:28:166:31 | null | SSA.cs:166:19:166:24 | access to field S | -| SSA.cs:168:22:168:28 | tainted | SSA.cs:173:24:173:30 | access to parameter tainted | -| SSA.cs:168:35:168:35 | i | SSA.cs:171:13:171:13 | access to parameter i | +| SSA.cs:168:22:168:28 | SSA param(tainted) | SSA.cs:173:24:173:30 | access to parameter tainted | +| SSA.cs:168:22:168:28 | tainted | SSA.cs:168:22:168:28 | SSA param(tainted) | +| SSA.cs:168:35:168:35 | SSA param(i) | SSA.cs:171:13:171:13 | access to parameter i | +| SSA.cs:168:35:168:35 | i | SSA.cs:168:35:168:35 | SSA param(i) | | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | SSA.cs:170:16:170:28 | SSA def(ssaSink5) | -| SSA.cs:170:16:170:28 | SSA def(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | +| SSA.cs:170:16:170:28 | SSA def(ssaSink5) | SSA.cs:171:13:171:19 | [input] SSA phi(ssaSink5) | | SSA.cs:170:27:170:28 | "" | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | | SSA.cs:171:13:171:13 | access to parameter i | SSA.cs:171:13:171:15 | SSA def(i) | | SSA.cs:171:13:171:15 | ...-- | SSA.cs:171:13:171:19 | ... > ... | -| SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:20:174:20 | SSA phi(i) | +| SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:13:178:13 | [input] SSA phi(i) | +| SSA.cs:171:13:171:19 | [input] SSA phi(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | SSA.cs:173:13:173:30 | SSA def(ssaSink5) | -| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:13:178:13 | [input] SSA phi read(ssaSink5) | | SSA.cs:173:24:173:30 | access to parameter tainted | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | +| SSA.cs:174:13:178:13 | [input] SSA phi read(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:174:13:178:13 | [input] SSA phi(i) | SSA.cs:174:20:174:20 | SSA phi(i) | +| SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | -| SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | | SSA.cs:174:20:174:20 | SSA phi(i) | SSA.cs:174:20:174:20 | access to parameter i | | SSA.cs:174:20:174:20 | access to parameter i | SSA.cs:174:20:174:22 | SSA def(i) | | SSA.cs:174:20:174:22 | ...-- | SSA.cs:174:20:174:26 | ... > ... | -| SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:174:20:174:20 | SSA phi(i) | +| SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:177:17:177:29 | [input] SSA phi(i) | +| SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | | SSA.cs:176:21:176:28 | [post] access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | -| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | -| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:177:17:177:29 | [input] SSA phi(i) | SSA.cs:174:20:174:20 | SSA phi(i) | +| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | +| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:6:13:6:13 | access to parameter b | -| Splitting.cs:3:28:3:34 | tainted | Splitting.cs:5:17:5:23 | access to parameter tainted | +| Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | +| Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | +| Splitting.cs:3:28:3:34 | SSA param(tainted) | Splitting.cs:5:17:5:23 | access to parameter tainted | +| Splitting.cs:3:28:3:34 | tainted | Splitting.cs:3:28:3:34 | SSA param(tainted) | | Splitting.cs:5:13:5:13 | access to local variable x | Splitting.cs:5:13:5:23 | SSA def(x) | | Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:8:19:8:19 | [b (line 3): true] access to local variable x | | Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:12:15:12:15 | [b (line 3): false] access to local variable x | @@ -1024,7 +1142,8 @@ | Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | Splitting.cs:12:15:12:15 | [b (line 3): true] access to local variable x | | Splitting.cs:12:15:12:15 | [b (line 3): true] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | | Splitting.cs:12:15:12:15 | [post] [b (line 3): true] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | -| Splitting.cs:17:18:17:18 | b | Splitting.cs:20:13:20:13 | access to parameter b | +| Splitting.cs:17:18:17:18 | SSA param(b) | Splitting.cs:20:13:20:13 | access to parameter b | +| Splitting.cs:17:18:17:18 | b | Splitting.cs:17:18:17:18 | SSA param(b) | | Splitting.cs:19:13:19:13 | access to local variable x | Splitting.cs:19:13:19:18 | SSA def(x) | | Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:22:19:22:19 | [b (line 17): true] access to local variable x | | Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:25:15:25:15 | [b (line 17): false] access to local variable x | @@ -1038,7 +1157,8 @@ | Splitting.cs:25:15:25:15 | [b (line 17): true] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | | Splitting.cs:25:15:25:15 | [post] [b (line 17): false] access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | | Splitting.cs:25:15:25:15 | [post] [b (line 17): true] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | -| Splitting.cs:32:18:32:18 | b | Splitting.cs:35:13:35:13 | access to parameter b | +| Splitting.cs:32:18:32:18 | SSA param(b) | Splitting.cs:35:13:35:13 | access to parameter b | +| Splitting.cs:32:18:32:18 | b | Splitting.cs:32:18:32:18 | SSA param(b) | | Splitting.cs:34:17:34:18 | "" | Splitting.cs:34:13:34:13 | access to local variable x | | Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | [b (line 32): false] access to parameter b | | Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | [b (line 32): true] access to parameter b | @@ -1065,7 +1185,8 @@ | Splitting.cs:41:19:41:21 | [b (line 32): false] "d" | Splitting.cs:41:15:41:21 | [b (line 32): false] ... = ... | | Splitting.cs:41:19:41:21 | [b (line 32): true] "d" | Splitting.cs:41:15:41:15 | access to local variable x | | Splitting.cs:41:19:41:21 | [b (line 32): true] "d" | Splitting.cs:41:15:41:21 | [b (line 32): true] ... = ... | -| Splitting.cs:46:18:46:18 | b | Splitting.cs:49:13:49:13 | access to parameter b | +| Splitting.cs:46:18:46:18 | SSA param(b) | Splitting.cs:49:13:49:13 | access to parameter b | +| Splitting.cs:46:18:46:18 | b | Splitting.cs:46:18:46:18 | SSA param(b) | | Splitting.cs:48:13:48:13 | access to local variable x | Splitting.cs:48:13:48:18 | SSA def(x) | | Splitting.cs:48:13:48:18 | SSA def(x) | Splitting.cs:53:13:53:13 | [b (line 46): false] access to local variable x | | Splitting.cs:48:17:48:18 | "" | Splitting.cs:48:13:48:13 | access to local variable x | @@ -1143,6 +1264,7 @@ | UseUseExplosion.cs:21:10:21:10 | SSA entry def(this.Prop) | UseUseExplosion.cs:24:13:24:16 | access to property Prop | | UseUseExplosion.cs:21:10:21:10 | this | UseUseExplosion.cs:24:13:24:16 | this access | | UseUseExplosion.cs:23:13:23:13 | access to local variable x | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | +| UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | @@ -1243,1007 +1365,1209 @@ | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | -| UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:23:17:23:17 | 0 | UseUseExplosion.cs:23:13:23:13 | access to local variable x | | UseUseExplosion.cs:24:13:24:16 | [post] this access | UseUseExplosion.cs:24:31:24:34 | this access | | UseUseExplosion.cs:24:13:24:16 | [post] this access | UseUseExplosion.cs:24:3193:24:3198 | this access | | UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:13:24:22 | ... > ... | | UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:31:24:34 | access to property Prop | -| UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:13:24:16 | this access | UseUseExplosion.cs:24:31:24:34 | this access | | UseUseExplosion.cs:24:13:24:16 | this access | UseUseExplosion.cs:24:3193:24:3198 | this access | | UseUseExplosion.cs:24:31:24:34 | [post] this access | UseUseExplosion.cs:24:48:24:51 | this access | | UseUseExplosion.cs:24:31:24:34 | [post] this access | UseUseExplosion.cs:24:3178:24:3183 | this access | | UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:31:24:39 | ... > ... | | UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:48:24:51 | access to property Prop | -| UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:31:24:34 | this access | UseUseExplosion.cs:24:48:24:51 | this access | | UseUseExplosion.cs:24:31:24:34 | this access | UseUseExplosion.cs:24:3178:24:3183 | this access | | UseUseExplosion.cs:24:48:24:51 | [post] this access | UseUseExplosion.cs:24:65:24:68 | this access | | UseUseExplosion.cs:24:48:24:51 | [post] this access | UseUseExplosion.cs:24:3163:24:3168 | this access | | UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:48:24:56 | ... > ... | | UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:65:24:68 | access to property Prop | -| UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:48:24:51 | this access | UseUseExplosion.cs:24:65:24:68 | this access | | UseUseExplosion.cs:24:48:24:51 | this access | UseUseExplosion.cs:24:3163:24:3168 | this access | | UseUseExplosion.cs:24:65:24:68 | [post] this access | UseUseExplosion.cs:24:82:24:85 | this access | | UseUseExplosion.cs:24:65:24:68 | [post] this access | UseUseExplosion.cs:24:3148:24:3153 | this access | | UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:65:24:73 | ... > ... | | UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:82:24:85 | access to property Prop | -| UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:65:24:68 | this access | UseUseExplosion.cs:24:82:24:85 | this access | | UseUseExplosion.cs:24:65:24:68 | this access | UseUseExplosion.cs:24:3148:24:3153 | this access | | UseUseExplosion.cs:24:82:24:85 | [post] this access | UseUseExplosion.cs:24:99:24:102 | this access | | UseUseExplosion.cs:24:82:24:85 | [post] this access | UseUseExplosion.cs:24:3133:24:3138 | this access | | UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:82:24:90 | ... > ... | | UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:99:24:102 | access to property Prop | -| UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:82:24:85 | this access | UseUseExplosion.cs:24:99:24:102 | this access | | UseUseExplosion.cs:24:82:24:85 | this access | UseUseExplosion.cs:24:3133:24:3138 | this access | | UseUseExplosion.cs:24:99:24:102 | [post] this access | UseUseExplosion.cs:24:116:24:119 | this access | | UseUseExplosion.cs:24:99:24:102 | [post] this access | UseUseExplosion.cs:24:3118:24:3123 | this access | | UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:99:24:107 | ... > ... | | UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:116:24:119 | access to property Prop | -| UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:99:24:102 | this access | UseUseExplosion.cs:24:116:24:119 | this access | | UseUseExplosion.cs:24:99:24:102 | this access | UseUseExplosion.cs:24:3118:24:3123 | this access | | UseUseExplosion.cs:24:116:24:119 | [post] this access | UseUseExplosion.cs:24:133:24:136 | this access | | UseUseExplosion.cs:24:116:24:119 | [post] this access | UseUseExplosion.cs:24:3103:24:3108 | this access | | UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:116:24:124 | ... > ... | | UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:133:24:136 | access to property Prop | -| UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:116:24:119 | this access | UseUseExplosion.cs:24:133:24:136 | this access | | UseUseExplosion.cs:24:116:24:119 | this access | UseUseExplosion.cs:24:3103:24:3108 | this access | | UseUseExplosion.cs:24:133:24:136 | [post] this access | UseUseExplosion.cs:24:150:24:153 | this access | | UseUseExplosion.cs:24:133:24:136 | [post] this access | UseUseExplosion.cs:24:3088:24:3093 | this access | | UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:133:24:141 | ... > ... | | UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:150:24:153 | access to property Prop | -| UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:133:24:136 | this access | UseUseExplosion.cs:24:150:24:153 | this access | | UseUseExplosion.cs:24:133:24:136 | this access | UseUseExplosion.cs:24:3088:24:3093 | this access | | UseUseExplosion.cs:24:150:24:153 | [post] this access | UseUseExplosion.cs:24:167:24:170 | this access | | UseUseExplosion.cs:24:150:24:153 | [post] this access | UseUseExplosion.cs:24:3073:24:3078 | this access | | UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:150:24:158 | ... > ... | | UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:167:24:170 | access to property Prop | -| UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:150:24:153 | this access | UseUseExplosion.cs:24:167:24:170 | this access | | UseUseExplosion.cs:24:150:24:153 | this access | UseUseExplosion.cs:24:3073:24:3078 | this access | | UseUseExplosion.cs:24:167:24:170 | [post] this access | UseUseExplosion.cs:24:184:24:187 | this access | | UseUseExplosion.cs:24:167:24:170 | [post] this access | UseUseExplosion.cs:24:3058:24:3063 | this access | | UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:167:24:175 | ... > ... | | UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:184:24:187 | access to property Prop | -| UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:167:24:170 | this access | UseUseExplosion.cs:24:184:24:187 | this access | | UseUseExplosion.cs:24:167:24:170 | this access | UseUseExplosion.cs:24:3058:24:3063 | this access | | UseUseExplosion.cs:24:184:24:187 | [post] this access | UseUseExplosion.cs:24:201:24:204 | this access | | UseUseExplosion.cs:24:184:24:187 | [post] this access | UseUseExplosion.cs:24:3043:24:3048 | this access | | UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:184:24:192 | ... > ... | | UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:201:24:204 | access to property Prop | -| UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:184:24:187 | this access | UseUseExplosion.cs:24:201:24:204 | this access | | UseUseExplosion.cs:24:184:24:187 | this access | UseUseExplosion.cs:24:3043:24:3048 | this access | | UseUseExplosion.cs:24:201:24:204 | [post] this access | UseUseExplosion.cs:24:218:24:221 | this access | | UseUseExplosion.cs:24:201:24:204 | [post] this access | UseUseExplosion.cs:24:3028:24:3033 | this access | | UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:201:24:209 | ... > ... | | UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:218:24:221 | access to property Prop | -| UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:201:24:204 | this access | UseUseExplosion.cs:24:218:24:221 | this access | | UseUseExplosion.cs:24:201:24:204 | this access | UseUseExplosion.cs:24:3028:24:3033 | this access | | UseUseExplosion.cs:24:218:24:221 | [post] this access | UseUseExplosion.cs:24:235:24:238 | this access | | UseUseExplosion.cs:24:218:24:221 | [post] this access | UseUseExplosion.cs:24:3013:24:3018 | this access | | UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:218:24:226 | ... > ... | | UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:235:24:238 | access to property Prop | -| UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:218:24:221 | this access | UseUseExplosion.cs:24:235:24:238 | this access | | UseUseExplosion.cs:24:218:24:221 | this access | UseUseExplosion.cs:24:3013:24:3018 | this access | | UseUseExplosion.cs:24:235:24:238 | [post] this access | UseUseExplosion.cs:24:252:24:255 | this access | | UseUseExplosion.cs:24:235:24:238 | [post] this access | UseUseExplosion.cs:24:2998:24:3003 | this access | | UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:235:24:243 | ... > ... | | UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:252:24:255 | access to property Prop | -| UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:235:24:238 | this access | UseUseExplosion.cs:24:252:24:255 | this access | | UseUseExplosion.cs:24:235:24:238 | this access | UseUseExplosion.cs:24:2998:24:3003 | this access | | UseUseExplosion.cs:24:252:24:255 | [post] this access | UseUseExplosion.cs:24:269:24:272 | this access | | UseUseExplosion.cs:24:252:24:255 | [post] this access | UseUseExplosion.cs:24:2983:24:2988 | this access | | UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:252:24:260 | ... > ... | | UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:269:24:272 | access to property Prop | -| UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:252:24:255 | this access | UseUseExplosion.cs:24:269:24:272 | this access | | UseUseExplosion.cs:24:252:24:255 | this access | UseUseExplosion.cs:24:2983:24:2988 | this access | | UseUseExplosion.cs:24:269:24:272 | [post] this access | UseUseExplosion.cs:24:286:24:289 | this access | | UseUseExplosion.cs:24:269:24:272 | [post] this access | UseUseExplosion.cs:24:2968:24:2973 | this access | | UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:269:24:277 | ... > ... | | UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:286:24:289 | access to property Prop | -| UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:269:24:272 | this access | UseUseExplosion.cs:24:286:24:289 | this access | | UseUseExplosion.cs:24:269:24:272 | this access | UseUseExplosion.cs:24:2968:24:2973 | this access | | UseUseExplosion.cs:24:286:24:289 | [post] this access | UseUseExplosion.cs:24:303:24:306 | this access | | UseUseExplosion.cs:24:286:24:289 | [post] this access | UseUseExplosion.cs:24:2953:24:2958 | this access | | UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:286:24:294 | ... > ... | | UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:303:24:306 | access to property Prop | -| UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:286:24:289 | this access | UseUseExplosion.cs:24:303:24:306 | this access | | UseUseExplosion.cs:24:286:24:289 | this access | UseUseExplosion.cs:24:2953:24:2958 | this access | | UseUseExplosion.cs:24:303:24:306 | [post] this access | UseUseExplosion.cs:24:320:24:323 | this access | | UseUseExplosion.cs:24:303:24:306 | [post] this access | UseUseExplosion.cs:24:2938:24:2943 | this access | | UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:303:24:311 | ... > ... | | UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:320:24:323 | access to property Prop | -| UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:303:24:306 | this access | UseUseExplosion.cs:24:320:24:323 | this access | | UseUseExplosion.cs:24:303:24:306 | this access | UseUseExplosion.cs:24:2938:24:2943 | this access | | UseUseExplosion.cs:24:320:24:323 | [post] this access | UseUseExplosion.cs:24:337:24:340 | this access | | UseUseExplosion.cs:24:320:24:323 | [post] this access | UseUseExplosion.cs:24:2923:24:2928 | this access | | UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:320:24:328 | ... > ... | | UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:337:24:340 | access to property Prop | -| UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:320:24:323 | this access | UseUseExplosion.cs:24:337:24:340 | this access | | UseUseExplosion.cs:24:320:24:323 | this access | UseUseExplosion.cs:24:2923:24:2928 | this access | | UseUseExplosion.cs:24:337:24:340 | [post] this access | UseUseExplosion.cs:24:354:24:357 | this access | | UseUseExplosion.cs:24:337:24:340 | [post] this access | UseUseExplosion.cs:24:2908:24:2913 | this access | | UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:337:24:345 | ... > ... | | UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:354:24:357 | access to property Prop | -| UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:337:24:340 | this access | UseUseExplosion.cs:24:354:24:357 | this access | | UseUseExplosion.cs:24:337:24:340 | this access | UseUseExplosion.cs:24:2908:24:2913 | this access | | UseUseExplosion.cs:24:354:24:357 | [post] this access | UseUseExplosion.cs:24:371:24:374 | this access | | UseUseExplosion.cs:24:354:24:357 | [post] this access | UseUseExplosion.cs:24:2893:24:2898 | this access | | UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:354:24:362 | ... > ... | | UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:371:24:374 | access to property Prop | -| UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:354:24:357 | this access | UseUseExplosion.cs:24:371:24:374 | this access | | UseUseExplosion.cs:24:354:24:357 | this access | UseUseExplosion.cs:24:2893:24:2898 | this access | | UseUseExplosion.cs:24:371:24:374 | [post] this access | UseUseExplosion.cs:24:388:24:391 | this access | | UseUseExplosion.cs:24:371:24:374 | [post] this access | UseUseExplosion.cs:24:2878:24:2883 | this access | | UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:371:24:379 | ... > ... | | UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:388:24:391 | access to property Prop | -| UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:371:24:374 | this access | UseUseExplosion.cs:24:388:24:391 | this access | | UseUseExplosion.cs:24:371:24:374 | this access | UseUseExplosion.cs:24:2878:24:2883 | this access | | UseUseExplosion.cs:24:388:24:391 | [post] this access | UseUseExplosion.cs:24:405:24:408 | this access | | UseUseExplosion.cs:24:388:24:391 | [post] this access | UseUseExplosion.cs:24:2863:24:2868 | this access | | UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:388:24:396 | ... > ... | | UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:405:24:408 | access to property Prop | -| UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:388:24:391 | this access | UseUseExplosion.cs:24:405:24:408 | this access | | UseUseExplosion.cs:24:388:24:391 | this access | UseUseExplosion.cs:24:2863:24:2868 | this access | | UseUseExplosion.cs:24:405:24:408 | [post] this access | UseUseExplosion.cs:24:422:24:425 | this access | | UseUseExplosion.cs:24:405:24:408 | [post] this access | UseUseExplosion.cs:24:2848:24:2853 | this access | | UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:405:24:413 | ... > ... | | UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:422:24:425 | access to property Prop | -| UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:405:24:408 | this access | UseUseExplosion.cs:24:422:24:425 | this access | | UseUseExplosion.cs:24:405:24:408 | this access | UseUseExplosion.cs:24:2848:24:2853 | this access | | UseUseExplosion.cs:24:422:24:425 | [post] this access | UseUseExplosion.cs:24:439:24:442 | this access | | UseUseExplosion.cs:24:422:24:425 | [post] this access | UseUseExplosion.cs:24:2833:24:2838 | this access | | UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:422:24:430 | ... > ... | | UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:439:24:442 | access to property Prop | -| UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:422:24:425 | this access | UseUseExplosion.cs:24:439:24:442 | this access | | UseUseExplosion.cs:24:422:24:425 | this access | UseUseExplosion.cs:24:2833:24:2838 | this access | | UseUseExplosion.cs:24:439:24:442 | [post] this access | UseUseExplosion.cs:24:456:24:459 | this access | | UseUseExplosion.cs:24:439:24:442 | [post] this access | UseUseExplosion.cs:24:2818:24:2823 | this access | | UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:439:24:447 | ... > ... | | UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:456:24:459 | access to property Prop | -| UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:439:24:442 | this access | UseUseExplosion.cs:24:456:24:459 | this access | | UseUseExplosion.cs:24:439:24:442 | this access | UseUseExplosion.cs:24:2818:24:2823 | this access | | UseUseExplosion.cs:24:456:24:459 | [post] this access | UseUseExplosion.cs:24:473:24:476 | this access | | UseUseExplosion.cs:24:456:24:459 | [post] this access | UseUseExplosion.cs:24:2803:24:2808 | this access | | UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:456:24:464 | ... > ... | | UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:473:24:476 | access to property Prop | -| UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:456:24:459 | this access | UseUseExplosion.cs:24:473:24:476 | this access | | UseUseExplosion.cs:24:456:24:459 | this access | UseUseExplosion.cs:24:2803:24:2808 | this access | | UseUseExplosion.cs:24:473:24:476 | [post] this access | UseUseExplosion.cs:24:490:24:493 | this access | | UseUseExplosion.cs:24:473:24:476 | [post] this access | UseUseExplosion.cs:24:2788:24:2793 | this access | | UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:473:24:481 | ... > ... | | UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:490:24:493 | access to property Prop | -| UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:473:24:476 | this access | UseUseExplosion.cs:24:490:24:493 | this access | | UseUseExplosion.cs:24:473:24:476 | this access | UseUseExplosion.cs:24:2788:24:2793 | this access | | UseUseExplosion.cs:24:490:24:493 | [post] this access | UseUseExplosion.cs:24:507:24:510 | this access | | UseUseExplosion.cs:24:490:24:493 | [post] this access | UseUseExplosion.cs:24:2773:24:2778 | this access | | UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:490:24:498 | ... > ... | | UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:507:24:510 | access to property Prop | -| UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:490:24:493 | this access | UseUseExplosion.cs:24:507:24:510 | this access | | UseUseExplosion.cs:24:490:24:493 | this access | UseUseExplosion.cs:24:2773:24:2778 | this access | | UseUseExplosion.cs:24:507:24:510 | [post] this access | UseUseExplosion.cs:24:524:24:527 | this access | | UseUseExplosion.cs:24:507:24:510 | [post] this access | UseUseExplosion.cs:24:2758:24:2763 | this access | | UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:507:24:515 | ... > ... | | UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:524:24:527 | access to property Prop | -| UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:507:24:510 | this access | UseUseExplosion.cs:24:524:24:527 | this access | | UseUseExplosion.cs:24:507:24:510 | this access | UseUseExplosion.cs:24:2758:24:2763 | this access | | UseUseExplosion.cs:24:524:24:527 | [post] this access | UseUseExplosion.cs:24:541:24:544 | this access | | UseUseExplosion.cs:24:524:24:527 | [post] this access | UseUseExplosion.cs:24:2743:24:2748 | this access | | UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:524:24:532 | ... > ... | | UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:541:24:544 | access to property Prop | -| UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:524:24:527 | this access | UseUseExplosion.cs:24:541:24:544 | this access | | UseUseExplosion.cs:24:524:24:527 | this access | UseUseExplosion.cs:24:2743:24:2748 | this access | | UseUseExplosion.cs:24:541:24:544 | [post] this access | UseUseExplosion.cs:24:558:24:561 | this access | | UseUseExplosion.cs:24:541:24:544 | [post] this access | UseUseExplosion.cs:24:2728:24:2733 | this access | | UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:541:24:549 | ... > ... | | UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:558:24:561 | access to property Prop | -| UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:541:24:544 | this access | UseUseExplosion.cs:24:558:24:561 | this access | | UseUseExplosion.cs:24:541:24:544 | this access | UseUseExplosion.cs:24:2728:24:2733 | this access | | UseUseExplosion.cs:24:558:24:561 | [post] this access | UseUseExplosion.cs:24:575:24:578 | this access | | UseUseExplosion.cs:24:558:24:561 | [post] this access | UseUseExplosion.cs:24:2713:24:2718 | this access | | UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:558:24:566 | ... > ... | | UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:575:24:578 | access to property Prop | -| UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:558:24:561 | this access | UseUseExplosion.cs:24:575:24:578 | this access | | UseUseExplosion.cs:24:558:24:561 | this access | UseUseExplosion.cs:24:2713:24:2718 | this access | | UseUseExplosion.cs:24:575:24:578 | [post] this access | UseUseExplosion.cs:24:592:24:595 | this access | | UseUseExplosion.cs:24:575:24:578 | [post] this access | UseUseExplosion.cs:24:2698:24:2703 | this access | | UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:575:24:583 | ... > ... | | UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:592:24:595 | access to property Prop | -| UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:575:24:578 | this access | UseUseExplosion.cs:24:592:24:595 | this access | | UseUseExplosion.cs:24:575:24:578 | this access | UseUseExplosion.cs:24:2698:24:2703 | this access | | UseUseExplosion.cs:24:592:24:595 | [post] this access | UseUseExplosion.cs:24:609:24:612 | this access | | UseUseExplosion.cs:24:592:24:595 | [post] this access | UseUseExplosion.cs:24:2683:24:2688 | this access | | UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:592:24:600 | ... > ... | | UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:609:24:612 | access to property Prop | -| UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:592:24:595 | this access | UseUseExplosion.cs:24:609:24:612 | this access | | UseUseExplosion.cs:24:592:24:595 | this access | UseUseExplosion.cs:24:2683:24:2688 | this access | | UseUseExplosion.cs:24:609:24:612 | [post] this access | UseUseExplosion.cs:24:626:24:629 | this access | | UseUseExplosion.cs:24:609:24:612 | [post] this access | UseUseExplosion.cs:24:2668:24:2673 | this access | | UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:609:24:617 | ... > ... | | UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:626:24:629 | access to property Prop | -| UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:609:24:612 | this access | UseUseExplosion.cs:24:626:24:629 | this access | | UseUseExplosion.cs:24:609:24:612 | this access | UseUseExplosion.cs:24:2668:24:2673 | this access | | UseUseExplosion.cs:24:626:24:629 | [post] this access | UseUseExplosion.cs:24:643:24:646 | this access | | UseUseExplosion.cs:24:626:24:629 | [post] this access | UseUseExplosion.cs:24:2653:24:2658 | this access | | UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:626:24:634 | ... > ... | | UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:643:24:646 | access to property Prop | -| UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:626:24:629 | this access | UseUseExplosion.cs:24:643:24:646 | this access | | UseUseExplosion.cs:24:626:24:629 | this access | UseUseExplosion.cs:24:2653:24:2658 | this access | | UseUseExplosion.cs:24:643:24:646 | [post] this access | UseUseExplosion.cs:24:660:24:663 | this access | | UseUseExplosion.cs:24:643:24:646 | [post] this access | UseUseExplosion.cs:24:2638:24:2643 | this access | | UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:643:24:651 | ... > ... | | UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:660:24:663 | access to property Prop | -| UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:643:24:646 | this access | UseUseExplosion.cs:24:660:24:663 | this access | | UseUseExplosion.cs:24:643:24:646 | this access | UseUseExplosion.cs:24:2638:24:2643 | this access | | UseUseExplosion.cs:24:660:24:663 | [post] this access | UseUseExplosion.cs:24:677:24:680 | this access | | UseUseExplosion.cs:24:660:24:663 | [post] this access | UseUseExplosion.cs:24:2623:24:2628 | this access | | UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:660:24:668 | ... > ... | | UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:677:24:680 | access to property Prop | -| UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:660:24:663 | this access | UseUseExplosion.cs:24:677:24:680 | this access | | UseUseExplosion.cs:24:660:24:663 | this access | UseUseExplosion.cs:24:2623:24:2628 | this access | | UseUseExplosion.cs:24:677:24:680 | [post] this access | UseUseExplosion.cs:24:694:24:697 | this access | | UseUseExplosion.cs:24:677:24:680 | [post] this access | UseUseExplosion.cs:24:2608:24:2613 | this access | | UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:677:24:685 | ... > ... | | UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:694:24:697 | access to property Prop | -| UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:677:24:680 | this access | UseUseExplosion.cs:24:694:24:697 | this access | | UseUseExplosion.cs:24:677:24:680 | this access | UseUseExplosion.cs:24:2608:24:2613 | this access | | UseUseExplosion.cs:24:694:24:697 | [post] this access | UseUseExplosion.cs:24:711:24:714 | this access | | UseUseExplosion.cs:24:694:24:697 | [post] this access | UseUseExplosion.cs:24:2593:24:2598 | this access | | UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:694:24:702 | ... > ... | | UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:711:24:714 | access to property Prop | -| UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:694:24:697 | this access | UseUseExplosion.cs:24:711:24:714 | this access | | UseUseExplosion.cs:24:694:24:697 | this access | UseUseExplosion.cs:24:2593:24:2598 | this access | | UseUseExplosion.cs:24:711:24:714 | [post] this access | UseUseExplosion.cs:24:728:24:731 | this access | | UseUseExplosion.cs:24:711:24:714 | [post] this access | UseUseExplosion.cs:24:2578:24:2583 | this access | | UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:711:24:719 | ... > ... | | UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:728:24:731 | access to property Prop | -| UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:711:24:714 | this access | UseUseExplosion.cs:24:728:24:731 | this access | | UseUseExplosion.cs:24:711:24:714 | this access | UseUseExplosion.cs:24:2578:24:2583 | this access | | UseUseExplosion.cs:24:728:24:731 | [post] this access | UseUseExplosion.cs:24:745:24:748 | this access | | UseUseExplosion.cs:24:728:24:731 | [post] this access | UseUseExplosion.cs:24:2563:24:2568 | this access | | UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:728:24:736 | ... > ... | | UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:745:24:748 | access to property Prop | -| UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:728:24:731 | this access | UseUseExplosion.cs:24:745:24:748 | this access | | UseUseExplosion.cs:24:728:24:731 | this access | UseUseExplosion.cs:24:2563:24:2568 | this access | | UseUseExplosion.cs:24:745:24:748 | [post] this access | UseUseExplosion.cs:24:762:24:765 | this access | | UseUseExplosion.cs:24:745:24:748 | [post] this access | UseUseExplosion.cs:24:2548:24:2553 | this access | | UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:745:24:753 | ... > ... | | UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:762:24:765 | access to property Prop | -| UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:745:24:748 | this access | UseUseExplosion.cs:24:762:24:765 | this access | | UseUseExplosion.cs:24:745:24:748 | this access | UseUseExplosion.cs:24:2548:24:2553 | this access | | UseUseExplosion.cs:24:762:24:765 | [post] this access | UseUseExplosion.cs:24:779:24:782 | this access | | UseUseExplosion.cs:24:762:24:765 | [post] this access | UseUseExplosion.cs:24:2533:24:2538 | this access | | UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:762:24:770 | ... > ... | | UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:779:24:782 | access to property Prop | -| UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:762:24:765 | this access | UseUseExplosion.cs:24:779:24:782 | this access | | UseUseExplosion.cs:24:762:24:765 | this access | UseUseExplosion.cs:24:2533:24:2538 | this access | | UseUseExplosion.cs:24:779:24:782 | [post] this access | UseUseExplosion.cs:24:796:24:799 | this access | | UseUseExplosion.cs:24:779:24:782 | [post] this access | UseUseExplosion.cs:24:2518:24:2523 | this access | | UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:779:24:787 | ... > ... | | UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:796:24:799 | access to property Prop | -| UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:779:24:782 | this access | UseUseExplosion.cs:24:796:24:799 | this access | | UseUseExplosion.cs:24:779:24:782 | this access | UseUseExplosion.cs:24:2518:24:2523 | this access | | UseUseExplosion.cs:24:796:24:799 | [post] this access | UseUseExplosion.cs:24:813:24:816 | this access | | UseUseExplosion.cs:24:796:24:799 | [post] this access | UseUseExplosion.cs:24:2503:24:2508 | this access | | UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:796:24:804 | ... > ... | | UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:813:24:816 | access to property Prop | -| UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:796:24:799 | this access | UseUseExplosion.cs:24:813:24:816 | this access | | UseUseExplosion.cs:24:796:24:799 | this access | UseUseExplosion.cs:24:2503:24:2508 | this access | | UseUseExplosion.cs:24:813:24:816 | [post] this access | UseUseExplosion.cs:24:830:24:833 | this access | | UseUseExplosion.cs:24:813:24:816 | [post] this access | UseUseExplosion.cs:24:2488:24:2493 | this access | | UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:813:24:821 | ... > ... | | UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:830:24:833 | access to property Prop | -| UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:813:24:816 | this access | UseUseExplosion.cs:24:830:24:833 | this access | | UseUseExplosion.cs:24:813:24:816 | this access | UseUseExplosion.cs:24:2488:24:2493 | this access | | UseUseExplosion.cs:24:830:24:833 | [post] this access | UseUseExplosion.cs:24:847:24:850 | this access | | UseUseExplosion.cs:24:830:24:833 | [post] this access | UseUseExplosion.cs:24:2473:24:2478 | this access | | UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:830:24:838 | ... > ... | | UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:847:24:850 | access to property Prop | -| UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:830:24:833 | this access | UseUseExplosion.cs:24:847:24:850 | this access | | UseUseExplosion.cs:24:830:24:833 | this access | UseUseExplosion.cs:24:2473:24:2478 | this access | | UseUseExplosion.cs:24:847:24:850 | [post] this access | UseUseExplosion.cs:24:864:24:867 | this access | | UseUseExplosion.cs:24:847:24:850 | [post] this access | UseUseExplosion.cs:24:2458:24:2463 | this access | | UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:847:24:855 | ... > ... | | UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:864:24:867 | access to property Prop | -| UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:847:24:850 | this access | UseUseExplosion.cs:24:864:24:867 | this access | | UseUseExplosion.cs:24:847:24:850 | this access | UseUseExplosion.cs:24:2458:24:2463 | this access | | UseUseExplosion.cs:24:864:24:867 | [post] this access | UseUseExplosion.cs:24:881:24:884 | this access | | UseUseExplosion.cs:24:864:24:867 | [post] this access | UseUseExplosion.cs:24:2443:24:2448 | this access | | UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:864:24:872 | ... > ... | | UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:881:24:884 | access to property Prop | -| UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:864:24:867 | this access | UseUseExplosion.cs:24:881:24:884 | this access | | UseUseExplosion.cs:24:864:24:867 | this access | UseUseExplosion.cs:24:2443:24:2448 | this access | | UseUseExplosion.cs:24:881:24:884 | [post] this access | UseUseExplosion.cs:24:898:24:901 | this access | | UseUseExplosion.cs:24:881:24:884 | [post] this access | UseUseExplosion.cs:24:2428:24:2433 | this access | | UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:881:24:889 | ... > ... | | UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:898:24:901 | access to property Prop | -| UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:881:24:884 | this access | UseUseExplosion.cs:24:898:24:901 | this access | | UseUseExplosion.cs:24:881:24:884 | this access | UseUseExplosion.cs:24:2428:24:2433 | this access | | UseUseExplosion.cs:24:898:24:901 | [post] this access | UseUseExplosion.cs:24:915:24:918 | this access | | UseUseExplosion.cs:24:898:24:901 | [post] this access | UseUseExplosion.cs:24:2413:24:2418 | this access | | UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:898:24:906 | ... > ... | | UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:915:24:918 | access to property Prop | -| UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:898:24:901 | this access | UseUseExplosion.cs:24:915:24:918 | this access | | UseUseExplosion.cs:24:898:24:901 | this access | UseUseExplosion.cs:24:2413:24:2418 | this access | | UseUseExplosion.cs:24:915:24:918 | [post] this access | UseUseExplosion.cs:24:932:24:935 | this access | | UseUseExplosion.cs:24:915:24:918 | [post] this access | UseUseExplosion.cs:24:2398:24:2403 | this access | | UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:915:24:923 | ... > ... | | UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:932:24:935 | access to property Prop | -| UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:915:24:918 | this access | UseUseExplosion.cs:24:932:24:935 | this access | | UseUseExplosion.cs:24:915:24:918 | this access | UseUseExplosion.cs:24:2398:24:2403 | this access | | UseUseExplosion.cs:24:932:24:935 | [post] this access | UseUseExplosion.cs:24:949:24:952 | this access | | UseUseExplosion.cs:24:932:24:935 | [post] this access | UseUseExplosion.cs:24:2383:24:2388 | this access | | UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:932:24:940 | ... > ... | | UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:949:24:952 | access to property Prop | -| UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:932:24:935 | this access | UseUseExplosion.cs:24:949:24:952 | this access | | UseUseExplosion.cs:24:932:24:935 | this access | UseUseExplosion.cs:24:2383:24:2388 | this access | | UseUseExplosion.cs:24:949:24:952 | [post] this access | UseUseExplosion.cs:24:966:24:969 | this access | | UseUseExplosion.cs:24:949:24:952 | [post] this access | UseUseExplosion.cs:24:2368:24:2373 | this access | | UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:949:24:957 | ... > ... | | UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:966:24:969 | access to property Prop | -| UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:949:24:952 | this access | UseUseExplosion.cs:24:966:24:969 | this access | | UseUseExplosion.cs:24:949:24:952 | this access | UseUseExplosion.cs:24:2368:24:2373 | this access | | UseUseExplosion.cs:24:966:24:969 | [post] this access | UseUseExplosion.cs:24:983:24:986 | this access | | UseUseExplosion.cs:24:966:24:969 | [post] this access | UseUseExplosion.cs:24:2353:24:2358 | this access | | UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:966:24:974 | ... > ... | | UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:983:24:986 | access to property Prop | -| UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:966:24:969 | this access | UseUseExplosion.cs:24:983:24:986 | this access | | UseUseExplosion.cs:24:966:24:969 | this access | UseUseExplosion.cs:24:2353:24:2358 | this access | | UseUseExplosion.cs:24:983:24:986 | [post] this access | UseUseExplosion.cs:24:1000:24:1003 | this access | | UseUseExplosion.cs:24:983:24:986 | [post] this access | UseUseExplosion.cs:24:2338:24:2343 | this access | | UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:983:24:991 | ... > ... | | UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | -| UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:983:24:986 | this access | UseUseExplosion.cs:24:1000:24:1003 | this access | | UseUseExplosion.cs:24:983:24:986 | this access | UseUseExplosion.cs:24:2338:24:2343 | this access | | UseUseExplosion.cs:24:1000:24:1003 | [post] this access | UseUseExplosion.cs:24:1017:24:1020 | this access | | UseUseExplosion.cs:24:1000:24:1003 | [post] this access | UseUseExplosion.cs:24:2323:24:2328 | this access | | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:1000:24:1008 | ... > ... | | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | -| UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1000:24:1003 | this access | UseUseExplosion.cs:24:1017:24:1020 | this access | | UseUseExplosion.cs:24:1000:24:1003 | this access | UseUseExplosion.cs:24:2323:24:2328 | this access | | UseUseExplosion.cs:24:1017:24:1020 | [post] this access | UseUseExplosion.cs:24:1034:24:1037 | this access | | UseUseExplosion.cs:24:1017:24:1020 | [post] this access | UseUseExplosion.cs:24:2308:24:2313 | this access | | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:1017:24:1025 | ... > ... | | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | -| UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1017:24:1020 | this access | UseUseExplosion.cs:24:1034:24:1037 | this access | | UseUseExplosion.cs:24:1017:24:1020 | this access | UseUseExplosion.cs:24:2308:24:2313 | this access | | UseUseExplosion.cs:24:1034:24:1037 | [post] this access | UseUseExplosion.cs:24:1051:24:1054 | this access | | UseUseExplosion.cs:24:1034:24:1037 | [post] this access | UseUseExplosion.cs:24:2293:24:2298 | this access | | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:1034:24:1042 | ... > ... | | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | -| UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1034:24:1037 | this access | UseUseExplosion.cs:24:1051:24:1054 | this access | | UseUseExplosion.cs:24:1034:24:1037 | this access | UseUseExplosion.cs:24:2293:24:2298 | this access | | UseUseExplosion.cs:24:1051:24:1054 | [post] this access | UseUseExplosion.cs:24:1068:24:1071 | this access | | UseUseExplosion.cs:24:1051:24:1054 | [post] this access | UseUseExplosion.cs:24:2278:24:2283 | this access | | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:1051:24:1059 | ... > ... | | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | -| UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1051:24:1054 | this access | UseUseExplosion.cs:24:1068:24:1071 | this access | | UseUseExplosion.cs:24:1051:24:1054 | this access | UseUseExplosion.cs:24:2278:24:2283 | this access | | UseUseExplosion.cs:24:1068:24:1071 | [post] this access | UseUseExplosion.cs:24:1085:24:1088 | this access | | UseUseExplosion.cs:24:1068:24:1071 | [post] this access | UseUseExplosion.cs:24:2263:24:2268 | this access | | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:1068:24:1076 | ... > ... | | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | -| UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1068:24:1071 | this access | UseUseExplosion.cs:24:1085:24:1088 | this access | | UseUseExplosion.cs:24:1068:24:1071 | this access | UseUseExplosion.cs:24:2263:24:2268 | this access | | UseUseExplosion.cs:24:1085:24:1088 | [post] this access | UseUseExplosion.cs:24:1102:24:1105 | this access | | UseUseExplosion.cs:24:1085:24:1088 | [post] this access | UseUseExplosion.cs:24:2248:24:2253 | this access | | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:1085:24:1093 | ... > ... | | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | -| UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1085:24:1088 | this access | UseUseExplosion.cs:24:1102:24:1105 | this access | | UseUseExplosion.cs:24:1085:24:1088 | this access | UseUseExplosion.cs:24:2248:24:2253 | this access | | UseUseExplosion.cs:24:1102:24:1105 | [post] this access | UseUseExplosion.cs:24:1119:24:1122 | this access | | UseUseExplosion.cs:24:1102:24:1105 | [post] this access | UseUseExplosion.cs:24:2233:24:2238 | this access | | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:1102:24:1110 | ... > ... | | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | -| UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1102:24:1105 | this access | UseUseExplosion.cs:24:1119:24:1122 | this access | | UseUseExplosion.cs:24:1102:24:1105 | this access | UseUseExplosion.cs:24:2233:24:2238 | this access | | UseUseExplosion.cs:24:1119:24:1122 | [post] this access | UseUseExplosion.cs:24:1136:24:1139 | this access | | UseUseExplosion.cs:24:1119:24:1122 | [post] this access | UseUseExplosion.cs:24:2218:24:2223 | this access | | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:1119:24:1127 | ... > ... | | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | -| UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1119:24:1122 | this access | UseUseExplosion.cs:24:1136:24:1139 | this access | | UseUseExplosion.cs:24:1119:24:1122 | this access | UseUseExplosion.cs:24:2218:24:2223 | this access | | UseUseExplosion.cs:24:1136:24:1139 | [post] this access | UseUseExplosion.cs:24:1153:24:1156 | this access | | UseUseExplosion.cs:24:1136:24:1139 | [post] this access | UseUseExplosion.cs:24:2203:24:2208 | this access | | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:1136:24:1144 | ... > ... | | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | -| UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1136:24:1139 | this access | UseUseExplosion.cs:24:1153:24:1156 | this access | | UseUseExplosion.cs:24:1136:24:1139 | this access | UseUseExplosion.cs:24:2203:24:2208 | this access | | UseUseExplosion.cs:24:1153:24:1156 | [post] this access | UseUseExplosion.cs:24:1170:24:1173 | this access | | UseUseExplosion.cs:24:1153:24:1156 | [post] this access | UseUseExplosion.cs:24:2188:24:2193 | this access | | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:1153:24:1161 | ... > ... | | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | -| UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1153:24:1156 | this access | UseUseExplosion.cs:24:1170:24:1173 | this access | | UseUseExplosion.cs:24:1153:24:1156 | this access | UseUseExplosion.cs:24:2188:24:2193 | this access | | UseUseExplosion.cs:24:1170:24:1173 | [post] this access | UseUseExplosion.cs:24:1187:24:1190 | this access | | UseUseExplosion.cs:24:1170:24:1173 | [post] this access | UseUseExplosion.cs:24:2173:24:2178 | this access | | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:1170:24:1178 | ... > ... | | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | -| UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1170:24:1173 | this access | UseUseExplosion.cs:24:1187:24:1190 | this access | | UseUseExplosion.cs:24:1170:24:1173 | this access | UseUseExplosion.cs:24:2173:24:2178 | this access | | UseUseExplosion.cs:24:1187:24:1190 | [post] this access | UseUseExplosion.cs:24:1204:24:1207 | this access | | UseUseExplosion.cs:24:1187:24:1190 | [post] this access | UseUseExplosion.cs:24:2158:24:2163 | this access | | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:1187:24:1195 | ... > ... | | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | -| UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1187:24:1190 | this access | UseUseExplosion.cs:24:1204:24:1207 | this access | | UseUseExplosion.cs:24:1187:24:1190 | this access | UseUseExplosion.cs:24:2158:24:2163 | this access | | UseUseExplosion.cs:24:1204:24:1207 | [post] this access | UseUseExplosion.cs:24:1221:24:1224 | this access | | UseUseExplosion.cs:24:1204:24:1207 | [post] this access | UseUseExplosion.cs:24:2143:24:2148 | this access | | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:1204:24:1212 | ... > ... | | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | -| UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1204:24:1207 | this access | UseUseExplosion.cs:24:1221:24:1224 | this access | | UseUseExplosion.cs:24:1204:24:1207 | this access | UseUseExplosion.cs:24:2143:24:2148 | this access | | UseUseExplosion.cs:24:1221:24:1224 | [post] this access | UseUseExplosion.cs:24:1238:24:1241 | this access | | UseUseExplosion.cs:24:1221:24:1224 | [post] this access | UseUseExplosion.cs:24:2128:24:2133 | this access | | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:1221:24:1229 | ... > ... | | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | -| UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1221:24:1224 | this access | UseUseExplosion.cs:24:1238:24:1241 | this access | | UseUseExplosion.cs:24:1221:24:1224 | this access | UseUseExplosion.cs:24:2128:24:2133 | this access | | UseUseExplosion.cs:24:1238:24:1241 | [post] this access | UseUseExplosion.cs:24:1255:24:1258 | this access | | UseUseExplosion.cs:24:1238:24:1241 | [post] this access | UseUseExplosion.cs:24:2113:24:2118 | this access | | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:1238:24:1246 | ... > ... | | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | -| UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1238:24:1241 | this access | UseUseExplosion.cs:24:1255:24:1258 | this access | | UseUseExplosion.cs:24:1238:24:1241 | this access | UseUseExplosion.cs:24:2113:24:2118 | this access | | UseUseExplosion.cs:24:1255:24:1258 | [post] this access | UseUseExplosion.cs:24:1272:24:1275 | this access | | UseUseExplosion.cs:24:1255:24:1258 | [post] this access | UseUseExplosion.cs:24:2098:24:2103 | this access | | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:1255:24:1263 | ... > ... | | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | -| UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1255:24:1258 | this access | UseUseExplosion.cs:24:1272:24:1275 | this access | | UseUseExplosion.cs:24:1255:24:1258 | this access | UseUseExplosion.cs:24:2098:24:2103 | this access | | UseUseExplosion.cs:24:1272:24:1275 | [post] this access | UseUseExplosion.cs:24:1289:24:1292 | this access | | UseUseExplosion.cs:24:1272:24:1275 | [post] this access | UseUseExplosion.cs:24:2083:24:2088 | this access | | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:1272:24:1280 | ... > ... | | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | -| UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1272:24:1275 | this access | UseUseExplosion.cs:24:1289:24:1292 | this access | | UseUseExplosion.cs:24:1272:24:1275 | this access | UseUseExplosion.cs:24:2083:24:2088 | this access | | UseUseExplosion.cs:24:1289:24:1292 | [post] this access | UseUseExplosion.cs:24:1306:24:1309 | this access | | UseUseExplosion.cs:24:1289:24:1292 | [post] this access | UseUseExplosion.cs:24:2068:24:2073 | this access | | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:1289:24:1297 | ... > ... | | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | -| UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1289:24:1292 | this access | UseUseExplosion.cs:24:1306:24:1309 | this access | | UseUseExplosion.cs:24:1289:24:1292 | this access | UseUseExplosion.cs:24:2068:24:2073 | this access | | UseUseExplosion.cs:24:1306:24:1309 | [post] this access | UseUseExplosion.cs:24:1323:24:1326 | this access | | UseUseExplosion.cs:24:1306:24:1309 | [post] this access | UseUseExplosion.cs:24:2053:24:2058 | this access | | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:1306:24:1314 | ... > ... | | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | -| UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1306:24:1309 | this access | UseUseExplosion.cs:24:1323:24:1326 | this access | | UseUseExplosion.cs:24:1306:24:1309 | this access | UseUseExplosion.cs:24:2053:24:2058 | this access | | UseUseExplosion.cs:24:1323:24:1326 | [post] this access | UseUseExplosion.cs:24:1340:24:1343 | this access | | UseUseExplosion.cs:24:1323:24:1326 | [post] this access | UseUseExplosion.cs:24:2038:24:2043 | this access | | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:1323:24:1331 | ... > ... | | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | -| UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1323:24:1326 | this access | UseUseExplosion.cs:24:1340:24:1343 | this access | | UseUseExplosion.cs:24:1323:24:1326 | this access | UseUseExplosion.cs:24:2038:24:2043 | this access | | UseUseExplosion.cs:24:1340:24:1343 | [post] this access | UseUseExplosion.cs:24:1357:24:1360 | this access | | UseUseExplosion.cs:24:1340:24:1343 | [post] this access | UseUseExplosion.cs:24:2023:24:2028 | this access | | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:1340:24:1348 | ... > ... | | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | -| UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1340:24:1343 | this access | UseUseExplosion.cs:24:1357:24:1360 | this access | | UseUseExplosion.cs:24:1340:24:1343 | this access | UseUseExplosion.cs:24:2023:24:2028 | this access | | UseUseExplosion.cs:24:1357:24:1360 | [post] this access | UseUseExplosion.cs:24:1374:24:1377 | this access | | UseUseExplosion.cs:24:1357:24:1360 | [post] this access | UseUseExplosion.cs:24:2008:24:2013 | this access | | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:1357:24:1365 | ... > ... | | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | -| UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1357:24:1360 | this access | UseUseExplosion.cs:24:1374:24:1377 | this access | | UseUseExplosion.cs:24:1357:24:1360 | this access | UseUseExplosion.cs:24:2008:24:2013 | this access | | UseUseExplosion.cs:24:1374:24:1377 | [post] this access | UseUseExplosion.cs:24:1391:24:1394 | this access | | UseUseExplosion.cs:24:1374:24:1377 | [post] this access | UseUseExplosion.cs:24:1993:24:1998 | this access | | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1374:24:1382 | ... > ... | | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | -| UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1374:24:1377 | this access | UseUseExplosion.cs:24:1391:24:1394 | this access | | UseUseExplosion.cs:24:1374:24:1377 | this access | UseUseExplosion.cs:24:1993:24:1998 | this access | | UseUseExplosion.cs:24:1391:24:1394 | [post] this access | UseUseExplosion.cs:24:1408:24:1411 | this access | | UseUseExplosion.cs:24:1391:24:1394 | [post] this access | UseUseExplosion.cs:24:1978:24:1983 | this access | | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1391:24:1399 | ... > ... | | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | -| UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1391:24:1394 | this access | UseUseExplosion.cs:24:1408:24:1411 | this access | | UseUseExplosion.cs:24:1391:24:1394 | this access | UseUseExplosion.cs:24:1978:24:1983 | this access | | UseUseExplosion.cs:24:1408:24:1411 | [post] this access | UseUseExplosion.cs:24:1425:24:1428 | this access | | UseUseExplosion.cs:24:1408:24:1411 | [post] this access | UseUseExplosion.cs:24:1963:24:1968 | this access | | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1408:24:1416 | ... > ... | | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | -| UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1408:24:1411 | this access | UseUseExplosion.cs:24:1425:24:1428 | this access | | UseUseExplosion.cs:24:1408:24:1411 | this access | UseUseExplosion.cs:24:1963:24:1968 | this access | | UseUseExplosion.cs:24:1425:24:1428 | [post] this access | UseUseExplosion.cs:24:1442:24:1445 | this access | | UseUseExplosion.cs:24:1425:24:1428 | [post] this access | UseUseExplosion.cs:24:1948:24:1953 | this access | | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1425:24:1433 | ... > ... | | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | -| UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1425:24:1428 | this access | UseUseExplosion.cs:24:1442:24:1445 | this access | | UseUseExplosion.cs:24:1425:24:1428 | this access | UseUseExplosion.cs:24:1948:24:1953 | this access | | UseUseExplosion.cs:24:1442:24:1445 | [post] this access | UseUseExplosion.cs:24:1459:24:1462 | this access | | UseUseExplosion.cs:24:1442:24:1445 | [post] this access | UseUseExplosion.cs:24:1933:24:1938 | this access | | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1442:24:1450 | ... > ... | | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | -| UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1442:24:1445 | this access | UseUseExplosion.cs:24:1459:24:1462 | this access | | UseUseExplosion.cs:24:1442:24:1445 | this access | UseUseExplosion.cs:24:1933:24:1938 | this access | | UseUseExplosion.cs:24:1459:24:1462 | [post] this access | UseUseExplosion.cs:24:1476:24:1479 | this access | | UseUseExplosion.cs:24:1459:24:1462 | [post] this access | UseUseExplosion.cs:24:1918:24:1923 | this access | | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1459:24:1467 | ... > ... | | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | -| UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1459:24:1462 | this access | UseUseExplosion.cs:24:1476:24:1479 | this access | | UseUseExplosion.cs:24:1459:24:1462 | this access | UseUseExplosion.cs:24:1918:24:1923 | this access | | UseUseExplosion.cs:24:1476:24:1479 | [post] this access | UseUseExplosion.cs:24:1493:24:1496 | this access | | UseUseExplosion.cs:24:1476:24:1479 | [post] this access | UseUseExplosion.cs:24:1903:24:1908 | this access | | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1476:24:1484 | ... > ... | | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | -| UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1476:24:1479 | this access | UseUseExplosion.cs:24:1493:24:1496 | this access | | UseUseExplosion.cs:24:1476:24:1479 | this access | UseUseExplosion.cs:24:1903:24:1908 | this access | | UseUseExplosion.cs:24:1493:24:1496 | [post] this access | UseUseExplosion.cs:24:1510:24:1513 | this access | | UseUseExplosion.cs:24:1493:24:1496 | [post] this access | UseUseExplosion.cs:24:1888:24:1893 | this access | | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1493:24:1501 | ... > ... | | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | -| UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1493:24:1496 | this access | UseUseExplosion.cs:24:1510:24:1513 | this access | | UseUseExplosion.cs:24:1493:24:1496 | this access | UseUseExplosion.cs:24:1888:24:1893 | this access | | UseUseExplosion.cs:24:1510:24:1513 | [post] this access | UseUseExplosion.cs:24:1527:24:1530 | this access | | UseUseExplosion.cs:24:1510:24:1513 | [post] this access | UseUseExplosion.cs:24:1873:24:1878 | this access | | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1510:24:1518 | ... > ... | | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | -| UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1510:24:1513 | this access | UseUseExplosion.cs:24:1527:24:1530 | this access | | UseUseExplosion.cs:24:1510:24:1513 | this access | UseUseExplosion.cs:24:1873:24:1878 | this access | | UseUseExplosion.cs:24:1527:24:1530 | [post] this access | UseUseExplosion.cs:24:1544:24:1547 | this access | | UseUseExplosion.cs:24:1527:24:1530 | [post] this access | UseUseExplosion.cs:24:1858:24:1863 | this access | | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1527:24:1535 | ... > ... | | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | -| UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1527:24:1530 | this access | UseUseExplosion.cs:24:1544:24:1547 | this access | | UseUseExplosion.cs:24:1527:24:1530 | this access | UseUseExplosion.cs:24:1858:24:1863 | this access | | UseUseExplosion.cs:24:1544:24:1547 | [post] this access | UseUseExplosion.cs:24:1561:24:1564 | this access | | UseUseExplosion.cs:24:1544:24:1547 | [post] this access | UseUseExplosion.cs:24:1843:24:1848 | this access | | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1544:24:1552 | ... > ... | | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | -| UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1544:24:1547 | this access | UseUseExplosion.cs:24:1561:24:1564 | this access | | UseUseExplosion.cs:24:1544:24:1547 | this access | UseUseExplosion.cs:24:1843:24:1848 | this access | | UseUseExplosion.cs:24:1561:24:1564 | [post] this access | UseUseExplosion.cs:24:1577:24:1580 | this access | | UseUseExplosion.cs:24:1561:24:1564 | [post] this access | UseUseExplosion.cs:24:1828:24:1833 | this access | | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1561:24:1568 | ... > ... | | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | -| UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1561:24:1564 | this access | UseUseExplosion.cs:24:1577:24:1580 | this access | | UseUseExplosion.cs:24:1561:24:1564 | this access | UseUseExplosion.cs:24:1828:24:1833 | this access | | UseUseExplosion.cs:24:1577:24:1580 | [post] this access | UseUseExplosion.cs:24:1593:24:1596 | this access | | UseUseExplosion.cs:24:1577:24:1580 | [post] this access | UseUseExplosion.cs:24:1813:24:1818 | this access | | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1577:24:1584 | ... > ... | | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | -| UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1577:24:1580 | this access | UseUseExplosion.cs:24:1593:24:1596 | this access | | UseUseExplosion.cs:24:1577:24:1580 | this access | UseUseExplosion.cs:24:1813:24:1818 | this access | | UseUseExplosion.cs:24:1593:24:1596 | [post] this access | UseUseExplosion.cs:24:1609:24:1612 | this access | | UseUseExplosion.cs:24:1593:24:1596 | [post] this access | UseUseExplosion.cs:24:1798:24:1803 | this access | | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1593:24:1600 | ... > ... | | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | -| UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1593:24:1596 | this access | UseUseExplosion.cs:24:1609:24:1612 | this access | | UseUseExplosion.cs:24:1593:24:1596 | this access | UseUseExplosion.cs:24:1798:24:1803 | this access | | UseUseExplosion.cs:24:1609:24:1612 | [post] this access | UseUseExplosion.cs:24:1625:24:1628 | this access | | UseUseExplosion.cs:24:1609:24:1612 | [post] this access | UseUseExplosion.cs:24:1783:24:1788 | this access | | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1609:24:1616 | ... > ... | | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | -| UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1609:24:1612 | this access | UseUseExplosion.cs:24:1625:24:1628 | this access | | UseUseExplosion.cs:24:1609:24:1612 | this access | UseUseExplosion.cs:24:1783:24:1788 | this access | | UseUseExplosion.cs:24:1625:24:1628 | [post] this access | UseUseExplosion.cs:24:1641:24:1644 | this access | | UseUseExplosion.cs:24:1625:24:1628 | [post] this access | UseUseExplosion.cs:24:1768:24:1773 | this access | | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1625:24:1632 | ... > ... | | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | -| UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1625:24:1628 | this access | UseUseExplosion.cs:24:1641:24:1644 | this access | | UseUseExplosion.cs:24:1625:24:1628 | this access | UseUseExplosion.cs:24:1768:24:1773 | this access | | UseUseExplosion.cs:24:1641:24:1644 | [post] this access | UseUseExplosion.cs:24:1657:24:1660 | this access | | UseUseExplosion.cs:24:1641:24:1644 | [post] this access | UseUseExplosion.cs:24:1753:24:1758 | this access | | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1641:24:1648 | ... > ... | | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | -| UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1641:24:1644 | this access | UseUseExplosion.cs:24:1657:24:1660 | this access | | UseUseExplosion.cs:24:1641:24:1644 | this access | UseUseExplosion.cs:24:1753:24:1758 | this access | | UseUseExplosion.cs:24:1657:24:1660 | [post] this access | UseUseExplosion.cs:24:1673:24:1676 | this access | | UseUseExplosion.cs:24:1657:24:1660 | [post] this access | UseUseExplosion.cs:24:1738:24:1743 | this access | | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1657:24:1664 | ... > ... | | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | -| UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1657:24:1660 | this access | UseUseExplosion.cs:24:1673:24:1676 | this access | | UseUseExplosion.cs:24:1657:24:1660 | this access | UseUseExplosion.cs:24:1738:24:1743 | this access | | UseUseExplosion.cs:24:1673:24:1676 | [post] this access | UseUseExplosion.cs:24:1689:24:1692 | this access | | UseUseExplosion.cs:24:1673:24:1676 | [post] this access | UseUseExplosion.cs:24:1723:24:1728 | this access | | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1673:24:1680 | ... > ... | | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | -| UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1673:24:1676 | this access | UseUseExplosion.cs:24:1689:24:1692 | this access | | UseUseExplosion.cs:24:1673:24:1676 | this access | UseUseExplosion.cs:24:1723:24:1728 | this access | | UseUseExplosion.cs:24:1689:24:1692 | [post] this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1689:24:1696 | ... > ... | -| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:25:13:25:16 | this access | +| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1708:24:1713 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1708:24:1713 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1723:24:1728 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1723:24:1728 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1738:24:1743 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1738:24:1743 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1753:24:1758 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1753:24:1758 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1768:24:1773 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1768:24:1773 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1783:24:1788 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1783:24:1788 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1798:24:1803 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1798:24:1803 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1813:24:1818 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1813:24:1818 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1828:24:1833 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1828:24:1833 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1843:24:1848 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1843:24:1848 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1858:24:1863 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1858:24:1863 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1873:24:1878 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1873:24:1878 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1888:24:1893 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1888:24:1893 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1903:24:1908 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1903:24:1908 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1918:24:1923 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1918:24:1923 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1933:24:1938 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1933:24:1938 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1948:24:1953 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1948:24:1953 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1963:24:1968 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1963:24:1968 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1978:24:1983 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1978:24:1983 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1993:24:1998 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1993:24:1998 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2008:24:2013 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2008:24:2013 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2023:24:2028 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2023:24:2028 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2038:24:2043 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2038:24:2043 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2053:24:2058 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2053:24:2058 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2068:24:2073 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2068:24:2073 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2083:24:2088 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2083:24:2088 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2098:24:2103 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2098:24:2103 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2113:24:2118 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2113:24:2118 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2128:24:2133 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2128:24:2133 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2143:24:2148 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2143:24:2148 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2158:24:2163 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2158:24:2163 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2173:24:2178 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2173:24:2178 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2188:24:2193 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2188:24:2193 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2203:24:2208 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2203:24:2208 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2218:24:2223 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2218:24:2223 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2233:24:2238 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2233:24:2238 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2248:24:2253 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2248:24:2253 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2263:24:2268 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2263:24:2268 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2278:24:2283 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2278:24:2283 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2293:24:2298 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2293:24:2298 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2308:24:2313 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2308:24:2313 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2323:24:2328 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2323:24:2328 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2338:24:2343 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2338:24:2343 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2353:24:2358 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2353:24:2358 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2368:24:2373 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2368:24:2373 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2383:24:2388 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2383:24:2388 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2398:24:2403 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2398:24:2403 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2413:24:2418 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2413:24:2418 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2428:24:2433 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2428:24:2433 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2443:24:2448 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2443:24:2448 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2458:24:2463 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2458:24:2463 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2473:24:2478 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2473:24:2478 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2488:24:2493 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2488:24:2493 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2503:24:2508 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2503:24:2508 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2518:24:2523 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2518:24:2523 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2533:24:2538 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2533:24:2538 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2548:24:2553 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2548:24:2553 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2563:24:2568 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2563:24:2568 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2578:24:2583 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2578:24:2583 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2593:24:2598 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2593:24:2598 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2608:24:2613 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2608:24:2613 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2623:24:2628 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2623:24:2628 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2638:24:2643 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2638:24:2643 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2653:24:2658 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2653:24:2658 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2668:24:2673 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2668:24:2673 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2683:24:2688 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2683:24:2688 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2698:24:2703 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2698:24:2703 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2713:24:2718 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2713:24:2718 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2728:24:2733 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2728:24:2733 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2743:24:2748 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2743:24:2748 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2758:24:2763 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2758:24:2763 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2773:24:2778 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2773:24:2778 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2788:24:2793 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2788:24:2793 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2803:24:2808 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2803:24:2808 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2818:24:2823 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2818:24:2823 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2833:24:2838 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2833:24:2838 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2848:24:2853 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2848:24:2853 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2863:24:2868 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2863:24:2868 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2878:24:2883 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2878:24:2883 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2893:24:2898 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2893:24:2898 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2908:24:2913 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2908:24:2913 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2923:24:2928 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2923:24:2928 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2938:24:2943 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2938:24:2943 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2953:24:2958 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2953:24:2958 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2968:24:2973 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2968:24:2973 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2983:24:2988 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2983:24:2988 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2998:24:3003 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2998:24:3003 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3013:24:3018 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3013:24:3018 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3028:24:3033 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3028:24:3033 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3043:24:3048 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3043:24:3048 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3058:24:3063 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3058:24:3063 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3073:24:3078 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3073:24:3078 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3088:24:3093 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3088:24:3093 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3103:24:3108 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3103:24:3108 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3118:24:3123 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3118:24:3123 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3133:24:3138 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3133:24:3138 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3148:24:3153 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3148:24:3153 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3163:24:3168 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3163:24:3168 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3178:24:3183 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3178:24:3183 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(x) | +| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3193:24:3198 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3193:24:3198 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(x) | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1712:25:1712 | access to local variable x | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1727:25:1727 | access to local variable x | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/Enum.cs b/csharp/ql/test/library-tests/dataflow/ssa/Enum.cs new file mode 100644 index 00000000000..283b2800098 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/ssa/Enum.cs @@ -0,0 +1,14 @@ +enum E +{ + A +} + +class EnumTest +{ + void M() + { + // enums are modelled as fields; this test checks that we do not compute SSA for them + var e1 = E.A; + var e2 = E.A; + } +} diff --git a/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected index 68a96fa6f5a..73b0a757b5a 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected @@ -92,7 +92,8 @@ | Tuples.cs:51:14:51:14 | [post] access to local variable y | Tuples.cs:52:14:52:14 | access to local variable y | | Tuples.cs:51:14:51:14 | access to local variable y | Tuples.cs:52:14:52:14 | access to local variable y | | Tuples.cs:52:14:52:20 | access to field Item2 | Tuples.cs:52:14:52:20 | (...) ... | -| Tuples.cs:55:27:55:27 | s | Tuples.cs:75:18:75:18 | access to parameter s | +| Tuples.cs:55:27:55:27 | SSA param(s) | Tuples.cs:75:18:75:18 | access to parameter s | +| Tuples.cs:55:27:55:27 | s | Tuples.cs:55:27:55:27 | SSA param(s) | | Tuples.cs:57:13:57:14 | access to local variable o1 | Tuples.cs:57:13:57:34 | SSA def(o1) | | Tuples.cs:57:13:57:34 | SSA def(o1) | Tuples.cs:59:18:59:19 | access to local variable o1 | | Tuples.cs:57:18:57:34 | call to method Source | Tuples.cs:57:13:57:14 | access to local variable o1 | diff --git a/csharp/ql/test/library-tests/members/GetLabel.expected b/csharp/ql/test/library-tests/members/GetLabel.expected deleted file mode 100644 index 97e8973705b..00000000000 --- a/csharp/ql/test/library-tests/members/GetLabel.expected +++ /dev/null @@ -1,55 +0,0 @@ -| Members.cs:3:26:3:37 | EventHandler | Types.EventHandler | -| Members.cs:6:11:6:15 | Class | Types.Class | -| Members.cs:9:15:9:25 | NestedClass | Types.Class.NestedClass | -| Members.cs:12:20:12:28 | Method`1 | System.String Types.Class.NestedClass.Method`1(!0) | -| Members.cs:12:27:12:27 | T | !0 | -| Members.cs:14:34:14:36 | get_Item | System.String Types.Class.NestedClass.get_Item(System.Int32) | -| Members.cs:14:55:14:57 | set_Item | System.Void Types.Class.NestedClass.set_Item(System.Int32,System.String) | -| Members.cs:18:27:18:29 | get_Prop | System.String Types.Class.NestedClass.get_Prop() | -| Members.cs:18:32:18:34 | set_Prop | System.Void Types.Class.NestedClass.set_Prop(System.String) | -| Members.cs:20:32:20:36 | add_Event | System.Void Types.Class.NestedClass.add_Event(Types.EventHandler) | -| Members.cs:20:32:20:36 | remove_Event | System.Void Types.Class.NestedClass.remove_Event(Types.EventHandler) | -| Members.cs:24:14:24:19 | Method | System.Void Types.Class.Method() | -| Members.cs:26:30:26:32 | get_Item | System.String Types.Class.get_Item(System.Int32) | -| Members.cs:26:51:26:53 | set_Item | System.Void Types.Class.set_Item(System.Int32,System.String) | -| Members.cs:30:23:30:25 | get_Prop | System.String Types.Class.get_Prop() | -| Members.cs:30:28:30:30 | set_Prop | System.Void Types.Class.set_Prop(System.String) | -| Members.cs:32:28:32:32 | add_Event | System.Void Types.Class.add_Event(Types.EventHandler) | -| Members.cs:32:28:32:32 | remove_Event | System.Void Types.Class.remove_Event(Types.EventHandler) | -| Members.cs:35:20:35:25 | Class2 | Types.Class2 | -| Members.cs:37:23:37:34 | NestedClass2 | Types.Class2.NestedClass2 | -| Members.cs:39:28:39:36 | Method`1 | System.String Types.Class2.NestedClass2.Method`1(!0) | -| Members.cs:39:35:39:35 | T | !0 | -| Members.cs:40:42:40:44 | get_Item | System.String Types.Class2.NestedClass2.get_Item(System.Int32) | -| Members.cs:40:63:40:65 | set_Item | System.Void Types.Class2.NestedClass2.set_Item(System.Int32,System.String) | -| Members.cs:42:35:42:37 | get_Prop | System.String Types.Class2.NestedClass2.get_Prop() | -| Members.cs:42:40:42:42 | set_Prop | System.Void Types.Class2.NestedClass2.set_Prop(System.String) | -| Members.cs:43:40:43:44 | add_Event | System.Void Types.Class2.NestedClass2.add_Event(Types.EventHandler) | -| Members.cs:43:40:43:44 | remove_Event | System.Void Types.Class2.NestedClass2.remove_Event(Types.EventHandler) | -| Members.cs:46:22:46:27 | Method | System.Void Types.Class2.Method() | -| Members.cs:47:38:47:40 | get_Item | System.String Types.Class2.get_Item(System.Int32) | -| Members.cs:47:59:47:61 | set_Item | System.Void Types.Class2.set_Item(System.Int32,System.String) | -| Members.cs:49:31:49:33 | get_Prop | System.String Types.Class2.get_Prop() | -| Members.cs:49:36:49:38 | set_Prop | System.Void Types.Class2.set_Prop(System.String) | -| Members.cs:50:36:50:40 | add_Event | System.Void Types.Class2.add_Event(Types.EventHandler) | -| Members.cs:50:36:50:40 | remove_Event | System.Void Types.Class2.remove_Event(Types.EventHandler) | -| Members.cs:54:15:54:23 | Interface | Types.Interface | -| Members.cs:56:14:56:19 | Method | System.Void Types.Interface.Method() | -| Members.cs:57:30:57:32 | get_Item | System.String Types.Interface.get_Item(System.Int32) | -| Members.cs:57:35:57:37 | set_Item | System.Void Types.Interface.set_Item(System.Int32,System.String) | -| Members.cs:58:23:58:25 | get_Prop | System.String Types.Interface.get_Prop() | -| Members.cs:58:28:58:30 | set_Prop | System.Void Types.Interface.set_Prop(System.String) | -| Members.cs:59:28:59:32 | add_Event | System.Void Types.Interface.add_Event(Types.EventHandler) | -| Members.cs:59:28:59:32 | remove_Event | System.Void Types.Interface.remove_Event(Types.EventHandler) | -| Members.cs:62:24:62:33 | Interface2 | Types.Interface2 | -| Members.cs:64:14:64:19 | Method | System.Void Types.Interface2.Method() | -| Members.cs:65:30:65:32 | get_Item | System.String Types.Interface2.get_Item(System.Int32) | -| Members.cs:65:35:65:37 | set_Item | System.Void Types.Interface2.set_Item(System.Int32,System.String) | -| Members.cs:66:23:66:25 | get_Prop | System.String Types.Interface2.get_Prop() | -| Members.cs:66:28:66:30 | set_Prop | System.Void Types.Interface2.set_Prop(System.String) | -| Members.cs:67:28:67:32 | add_Event | System.Void Types.Interface2.add_Event(Types.EventHandler) | -| Members.cs:67:28:67:32 | remove_Event | System.Void Types.Interface2.remove_Event(Types.EventHandler) | -| Members.cs:71:10:71:13 | Enum | Types.Enum | -| Members.cs:73:10:73:14 | Enum2 | Types.Enum2 | -| Members.cs:76:12:76:17 | Struct | Types.Struct | -| Members.cs:78:12:78:18 | Struct2 | Types.Struct2 | diff --git a/csharp/ql/test/library-tests/members/GetLabel.ql b/csharp/ql/test/library-tests/members/GetLabel.ql deleted file mode 100644 index 61eff002e55..00000000000 --- a/csharp/ql/test/library-tests/members/GetLabel.ql +++ /dev/null @@ -1,5 +0,0 @@ -import csharp - -deprecated query predicate labels(NamedElement ne, string label) { - ne.getLabel() = label and ne.fromSource() -} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected b/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected index ab87d7c7254..f1cb229f93a 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected @@ -12,13 +12,11 @@ edges | InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | provenance | MaD:1 | | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | provenance | MaD:3 | | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | InsecureRandomness.cs:12:27:12:50 | call to method InsecureRandomString | provenance | | -| InsecureRandomness.cs:60:13:60:18 | access to local variable result : String | InsecureRandomness.cs:60:13:60:18 | access to local variable result : String | provenance | | | InsecureRandomness.cs:60:13:60:18 | access to local variable result : String | InsecureRandomness.cs:62:16:62:21 | access to local variable result : String | provenance | | | InsecureRandomness.cs:60:23:60:40 | access to array element : String | InsecureRandomness.cs:60:13:60:18 | access to local variable result : String | provenance | | | InsecureRandomness.cs:60:31:60:39 | call to method Next : Int32 | InsecureRandomness.cs:60:23:60:40 | access to array element : String | provenance | Config | | InsecureRandomness.cs:62:16:62:21 | access to local variable result : String | InsecureRandomness.cs:62:16:62:32 | call to method ToString : String | provenance | MaD:4 | | InsecureRandomness.cs:62:16:62:32 | call to method ToString : String | InsecureRandomness.cs:13:20:13:56 | call to method InsecureRandomStringFromSelection | provenance | | -| InsecureRandomness.cs:72:13:72:18 | access to local variable result : String | InsecureRandomness.cs:72:13:72:18 | access to local variable result : String | provenance | | | InsecureRandomness.cs:72:13:72:18 | access to local variable result : String | InsecureRandomness.cs:74:16:74:21 | access to local variable result : String | provenance | | | InsecureRandomness.cs:72:23:72:40 | access to indexer : String | InsecureRandomness.cs:72:13:72:18 | access to local variable result : String | provenance | | | InsecureRandomness.cs:72:31:72:39 | call to method Next : Int32 | InsecureRandomness.cs:72:23:72:40 | access to indexer : String | provenance | Config | diff --git a/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.expected b/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.expected new file mode 100644 index 00000000000..cb6fc390349 --- /dev/null +++ b/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.expected @@ -0,0 +1,2 @@ +unexpectedModel +expectedModel diff --git a/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ext.yml b/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ext.yml new file mode 100644 index 00000000000..c995ec5aa50 --- /dev/null +++ b/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ext.yml @@ -0,0 +1,12 @@ +extensions: + - addsTo: + pack: codeql/csharp-all + extensible: summaryModel + data: + - [ "Models", "ManuallyModelled", False, "HasSummary", "(System.Object)", "", "Argument[0]", "ReturnValue", "value", "manual"] + + - addsTo: + pack: codeql/csharp-all + extensible: neutralModel + data: + - [ "Models", "ManuallyModelled", "HasNeutralSummary", "(System.Object)", "summary", "manual"] diff --git a/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ql b/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ql new file mode 100644 index 00000000000..f5d8593a32a --- /dev/null +++ b/csharp/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ql @@ -0,0 +1,11 @@ +import csharp +import utils.modelgenerator.internal.CaptureModels +import TestUtilities.InlineMadTest + +module InlineMadTestConfig implements InlineMadTestConfigSig { + string getCapturedModel(Callable c) { result = captureContentFlow(c) } + + string getKind() { result = "contentbased-summary" } +} + +import InlineMadTest diff --git a/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs b/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs index 1b7dee8189b..994eaf7c378 100644 --- a/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs +++ b/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs @@ -13,18 +13,21 @@ public class BasicFlow private string tainted; // summary=Models;BasicFlow;false;ReturnThis;(System.Object);;Argument[this];ReturnValue;value;df-generated + // contentbased-summary=Models;BasicFlow;false;ReturnThis;(System.Object);;Argument[this];ReturnValue;value;df-generated public BasicFlow ReturnThis(object input) { return this; } // summary=Models;BasicFlow;false;ReturnParam0;(System.String,System.Object);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;BasicFlow;false;ReturnParam0;(System.String,System.Object);;Argument[0];ReturnValue;value;df-generated public string ReturnParam0(string input0, object input1) { return input0; } // summary=Models;BasicFlow;false;ReturnParam1;(System.String,System.Object);;Argument[1];ReturnValue;taint;df-generated + // contentbased-summary=Models;BasicFlow;false;ReturnParam1;(System.String,System.Object);;Argument[1];ReturnValue;value;df-generated public object ReturnParam1(string input0, object input1) { return input1; @@ -32,24 +35,29 @@ public class BasicFlow // summary=Models;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[0];ReturnValue;taint;df-generated // summary=Models;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[1];ReturnValue;taint;df-generated + // contentbased-summary=Models;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[0];ReturnValue;value;df-generated + // contentbased-summary=Models;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[1];ReturnValue;value;df-generated public object ReturnParamMultiple(object input0, object input1) { return (System.DateTime.Now.DayOfWeek == System.DayOfWeek.Monday) ? input0 : input1; } // summary=Models;BasicFlow;false;ReturnSubstring;(System.String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;BasicFlow;false;ReturnSubstring;(System.String);;Argument[0];ReturnValue;taint;df-generated public string ReturnSubstring(string s) { return s.Substring(0, 1); } // summary=Models;BasicFlow;false;SetField;(System.String);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=Models;BasicFlow;false;SetField;(System.String);;Argument[0];Argument[this].SyntheticField[Models.BasicFlow.tainted];value;df-generated public void SetField(string s) { tainted = s; } // summary=Models;BasicFlow;false;ReturnField;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;BasicFlow;false;ReturnField;();;Argument[this].SyntheticField[Models.BasicFlow.tainted];ReturnValue;value;df-generated public string ReturnField() { return tainted; @@ -61,72 +69,84 @@ public class CollectionFlow private string tainted; // summary=Models;CollectionFlow;false;ReturnArrayElement;(System.Object[]);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;ReturnArrayElement;(System.Object[]);;Argument[0].Element;ReturnValue;value;df-generated public object ReturnArrayElement(object[] input) { return input[0]; } // summary=Models;CollectionFlow;false;AssignToArray;(System.Object,System.Object[]);;Argument[0];Argument[1].Element;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;AssignToArray;(System.Object,System.Object[]);;Argument[0];Argument[1].Element;value;df-generated public void AssignToArray(object data, object[] target) { target[0] = data; } // summary=Models;CollectionFlow;false;AssignFieldToArray;(System.Object[]);;Argument[this];Argument[0].Element;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;AssignFieldToArray;(System.Object[]);;Argument[this].SyntheticField[Models.CollectionFlow.tainted];Argument[0].Element;value;df-generated public void AssignFieldToArray(object[] target) { target[0] = tainted; } // summary=Models;CollectionFlow;false;ReturnListElement;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;ReturnListElement;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;value;df-generated public object ReturnListElement(List input) { return input[0]; } // summary=Models;CollectionFlow;false;AddToList;(System.Collections.Generic.List,System.Object);;Argument[1];Argument[0].Element;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;AddToList;(System.Collections.Generic.List,System.Object);;Argument[1];Argument[0].Element;value;df-generated public void AddToList(List input, object data) { input.Add(data); } // summary=Models;CollectionFlow;false;AddFieldToList;(System.Collections.Generic.List);;Argument[this];Argument[0].Element;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;AddFieldToList;(System.Collections.Generic.List);;Argument[this].SyntheticField[Models.CollectionFlow.tainted];Argument[0].Element;value;df-generated public void AddFieldToList(List input) { input.Add(tainted); } // summary=Models;CollectionFlow;false;ReturnFieldInAList;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;ReturnFieldInAList;();;Argument[this].SyntheticField[Models.CollectionFlow.tainted];ReturnValue.Element;value;df-generated public List ReturnFieldInAList() { return new List { tainted }; } - // summary=Models;CollectionFlow;false;ReturnComplexTypeArray;(System.String[]);;Argument[0].Element;ReturnValue;taint;df-generated + // SPURIOUS-summary=Models;CollectionFlow;false;ReturnComplexTypeArray;(System.String[]);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;ReturnComplexTypeArray;(System.String[]);;Argument[0];ReturnValue;value;df-generated public string[] ReturnComplexTypeArray(string[] a) { return a; } - // summary=Models;CollectionFlow;false;ReturnBulkTypeList;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;taint;df-generated + // SPURIOUS-summary=Models;CollectionFlow;false;ReturnBulkTypeList;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;ReturnBulkTypeList;(System.Collections.Generic.List);;Argument[0];ReturnValue;value;df-generated public List ReturnBulkTypeList(List a) { return a; } - // summary=Models;CollectionFlow;false;ReturnComplexTypeDictionary;(System.Collections.Generic.Dictionary);;Argument[0].Element;ReturnValue;taint;df-generated + // SPURIOUS-summary=Models;CollectionFlow;false;ReturnComplexTypeDictionary;(System.Collections.Generic.Dictionary);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;ReturnComplexTypeDictionary;(System.Collections.Generic.Dictionary);;Argument[0];ReturnValue;value;df-generated public Dictionary ReturnComplexTypeDictionary(Dictionary a) { return a; } - // summary=Models;CollectionFlow;false;ReturnUntypedArray;(System.Array);;Argument[0].Element;ReturnValue;taint;df-generated + // SPURIOUS-summary=Models;CollectionFlow;false;ReturnUntypedArray;(System.Array);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;ReturnUntypedArray;(System.Array);;Argument[0];ReturnValue;value;df-generated public Array ReturnUntypedArray(Array a) { return a; } - // summary=Models;CollectionFlow;false;ReturnUntypedList;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated + // SPURIOUS-summary=Models;CollectionFlow;false;ReturnUntypedList;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;CollectionFlow;false;ReturnUntypedList;(System.Collections.IList);;Argument[0];ReturnValue;value;df-generated public IList ReturnUntypedList(IList a) { return a; @@ -159,19 +179,22 @@ public class IEnumerableFlow { private string tainted; - // summary=Models;IEnumerableFlow;false;ReturnIEnumerable;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated + // SPURIOUS-summary=Models;IEnumerableFlow;false;ReturnIEnumerable;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;IEnumerableFlow;false;ReturnIEnumerable;(System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;value;df-generated public IEnumerable ReturnIEnumerable(IEnumerable input) { return input; } // summary=Models;IEnumerableFlow;false;ReturnIEnumerableElement;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;IEnumerableFlow;false;ReturnIEnumerableElement;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;df-generated public object ReturnIEnumerableElement(IEnumerable input) { return input.First(); } // summary=Models;IEnumerableFlow;false;ReturnFieldInIEnumerable;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;IEnumerableFlow;false;ReturnFieldInIEnumerable;();;Argument[this].SyntheticField[Models.IEnumerableFlow.tainted];ReturnValue.Element;value;df-generated public IEnumerable ReturnFieldInIEnumerable() { return new List { tainted }; @@ -183,42 +206,49 @@ public class GenericFlow private T tainted; // summary=Models;GenericFlow;false;SetGenericField;(T);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=Models;GenericFlow;false;SetGenericField;(T);;Argument[0];Argument[this].SyntheticField[Models.GenericFlow`1.tainted];value;df-generated public void SetGenericField(T t) { tainted = t; } // summary=Models;GenericFlow;false;ReturnGenericField;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;GenericFlow;false;ReturnGenericField;();;Argument[this].SyntheticField[Models.GenericFlow`1.tainted];ReturnValue;value;df-generated public T ReturnGenericField() { return tainted; } // summary=Models;GenericFlow;false;AddFieldToGenericList;(System.Collections.Generic.List);;Argument[this];Argument[0].Element;taint;df-generated + // contentbased-summary=Models;GenericFlow;false;AddFieldToGenericList;(System.Collections.Generic.List);;Argument[this].SyntheticField[Models.GenericFlow`1.tainted];Argument[0].Element;value;df-generated public void AddFieldToGenericList(List input) { input.Add(tainted); } // summary=Models;GenericFlow;false;ReturnFieldInGenericList;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;GenericFlow;false;ReturnFieldInGenericList;();;Argument[this].SyntheticField[Models.GenericFlow`1.tainted];ReturnValue.Element;value;df-generated public List ReturnFieldInGenericList() { return new List { tainted }; } // summary=Models;GenericFlow;false;ReturnGenericParam;(S);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;GenericFlow;false;ReturnGenericParam;(S);;Argument[0];ReturnValue;value;df-generated public S ReturnGenericParam(S input) { return input; } // summary=Models;GenericFlow;false;ReturnGenericElement;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;GenericFlow;false;ReturnGenericElement;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;value;df-generated public S ReturnGenericElement(List input) { return input[0]; } // summary=Models;GenericFlow;false;AddToGenericList;(System.Collections.Generic.List,S);;Argument[1];Argument[0].Element;taint;df-generated + // contentbased-summary=Models;GenericFlow;false;AddToGenericList;(System.Collections.Generic.List,S);;Argument[1];Argument[0].Element;value;df-generated public void AddToGenericList(List input, S data) { input.Add(data); @@ -228,6 +258,7 @@ public class GenericFlow public abstract class BaseClassFlow { // summary=Models;BaseClassFlow;true;ReturnParam;(System.Object);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;BaseClassFlow;true;ReturnParam;(System.Object);;Argument[0];ReturnValue;value;df-generated public virtual object ReturnParam(object input) { return input; @@ -237,6 +268,7 @@ public abstract class BaseClassFlow public class DerivedClass1Flow : BaseClassFlow { // summary=Models;DerivedClass1Flow;false;ReturnParam1;(System.String,System.String);;Argument[1];ReturnValue;taint;df-generated + // contentbased-summary=Models;DerivedClass1Flow;false;ReturnParam1;(System.String,System.String);;Argument[1];ReturnValue;value;df-generated public string ReturnParam1(string input0, string input1) { return input1; @@ -246,12 +278,14 @@ public class DerivedClass1Flow : BaseClassFlow public class DerivedClass2Flow : BaseClassFlow { // summary=Models;BaseClassFlow;true;ReturnParam;(System.Object);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;BaseClassFlow;true;ReturnParam;(System.Object);;Argument[0];ReturnValue;value;df-generated public override object ReturnParam(object input) { return input; } // summary=Models;DerivedClass2Flow;false;ReturnParam0;(System.String,System.Int32);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;DerivedClass2Flow;false;ReturnParam0;(System.String,System.Int32);;Argument[0];ReturnValue;value;df-generated public string ReturnParam0(string input0, int input1) { return input0; @@ -263,6 +297,7 @@ public class OperatorFlow public readonly object Field; // summary=Models;OperatorFlow;false;OperatorFlow;(System.Object);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=Models;OperatorFlow;false;OperatorFlow;(System.Object);;Argument[0];Argument[this].Field[Models.OperatorFlow.Field];value;df-generated public OperatorFlow(object o) { Field = o; @@ -270,6 +305,7 @@ public class OperatorFlow // Flow Summary. // summary=Models;OperatorFlow;false;op_Addition;(Models.OperatorFlow,Models.OperatorFlow);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;OperatorFlow;false;op_Addition;(Models.OperatorFlow,Models.OperatorFlow);;Argument[0];ReturnValue;value;df-generated public static OperatorFlow operator +(OperatorFlow a, OperatorFlow b) { return a; @@ -310,6 +346,7 @@ public class EqualsGetHashCodeNoFlow } // summary=Models;EqualsGetHashCodeNoFlow;false;Equals;(System.String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;EqualsGetHashCodeNoFlow;false;Equals;(System.String);;Argument[0];ReturnValue;value;df-generated public string Equals(string s) { return s; @@ -327,12 +364,14 @@ public class Properties private string tainted; // summary=Models;Properties;false;get_Prop1;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;Properties;false;get_Prop1;();;Argument[this].SyntheticField[Models.Properties.tainted];ReturnValue;value;df-generated public string Prop1 { get { return tainted; } } // summary=Models;Properties;false;set_Prop2;(System.String);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=Models;Properties;false;set_Prop2;(System.String);;Argument[0];Argument[this].SyntheticField[Models.Properties.tainted];value;df-generated public string Prop2 { set { tainted = value; } @@ -513,6 +552,7 @@ public class Inheritance public class AImplBasePublic : BasePublic { // summary=Models;Inheritance+BasePublic;true;Id;(System.String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;Inheritance+BasePublic;true;Id;(System.String);;Argument[0];ReturnValue;value;df-generated public override string Id(string x) { return x; @@ -542,6 +582,7 @@ public class Inheritance public class BImpl : B { // summary=Models;Inheritance+IPublic1;true;Id;(System.String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;Inheritance+IPublic1;true;Id;(System.String);;Argument[0];ReturnValue;value;df-generated public override string Id(string x) { return x; @@ -551,6 +592,7 @@ public class Inheritance private class CImpl : C { // summary=Models;Inheritance+IPublic2;true;Id;(System.String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;Inheritance+IPublic2;true;Id;(System.String);;Argument[0];ReturnValue;value;df-generated public override string Id(string x) { return x; @@ -572,6 +614,7 @@ public class Inheritance private string tainted; // summary=Models;Inheritance+IPublic3;true;get_Prop;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;Inheritance+IPublic3;true;get_Prop;();;Argument[this].SyntheticField[Models.Inheritance+DImpl.tainted];ReturnValue;value;df-generated public override string Prop { get { return tainted; } } } } @@ -586,14 +629,54 @@ public class MemberFlow } // summary=Models;MemberFlow;false;M1;(Models.MemberFlow+C);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;MemberFlow;false;M1;(Models.MemberFlow+C);;Argument[0].Property[Models.MemberFlow+C.Prop];ReturnValue;value;df-generated public string M1(C c) { return c.Prop; } // summary=Models;MemberFlow;false;M2;(Models.MemberFlow+C);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=Models;MemberFlow;false;M2;(Models.MemberFlow+C);;Argument[0].Field[Models.MemberFlow+C.Field];ReturnValue;value;df-generated public string M2(C c) { return c.Field; } } + +public class IDictionaryFlow +{ + // summary=Models;IDictionaryFlow;false;ReturnIDictionaryValue;(System.Collections.Generic.IDictionary,System.Object);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=Models;IDictionaryFlow;false;ReturnIDictionaryValue;(System.Collections.Generic.IDictionary,System.Object);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair`2.Value];ReturnValue;value;df-generated + public object ReturnIDictionaryValue(IDictionary input, object key) + { + return input[key]; + } +} + +public class NestedFieldFlow +{ + public NestedFieldFlow FieldA; + public NestedFieldFlow FieldB; + + // summary=Models;NestedFieldFlow;false;Move;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;NestedFieldFlow;false;Move;();;Argument[this].Field[Models.NestedFieldFlow.FieldA];ReturnValue.Field[Models.NestedFieldFlow.FieldB];value;df-generated + public NestedFieldFlow Move() + { + return new NestedFieldFlow() { FieldB = this.FieldA }; + } + + // summary=Models;NestedFieldFlow;false;MoveNested;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;NestedFieldFlow;false;MoveNested;();;Argument[this].Field[Models.NestedFieldFlow.FieldB].Field[Models.NestedFieldFlow.FieldA];ReturnValue.Field[Models.NestedFieldFlow.FieldA].Field[Models.NestedFieldFlow.FieldB];value;df-generated + public NestedFieldFlow MoveNested() + { + return new NestedFieldFlow() { FieldA = FieldB.Move() }; + } + + // summary=Models;NestedFieldFlow;false;ReverseFields;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=Models;NestedFieldFlow;false;ReverseFields;();;Argument[this].Field[Models.NestedFieldFlow.FieldA].Field[Models.NestedFieldFlow.FieldB];ReturnValue.Field[Models.NestedFieldFlow.FieldA].Field[Models.NestedFieldFlow.FieldB];value;df-generated + public NestedFieldFlow ReverseFields() + { + var x = new NestedFieldFlow() { FieldB = this.FieldA.FieldB }; + return new NestedFieldFlow() { FieldA = x }; + } +} diff --git a/docs/codeql/_templates/layout.html b/docs/codeql/_templates/layout.html index df9c9a51f26..779c99cfe9f 100644 --- a/docs/codeql/_templates/layout.html +++ b/docs/codeql/_templates/layout.html @@ -1,7 +1,7 @@ {# Override alabaster/layout.html template to customize the template used to generate the CodeQL documentation. - + The classes used in this template are provided by the GitHub Primer https://primer.style/css/. The CSS for the primer can be found at https://unpkg.com/@primer/css/dist/primer.css @@ -59,37 +59,34 @@ CodeQL resources - @@ -165,12 +162,12 @@
      -
    • © +
    • © GitHub, Inc.
    • Terms
    • -
    • Privacy
    diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp-new.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp-new.rst new file mode 100644 index 00000000000..a20f5bcdd05 --- /dev/null +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp-new.rst @@ -0,0 +1,9 @@ +.. _analyzing-data-flow-in-cpp-new: + +:orphan: +:nosearch: + +Analyzing data flow in C and C++ +================================ + +This article has moved to a new location: https://codeql.github.com/docs/codeql-language-guides/analyzing-data-flow-in-cpp/. diff --git a/docs/codeql/codeql-language-guides/codeql-for-cpp.rst b/docs/codeql/codeql-language-guides/codeql-for-cpp.rst index 40d7fba1993..00727647545 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-cpp.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-cpp.rst @@ -28,6 +28,10 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat - :doc:`CodeQL library for C and C++ `: When analyzing C or C++ code, you can use the large collection of classes in the CodeQL library for C and C++. +- `CodeQL CTF: U-Boot Challenge `__: Follow the steps that members of GitHub Security Lab went through to find 13 CWE vulnerabilities in U-Boot. + +- `CodeQL CTF: SEGV Hunt `__: Follow the steps that members of GitHub Security Lab went through to find unsafe uses of ``alloca`` in the GNU C Library (glibc). + - :doc:`Functions in C and C++ `: You can use CodeQL to explore functions in C and C++ code. - :doc:`Expressions, types, and statements in C and C++ `: You can use CodeQL to explore expressions, types, and statements in C and C++ code to find, for example, incorrect assignments. diff --git a/docs/codeql/codeql-language-guides/codeql-for-go.rst b/docs/codeql/codeql-language-guides/codeql-for-go.rst index 0eaefbb5922..360ff6bb82f 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-go.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-go.rst @@ -17,7 +17,9 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat - :doc:`CodeQL library for Go `: When you're analyzing a Go program, you can make use of the large collection of classes in the CodeQL library for Go. +- `CodeQL CTF: Go and don't return `__: Follow the steps that members of GitHub Security Lab went through to find a high severity vulnerability in MinIO, an Amazon S3-compatible object store. + - :doc:`Abstract syntax tree classes for working with Go programs `: CodeQL has a large selection of classes for representing the abstract syntax tree of Go programs. -- :doc:`Modeling data flow in Go libraries `: When analyzing a Go program, CodeQL does not examine the source code for external packages. +- :doc:`Modeling data flow in Go libraries `: When analyzing a Go program, CodeQL does not examine the source code for external packages. To track the flow of untrusted data through a library, you can create a model of the library. diff --git a/docs/codeql/codeql-language-guides/codeql-for-java.rst b/docs/codeql/codeql-language-guides/codeql-for-java.rst index f2bf306519b..4efcc4d6789 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-java.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-java.rst @@ -28,7 +28,9 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat - :doc:`CodeQL library for Java and Kotlin `: When analyzing Java/Kotlin code, you can use the large collection of classes in the CodeQL library for Java/Kotlin. -- :doc:`Analyzing data flow in Java and Kotlin `: You can use CodeQL to track the flow of data through a Java/Kotlin program to its use. +- :doc:`Analyzing data flow in Java and Kotlin `: You can use CodeQL to track the flow of data through a Java/Kotlin program to its use. + +- `CodeQL CTF: CodeQL and Chill `__: Follow the steps that members of GitHub Security Lab went through to track the flow of tainted data from user-controlled bean properties to custom error messages, and identify the known injection vulnerabilities. - :doc:`Java and Kotlin types `: You can use CodeQL to find out information about data types used in Java/Kotlin code. This allows you to write queries to identify specific type-related issues. diff --git a/docs/codeql/codeql-language-guides/codeql-for-javascript.rst b/docs/codeql/codeql-language-guides/codeql-for-javascript.rst index 9c4073bce1b..35df0b91752 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-javascript.rst @@ -25,6 +25,8 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat - :doc:`CodeQL library for TypeScript `: When you're analyzing a TypeScript program, you can make use of the large collection of classes in the CodeQL library for TypeScript. +- `CodeQL CTF: XSS-unsafe jQuery plugins `__: Follow the steps that members of GitHub Security Lab went through to find cross-site scripting vulnerabilities in Bootstrap's jQuery plugins. + - :doc:`Analyzing data flow in JavaScript and TypeScript `: This topic describes how data flow analysis is implemented in the CodeQL libraries for JavaScript/TypeScript and includes examples to help you write your own data flow queries. - :doc:`Using flow labels for precise data flow analysis `: You can associate flow labels with each value tracked by the flow analysis to determine whether the flow contains potential vulnerabilities. diff --git a/docs/codeql/codeql-overview/about-codeql.rst b/docs/codeql/codeql-overview/about-codeql.rst index eccc81c8754..7e93eeb8731 100644 --- a/docs/codeql/codeql-overview/about-codeql.rst +++ b/docs/codeql/codeql-overview/about-codeql.rst @@ -2,18 +2,33 @@ .. _about-codeql: +.. meta:: + :description: Introduction to CodeQL, a language and toolchain for code analysis. + :keywords: CodeQL, code analysis, CodeQL analysis, security vulnerabilities, variant analysis, resources, tutorials, interactive training, GitHub Security Lab, security researchers, CodeQL databases + About CodeQL ============ -CodeQL is the analysis engine used by developers to automate security checks, and by -security researchers to perform variant analysis. +CodeQL is a language and toolchain for code analysis. It is designed to allow security researchers to scale their knowledge of a single vulnerability to identify variants of that vulnerability across a wide range of codebases. It is also designed to allow developers to automate security checks and integrate them into their development workflows. -In CodeQL, code is treated like data. Security vulnerabilities, bugs, -and other errors are modeled as queries that can be executed against databases -extracted from code. You can run the standard CodeQL queries, written by GitHub -researchers and community contributors, or write your own to use in custom -analyses. Queries that find potential bugs highlight the result directly in the -source file. +Resources for learning CodeQL +----------------------------- + +- **CodeQL docs site:** contains information on the CodeQL language and libraries, with tutorials and guides to help you learn how to write your own queries. + + - :doc:`CodeQL queries <../writing-codeql-queries/codeql-queries>`: A general, language-neutral overview of the key components of a query. + + - :doc:`QL tutorials <../writing-codeql-queries/ql-tutorials>`: Solve puzzles to learn the basics of QL before you analyze code with CodeQL. The tutorials teach you how to write queries and introduce you to key logic concepts along the way. + + - :doc:`CodeQL language guides <../codeql-language-guides/index>`: Guides to the CodeQL libraries for each language, including the classes and predicates that are available for use in queries, with worked examples. + +- **GitHub Security Lab:** is GitHub's own security research team. They've created a range of resources to help you learn how to use CodeQL to find security vulnerabilities in real-world codebases. + + - `Secure code game `__: A series of interactive sessions that guide you from finding insecure code patterns manually, through to using CodeQL to find insecure code patterns automatically. + + - `Security Lab CTF `__: A series of Capture the Flag (CTF) challenges that are designed to help you learn how to use CodeQL to find security vulnerabilities in real-world codebases. + + - `Security Lab blog `__: A series of blog posts that describe how CodeQL is used by security researchers to find security vulnerabilities in real-world codebases. About variant analysis ---------------------- @@ -30,6 +45,8 @@ queries. Then, develop or iterate over the query to automatically find logical variants of the same bug that could be missed using traditional manual techniques. +When you have a query that finds variants of a vulnerability, you can use multi-repository variant analysis to run that query across a large number of codebases, and identify all of the places where that vulnerability exists. For more information, see `Running CodeQL queries at scale with multi-repository variant analysis `__ in the GitHub docs. + CodeQL analysis --------------- @@ -39,11 +56,13 @@ CodeQL analysis consists of three steps: #. Running CodeQL queries against the database #. Interpreting the query results +For information on the CodeQL toolchain and on running CodeQL to analyze a codebase, see the `CodeQL CLI `__, `CodeQL for Visual Studio Code `__, and `About code scanning with CodeQL `__ in the GitHub docs. + Database creation ~~~~~~~~~~~~~~~~~ To create a database, CodeQL first extracts a single relational representation -of each source file in the codebase. +of each source file in the codebase. For compiled languages, extraction works by monitoring the normal build process. Each time a compiler is invoked to process a source file, a copy of that file is @@ -52,7 +71,7 @@ syntactic data about the abstract syntax tree and semantic data about name binding and type information. For interpreted languages, the extractor runs directly on the source code, -resolving dependencies to give an accurate representation of the codebase. +resolving dependencies to give an accurate representation of the codebase. There is one :ref:`extractor ` for each language supported by CodeQL to ensure that the extraction process is as accurate as possible. For @@ -72,7 +91,7 @@ against it. CodeQL queries are written in a specially-designed object-oriented query language called QL. You can run the queries checked out from the CodeQL repo (or custom queries that you've written yourself) using the `CodeQL for VS Code extension `__ or the `CodeQL CLI -`__. For more information about queries, see ":ref:`About CodeQL queries `." +`__. For more information about queries, see ":ref:`About CodeQL queries `." .. _interpret-query-results: @@ -95,7 +114,7 @@ code. Following interpretation, results are output for code review and triaging. In CodeQL for Visual Studio Code, interpreted query results are automatically displayed in the source code. Results generated by the CodeQL CLI can be output -into a number of different formats for use with different tools. +into a number of different formats for use with different tools. About CodeQL databases @@ -104,7 +123,7 @@ About CodeQL databases CodeQL databases contain queryable data extracted from a codebase, for a single language at a particular point in time. The database contains a full, hierarchical representation of the code, including a representation of the -abstract syntax tree, the data flow graph, and the control flow graph. +abstract syntax tree, the data flow graph, and the control flow graph. Each language has its own unique database schema that defines the relations used to create a database. The schema provides an interface between the initial @@ -114,13 +133,13 @@ every language construct. For each language, the CodeQL libraries define classes to provide a layer of abstraction over the database tables. This provides an object-oriented view of -the data which makes it easier to write queries. +the data which makes it easier to write queries. For example, in a CodeQL database for a Java program, two key tables are: - The ``expressions`` table containing a row for every single expression in the - source code that was analyzed during the build process. -- The ``statements`` table containing a row for every single statement in the + source code that was analyzed during the build process. +- The ``statements`` table containing a row for every single statement in the source code that was analyzed during the build process. The CodeQL library defines classes to provide a layer of abstraction over each diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.0.rst index 9142a12edfc..96826b25608 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.0.rst @@ -75,8 +75,8 @@ C# * The syntax of the (source|sink|summary)model CSV format has been changed slightly for Java and C#. A new column called :code:`provenance` has been introduced, where the allowed values are :code:`manual` and :code:`generated`. The value used to indicate whether a model as been written by hand (:code:`manual`) or create by the CSV model generator (:code:`generated`). * All auto implemented public properties with public getters and setters on ASP.NET Core remote flow sources are now also considered to be tainted. -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/log-injection` now reports problems at the source (user-controlled data) instead of at the ultimate logging call. This was changed because user functions that wrap the ultimate logging call could result in most alerts being reported in an uninformative location. @@ -134,8 +134,8 @@ JavaScript/TypeScript Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a flow step for :code:`String.valueOf` calls on tainted :code:`android.text.Editable` objects. @@ -162,8 +162,8 @@ Golang * The :code:`BarrierGuard` class has been deprecated. Such barriers and sanitizers can now instead be created using the new :code:`BarrierGuard` parameterized module. -Java -"""" +Java/Kotlin +""""""""""" * The :code:`BarrierGuard` class has been deprecated. Such barriers and sanitizers can now instead be created using the new :code:`BarrierGuard` parameterized module. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.1.rst index 08a42da5c20..b059afcfc9e 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.1.rst @@ -40,8 +40,8 @@ C# * Contextual queries and the query libraries they depend on have been moved to the :code:`codeql/csharp-all` package. -Java -"""" +Java/Kotlin +""""""""""" * Contextual queries and the query libraries they depend on have been moved to the :code:`codeql/java-all` package. @@ -63,8 +63,8 @@ Ruby New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * A new query "Improper verification of intent by broadcast receiver" (:code:`java/improper-intent-verification`) has been added. This query finds instances of Android :code:`BroadcastReceiver`\ s that don't verify the action string of received intents when registered to receive system intents. @@ -80,8 +80,8 @@ C/C++ * :code:`AnalysedExpr::isNullCheck` and :code:`AnalysedExpr::isValidCheck` have been updated to handle variable accesses on the left-hand side of the C++ logical "and", and variable declarations in conditions. -Java -"""" +Java/Kotlin +""""""""""" * Added data-flow models for :code:`java.util.Properties`. Additional results may be found where relevant data is stored in and then retrieved from a :code:`Properties` instance. * Added :code:`Modifier.isInline()`. @@ -126,7 +126,7 @@ Python New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added an :code:`ErrorType` class. An instance of this class will be used if an extractor is unable to extract a type, or if an up/downgrade script is unable to provide a type. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.2.rst index e083daa616e..37e094f7495 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.2.rst @@ -84,8 +84,8 @@ C/C++ Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The JUnit5 version of :code:`AssertNotNull` is now recognized, which removes related false positives in the nullness queries. * Added data flow models for :code:`java.util.Scanner`. @@ -99,7 +99,7 @@ Ruby New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The QL predicate :code:`Expr::getUnderlyingExpr` has been added. It can be used to look through casts and not-null expressions and obtain the underlying expression to which they apply. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.3.rst index a8c9211f3fc..75d3183d4dd 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.3.rst @@ -37,8 +37,8 @@ Query Packs Major Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/sensitive-log` has been improved to no longer report results that are effectively duplicates due to one source flowing to another source. @@ -55,16 +55,16 @@ Golang * The query :code:`go/path-injection` no longer considers user-controlled numeric or boolean-typed data as potentially dangerous. -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/path-injection` now recognises vulnerable APIs defined using the :code:`SinkModelCsv` class with the :code:`create-file` type. Out of the box this includes Apache Commons-IO functions, as well as any user-defined sinks. New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * A new query "Android :code:`WebView` that accepts all certificates" (:code:`java/improper-webview-certificate-validation`) has been added. This query finds implementations of :code:`WebViewClient`\ s that accept all certificates in the case of an SSL error. @@ -82,8 +82,8 @@ C/C++ Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Improved analysis of the Android class :code:`AsyncTask` so that data can properly flow through its methods according to the life-cycle steps described here: https://developer.android.com/reference/android/os/AsyncTask#the-4-steps. * Added a data-flow model for the :code:`setProperty` method of :code:`java.util.Properties`. Additional results may be found where relevant data is stored in and then retrieved from a :code:`Properties` instance. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.4.rst index b1436a7bf0a..c6d9c4c7805 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.10.4.rst @@ -40,8 +40,8 @@ C# * Added better support for the SQLite framework in the SQL injection query. * File streams are now considered stored flow sources. For example, reading query elements from a file can lead to a Second Order SQL injection alert. -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/static-initialization-vector` no longer requires a :code:`Cipher` object to be initialized with :code:`ENCRYPT_MODE` to be considered a valid sink. Also, several new sanitizers were added. * Improved sanitizers for :code:`java/sensitive-log`, which removes some false positives and improves performance a bit. @@ -49,8 +49,8 @@ Java New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new query, :code:`java/android/implicitly-exported-component`, to detect if components are implicitly exported in the Android manifest. * A new query "Use of RSA algorithm without OAEP" (:code:`java/rsa-without-oaep`) has been added. This query finds uses of RSA encryption that don't use the OAEP scheme. @@ -84,8 +84,8 @@ Ruby Query Metadata Changes ~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The queries :code:`java/redos` and :code:`java/polynomial-redos` now have a tag for CWE-1333. @@ -121,8 +121,8 @@ Golang * Fixed data-flow to captured variable references. * We now assume that if a channel-typed field is only referred to twice in the user codebase, once in a send operation and once in a receive, then data flows from the send to the receive statement. This enables finding some cross-goroutine flow. -Java -"""" +Java/Kotlin +""""""""""" * Added new flow steps for the classes :code:`java.nio.file.Path` and :code:`java.nio.file.Paths`. * The class :code:`AndroidFragment` now also models the Android Jetpack version of the :code:`Fragment` class (:code:`androidx.fragment.app.Fragment`). @@ -161,8 +161,8 @@ C# * Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. -Java -"""" +Java/Kotlin +""""""""""" * Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. @@ -204,8 +204,8 @@ C/C++ * Added support for getting the link targets of global and namespace variables. * Added a :code:`BlockAssignExpr` class, which models a :code:`memcpy`\ -like operation used in compiler generated copy/move constructors and assignment operations. -Java -"""" +Java/Kotlin +""""""""""" * Added a new predicate, :code:`requiresPermissions`, in the :code:`AndroidComponentXmlElement` and :code:`AndroidApplicationXmlElement` classes to detect if the element has explicitly set a value for its :code:`android:permission` attribute. * Added a new predicate, :code:`hasAnIntentFilterElement`, in the :code:`AndroidComponentXmlElement` class to detect if a component contains an intent filter element. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.0.rst index e02d1d53a91..a9b32080979 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.0.rst @@ -60,8 +60,8 @@ Golang * The alert message of many queries have been changed to make the message consistent with other languages. -Java -"""" +Java/Kotlin +""""""""""" * The Java extractor now populates the :code:`Method` relating to a :code:`MethodAccess` consistently for calls using an explicit and implicit :code:`this` qualifier. Previously if the method :code:`foo` was inherited from a specialised generic type :code:`ParentType`, then an explicit call :code:`this.foo()` would yield a :code:`MethodAccess` whose :code:`getMethod()` accessor returned the bound method :code:`ParentType.foo`, whereas an implicitly-qualified :code:`foo()` :code:`MethodAccess`\ 's :code:`getMethod()` would return the unbound method :code:`ParentType.foo`. Now both scenarios produce a bound method. This means that all data-flow queries may return more results where a relevant path transits a call to such an implicitly-qualified call to a member method with a bound generic type, while queries that inspect the result of :code:`MethodAccess.getMethod()` may need to tolerate bound generic methods in more circumstances. The queries :code:`java/iterator-remove-failure`, :code:`java/non-static-nested-class`, :code:`java/internal-representation-exposure`, :code:`java/subtle-inherited-call` and :code:`java/deprecated-call` have been amended to properly handle calls to bound generic methods, and in some instances may now produce more results in the explicit-\ :code:`this` case as well. * Added taint model for arguments of :code:`java.net.URI` constructors to the queries :code:`java/path-injection` and :code:`java/path-injection-local`. @@ -94,8 +94,8 @@ C/C++ * Added a new medium-precision query, :code:`cpp/missing-check-scanf`, which detects :code:`scanf` output variables that are used without a proper return-value check to see that they were actually written. A variation of this query was originally contributed as an `experimental query by @ihsinme `__. -Java -"""" +Java/Kotlin +""""""""""" * The query "Server-side template injection" (:code:`java/server-side-template-injection`) has been promoted from experimental to the main query pack. This query was originally `submitted as an experimental query by @porcupineyhairs `__. * Added a new query, :code:`java/android/backup-enabled`, to detect if Android applications allow backups. @@ -113,8 +113,8 @@ Golang * Added the :code:`security-severity` tag and CWE tag to the :code:`go/insecure-hostkeycallback` query. -Java -"""" +Java/Kotlin +""""""""""" * Removed the :code:`@security-severity` tag from several queries not in the :code:`Security/` folder that also had missing :code:`security` tags. @@ -139,8 +139,8 @@ C# * Fixed an issue in the taint tracking analysis where implicit reads were not allowed by default in sinks or additional taint steps that used flow states. -Java -"""" +Java/Kotlin +""""""""""" * Fixed an issue in the taint tracking analysis where implicit reads were not allowed by default in sinks or additional taint steps that used flow states. @@ -157,8 +157,8 @@ Ruby Breaking Changes ~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The :code:`Member.getQualifiedName()` predicate result now includes the qualified name of the declaring type. @@ -229,8 +229,8 @@ Ruby Major Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The virtual dispatch relation used in data flow now favors summary models over source code for dispatch to interface methods from :code:`java.util` unless there is evidence that a specific source implementation is reachable. This should provide increased precision for any projects that include, for example, custom :code:`List` or :code:`Map` implementations. @@ -242,8 +242,8 @@ JavaScript/TypeScript Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added new sinks to the query :code:`java/android/implicit-pendingintents` to take into account the classes :code:`androidx.core.app.NotificationManagerCompat` and :code:`androidx.core.app.AlarmManagerCompat`. * Added new flow steps for :code:`androidx.core.app.NotificationCompat` and its inner classes. @@ -300,8 +300,8 @@ Golang * Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. -Java -"""" +Java/Kotlin +""""""""""" * The predicate :code:`Annotation.getAValue()` has been deprecated because it might lead to obtaining the value of the wrong annotation element by accident. :code:`getValue(string)` (or one of the value type specific predicates) should be used to explicitly specify the name of the annotation element. * The predicate :code:`Annotation.getAValue(string)` has been renamed to :code:`getAnArrayValue(string)`. @@ -335,8 +335,8 @@ C/C++ * Added subclasses of :code:`BuiltInOperations` for :code:`__is_same`, :code:`__is_function`, :code:`__is_layout_compatible`, :code:`__is_pointer_interconvertible_base_of`, :code:`__is_array`, :code:`__array_rank`, :code:`__array_extent`, :code:`__is_arithmetic`, :code:`__is_complete_type`, :code:`__is_compound`, :code:`__is_const`, :code:`__is_floating_point`, :code:`__is_fundamental`, :code:`__is_integral`, :code:`__is_lvalue_reference`, :code:`__is_member_function_pointer`, :code:`__is_member_object_pointer`, :code:`__is_member_pointer`, :code:`__is_object`, :code:`__is_pointer`, :code:`__is_reference`, :code:`__is_rvalue_reference`, :code:`__is_scalar`, :code:`__is_signed`, :code:`__is_unsigned`, :code:`__is_void`, and :code:`__is_volatile`. -Java -"""" +Java/Kotlin +""""""""""" * Added a new predicate, :code:`allowsBackup`, in the :code:`AndroidApplicationXmlElement` class. This predicate detects if the application element does not disable the :code:`android:allowBackup` attribute. * The predicates of the CodeQL class :code:`Annotation` have been improved: diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.1.rst index f46576810cb..d7aff79a078 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.1.rst @@ -63,8 +63,8 @@ C# * The alert message of many queries have been changed to better follow the style guide and make the message consistent with other languages. -Java -"""" +Java/Kotlin +""""""""""" * The alert message of many queries have been changed to better follow the style guide and make the message consistent with other languages. * :code:`PathSanitizer.qll` has been promoted from experimental to the main query pack. This sanitizer was originally `submitted as part of an experimental query by @luchua-bc `__. @@ -81,8 +81,8 @@ Ruby New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new query, :code:`java/android/webview-debugging-enabled`, to detect instances of WebView debugging being enabled in production builds. @@ -103,8 +103,8 @@ Golang * Added support for :code:`BeegoInput.RequestBody` as a source of untrusted data. -Java -"""" +Java/Kotlin +""""""""""" * Added external flow sources for the intents received in exported Android services. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.2.rst index 1156c88840f..83083a9c3a9 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.2.rst @@ -114,8 +114,8 @@ C/C++ * Added a new medium-precision query, :code:`cpp/comma-before-misleading-indentation`, which detects instances of whitespace that have readability issues. -Java -"""" +Java/Kotlin +""""""""""" * Added a new query, :code:`java/android/incomplete-provider-permissions`, to detect if an Android ContentProvider is not protected with a correct set of permissions. * A new query "Uncontrolled data used in content resolution" (:code:`java/androd/unsafe-content-uri-resolution`) has been added. This query finds paths from user-provided data to URI resolution operations in Android's :code:`ContentResolver` without previous validation or sanitization. @@ -132,8 +132,8 @@ Language Libraries Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added support for common patterns involving :code:`Stream.collect` and common collectors like :code:`Collectors.toList()`. * The class :code:`TypeVariable` now also extends :code:`Modifiable`. @@ -161,15 +161,15 @@ Ruby Deprecated APIs ~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Deprecated :code:`ContextStartActivityMethod`. Use :code:`StartActivityMethod` instead. New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new predicate, :code:`hasIncompletePermissions`, in the :code:`AndroidProviderXmlElement` class. This predicate detects if a provider element does not provide both read and write permissions. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.4.rst index 24ebf7200be..ab22a245583 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.4.rst @@ -68,8 +68,8 @@ Ruby New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/insufficient-key-size` has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally `submitted as an experimental query by @luchua-bc `__. * Added a new query, :code:`java/android/sensitive-keyboard-cache`, to detect instances of sensitive information possibly being saved to the Android keyboard cache. @@ -98,8 +98,8 @@ C# * The :code:`[Summary|Sink|Source]ModelCsv` classes have been deprecated and Models as Data models are defined as data extensions instead. -Java -"""" +Java/Kotlin +""""""""""" * The ReDoS libraries in :code:`semmle.code.java.security.regexp` has been moved to a shared pack inside the :code:`shared/` folder, and the previous location has been deprecated. * Added data flow summaries for tainted Android intents sent to activities via :code:`Activity.startActivities`. @@ -125,8 +125,8 @@ Ruby New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Kotlin support is now in beta. This means that Java analyses will also include Kotlin code by default. Kotlin support can be disabled by setting :code:`CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN` to :code:`true` in the environment. * The new :code:`string Compilation.getInfo(string)` predicate provides access to some information about compilations. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.6.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.6.rst index 91ba8be4444..cc4dabd21ac 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.6.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.11.6.rst @@ -38,7 +38,7 @@ Query Packs Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Kotlin extraction will now fail if the Kotlin version in use is at least 1.7.30. This is to ensure using an as-yet-unsupported version is noticable, rather than silently failing to extract Kotlin code and therefore producing false-negative results. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst index a9092f71f18..0b7c47773d6 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst @@ -89,8 +89,8 @@ Golang * The :code:`AlertSuppression.ql` query has been updated to support the new :code:`// codeql[query-id]` supression comments. These comments can be used to suppress an alert and must be placed on a blank line before the alert. In addition the legacy :code:`// lgtm` and :code:`// lgtm[query-id]` comments can now also be placed on the line before an alert. -Java -"""" +Java/Kotlin +""""""""""" * The :code:`AlertSuppression.ql` query has been updated to support the new :code:`// codeql[query-id]` supression comments. These comments can be used to suppress an alert and must be placed on a blank line before the alert. In addition the legacy :code:`// lgtm` and :code:`// lgtm[query-id]` comments can now also be placed on the line before an alert. * The extensible predicates for Models as Data have been renamed (the :code:`ext` prefix has been removed). As an example, :code:`extSummaryModel` has been renamed to :code:`summaryModel`. @@ -125,8 +125,8 @@ C# * Added a new query, :code:`csharp/telemetry/supported-external-api`, to detect supported 3rd party APIs used in a codebase. -Java -"""" +Java/Kotlin +""""""""""" * Added a new query, :code:`java/summary/generated-vs-manual-coverage`, to expose metrics for the number of API endpoints covered by generated versus manual MaD models. * Added a new query, :code:`java/telemetry/supported-external-api`, to detect supported 3rd party APIs used in a codebase. @@ -152,8 +152,8 @@ Golang * Fixed an issue in the taint tracking analysis where implicit reads were not allowed by default in sinks or additional taint steps that used flow states. -Java -"""" +Java/Kotlin +""""""""""" * We now correctly handle empty block comments, like :code:`/**/`. Previously these could be mistaken for Javadoc comments and led to attribution of Javadoc tags to the wrong declaration. @@ -230,8 +230,8 @@ Golang * Queries that care about SQL, such as :code:`go/sql-injection`, now recognise SQL-consuming functions belonging to the :code:`gorqlite` and :code:`GoFrame` packages. * :code:`rsync` has been added to the list of commands which may evaluate its parameters as a shell command. -Java -"""" +Java/Kotlin +""""""""""" * Added more dataflow models for frequently-used JDK APIs. * The extraction of Kotlin extension methods has been improved when default parameter values are present. The dispatch and extension receiver parameters are extracted in the correct order. The :code:`ExtensionMethod::getExtensionReceiverParameterIndex` predicate has been introduced to facilitate getting the correct extension parameter index. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.1.rst index 077673b28a8..c0dd4057e9e 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.1.rst @@ -41,8 +41,8 @@ Golang * Replacing "\r" or "\n" using the functions :code:`strings.ReplaceAll`, :code:`strings.Replace`, :code:`strings.Replacer.Replace` and :code:`strings.Replacer.WriteString` has been added as a sanitizer for the queries "Log entries created from user input". * The functions :code:`strings.Replacer.Replace` and :code:`strings.Replacer.WriteString` have been added as sanitizers for the query "Potentially unsafe quoting". -Java -"""" +Java/Kotlin +""""""""""" * The name, description and alert message for the query :code:`java/concatenated-sql-query` have been altered to emphasize that the query flags the use of string concatenation to construct SQL queries, not the lack of appropriate escaping. The query's files have been renamed from :code:`SqlUnescaped.ql` and :code:`SqlUnescapedLib.qll` to :code:`SqlConcatenated.ql` and :code:`SqlConcatenatedLib.qll` respectively; in the unlikely event your custom configuration or queries refer to either of these files by name, those references will need to be adjusted. The query id remains :code:`java/concatenated-sql-query`, so alerts should not be re-raised as a result of this change. @@ -54,8 +54,8 @@ Ruby New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new query :code:`java/android/websettings-allow-content-access` to detect Android WebViews which do not disable access to :code:`content://` urls. @@ -88,8 +88,8 @@ C# * C# 11: Added support for the unsigned right shift :code:`>>>` and unsigned right shift assignment :code:`>>>=` operators. * Query id's have been aligned such that they are prefixed with :code:`cs` instead of :code:`csharp`. -Java -"""" +Java/Kotlin +""""""""""" * Added sink models for the constructors of :code:`org.springframework.jdbc.object.MappingSqlQuery` and :code:`org.springframework.jdbc.object.MappingSqlQueryWithParameters`. * Added more dataflow models for frequently-used JDK APIs. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.2.rst index c420b0facd8..22df6d46a06 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.2.rst @@ -39,8 +39,8 @@ Query Packs New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new query, :code:`java/android/sensitive-result-receiver`, to find instances of sensitive data being leaked to an untrusted :code:`ResultReceiver`. @@ -70,8 +70,8 @@ C# * C# 11: Added extractor support for :code:`ref` fields in :code:`ref struct` declarations. -Java -"""" +Java/Kotlin +""""""""""" * Added sink models for the :code:`createQuery`, :code:`createNativeQuery`, and :code:`createSQLQuery` methods of the :code:`org.hibernate.query.QueryProducer` interface. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.3.rst index 3aa89e03406..f3258301786 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.3.rst @@ -35,8 +35,8 @@ Query Packs Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The :code:`java/index-out-of-bounds` query has improved its handling of arrays of constant length, and may report additional results in those cases. @@ -53,8 +53,8 @@ Golang * Added a new query, :code:`go/unhandled-writable-file-close`, to detect instances where writable file handles are closed without appropriate checks for errors. -Java -"""" +Java/Kotlin +""""""""""" * Added a new query, :code:`java/xxe-local`, which is a version of the XXE query that uses local sources (for example, reads from a local file). @@ -96,8 +96,8 @@ Golang * Support for the Twirp framework has been added. -Java -"""" +Java/Kotlin +""""""""""" * Removed the first argument of :code:`java.nio.file.Files#createTempDirectory(String,FileAttribute[])` as a "create-file" sink. * Added the first argument of :code:`java.nio.file.Files#copy` as a "read-file" sink for the :code:`java/path-injection` query. @@ -126,7 +126,7 @@ Golang * Go 1.20 is now supported. The extractor now functions as expected when Go 1.20 is installed; the definition of :code:`implementsComparable` has been updated according to Go 1.20's new, more-liberal rules; and taint flow models have been added for relevant, new standard-library functions. -Java -"""" +Java/Kotlin +""""""""""" * Kotlin versions up to 1.8.20 are now supported. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.4.rst index 968b17ad5a8..8545a2f77ca 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.4.rst @@ -99,8 +99,8 @@ C# * C# 11: Added extractor support for :code:`required` fields and properties. * C# 11: Added library support for :code:`checked` operators. -Java -"""" +Java/Kotlin +""""""""""" * Added new sinks for :code:`java/hardcoded-credential-api-call` to identify the use of hardcoded secrets in the creation and verification of JWT tokens using :code:`com.auth0.jwt`. These sinks are from `an experimental query submitted by @luchua `__. * The Java extractor now supports builds against JDK 20. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.5.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.5.rst index d0d86f33a9a..5a0c6ae4f92 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.5.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.5.rst @@ -59,8 +59,8 @@ C/C++ New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new query, :code:`java/android/arbitrary-apk-installation`, to detect installation of APKs from untrusted sources. @@ -110,8 +110,8 @@ Golang * The main data flow and taint tracking APIs have been changed. The old APIs remain in place for now and translate to the new through a backwards-compatible wrapper. If multiple configurations are in scope simultaneously, then this may affect results slightly. The new API is quite similar to the old, but makes use of a configuration module instead of a configuration class. -Java -"""" +Java/Kotlin +""""""""""" * Removed low-confidence call edges to known neutral call targets from the call graph used in data flow analysis. This includes, for example, custom :code:`List.contains` implementations when the best inferrable type at the call site is simply :code:`List`. * Added more sink and summary dataflow models for the following packages: @@ -160,8 +160,8 @@ C# * Deleted the deprecated :code:`OverridableMethod` and :code:`OverridableAccessor` classes. * The :code:`unsafe` predicate for :code:`Modifiable` has been extended to cover delegate return types and identify pointer-like types at any nest level. This is relevant for :code:`unsafe` declarations extracted from assemblies. -Java -"""" +Java/Kotlin +""""""""""" * Deleted the deprecated :code:`getPath` and :code:`getFolder` predicates from the :code:`XmlFile` class. * Deleted the deprecated :code:`getRepresentedString` predicate from the :code:`StringLiteral` class. @@ -222,8 +222,8 @@ Golang * Added support for merging two :code:`PathGraph`\ s via disjoint union to allow results from multiple data flow computations in a single :code:`path-problem` query. -Java -"""" +Java/Kotlin +""""""""""" * Added support for merging two :code:`PathGraph`\ s via disjoint union to allow results from multiple data flow computations in a single :code:`path-problem` query. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst index 748e2ff3b64..046e0f548ca 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst @@ -126,8 +126,8 @@ C/C++ * The query :code:`cpp/redundant-null-check-simple` has been promoted to Code Scanning. The query finds cases where a pointer is compared to null after it has already been dereferenced. Such comparisons likely indicate a bug at the place where the pointer is dereferenced, or where the pointer is compared to null. -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/insecure-ldap-auth` has been promoted from experimental to the main query pack. This query detects transmission of cleartext credentials in LDAP authentication. Insecure LDAP authentication causes sensitive information to be vulnerable to remote attackers. This query was originally `submitted as an experimental query by @luchua-bc `__ @@ -157,8 +157,8 @@ Golang * Fixed some accidental predicate visibility in the backwards-compatible wrapper for data flow configurations. In particular :code:`DataFlow::hasFlowPath`, :code:`DataFlow::hasFlow`, :code:`DataFlow::hasFlowTo`, and :code:`DataFlow::hasFlowToExpr` were accidentally exposed in a single version. -Java -"""" +Java/Kotlin +""""""""""" * Fixed some accidental predicate visibility in the backwards-compatible wrapper for data flow configurations. In particular :code:`DataFlow::hasFlowPath`, :code:`DataFlow::hasFlow`, :code:`DataFlow::hasFlowTo`, and :code:`DataFlow::hasFlowToExpr` were accidentally exposed in a single version. @@ -196,8 +196,8 @@ C/C++ * The :code:`BufferAccess` library (:code:`semmle.code.cpp.security.BufferAccess`) no longer matches buffer accesses inside unevaluated contexts (such as inside :code:`sizeof` or :code:`decltype` expressions). As a result, queries using this library may see fewer false positives. -Java -"""" +Java/Kotlin +""""""""""" * Fixed a bug in the regular expression used to identify sensitive information in :code:`SensitiveActions::getCommonSensitiveInfoRegex`. This may affect the results of the queries :code:`java/android/sensitive-communication`, :code:`java/android/sensitive-keyboard-cache`, and :code:`java/sensitive-log`. * Added a summary model for the :code:`java.lang.UnsupportedOperationException(String)` constructor. @@ -291,8 +291,8 @@ Golang * The recently introduced new data flow and taint tracking APIs have had a number of module and predicate renamings. The old APIs remain in place for now. -Java -"""" +Java/Kotlin +""""""""""" * The :code:`execTainted` predicate in :code:`CommandLineQuery.qll` has been deprecated and replaced with the predicate :code:`execIsTainted`. * The recently introduced new data flow and taint tracking APIs have had a number of module and predicate renamings. The old APIs remain in place for now. @@ -316,7 +316,7 @@ C/C++ * Added overridable predicates :code:`getSizeExpr` and :code:`getSizeMult` to the :code:`BufferAccess` class (:code:`semmle.code.cpp.security.BufferAccess.qll`). This makes it possible to model a larger class of buffer reads and writes using the library. -Java -"""" +Java/Kotlin +""""""""""" * Predicates :code:`Compilation.getExpandedArgument` and :code:`Compilation.getAnExpandedArgument` has been added. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.1.rst index 70d05d4029b..3af28abf08b 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.1.rst @@ -81,8 +81,8 @@ Golang * Taking a slice is now considered a sanitizer for :code:`SafeUrlFlow`. -Java -"""" +Java/Kotlin +""""""""""" * Changed some models of Spring's :code:`FileCopyUtils.copy` to be path injection sinks instead of summaries. * Added models for the following packages: @@ -101,8 +101,8 @@ Python Deprecated APIs ~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The :code:`sensitiveResultReceiver` predicate in :code:`SensitiveResultReceiverQuery.qll` has been deprecated and replaced with :code:`isSensitiveResultReceiver` in order to use the new dataflow API. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst index d51911d3d69..1cff5244519 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst @@ -61,8 +61,8 @@ JavaScript/TypeScript Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/groovy-injection` now recognizes :code:`groovy.text.TemplateEngine.createTemplate` as a sink. * The queries :code:`java/xxe` and :code:`java/xxe-local` now recognize the second argument of calls to :code:`XPath.evaluate` as a sink. @@ -107,8 +107,8 @@ Golang * Fixed data flow through variadic function parameters. The arguments corresponding to a variadic parameter are no longer returned by :code:`CallNode.getArgument(int i)` and :code:`CallNode.getAnArgument()`, and hence aren't :code:`ArgumentNode`\ s. They now have one result, which is an :code:`ImplicitVarargsSlice` node. For example, a call :code:`f(a, b, c)` to a function :code:`f(T...)` is treated like :code:`f([]T{a, b, c})`. The old behaviour is preserved by :code:`CallNode.getSyntacticArgument(int i)` and :code:`CallNode.getASyntacticArgument()`. :code:`CallExpr.getArgument(int i)` and :code:`CallExpr.getAnArgument()` are unchanged, and will still have three results in the example given. -Java -"""" +Java/Kotlin +""""""""""" * Added SQL injection sinks for Spring JDBC's :code:`NamedParameterJdbcOperations`. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.4.rst index 5d1e1c05c9c..6bc1dc9daec 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.4.rst @@ -46,8 +46,8 @@ Python Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The :code:`java/summary/lines-of-code` query now only counts lines of Java code. The new :code:`java/summary/lines-of-code-kotlin` counts lines of Kotlin code. @@ -135,8 +135,8 @@ C# * :code:`xss` to :code:`js-injection` * :code:`remote` to :code:`file-content-store` -Java -"""" +Java/Kotlin +""""""""""" * Added flow through the block arguments of :code:`kotlin.io.use` and :code:`kotlin.with`. @@ -239,7 +239,7 @@ Swift New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Kotlin versions up to 1.9.0 are now supported. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.0.rst index 509212b8e08..3583785a082 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.0.rst @@ -91,8 +91,8 @@ Golang * The query "Arbitrary file write during zip extraction ("zip slip")" (:code:`go/zipslip`) has been renamed to "Arbitrary file access during archive extraction ("Zip Slip")." -Java -"""" +Java/Kotlin +""""""""""" * The query "Arbitrary file write during archive extraction ("Zip Slip")" (:code:`java/zipslip`) has been renamed to "Arbitrary file access during archive extraction ("Zip Slip")." @@ -124,8 +124,8 @@ C/C++ * The :code:`cpp/comparison-with-wider-type` query now correctly handles relational operations on signed operators. As a result the query may find more results. -Java -"""" +Java/Kotlin +""""""""""" * New models have been added for :code:`org.apache.commons.lang`. * The query :code:`java/unsafe-deserialization` has been updated to take into account :code:`SerialKiller`, a library used to prevent deserialization of arbitrary classes. @@ -162,8 +162,8 @@ C# * The data flow library now performs type strengthening. This increases precision for all data flow queries by excluding paths that can be inferred to be impossible due to incompatible types. -Java -"""" +Java/Kotlin +""""""""""" * The data flow library now performs type strengthening. This increases precision for all data flow queries by excluding paths that can be inferred to be impossible due to incompatible types. @@ -185,8 +185,8 @@ Golang * When a result of path query flows through a function modeled using :code:`DataFlow::FunctionModel` or :code:`TaintTracking::FunctionModel`, the path now includes nodes corresponding to the input and output to the function. This brings it in line with functions modeled using Models-as-Data. -Java -"""" +Java/Kotlin +""""""""""" * Added automatically-generated dataflow models for :code:`javax.portlet`. * Added a missing summary model for the method :code:`java.net.URL.toString`. @@ -240,8 +240,8 @@ Golang * The :code:`LogInjection::Configuration` taint flow configuration class has been deprecated. Use the :code:`LogInjection::Flow` module instead. -Java -"""" +Java/Kotlin +""""""""""" * The :code:`ExecCallable` class in :code:`ExternalProcess.qll` has been deprecated. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.1.rst index 72e9e816a4e..736f48e5ddc 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.1.rst @@ -32,8 +32,8 @@ C/C++ * The :code:`cpp/uninitialized-local` query now excludes uninitialized uses that are explicitly cast to void and are expression statements. As a result, the query will report less false positives. -Java -"""" +Java/Kotlin +""""""""""" * The query "Unsafe resource fetching in Android WebView" (:code:`java/android/unsafe-android-webview-fetch`) now recognizes WebViews where :code:`setJavascriptEnabled`, :code:`setAllowFileAccess`, :code:`setAllowUniversalAccessFromFileURLs`, and/or :code:`setAllowFileAccessFromFileURLs` are set inside the function block of the Kotlin :code:`apply` function. @@ -104,8 +104,8 @@ Golang * Support for `gqlgen `__ has been added. * Support for the `go-pg framework `__ has been improved. -Java -"""" +Java/Kotlin +""""""""""" * Data flow configurations can now include a predicate :code:`neverSkip(Node node)` in order to ensure inclusion of certain nodes in the path explanations. The predicate defaults to the end-points of the additional flow steps provided in the configuration, which means that such steps now always are visible by default in path explanations. @@ -178,8 +178,8 @@ Golang * The :code:`DataFlow::StateConfigSig` signature module has gained default implementations for :code:`isBarrier/2` and :code:`isAdditionalFlowStep/4`. Hence it is no longer needed to provide :code:`none()` implementations of these predicates if they are not needed. -Java -"""" +Java/Kotlin +""""""""""" * The :code:`DataFlow::StateConfigSig` signature module has gained default implementations for :code:`isBarrier/2` and :code:`isAdditionalFlowStep/4`. Hence it is no longer needed to provide :code:`none()` implementations of these predicates if they are not needed. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.2.rst index 7e3f8da75a2..ccc388fe210 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.2.rst @@ -45,8 +45,8 @@ Query Packs Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The sanitizer in :code:`java/potentially-weak-cryptographic-algorithm` has been improved, so the query may yield additional results. @@ -102,8 +102,8 @@ Golang * Logrus' :code:`WithContext` methods are no longer treated as if they output the values stored in that context to a log message. -Java -"""" +Java/Kotlin +""""""""""" * Fixed a typo in the :code:`StdlibRandomSource` class in :code:`RandomDataSource.qll`, which caused the class to improperly model calls to the :code:`nextBytes` method. Queries relying on :code:`StdlibRandomSource` may see an increase in results. * Improved the precision of virtual dispatch of :code:`java.io.InputStream` methods. Now, calls to these methods will not dispatch to arbitrary implementations of :code:`InputStream` if there is a high-confidence alternative (like a models-as-data summary). @@ -126,8 +126,8 @@ Swift New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * A :code:`Diagnostic.getCompilationInfo()` predicate has been added. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.3.rst index 26ab2e8547c..2707003615b 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.3.rst @@ -55,8 +55,8 @@ Python Major Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Improved support for flow through captured variables that properly adheres to inter-procedural control flow. @@ -73,8 +73,8 @@ C# * The query library for :code:`cs/hardcoded-credentials` now excludes benign properties such as :code:`UserNameClaimType` and :code:`AllowedUserNameCharacters` from :code:`Microsoft.AspNetCore.Identity` options classes. -Java -"""" +Java/Kotlin +""""""""""" * Modified the :code:`getSecureAlgorithmName` predicate in :code:`Encryption.qll` to also include :code:`SHA-256` and :code:`SHA-512`. Previously only the versions of the names without dashes were considered secure. * Add support for :code:`WithElement` and :code:`WithoutElement` for MaD access paths. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.4.rst index dd2309e557e..9ad1517025f 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.14.4.rst @@ -66,8 +66,8 @@ C/C++ * Some queries that had repeated results corresponding to different levels of indirection for :code:`argv` now only have a single result. * The :code:`cpp/non-constant-format` query no longer considers an assignment on the right-hand side of another assignment to be a source of non-constant format strings. As a result, the query may now produce fewer results. -Java -"""" +Java/Kotlin +""""""""""" * The queries "Resolving XML external entity in user-controlled data" (:code:`java/xxe`) and "Resolving XML external entity in user-controlled data from local source" (:code:`java/xxe-local`) now recognize sinks in the MDHT library. @@ -91,8 +91,8 @@ C/C++ * Added a new query, :code:`cpp/invalid-pointer-deref`, to detect out-of-bounds pointer reads and writes. -Java -"""" +Java/Kotlin +""""""""""" * Added the :code:`java/trust-boundary-violation` query to detect trust boundary violations between HTTP requests and the HTTP session. Also added the :code:`trust-boundary-violation` sink kind for sinks which may cross a trust boundary, such as calls to the :code:`HttpSession#setAttribute` method. @@ -136,8 +136,8 @@ Golang * Added `http.Error `__ to XSS sanitzers. -Java -"""" +Java/Kotlin +""""""""""" * Fixed the MaD signature specifications to use proper nested type names. * Added new sanitizer to Java command injection model @@ -172,8 +172,8 @@ C/C++ * Added :code:`DeleteOrDeleteArrayExpr` as a super type of :code:`DeleteExpr` and :code:`DeleteArrayExpr` -Java -"""" +Java/Kotlin +""""""""""" * Kotlin versions up to 1.9.10 are now supported. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.0.rst index ddbdcd8971b..14635c0fb50 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.0.rst @@ -121,8 +121,8 @@ Language Libraries Bug Fixes ~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The regular expressions library no longer incorrectly matches mode flag characters against the input. @@ -169,8 +169,8 @@ Golang * Added Numeric and Boolean types to SQL injection sanitzers. -Java -"""" +Java/Kotlin +""""""""""" * Fixed a control-flow bug where case rule statements would incorrectly include a fall-through edge. * Added support for default cases as proper guards in switch expressions to match switch statements. @@ -207,8 +207,8 @@ Swift New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Kotlin versions up to 1.9.20 are now supported. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.1.rst index 7b9dcf0442d..b98fcd1cd3c 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.1.rst @@ -63,8 +63,8 @@ Golang * The query "Incorrect conversion between integer types" (:code:`go/incorrect-integer-conversion`) has been improved. It can now detect parsing an unsigned integer type (like :code:`uint32`) and converting it to the signed integer type of the same size (like :code:`int32`), which may lead to more results. It also treats :code:`int` and :code:`uint` more carefully, which may lead to more results or fewer incorrect results. -Java -"""" +Java/Kotlin +""""""""""" * Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. @@ -121,8 +121,8 @@ Golang * Support has been added for file system access sinks in the following libraries: \ `net/http `__, `Afero `__, `beego `__, `Echo `__, `Fiber `__, `Gin `__, `Iris `__. * Added :code:`GoKit.qll` to :code:`go.qll` enabling the GoKit framework by default -Java -"""" +Java/Kotlin +""""""""""" * The :code:`isBarrier`, :code:`isBarrierIn`, :code:`isBarrierOut`, and :code:`isAdditionalFlowStep` methods of the taint-tracking configurations for local queries in the :code:`ArithmeticTaintedLocalQuery`, :code:`ExternallyControlledFormatStringLocalQuery`, :code:`ImproperValidationOfArrayIndexQuery`, :code:`NumericCastTaintedQuery`, :code:`ResponseSplittingLocalQuery`, :code:`SqlTaintedLocalQuery`, and :code:`XssLocalQuery` libraries have been changed to match their remote counterpart configurations. * Deleted the deprecated :code:`isBarrierGuard` predicate from the dataflow library and its uses, use :code:`isBarrier` and the :code:`BarrierGuard` module instead. @@ -209,7 +209,7 @@ Swift New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added predicate :code:`MemberRefExpr::getReceiverExpr`\ diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.2.rst index 7398863e235..c542a4df350 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.2.rst @@ -61,8 +61,8 @@ Golang * The query :code:`go/incorrect-integer-conversion` now correctly recognizes more guards of the form :code:`if val <= x` to protect a conversion :code:`uintX(val)`. -Java -"""" +Java/Kotlin +""""""""""" * java/summary/lines-of-code now gives the total number of lines of Java and Kotlin code, and is the only query tagged :code:`lines-of-code`. java/summary/lines-of-code-java and java/summary/lines-of-code-kotlin give the per-language counts. * The query :code:`java/spring-disabled-csrf-protection` has been improved to detect more ways of disabling CSRF in Spring. @@ -105,8 +105,8 @@ Golang * Added `Request.Cookie `__ to reflected XSS sanitizers. -Java -"""" +Java/Kotlin +""""""""""" * Java classes :code:`MethodAccess`, :code:`LValue` and :code:`RValue` were renamed to :code:`MethodCall`, :code:`VarWrite` and :code:`VarRead` respectively, along with related predicates and class names. The old names remain usable for the time being but are deprecated and should be replaced. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.3.rst index 3ee41be4d85..1bcadd72b5a 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.3.rst @@ -60,8 +60,8 @@ C# * CIL extraction is now disabled by default. It is still possible to turn on CIL extraction by setting the :code:`cil` extractor option to :code:`true` or by setting the environment variable :code:`$CODEQL_EXTRACTOR_CSHARP_OPTION_CIL` to :code:`true`. This is the first step towards sun-setting the CIL extractor entirely. -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/unsafe-deserialization` has been improved to detect insecure calls to :code:`ObjectMessage.getObject` in JMS. @@ -193,8 +193,8 @@ Golang * Added the `gin-contrib/cors `__ library to the experimental query "CORS misconfiguration" (:code:`go/cors-misconfiguration`). -Java -"""" +Java/Kotlin +""""""""""" * The types :code:`java.util.SequencedCollection`, :code:`SequencedSet` and :code:`SequencedMap`, as well as the related :code:`Collections.unmodifiableSequenced*` methods are now modelled. This means alerts may be raised relating to data flow through these types and methods. @@ -217,7 +217,7 @@ Swift Deprecated APIs ~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * In :code:`SensitiveApi.qll`, :code:`javaApiCallablePasswordParam`, :code:`javaApiCallableUsernameParam`, :code:`javaApiCallableCryptoKeyParam`, and :code:`otherApiCallableCredentialParam` predicates have been deprecated. They have been replaced with a new class :code:`CredentialsSinkNode` and its child classes :code:`PasswordSink`, :code:`UsernameSink`, and :code:`CryptoKeySink`. The predicates have been changed to using the new classes, so there may be minor changes in results relying on these predicates. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.4.rst index 6d9615ebbf9..f7cbcd80210 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.15.4.rst @@ -81,8 +81,8 @@ Golang Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The diagnostic query :code:`java/diagnostics/successfully-extracted-files`, and therefore the Code Scanning UI measure of scanned Java files, now considers any Java file seen during extraction, even one with some errors, to be extracted / scanned. * Switch cases using binding patterns and :code:`case null[, default]` are now supported. Classes :code:`PatternCase` and :code:`NullDefaultCase` are introduced to represent new kinds of case statement. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.0.rst index 4aa3862c642..127994f2999 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.0.rst @@ -53,8 +53,8 @@ Query Packs Bug Fixes ~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The three queries :code:`java/insufficient-key-size`, :code:`java/server-side-template-injection`, and :code:`java/android/implicit-pendingintents` had accidentally general extension points allowing arbitrary string-based flow state. This has been fixed and the old extension points have been deprecated where possible, and otherwise updated. @@ -77,8 +77,8 @@ Golang * There was a bug in the query :code:`go/incorrect-integer-conversion` which meant that upper bound checks using a strict inequality (:code:`<`) and comparing against :code:`math.MaxInt` or :code:`math.MaxUint` were not considered correctly, which led to false positives. This has now been fixed. -Java -"""" +Java/Kotlin +""""""""""" * Modified the :code:`java/potentially-weak-cryptographic-algorithm` query to include the use of weak cryptographic algorithms from configuration values specified in properties files. * The query :code:`java/android/missing-certificate-pinning` should no longer alert about requests pointing to the local filesystem. @@ -98,8 +98,8 @@ C/C++ * Added a new query, :code:`cpp/use-of-unique-pointer-after-lifetime-ends`, to detect uses of the contents unique pointers that will be destroyed immediately. * The :code:`cpp/incorrectly-checked-scanf` query has been added. This finds results where the return value of scanf is not checked correctly. Some of these were previously found by :code:`cpp/missing-check-scanf` and will no longer be reported there. -Java -"""" +Java/Kotlin +""""""""""" * Added the :code:`java/insecure-randomness` query to detect uses of weakly random values which an attacker may be able to predict. Also added the :code:`crypto-parameter` sink kind for sinks which represent the parameters and keys of cryptographic operations. @@ -153,8 +153,8 @@ Golang * The XPath library, which is used for the XPath injection query (:code:`go/xml/xpath-injection`), now includes support for :code:`Parser` sinks from the `libxml2 `__ package. * :code:`CallNode::getACallee` and related predicates now recognise more callees accessed via a function variable, in particular when the callee is stored into a global variable or is captured by an anonymous function. This may lead to new alerts where data-flow into such a callee is relevant. -Java -"""" +Java/Kotlin +""""""""""" * Added the :code:`Map#replace` and :code:`Map#replaceAll` methods to the :code:`MapMutator` class in :code:`semmle.code.java.Maps`. @@ -219,8 +219,8 @@ C/C++ * The :code:`isUserInput`, :code:`userInputArgument`, and :code:`userInputReturned` predicates from :code:`SecurityOptions` have been deprecated. Use :code:`FlowSource` instead. -Java -"""" +Java/Kotlin +""""""""""" * Imports of the old dataflow libraries (e.g. :code:`semmle.code.java.dataflow.DataFlow2`) have been deprecated in the libraries under the :code:`semmle.code.java.security` namespace. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.1.rst index 7a1e6b6230b..cd328246d8c 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.1.rst @@ -52,8 +52,8 @@ Golang * The query :code:`go/insecure-randomness` now recognizes the selection of candidates from a predefined set using a weak RNG when the result is used in a sensitive operation. Also, false positives have been reduced by adding more sink exclusions for functions in the :code:`crypto` package not related to cryptographic operations. * Added more sources and sinks to the query :code:`go/clear-text-logging`. -Java -"""" +Java/Kotlin +""""""""""" * A manual neutral summary model for a callable now blocks all generated summary models for that callable from having any effect. @@ -75,8 +75,8 @@ Swift New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added the :code:`java/exec-tainted-environment` query, to detect the injection of environment variables names or values from remote input. @@ -91,8 +91,8 @@ Language Libraries Bug Fixes ~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Fixed regular expressions containing flags not being parsed correctly in some cases. @@ -129,8 +129,8 @@ Golang * Support for flow sources in `AWS Lambda function handlers `__ has been added. * Support for the `fasthttp framework `__ has been added. -Java -"""" +Java/Kotlin +""""""""""" * Deleted many deprecated predicates and classes with uppercase :code:`EJB`, :code:`JMX`, :code:`NFE`, :code:`DNS` etc. in their names. Use the PascalCased versions instead. * Deleted the deprecated :code:`semmle/code/java/security/OverlyLargeRangeQuery.qll`, :code:`semmle/code/java/security/regexp/ExponentialBackTracking.qll`, :code:`semmle/code/java/security/regexp/NfaUtils.qll`, and :code:`semmle/code/java/security/regexp/NfaUtils.qll` files. @@ -198,8 +198,8 @@ Golang New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new library :code:`semmle.code.java.security.Sanitizers` which contains a new sanitizer class :code:`SimpleTypeSanitizer`, which represents nodes which cannot realistically carry taint for most queries (e.g. primitives, their boxed equivalents, and numeric types). * Converted definitions of :code:`isBarrier` and sanitizer classes to use :code:`SimpleTypeSanitizer` instead of checking if :code:`node.getType()` is :code:`PrimitiveType` or :code:`BoxedType`. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.2.rst index bcbe451af35..db04b157756 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.2.rst @@ -50,8 +50,8 @@ Ruby New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new query :code:`java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. * Added a new query :code:`java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. @@ -82,8 +82,8 @@ C# * C# 12: Added extractor, QL library and data flow support for collection expressions like :code:`[1, y, 4, .. x]`. * The C# extractor now accepts an extractor option :code:`logging.verbosity` that specifies the verbosity of the logs. The option is added via :code:`codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the corresponding environment variable :code:`CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. -Java -"""" +Java/Kotlin +""""""""""" * Added models for the following packages: diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.3.rst index af7c4ce84b0..016bf7583fb 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.3.rst @@ -62,8 +62,8 @@ Golang * The query "Use of a hardcoded key for signing JWT" (:code:`go/hardcoded-key`) has been promoted from experimental to the main query pack. Its results will now appear by default as part of :code:`go/hardcoded-credentials`. This query was originally `submitted as an experimental query by @porcupineyhairs `__. -Java -"""" +Java/Kotlin +""""""""""" * The sinks of the queries :code:`java/path-injection` and :code:`java/path-injection-local` have been reworked. Path creation sinks have been converted to summaries instead, while sinks now are actual file read/write operations only. This has reduced the false positive ratio of both queries. @@ -81,8 +81,8 @@ C# * Added sanitizers for relative URLs, :code:`List.Contains()`, and checking the :code:`.Host` property on an URI to the :code:`cs/web/unvalidated-url-redirection` query. -Java -"""" +Java/Kotlin +""""""""""" * The sanitizer for the path injection queries has been improved to handle more cases where :code:`equals` is used to check an exact path match. * The query :code:`java/unvalidated-url-redirection` now sanitizes results following the same logic as the query :code:`java/ssrf`. URLs where the destination cannot be controlled externally are no longer reported. @@ -95,8 +95,8 @@ Golang * The query "Missing JWT signature check" (:code:`go/missing-jwt-signature-check`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally `submitted as an experimental query by @am0o0 `__. -Java -"""" +Java/Kotlin +""""""""""" * Added a new query :code:`java/android/insecure-local-authentication` for finding uses of biometric authentication APIs that do not make use of a :code:`KeyStore`\ -backed key and thus may be bypassed. @@ -108,8 +108,8 @@ Swift Query Metadata Changes ~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The :code:`security-severity` score of the query :code:`java/relative-path-command` has been reduced to better adjust it to the specific conditions needed for exploitation. @@ -125,8 +125,8 @@ C# * C# 12: The QL and data flow library now support primary constructors. * Added a new database relation to store key-value pairs corresponding to compilations. The new relation is used in buildless mode to surface information related to dependency fetching. -Java -"""" +Java/Kotlin +""""""""""" * An extension point for sanitizers of the query :code:`java/unvalidated-url-redirection` has been added. @@ -170,8 +170,8 @@ Swift Deprecated APIs ~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The :code:`PathCreation` class in :code:`PathCreation.qll` has been deprecated. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.4.rst index dccf2ce4796..a73ce5982fd 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.4.rst @@ -59,8 +59,8 @@ C# * Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are :code:`cs/code-injection`, :code:`cs/command-line-injection`, :code:`cs/user-controlled-bypass`, :code:`cs/count-untrusted-data-external-api`, :code:`cs/untrusted-data-to-external-api`, :code:`cs/ldap-injection`, :code:`cs/log-forging`, :code:`cs/xml/missing-validation`, :code:`cs/redos`, :code:`cs/regex-injection`, :code:`cs/resource-injection`, :code:`cs/sql-injection`, :code:`cs/path-injection`, :code:`cs/unsafe-deserialization-untrusted-input`, :code:`cs/web/unvalidated-url-redirection`, :code:`cs/xml/insecure-dtd-handling`, :code:`cs/xml/xpath-injection`, :code:`cs/web/xss`, and :code:`cs/uncontrolled-format-string`. -Java -"""" +Java/Kotlin +""""""""""" * To reduce the number of false positives in the query "Insertion of sensitive information into log files" (:code:`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. @@ -73,8 +73,8 @@ Ruby New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added a new query :code:`java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. @@ -94,8 +94,8 @@ Golang * Fixed dataflow out of a :code:`map` using a :code:`range` statement. -Java -"""" +Java/Kotlin +""""""""""" * Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper :code:`mvnw` is in use and the :code:`maven-wrapper.jar` file is not present in the repository. * Some flow steps related to :code:`android.text.Editable.toString` that were accidentally disabled have been re-enabled. @@ -136,8 +136,8 @@ C# * C#: The table :code:`expr_compiler_generated` has been deleted and its content has been added to :code:`compiler_generated`. * Data flow via get only properties like :code:`public object Obj { get; }` is now captured by the data flow library. -Java -"""" +Java/Kotlin +""""""""""" * Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL :code:`ErrorType` more often. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.0.rst index 59b331fc154..9551941ea38 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.0.rst @@ -52,8 +52,8 @@ C# * The :code:`Stored` variants of some queries (:code:`cs/stored-command-line-injection`, :code:`cs/web/stored-xss`, :code:`cs/stored-ldap-injection`, :code:`cs/xml/stored-xpath-injection`, :code:`cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the :code:`file` and :code:`database` threat models in your threat model configuration. -Java -"""" +Java/Kotlin +""""""""""" * The :code:`java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. @@ -79,8 +79,8 @@ Golang * The query :code:`go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. * The query :code:`go/sql-injection` now recognizes more sinks in the package :code:`github.com/Masterminds/squirrel`. -Java -"""" +Java/Kotlin +""""""""""" * Variables named :code:`tokenImage` are no longer sources for the :code:`java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. * Added sanitizers for relative URLs, :code:`List.contains()`, and checking the host of a URI to the :code:`java/ssrf` and :code:`java/unvalidated-url-redirection` queries. @@ -103,8 +103,8 @@ Golang * The query "Slice memory allocation with excessive size value" (:code:`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally `submitted as an experimental query by @Malayke `__. -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as :code:`java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query `by @haby0 `__ and `by @luchua-bc `__. @@ -133,8 +133,8 @@ C# * The CIL extractor has been deleted and the corresponding extractor option :code:`cil` has been removed. It is no longer possible to do CIL extraction. * The QL library C# classes no longer extend their corresponding :code:`DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all :code:`DotNet` and :code:`CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. -Java -"""" +Java/Kotlin +""""""""""" * The Java extractor no longer supports the :code:`ODASA_SNAPSHOT` legacy environment variable. @@ -178,8 +178,8 @@ Golang * The :code:`CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. * Added dataflow sources for the package :code:`gopkg.in/macaron.v1`. -Java -"""" +Java/Kotlin +""""""""""" * Increased the precision of some dataflow models of the class :code:`java.net.URL` by distinguishing the parts of a URL. * The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.1.rst index e0e09d2a227..c162c3f9554 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.1.rst @@ -42,8 +42,8 @@ Query Packs Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The :code:`java/unknown-javadoc-parameter` now accepts :code:`@param` tags that apply to the parameters of a record. @@ -79,8 +79,8 @@ Golang * Data flow through variables declared in statements of the form :code:`x := y.(type)` at the beginning of type switches has been fixed, which may result in more alerts. * Added strings.ReplaceAll, http.ParseMultipartForm sanitizers and remove path sanitizer. -Java -"""" +Java/Kotlin +""""""""""" * About 6,700 summary models and 6,800 neutral summary models for the JDK that were generated using data flow have been added. This may lead to new alerts being reported. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.2.rst index 1d0fe505edc..9fb2aee867b 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.2.rst @@ -87,8 +87,8 @@ Golang * Deleted the deprecated :code:`CsvRemoteSource` alias. Use :code:`MaDRemoteSource` instead. -Java -"""" +Java/Kotlin +""""""""""" * Deleted the deprecated :code:`AssignLShiftExpr`, :code:`AssignRShiftExpr`, :code:`AssignURShiftExpr`, :code:`LShiftExpr`, :code:`RShiftExpr`, and :code:`URShiftExpr` aliases. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.3.rst index edf405c0581..45286dd2723 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.3.rst @@ -49,8 +49,8 @@ Language Libraries Breaking Changes ~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The Java extractor no longer supports the :code:`ODASA_JAVA_LAYOUT`, :code:`ODASA_TOOLS` and :code:`ODASA_HOME` legacy environment variables. * The Java extractor no longer supports the :code:`ODASA_BUILD_ERROR_DIR` legacy environment variable. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.4.rst index aa1d16332da..e705d8fe17f 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.4.rst @@ -30,8 +30,8 @@ Query Packs Breaking Changes ~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Removed :code:`local` query variants. The results pertaining to local sources can be found using the non-local counterpart query. As an example, the results previously found by :code:`java/unvalidated-url-redirection-local` can be found by :code:`java/unvalidated-url-redirection`, if the :code:`local` threat model is enabled. The removed queries are :code:`java/path-injection-local`, :code:`java/command-line-injection-local`, :code:`java/xss-local`, :code:`java/sql-injection-local`, :code:`java/http-response-splitting-local`, :code:`java/improper-validation-of-array-construction-local`, :code:`java/improper-validation-of-array-index-local`, :code:`java/tainted-format-string-local`, :code:`java/tainted-arithmetic-local`, :code:`java/unvalidated-url-redirection-local`, :code:`java/xxe-local` and :code:`java/tainted-numeric-cast-local`. @@ -49,8 +49,8 @@ Golang * The query :code:`go/incorrect-integer-conversion` has now been restricted to only use flow through value-preserving steps. This reduces false positives, especially around type switches. -Java -"""" +Java/Kotlin +""""""""""" * The alert message for the query "Trust boundary violation" (:code:`java/trust-boundary-violation`) has been updated to include a link to the remote source. * The sanitizer of the query :code:`java/zipslip` has been improved to include nodes that are safe due to having certain safe types. This reduces false positives. @@ -74,8 +74,8 @@ JavaScript/TypeScript Major Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added support for data flow through side-effects on static fields. For example, when a static field containing an array is updated. @@ -89,8 +89,8 @@ Golang * A bug has been fixed which meant flow was not followed through some ranged for loops. This may lead to more alerts being found. * Added value flow models for the built-in functions :code:`append`, :code:`copy`, :code:`max` and :code:`min` using Models-as-Data. Removed the old-style models for :code:`max` and :code:`min`. -Java -"""" +Java/Kotlin +""""""""""" * JDK version detection based on Gradle projects has been improved. Java extraction using build-modes :code:`autobuild` or :code:`none` is more likely to pick an appropriate JDK version, particularly when the Android Gradle Plugin or Spring Boot Plugin are in use. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.5.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.5.rst index 62ba5fad39a..e86eb795b1e 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.5.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.5.rst @@ -77,8 +77,8 @@ C# * .NET 8 Runtime models have been updated based on the newest version of the model generator. Furthermore, the database sources have been changed slightly to reduce result multiplicity. -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/spring-disabled-csrf-protection` detects disabling CSRF via :code:`ServerHttpSecurity$CsrfSpec::disable`. * Added more :code:`java.io.File`\ -related sinks to the path injection query. @@ -94,8 +94,8 @@ Language Libraries Major Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The precision of virtual dispatch has been improved. This increases precision in general for all data flow queries. @@ -107,8 +107,8 @@ C/C++ * A partial model for the :code:`Boost.Asio` network library has been added. This includes sources, sinks and summaries for certain functions in :code:`Boost.Asio`, such as :code:`read_until` and :code:`write`. -Java -"""" +Java/Kotlin +""""""""""" * Support for Eclipse Compiler for Java (ecj) has been fixed to work with (a) runs that don't pass :code:`-noExit` and (b) runs that use post-Java-9 command-line arguments. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.0.rst index 278a5092a0a..c299355c00e 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.0.rst @@ -22,11 +22,9 @@ CodeQL CLI Breaking Changes ~~~~~~~~~~~~~~~~ -* A number of breaking changes have been made to the C and C++ CodeQL environment: +* A number of breaking changes have been made to the C and C++ CodeQL test environment as used by :code:`codeql test run`\ : - * The environment no longer defines any GNU-specific builtin macros. - If these macros are still needed, please define them via - :code:`semmle-extractor-options`. + * The test environment no longer defines any GNU-specific builtin macros. If these macros are still needed by a test, please define them via :code:`semmle-extractor-options`. * The :code:`--force-recompute` option is no longer directly supported by :code:`semmle-extractor-options`. Instead, :code:`--edg --force-recompute` should be specified. @@ -71,16 +69,16 @@ Query Packs Major Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/weak-cryptographic-algorithm` no longer alerts about :code:`RSA/ECB` algorithm strings. Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The query :code:`java/tainted-permissions-check` now uses threat models. This means that :code:`local` sources are no longer included by default for this query, but can be added by enabling the :code:`local` threat model. * Added more :code:`org.apache.commons.io.FileUtils`\ -related sinks to the path injection query. @@ -107,8 +105,8 @@ Golang * Fixed dataflow via global variables other than via a direct write: for example, via a side-effect on a global, such as :code:`io.copy(SomeGlobal, ...)` or via assignment to a field or array or slice cell of a global. This means that any data-flow query may return more results where global variables are involved. -Java -"""" +Java/Kotlin +""""""""""" * Support for :code:`codeql test run` for Kotlin sources has been fixed. @@ -135,8 +133,8 @@ Golang * DataFlow queries which previously used :code:`RemoteFlowSource` to define their sources have been modified to instead use :code:`ThreatModelFlowSource`. This means these queries will now respect threat model configurations. The default threat model configuration is equivalent to :code:`RemoteFlowSource`, so there should be no change in results for users using the default. * Added the :code:`ThreatModelFlowSource` class to :code:`FlowSources.qll`. The :code:`ThreatModelFlowSource` class can be used to include sources which match the current *threat model* configuration. This is the first step in supporting threat modeling for Go. -Java -"""" +Java/Kotlin +""""""""""" * Added models for the following packages: diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.1.rst index 4febc452898..a13cd9cdc5d 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.1.rst @@ -72,8 +72,8 @@ C/C++ * The :code:`cpp/unsigned-difference-expression-compared-zero` ("Unsigned difference expression compared to zero") query now produces fewer false positives. -Java -"""" +Java/Kotlin +""""""""""" * The heuristic to enable certain Android queries has been improved. Now it ignores Android Manifests which don't define an activity, content provider or service. We also only consider files which are under a folder containing such an Android Manifest for these queries. This should remove some false positive alerts. @@ -113,8 +113,8 @@ Language Libraries Breaking Changes ~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The Java extractor no longer supports the :code:`SEMMLE_DIST` legacy environment variable. @@ -126,8 +126,8 @@ Golang * There was a bug which meant that the built-in function :code:`clear` was considered as a sanitizer in some cases when it shouldn't have been. This has now been fixed, which may lead to more alerts. -Java -"""" +Java/Kotlin +""""""""""" * Added a path-injection sink for :code:`hudson.FilePath.exists()`. * Added summary models for :code:`org.apache.commons.io.IOUtils.toByteArray`. @@ -146,8 +146,8 @@ Swift Deprecated APIs ~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The predicate :code:`isAndroid` from the module :code:`semmle.code.java.security.AndroidCertificatePinningQuery` has been deprecated. Use :code:`semmle.code.java.frameworks.android.Android::inAndroidApplication(File)` instead. @@ -161,8 +161,8 @@ C/C++ * Added subclasses of :code:`BuiltInOperations` for :code:`__builtin_has_attribute`, :code:`__builtin_is_corresponding_member`, :code:`__builtin_is_pointer_interconvertible_with_class`, :code:`__is_assignable_no_precondition_check`, :code:`__is_bounded_array`, :code:`__is_convertible`, :code:`__is_corresponding_member`, :code:`__is_nothrow_convertible`, :code:`__is_pointer_interconvertible_with_class`, :code:`__is_referenceable`, :code:`__is_same_as`, :code:`__is_trivially_copy_assignable`, :code:`__is_unbounded_array`, :code:`__is_valid_winrt_type`, :code:`_is_win_class`, :code:`__is_win_interface`, :code:`__reference_binds_to_temporary`, :code:`__reference_constructs_from_temporary`, and :code:`__reference_converts_from_temporary`. * The class :code:`NewArrayExpr` adds a predicate :code:`getArraySize()` to allow a more convenient way to access the static size of the array when the extent is missing. -Java and Kotlin -""""""""""""""" +Java/Kotlin +""""""""""" * Kotlin support is now out of beta, and generally available * Kotlin versions up to 2.0.2*x* are now supported. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.2.rst new file mode 100644 index 00000000000..3bc21179a89 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.2.rst @@ -0,0 +1,147 @@ +.. _codeql-cli-2.18.2: + +========================== +CodeQL 2.18.2 (2024-08-13) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.18.2 runs a total of 423 security queries when configured with the Default suite (covering 164 CWE). The Extended suite enables an additional 128 queries (covering 34 more CWE). 3 security queries have been added with this release. + +CodeQL CLI +---------- + +Deprecations +~~~~~~~~~~~~ + +* Swift analysis on Ubuntu is no longer supported. Please migrate to macOS if this affects you. + +Miscellaneous +~~~~~~~~~~~~~ + +* The build of Eclipse Temurin OpenJDK that is used to run the CodeQL CLI has been updated to version 21.0.3. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Fixed false positives in the :code:`cpp/memory-may-not-be-freed` ("Memory may not be freed") query involving class methods that returned an allocated field of that class being misidentified as allocators. +* The :code:`cpp/incorrectly-checked-scanf` ("Incorrect return-value check for a 'scanf'-like function") query now produces fewer false positive results. +* The :code:`cpp/incorrect-allocation-error-handling` ("Incorrect allocation-error handling") query no longer produces occasional false positive results inside template instantiations. +* The :code:`cpp/suspicious-allocation-size` ("Not enough memory allocated for array of pointer type") query no longer produces false positives on "variable size" :code:`struct`\ s. + +Java/Kotlin +""""""""""" + +* Variables names containing the string "tokenizer" (case-insensitively) are no longer sources for the :code:`java/sensitive-log` query. They normally relate to things like :code:`java.util.StringTokenizer`, which are not sensitive information. This should fix some false positive alerts. +* The query "Unused classes and interfaces" (:code:`java/unused-reference-type`) now recognizes that if a method of a class has an annotation then it may be accessed reflectively. This should remove false positive alerts, especially for JUnit 4-style tests annotated with :code:`@test`. +* Alerts about exposing :code:`exception.getMessage()` in servlet responses are now split out of :code:`java/stack-trace-exposure` into its own query :code:`java/error-message-exposure`. +* Added the extensible abstract class :code:`SensitiveLoggerSource`. Now this class can be extended to add more sources to the :code:`java/sensitive-log` query or for customizations overrides. + +Python +"""""" + +* Added models of :code:`streamlit` PyPI package. + +Swift +""""" + +* The :code:`swift/constant-salt` ("Use of constant salts") query now considers string concatenation and interpolation as a barrier. As a result, there will be fewer false positive results from this query involving constructed strings. +* The :code:`swift/constant-salt` ("Use of constant salts") query message now contains a link to the source node. + +New Queries +~~~~~~~~~~~ + +Python +"""""" + +* The :code:`py/cookie-injection` query, originally contributed to the experimental query pack by @jorgectf, has been promoted to the main query pack. This query finds instances of cookies being constructed from user input. + +Ruby +"""" + +* Added a new query, :code:`rb/weak-sensitive-data-hashing`, to detect cases where sensitive data is hashed using a weak cryptographic hashing algorithm. + +Query Metadata Changes +~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The precision of :code:`cpp/unsigned-difference-expression-compared-zero` ("Unsigned difference expression compared to zero") has been increased to :code:`high`. As a result, it will be run by default as part of the Code Scanning suite. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* The Java and Kotlin extractors no longer support the :code:`SOURCE_ARCHIVE` and :code:`TRAP_FOLDER` legacy environment variable. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* We previously considered reverse DNS resolutions (IP address -> domain name) as sources of untrusted data, since compromised/malicious DNS servers could potentially return malicious responses to arbitrary requests. We have now removed this source from the default set of untrusted sources and made a new threat model kind for them, called "reverse-dns". You can optionally include other threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see `Analyzing your code with CodeQL queries `__ and `Customizing your advanced setup for code scanning `__. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The controlling expression of a :code:`constexpr if` is now always recognized as an unevaluated expression. +* Improved performance of alias analysis of large function bodies. In rare cases, alerts that depend on alias analysis of large function bodies may be affected. +* A :code:`UsingEnumDeclarationEntry` class has been added for C++ :code:`using enum` declarations. As part of this, synthesized :code:`UsingDeclarationEntry`\ s are no longer emitted for individual enumerators of the referenced enumeration. + +Java/Kotlin +""""""""""" + +* Added flow through some methods of the class :code:`java.net.URL` by ensuring that the fields of a URL are tainted. +* Added path-injection sinks for :code:`org.apache.tools.ant.taskdefs.Property.setFile` and :code:`org.apache.tools.ant.taskdefs.Property.setResource`. +* Adds models for request handlers using the :code:`org.lastaflute.web` web framework. + +Python +"""""" + +* Added support for :code:`DictionaryElement[]` and :code:`DictionaryElementAny` when Customizing Library Models for :code:`sourceModel` (see https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-python/) + +Swift +""""" + +* The model for :code:`FileManager` no longer considers methods that return paths on the file system as taint sources. This is because these sources have been found to produce results of low value. +* An error in the model for :code:`URL.withUnsafeFileSystemRepresentation(_:)` has been corrected. This may result in new data flow paths being found during analysis. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* A :code:`getTemplateClass` predicate was added to the :code:`DeductionGuide` class to get the class template for which the deduction guide is a guide. +* An :code:`isExplicit` predicate was added to the :code:`Function` class that determines whether the function was declared as explicit. +* A :code:`getExplicitExpr` predicate was added to the :code:`Function` class that yields the constant boolean expression (if any) that conditionally determines whether the function is explicit. +* A :code:`isDestroyingDeleteDeallocation` predicate was added to the :code:`NewOrNewArrayExpr` and :code:`DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. + +Java/Kotlin +""""""""""" + +* Java support for :code:`build-mode: none` is now out of beta, and generally available. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.3.rst new file mode 100644 index 00000000000..31ecd6e0ed7 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.3.rst @@ -0,0 +1,108 @@ +.. _codeql-cli-2.18.3: + +========================== +CodeQL 2.18.3 (2024-08-28) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.18.3 runs a total of 425 security queries when configured with the Default suite (covering 164 CWE). The Extended suite enables an additional 128 queries (covering 34 more CWE). 2 security queries have been added with this release. + +CodeQL CLI +---------- + +There are no user-facing CLI changes in this release. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The :code:`cpp/uncontrolled-allocation-size` ("Uncontrolled allocation size") query now considers arithmetic operations that might reduce the size of user input as a barrier. The query therefore produces fewer false positive results. + +C# +"" + +* Attributes in the :code:`System.Runtime.CompilerServices` namespace are ignored when checking if a declaration requires documentation comments. +* C# build-mode :code:`none` analyses now report a warning on the CodeQL status page when there are significant analysis problems -- defined as 5% of expressions lacking a type, or 5% of call targets being unknown. Other messages reported on the status page are downgraded from warnings to notes and so are less prominent, but are still available for review. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Message events in the browser are now properly classified as client-side taint sources. Previously they were incorrectly classified as server-side taint sources, which resulted in some alerts being reported by the wrong query, such as server-side URL redirection instead of client-side URL redirection. + +Swift +""""" + +* False positive results from the :code:`swift/cleartext-transmission` ("Cleartext transmission of sensitive information") query involving :code:`tel:`, :code:`mailto:` and similar URLs have been fixed. + +New Queries +~~~~~~~~~~~ + +Python +"""""" + +* The :code:`py/cookie-injection` query, originally contributed to the experimental query pack by @jorgectf, has been promoted to the main query pack. This query finds instances of cookies being set without the :code:`Secure`, :code:`HttpOnly`, or :code:`SameSite` attributes set to secure values. + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +Golang +"""""" + +* Fixed an issue where :code:`io/ioutil.WriteFile`\ 's non-path arguments incorrectly generated :code:`go/path-injection` alerts when untrusted data was written to a file, or controlled the file's mode. + +Java/Kotlin +""""""""""" + +* Fixed an issue where analysis in :code:`build-mode: none` may very occasionally throw a :code:`CoderMalfunctionError` while resolving dependencies provided by a build system (Maven or Gradle), which could cause some dependency resolution and consequently alerts to vary unpredictably from one run to another. +* Fixed an issue where Java analysis in :code:`build-mode: none` would fail to resolve dependencies using the :code:`executable-war` Maven artifact type. +* Fixed an issue where analysis in :code:`build-mode: none` may fail to resolve dependencies of Gradle projects where the dependency uses a non-empty artifact classifier -- for example, :code:`someproject-1.2.3-tests.jar`, which has the classifier :code:`tests`. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* Added support for data flow through side-effects on static fields. For example, when a static field containing an array is updated. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* Added some new :code:`local` source models. Most prominently :code:`System.IO.Path.GetTempPath` and :code:`System.Environment.GetFolderPath`. This might produce more alerts, if the :code:`local` threat model is enabled. +* The extractor has been changed to not skip source files that have already been seen. This has an impact on source files that are compiled multiple times in the build process. Source files with conditional compilation preprocessor directives (such as :code:`#if`) are now extracted for each set of preprocessor symbols that are used during the build process. + +Java/Kotlin +""""""""""" + +* Threat-model for :code:`System.in` changed from :code:`commandargs` to newly created :code:`stdin` (both subgroups of :code:`local`). + +Shared Libraries +---------------- + +Deprecated APIs +~~~~~~~~~~~~~~~ + +Dataflow Analysis +""""""""""""""""" + +* The source/sink grouping feature of the data flow library has been removed. It was introduced primarily for debugging, but has not proven useful. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.4.rst new file mode 100644 index 00000000000..14f7cb96647 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.18.4.rst @@ -0,0 +1,45 @@ +.. _codeql-cli-2.18.4: + +========================== +CodeQL 2.18.4 (2024-09-12) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.18.4 runs a total of 425 security queries when configured with the Default suite (covering 164 CWE). The Extended suite enables an additional 128 queries (covering 34 more CWE). + +CodeQL CLI +---------- + +New Features +~~~~~~~~~~~~ + +* C# support for :code:`build-mode: none` is now out of beta, and generally available. +* Go 1.23 is now supported. + +Language Libraries +------------------ + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Golang +"""""" + +* Go 1.23 is now supported. + +New Features +~~~~~~~~~~~~ + +C# +"" + +* C# support for :code:`build-mode: none` is now out of beta, and generally available. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.7.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.7.3.rst index 4cfc13e7e0c..ffac75543ca 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.7.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.7.3.rst @@ -90,8 +90,8 @@ Language Libraries Bug Fixes ~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * :code:`CharacterLiteral`\ 's :code:`getCodePointValue` predicate now returns the correct value for UTF-16 surrogates. * The :code:`RangeAnalysis` module and the :code:`java/constant-comparison` queries no longer raise false alerts regarding comparisons with Unicode surrogate character literals. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.7.5.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.7.5.rst index 3567aa917a1..d754aec07cb 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.7.5.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.7.5.rst @@ -60,8 +60,8 @@ JavaScript/TypeScript Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The :code:`java/constant-comparison` query no longer raises false alerts regarding comparisons with Unicode surrogate character literals. @@ -103,8 +103,8 @@ Language Libraries Bug Fixes ~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * :code:`CharacterLiteral`\ 's :code:`getCodePointValue` predicate now returns the correct value for UTF-16 surrogates. * The :code:`RangeAnalysis` module now properly handles comparisons with Unicode surrogate character literals. @@ -112,8 +112,8 @@ Java Major Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Data flow now propagates taint from remote source :code:`Parameter` types to read steps of their fields (e.g. :code:`tainted.publicField` or :code:`tainted.getField()`). This also applies to their subtypes and the types of their fields, recursively. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.0.rst index 62082a1d815..03e16acf5d9 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.0.rst @@ -79,8 +79,8 @@ C/C++ * The "Uncontrolled data in arithmetic expression" (cpp/uncontrolled-arithmetic) query has been enhanced to reduce false positive results and its @precision increased to high. * A new :code:`cpp/very-likely-overrunning-write` query has been added to the default query suite for C/C++. The query reports some results that were formerly flagged by :code:`cpp/overrunning-write`. -Java -"""" +Java/Kotlin +""""""""""" * A new query "Use of implicit PendingIntents" (:code:`java/android/pending-intents`) has been added. This query finds implicit and mutable :code:`PendingIntents` sent to an unspecified third party component, which may provide an attacker with access to internal components of the application or cause other unintended effects. @@ -108,8 +108,8 @@ Ruby Query Metadata Changes ~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The "Random used only once" (:code:`java/random-used-once`) query no longer has a :code:`security-severity` score. This has been causing some tools to categorise it as a security query, when it is more useful as a code-quality query. @@ -159,8 +159,8 @@ C# * The :code:`codeql/csharp-upgrades` CodeQL pack has been removed. All upgrades scripts have been merged into the :code:`codeql/csharp-all` CodeQL pack. -Java -"""" +Java/Kotlin +""""""""""" * The :code:`codeql/java-upgrades` CodeQL pack has been removed. All upgrades scripts have been merged into the :code:`codeql/java-all` CodeQL pack. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.1.rst index 5197b2f6165..184a488ca4a 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.1.rst @@ -104,8 +104,8 @@ C/C++ * Added a new query, :code:`cpp/open-call-with-mode-argument`, to detect when :code:`open` or :code:`openat` is called with the :code:`O_CREAT` or :code:`O_TMPFILE` flag but when the :code:`mode` argument is omitted. -Java -"""" +Java/Kotlin +""""""""""" * A new query "Cleartext storage of sensitive information using a local database on Android" (:code:`java/android/cleartext-storage-database`) has been added. This query finds instances of sensitive data being stored in local databases without encryption, which may expose it to attackers or malicious applications. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.2.rst index 9cebea6738e..6c778328d9b 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.2.rst @@ -36,8 +36,8 @@ Query Packs Breaking Changes ~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Add more classes to Netty request/response splitting. Change identification to :code:`java/netty-http-request-or-response-splitting`. Identify request splitting differently from response splitting in query results. @@ -58,8 +58,8 @@ JavaScript/TypeScript New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * A new query titled "Local information disclosure in a temporary directory" (:code:`java/local-temp-file-or-directory-information-disclosure`) has been added. This query finds uses of APIs that leak potentially sensitive information to other local users via the system temporary directory. @@ -137,8 +137,8 @@ C/C++ * Added a :code:`isStructuredBinding` predicate to the :code:`Variable` class which holds when the variable is declared as part of a structured binding declaration. -Java -"""" +Java/Kotlin +""""""""""" * Added predicates :code:`ClassOrInterface.getAPermittedSubtype` and :code:`isSealed` exposing information about sealed classes. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.3.rst index bd7bf378760..0a5c75d06d6 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.3.rst @@ -124,8 +124,8 @@ C/C++ * Many queries now support structured bindings, as structured bindings are now handled in the IR translation. -Java -"""" +Java/Kotlin +""""""""""" * Add support for :code:`CharacterLiteral` in :code:`CompileTimeConstantExpr.getStringValue()` @@ -152,8 +152,8 @@ Ruby New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added :code:`hasDescendant(RefType anc, Type sub)` * Added :code:`RefType.getADescendant()` diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.4.rst index eaccd2cd37b..a9cb1ddde70 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.8.4.rst @@ -38,8 +38,8 @@ C/C++ * The :code:`cpp/overflow-destination`, :code:`cpp/unclear-array-index-validation`, and :code:`cpp/uncontrolled-allocation-size` queries have been modernized and converted to :code:`path-problem` queries and provide more true positive results. * The :code:`cpp/system-data-exposure` query has been increased from :code:`medium` to :code:`high` precision, following a number of improvements to the query logic. -Java -"""" +Java/Kotlin +""""""""""" * Updated "Local information disclosure in a temporary directory" (:code:`java/local-temp-file-or-directory-information-disclosure`) to remove false-positives when OS is properly used as logical guard. @@ -52,8 +52,8 @@ JavaScript/TypeScript New Queries ~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The query "Insertion of sensitive information into log files" (:code:`java/sensitive-logging`) has been promoted from experimental to the main query pack. This query was originally `submitted as an experimental query by @luchua-bc `__. @@ -79,8 +79,8 @@ C# * The flow state variants of :code:`isBarrier` and :code:`isAdditionalFlowStep` are no longer exposed in the taint tracking library. The :code:`isSanitizer` and :code:`isAdditionalTaintStep` predicates should be used instead. -Java -"""" +Java/Kotlin +""""""""""" * The flow state variants of :code:`isBarrier` and :code:`isAdditionalFlowStep` are no longer exposed in the taint tracking library. The :code:`isSanitizer` and :code:`isAdditionalTaintStep` predicates should be used instead. @@ -109,8 +109,8 @@ C# * All deprecated predicates/classes/modules that have been deprecated for over a year have been deleted. -Java -"""" +Java/Kotlin +""""""""""" * Added new guards :code:`IsWindowsGuard`, :code:`IsSpecificWindowsVariant`, :code:`IsUnixGuard`, and :code:`IsSpecificUnixVariant` to detect OS specific guards. * Added a new predicate :code:`getSystemProperty` that gets all expressions that retrieve system properties from a variety of sources (eg. alternative JDK API's, Google Guava, Apache Commons, Apache IO, etc.). @@ -150,8 +150,8 @@ C# * Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. -Java -"""" +Java/Kotlin +""""""""""" * Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. @@ -193,8 +193,8 @@ C# * The data flow and taint tracking libraries have been extended with versions of :code:`isBarrierIn`, :code:`isBarrierOut`, and :code:`isBarrierGuard`, respectively :code:`isSanitizerIn`, :code:`isSanitizerOut`, and :code:`isSanitizerGuard`, that support flow states. -Java -"""" +Java/Kotlin +""""""""""" * The data flow and taint tracking libraries have been extended with versions of :code:`isBarrierIn`, :code:`isBarrierOut`, and :code:`isBarrierGuard`, respectively :code:`isSanitizerIn`, :code:`isSanitizerOut`, and :code:`isSanitizerGuard`, that support flow states. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.0.rst index 7f9b723edc1..3b289245398 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.0.rst @@ -53,8 +53,8 @@ C/C++ * The :code:`cpp/command-line-injection` query now takes into account calling contexts across string concatenations. This removes false positives due to mismatched calling contexts before and after string concatenations. * A new query, "Potential exposure of sensitive system data to an unauthorized control sphere" (:code:`cpp/potential-system-data-exposure`) has been added. This query is focused on exposure of information that is highly likely to be sensitive, whereas the similar query "Exposure of system data to an unauthorized control sphere" (:code:`cpp/system-data-exposure`) is focused on exposure of information on a channel that is more likely to be intercepted by an attacker. -Java -"""" +Java/Kotlin +""""""""""" * Fixed "Local information disclosure in a temporary directory" (:code:`java/local-temp-file-or-directory-information-disclosure`) to resolve false-negatives when OS isn't properly used as logical guard. * The :code:`SwitchCase.getRuleExpression()` predicate now gets expressions for case rules with an expression on the right-hand side of the arrow belonging to both :code:`SwitchStmt` and :code:`SwitchExpr`, and the corresponding :code:`getRuleStatement()` no longer returns an :code:`ExprStmt` in either case. Previously :code:`SwitchStmt` and :code:`SwitchExpr` behaved differently in @@ -87,8 +87,8 @@ Ruby Query Metadata Changes ~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added the :code:`security-severity` tag to several queries. @@ -120,8 +120,8 @@ C# * The recently added flow-state versions of :code:`isBarrierIn`, :code:`isBarrierOut`, :code:`isSanitizerIn`, and :code:`isSanitizerOut` in the data flow and taint tracking libraries have been removed. -Java -"""" +Java/Kotlin +""""""""""" * The recently added flow-state versions of :code:`isBarrierIn`, :code:`isBarrierOut`, :code:`isSanitizerIn`, and :code:`isSanitizerOut` in the data flow and taint tracking libraries have been removed. * The :code:`getUrl` predicate of :code:`DeclaredRepository` in :code:`MavenPom.qll` has been renamed to :code:`getRepositoryUrl`. @@ -153,8 +153,8 @@ C/C++ * The :code:`semmle.code.cpp.security.SensitiveExprs` library has been enhanced with some additional rules for detecting credentials. -Java -"""" +Java/Kotlin +""""""""""" * Added guard precondition support for assertion methods for popular testing libraries (e.g. Junit 4, Junit 5, TestNG). @@ -192,7 +192,7 @@ C/C++ * A new library :code:`semmle.code.cpp.security.PrivateData` has been added. The new library heuristically detects variables and functions dealing with sensitive private data, such as e-mail addresses and credit card numbers. -Java -"""" +Java/Kotlin +""""""""""" * There are now QL classes ErrorExpr and ErrorStmt. These may be generated by upgrade or downgrade scripts when databases cannot be fully converted. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.1.rst index 75ba1f4d7a6..0a2cd31ba3b 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.1.rst @@ -27,8 +27,8 @@ Query Packs Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Query :code:`java/insecure-cookie` no longer produces a false positive if :code:`cookie.setSecure(...)` is called passing a constant that always equals :code:`true`. @@ -59,8 +59,8 @@ Language Libraries Bug Fixes ~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * The QL class :code:`JumpStmt` has been made the superclass of :code:`BreakStmt`, :code:`ContinueStmt` and :code:`YieldStmt`. This allows directly using its inherited predicates without having to explicitly cast to :code:`JumpStmt` first. @@ -77,8 +77,8 @@ C# * The signature of :code:`allowImplicitRead` on :code:`DataFlow::Configuration` and :code:`TaintTracking::Configuration` has changed from :code:`allowImplicitRead(DataFlow::Node node, DataFlow::Content c)` to :code:`allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c)`. -Java -"""" +Java/Kotlin +""""""""""" * The signature of :code:`allowImplicitRead` on :code:`DataFlow::Configuration` and :code:`TaintTracking::Configuration` has changed from :code:`allowImplicitRead(DataFlow::Node node, DataFlow::Content c)` to :code:`allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c)`. @@ -101,8 +101,8 @@ C/C++ * More Windows pool allocation functions are now detected as :code:`AllocationFunction`\ s. * The :code:`semmle.code.cpp.commons.Buffer` library has been enhanced to handle array members of classes that do not specify a size. -Java -"""" +Java/Kotlin +""""""""""" * Improved the data flow support for the Android class :code:`SharedPreferences$Editor`. Specifically, the fluent logic of some of its methods is now taken into account when calculating data flow. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.2.rst index f57eb1292bb..ff7548ce259 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.2.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.2.rst @@ -52,8 +52,8 @@ C/C++ * The "XML external entity expansion" (:code:`cpp/external-entity-expansion`) query has been extended to support a broader selection of XML libraries and interfaces. -Java -"""" +Java/Kotlin +""""""""""" * Query :code:`java/insecure-cookie` now tolerates setting a cookie's secure flag to :code:`request.isSecure()`. This means servlets that intentionally accept unencrypted connections will no longer raise an alert. * The query :code:`java/non-https-urls` has been simplified and no longer requires its sinks to be :code:`MethodAccess`\ es. @@ -79,8 +79,8 @@ Python Query Metadata Changes ~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Query :code:`java/predictable-seed` now has a tag for CWE-337. @@ -106,8 +106,8 @@ Python Minor Analysis Improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * Added models for the libraries OkHttp and Retrofit. * Add taint models for the following :code:`File` methods: @@ -150,8 +150,8 @@ JavaScript/TypeScript New Features ~~~~~~~~~~~~ -Java -"""" +Java/Kotlin +""""""""""" * A number of new classes and methods related to the upcoming Kotlin support have been added. These are not yet stable, as Kotlin support is still under development. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.3.rst index 04402dcc667..fe8834674d5 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.9.3.rst @@ -72,8 +72,8 @@ Golang * Fixed sanitization by calls to :code:`strings.Replace` and :code:`strings.ReplaceAll` in queries :code:`go/log-injection` and :code:`go/unsafe-quoting`. -Java -"""" +Java/Kotlin +""""""""""" * Query :code:`java/sensitive-log` has received several improvements. @@ -91,8 +91,8 @@ Golang * A new query *Log entries created from user input* (:code:`go/log-injection`) has been added. The query reports user-provided data reaching calls to logging methods. * Added a new query, :code:`go/unexpected-nil-value`, to find calls to :code:`Wrap` from :code:`pkg/errors` where the error argument is always nil. -Java -"""" +Java/Kotlin +""""""""""" * Two new queries "Inefficient regular expression" (:code:`java/redos`) and "Polynomial regular expression used on uncontrolled data" (:code:`java/polynomial-redos`) have been added. These queries help find instances of Regular Expression Denial of Service vulnerabilities. @@ -146,8 +146,8 @@ Golang * Fixed a bug where dataflow steps were ignored if both ends were inside the initialiser routine of a file-level variable. * The method predicate :code:`getACalleeIncludingExternals` on :code:`DataFlow::CallNode` and the function :code:`viableCallable` in :code:`DataFlowDispatch` now also work for calls to functions via a variable, where the function can be determined using local flow. -Java -"""" +Java/Kotlin +""""""""""" * Fixed a sanitizer of the query :code:`java/android/intent-redirection`. Now, for an intent to be considered safe against intent redirection, both its package name and class name must be checked. @@ -175,8 +175,8 @@ Golang * The :code:`codeql/go-upgrades` CodeQL pack has been removed. All database upgrade scripts have been merged into the :code:`codeql/go-all` CodeQL pack. -Java -"""" +Java/Kotlin +""""""""""" * The QL class :code:`FloatingPointLiteral` has been renamed to :code:`FloatLiteral`. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 35f75408e51..67722290b36 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,9 @@ A list of queries for each suite and language `is available here `." CodeQL command-line interface ----------------------------- -The CodeQL command-line interface (CLI) is primarily used to create databases for -security research. You can also query CodeQL databases directly from the command line +The CodeQL command-line interface (CLI) is primarily used to create databases for +security research. You can also query CodeQL databases directly from the command line or using the Visual Studio Code extension. -The CodeQL CLI can be downloaded from `GitHub releases `__. -For more information, see "`CodeQL CLI `__" and the `CLI changelog `__. +The CodeQL CLI can be downloaded from "`GitHub releases `__." +For more information, see "`CodeQL CLI `__" and the ":ref:`Change log `." CodeQL packs ----------------------------- @@ -38,15 +37,15 @@ maintained by GitHub are: - ``codeql/python-all`` (`changelog `__, `source `__) - ``codeql/ruby-queries`` (`changelog `__, `source `__) - ``codeql/ruby-all`` (`changelog `__, `source `__) +- ``codeql/swift-queries`` (`changelog `__, `source `__) +- ``codeql/swift-all`` (`changelog `__, `source `__) For more information, see "`About CodeQL packs `__." CodeQL bundle ----------------------------- -The CodeQL bundle consists of the CodeQL CLI together with the standard CodeQL query and library packs -maintained by GitHub. The bundle can be downloaded from `GitHub releases `__. -Use this when running `code scanning with CodeQL `__ on GitHub Actions or in another CI system. +The CodeQL bundle consists of the CodeQL CLI together with the standard CodeQL query and library packs maintained by GitHub. The bundle is used by the CodeQL action in GitHub to generate code scanning results. If you use an external CI system, you can download the bundle from `GitHub releases `__, generate code scanning results, and upload them to GitHub. CodeQL for Visual Studio Code ----------------------------- @@ -54,4 +53,4 @@ CodeQL for Visual Studio Code You can analyze CodeQL databases in Visual Studio Code using the CodeQL extension, which provides an enhanced environment for writing and running custom queries and viewing the results. For more information, see "`CodeQL -for Visual Studio Code `__." \ No newline at end of file +for Visual Studio Code `__." diff --git a/docs/codeql/conf.py b/docs/codeql/conf.py index 5bc008b7a10..15ea776fb07 100644 --- a/docs/codeql/conf.py +++ b/docs/codeql/conf.py @@ -67,7 +67,7 @@ def setup(sphinx): # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. -language = None +language = 'en' # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False diff --git a/docs/codeql/index.html b/docs/codeql/index.html index 0d3ff357b4b..fff024c8d84 100644 --- a/docs/codeql/index.html +++ b/docs/codeql/index.html @@ -35,13 +35,6 @@ @@ -70,32 +68,30 @@

    CodeQL documentation

    -

    Discover vulnerabilities across a codebase with CodeQL, our industry-leading semantic code - analysis - engine. CodeQL lets you query code as though it were data. Write a query to find all variants of a +

    CodeQL enables you to query code as though it were data. Write a query to find all variants of a vulnerability, eradicating it forever. Then share your query to help others do the same.

    -

    - BACKGROUND INFORMATION -

    +

    + CODEQL RELEASE INFORMATION +

    -
    - -
    About CodeQL
    -
    -
    Learn more about how CodeQL works...
    -
    Supported languages and frameworks
    View the languages, libraries, and frameworks supported in the - latest version of CodeQL...
    + latest release of CodeQL...
    +
    +
    + +
    Change logs
    +
    +
    Read about the improvements to the queries, libraries, and tooling in each release...
    - -
    Academic publications
    +
    +
    CodeQL cverage of CWEs
    -
    Read academic articles published by the team behind CodeQL... -
    +
    Detailed information on the coverage of Common Weakness Enumerations (CWEs) in the latest release...
    -
    -

    - CODEQL TOOLS -

    +

    + LEARN TO WRITE CODEQL +

    -
    -
    - -
    CodeQL CLI
    -
    -
    The CodeQL command-line interface (CLI) is used - to create - databases for security research....
    -
    -
    - -
    CodeQL for Visual Studio Code
    -
    -
    CodeQL for Visual Studio Code adds rich language - support for CodeQL...
    -
    -
    - -
    Code scanning with CodeQL
    -
    -
    Use code scanning with CodeQL to analyze the code in a GitHub - repository to find - security - vulnerabilities...
    -
    - +
    + +
    About CodeQL
    +
    +
    Learn what CodeQL is and how it works...
    +
    +
    + +
    Writing CodeQL queries
    +
    +
    Get to know more about queries and learn some key + query-writing skills by solving puzzles...
    +
    +
    + +
    CodeQL language guides
    +
    +
    Experiment and learn how to write effective and efficient + queries for CodeQL databases generated from the languages supported in CodeQL + analysis...
    +
    +
    + +
    Running CodeQL queries
    +
    +
    Learn about the options available for running CodeQL queries on one or multiple codebases...
    - - - - -
    -
    -

    - CODEQL GUIDES -

    +

    + CODEQL RESOURCES +

    -
    -
    - -
    Writing CodeQL queries
    -
    -
    Get to know more about queries and learn some key - query-writing skills by solving puzzles.....
    -
    -
    - -
    CodeQL language guides
    -
    -
    Experiment and learn how to write effective and efficient - queries for CodeQL databases generated from the languages supported in CodeQL - analysis...
    +
    + +
    CodeQL CLI releases
    +
    +
    Download the latest version of the CodeQL CLI...
    +
    +
    + +
    CodeQL extension for Visual Studio Code
    +
    +
    Download the extension from the Visual Studio Code Marketplace...
    +
    +
    + +
    CodeQL repository
    +
    +
    Contribute to the source code of the libraries and queries for CodeQL...
    -

    +

    CODEQL REFERENCE DOCS -

    +
    @@ -213,10 +202,8 @@
    View the query help for the queries included in the code scanning query suites...
    -
    -
    -

    Product

    +

    Product

    -

    Platform

    +

    Platform

    -

    Support

    +

    Support

    -

    Company

    +

    Company

    diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index b78fb901305..4b941c7d17f 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -16,7 +16,7 @@ .NET Core up to 3.1 .NET 5, .NET 6, .NET 7, .NET 8","``.sln``, ``.csproj``, ``.cs``, ``.cshtml``, ``.xaml``" - Go (aka Golang), "Go up to 1.22", "Go 1.11 or more recent", ``.go`` + Go (aka Golang), "Go up to 1.23", "Go 1.11 or more recent", ``.go`` Java,"Java 7 to 22 [5]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [6]_",``.java`` @@ -25,7 +25,7 @@ Python [8]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12",Not applicable,``.py`` Ruby [9]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" Swift [10]_,"Swift 5.4-5.10","Swift compiler","``.swift``" - TypeScript [11]_,"2.6-5.5",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" + TypeScript [11]_,"2.6-5.6",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group diff --git a/docs/codeql/writing-codeql-queries/index.rst b/docs/codeql/writing-codeql-queries/index.rst index 0459156a49b..1c492083034 100644 --- a/docs/codeql/writing-codeql-queries/index.rst +++ b/docs/codeql/writing-codeql-queries/index.rst @@ -9,8 +9,11 @@ Get to know more about queries and learn some key query-writing skills by solvin - :ref:`QL tutorials `: Solve puzzles to learn the basics of QL before you analyze code with CodeQL. The tutorials teach you how to write queries and introduce you to key logic concepts along the way. +- :ref:`Running CodeQL queries `: Guide to running queries as you try out the tutorials and start to develop your own queries. + .. toctree:: :hidden: codeql-queries ql-tutorials + running-codeql-queries diff --git a/docs/codeql/writing-codeql-queries/running-codeql-queries.rst b/docs/codeql/writing-codeql-queries/running-codeql-queries.rst new file mode 100644 index 00000000000..f27302d56fa --- /dev/null +++ b/docs/codeql/writing-codeql-queries/running-codeql-queries.rst @@ -0,0 +1,38 @@ +:tocdepth: 1 + +.. _running-codeql-queries: + +.. meta:: + :description: Overview of how to run CodeQL queries locally, in GitHub, or in your CI system. + :keywords: CodeQL, code analysis, CodeQL analysis, code scanning, GitHub code scanning, writing a new query, testing a new query, code scanning alerts + +Running CodeQL queries +====================== + +There are several options available for running one or more CodeQL queries on a codebase. The best option depends on what your aims are. + +Work through a CodeQL tutorial +------------------------------ + +If you're working through a CodeQL tutorial, the CodeQL extension for Visual Studio Code allows you to run the queries in the tutorial. Unless you want to run the query on a specific code base, it's easiest to run queries on one of the many CodeQL databases that are available on GitHub. To get started, see "`Installing CodeQL for Visual Studio Code `__". + +Develop a new CodeQL query +-------------------------- + +If you're developing a new query, the CodeQL extension for Visual Studio Code allows you to run a query and compare the results with previous runs as you refine the query. The extension also provides autocomplete suggestions, syntax highlighting, and other features that make it easier to write and debug queries. To get started, see "`Installing CodeQL for Visual Studio Code `__". + +When you're ready to test the query on a wide range of codebases, you can choose from the pre-defined sets of CodeQL databases or define a custom group of codebases to run the query against. For more information, see "`Running CodeQL queries at scale with multi-repository variant analysis `__". + +Run your query against a specific codebase +------------------------------------------- + +If the codebase that you want to run your query against doesn't have a CodeQL database, you can create one using the CodeQL CLI. For more information, see "`Setting up the CodeQL CLI `__" and "`Preparing your code for CodeQL analysis `__". + +Once you have created a CodeQL database, you can make the database available to the CodeQL extension in Visual Studio Code, or run the query using the CodeQL CLI. For more information, see "`Analyzing your code with CodeQL queries `__". + +Run the standard CodeQL queries +------------------------------- + +The easiest way to run the standard CodeQL queries on a repository hosted on the GitHub platform is to enable code scanning with CodeQL (this requires GitHub Actions to be enabled). When you enable default setup, you can choose from a default set of security queries or an extended set of security queries. Any results are shown as code scanning alerts on the **Security** tab of the repository. For more information, see "`Configuring default setup for code scanning `__". + +If you want to run the standard CodeQL queries on a repository where GitHub Actions are disabled, you can use the CodeQL CLI in your existing CI system. For more information, see "`Using code scanning with your existing CI system `__". diff --git a/docs/prepare-db-upgrade.md b/docs/prepare-db-upgrade.md index 7b0a1c6fe48..58806ecebeb 100644 --- a/docs/prepare-db-upgrade.md +++ b/docs/prepare-db-upgrade.md @@ -59,14 +59,16 @@ extended.rel: reorder input.rel (int id, string name, int parent) id name parent // QLL library, and will run in the context of the *old* dbscheme. relationname.rel: run relationname.qlo -// Create relationname.rel by running the query predicate 'predicatename' in -// relationname.qlo and writing the query results as a .rel file. This command +// Create relation1.rel by running the query predicate 'predicate1' in upgrade.qlo +// and writing the query results as a .rel file, and running 'predicate2' in +// upgrade.qlo and writing the query results as a .rel file. This command // expects the upgrade relation to be a query predicate, which has the advantage // of allowing multiple upgrade relations to appear in the same .ql file as -// multiple query predicates. The query file should be named relationname.ql and +// multiple query predicates. The query file should be named upgrade.ql and // should be placed in the upgrade directory. It should avoid using the default // QLL library, and will run in the context of the *old* dbscheme. -relationname.rel: run relationname.qlo predicatename +relation1.rel: run upgrade.qlo predicate1 +relation2.rel: run upgrade.qlo predicate2 ``` ### Testing your scripts diff --git a/go/actions/test/action.yml b/go/actions/test/action.yml index cc92ede59b9..5228f440971 100644 --- a/go/actions/test/action.yml +++ b/go/actions/test/action.yml @@ -4,7 +4,7 @@ inputs: go-test-version: description: Which Go version to use for running the tests required: false - default: ~1.22.0 + default: "~1.23.1" run-code-checks: description: Whether to run formatting, code and qhelp generation checks required: false diff --git a/go/documentation/library-coverage/coverage.csv b/go/documentation/library-coverage/coverage.csv index 093aa1ec57e..364e17aa94b 100644 --- a/go/documentation/library-coverage/coverage.csv +++ b/go/documentation/library-coverage/coverage.csv @@ -1,166 +1,121 @@ -package,sink,source,summary,sink:command-injection,sink:credentials-key,sink:jwt,sink:log-injection,sink:path-injection,sink:regex-use[0],sink:regex-use[1],sink:regex-use[c],sink:request-forgery,sink:request-forgery[TCP Addr + Port],sink:url-redirection,sink:url-redirection[0],sink:url-redirection[receiver],sink:xpath-injection,source:remote,summary:taint,summary:value -,,,8,,,,,,,,,,,,,,,,3,5 -archive/tar,,,5,,,,,,,,,,,,,,,,5, -archive/zip,,,6,,,,,,,,,,,,,,,,6, -bufio,,,17,,,,,,,,,,,,,,,,17, -bytes,,,43,,,,,,,,,,,,,,,,43, -clevergo.tech/clevergo,1,,,,,,,,,,,,,,,1,,,, -compress/bzip2,,,1,,,,,,,,,,,,,,,,1, -compress/flate,,,4,,,,,,,,,,,,,,,,4, -compress/gzip,,,3,,,,,,,,,,,,,,,,3, -compress/lzw,,,1,,,,,,,,,,,,,,,,1, -compress/zlib,,,4,,,,,,,,,,,,,,,,4, -container/heap,,,5,,,,,,,,,,,,,,,,5, -container/list,,,20,,,,,,,,,,,,,,,,20, -container/ring,,,5,,,,,,,,,,,,,,,,5, -context,,,5,,,,,,,,,,,,,,,,5, -crypto,,,1,,,,,,,,,,,,,,,,1, -crypto/cipher,,,3,,,,,,,,,,,,,,,,3, -crypto/rsa,,,2,,,,,,,,,,,,,,,,2, -crypto/tls,,,3,,,,,,,,,,,,,,,,3, -crypto/x509,,,1,,,,,,,,,,,,,,,,1, -database/sql,,,7,,,,,,,,,,,,,,,,7, -database/sql/driver,,,4,,,,,,,,,,,,,,,,4, -encoding,,,4,,,,,,,,,,,,,,,,4, -encoding/ascii85,,,2,,,,,,,,,,,,,,,,2, -encoding/asn1,,,8,,,,,,,,,,,,,,,,8, -encoding/base32,,,3,,,,,,,,,,,,,,,,3, -encoding/base64,,,3,,,,,,,,,,,,,,,,3, -encoding/binary,,,2,,,,,,,,,,,,,,,,2, -encoding/csv,,,5,,,,,,,,,,,,,,,,5, -encoding/gob,,,7,,,,,,,,,,,,,,,,7, -encoding/hex,,,3,,,,,,,,,,,,,,,,3, -encoding/json,,,14,,,,,,,,,,,,,,,,14, -encoding/pem,,,3,,,,,,,,,,,,,,,,3, -encoding/xml,,,23,,,,,,,,,,,,,,,,23, -errors,,,3,,,,,,,,,,,,,,,,3, -expvar,,,6,,,,,,,,,,,,,,,,6, -fmt,3,,16,,,,3,,,,,,,,,,,,16, -github.com/ChrisTrenkamp/goxpath,3,,,,,,,,,,,,,,,,3,,, -github.com/Sirupsen/logrus,118,,,,,,118,,,,,,,,,,,,, -github.com/antchfx/htmlquery,4,,,,,,,,,,,,,,,,4,,, -github.com/antchfx/jsonquery,4,,,,,,,,,,,,,,,,4,,, -github.com/antchfx/xmlquery,8,,,,,,,,,,,,,,,,8,,, -github.com/antchfx/xpath,4,,,,,,,,,,,,,,,,4,,, -github.com/appleboy/gin-jwt,1,,,,1,,,,,,,,,,,,,,, -github.com/astaxie/beego,16,6,7,,,,11,4,,,,,,1,,,,6,7, -github.com/astaxie/beego/context,2,15,1,,,,,1,,,,,,1,,,,15,1, -github.com/astaxie/beego/logs,22,,,,,,22,,,,,,,,,,,,, -github.com/astaxie/beego/utils,1,,13,,,,1,,,,,,,,,,,,13, -github.com/beego/beego,16,6,7,,,,11,4,,,,,,1,,,,6,7, -github.com/beego/beego/context,2,15,1,,,,,1,,,,,,1,,,,15,1, -github.com/beego/beego/core/logs,22,,,,,,22,,,,,,,,,,,,, -github.com/beego/beego/core/utils,1,,13,,,,1,,,,,,,,,,,,13, -github.com/beego/beego/logs,22,,,,,,22,,,,,,,,,,,,, -github.com/beego/beego/server/web,16,6,7,,,,11,4,,,,,,1,,,,6,7, -github.com/beego/beego/server/web/context,2,15,1,,,,,1,,,,,,1,,,,15,1, -github.com/beego/beego/utils,1,,13,,,,1,,,,,,,,,,,,13, -github.com/clevergo/clevergo,1,,,,,,,,,,,,,,,1,,,, -github.com/codeskyblue/go-sh,4,,,4,,,,,,,,,,,,,,,, -github.com/couchbase/gocb,,,18,,,,,,,,,,,,,,,,18, -github.com/couchbaselabs/gocb,,,18,,,,,,,,,,,,,,,,18, -github.com/crankycoder/xmlpath,2,,,,,,,,,,,,,,,,2,,, -github.com/cristalhq/jwt,1,,,,1,,,,,,,,,,,,,,, -github.com/davecgh/go-spew/spew,9,,,,,,9,,,,,,,,,,,,, -github.com/dgrijalva/jwt-go,3,,9,,2,1,,,,,,,,,,,,,9, -github.com/elazarl/goproxy,2,2,2,,,,2,,,,,,,,,,,2,2, -github.com/emicklei/go-restful,,7,,,,,,,,,,,,,,,,7,, -github.com/evanphx/json-patch,,,12,,,,,,,,,,,,,,,,12, -github.com/form3tech-oss/jwt-go,2,,,,2,,,,,,,,,,,,,,, -github.com/gin-gonic/gin,3,46,2,,,,,3,,,,,,,,,,46,2, -github.com/go-chi/chi,,3,,,,,,,,,,,,,,,,3,, -github.com/go-chi/jwtauth,1,,,,1,,,,,,,,,,,,,,, -github.com/go-jose/go-jose,2,,,,2,,,,,,,,,,,,,,, -github.com/go-jose/go-jose/jwt,1,,4,,,1,,,,,,,,,,,,,4, -github.com/go-kit/kit/auth/jwt,1,,,,1,,,,,,,,,,,,,,, -github.com/go-pg/pg/orm,,,6,,,,,,,,,,,,,,,,6, -github.com/go-xmlpath/xmlpath,2,,,,,,,,,,,,,,,,2,,, -github.com/gobwas/ws,,2,,,,,,,,,,,,,,,,2,, -github.com/gofiber/fiber,5,,,,,,,4,,,,,,,,1,,,, -github.com/gogf/gf-jwt,1,,,,1,,,,,,,,,,,,,,, -github.com/going/toolkit/xmlpath,2,,,,,,,,,,,,,,,,2,,, -github.com/golang-jwt/jwt,3,,11,,2,1,,,,,,,,,,,,,11, -github.com/golang/glog,90,,,,,,90,,,,,,,,,,,,, -github.com/golang/protobuf/proto,,,4,,,,,,,,,,,,,,,,4, -github.com/gorilla/mux,,1,,,,,,,,,,,,,,,,1,, -github.com/gorilla/websocket,,3,,,,,,,,,,,,,,,,3,, -github.com/jbowtie/gokogiri/xml,4,,,,,,,,,,,,,,,,4,,, -github.com/jbowtie/gokogiri/xpath,1,,,,,,,,,,,,,,,,1,,, -github.com/json-iterator/go,,,4,,,,,,,,,,,,,,,,4, -github.com/kataras/iris/context,6,,,,,,,6,,,,,,,,,,,, -github.com/kataras/iris/middleware/jwt,2,,,,2,,,,,,,,,,,,,,, -github.com/kataras/iris/server/web/context,6,,,,,,,6,,,,,,,,,,,, -github.com/kataras/jwt,5,,,,5,,,,,,,,,,,,,,, -github.com/labstack/echo,3,12,2,,,,,2,,,,,,1,,,,12,2, -github.com/lestrrat-go/jwx,1,,,,1,,,,,,,,,,,,,,, -github.com/lestrrat-go/jwx/jwk,1,,,,1,,,,,,,,,,,,,,, -github.com/lestrrat-go/libxml2/parser,3,,,,,,,,,,,,,,,,3,,, -github.com/lestrrat/go-jwx/jwk,1,,,,1,,,,,,,,,,,,,,, -github.com/masterzen/xmlpath,2,,,,,,,,,,,,,,,,2,,, -github.com/moovweb/gokogiri/xml,4,,,,,,,,,,,,,,,,4,,, -github.com/moovweb/gokogiri/xpath,1,,,,,,,,,,,,,,,,1,,, -github.com/ory/fosite/token/jwt,2,,,,2,,,,,,,,,,,,,,, -github.com/revel/revel,2,23,10,,,,,1,,,,,,1,,,,23,10, -github.com/robfig/revel,2,23,10,,,,,1,,,,,,1,,,,23,10, -github.com/santhosh-tekuri/xpathparser,2,,,,,,,,,,,,,,,,2,,, -github.com/sendgrid/sendgrid-go/helpers/mail,,,1,,,,,,,,,,,,,,,,1, -github.com/sirupsen/logrus,118,,,,,,118,,,,,,,,,,,,, -github.com/spf13/afero,34,,,,,,,34,,,,,,,,,,,, -github.com/square/go-jose,2,,,,2,,,,,,,,,,,,,,, -github.com/square/go-jose/jwt,1,,4,,,1,,,,,,,,,,,,,4, -github.com/valyala/fasthttp,35,50,5,,,,,8,,,,17,8,2,,,,50,5, -go.uber.org/zap,33,,11,,,,33,,,,,,,,,,,,11, -golang.org/x/crypto/ssh,4,,,4,,,,,,,,,,,,,,,, -golang.org/x/net/context,,,5,,,,,,,,,,,,,,,,5, -golang.org/x/net/html,,,16,,,,,,,,,,,,,,,,16, -golang.org/x/net/websocket,,2,,,,,,,,,,,,,,,,2,, -google.golang.org/protobuf/internal/encoding/text,,,1,,,,,,,,,,,,,,,,1, -google.golang.org/protobuf/internal/impl,,,2,,,,,,,,,,,,,,,,2, -google.golang.org/protobuf/proto,,,8,,,,,,,,,,,,,,,,8, -google.golang.org/protobuf/reflect/protoreflect,,,1,,,,,,,,,,,,,,,,1, -gopkg.in/couchbase/gocb,,,18,,,,,,,,,,,,,,,,18, -gopkg.in/glog,90,,,,,,90,,,,,,,,,,,,, -gopkg.in/go-jose/go-jose,2,,,,2,,,,,,,,,,,,,,, -gopkg.in/go-jose/go-jose/jwt,1,,4,,,1,,,,,,,,,,,,,4, -gopkg.in/go-xmlpath/xmlpath,2,,,,,,,,,,,,,,,,2,,, -gopkg.in/macaron,1,12,1,,,,,,,,,,,,,1,,12,1, -gopkg.in/square/go-jose,2,,,,2,,,,,,,,,,,,,,, -gopkg.in/square/go-jose/jwt,1,,4,,,1,,,,,,,,,,,,,4, -gopkg.in/xmlpath,2,,,,,,,,,,,,,,,,2,,, -gopkg.in/yaml,,,9,,,,,,,,,,,,,,,,9, -html,,,2,,,,,,,,,,,,,,,,2, -html/template,,,6,,,,,,,,,,,,,,,,6, -io,,,19,,,,,,,,,,,,,,,,19, -io/fs,,,12,,,,,,,,,,,,,,,,12, -io/ioutil,5,,2,,,,,5,,,,,,,,,,,2, -k8s.io/api/core,,,10,,,,,,,,,,,,,,,,10, -k8s.io/apimachinery/pkg/runtime,,,47,,,,,,,,,,,,,,,,47, -k8s.io/klog,90,,,,,,90,,,,,,,,,,,,, -launchpad.net/xmlpath,2,,,,,,,,,,,,,,,,2,,, -log,20,,3,,,,20,,,,,,,,,,,,3, -math/big,,,1,,,,,,,,,,,,,,,,1, -mime,,,5,,,,,,,,,,,,,,,,5, -mime/multipart,,,8,,,,,,,,,,,,,,,,8, -mime/quotedprintable,,,1,,,,,,,,,,,,,,,,1, -net,,,20,,,,,,,,,,,,,,,,20, -net/http,2,16,22,,,,,1,,,,,,,1,,,16,22, -net/http/httputil,,,10,,,,,,,,,,,,,,,,10, -net/mail,,,6,,,,,,,,,,,,,,,,6, -net/textproto,,,19,,,,,,,,,,,,,,,,19, -net/url,,,23,,,,,,,,,,,,,,,,23, -nhooyr.io/websocket,,2,,,,,,,,,,,,,,,,2,, -os,27,,4,1,,,,26,,,,,,,,,,,4, -os/exec,2,,,2,,,,,,,,,,,,,,,, -path,,,5,,,,,,,,,,,,,,,,5, -path/filepath,,,13,,,,,,,,,,,,,,,,13, -reflect,,,37,,,,,,,,,,,,,,,,37, -regexp,10,,20,,,,,,3,3,4,,,,,,,,20, -sort,,,1,,,,,,,,,,,,,,,,1, -strconv,,,9,,,,,,,,,,,,,,,,9, -strings,,,34,,,,,,,,,,,,,,,,34, -sync,,,10,,,,,,,,,,,,,,,,10, -sync/atomic,,,24,,,,,,,,,,,,,,,,24, -syscall,5,,8,5,,,,,,,,,,,,,,,8, -text/scanner,,,3,,,,,,,,,,,,,,,,3, -text/tabwriter,,,1,,,,,,,,,,,,,,,,1, -text/template,,,6,,,,,,,,,,,,,,,,6, +package,sink,source,summary,sink:command-injection,sink:credentials-key,sink:jwt,sink:path-injection,sink:regex-use[0],sink:regex-use[1],sink:regex-use[c],sink:request-forgery,sink:request-forgery[TCP Addr + Port],sink:url-redirection,sink:url-redirection[0],sink:url-redirection[receiver],sink:xpath-injection,source:environment,source:file,source:remote,summary:taint,summary:value +,,,8,,,,,,,,,,,,,,,,,3,5 +archive/tar,,,5,,,,,,,,,,,,,,,,,5, +archive/zip,,,6,,,,,,,,,,,,,,,,,6, +bufio,,,17,,,,,,,,,,,,,,,,,17, +bytes,,,43,,,,,,,,,,,,,,,,,43, +clevergo.tech/clevergo,1,,,,,,,,,,,,,,1,,,,,, +compress/bzip2,,,1,,,,,,,,,,,,,,,,,1, +compress/flate,,,4,,,,,,,,,,,,,,,,,4, +compress/gzip,,,3,,,,,,,,,,,,,,,,,3, +compress/lzw,,,1,,,,,,,,,,,,,,,,,1, +compress/zlib,,,4,,,,,,,,,,,,,,,,,4, +container/heap,,,5,,,,,,,,,,,,,,,,,5, +container/list,,,20,,,,,,,,,,,,,,,,,20, +container/ring,,,5,,,,,,,,,,,,,,,,,5, +context,,,5,,,,,,,,,,,,,,,,,5, +crypto,,,10,,,,,,,,,,,,,,,,,10, +database/sql,,,11,,,,,,,,,,,,,,,,,11, +encoding,,,77,,,,,,,,,,,,,,,,,77, +errors,,,3,,,,,,,,,,,,,,,,,3, +expvar,,,6,,,,,,,,,,,,,,,,,6, +fmt,,,16,,,,,,,,,,,,,,,,,16, +github.com/ChrisTrenkamp/goxpath,3,,,,,,,,,,,,,,,3,,,,, +github.com/antchfx/htmlquery,4,,,,,,,,,,,,,,,4,,,,, +github.com/antchfx/jsonquery,4,,,,,,,,,,,,,,,4,,,,, +github.com/antchfx/xmlquery,8,,,,,,,,,,,,,,,8,,,,, +github.com/antchfx/xpath,4,,,,,,,,,,,,,,,4,,,,, +github.com/appleboy/gin-jwt,1,,,,1,,,,,,,,,,,,,,,, +github.com/astaxie/beego,7,21,21,,,,5,,,,,,2,,,,,,21,21, +github.com/beego/beego,14,42,42,,,,10,,,,,,4,,,,,,42,42, +github.com/caarlos0/env,,5,2,,,,,,,,,,,,,,5,,,1,1 +github.com/clevergo/clevergo,1,,,,,,,,,,,,,,1,,,,,, +github.com/codeskyblue/go-sh,4,,,4,,,,,,,,,,,,,,,,, +github.com/couchbase/gocb,,,18,,,,,,,,,,,,,,,,,18, +github.com/couchbaselabs/gocb,,,18,,,,,,,,,,,,,,,,,18, +github.com/crankycoder/xmlpath,2,,,,,,,,,,,,,,,2,,,,, +github.com/cristalhq/jwt,1,,,,1,,,,,,,,,,,,,,,, +github.com/dgrijalva/jwt-go,3,,9,,2,1,,,,,,,,,,,,,,9, +github.com/elazarl/goproxy,,2,2,,,,,,,,,,,,,,,,2,2, +github.com/emicklei/go-restful,,7,,,,,,,,,,,,,,,,,7,, +github.com/evanphx/json-patch,,,12,,,,,,,,,,,,,,,,,12, +github.com/form3tech-oss/jwt-go,2,,,,2,,,,,,,,,,,,,,,, +github.com/gin-gonic/gin,3,46,2,,,,3,,,,,,,,,,,,46,2, +github.com/go-chi/chi,,3,,,,,,,,,,,,,,,,,3,, +github.com/go-chi/jwtauth,1,,,,1,,,,,,,,,,,,,,,, +github.com/go-jose/go-jose,3,,4,,2,1,,,,,,,,,,,,,,4, +github.com/go-kit/kit/auth/jwt,1,,,,1,,,,,,,,,,,,,,,, +github.com/go-pg/pg/orm,,,6,,,,,,,,,,,,,,,,,6, +github.com/go-xmlpath/xmlpath,2,,,,,,,,,,,,,,,2,,,,, +github.com/gobuffalo/envy,,7,,,,,,,,,,,,,,,7,,,, +github.com/gobwas/ws,,2,,,,,,,,,,,,,,,,,2,, +github.com/gofiber/fiber,5,,,,,,4,,,,,,,,1,,,,,, +github.com/gogf/gf-jwt,1,,,,1,,,,,,,,,,,,,,,, +github.com/going/toolkit/xmlpath,2,,,,,,,,,,,,,,,2,,,,, +github.com/golang-jwt/jwt,3,,11,,2,1,,,,,,,,,,,,,,11, +github.com/golang/protobuf/proto,,,4,,,,,,,,,,,,,,,,,4, +github.com/gorilla/mux,,1,,,,,,,,,,,,,,,,,1,, +github.com/gorilla/websocket,,3,,,,,,,,,,,,,,,,,3,, +github.com/hashicorp/go-envparse,,1,,,,,,,,,,,,,,,1,,,, +github.com/jbowtie/gokogiri/xml,4,,,,,,,,,,,,,,,4,,,,, +github.com/jbowtie/gokogiri/xpath,1,,,,,,,,,,,,,,,1,,,,, +github.com/joho/godotenv,,4,,,,,,,,,,,,,,,4,,,, +github.com/json-iterator/go,,,4,,,,,,,,,,,,,,,,,4, +github.com/kataras/iris/context,6,,,,,,6,,,,,,,,,,,,,, +github.com/kataras/iris/middleware/jwt,2,,,,2,,,,,,,,,,,,,,,, +github.com/kataras/iris/server/web/context,6,,,,,,6,,,,,,,,,,,,,, +github.com/kataras/jwt,5,,,,5,,,,,,,,,,,,,,,, +github.com/kelseyhightower/envconfig,,6,,,,,,,,,,,,,,,6,,,, +github.com/labstack/echo,3,12,2,,,,2,,,,,,1,,,,,,12,2, +github.com/lestrrat-go/jwx,2,,,,2,,,,,,,,,,,,,,,, +github.com/lestrrat-go/libxml2/parser,3,,,,,,,,,,,,,,,3,,,,, +github.com/lestrrat/go-jwx/jwk,1,,,,1,,,,,,,,,,,,,,,, +github.com/masterzen/xmlpath,2,,,,,,,,,,,,,,,2,,,,, +github.com/moovweb/gokogiri/xml,4,,,,,,,,,,,,,,,4,,,,, +github.com/moovweb/gokogiri/xpath,1,,,,,,,,,,,,,,,1,,,,, +github.com/ory/fosite/token/jwt,2,,,,2,,,,,,,,,,,,,,,, +github.com/revel/revel,2,23,10,,,,1,,,,,,1,,,,,,23,10, +github.com/robfig/revel,2,23,10,,,,1,,,,,,1,,,,,,23,10, +github.com/santhosh-tekuri/xpathparser,2,,,,,,,,,,,,,,,2,,,,, +github.com/sendgrid/sendgrid-go/helpers/mail,,,1,,,,,,,,,,,,,,,,,1, +github.com/spf13/afero,34,,,,,,34,,,,,,,,,,,,,, +github.com/square/go-jose,3,,4,,2,1,,,,,,,,,,,,,,4, +github.com/valyala/fasthttp,35,50,5,,,,8,,,,17,8,2,,,,,,50,5, +go.uber.org/zap,,,11,,,,,,,,,,,,,,,,,11, +golang.org/x/crypto/ssh,4,,,4,,,,,,,,,,,,,,,,, +golang.org/x/net/context,,,5,,,,,,,,,,,,,,,,,5, +golang.org/x/net/html,,,16,,,,,,,,,,,,,,,,,16, +golang.org/x/net/websocket,,2,,,,,,,,,,,,,,,,,2,, +google.golang.org/protobuf/internal/encoding/text,,,1,,,,,,,,,,,,,,,,,1, +google.golang.org/protobuf/internal/impl,,,2,,,,,,,,,,,,,,,,,2, +google.golang.org/protobuf/proto,,,8,,,,,,,,,,,,,,,,,8, +google.golang.org/protobuf/reflect/protoreflect,,,1,,,,,,,,,,,,,,,,,1, +gopkg.in/couchbase/gocb,,,18,,,,,,,,,,,,,,,,,18, +gopkg.in/go-jose/go-jose,3,,4,,2,1,,,,,,,,,,,,,,4, +gopkg.in/go-xmlpath/xmlpath,2,,,,,,,,,,,,,,,2,,,,, +gopkg.in/macaron,1,12,1,,,,,,,,,,,,1,,,,12,1, +gopkg.in/square/go-jose,3,,4,,2,1,,,,,,,,,,,,,,4, +gopkg.in/xmlpath,2,,,,,,,,,,,,,,,2,,,,, +gopkg.in/yaml,,,9,,,,,,,,,,,,,,,,,9, +html,,,8,,,,,,,,,,,,,,,,,8, +io,5,4,34,,,,5,,,,,,,,,,,4,,34, +k8s.io/api/core,,,10,,,,,,,,,,,,,,,,,10, +k8s.io/apimachinery/pkg/runtime,,,47,,,,,,,,,,,,,,,,,47, +launchpad.net/xmlpath,2,,,,,,,,,,,,,,,2,,,,, +log,,,3,,,,,,,,,,,,,,,,,3, +math/big,,,1,,,,,,,,,,,,,,,,,1, +mime,,,14,,,,,,,,,,,,,,,,,14, +net,2,16,100,,,,1,,,,,,,1,,,,,16,100, +nhooyr.io/websocket,,2,,,,,,,,,,,,,,,,,2,, +os,29,10,6,3,,,26,,,,,,,,,,7,3,,6, +path,,,18,,,,,,,,,,,,,,,,,18, +reflect,,,37,,,,,,,,,,,,,,,,,37, +regexp,10,,20,,,,,3,3,4,,,,,,,,,,20, +sort,,,1,,,,,,,,,,,,,,,,,1, +strconv,,,9,,,,,,,,,,,,,,,,,9, +strings,,,34,,,,,,,,,,,,,,,,,34, +sync,,,34,,,,,,,,,,,,,,,,,34, +syscall,5,2,8,5,,,,,,,,,,,,,2,,,8, +text/scanner,,,3,,,,,,,,,,,,,,,,,3, +text/tabwriter,,,1,,,,,,,,,,,,,,,,,1, +text/template,,,6,,,,,,,,,,,,,,,,,6, diff --git a/go/documentation/library-coverage/coverage.rst b/go/documentation/library-coverage/coverage.rst index 3030f7da828..848d989d2d5 100644 --- a/go/documentation/library-coverage/coverage.rst +++ b/go/documentation/library-coverage/coverage.rst @@ -7,31 +7,39 @@ Go framework & library support :widths: auto Framework / library,Package,Flow sources,Taint & value steps,Sinks (total) + `Afero `_,``github.com/spf13/afero*``,,,34 + `CleverGo `_,"``clevergo.tech/clevergo*``, ``github.com/clevergo/clevergo*``",,,2 `Couchbase official client(gocb) `_,"``github.com/couchbase/gocb*``, ``gopkg.in/couchbase/gocb*``",,36, `Couchbase unofficial client `_,``github.com/couchbaselabs/gocb*``,,18, `Echo `_,``github.com/labstack/echo*``,12,2,3 + `Fiber `_,``github.com/gofiber/fiber*``,,,5 `Fosite `_,``github.com/ory/fosite*``,,,2 `Gin `_,``github.com/gin-gonic/gin*``,46,2,3 + `Glog `_,"``github.com/golang/glog*``, ``gopkg.in/glog*``, ``k8s.io/klog*``",,, `Go JOSE `_,"``github.com/go-jose/go-jose*``, ``github.com/square/go-jose*``, ``gopkg.in/square/go-jose*``, ``gopkg.in/go-jose/go-jose*``",,16,12 `Go kit `_,``github.com/go-kit/kit*``,,,1 + `Go-spew `_,``github.com/davecgh/go-spew/spew*``,,, `Gokogiri `_,"``github.com/jbowtie/gokogiri*``, ``github.com/moovweb/gokogiri*``",,,10 `Iris `_,``github.com/kataras/iris*``,,,14 `Kubernetes `_,"``k8s.io/api*``, ``k8s.io/apimachinery*``",,57, + `Logrus `_,"``github.com/Sirupsen/logrus*``, ``github.com/sirupsen/logrus*``",,, `Macaron `_,``gopkg.in/macaron*``,12,1,1 `Revel `_,"``github.com/revel/revel*``, ``github.com/robfig/revel*``",46,20,4 `SendGrid `_,``github.com/sendgrid/sendgrid-go*``,,1, - `Standard library `_,"````, ``archive/*``, ``bufio``, ``bytes``, ``cmp``, ``compress/*``, ``container/*``, ``context``, ``crypto``, ``crypto/*``, ``database/*``, ``debug/*``, ``embed``, ``encoding``, ``encoding/*``, ``errors``, ``expvar``, ``flag``, ``fmt``, ``go/*``, ``hash``, ``hash/*``, ``html``, ``html/*``, ``image``, ``image/*``, ``index/*``, ``io``, ``io/*``, ``log``, ``log/*``, ``maps``, ``math``, ``math/*``, ``mime``, ``mime/*``, ``net``, ``net/*``, ``os``, ``os/*``, ``path``, ``path/*``, ``plugin``, ``reflect``, ``reflect/*``, ``regexp``, ``regexp/*``, ``slices``, ``sort``, ``strconv``, ``strings``, ``sync``, ``sync/*``, ``syscall``, ``syscall/*``, ``testing``, ``testing/*``, ``text/*``, ``time``, ``time/*``, ``unicode``, ``unicode/*``, ``unsafe``",16,584,74 + `Standard library `_,"````, ``archive/*``, ``bufio``, ``bytes``, ``cmp``, ``compress/*``, ``container/*``, ``context``, ``crypto``, ``crypto/*``, ``database/*``, ``debug/*``, ``embed``, ``encoding``, ``encoding/*``, ``errors``, ``expvar``, ``flag``, ``fmt``, ``go/*``, ``hash``, ``hash/*``, ``html``, ``html/*``, ``image``, ``image/*``, ``index/*``, ``io``, ``io/*``, ``log``, ``log/*``, ``maps``, ``math``, ``math/*``, ``mime``, ``mime/*``, ``net``, ``net/*``, ``os``, ``os/*``, ``path``, ``path/*``, ``plugin``, ``reflect``, ``reflect/*``, ``regexp``, ``regexp/*``, ``slices``, ``sort``, ``strconv``, ``strings``, ``sync``, ``sync/*``, ``syscall``, ``syscall/*``, ``testing``, ``testing/*``, ``text/*``, ``time``, ``time/*``, ``unicode``, ``unicode/*``, ``unsafe``",32,587,51 `XPath `_,``github.com/antchfx/xpath*``,,,4 `appleboy/gin-jwt `_,``github.com/appleboy/gin-jwt*``,,,1 - `beego `_,"``github.com/astaxie/beego*``, ``github.com/beego/beego*``",63,63,123 + `beego `_,"``github.com/astaxie/beego*``, ``github.com/beego/beego*``",63,63,21 `chi `_,``github.com/go-chi/chi*``,3,, `cristalhq/jwt `_,``github.com/cristalhq/jwt*``,,,1 `fasthttp `_,``github.com/valyala/fasthttp*``,50,5,35 `gf-jwt `_,``github.com/gogf/gf-jwt*``,,,1 `go-pg `_,``github.com/go-pg/pg*``,,6, `go-restful `_,``github.com/emicklei/go-restful*``,7,, + `go-sh `_,``github.com/codeskyblue/go-sh*``,,,4 + `golang.org/x/crypto/ssh `_,``golang.org/x/crypto/ssh*``,,,4 `golang.org/x/net `_,``golang.org/x/net*``,2,21, - `goproxy `_,``github.com/elazarl/goproxy*``,2,2,2 + `goproxy `_,``github.com/elazarl/goproxy*``,2,2, `gorilla/mux `_,``github.com/gorilla/mux*``,1,, `gorilla/websocket `_,``github.com/gorilla/websocket*``,3,, `goxpath `_,``github.com/ChrisTrenkamp/goxpath*``,,,3 @@ -51,7 +59,7 @@ Go framework & library support `xmlquery `_,``github.com/antchfx/xmlquery*``,,,8 `xpathparser `_,``github.com/santhosh-tekuri/xpathparser*``,,,2 `yaml `_,``gopkg.in/yaml*``,,9, - `zap `_,``go.uber.org/zap*``,,11,33 - Others,"``clevergo.tech/clevergo``, ``github.com/Sirupsen/logrus``, ``github.com/clevergo/clevergo``, ``github.com/codeskyblue/go-sh``, ``github.com/davecgh/go-spew/spew``, ``github.com/gofiber/fiber``, ``github.com/golang/glog``, ``github.com/sirupsen/logrus``, ``github.com/spf13/afero``, ``golang.org/x/crypto/ssh``, ``gopkg.in/glog``, ``k8s.io/klog``",,,564 - Totals,,267,906,943 + `zap `_,``go.uber.org/zap*``,,11, + Others,"``github.com/caarlos0/env``, ``github.com/gobuffalo/envy``, ``github.com/hashicorp/go-envparse``, ``github.com/joho/godotenv``, ``github.com/kelseyhightower/envconfig``",23,2, + Totals,,306,911,268 diff --git a/go/extractor/autobuilder/build-environment.go b/go/extractor/autobuilder/build-environment.go index 4659fef71df..cc3dc62c02d 100644 --- a/go/extractor/autobuilder/build-environment.go +++ b/go/extractor/autobuilder/build-environment.go @@ -12,7 +12,7 @@ import ( ) var minGoVersion = util.NewSemVer("1.11") -var maxGoVersion = util.NewSemVer("1.22") +var maxGoVersion = util.NewSemVer("1.23") type versionInfo struct { goModVersion util.SemVer // The version of Go found in the go directive in the `go.mod` file. diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 4926d8e3e13..31fa2ceb413 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -1507,9 +1507,24 @@ func extractSpec(tw *trap.Writer, spec ast.Spec, parent trap.Label, idx int) { extractNodeLocation(tw, spec, lbl) } +// Determines whether the given type is an alias. +func isAlias(tp types.Type) bool { + _, ok := tp.(*types.Alias) + return ok +} + +// If the given type is a type alias, this function resolves it to its underlying type. +func resolveTypeAlias(tp types.Type) types.Type { + if isAlias(tp) { + return types.Unalias(tp) // tp.Underlying() + } + return tp +} + // extractType extracts type information for `tp` and returns its associated label; // types are only extracted once, so the second time `extractType` is invoked it simply returns the label func extractType(tw *trap.Writer, tp types.Type) trap.Label { + tp = resolveTypeAlias(tp) lbl, exists := getTypeLabel(tw, tp) if !exists { var kind int @@ -1666,6 +1681,7 @@ func extractType(tw *trap.Writer, tp types.Type) trap.Label { // is constructed from their globally unique ID. This prevents cyclic type keys // since type recursion in Go always goes through named types. func getTypeLabel(tw *trap.Writer, tp types.Type) (trap.Label, bool) { + tp = resolveTypeAlias(tp) lbl, exists := tw.Labeler.TypeLabels[tp] if !exists { switch tp := tp.(type) { @@ -1776,7 +1792,8 @@ func getTypeLabel(tw *trap.Writer, tp types.Type) (trap.Label, bool) { lbl = tw.Labeler.GlobalID(fmt.Sprintf("{%s};namedtype", entitylbl)) case *types.TypeParam: parentlbl := getTypeParamParentLabel(tw, tp) - lbl = tw.Labeler.GlobalID(fmt.Sprintf("{%v},%s;typeparamtype", parentlbl, tp.Obj().Name())) + idx := tp.Index() + lbl = tw.Labeler.GlobalID(fmt.Sprintf("{%v},%d,%s;typeparamtype", parentlbl, idx, tp.Obj().Name())) case *types.Union: var b strings.Builder for i := 0; i < tp.Len(); i++ { diff --git a/go/extractor/go.mod b/go/extractor/go.mod index 42366f17286..9c0c3ce3204 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -1,13 +1,15 @@ module github.com/github/codeql-go/extractor -go 1.22.0 +go 1.23 + +toolchain go1.23.1 // when updating this, run // bazel run @rules_go//go -- mod tidy // when adding or removing dependencies, run // bazel mod tidy require ( - golang.org/x/mod v0.20.0 + golang.org/x/mod v0.21.0 golang.org/x/tools v0.24.0 ) diff --git a/go/extractor/go.sum b/go/extractor/go.sum index c48959824cd..c062882a5a6 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -1,5 +1,5 @@ -golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= -golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 2e7162889c3..7e87aa46357 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.8 + +No user-facing changes. + +## 1.0.7 + +No user-facing changes. + +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.6.md b/go/ql/consistency-queries/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.7.md b/go/ql/consistency-queries/change-notes/released/1.0.7.md new file mode 100644 index 00000000000..b3a381f0315 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.7.md @@ -0,0 +1,3 @@ +## 1.0.7 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.8.md b/go/ql/consistency-queries/change-notes/released/1.0.8.md new file mode 100644 index 00000000000..b3efd4f66ef --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.8.md @@ -0,0 +1,3 @@ +## 1.0.8 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index 42da17b3841..5c55fbd52ed 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.8 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 17f966d2c41..b7a6550ede1 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 1.0.6-dev +version: 1.0.9-dev groups: - go - queries diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/build_environment.expected b/go/ql/integration-tests/bazel-sample-1/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/build_environment.expected rename to go/ql/integration-tests/bazel-sample-1/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/diagnostics.expected b/go/ql/integration-tests/bazel-sample-1/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/diagnostics.expected rename to go/ql/integration-tests/bazel-sample-1/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/BUILD.bazel b/go/ql/integration-tests/bazel-sample-1/src/BUILD.bazel similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/BUILD.bazel rename to go/ql/integration-tests/bazel-sample-1/src/BUILD.bazel diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.mod b/go/ql/integration-tests/bazel-sample-1/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.mod rename to go/ql/integration-tests/bazel-sample-1/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.sum b/go/ql/integration-tests/bazel-sample-1/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.sum rename to go/ql/integration-tests/bazel-sample-1/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/test.go b/go/ql/integration-tests/bazel-sample-1/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/test.go rename to go/ql/integration-tests/bazel-sample-1/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/todel.go b/go/ql/integration-tests/bazel-sample-1/src/todel.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/todel.go rename to go/ql/integration-tests/bazel-sample-1/src/todel.go diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/test.expected b/go/ql/integration-tests/bazel-sample-1/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/test.expected rename to go/ql/integration-tests/bazel-sample-1/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/test.py b/go/ql/integration-tests/bazel-sample-1/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/test.py rename to go/ql/integration-tests/bazel-sample-1/test.py diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/test.ql b/go/ql/integration-tests/bazel-sample-1/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-1/test.ql rename to go/ql/integration-tests/bazel-sample-1/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/build_environment.expected b/go/ql/integration-tests/bazel-sample-2/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/build_environment.expected rename to go/ql/integration-tests/bazel-sample-2/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/diagnostics.expected b/go/ql/integration-tests/bazel-sample-2/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/diagnostics.expected rename to go/ql/integration-tests/bazel-sample-2/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/BUILD b/go/ql/integration-tests/bazel-sample-2/src/BUILD similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/BUILD rename to go/ql/integration-tests/bazel-sample-2/src/BUILD diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.mod b/go/ql/integration-tests/bazel-sample-2/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.mod rename to go/ql/integration-tests/bazel-sample-2/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.sum b/go/ql/integration-tests/bazel-sample-2/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.sum rename to go/ql/integration-tests/bazel-sample-2/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/test.go b/go/ql/integration-tests/bazel-sample-2/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/test.go rename to go/ql/integration-tests/bazel-sample-2/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/todel.go b/go/ql/integration-tests/bazel-sample-2/src/todel.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/todel.go rename to go/ql/integration-tests/bazel-sample-2/src/todel.go diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/test.expected b/go/ql/integration-tests/bazel-sample-2/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/test.expected rename to go/ql/integration-tests/bazel-sample-2/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/test.py b/go/ql/integration-tests/bazel-sample-2/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/test.py rename to go/ql/integration-tests/bazel-sample-2/test.py diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/test.ql b/go/ql/integration-tests/bazel-sample-2/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/bazel-sample-2/test.ql rename to go/ql/integration-tests/bazel-sample-2/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/configure-baseline/src/a/vendor/avendor.go b/go/ql/integration-tests/configure-baseline/src/a/vendor/avendor.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/configure-baseline/src/a/vendor/avendor.go rename to go/ql/integration-tests/configure-baseline/src/a/vendor/avendor.go diff --git a/go/ql/integration-tests/all-platforms/go/configure-baseline/src/a/vendor/modules.txt b/go/ql/integration-tests/configure-baseline/src/a/vendor/modules.txt similarity index 100% rename from go/ql/integration-tests/all-platforms/go/configure-baseline/src/a/vendor/modules.txt rename to go/ql/integration-tests/configure-baseline/src/a/vendor/modules.txt diff --git a/go/ql/integration-tests/all-platforms/go/configure-baseline/src/b/vendor/bvendor.go b/go/ql/integration-tests/configure-baseline/src/b/vendor/bvendor.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/configure-baseline/src/b/vendor/bvendor.go rename to go/ql/integration-tests/configure-baseline/src/b/vendor/bvendor.go diff --git a/go/ql/integration-tests/all-platforms/go/configure-baseline/src/b/vendor/modules.txt b/go/ql/integration-tests/configure-baseline/src/b/vendor/modules.txt similarity index 100% rename from go/ql/integration-tests/all-platforms/go/configure-baseline/src/b/vendor/modules.txt rename to go/ql/integration-tests/configure-baseline/src/b/vendor/modules.txt diff --git a/go/ql/integration-tests/all-platforms/go/configure-baseline/src/c/vendor/cvendor.go b/go/ql/integration-tests/configure-baseline/src/c/vendor/cvendor.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/configure-baseline/src/c/vendor/cvendor.go rename to go/ql/integration-tests/configure-baseline/src/c/vendor/cvendor.go diff --git a/go/ql/integration-tests/all-platforms/go/configure-baseline/src/root.go b/go/ql/integration-tests/configure-baseline/src/root.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/configure-baseline/src/root.go rename to go/ql/integration-tests/configure-baseline/src/root.go diff --git a/go/ql/integration-tests/all-platforms/go/configure-baseline/test.py b/go/ql/integration-tests/configure-baseline/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/configure-baseline/test.py rename to go/ql/integration-tests/configure-baseline/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/build_environment.expected b/go/ql/integration-tests/dep-sample/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/build_environment.expected rename to go/ql/integration-tests/dep-sample/build_environment.expected diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/diagnostics.expected b/go/ql/integration-tests/dep-sample/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/diagnostics.expected rename to go/ql/integration-tests/dep-sample/diagnostics.expected diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/test.expected b/go/ql/integration-tests/dep-sample/test.expected similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/test.expected rename to go/ql/integration-tests/dep-sample/test.expected diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/test.py b/go/ql/integration-tests/dep-sample/test.py similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/test.py rename to go/ql/integration-tests/dep-sample/test.py diff --git a/go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/test.ql b/go/ql/integration-tests/dep-sample/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/test.ql rename to go/ql/integration-tests/dep-sample/test.ql diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/work/Gopkg.lock b/go/ql/integration-tests/dep-sample/work/Gopkg.lock similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/work/Gopkg.lock rename to go/ql/integration-tests/dep-sample/work/Gopkg.lock diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/work/Gopkg.toml b/go/ql/integration-tests/dep-sample/work/Gopkg.toml similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/work/Gopkg.toml rename to go/ql/integration-tests/dep-sample/work/Gopkg.toml diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/work/test.go b/go/ql/integration-tests/dep-sample/work/test.go similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/work/test.go rename to go/ql/integration-tests/dep-sample/work/test.go diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/AUTHORS b/go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/AUTHORS similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/AUTHORS rename to go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/AUTHORS diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/CONTRIBUTORS b/go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/CONTRIBUTORS similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/CONTRIBUTORS rename to go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/CONTRIBUTORS diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/LICENSE b/go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/LICENSE similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/LICENSE rename to go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/LICENSE diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/PATENTS b/go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/PATENTS similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/PATENTS rename to go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/PATENTS diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/rate/rate.go b/go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/rate/rate.go similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/work/vendor/golang.org/x/time/rate/rate.go rename to go/ql/integration-tests/dep-sample/work/vendor/golang.org/x/time/rate/rate.go diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/build_environment.expected b/go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/build_environment.expected rename to go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/diagnostics.expected b/go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/diagnostics.expected rename to go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/test.py b/go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/test.py rename to go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/work/go.mod b/go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/work/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/work/go.mod rename to go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/work/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/work/go.sum b/go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/work/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/work/go.sum rename to go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/work/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/work/test.go b/go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/work/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/build-constraints-exclude-all-go-files/work/test.go rename to go/ql/integration-tests/diagnostics/build-constraints-exclude-all-go-files/work/test.go diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/build_environment.expected b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/build_environment.expected rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/diagnostics.expected b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/diagnostics.expected rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/test.expected b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/test.expected rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/test.py b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/test.py rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/test.ql b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/test.ql rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/go.mod b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/go.mod rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/go.sum b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/go.sum rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/subdir/go.mod b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/subdir/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/subdir/go.mod rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/subdir/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/subdir/go.sum b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/subdir/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/subdir/go.sum rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/subdir/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/subdir/test.go b/go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/subdir/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/subdir/test.go rename to go/ql/integration-tests/diagnostics/go-files-found-not-processed/work/subdir/test.go diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/build_environment.expected b/go/ql/integration-tests/diagnostics/invalid-toolchain-version/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/build_environment.expected rename to go/ql/integration-tests/diagnostics/invalid-toolchain-version/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected b/go/ql/integration-tests/diagnostics/invalid-toolchain-version/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected rename to go/ql/integration-tests/diagnostics/invalid-toolchain-version/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/go.mod b/go/ql/integration-tests/diagnostics/invalid-toolchain-version/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/go.mod rename to go/ql/integration-tests/diagnostics/invalid-toolchain-version/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/main.go b/go/ql/integration-tests/diagnostics/invalid-toolchain-version/src/main.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/main.go rename to go/ql/integration-tests/diagnostics/invalid-toolchain-version/src/main.go diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/test.py b/go/ql/integration-tests/diagnostics/invalid-toolchain-version/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/test.py rename to go/ql/integration-tests/diagnostics/invalid-toolchain-version/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/no-go-files-found/build_environment.expected b/go/ql/integration-tests/diagnostics/newer-go-version-needed/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/no-go-files-found/build_environment.expected rename to go/ql/integration-tests/diagnostics/newer-go-version-needed/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/diagnostics.expected b/go/ql/integration-tests/diagnostics/newer-go-version-needed/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/diagnostics.expected rename to go/ql/integration-tests/diagnostics/newer-go-version-needed/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/test.py b/go/ql/integration-tests/diagnostics/newer-go-version-needed/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/test.py rename to go/ql/integration-tests/diagnostics/newer-go-version-needed/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/work/go.mod b/go/ql/integration-tests/diagnostics/newer-go-version-needed/work/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/work/go.mod rename to go/ql/integration-tests/diagnostics/newer-go-version-needed/work/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/work/go.sum b/go/ql/integration-tests/diagnostics/newer-go-version-needed/work/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/work/go.sum rename to go/ql/integration-tests/diagnostics/newer-go-version-needed/work/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/work/test.go b/go/ql/integration-tests/diagnostics/newer-go-version-needed/work/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/newer-go-version-needed/work/test.go rename to go/ql/integration-tests/diagnostics/newer-go-version-needed/work/test.go diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/build_environment.expected b/go/ql/integration-tests/diagnostics/no-go-files-found/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/build_environment.expected rename to go/ql/integration-tests/diagnostics/no-go-files-found/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/no-go-files-found/diagnostics.expected b/go/ql/integration-tests/diagnostics/no-go-files-found/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/no-go-files-found/diagnostics.expected rename to go/ql/integration-tests/diagnostics/no-go-files-found/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/no-go-files-found/test.py b/go/ql/integration-tests/diagnostics/no-go-files-found/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/no-go-files-found/test.py rename to go/ql/integration-tests/diagnostics/no-go-files-found/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/no-go-files-found/work/test.txt b/go/ql/integration-tests/diagnostics/no-go-files-found/work/test.txt similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/no-go-files-found/work/test.txt rename to go/ql/integration-tests/diagnostics/no-go-files-found/work/test.txt diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-without-go-mod/build_environment.expected b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-without-go-mod/build_environment.expected rename to go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/diagnostics.expected b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/diagnostics.expected rename to go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/test.py b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/test.py rename to go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/work/go.mod b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/work/go.mod rename to go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/work/go.sum b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/work/go.sum rename to go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/work/test.go b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-with-go-mod/work/test.go rename to go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/test.go diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/build_environment.expected b/go/ql/integration-tests/diagnostics/package-not-found-without-go-mod/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/build_environment.expected rename to go/ql/integration-tests/diagnostics/package-not-found-without-go-mod/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-without-go-mod/diagnostics.expected b/go/ql/integration-tests/diagnostics/package-not-found-without-go-mod/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-without-go-mod/diagnostics.expected rename to go/ql/integration-tests/diagnostics/package-not-found-without-go-mod/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-without-go-mod/test.py b/go/ql/integration-tests/diagnostics/package-not-found-without-go-mod/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-without-go-mod/test.py rename to go/ql/integration-tests/diagnostics/package-not-found-without-go-mod/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-without-go-mod/work/test.go b/go/ql/integration-tests/diagnostics/package-not-found-without-go-mod/work/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/package-not-found-without-go-mod/work/test.go rename to go/ql/integration-tests/diagnostics/package-not-found-without-go-mod/work/test.go diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/build_environment.expected b/go/ql/integration-tests/diagnostics/unsupported-relative-path/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/build_environment.expected rename to go/ql/integration-tests/diagnostics/unsupported-relative-path/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/diagnostics.expected b/go/ql/integration-tests/diagnostics/unsupported-relative-path/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/diagnostics.expected rename to go/ql/integration-tests/diagnostics/unsupported-relative-path/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/test.py b/go/ql/integration-tests/diagnostics/unsupported-relative-path/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/test.py rename to go/ql/integration-tests/diagnostics/unsupported-relative-path/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/work/main/main.go b/go/ql/integration-tests/diagnostics/unsupported-relative-path/work/main/main.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/work/main/main.go rename to go/ql/integration-tests/diagnostics/unsupported-relative-path/work/main/main.go diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/work/main/subpkg/subpkg.go b/go/ql/integration-tests/diagnostics/unsupported-relative-path/work/main/subpkg/subpkg.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/diagnostics/unsupported-relative-path/work/main/subpkg/subpkg.go rename to go/ql/integration-tests/diagnostics/unsupported-relative-path/work/main/subpkg/subpkg.go diff --git a/go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/build_environment.expected b/go/ql/integration-tests/extract-vendor/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/build_environment.expected rename to go/ql/integration-tests/extract-vendor/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/diagnostics.expected b/go/ql/integration-tests/extract-vendor/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/diagnostics.expected rename to go/ql/integration-tests/extract-vendor/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/src/go.mod b/go/ql/integration-tests/extract-vendor/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/src/go.mod rename to go/ql/integration-tests/extract-vendor/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/src/go.sum b/go/ql/integration-tests/extract-vendor/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/src/go.sum rename to go/ql/integration-tests/extract-vendor/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/src/test.go b/go/ql/integration-tests/extract-vendor/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/src/test.go rename to go/ql/integration-tests/extract-vendor/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/src/vendor/example.com/test/add.go b/go/ql/integration-tests/extract-vendor/src/vendor/example.com/test/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/src/vendor/example.com/test/add.go rename to go/ql/integration-tests/extract-vendor/src/vendor/example.com/test/add.go diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/src/vendor/modules.txt b/go/ql/integration-tests/extract-vendor/src/vendor/modules.txt similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/src/vendor/modules.txt rename to go/ql/integration-tests/extract-vendor/src/vendor/modules.txt diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/test.expected b/go/ql/integration-tests/extract-vendor/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/test.expected rename to go/ql/integration-tests/extract-vendor/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/test.py b/go/ql/integration-tests/extract-vendor/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/test.py rename to go/ql/integration-tests/extract-vendor/test.py diff --git a/go/ql/integration-tests/all-platforms/go/extract-vendor/test.ql b/go/ql/integration-tests/extract-vendor/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/extract-vendor/test.ql rename to go/ql/integration-tests/extract-vendor/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/build_environment.expected b/go/ql/integration-tests/glide-sample/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/build_environment.expected rename to go/ql/integration-tests/glide-sample/build_environment.expected diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/diagnostics.expected b/go/ql/integration-tests/glide-sample/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/diagnostics.expected rename to go/ql/integration-tests/glide-sample/diagnostics.expected diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/force_sequential_test_execution b/go/ql/integration-tests/glide-sample/force_sequential_test_execution similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/force_sequential_test_execution rename to go/ql/integration-tests/glide-sample/force_sequential_test_execution diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/test.expected b/go/ql/integration-tests/glide-sample/test.expected similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/test.expected rename to go/ql/integration-tests/glide-sample/test.expected diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/test.py b/go/ql/integration-tests/glide-sample/test.py similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/test.py rename to go/ql/integration-tests/glide-sample/test.py diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/test.ql b/go/ql/integration-tests/glide-sample/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/test.ql rename to go/ql/integration-tests/glide-sample/test.ql diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/glide.lock b/go/ql/integration-tests/glide-sample/work/glide.lock similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/glide.lock rename to go/ql/integration-tests/glide-sample/work/glide.lock diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/glide.yaml b/go/ql/integration-tests/glide-sample/work/glide.yaml similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/glide.yaml rename to go/ql/integration-tests/glide-sample/work/glide.yaml diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/test.go b/go/ql/integration-tests/glide-sample/work/test.go similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/test.go rename to go/ql/integration-tests/glide-sample/work/test.go diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/AUTHORS b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/AUTHORS similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/AUTHORS rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/AUTHORS diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/CONTRIBUTING.md b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/CONTRIBUTING.md similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/CONTRIBUTING.md rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/CONTRIBUTING.md diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/CONTRIBUTORS b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/CONTRIBUTORS similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/CONTRIBUTORS rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/CONTRIBUTORS diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/LICENSE b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/LICENSE similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/LICENSE rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/LICENSE diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/PATENTS b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/PATENTS similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/PATENTS rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/PATENTS diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/README.md b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/README.md similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/README.md rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/README.md diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/go.mod b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/go.mod similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/go.mod rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/go.mod diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/rate/rate.go b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/rate/rate.go similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/rate/rate.go rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/rate/rate.go diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/rate/rate_test.go b/go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/rate/rate_test.go similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/work/vendor/golang.org/x/time/rate/rate_test.go rename to go/ql/integration-tests/glide-sample/work/vendor/golang.org/x/time/rate/rate_test.go diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/build_environment.expected b/go/ql/integration-tests/go-get-without-modules-sample/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/build_environment.expected rename to go/ql/integration-tests/go-get-without-modules-sample/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/src/test.go b/go/ql/integration-tests/go-get-without-modules-sample/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/src/test.go rename to go/ql/integration-tests/go-get-without-modules-sample/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/test.expected b/go/ql/integration-tests/go-get-without-modules-sample/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/test.expected rename to go/ql/integration-tests/go-get-without-modules-sample/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/test.py b/go/ql/integration-tests/go-get-without-modules-sample/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-get-without-modules-sample/test.py rename to go/ql/integration-tests/go-get-without-modules-sample/test.py diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/test.ql b/go/ql/integration-tests/go-get-without-modules-sample/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/test.ql rename to go/ql/integration-tests/go-get-without-modules-sample/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/build_environment.expected b/go/ql/integration-tests/go-mod-sample/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-version-bump/build_environment.expected rename to go/ql/integration-tests/go-mod-sample/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/diagnostics.expected b/go/ql/integration-tests/go-mod-sample/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/diagnostics.expected rename to go/ql/integration-tests/go-mod-sample/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/Makefile b/go/ql/integration-tests/go-mod-sample/src/Makefile similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/src/Makefile rename to go/ql/integration-tests/go-mod-sample/src/Makefile diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.mod b/go/ql/integration-tests/go-mod-sample/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.mod rename to go/ql/integration-tests/go-mod-sample/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.sum b/go/ql/integration-tests/go-mod-sample/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.sum rename to go/ql/integration-tests/go-mod-sample/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/test.go b/go/ql/integration-tests/go-mod-sample/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/src/test.go rename to go/ql/integration-tests/go-mod-sample/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/test.expected b/go/ql/integration-tests/go-mod-sample/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/test.expected rename to go/ql/integration-tests/go-mod-sample/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/test.py b/go/ql/integration-tests/go-mod-sample/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-sample/test.py rename to go/ql/integration-tests/go-mod-sample/test.py diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/test.ql b/go/ql/integration-tests/go-mod-sample/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/test.ql rename to go/ql/integration-tests/go-mod-sample/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/build_environment.expected b/go/ql/integration-tests/go-mod-without-version/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/build_environment.expected rename to go/ql/integration-tests/go-mod-without-version/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/diagnostics.expected b/go/ql/integration-tests/go-mod-without-version/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/diagnostics.expected rename to go/ql/integration-tests/go-mod-without-version/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/src/go.mod b/go/ql/integration-tests/go-mod-without-version/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/src/go.mod rename to go/ql/integration-tests/go-mod-without-version/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/src/go.sum b/go/ql/integration-tests/go-mod-without-version/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/src/go.sum rename to go/ql/integration-tests/go-mod-without-version/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/src/subdir/add.go b/go/ql/integration-tests/go-mod-without-version/src/subdir/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/src/subdir/add.go rename to go/ql/integration-tests/go-mod-without-version/src/subdir/add.go diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/src/test.go b/go/ql/integration-tests/go-mod-without-version/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/src/test.go rename to go/ql/integration-tests/go-mod-without-version/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/test.expected b/go/ql/integration-tests/go-mod-without-version/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/test.expected rename to go/ql/integration-tests/go-mod-without-version/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/test.py b/go/ql/integration-tests/go-mod-without-version/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/test.py rename to go/ql/integration-tests/go-mod-without-version/test.py diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-without-version/test.ql b/go/ql/integration-tests/go-mod-without-version/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-mod-without-version/test.ql rename to go/ql/integration-tests/go-mod-without-version/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/build_environment.expected b/go/ql/integration-tests/go-version-bump/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/build_environment.expected rename to go/ql/integration-tests/go-version-bump/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/diagnostics.expected b/go/ql/integration-tests/go-version-bump/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-version-bump/diagnostics.expected rename to go/ql/integration-tests/go-version-bump/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/src/go.mod b/go/ql/integration-tests/go-version-bump/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-version-bump/src/go.mod rename to go/ql/integration-tests/go-version-bump/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/src/main.go b/go/ql/integration-tests/go-version-bump/src/main.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-version-bump/src/main.go rename to go/ql/integration-tests/go-version-bump/src/main.go diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/test.py b/go/ql/integration-tests/go-version-bump/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/go-version-bump/test.py rename to go/ql/integration-tests/go-version-bump/test.py diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/build_environment.expected b/go/ql/integration-tests/make-sample/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/build_environment.expected rename to go/ql/integration-tests/make-sample/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/diagnostics.expected b/go/ql/integration-tests/make-sample/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/diagnostics.expected rename to go/ql/integration-tests/make-sample/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/src/Makefile b/go/ql/integration-tests/make-sample/src/Makefile similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/src/Makefile rename to go/ql/integration-tests/make-sample/src/Makefile diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/src/go.mod b/go/ql/integration-tests/make-sample/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/src/go.mod rename to go/ql/integration-tests/make-sample/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/src/go.sum b/go/ql/integration-tests/make-sample/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/src/go.sum rename to go/ql/integration-tests/make-sample/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/src/test.go b/go/ql/integration-tests/make-sample/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/src/test.go rename to go/ql/integration-tests/make-sample/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/src/todel.go b/go/ql/integration-tests/make-sample/src/todel.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/src/todel.go rename to go/ql/integration-tests/make-sample/src/todel.go diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/test.expected b/go/ql/integration-tests/make-sample/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/test.expected rename to go/ql/integration-tests/make-sample/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/test.py b/go/ql/integration-tests/make-sample/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/make-sample/test.py rename to go/ql/integration-tests/make-sample/test.py diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/test.ql b/go/ql/integration-tests/make-sample/test.ql similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/test.ql rename to go/ql/integration-tests/make-sample/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/build_environment.expected b/go/ql/integration-tests/mixed-layout/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/build_environment.expected rename to go/ql/integration-tests/mixed-layout/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/diagnostics.expected b/go/ql/integration-tests/mixed-layout/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/diagnostics.expected rename to go/ql/integration-tests/mixed-layout/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.mod b/go/ql/integration-tests/mixed-layout/src/module/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.mod rename to go/ql/integration-tests/mixed-layout/src/module/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.sum b/go/ql/integration-tests/mixed-layout/src/module/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.sum rename to go/ql/integration-tests/mixed-layout/src/module/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/test.go b/go/ql/integration-tests/mixed-layout/src/module/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/test.go rename to go/ql/integration-tests/mixed-layout/src/module/test.go diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/stray-files/test.go b/go/ql/integration-tests/mixed-layout/src/stray-files/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/src/stray-files/test.go rename to go/ql/integration-tests/mixed-layout/src/stray-files/test.go diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/go.work b/go/ql/integration-tests/mixed-layout/src/workspace/go.work similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/go.work rename to go/ql/integration-tests/mixed-layout/src/workspace/go.work diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod b/go/ql/integration-tests/mixed-layout/src/workspace/subdir/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod rename to go/ql/integration-tests/mixed-layout/src/workspace/subdir/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum b/go/ql/integration-tests/mixed-layout/src/workspace/subdir/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum rename to go/ql/integration-tests/mixed-layout/src/workspace/subdir/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/test.go b/go/ql/integration-tests/mixed-layout/src/workspace/subdir/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/test.go rename to go/ql/integration-tests/mixed-layout/src/workspace/subdir/test.go diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/test.expected b/go/ql/integration-tests/mixed-layout/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/test.expected rename to go/ql/integration-tests/mixed-layout/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/test.py b/go/ql/integration-tests/mixed-layout/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/test.py rename to go/ql/integration-tests/mixed-layout/test.py diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/test.ql b/go/ql/integration-tests/mixed-layout/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/mixed-layout/test.ql rename to go/ql/integration-tests/mixed-layout/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/build_environment.expected b/go/ql/integration-tests/ninja-sample/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/build_environment.expected rename to go/ql/integration-tests/ninja-sample/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/diagnostics.expected b/go/ql/integration-tests/ninja-sample/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/diagnostics.expected rename to go/ql/integration-tests/ninja-sample/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/src/.ninja_log b/go/ql/integration-tests/ninja-sample/src/.ninja_log similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/src/.ninja_log rename to go/ql/integration-tests/ninja-sample/src/.ninja_log diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/src/build.ninja b/go/ql/integration-tests/ninja-sample/src/build.ninja similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/src/build.ninja rename to go/ql/integration-tests/ninja-sample/src/build.ninja diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/src/go.mod b/go/ql/integration-tests/ninja-sample/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/src/go.mod rename to go/ql/integration-tests/ninja-sample/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/src/go.sum b/go/ql/integration-tests/ninja-sample/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/src/go.sum rename to go/ql/integration-tests/ninja-sample/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/src/test.go b/go/ql/integration-tests/ninja-sample/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/src/test.go rename to go/ql/integration-tests/ninja-sample/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/src/todel.go b/go/ql/integration-tests/ninja-sample/src/todel.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/src/todel.go rename to go/ql/integration-tests/ninja-sample/src/todel.go diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/test.expected b/go/ql/integration-tests/ninja-sample/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/test.expected rename to go/ql/integration-tests/ninja-sample/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/ninja-sample/test.py b/go/ql/integration-tests/ninja-sample/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/ninja-sample/test.py rename to go/ql/integration-tests/ninja-sample/test.py diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/test.ql b/go/ql/integration-tests/ninja-sample/test.ql similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/test.ql rename to go/ql/integration-tests/ninja-sample/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/build_environment.expected b/go/ql/integration-tests/resolve-build-environment/newer-go-needed/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/build_environment.expected rename to go/ql/integration-tests/resolve-build-environment/newer-go-needed/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/diagnostics.expected b/go/ql/integration-tests/resolve-build-environment/newer-go-needed/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/diagnostics.expected rename to go/ql/integration-tests/resolve-build-environment/newer-go-needed/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/src/go.mod b/go/ql/integration-tests/resolve-build-environment/newer-go-needed/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/src/go.mod rename to go/ql/integration-tests/resolve-build-environment/newer-go-needed/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/src/main.go b/go/ql/integration-tests/resolve-build-environment/newer-go-needed/src/main.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/src/main.go rename to go/ql/integration-tests/resolve-build-environment/newer-go-needed/src/main.go diff --git a/go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/test.py b/go/ql/integration-tests/resolve-build-environment/newer-go-needed/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/resolve-build-environment/newer-go-needed/test.py rename to go/ql/integration-tests/resolve-build-environment/newer-go-needed/test.py diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/build_environment.expected b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/build_environment.expected rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/diagnostics.expected b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/diagnostics.expected rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/main.go b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/main.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/main.go rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/main.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.mod b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/subdir/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.mod rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/subdir/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.sum b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/subdir/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.sum rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/subdir/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/subsubdir/add.go b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/subdir/subsubdir/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/subsubdir/add.go rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/subdir/subsubdir/add.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/test.go b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/subdir/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/test.go rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/src/subdir/test.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.expected b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.expected rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.py b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.py rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/test.py diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.ql b/go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.ql rename to go/ql/integration-tests/single-go-mod-and-go-files-not-under-it/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/build_environment.expected b/go/ql/integration-tests/single-go-mod-in-root/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/build_environment.expected rename to go/ql/integration-tests/single-go-mod-in-root/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/diagnostics.expected b/go/ql/integration-tests/single-go-mod-in-root/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/diagnostics.expected rename to go/ql/integration-tests/single-go-mod-in-root/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.mod b/go/ql/integration-tests/single-go-mod-in-root/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.mod rename to go/ql/integration-tests/single-go-mod-in-root/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.sum b/go/ql/integration-tests/single-go-mod-in-root/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.sum rename to go/ql/integration-tests/single-go-mod-in-root/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/subdir/add.go b/go/ql/integration-tests/single-go-mod-in-root/src/subdir/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/subdir/add.go rename to go/ql/integration-tests/single-go-mod-in-root/src/subdir/add.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/test.go b/go/ql/integration-tests/single-go-mod-in-root/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/test.go rename to go/ql/integration-tests/single-go-mod-in-root/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/test.expected b/go/ql/integration-tests/single-go-mod-in-root/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/test.expected rename to go/ql/integration-tests/single-go-mod-in-root/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/test.py b/go/ql/integration-tests/single-go-mod-in-root/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/test.py rename to go/ql/integration-tests/single-go-mod-in-root/test.py diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/test.ql b/go/ql/integration-tests/single-go-mod-in-root/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/test.ql rename to go/ql/integration-tests/single-go-mod-in-root/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/build_environment.expected b/go/ql/integration-tests/single-go-mod-not-in-root/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/build_environment.expected rename to go/ql/integration-tests/single-go-mod-not-in-root/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/diagnostics.expected b/go/ql/integration-tests/single-go-mod-not-in-root/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/diagnostics.expected rename to go/ql/integration-tests/single-go-mod-not-in-root/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/src/subdir/go.mod b/go/ql/integration-tests/single-go-mod-not-in-root/src/subdir/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/src/subdir/go.mod rename to go/ql/integration-tests/single-go-mod-not-in-root/src/subdir/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/src/subdir/go.sum b/go/ql/integration-tests/single-go-mod-not-in-root/src/subdir/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/src/subdir/go.sum rename to go/ql/integration-tests/single-go-mod-not-in-root/src/subdir/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/src/subdir/subsubdir/add.go b/go/ql/integration-tests/single-go-mod-not-in-root/src/subdir/subsubdir/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/src/subdir/subsubdir/add.go rename to go/ql/integration-tests/single-go-mod-not-in-root/src/subdir/subsubdir/add.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/src/subdir/test.go b/go/ql/integration-tests/single-go-mod-not-in-root/src/subdir/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/src/subdir/test.go rename to go/ql/integration-tests/single-go-mod-not-in-root/src/subdir/test.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/test.expected b/go/ql/integration-tests/single-go-mod-not-in-root/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/test.expected rename to go/ql/integration-tests/single-go-mod-not-in-root/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/test.py b/go/ql/integration-tests/single-go-mod-not-in-root/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/test.py rename to go/ql/integration-tests/single-go-mod-not-in-root/test.py diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/test.ql b/go/ql/integration-tests/single-go-mod-not-in-root/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-mod-not-in-root/test.ql rename to go/ql/integration-tests/single-go-mod-not-in-root/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/build_environment.expected b/go/ql/integration-tests/single-go-work-not-in-root/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/build_environment.expected rename to go/ql/integration-tests/single-go-work-not-in-root/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/diagnostics.expected b/go/ql/integration-tests/single-go-work-not-in-root/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/diagnostics.expected rename to go/ql/integration-tests/single-go-work-not-in-root/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/go.work b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/go.work similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/go.work rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/go.work diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.mod b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir1/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.mod rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir1/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.sum b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir1/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.sum rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir1/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/subsubdir1/add.go b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir1/subsubdir1/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/subsubdir1/add.go rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir1/subsubdir1/add.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/test.go b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir1/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/test.go rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir1/test.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir2/go.mod b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir2/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir2/go.mod rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir2/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir2/go.sum b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir2/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir2/go.sum rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir2/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir2/subsubdir2/add.go b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir2/subsubdir2/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir2/subsubdir2/add.go rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir2/subsubdir2/add.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir2/test.go b/go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir2/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir2/test.go rename to go/ql/integration-tests/single-go-work-not-in-root/src/modules/subdir2/test.go diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/test.expected b/go/ql/integration-tests/single-go-work-not-in-root/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/test.expected rename to go/ql/integration-tests/single-go-work-not-in-root/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/test.py b/go/ql/integration-tests/single-go-work-not-in-root/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/test.py rename to go/ql/integration-tests/single-go-work-not-in-root/test.py diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/test.ql b/go/ql/integration-tests/single-go-work-not-in-root/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/test.ql rename to go/ql/integration-tests/single-go-work-not-in-root/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/build_environment.expected b/go/ql/integration-tests/two-go-mods-nested-none-in-root/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/build_environment.expected rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/diagnostics.expected b/go/ql/integration-tests/two-go-mods-nested-none-in-root/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/diagnostics.expected rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.mod b/go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.mod rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.sum b/go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.sum rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.mod b/go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.mod rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.sum b/go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.sum rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/subsubdir1/add.go b/go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir1/subsubdir1/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/subsubdir1/add.go rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir1/subsubdir1/add.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/test.go b/go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir1/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/test.go rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir1/test.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir2/add.go b/go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir2/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir2/add.go rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/subdir2/add.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/test.go b/go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/test.go rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/src/subdir0/test.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/test.expected b/go/ql/integration-tests/two-go-mods-nested-none-in-root/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/test.expected rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/test.py b/go/ql/integration-tests/two-go-mods-nested-none-in-root/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/test.py rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/test.py diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/test.ql b/go/ql/integration-tests/two-go-mods-nested-none-in-root/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/test.ql rename to go/ql/integration-tests/two-go-mods-nested-none-in-root/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/build_environment.expected b/go/ql/integration-tests/two-go-mods-nested-one-in-root/build_environment.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/build_environment.expected rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/diagnostics.expected b/go/ql/integration-tests/two-go-mods-nested-one-in-root/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/diagnostics.expected rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.mod b/go/ql/integration-tests/two-go-mods-nested-one-in-root/src/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.mod rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/src/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.sum b/go/ql/integration-tests/two-go-mods-nested-one-in-root/src/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.sum rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/src/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir1/go.mod b/go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir1/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir1/go.mod rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir1/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir1/go.sum b/go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir1/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir1/go.sum rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir1/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir1/subsubdir1/add.go b/go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir1/subsubdir1/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir1/subsubdir1/add.go rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir1/subsubdir1/add.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir1/test.go b/go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir1/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir1/test.go rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir1/test.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir2/add.go b/go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir2/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/subdir2/add.go rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/src/subdir2/add.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/test.go b/go/ql/integration-tests/two-go-mods-nested-one-in-root/src/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/test.go rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/src/test.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/test.expected b/go/ql/integration-tests/two-go-mods-nested-one-in-root/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/test.expected rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/test.py b/go/ql/integration-tests/two-go-mods-nested-one-in-root/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/test.py rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/test.py diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/test.ql b/go/ql/integration-tests/two-go-mods-nested-one-in-root/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/test.ql rename to go/ql/integration-tests/two-go-mods-nested-one-in-root/test.ql diff --git a/go/ql/integration-tests/linux-only/go/dep-sample/build_environment.expected b/go/ql/integration-tests/two-go-mods-not-nested/build_environment.expected similarity index 100% rename from go/ql/integration-tests/linux-only/go/dep-sample/build_environment.expected rename to go/ql/integration-tests/two-go-mods-not-nested/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/diagnostics.expected b/go/ql/integration-tests/two-go-mods-not-nested/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/diagnostics.expected rename to go/ql/integration-tests/two-go-mods-not-nested/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir1/go.mod b/go/ql/integration-tests/two-go-mods-not-nested/src/subdir1/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir1/go.mod rename to go/ql/integration-tests/two-go-mods-not-nested/src/subdir1/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir1/go.sum b/go/ql/integration-tests/two-go-mods-not-nested/src/subdir1/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir1/go.sum rename to go/ql/integration-tests/two-go-mods-not-nested/src/subdir1/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir1/subsubdir1/add.go b/go/ql/integration-tests/two-go-mods-not-nested/src/subdir1/subsubdir1/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir1/subsubdir1/add.go rename to go/ql/integration-tests/two-go-mods-not-nested/src/subdir1/subsubdir1/add.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir1/test.go b/go/ql/integration-tests/two-go-mods-not-nested/src/subdir1/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir1/test.go rename to go/ql/integration-tests/two-go-mods-not-nested/src/subdir1/test.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir2/go.mod b/go/ql/integration-tests/two-go-mods-not-nested/src/subdir2/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir2/go.mod rename to go/ql/integration-tests/two-go-mods-not-nested/src/subdir2/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir2/go.sum b/go/ql/integration-tests/two-go-mods-not-nested/src/subdir2/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir2/go.sum rename to go/ql/integration-tests/two-go-mods-not-nested/src/subdir2/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir2/subsubdir2/add.go b/go/ql/integration-tests/two-go-mods-not-nested/src/subdir2/subsubdir2/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir2/subsubdir2/add.go rename to go/ql/integration-tests/two-go-mods-not-nested/src/subdir2/subsubdir2/add.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir2/test.go b/go/ql/integration-tests/two-go-mods-not-nested/src/subdir2/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/src/subdir2/test.go rename to go/ql/integration-tests/two-go-mods-not-nested/src/subdir2/test.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/test.expected b/go/ql/integration-tests/two-go-mods-not-nested/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/test.expected rename to go/ql/integration-tests/two-go-mods-not-nested/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/test.py b/go/ql/integration-tests/two-go-mods-not-nested/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/test.py rename to go/ql/integration-tests/two-go-mods-not-nested/test.py diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/test.ql b/go/ql/integration-tests/two-go-mods-not-nested/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-not-nested/test.ql rename to go/ql/integration-tests/two-go-mods-not-nested/test.ql diff --git a/go/ql/integration-tests/linux-only/go/glide-sample/build_environment.expected b/go/ql/integration-tests/two-go-mods-one-failure/build_environment.expected similarity index 100% rename from go/ql/integration-tests/linux-only/go/glide-sample/build_environment.expected rename to go/ql/integration-tests/two-go-mods-one-failure/build_environment.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/diagnostics.expected b/go/ql/integration-tests/two-go-mods-one-failure/diagnostics.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/diagnostics.expected rename to go/ql/integration-tests/two-go-mods-one-failure/diagnostics.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.mod b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir1/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.mod rename to go/ql/integration-tests/two-go-mods-one-failure/src/subdir1/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.sum b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir1/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.sum rename to go/ql/integration-tests/two-go-mods-one-failure/src/subdir1/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/subsubdir1/add.go b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir1/subsubdir1/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/subsubdir1/add.go rename to go/ql/integration-tests/two-go-mods-one-failure/src/subdir1/subsubdir1/add.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/test.go b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir1/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/test.go rename to go/ql/integration-tests/two-go-mods-one-failure/src/subdir1/test.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir2/go.mod b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir2/go.mod rename to go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir2/go.sum b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir2/go.sum rename to go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir2/subsubdir2/add.go b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/subsubdir2/add.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir2/subsubdir2/add.go rename to go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/subsubdir2/add.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir2/test.go b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/test.go similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir2/test.go rename to go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/test.go diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/test.expected b/go/ql/integration-tests/two-go-mods-one-failure/test.expected similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/test.expected rename to go/ql/integration-tests/two-go-mods-one-failure/test.expected diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/test.py b/go/ql/integration-tests/two-go-mods-one-failure/test.py similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/test.py rename to go/ql/integration-tests/two-go-mods-one-failure/test.py diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/test.ql b/go/ql/integration-tests/two-go-mods-one-failure/test.ql similarity index 100% rename from go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/test.ql rename to go/ql/integration-tests/two-go-mods-one-failure/test.ql diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 41cfec4595e..6fe67e276c3 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,39 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. + +### Minor Analysis Improvements + +* When a function or type has more than one anonymous type parameters, they were mistakenly being treated as the same type parameter. This has now been fixed. +* Local source models for reading and parsing environment variables have been added for the following libraries: + * `os` + * `syscall` + * `github.com/caarlos0/env` + * `github.com/gobuffalo/envy` + * `github.com/hashicorp/go-envparse` + * `github.com/joho/godotenv` + * `github.com/kelseyhightower/envconfig` +* Local source models have been added for the APIs which open files in the `io/fs`, `io/ioutil` and `os` packages in the Go standard library. You can optionally include threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see [Analyzing your code with CodeQL queries](https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>) and [Customizing your advanced setup for code scanning](https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models). + +### Bug Fixes + +* Golang vendor directories not at the root of a repository are now correctly excluded from the baseline Go file count. This means code coverage information will be more accurate. + +## 1.2.0 + +### Major Analysis Improvements + +* Go 1.23 is now supported. + +## 1.1.5 + +### Bug Fixes + +* Fixed an issue where `io/ioutil.WriteFile`'s non-path arguments incorrectly generated `go/path-injection` alerts when untrusted data was written to a file, or controlled the file's mode. + ## 1.1.4 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-08-12-add-environment-models.md b/go/ql/lib/change-notes/2024-08-12-add-environment-models.md deleted file mode 100644 index c511718475d..00000000000 --- a/go/ql/lib/change-notes/2024-08-12-add-environment-models.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -category: minorAnalysis ---- -* Local source models for reading and parsing environment variables have been added for the following libraries: - - os - - syscall - - github.com/caarlos0/env - - github.com/gobuffalo/envy - - github.com/hashicorp/go-envparse - - github.com/joho/godotenv - - github.com/kelseyhightower/envconfig diff --git a/go/ql/lib/change-notes/2024-08-12-add-file-models.md b/go/ql/lib/change-notes/2024-08-12-add-file-models.md deleted file mode 100644 index eed216dd361..00000000000 --- a/go/ql/lib/change-notes/2024-08-12-add-file-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Local source models have been added for the APIs which open files in the `io/fs`, `io/ioutil` and `os` packages in the Go standard library. You can optionally include threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see [Analyzing your code with CodeQL queries](https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>) and [Customizing your advanced setup for code scanning](https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models). diff --git a/go/ql/lib/change-notes/2024-08-20-vendor-dirs-baseline.md b/go/ql/lib/change-notes/2024-08-20-vendor-dirs-baseline.md deleted file mode 100644 index cab6b49f3ba..00000000000 --- a/go/ql/lib/change-notes/2024-08-20-vendor-dirs-baseline.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Golang vendor directories not at the root of a repository are now correctly excluded from the baseline Go file count. This means code coverage information will be more accurate. diff --git a/go/ql/lib/change-notes/released/1.1.5.md b/go/ql/lib/change-notes/released/1.1.5.md new file mode 100644 index 00000000000..ccec4d55ebb --- /dev/null +++ b/go/ql/lib/change-notes/released/1.1.5.md @@ -0,0 +1,5 @@ +## 1.1.5 + +### Bug Fixes + +* Fixed an issue where `io/ioutil.WriteFile`'s non-path arguments incorrectly generated `go/path-injection` alerts when untrusted data was written to a file, or controlled the file's mode. diff --git a/go/ql/lib/change-notes/released/1.2.0.md b/go/ql/lib/change-notes/released/1.2.0.md new file mode 100644 index 00000000000..67a9d42ea4e --- /dev/null +++ b/go/ql/lib/change-notes/released/1.2.0.md @@ -0,0 +1,5 @@ +## 1.2.0 + +### Major Analysis Improvements + +* Go 1.23 is now supported. diff --git a/go/ql/lib/change-notes/released/2.0.0.md b/go/ql/lib/change-notes/released/2.0.0.md new file mode 100644 index 00000000000..84b2d651501 --- /dev/null +++ b/go/ql/lib/change-notes/released/2.0.0.md @@ -0,0 +1,23 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. + +### Minor Analysis Improvements + +* When a function or type has more than one anonymous type parameters, they were mistakenly being treated as the same type parameter. This has now been fixed. +* Local source models for reading and parsing environment variables have been added for the following libraries: + * os + * syscall + * github.com/caarlos0/env + * github.com/gobuffalo/envy + * github.com/hashicorp/go-envparse + * github.com/joho/godotenv + * github.com/kelseyhightower/envconfig +* Local source models have been added for the APIs which open files in the `io/fs`, `io/ioutil` and `os` packages in the Go standard library. You can optionally include threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see [Analyzing your code with CodeQL queries](https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>) and [Customizing your advanced setup for code scanning](https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models). + +### Bug Fixes + +* Golang vendor directories not at the root of a repository are now correctly excluded from the baseline Go file count. This means code coverage information will be more accurate. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 26cbcd3f123..0abe6ccede0 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.4 +lastReleaseVersion: 2.0.0 diff --git a/go/ql/lib/ext/database.sql.driver.model.yml b/go/ql/lib/ext/database.sql.driver.model.yml index 50b699e4371..c2d780bb7c8 100644 --- a/go/ql/lib/ext/database.sql.driver.model.yml +++ b/go/ql/lib/ext/database.sql.driver.model.yml @@ -1,14 +1,4 @@ extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["database/sql/driver", "Execer", False, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql/driver", "ExecerContext", False, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql/driver", "Conn", False, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql/driver", "ConnPrepareContext", False, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql/driver", "Queryer", False, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql/driver", "QueryerContext", False, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - addsTo: pack: codeql/go-all extensible: summaryModel diff --git a/go/ql/lib/ext/database.sql.model.yml b/go/ql/lib/ext/database.sql.model.yml index b8fb85bb893..e1083f6e49a 100644 --- a/go/ql/lib/ext/database.sql.model.yml +++ b/go/ql/lib/ext/database.sql.model.yml @@ -1,32 +1,4 @@ extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["database/sql", "Conn", False, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Conn", False, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Conn", False, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Conn", False, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Conn", False, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Conn", False, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Conn", False, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Conn", False, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "DB", False, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "DB", False, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "DB", False, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "DB", False, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "DB", False, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "DB", False, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "DB", False, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "DB", False, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Tx", False, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Tx", False, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Tx", False, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Tx", False, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Tx", False, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Tx", False, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Tx", False, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Tx", False, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - addsTo: pack: codeql/go-all extensible: summaryModel diff --git a/go/ql/lib/ext/fmt.model.yml b/go/ql/lib/ext/fmt.model.yml index ff975cf423c..5234b509933 100644 --- a/go/ql/lib/ext/fmt.model.yml +++ b/go/ql/lib/ext/fmt.model.yml @@ -1,11 +1,4 @@ extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["fmt", "", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["fmt", "", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["fmt", "", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - addsTo: pack: codeql/go-all extensible: summaryModel diff --git a/go/ql/lib/ext/github.com.beego.beego.client.orm.model.yml b/go/ql/lib/ext/github.com.beego.beego.client.orm.model.yml deleted file mode 100644 index 9e8849423eb..00000000000 --- a/go/ql/lib/ext/github.com.beego.beego.client.orm.model.yml +++ /dev/null @@ -1,42 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["beego-orm", "github.com/beego/beego/client/orm"] - - ["beego-orm", "github.com/astaxie/beego/orm"] - - ["beego-orm", "github.com/beego/beego/orm"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:beego-orm", "Condition", False, "Raw", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", False, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", False, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", False, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", False, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", False, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", False, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", False, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", False, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "Ormer", False, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "And", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Delete", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "From", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "In", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "InnerJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "InsertInto", "", "", "Argument[0..1]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "LeftJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "On", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Or", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "RightJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Select", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Set", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Subquery", "", "", "Argument[0..1]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Update", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Values", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", False, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QuerySeter", False, "FilterRaw", "", "", "Argument[1]", "sql-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.beego.beego.core.logs.model.yml b/go/ql/lib/ext/github.com.beego.beego.core.logs.model.yml deleted file mode 100644 index 3dfbbe89719..00000000000 --- a/go/ql/lib/ext/github.com.beego.beego.core.logs.model.yml +++ /dev/null @@ -1,34 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["beego-logs", "github.com/astaxie/beego/logs"] - - ["beego-logs", "github.com/beego/beego/logs"] - - ["beego-logs", "github.com/beego/beego/core/logs"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:beego-logs", "", False, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", False, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.beego.beego.core.utils.model.yml b/go/ql/lib/ext/github.com.beego.beego.core.utils.model.yml index 63c05b92040..4eb0688e37e 100644 --- a/go/ql/lib/ext/github.com.beego.beego.core.utils.model.yml +++ b/go/ql/lib/ext/github.com.beego.beego.core.utils.model.yml @@ -6,11 +6,6 @@ extensions: - ["beego-utils", "github.com/astaxie/beego/utils"] - ["beego-utils", "github.com/beego/beego/utils"] - ["beego-utils", "github.com/beego/beego/core/utils"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:beego-utils", "", False, "Display", "", "", "Argument[0]", "log-injection", "manual"] - addsTo: pack: codeql/go-all extensible: summaryModel diff --git a/go/ql/lib/ext/github.com.beego.beego.server.web.model.yml b/go/ql/lib/ext/github.com.beego.beego.server.web.model.yml index c55d620c2e4..8a11da7ad83 100644 --- a/go/ql/lib/ext/github.com.beego.beego.server.web.model.yml +++ b/go/ql/lib/ext/github.com.beego.beego.server.web.model.yml @@ -10,18 +10,6 @@ extensions: pack: codeql/go-all extensible: sinkModel data: - # log-injection - - ["group:beego", "", False, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"] # path-injection - ["group:beego", "", False, "Walk", "", "", "Argument[1]", "path-injection", "manual"] - ["group:beego", "Controller", False, "SaveToFile", "", "", "Argument[1]", "path-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.couchbase.gocb.model.yml b/go/ql/lib/ext/github.com.couchbase.gocb.model.yml index d17b53dd6da..ff0a4c22c8d 100644 --- a/go/ql/lib/ext/github.com.couchbase.gocb.model.yml +++ b/go/ql/lib/ext/github.com.couchbase.gocb.model.yml @@ -3,43 +3,28 @@ extensions: pack: codeql/go-all extensible: packageGrouping data: - - ["gocb1", "fixed-version:github.com/couchbase/gocb"] - - ["gocb1", "fixed-version:gopkg.in/couchbase/gocb.v1"] - - ["gocb1", "fixed-version:github.com/couchbaselabs/gocb"] - - ["gocb2", "github.com/couchbase/gocb/v2"] - - ["gocb2", "gopkg.in/couchbase/gocb.v2"] - - ["gocb2", "github.com/couchbaselabs/gocb/v2"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:gocb1", "Bucket", True, "ExecuteN1qlQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb1", "Bucket", True, "ExecuteAnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb1", "Cluster", True, "ExecuteN1qlQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb1", "Cluster", True, "ExecuteAnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb2", "Cluster", True, "AnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb2", "Cluster", True, "Query", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb2", "Scope", True, "AnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb2", "Scope", True, "Query", "", "", "Argument[0]", "nosql-injection", "manual"] + - ["gocb", "github.com/couchbase/gocb"] + - ["gocb", "gopkg.in/couchbase/gocb"] + - ["gocb", "github.com/couchbaselabs/gocb"] - addsTo: pack: codeql/go-all extensible: summaryModel data: - - ["group:gocb1", "", False, "NewAnalyticsQuery", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "", False, "NewN1qlQuery", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "ContextId", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "Deferred", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "Pretty", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "Priority", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "RawParam", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "ServerSideTimeout", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "AdHoc", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "Consistency", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "ConsistentWith", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "Custom", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "PipelineBatch", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "PipelineCap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "Profile", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "ReadOnly", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "ScanCap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "Timeout", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "", False, "NewAnalyticsQuery", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "", False, "NewN1qlQuery", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "AnalyticsQuery", True, "ContextId", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "AnalyticsQuery", True, "Deferred", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "AnalyticsQuery", True, "Pretty", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "AnalyticsQuery", True, "Priority", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "AnalyticsQuery", True, "RawParam", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "AnalyticsQuery", True, "ServerSideTimeout", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "AdHoc", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "Consistency", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "ConsistentWith", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "Custom", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "PipelineBatch", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "PipelineCap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "Profile", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "ReadOnly", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "ScanCap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["group:gocb", "N1qlQuery", True, "Timeout", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.yml b/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.yml deleted file mode 100644 index 4b4996926e3..00000000000 --- a/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.yml +++ /dev/null @@ -1,14 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/davecgh/go-spew/spew", "", False, "Dump", "", "", "Argument[0]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Fdump", "", "", "Argument[1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Fprint", "", "", "Argument[1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Fprintf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Fprintln", "", "", "Argument[1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.elazarl.goproxy.model.yml b/go/ql/lib/ext/github.com.elazarl.goproxy.model.yml index 01a61d2c3ac..20e4a26f1cd 100644 --- a/go/ql/lib/ext/github.com.elazarl.goproxy.model.yml +++ b/go/ql/lib/ext/github.com.elazarl.goproxy.model.yml @@ -1,10 +1,4 @@ extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/elazarl/goproxy", "ProxyCtx", False, "Logf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["github.com/elazarl/goproxy", "ProxyCtx", False, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - addsTo: pack: codeql/go-all extensible: summaryModel diff --git a/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.yml b/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.yml deleted file mode 100644 index 030656c6eb8..00000000000 --- a/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.yml +++ /dev/null @@ -1,57 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # These models are for v1. Some of them hold for v2, but we should model v2 properly. - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.golang.glog.model.yml b/go/ql/lib/ext/github.com.golang.glog.model.yml deleted file mode 100644 index dd36e6a7d8f..00000000000 --- a/go/ql/lib/ext/github.com.golang.glog.model.yml +++ /dev/null @@ -1,102 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["glog", "github.com/golang/glog"] - - ["glog", "gopkg.in/glog"] - - ["glog", "k8s.io/klog"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:glog", "", False, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "Exit", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Exitf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Exitln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ErrorContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ErrorContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ErrorContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ErrorContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ErrorDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ErrorDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Exit", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ExitContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ExitContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ExitContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ExitContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ExitDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "ExitDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Exitf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Exitln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "FatalContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "FatalContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "FatalContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "FatalContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "FatalDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "FatalDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "InfoContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "InfoContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "InfoContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "InfoContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "InfoDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "InfoDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "WarningContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "WarningContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "WarningContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "WarningContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "WarningDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "WarningDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", False, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.jmoiron.sqlx.model.yml b/go/ql/lib/ext/github.com.jmoiron.sqlx.model.yml deleted file mode 100644 index 8c9d19b4b85..00000000000 --- a/go/ql/lib/ext/github.com.jmoiron.sqlx.model.yml +++ /dev/null @@ -1,17 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/jmoiron/sqlx", "DB", True, "Get", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "MustExec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "NamedExec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "NamedQuery", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "Queryx", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "Select", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Get", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "MustExec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "NamedExec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "NamedQuery", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Queryx", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Select", "", "", "Argument[1]", "sql-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.mastermind.squirrel.model.yml b/go/ql/lib/ext/github.com.mastermind.squirrel.model.yml deleted file mode 100644 index a5f46d7c214..00000000000 --- a/go/ql/lib/ext/github.com.mastermind.squirrel.model.yml +++ /dev/null @@ -1,51 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["squirrel", "github.com/Masterminds/squirrel"] - - ["squirrel", "gopkg.in/Masterminds/squirrel"] - - ["squirrel", "github.com/lann/squirrel"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:squirrel", "", True, "Delete", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "", True, "Expr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "", True, "Insert", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "", True, "Select", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "", True, "Update", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - - ["group:squirrel", "DeleteBuilder", True, "From", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "DeleteBuilder", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "DeleteBuilder", True, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "DeleteBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "DeleteBuilder", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - - ["group:squirrel", "InsertBuilder", True, "Columns", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "InsertBuilder", True, "Into", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "InsertBuilder", True, "Options", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "InsertBuilder", True, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "InsertBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - - - ["group:squirrel", "SelectBuilder", True, "CrossJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Column", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Columns", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "SelectBuilder", True, "From", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "InnerJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "LeftJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Options", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "SelectBuilder", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "SelectBuilder", True, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "RightJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - - ["group:squirrel", "UpdateBuilder", True, "From", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "UpdateBuilder", True, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "Set", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "Table", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.rqlite.gorqlite.model.yml b/go/ql/lib/ext/github.com.rqlite.gorqlite.model.yml deleted file mode 100644 index 62e24f2c920..00000000000 --- a/go/ql/lib/ext/github.com.rqlite.gorqlite.model.yml +++ /dev/null @@ -1,35 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["gorqlite", "github.com/rqlite/gorqlite"] - - ["gorqlite", "github.com/raindog308/gorqlite"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:gorqlite", "Connection", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "Queue", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueOneContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "Write", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteOneContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.sirupsen.logrus.model.yml b/go/ql/lib/ext/github.com.sirupsen.logrus.model.yml deleted file mode 100644 index 54f802e0241..00000000000 --- a/go/ql/lib/ext/github.com.sirupsen.logrus.model.yml +++ /dev/null @@ -1,131 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["logrus", "github.com/sirupsen/logrus"] - - ["logrus", "github.com/Sirupsen/logrus"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:logrus", "", False, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "DebugFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Debugln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "ErrorFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "FatalFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "InfoFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "PanicFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "PrintFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Trace", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "TraceFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Traceln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WarnFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warnln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WarningFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WithError", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "WithFields", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WithTime", "", "", "Argument[0]", "log-injection", "manual"] - - - ["group:logrus", "Entry", False, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Debugln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Log", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Logf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Logln", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Trace", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Traceln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Warnln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "WithError", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "WithFields", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", False, "WithTime", "", "", "Argument[0]", "log-injection", "manual"] - - - ["group:logrus", "Logger", False, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "DebugFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Debugln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "ErrorFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "FatalFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "InfoFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Log", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "LogFn", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Logf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Logln", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "PanicFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "PrintFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Trace", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "TraceFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Traceln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "WarnFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Warnln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "WarningFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "WithError", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "WithFields", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", False, "WithTime", "", "", "Argument[0]", "log-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.uptrace.bun.model.yml b/go/ql/lib/ext/github.com.uptrace.bun.model.yml deleted file mode 100644 index eb060b4f9cc..00000000000 --- a/go/ql/lib/ext/github.com.uptrace.bun.model.yml +++ /dev/null @@ -1,68 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/uptrace/bun", "", True, "NewRawQuery", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "AddColumnQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "AddColumnQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "AddColumnQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateTableQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateTableQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateTableQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DeleteQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DeleteQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DeleteQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropColumnQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropColumnQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropColumnQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropTableQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropTableQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "MergeQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "MergeQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "RawQuery", True, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "DistinctOn", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "For", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "GroupExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "OrderExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "TruncateTableQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "UpdateQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "UpdateQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "UpdateQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "UpdateQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.yml b/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.yml deleted file mode 100644 index 6c2d4afdeae..00000000000 --- a/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.yml +++ /dev/null @@ -1,19 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Aggregate", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "CountDocuments", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "DeleteMany", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "DeleteOne", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Distinct", "", "", "Argument[2]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Find", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOne", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndDelete", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndReplace", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndUpdate", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "ReplaceOne", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "UpdateMany", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "UpdateOne", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Watch", "", "", "Argument[1]", "nosql-injection", "manual"] diff --git a/go/ql/lib/ext/go.uber.org.zap.model.yml b/go/ql/lib/ext/go.uber.org.zap.model.yml index c4e43356f26..2ca7f7e8a80 100644 --- a/go/ql/lib/ext/go.uber.org.zap.model.yml +++ b/go/ql/lib/ext/go.uber.org.zap.model.yml @@ -1,41 +1,4 @@ extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["go.uber.org/zap", "Logger", False, "DPanic", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "Fatal", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "Named", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "Panic", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "With", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", False, "WithOptions", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "DPanic", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "DPanicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "DPanicw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Debugw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Errorw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Fatalw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Infow", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Named", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Panicw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "Warnw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", False, "With", "", "", "Argument[0]", "log-injection", "manual"] - addsTo: pack: codeql/go-all extensible: summaryModel diff --git a/go/ql/lib/ext/gorm.io.gorm.model.yml b/go/ql/lib/ext/gorm.io.gorm.model.yml deleted file mode 100644 index bfcf1fa66a7..00000000000 --- a/go/ql/lib/ext/gorm.io.gorm.model.yml +++ /dev/null @@ -1,25 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["gorm", "gorm.io/gorm"] - - ["gorm", "github.com/jinzhu/gorm"] - - ["gorm", "github.com/go-gorm/gorm"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:gorm", "DB", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Order", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Not", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Or", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Select", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Table", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Group", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Joins", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Distinct", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Pluck", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/go/ql/lib/ext/log.model.yml b/go/ql/lib/ext/log.model.yml index 1ebce079a52..7f52a173307 100644 --- a/go/ql/lib/ext/log.model.yml +++ b/go/ql/lib/ext/log.model.yml @@ -1,28 +1,4 @@ extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["log", "", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Output", "", "", "Argument[1]", "log-injection", "manual"] - - ["log", "", False, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "", False, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "Logger", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", False, "Output", "", "", "Argument[1]", "log-injection", "manual"] - - ["log", "Logger", False, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", False, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "Logger", False, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "Logger", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - addsTo: pack: codeql/go-all extensible: summaryModel diff --git a/go/ql/lib/ext/xorm.io.xorm.model.yml b/go/ql/lib/ext/xorm.io.xorm.model.yml deleted file mode 100644 index fd73b7c9a66..00000000000 --- a/go/ql/lib/ext/xorm.io.xorm.model.yml +++ /dev/null @@ -1,53 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["xorm", "xorm.io/xorm"] - - ["xorm", "github.com/go-xorm/xorm"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:xorm", "Engine", True, "Alias", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "And", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "In", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Join", "", "", "Argument[0..2]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "NotIn", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Or", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "QueryString", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "QueryInterface", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Select", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "SetExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "SQL", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Sum", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Sums", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "SumInt", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "SumsInt", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Alias", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "And", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "In", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Join", "", "", "Argument[0..2]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "NotIn", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Or", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "QueryString", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "QueryInterface", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Select", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "SetExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "SQL", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Sum", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Sums", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "SumInt", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "SumsInt", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 5d56d0ecc73..d86c9a07eed 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 1.1.5-dev +version: 2.0.1-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/lib/semmle/go/Concepts.qll b/go/ql/lib/semmle/go/Concepts.qll index 8fd38a56e1c..c15d3683b40 100644 --- a/go/ql/lib/semmle/go/Concepts.qll +++ b/go/ql/lib/semmle/go/Concepts.qll @@ -373,19 +373,6 @@ module LoggerCall { } } -private class DefaultLoggerCall extends LoggerCall::Range, DataFlow::CallNode { - DataFlow::ArgumentNode messageArgument; - - DefaultLoggerCall() { - sinkNode(messageArgument, "log-injection") and - this = messageArgument.getCall() - } - - override DataFlow::Node getAMessageComponent() { - result = messageArgument.getACorrespondingSyntacticArgument() - } -} - /** * A function that encodes data into a binary or textual format. * diff --git a/go/ql/lib/semmle/go/Decls.qll b/go/ql/lib/semmle/go/Decls.qll index 8c59c3bf8dd..8e3df22cc80 100644 --- a/go/ql/lib/semmle/go/Decls.qll +++ b/go/ql/lib/semmle/go/Decls.qll @@ -649,18 +649,28 @@ class ReceiverDecl extends FieldBase, Documentable, ExprParent { * Examples: * * ```go + * int + * string * error * r io.Reader + * output string + * err error * x, y int * ``` * * as in the following code: * * ```go - * func f(error) { return nil } - * func g(r io.Reader) { return nil } - * func h(x, y int) { return } + * func f1() int { return 0 } + * func f2(input string) (string, error) { return "", nil } + * func f3(a int) (r io.Reader) { return nil } + * func f4(input string) (output string, err error) { return} + * func f5(e error) (x, y int) { return } * ``` + * + * Note: `x, y int` is a single `ResultVariableDecl` even though it declares + * two different result variables. Use the member predicate `getTypeExpr()` to + * get `int`, `getNameExpr(0)` to get `x` and `getNameExpr(1)` to get `y`. */ class ResultVariableDecl extends ParameterOrResultDecl { ResultVariableDecl() { rawIndex < 0 } diff --git a/go/ql/lib/semmle/go/Scopes.qll b/go/ql/lib/semmle/go/Scopes.qll index 04cb65fa987..7386b81868f 100644 --- a/go/ql/lib/semmle/go/Scopes.qll +++ b/go/ql/lib/semmle/go/Scopes.qll @@ -197,8 +197,11 @@ class PackageEntity extends Entity, @pkgobject { } /** A built-in or declared named type. */ class TypeEntity extends Entity, @typeobject { } +/** The parent of a type parameter type, either a declared type or a declared function. */ +class TypeParamParentEntity extends Entity, @typeparamparentobject { } + /** A declared named type. */ -class DeclaredType extends TypeEntity, DeclaredEntity, @decltypeobject { +class DeclaredType extends TypeEntity, DeclaredEntity, TypeParamParentEntity, @decltypeobject { /** Gets the declaration specifier declaring this type. */ TypeSpec getSpec() { result.getNameExpr() = this.getDeclaration() } } @@ -598,7 +601,7 @@ class PromotedMethod extends Method { } /** A declared function. */ -class DeclaredFunction extends Function, DeclaredEntity, @declfunctionobject { +class DeclaredFunction extends Function, DeclaredEntity, TypeParamParentEntity, @declfunctionobject { override FuncDecl getFuncDecl() { result.getNameExpr() = this.getDeclaration() } override predicate mayHaveSideEffects() { diff --git a/go/ql/lib/semmle/go/Types.qll b/go/ql/lib/semmle/go/Types.qll index 026b009aa3f..645f0e3fe67 100644 --- a/go/ql/lib/semmle/go/Types.qll +++ b/go/ql/lib/semmle/go/Types.qll @@ -381,6 +381,12 @@ class TypeParamType extends @typeparamtype, CompositeType { override InterfaceType getUnderlyingType() { result = this.getConstraint().getUnderlyingType() } + /** Gets the parent object of this type parameter type. */ + TypeParamParentEntity getParent() { typeparam(this, _, _, result, _) } + + /** Gets the index of this type parameter type. */ + int getIndex() { typeparam(this, _, _, _, result) } + override string pp() { result = this.getParamName() } /** diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll index 3b1439511d1..359fa71744b 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll index 3b1439511d1..359fa71744b 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/go/ql/lib/semmle/go/frameworks/Beego.qll b/go/ql/lib/semmle/go/frameworks/Beego.qll index a9e296a1f97..9f6ee598003 100644 --- a/go/ql/lib/semmle/go/frameworks/Beego.qll +++ b/go/ql/lib/semmle/go/frameworks/Beego.qll @@ -33,6 +33,13 @@ module Beego { result = package(v2modulePath(), "server/web/context") } + /** Gets the path for the logs package of beego. */ + string logsPackagePath() { + result = package(v1modulePath(), "logs") + or + result = package(v2modulePath(), "core/logs") + } + /** Gets the path for the utils package of beego. */ string utilsPackagePath() { result = package(v1modulePath(), "utils") @@ -165,6 +172,36 @@ module Beego { override string getAContentType() { none() } } + private string getALogFunctionName() { + result = + [ + "Alert", "Critical", "Debug", "Emergency", "Error", "Info", "Informational", "Notice", + "Trace", "Warn", "Warning" + ] + } + + private class ToplevelBeegoLoggers extends LoggerCall::Range, DataFlow::CallNode { + ToplevelBeegoLoggers() { + this.getTarget().hasQualifiedName([packagePath(), logsPackagePath()], getALogFunctionName()) + } + + override DataFlow::Node getAMessageComponent() { result = this.getASyntacticArgument() } + } + + private class BeegoLoggerMethods extends LoggerCall::Range, DataFlow::MethodCallNode { + BeegoLoggerMethods() { + this.getTarget().hasQualifiedName(logsPackagePath(), "BeeLogger", getALogFunctionName()) + } + + override DataFlow::Node getAMessageComponent() { result = this.getASyntacticArgument() } + } + + private class UtilLoggers extends LoggerCall::Range, DataFlow::CallNode { + UtilLoggers() { this.getTarget().hasQualifiedName(utilsPackagePath(), "Display") } + + override DataFlow::Node getAMessageComponent() { result = this.getASyntacticArgument() } + } + private class HtmlQuoteSanitizer extends SharedXss::Sanitizer { HtmlQuoteSanitizer() { exists(DataFlow::CallNode c | c.getTarget().hasQualifiedName(packagePath(), "Htmlquote") | diff --git a/go/ql/lib/semmle/go/frameworks/BeegoOrm.qll b/go/ql/lib/semmle/go/frameworks/BeegoOrm.qll index 925b0f19fa3..c1de0cf4244 100644 --- a/go/ql/lib/semmle/go/frameworks/BeegoOrm.qll +++ b/go/ql/lib/semmle/go/frameworks/BeegoOrm.qll @@ -14,6 +14,57 @@ module BeegoOrm { /** Gets the package name `github.com/astaxie/beego/orm`. */ string packagePath() { result = package("github.com/astaxie/beego", "orm") } + private class DbSink extends SQL::QueryString::Range { + DbSink() { + exists(Method m, string methodName, int argNum | + m.hasQualifiedName(packagePath(), "DB", methodName) and + ( + methodName = ["Exec", "Prepare", "Query", "QueryRow"] and + argNum = 0 + or + methodName = ["ExecContext", "PrepareContext", "QueryContext", "QueryRowContext"] and + argNum = 1 + ) + | + this = m.getACall().getArgument(argNum) + ) + } + } + + private class QueryBuilderSink extends SQL::QueryString::Range { + // Note this class doesn't do any escaping, unlike the true ORM part of the package + QueryBuilderSink() { + exists(Method impl | impl.implements(packagePath(), "QueryBuilder", _) | + this = impl.getACall().getASyntacticArgument() + ) and + this.getType().getUnderlyingType() instanceof StringType + } + } + + private class OrmerRawSink extends SQL::QueryString::Range { + OrmerRawSink() { + exists(Method impl | impl.implements(packagePath(), "Ormer", "Raw") | + this = impl.getACall().getArgument(0) + ) + } + } + + private class QuerySeterFilterRawSink extends SQL::QueryString::Range { + QuerySeterFilterRawSink() { + exists(Method impl | impl.implements(packagePath(), "QuerySeter", "FilterRaw") | + this = impl.getACall().getArgument(1) + ) + } + } + + private class ConditionRawSink extends SQL::QueryString::Range { + ConditionRawSink() { + exists(Method impl | impl.implements(packagePath(), "Condition", "Raw") | + this = impl.getACall().getArgument(1) + ) + } + } + private class OrmerSource extends StoredXss::Source { OrmerSource() { exists(Method impl | diff --git a/go/ql/lib/semmle/go/frameworks/Couchbase.qll b/go/ql/lib/semmle/go/frameworks/Couchbase.qll index b5bfbcb22a2..5eaa4d20c3a 100644 --- a/go/ql/lib/semmle/go/frameworks/Couchbase.qll +++ b/go/ql/lib/semmle/go/frameworks/Couchbase.qll @@ -5,23 +5,57 @@ import go /** - * DEPRECATED - * * Provides models of commonly used functions in the official Couchbase Go SDK library. */ -deprecated module Couchbase { +module Couchbase { /** - * DEPRECATED - * * Gets a package path for the official Couchbase Go SDK library. * * Note that v1 and v2 have different APIs, but the names are disjoint so there is no need to * distinguish between them. */ - deprecated string packagePath() { + string packagePath() { result = package([ "gopkg.in/couchbase/gocb", "github.com/couchbase/gocb", "github.com/couchbaselabs/gocb" ], "") } + + /** + * A query used in an API function acting on a `Bucket` or `Cluster` struct of v1 of + * the official Couchbase Go library, gocb. + */ + private class CouchbaseV1Query extends NoSql::Query::Range { + CouchbaseV1Query() { + // func (b *Bucket) ExecuteAnalyticsQuery(q *AnalyticsQuery, params interface{}) (AnalyticsResults, error) + // func (b *Bucket) ExecuteN1qlQuery(q *N1qlQuery, params interface{}) (QueryResults, error) + // func (c *Cluster) ExecuteAnalyticsQuery(q *AnalyticsQuery, params interface{}) (AnalyticsResults, error) + // func (c *Cluster) ExecuteN1qlQuery(q *N1qlQuery, params interface{}) (QueryResults, error) + exists(Method meth, string structName, string methodName | + structName in ["Bucket", "Cluster"] and + methodName in ["ExecuteN1qlQuery", "ExecuteAnalyticsQuery"] and + meth.hasQualifiedName(packagePath(), structName, methodName) and + this = meth.getACall().getArgument(0) + ) + } + } + + /** + * A query used in an API function acting on a `Bucket` or `Cluster` struct of v1 of + * the official Couchbase Go library, gocb. + */ + private class CouchbaseV2Query extends NoSql::Query::Range { + CouchbaseV2Query() { + // func (c *Cluster) AnalyticsQuery(statement string, opts *AnalyticsOptions) (*AnalyticsResult, error) + // func (c *Cluster) Query(statement string, opts *QueryOptions) (*QueryResult, error) + // func (s *Scope) AnalyticsQuery(statement string, opts *AnalyticsOptions) (*AnalyticsResult, error) + // func (s *Scope) Query(statement string, opts *QueryOptions) (*QueryResult, error) + exists(Method meth, string structName, string methodName | + structName in ["Cluster", "Scope"] and + methodName in ["AnalyticsQuery", "Query"] and + meth.hasQualifiedName(packagePath(), structName, methodName) and + this = meth.getACall().getArgument(0) + ) + } + } } diff --git a/go/ql/lib/semmle/go/frameworks/ElazarlGoproxy.qll b/go/ql/lib/semmle/go/frameworks/ElazarlGoproxy.qll index b1bf4571216..4d10c8af312 100644 --- a/go/ql/lib/semmle/go/frameworks/ElazarlGoproxy.qll +++ b/go/ql/lib/semmle/go/frameworks/ElazarlGoproxy.qll @@ -100,4 +100,10 @@ module ElazarlGoproxy { override int getFormatStringIndex() { result = 0 } } + + private class ProxyLog extends LoggerCall::Range, DataFlow::MethodCallNode { + ProxyLog() { this.getTarget() instanceof ProxyLogFunction } + + override DataFlow::Node getAMessageComponent() { result = this.getASyntacticArgument() } + } } diff --git a/go/ql/lib/semmle/go/frameworks/Glog.qll b/go/ql/lib/semmle/go/frameworks/Glog.qll index 146b8a4f814..f9f5c9e3f11 100644 --- a/go/ql/lib/semmle/go/frameworks/Glog.qll +++ b/go/ql/lib/semmle/go/frameworks/Glog.qll @@ -40,4 +40,14 @@ module Glog { override int getFormatStringIndex() { result = super.getFirstPrintedArg() } } + + private class GlogCall extends LoggerCall::Range, DataFlow::CallNode { + GlogFunction callee; + + GlogCall() { this = callee.getACall() } + + override DataFlow::Node getAMessageComponent() { + result = this.getSyntacticArgument(any(int i | i >= callee.getFirstPrintedArg())) + } + } } diff --git a/go/ql/lib/semmle/go/frameworks/Logrus.qll b/go/ql/lib/semmle/go/frameworks/Logrus.qll index 83278a4cd9e..f7de9a75dae 100644 --- a/go/ql/lib/semmle/go/frameworks/Logrus.qll +++ b/go/ql/lib/semmle/go/frameworks/Logrus.qll @@ -28,6 +28,12 @@ module Logrus { } } + private class LogCall extends LoggerCall::Range, DataFlow::CallNode { + LogCall() { this = any(LogFunction f).getACall() } + + override DataFlow::Node getAMessageComponent() { result = this.getASyntacticArgument() } + } + private class StringFormatters extends StringOps::Formatting::Range instanceof LogFunction { int argOffset; diff --git a/go/ql/lib/semmle/go/frameworks/NoSQL.qll b/go/ql/lib/semmle/go/frameworks/NoSQL.qll index 36932149628..c2469fc02ac 100644 --- a/go/ql/lib/semmle/go/frameworks/NoSQL.qll +++ b/go/ql/lib/semmle/go/frameworks/NoSQL.qll @@ -31,6 +31,84 @@ module NoSql { ) } } + + /** + * Holds if method `name` of struct `Collection` from package + * [go.mongodb.org/mongo-driver/mongo](https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo) + * interprets parameter `n` as a query. + */ + private predicate mongoDbCollectionMethod(string name, int n) { + // func (coll *Collection) CountDocuments(ctx context.Context, filter interface{}, + // opts ...*options.CountOptions) (int64, error) + name = "CountDocuments" and n = 1 + or + // func (coll *Collection) DeleteMany(ctx context.Context, filter interface{}, + // opts ...*options.DeleteOptions) (*DeleteResult, error) + name = "DeleteMany" and n = 1 + or + // func (coll *Collection) DeleteOne(ctx context.Context, filter interface{}, + // opts ...*options.DeleteOptions) (*DeleteResult, error) + name = "DeleteOne" and n = 1 + or + // func (coll *Collection) Distinct(ctx context.Context, fieldName string, filter interface{}, + // ...) ([]interface{}, error) + name = "Distinct" and n = 2 + or + // func (coll *Collection) Find(ctx context.Context, filter interface{}, + // opts ...*options.FindOptions) (*Cursor, error) + name = "Find" and n = 1 + or + // func (coll *Collection) FindOne(ctx context.Context, filter interface{}, + // opts ...*options.FindOneOptions) *SingleResult + name = "FindOne" and n = 1 + or + // func (coll *Collection) FindOneAndDelete(ctx context.Context, filter interface{}, ...) + // *SingleResult + name = "FindOneAndDelete" and n = 1 + or + // func (coll *Collection) FindOneAndReplace(ctx context.Context, filter interface{}, + // replacement interface{}, ...) *SingleResult + name = "FindOneAndReplace" and n = 1 + or + // func (coll *Collection) FindOneAndUpdate(ctx context.Context, filter interface{}, + // update interface{}, ...) *SingleResult + name = "FindOneAndUpdate" and n = 1 + or + // func (coll *Collection) ReplaceOne(ctx context.Context, filter interface{}, + // replacement interface{}, ...) (*UpdateResult, error) + name = "ReplaceOne" and n = 1 + or + // func (coll *Collection) UpdateMany(ctx context.Context, filter interface{}, + // update interface{}, ...) (*UpdateResult, error) + name = "UpdateMany" and n = 1 + or + // func (coll *Collection) UpdateOne(ctx context.Context, filter interface{}, + // update interface{}, ...) (*UpdateResult, error) + name = "UpdateOne" and n = 1 + or + // func (coll *Collection) Watch(ctx context.Context, pipeline interface{}, ...) + // (*ChangeStream, error) + name = "Watch" and n = 1 + or + // func (coll *Collection) Aggregate(ctx context.Context, pipeline interface{}, + // opts ...*options.AggregateOptions) (*Cursor, error) + name = "Aggregate" and n = 1 + } + + /** + * A query used in an API function acting on a `Collection` struct of package + * [go.mongodb.org/mongo-driver/mongo](https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo). + */ + private class MongoDbCollectionQuery extends Range { + MongoDbCollectionQuery() { + exists(Method meth, string methodName, int n | + mongoDbCollectionMethod(methodName, n) and + meth.hasQualifiedName(package("go.mongodb.org/mongo-driver", "mongo"), "Collection", + methodName) and + this = meth.getACall().getArgument(n) + ) + } + } } /** diff --git a/go/ql/lib/semmle/go/frameworks/SQL.qll b/go/ql/lib/semmle/go/frameworks/SQL.qll index b97df15a37d..1a6e2280781 100644 --- a/go/ql/lib/semmle/go/frameworks/SQL.qll +++ b/go/ql/lib/semmle/go/frameworks/SQL.qll @@ -67,10 +67,42 @@ module SQL { */ abstract class Range extends DataFlow::Node { } - private class DefaultQueryString extends Range { - DefaultQueryString() { - exists(DataFlow::ArgumentNode arg | sinkNode(arg, "sql-injection") | - this = arg.getACorrespondingSyntacticArgument() + /** + * An argument to an API of the squirrel library that is directly interpreted as SQL without + * taking syntactic structure into account. + */ + private class SquirrelQueryString extends Range { + SquirrelQueryString() { + exists(Function fn | + exists(string sq | + sq = + package([ + "github.com/Masterminds/squirrel", "gopkg.in/Masterminds/squirrel", + "github.com/lann/squirrel" + ], "") + | + fn.hasQualifiedName(sq, ["Delete", "Expr", "Insert", "Select", "Update"]) + or + exists(Method m, string builder | m = fn | + builder = ["DeleteBuilder", "InsertBuilder", "SelectBuilder", "UpdateBuilder"] and + m.hasQualifiedName(sq, builder, + ["Columns", "From", "Options", "OrderBy", "Prefix", "Suffix", "Where"]) + or + builder = "InsertBuilder" and + m.hasQualifiedName(sq, builder, ["Replace", "Into"]) + or + builder = "SelectBuilder" and + m.hasQualifiedName(sq, builder, + ["CrossJoin", "GroupBy", "InnerJoin", "LeftJoin", "RightJoin"]) + or + builder = "UpdateBuilder" and + m.hasQualifiedName(sq, builder, ["Set", "Table"]) + ) + ) and + this = fn.getACall().getArgument(0) + | + this.getType().getUnderlyingType() instanceof StringType or + this.getType().getUnderlyingType().(SliceType).getElementType() instanceof StringType ) } } @@ -81,6 +113,14 @@ module SQL { /** A string that might identify package `go-pg/pg/orm` or a specific version of it. */ private string gopgorm() { result = package("github.com/go-pg/pg", "orm") } + /** A string that might identify package `github.com/rqlite/gorqlite` or `github.com/raindog308/gorqlite` or a specific version of it. */ + private string gorqlite() { + result = package(["github.com/rqlite/gorqlite", "github.com/raindog308/gorqlite"], "") + } + + /** A string that might identify package `github.com/gogf/gf/database/gdb` or a specific version of it. */ + private string gogf() { result = package("github.com/gogf/gf", "database/gdb") } + /** * A string argument to an API of `go-pg/pg` that is directly interpreted as SQL without * taking syntactic structure into account. @@ -145,6 +185,94 @@ module SQL { ) } } + + /** + * A string argument to an API of `github.com/rqlite/gorqlite`, or a specific version of it, that is directly interpreted as SQL without + * taking syntactic structure into account. + */ + private class GorqliteQueryString extends Range { + GorqliteQueryString() { + // func (conn *Connection) Query(sqlStatements []string) (results []QueryResult, err error) + // func (conn *Connection) QueryOne(sqlStatement string) (qr QueryResult, err error) + // func (conn *Connection) Queue(sqlStatements []string) (seq int64, err error) + // func (conn *Connection) QueueOne(sqlStatement string) (seq int64, err error) + // func (conn *Connection) Write(sqlStatements []string) (results []WriteResult, err error) + // func (conn *Connection) WriteOne(sqlStatement string) (wr WriteResult, err error) + exists(Method m, string name | m.hasQualifiedName(gorqlite(), "Connection", name) | + name = ["Query", "QueryOne", "Queue", "QueueOne", "Write", "WriteOne"] and + this = m.getACall().getArgument(0) + ) + } + } + + /** + * A string argument to an API of `github.com/gogf/gf/database/gdb`, or a specific version of it, that is directly interpreted as SQL without + * taking syntactic structure into account. + */ + private class GogfQueryString extends Range { + GogfQueryString() { + exists(Method m, string name | m.implements(gogf(), ["DB", "Core", "TX"], name) | + // func (c *Core) Exec(sql string, args ...interface{}) (result sql.Result, err error) + // func (c *Core) GetAll(sql string, args ...interface{}) (Result, error) + // func (c *Core) GetArray(sql string, args ...interface{}) ([]Value, error) + // func (c *Core) GetCount(sql string, args ...interface{}) (int, error) + // func (c *Core) GetOne(sql string, args ...interface{}) (Record, error) + // func (c *Core) GetValue(sql string, args ...interface{}) (Value, error) + // func (c *Core) Prepare(sql string, execOnMaster ...bool) (*Stmt, error) + // func (c *Core) Query(sql string, args ...interface{}) (rows *sql.Rows, err error) + // func (c *Core) Raw(rawSql string, args ...interface{}) *Model + name = + [ + "Query", "Exec", "Prepare", "GetAll", "GetOne", "GetValue", "GetArray", "GetCount", + "Raw" + ] and + this = m.getACall().getArgument(0) + or + // func (c *Core) GetScan(pointer interface{}, sql string, args ...interface{}) error + // func (c *Core) GetStruct(pointer interface{}, sql string, args ...interface{}) error + // func (c *Core) GetStructs(pointer interface{}, sql string, args ...interface{}) error + name = ["GetScan", "GetStruct", "GetStructs"] and + this = m.getACall().getArgument(1) + or + // func (c *Core) DoCommit(ctx context.Context, link Link, sql string, args []interface{}) (newSql string, newArgs []interface{}, err error) + // func (c *Core) DoExec(ctx context.Context, link Link, sql string, args ...interface{}) (result sql.Result, err error) + // func (c *Core) DoGetAll(ctx context.Context, link Link, sql string, args ...interface{}) (result Result, err error) + // func (c *Core) DoPrepare(ctx context.Context, link Link, sql string) (*Stmt, error) + // func (c *Core) DoQuery(ctx context.Context, link Link, sql string, args ...interface{}) (rows *sql.Rows, err error) + name = ["DoGetAll", "DoQuery", "DoExec", "DoCommit", "DoPrepare"] and + this = m.getACall().getArgument(2) + ) + } + } + } + + /** A model for sinks of GORM. */ + private class GormSink extends SQL::QueryString::Range { + GormSink() { + exists(Method meth, string package, string name | + meth.hasQualifiedName(package, "DB", name) and + this = meth.getACall().getSyntacticArgument(0) and + package = Gorm::packagePath() and + name in [ + "Where", "Raw", "Order", "Not", "Or", "Select", "Table", "Group", "Having", "Joins", + "Exec", "Distinct", "Pluck" + ] + ) + } + } + + /** A model for sinks of github.com/jmoiron/sqlx. */ + private class SqlxSink extends SQL::QueryString::Range { + SqlxSink() { + exists(Method meth, string name, int n | + meth.hasQualifiedName(package("github.com/jmoiron/sqlx", ""), ["DB", "Tx"], name) and + this = meth.getACall().getArgument(n) + | + name = ["Select", "Get"] and n = 1 + or + name = ["MustExec", "Queryx", "NamedExec", "NamedQuery"] and n = 0 + ) + } } } @@ -164,11 +292,70 @@ module Gorm { module Xorm { /** Gets the package name for Xorm. */ string packagePath() { result = package(["xorm.io/xorm", "github.com/go-xorm/xorm"], "") } + + /** A model for sinks of XORM. */ + private class XormSink extends SQL::QueryString::Range { + XormSink() { + exists(Method meth, string type, string name, int n | + meth.hasQualifiedName(Xorm::packagePath(), type, name) and + this = meth.getACall().getSyntacticArgument(n) and + type = ["Engine", "Session"] + | + name = + [ + "Query", "Exec", "QueryString", "QueryInterface", "SQL", "Where", "And", "Or", "Alias", + "NotIn", "In", "Select", "SetExpr", "OrderBy", "Having", "GroupBy" + ] and + n = 0 + or + name = ["SumInt", "Sum", "Sums", "SumsInt"] and n = 1 + or + name = "Join" and n = [0, 1, 2] + ) + } + } } /** - * DEPRECATED - * * Provides classes for working with the [Bun](https://bun.uptrace.dev/) package. */ -deprecated module Bun { } +module Bun { + /** Gets the package name for Bun package. */ + private string packagePath() { result = package("github.com/uptrace/bun", "") } + + /** A model for sinks of Bun. */ + private class BunSink extends SQL::QueryString::Range { + BunSink() { + exists(Function f, string m, int arg | this = f.getACall().getArgument(arg) | + f.hasQualifiedName(packagePath(), m) and + m = "NewRawQuery" and + arg = 1 + ) + or + exists(Method f, string tp, string m, int arg | this = f.getACall().getArgument(arg) | + f.hasQualifiedName(packagePath(), tp, m) and + ( + tp = ["DB", "Conn"] and + m = ["ExecContext", "PrepareContext", "QueryContext", "QueryRowContext"] and + arg = 1 + or + tp = ["DB", "Conn"] and + m = ["Exec", "NewRaw", "Prepare", "Query", "QueryRow", "Raw"] and + arg = 0 + or + tp.matches("%Query") and + m = + [ + "ColumnExpr", "DistinctOn", "For", "GroupExpr", "Having", "ModelTableExpr", + "OrderExpr", "TableExpr", "Where", "WhereOr" + ] and + arg = 0 + or + tp = "RawQuery" and + m = "NewRaw" and + arg = 0 + ) + ) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Spew.qll b/go/ql/lib/semmle/go/frameworks/Spew.qll index f49a4aa4d89..b12bd0fed81 100644 --- a/go/ql/lib/semmle/go/frameworks/Spew.qll +++ b/go/ql/lib/semmle/go/frameworks/Spew.qll @@ -33,6 +33,16 @@ module Spew { override int getFormatStringIndex() { result = super.getFirstPrintedArg() } } + private class SpewCall extends LoggerCall::Range, DataFlow::CallNode { + SpewFunction target; + + SpewCall() { this = target.getACall() } + + override DataFlow::Node getAMessageComponent() { + result = this.getSyntacticArgument(any(int i | i >= target.getFirstPrintedArg())) + } + } + // These are expressed using TaintTracking::FunctionModel because varargs functions don't work with Models-as-Data sumamries yet. /** The `Sprint` function or one of its variants. */ class Sprinter extends TaintTracking::FunctionModel { diff --git a/go/ql/lib/semmle/go/frameworks/Zap.qll b/go/ql/lib/semmle/go/frameworks/Zap.qll index 0928d2b0595..359f9aba410 100644 --- a/go/ql/lib/semmle/go/frameworks/Zap.qll +++ b/go/ql/lib/semmle/go/frameworks/Zap.qll @@ -34,6 +34,18 @@ module Zap { override int getFormatStringIndex() { result = 0 } } + /** + * A call to a logger function in Zap. + * + * Functions which add data to be included the next time a direct logging + * function is called are included. + */ + private class ZapCall extends LoggerCall::Range, DataFlow::MethodCallNode { + ZapCall() { this = any(ZapFunction f).getACall() } + + override DataFlow::Node getAMessageComponent() { result = this.getASyntacticArgument() } + } + // These are expressed using TaintTracking::FunctionModel because varargs functions don't work with Models-as-Data sumamries yet. /** The function `Fields` that creates an `Option` that can be added to the logger out of `Field`s. */ class FieldsFunction extends TaintTracking::FunctionModel { diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/DatabaseSql.qll b/go/ql/lib/semmle/go/frameworks/stdlib/DatabaseSql.qll index f4132688796..845225af5bd 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/DatabaseSql.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/DatabaseSql.qll @@ -26,7 +26,7 @@ module DatabaseSql { override DataFlow::Node getAResult() { result = this.getResult(0) } override SQL::QueryString getAQueryString() { - result = this.getASyntacticArgument() + result = this.getAnArgument() or // attempt to resolve a `QueryString` for `Stmt`s using local data flow. t = "Stmt" and @@ -34,6 +34,24 @@ module DatabaseSql { } } + /** A query string used in an API function of the `database/sql` package. */ + private class QueryString extends SQL::QueryString::Range { + QueryString() { + exists(Method meth, string base, string t, string m, int n | + t = ["DB", "Tx", "Conn"] and + meth.hasQualifiedName("database/sql", t, m) and + this = meth.getACall().getArgument(n) + | + base = ["Exec", "Prepare", "Query", "QueryRow"] and + ( + m = base and n = 0 + or + m = base + "Context" and n = 1 + ) + ) + } + } + /** A query in the standard `database/sql/driver` package. */ private class DriverQuery extends SQL::Query::Range, DataFlow::MethodCallNode { DriverQuery() { @@ -60,13 +78,36 @@ module DatabaseSql { override DataFlow::Node getAResult() { result = this.getResult(0) } override SQL::QueryString getAQueryString() { - result = this.getASyntacticArgument() + result = this.getAnArgument() or this.getTarget().hasQualifiedName("database/sql/driver", "Stmt") and result = this.getReceiver().getAPredecessor*().(DataFlow::MethodCallNode).getAnArgument() } } + /** A query string used in an API function of the standard `database/sql/driver` package. */ + private class DriverQueryString extends SQL::QueryString::Range { + DriverQueryString() { + exists(Method meth, int n | + ( + meth.hasQualifiedName("database/sql/driver", "Execer", "Exec") and n = 0 + or + meth.hasQualifiedName("database/sql/driver", "ExecerContext", "ExecContext") and n = 1 + or + meth.hasQualifiedName("database/sql/driver", "Conn", "Prepare") and n = 0 + or + meth.hasQualifiedName("database/sql/driver", "ConnPrepareContext", "PrepareContext") and + n = 1 + or + meth.hasQualifiedName("database/sql/driver", "Queryer", "Query") and n = 0 + or + meth.hasQualifiedName("database/sql/driver", "QueryerContext", "QueryContext") and n = 1 + ) and + this = meth.getACall().getArgument(n) + ) + } + } + // These are expressed using TaintTracking::FunctionModel because varargs functions don't work with Models-as-Data sumamries yet. private class SqlMethodModels extends TaintTracking::FunctionModel, Method { FunctionInput inp; diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/Fmt.qll b/go/ql/lib/semmle/go/frameworks/stdlib/Fmt.qll index 8c4a5f27b3c..950b67483f0 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/Fmt.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/Fmt.qll @@ -41,6 +41,13 @@ module Fmt { Printer() { this.hasQualifiedName("fmt", ["Print", "Printf", "Println"]) } } + /** A call to `Print` or similar. */ + private class PrintCall extends LoggerCall::Range, DataFlow::CallNode { + PrintCall() { this.getTarget() instanceof Printer } + + override DataFlow::Node getAMessageComponent() { result = this.getASyntacticArgument() } + } + /** The `Fprint` function or one of its variants. */ private class Fprinter extends TaintTracking::FunctionModel { Fprinter() { diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/Log.qll b/go/ql/lib/semmle/go/frameworks/stdlib/Log.qll index ca74160bf0d..5b402fca1b7 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/Log.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/Log.qll @@ -32,6 +32,16 @@ module Log { override int getFormatStringIndex() { result = 0 } } + private class LogCall extends LoggerCall::Range, DataFlow::CallNode { + LogFunction target; + + LogCall() { this = target.getACall() } + + override DataFlow::Node getAMessageComponent() { + result = this.getSyntacticArgument(any(int i | i >= target.getFirstPrintedArg())) + } + } + /** A fatal log function, which calls `os.Exit`. */ private class FatalLogFunction extends Function { FatalLogFunction() { this.hasQualifiedName("log", ["Fatal", "Fatalf", "Fatalln"]) } diff --git a/go/ql/lib/semmle/go/security/AllocationSizeOverflow.qll b/go/ql/lib/semmle/go/security/AllocationSizeOverflow.qll index 8d01d8b8163..9531e279812 100644 --- a/go/ql/lib/semmle/go/security/AllocationSizeOverflow.qll +++ b/go/ql/lib/semmle/go/security/AllocationSizeOverflow.qll @@ -13,21 +13,6 @@ import go module AllocationSizeOverflow { import AllocationSizeOverflowCustomizations::AllocationSizeOverflow - /** - * DEPRECATED: Use copies of `FindLargeLensConfig` and `FindLargeLensFlow` instead. - * - * A taint-tracking configuration for identifying `len(...)` calls whose argument may be large. - */ - deprecated class FindLargeLensConfiguration extends TaintTracking2::Configuration { - FindLargeLensConfiguration() { this = "AllocationSizeOverflow::FindLargeLens" } - - override predicate isSource(DataFlow::Node nd) { nd instanceof Source } - - override predicate isSink(DataFlow::Node nd) { nd = Builtin::len().getACall().getArgument(0) } - - override predicate isSanitizer(DataFlow::Node nd) { nd instanceof Sanitizer } - } - private module FindLargeLensConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node nd) { nd instanceof Source } @@ -47,39 +32,6 @@ module AllocationSizeOverflow { ) } - /** - * DEPRECATED: Use `Flow` instead. - * - * A taint-tracking configuration for identifying allocation-size overflows. - */ - deprecated class Configuration extends TaintTracking::Configuration { - Configuration() { this = "AllocationSizeOverflow" } - - override predicate isSource(DataFlow::Node nd) { nd instanceof Source } - - /** - * Holds if `nd` is at a position where overflow might occur, and its result is used to compute - * allocation size `allocsz`. - */ - predicate isSinkWithAllocationSize(DataFlow::Node nd, DataFlow::Node allocsz) { - nd.(Sink).getAllocationSize() = allocsz - } - - override predicate isSink(DataFlow::Node nd) { this.isSinkWithAllocationSize(nd, _) } - - override predicate isAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) { - additionalStep(pred, succ) - or - exists(DataFlow::CallNode c | - c = getALargeLenCall() and - pred = c.getArgument(0) and - succ = c - ) - } - - override predicate isSanitizer(DataFlow::Node nd) { nd instanceof Sanitizer } - } - /** * Holds if `nd` is at a position where overflow might occur, and its result is used to compute * allocation size `allocsz`. diff --git a/go/ql/lib/semmle/go/security/CommandInjection.qll b/go/ql/lib/semmle/go/security/CommandInjection.qll index bde5a443503..7dc6f3991fc 100644 --- a/go/ql/lib/semmle/go/security/CommandInjection.qll +++ b/go/ql/lib/semmle/go/security/CommandInjection.qll @@ -16,27 +16,6 @@ import go module CommandInjection { import CommandInjectionCustomizations::CommandInjection - /** - * DEPRECATED: Use `Flow` instead. - * - * A taint-tracking configuration for reasoning about command-injection vulnerabilities - * with sinks which are not sanitized by `--`. - */ - deprecated class Configuration extends TaintTracking::Configuration { - Configuration() { this = "CommandInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { - exists(Sink s | sink = s | not s.doubleDashIsSanitizing()) - } - - override predicate isSanitizer(DataFlow::Node node) { - super.isSanitizer(node) or - node instanceof Sanitizer - } - } - private module Config implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof Source } @@ -92,28 +71,6 @@ module CommandInjection { } } - /** - * DEPRECATED: Use `DoubleDashSanitizingFlow` instead. - * - * A taint-tracking configuration for reasoning about command-injection vulnerabilities - * with sinks which are sanitized by `--`. - */ - deprecated class DoubleDashSanitizingConfiguration extends TaintTracking::Configuration { - DoubleDashSanitizingConfiguration() { this = "CommandInjectionWithDoubleDashSanitizer" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { - exists(Sink s | sink = s | s.doubleDashIsSanitizing()) - } - - override predicate isSanitizer(DataFlow::Node node) { - super.isSanitizer(node) or - node instanceof Sanitizer or - node = any(ArgumentArrayWithDoubleDash array).getASanitizedElement() - } - } - private module DoubleDashSanitizingConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof Source } diff --git a/go/ql/lib/semmle/go/security/ExternalAPIs.qll b/go/ql/lib/semmle/go/security/ExternalAPIs.qll index 76d396f2b64..5eb41dd2579 100644 --- a/go/ql/lib/semmle/go/security/ExternalAPIs.qll +++ b/go/ql/lib/semmle/go/security/ExternalAPIs.qll @@ -182,19 +182,6 @@ class UnknownExternalApiDataNode extends ExternalApiDataNode { } } -/** - * DEPRECATED: Use `UntrustedDataToExternalApiFlow` instead. - * - * A configuration for tracking flow from `ThreatModelFlowSource`s to `ExternalApiDataNode`s. - */ -deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { - UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } -} - private module UntrustedDataConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } @@ -206,19 +193,6 @@ private module UntrustedDataConfig implements DataFlow::ConfigSig { */ module UntrustedDataToExternalApiFlow = DataFlow::Global; -/** - * DEPRECATED: Use `UntrustedDataToUnknownExternalApiFlow` instead. - * - * A configuration for tracking flow from `ThreatModelFlowSource`s to `UnknownExternalApiDataNode`s. - */ -deprecated class UntrustedDataToUnknownExternalApiConfig extends TaintTracking::Configuration { - UntrustedDataToUnknownExternalApiConfig() { this = "UntrustedDataToUnknownExternalAPIConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof UnknownExternalApiDataNode } -} - private module UntrustedDataToUnknownExternalApiConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } diff --git a/go/ql/lib/semmle/go/security/LogInjection.qll b/go/ql/lib/semmle/go/security/LogInjection.qll index cb454716a8f..d8bc586ed91 100644 --- a/go/ql/lib/semmle/go/security/LogInjection.qll +++ b/go/ql/lib/semmle/go/security/LogInjection.qll @@ -14,21 +14,6 @@ import go module LogInjection { import LogInjectionCustomizations::LogInjection - /** - * DEPRECATED: Use `Flow` instead. - * - * A taint-tracking configuration for reasoning about log injection vulnerabilities. - */ - deprecated class Configuration extends TaintTracking::Configuration { - Configuration() { this = "LogInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node sanitizer) { sanitizer instanceof Sanitizer } - } - /** Config for reasoning about log injection vulnerabilities. */ module Config implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof Source } diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 36470f89eba..cf6d235f496 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.8 + +No user-facing changes. + +## 1.0.7 + +No user-facing changes. + +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.0.6.md b/go/ql/src/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/go/ql/src/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.0.7.md b/go/ql/src/change-notes/released/1.0.7.md new file mode 100644 index 00000000000..b3a381f0315 --- /dev/null +++ b/go/ql/src/change-notes/released/1.0.7.md @@ -0,0 +1,3 @@ +## 1.0.7 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.0.8.md b/go/ql/src/change-notes/released/1.0.8.md new file mode 100644 index 00000000000..b3efd4f66ef --- /dev/null +++ b/go/ql/src/change-notes/released/1.0.8.md @@ -0,0 +1,3 @@ +## 1.0.8 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 42da17b3841..5c55fbd52ed 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.8 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4df9de83c21..cd5903f6d7f 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.0.6-dev +version: 1.0.9-dev groups: - go - queries diff --git a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected index ee50d6a6e07..467f08e74e6 100644 --- a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected +++ b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected @@ -3,8 +3,6 @@ edges | CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | | CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:21:15:21 | c | provenance | | | CookieWithoutHttpOnly.go:12:10:12:18 | "session" | CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | | CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:21:15:21 | c | provenance | | | CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | | CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | @@ -18,10 +16,6 @@ edges | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | | CookieWithoutHttpOnly.go:20:13:20:21 | "session" | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:22:13:22:17 | false | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | | CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | | CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | | CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | @@ -40,10 +34,6 @@ edges | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | | CookieWithoutHttpOnly.go:29:13:29:21 | "session" | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:31:13:31:16 | true | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | | CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | | CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | | CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | @@ -62,10 +52,6 @@ edges | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | | CookieWithoutHttpOnly.go:38:10:38:18 | "session" | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:41:15:41:18 | true | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | | CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | | CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | | CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | @@ -84,10 +70,6 @@ edges | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | | CookieWithoutHttpOnly.go:47:10:47:18 | "session" | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:50:15:50:19 | false | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | | CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | | CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | | CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | @@ -108,10 +90,6 @@ edges | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | | CookieWithoutHttpOnly.go:57:13:57:21 | "session" | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:59:13:59:15 | val | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | | CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | | CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | | CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | @@ -132,10 +110,6 @@ edges | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | | CookieWithoutHttpOnly.go:67:13:67:21 | "session" | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:69:13:69:15 | val | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | | CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | | CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | | CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | @@ -156,10 +130,6 @@ edges | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | | CookieWithoutHttpOnly.go:77:10:77:18 | "session" | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:80:15:80:17 | val | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | | CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | | CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | | CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | @@ -180,10 +150,6 @@ edges | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | | CookieWithoutHttpOnly.go:87:10:87:18 | "session" | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:90:15:90:17 | val | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | | CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | | CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | | CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | @@ -198,8 +164,6 @@ edges | CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | | CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:21:100:21 | c | provenance | | | CookieWithoutHttpOnly.go:99:15:99:19 | false | CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | | CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:21:100:21 | c | provenance | | | CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | | CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | @@ -214,10 +178,6 @@ edges | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | | CookieWithoutHttpOnly.go:106:10:106:13 | name | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:109:15:109:19 | false | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | | CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | | CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | | CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | @@ -237,10 +197,6 @@ edges | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | | CookieWithoutHttpOnly.go:116:10:116:16 | session | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | provenance | Config | | CookieWithoutHttpOnly.go:119:15:119:19 | false | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | | CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | | CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | | CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | @@ -292,8 +248,6 @@ edges | CookieWithoutHttpOnly.go:134:16:134:20 | store | CookieWithoutHttpOnly.go:202:2:202:6 | store | provenance | | | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | provenance | | | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | provenance | | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | provenance | | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | provenance | | | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | | | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | | | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | @@ -316,7 +270,6 @@ edges | CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | provenance | Config | | CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | Config | | CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | Config | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:20:140:2 | &... | provenance | | | CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | provenance | | | CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | CookieWithoutHttpOnly.go:137:20:140:2 | &... | provenance | | | CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | CookieWithoutHttpOnly.go:137:20:140:2 | &... | provenance | | @@ -336,7 +289,6 @@ edges | CookieWithoutHttpOnly.go:146:16:146:20 | store | CookieWithoutHttpOnly.go:195:16:195:20 | store | provenance | | | CookieWithoutHttpOnly.go:146:16:146:20 | store | CookieWithoutHttpOnly.go:202:2:202:6 | store | provenance | | | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | provenance | | -| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | provenance | | | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:149:2:149:8 | session | provenance | | | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | | CookieWithoutHttpOnly.go:147:2:147:8 | session [pointer] | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | provenance | | @@ -348,7 +300,6 @@ edges | CookieWithoutHttpOnly.go:149:2:149:8 | session [pointer] | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | provenance | | | CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | provenance | Config | | CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | session | provenance | Config | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:20:151:2 | &... | provenance | | | CookieWithoutHttpOnly.go:149:21:151:2 | struct literal | CookieWithoutHttpOnly.go:149:20:151:2 | &... | provenance | | | CookieWithoutHttpOnly.go:157:2:157:9 | definition of httpOnly | CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | provenance | | | CookieWithoutHttpOnly.go:157:14:157:17 | true | CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | provenance | | @@ -371,8 +322,6 @@ edges | CookieWithoutHttpOnly.go:158:16:158:20 | store | CookieWithoutHttpOnly.go:202:2:202:6 | store | provenance | | | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | provenance | | | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | provenance | | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | provenance | | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | provenance | | | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | | | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | | | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | @@ -395,7 +344,6 @@ edges | CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | provenance | Config | | CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | Config | | CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | Config | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:20:164:2 | &... | provenance | | | CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | provenance | | | CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | CookieWithoutHttpOnly.go:161:20:164:2 | &... | provenance | | | CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | CookieWithoutHttpOnly.go:161:20:164:2 | &... | provenance | | @@ -421,8 +369,6 @@ edges | CookieWithoutHttpOnly.go:170:16:170:20 | store | CookieWithoutHttpOnly.go:202:2:202:6 | store | provenance | | | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | provenance | | | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | provenance | | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | provenance | | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | provenance | | | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | | | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | | | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | @@ -445,7 +391,6 @@ edges | CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | provenance | Config | | CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | Config | | CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | Config | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:20:176:2 | &... | provenance | | | CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | provenance | | | CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | CookieWithoutHttpOnly.go:173:20:176:2 | &... | provenance | | | CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | CookieWithoutHttpOnly.go:173:20:176:2 | &... | provenance | | diff --git a/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected b/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected index a9d713d9392..7b433794a6c 100644 --- a/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected +++ b/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected @@ -11,7 +11,6 @@ edges | Dsn.go:62:2:62:4 | definition of cfg [pointer] | Dsn.go:67:102:67:104 | cfg [pointer] | provenance | | | Dsn.go:63:9:63:11 | cfg [pointer] | Dsn.go:63:9:63:11 | implicit dereference | provenance | | | Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:62:2:62:4 | definition of cfg [pointer] | provenance | | -| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:63:9:63:11 | implicit dereference | provenance | | | Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:67:102:67:108 | selection of dsn | provenance | | | Dsn.go:63:19:63:25 | selection of Args | Dsn.go:63:19:63:29 | slice expression | provenance | | | Dsn.go:63:19:63:29 | slice expression | Dsn.go:63:9:63:11 | implicit dereference | provenance | FunctionModel | diff --git a/go/ql/test/extractor-tests/diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected b/go/ql/test/extractor-tests/diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected index aa526b3e750..abe30bd0088 100644 --- a/go/ql/test/extractor-tests/diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected +++ b/go/ql/test/extractor-tests/diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected @@ -1,4 +1,4 @@ -| -:0:0:0:0 | package ; expected main | +| -:0:0:0:0 | package ; expected package main | | broken2/test1.go:4:2:4:2 | undefined: fmt | | broken2/test1.go:5:2:5:2 | undefined: fmt | | broken2/test1.go:5:14:5:14 | undefined: a | diff --git a/go/ql/test/library-tests/semmle/go/Files/CONSISTENCY/UnexpectedFrontendErrors.expected b/go/ql/test/library-tests/semmle/go/Files/CONSISTENCY/UnexpectedFrontendErrors.expected index 6a47139fb8d..e63bda23e94 100644 --- a/go/ql/test/library-tests/semmle/go/Files/CONSISTENCY/UnexpectedFrontendErrors.expected +++ b/go/ql/test/library-tests/semmle/go/Files/CONSISTENCY/UnexpectedFrontendErrors.expected @@ -1,4 +1,4 @@ -| -:0:0:0:0 | package ; expected nonexistent | +| -:0:0:0:0 | package ; expected package nonexistent | | vendor/github.com/github/nonexistent/bad.go:1:57:1:57 | expected ';', found 'EOF' | | vendor/github.com/github/nonexistent/bad.go:1:57:1:57 | expected 'IDENT', found 'EOF' | | vendor/github.com/github/nonexistent/bad.go:1:57:1:57 | expected 'package', found 'EOF' | diff --git a/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected b/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected index bb614a4b41c..c1d09ddb080 100644 --- a/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected +++ b/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected @@ -1,30 +1,217 @@ -| E | Ordered | -| E | comparable | -| E | interface { } | -| E1 | interface { } | -| E2 | interface { } | -| Edge | EdgeConstraint | -| Edge | interface { } | -| F | floaty | -| K | comparable | -| Node | NodeConstraint | -| Node | interface { } | -| S | interface { } | -| S | interface { ~[]E } | -| S1 | interface { ~[]E1 } | -| S2 | interface { ~[]E2 } | -| SF2 | interface { } | -| SG2 | interface { } | -| T | Ordered | -| T | comparable | -| T | interface { string \| []uint8 } | -| T | interface { } | -| T1 | interface { } | -| T2 | interface { } | -| TF1 | interface { } | -| TF2 | interface { } | -| TG1 | interface { } | -| TG2 | interface { } | -| U | interface { } | -| V | interface { int64 \| float64 } | -| bytes | interface { []uint8 \| string } | +numberOfTypeParameters +| genericFunctions2.go:3:6:3:33 | GenericFunctionInAnotherFile | 1 | +| genericFunctions.go:9:6:9:32 | GenericFunctionOneTypeParam | 1 | +| genericFunctions.go:15:6:15:33 | GenericFunctionTwoTypeParams | 2 | +| genericFunctions.go:81:6:81:19 | GenericStruct1 | 1 | +| genericFunctions.go:84:6:84:19 | GenericStruct2 | 2 | +| genericFunctions.go:87:30:87:31 | f1 | 1 | +| genericFunctions.go:92:31:92:32 | g1 | 1 | +| genericFunctions.go:95:35:95:36 | f2 | 2 | +| genericFunctions.go:98:36:98:37 | g2 | 2 | +| genericFunctions.go:111:6:111:12 | Element | 1 | +| genericFunctions.go:115:6:115:9 | List | 1 | +| genericFunctions.go:120:19:120:23 | MyLen | 1 | +| genericFunctions.go:124:6:124:19 | NodeConstraint | 1 | +| genericFunctions.go:128:6:128:19 | EdgeConstraint | 1 | +| genericFunctions.go:132:6:132:10 | Graph | 2 | +| genericFunctions.go:134:6:134:8 | New | 2 | +| genericFunctions.go:138:29:138:40 | ShortestPath | 2 | +| genericFunctions.go:150:6:150:36 | multipleAnonymousTypeParamsFunc | 3 | +| genericFunctions.go:152:6:152:36 | multipleAnonymousTypeParamsType | 3 | +| genericFunctions.go:154:51:154:51 | f | 3 | +#select +| cmp.Compare | 0 | T | Ordered | +| cmp.Less | 0 | T | Ordered | +| cmp.Or | 0 | T | comparable | +| cmp.isNaN | 0 | T | Ordered | +| codeql-go-tests/function.EdgeConstraint | 0 | Node | interface { } | +| codeql-go-tests/function.Element | 0 | S | interface { } | +| codeql-go-tests/function.GenericFunctionInAnotherFile | 0 | T | interface { } | +| codeql-go-tests/function.GenericFunctionOneTypeParam | 0 | T | interface { } | +| codeql-go-tests/function.GenericFunctionTwoTypeParams | 0 | K | comparable | +| codeql-go-tests/function.GenericFunctionTwoTypeParams | 1 | V | interface { int64 \| float64 } | +| codeql-go-tests/function.GenericStruct1 | 0 | T | interface { } | +| codeql-go-tests/function.GenericStruct1.f1 | 0 | TF1 | interface { } | +| codeql-go-tests/function.GenericStruct1.g1 | 0 | TG1 | interface { } | +| codeql-go-tests/function.GenericStruct2 | 0 | S | interface { } | +| codeql-go-tests/function.GenericStruct2 | 1 | T | interface { } | +| codeql-go-tests/function.GenericStruct2.f2 | 0 | SF2 | interface { } | +| codeql-go-tests/function.GenericStruct2.f2 | 1 | TF2 | interface { } | +| codeql-go-tests/function.GenericStruct2.g2 | 0 | SG2 | interface { } | +| codeql-go-tests/function.GenericStruct2.g2 | 1 | TG2 | interface { } | +| codeql-go-tests/function.Graph | 0 | Node | NodeConstraint | +| codeql-go-tests/function.Graph | 1 | Edge | EdgeConstraint | +| codeql-go-tests/function.Graph.ShortestPath | 0 | Node | NodeConstraint | +| codeql-go-tests/function.Graph.ShortestPath | 1 | Edge | EdgeConstraint | +| codeql-go-tests/function.List | 0 | T | interface { } | +| codeql-go-tests/function.List.MyLen | 0 | U | interface { } | +| codeql-go-tests/function.New | 0 | Node | NodeConstraint | +| codeql-go-tests/function.New | 1 | Edge | EdgeConstraint | +| codeql-go-tests/function.NodeConstraint | 0 | Edge | interface { } | +| codeql-go-tests/function.multipleAnonymousTypeParamsFunc | 0 | _ | interface { } | +| codeql-go-tests/function.multipleAnonymousTypeParamsFunc | 1 | _ | interface { string } | +| codeql-go-tests/function.multipleAnonymousTypeParamsFunc | 2 | _ | interface { } | +| codeql-go-tests/function.multipleAnonymousTypeParamsType | 0 | _ | interface { } | +| codeql-go-tests/function.multipleAnonymousTypeParamsType | 1 | _ | interface { string } | +| codeql-go-tests/function.multipleAnonymousTypeParamsType | 2 | _ | interface { } | +| codeql-go-tests/function.multipleAnonymousTypeParamsType.f | 0 | _ | interface { } | +| codeql-go-tests/function.multipleAnonymousTypeParamsType.f | 1 | _ | interface { string } | +| codeql-go-tests/function.multipleAnonymousTypeParamsType.f | 2 | _ | interface { } | +| github.com/anotherpkg.GenericFunctionInAnotherPackage | 0 | T | interface { } | +| internal/abi.Escape | 0 | T | interface { } | +| internal/bytealg.HashStr | 0 | T | interface { string \| []uint8 } | +| internal/bytealg.HashStrRev | 0 | T | interface { string \| []uint8 } | +| internal/bytealg.IndexRabinKarp | 0 | T | interface { string \| []uint8 } | +| internal/bytealg.LastIndexRabinKarp | 0 | T | interface { string \| []uint8 } | +| internal/runtime/atomic.Pointer.CompareAndSwap | 0 | T | interface { } | +| internal/runtime/atomic.Pointer.CompareAndSwapNoWB | 0 | T | interface { } | +| internal/runtime/atomic.Pointer.Load | 0 | T | interface { } | +| internal/runtime/atomic.Pointer.Store | 0 | T | interface { } | +| internal/runtime/atomic.Pointer.StoreNoWB | 0 | T | interface { } | +| iter.Pull | 0 | V | interface { } | +| iter.Pull2 | 0 | K | interface { } | +| iter.Pull2 | 1 | V | interface { } | +| iter.Seq | 0 | V | interface { } | +| iter.Seq2 | 0 | K | interface { } | +| iter.Seq2 | 1 | V | interface { } | +| reflect.rangeNum | 1 | N | interface { int64 \| uint64 } | +| runtime.fandbits | 0 | F | floaty | +| runtime.fmax | 0 | F | floaty | +| runtime.fmin | 0 | F | floaty | +| runtime.forbits | 0 | F | floaty | +| runtime.noEscapePtr | 0 | T | interface { } | +| slices.All | 0 | Slice | interface { ~[]E } | +| slices.All | 1 | E | interface { } | +| slices.AppendSeq | 0 | Slice | interface { ~[]E } | +| slices.AppendSeq | 1 | E | interface { } | +| slices.Backward | 0 | Slice | interface { ~[]E } | +| slices.Backward | 1 | E | interface { } | +| slices.BinarySearch | 0 | S | interface { ~[]E } | +| slices.BinarySearch | 1 | E | Ordered | +| slices.BinarySearchFunc | 0 | S | interface { ~[]E } | +| slices.BinarySearchFunc | 1 | E | interface { } | +| slices.BinarySearchFunc | 2 | T | interface { } | +| slices.Chunk | 0 | Slice | interface { ~[]E } | +| slices.Chunk | 1 | E | interface { } | +| slices.Clip | 0 | S | interface { ~[]E } | +| slices.Clip | 1 | E | interface { } | +| slices.Clone | 0 | S | interface { ~[]E } | +| slices.Clone | 1 | E | interface { } | +| slices.Collect | 0 | E | interface { } | +| slices.Compact | 0 | S | interface { ~[]E } | +| slices.Compact | 1 | E | comparable | +| slices.CompactFunc | 0 | S | interface { ~[]E } | +| slices.CompactFunc | 1 | E | interface { } | +| slices.Compare | 0 | S | interface { ~[]E } | +| slices.Compare | 1 | E | Ordered | +| slices.CompareFunc | 0 | S1 | interface { ~[]E1 } | +| slices.CompareFunc | 1 | S2 | interface { ~[]E2 } | +| slices.CompareFunc | 2 | E1 | interface { } | +| slices.CompareFunc | 3 | E2 | interface { } | +| slices.Concat | 0 | S | interface { ~[]E } | +| slices.Concat | 1 | E | interface { } | +| slices.Contains | 0 | S | interface { ~[]E } | +| slices.Contains | 1 | E | comparable | +| slices.ContainsFunc | 0 | S | interface { ~[]E } | +| slices.ContainsFunc | 1 | E | interface { } | +| slices.Delete | 0 | S | interface { ~[]E } | +| slices.Delete | 1 | E | interface { } | +| slices.DeleteFunc | 0 | S | interface { ~[]E } | +| slices.DeleteFunc | 1 | E | interface { } | +| slices.Equal | 0 | S | interface { ~[]E } | +| slices.Equal | 1 | E | comparable | +| slices.EqualFunc | 0 | S1 | interface { ~[]E1 } | +| slices.EqualFunc | 1 | S2 | interface { ~[]E2 } | +| slices.EqualFunc | 2 | E1 | interface { } | +| slices.EqualFunc | 3 | E2 | interface { } | +| slices.Grow | 0 | S | interface { ~[]E } | +| slices.Grow | 1 | E | interface { } | +| slices.Index | 0 | S | interface { ~[]E } | +| slices.Index | 1 | E | comparable | +| slices.IndexFunc | 0 | S | interface { ~[]E } | +| slices.IndexFunc | 1 | E | interface { } | +| slices.Insert | 0 | S | interface { ~[]E } | +| slices.Insert | 1 | E | interface { } | +| slices.IsSorted | 0 | S | interface { ~[]E } | +| slices.IsSorted | 1 | E | Ordered | +| slices.IsSortedFunc | 0 | S | interface { ~[]E } | +| slices.IsSortedFunc | 1 | E | interface { } | +| slices.Max | 0 | S | interface { ~[]E } | +| slices.Max | 1 | E | Ordered | +| slices.MaxFunc | 0 | S | interface { ~[]E } | +| slices.MaxFunc | 1 | E | interface { } | +| slices.Min | 0 | S | interface { ~[]E } | +| slices.Min | 1 | E | Ordered | +| slices.MinFunc | 0 | S | interface { ~[]E } | +| slices.MinFunc | 1 | E | interface { } | +| slices.Repeat | 0 | S | interface { ~[]E } | +| slices.Repeat | 1 | E | interface { } | +| slices.Replace | 0 | S | interface { ~[]E } | +| slices.Replace | 1 | E | interface { } | +| slices.Reverse | 0 | S | interface { ~[]E } | +| slices.Reverse | 1 | E | interface { } | +| slices.Sort | 0 | S | interface { ~[]E } | +| slices.Sort | 1 | E | Ordered | +| slices.SortFunc | 0 | S | interface { ~[]E } | +| slices.SortFunc | 1 | E | interface { } | +| slices.SortStableFunc | 0 | S | interface { ~[]E } | +| slices.SortStableFunc | 1 | E | interface { } | +| slices.Sorted | 0 | E | Ordered | +| slices.SortedFunc | 0 | E | interface { } | +| slices.SortedStableFunc | 0 | E | interface { } | +| slices.Values | 0 | Slice | interface { ~[]E } | +| slices.Values | 1 | E | interface { } | +| slices.breakPatternsCmpFunc | 0 | E | interface { } | +| slices.breakPatternsOrdered | 0 | E | Ordered | +| slices.choosePivotCmpFunc | 0 | E | interface { } | +| slices.choosePivotOrdered | 0 | E | Ordered | +| slices.heapSortCmpFunc | 0 | E | interface { } | +| slices.heapSortOrdered | 0 | E | Ordered | +| slices.insertionSortCmpFunc | 0 | E | interface { } | +| slices.insertionSortOrdered | 0 | E | Ordered | +| slices.isNaN | 0 | T | Ordered | +| slices.medianAdjacentCmpFunc | 0 | E | interface { } | +| slices.medianAdjacentOrdered | 0 | E | Ordered | +| slices.medianCmpFunc | 0 | E | interface { } | +| slices.medianOrdered | 0 | E | Ordered | +| slices.order2CmpFunc | 0 | E | interface { } | +| slices.order2Ordered | 0 | E | Ordered | +| slices.overlaps | 0 | E | interface { } | +| slices.partialInsertionSortCmpFunc | 0 | E | interface { } | +| slices.partialInsertionSortOrdered | 0 | E | Ordered | +| slices.partitionCmpFunc | 0 | E | interface { } | +| slices.partitionEqualCmpFunc | 0 | E | interface { } | +| slices.partitionEqualOrdered | 0 | E | Ordered | +| slices.partitionOrdered | 0 | E | Ordered | +| slices.pdqsortCmpFunc | 0 | E | interface { } | +| slices.pdqsortOrdered | 0 | E | Ordered | +| slices.reverseRangeCmpFunc | 0 | E | interface { } | +| slices.reverseRangeOrdered | 0 | E | Ordered | +| slices.rotateCmpFunc | 0 | E | interface { } | +| slices.rotateLeft | 0 | E | interface { } | +| slices.rotateOrdered | 0 | E | Ordered | +| slices.rotateRight | 0 | E | interface { } | +| slices.siftDownCmpFunc | 0 | E | interface { } | +| slices.siftDownOrdered | 0 | E | Ordered | +| slices.stableCmpFunc | 0 | E | interface { } | +| slices.stableOrdered | 0 | E | Ordered | +| slices.startIdx | 0 | E | interface { } | +| slices.swapRangeCmpFunc | 0 | E | interface { } | +| slices.swapRangeOrdered | 0 | E | Ordered | +| slices.symMergeCmpFunc | 0 | E | interface { } | +| slices.symMergeOrdered | 0 | E | Ordered | +| strconv.bsearch | 0 | S | interface { ~[]E } | +| strconv.bsearch | 1 | E | interface { ~uint16 \| ~uint32 } | +| sync.OnceValue | 0 | T | interface { } | +| sync.OnceValues | 0 | T1 | interface { } | +| sync.OnceValues | 1 | T2 | interface { } | +| sync/atomic.Pointer | 0 | T | interface { } | +| sync/atomic.Pointer.CompareAndSwap | 0 | T | interface { } | +| sync/atomic.Pointer.Load | 0 | T | interface { } | +| sync/atomic.Pointer.Store | 0 | T | interface { } | +| sync/atomic.Pointer.Swap | 0 | T | interface { } | +| time.atoi | 0 | bytes | interface { []uint8 \| string } | +| time.isDigit | 0 | bytes | interface { []uint8 \| string } | +| time.leadingInt | 0 | bytes | interface { []uint8 \| string } | +| time.parseNanoseconds | 0 | bytes | interface { []uint8 \| string } | +| time.parseRFC3339 | 0 | bytes | interface { []uint8 \| string } | diff --git a/go/ql/test/library-tests/semmle/go/Function/TypeParamType.ql b/go/ql/test/library-tests/semmle/go/Function/TypeParamType.ql index a4167f8d702..797405e7c89 100644 --- a/go/ql/test/library-tests/semmle/go/Function/TypeParamType.ql +++ b/go/ql/test/library-tests/semmle/go/Function/TypeParamType.ql @@ -1,4 +1,10 @@ import go -from TypeParamType tpt -select tpt.getParamName(), tpt.getConstraint().pp() +query predicate numberOfTypeParameters(TypeParamParentEntity parent, int n) { + exists(string file | file != "" | parent.hasLocationInfo(file, _, _, _, _)) and + n = strictcount(TypeParamType tpt | tpt.getParent() = parent) +} + +from TypeParamType tpt, TypeParamParentEntity ty +where ty = tpt.getParent() +select ty.getQualifiedName(), tpt.getIndex(), tpt.getParamName(), tpt.getConstraint().pp() diff --git a/go/ql/test/library-tests/semmle/go/Function/genericFunctions.go b/go/ql/test/library-tests/semmle/go/Function/genericFunctions.go index 43d0a11dd9f..60abbbb8f11 100644 --- a/go/ql/test/library-tests/semmle/go/Function/genericFunctions.go +++ b/go/ql/test/library-tests/semmle/go/Function/genericFunctions.go @@ -146,3 +146,9 @@ func callFunctionsInAnotherPackage() { _ = anotherpkg.GenericFunctionInAnotherPackage[string]("world") _ = anotherpkg.GenericFunctionInAnotherPackage("world") } + +func multipleAnonymousTypeParamsFunc[_ any, _ string, _ any]() {} + +type multipleAnonymousTypeParamsType[_ any, _ string, _ any] struct{} + +func (x multipleAnonymousTypeParamsType[_, _, _]) f() {} diff --git a/go/ql/test/library-tests/semmle/go/Function/getParameter.expected b/go/ql/test/library-tests/semmle/go/Function/getParameter.expected index 538b6ff3567..80171d5e79a 100644 --- a/go/ql/test/library-tests/semmle/go/Function/getParameter.expected +++ b/go/ql/test/library-tests/semmle/go/Function/getParameter.expected @@ -10,6 +10,7 @@ | genericFunctions.go:138:29:138:40 | ShortestPath | 0 | genericFunctions.go:138:42:138:45 | from | | genericFunctions.go:138:29:138:40 | ShortestPath | 1 | genericFunctions.go:138:48:138:49 | to | | genericFunctions.go:138:29:138:40 | ShortestPath | -1 | genericFunctions.go:138:7:138:7 | g | +| genericFunctions.go:154:51:154:51 | f | -1 | genericFunctions.go:154:7:154:7 | x | | main.go:7:6:7:7 | f1 | 0 | main.go:7:9:7:9 | x | | main.go:9:12:9:13 | f2 | 0 | main.go:9:15:9:15 | x | | main.go:9:12:9:13 | f2 | 1 | main.go:9:18:9:18 | y | diff --git a/go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected b/go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected index ce72080bd6f..27a89adf95e 100644 --- a/go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected +++ b/go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected @@ -13,3 +13,9 @@ | genericFunctions.go:132:6:132:73 | type declaration specifier | TypeSpec | 1 | genericFunctions.go:132:39:132:63 | type parameter declaration | 0 | genericFunctions.go:132:39:132:42 | Edge | genericFunctions.go:132:44:132:63 | generic type instantiation expression | EdgeConstraint | | genericFunctions.go:134:1:136:1 | function declaration | FuncDecl | 0 | genericFunctions.go:134:10:134:34 | type parameter declaration | 0 | genericFunctions.go:134:10:134:13 | Node | genericFunctions.go:134:15:134:34 | generic type instantiation expression | NodeConstraint | | genericFunctions.go:134:1:136:1 | function declaration | FuncDecl | 1 | genericFunctions.go:134:37:134:61 | type parameter declaration | 0 | genericFunctions.go:134:37:134:40 | Edge | genericFunctions.go:134:42:134:61 | generic type instantiation expression | EdgeConstraint | +| genericFunctions.go:150:1:150:65 | function declaration | FuncDecl | 0 | genericFunctions.go:150:38:150:42 | type parameter declaration | 0 | genericFunctions.go:150:38:150:38 | _ | genericFunctions.go:150:40:150:42 | any | interface { } | +| genericFunctions.go:150:1:150:65 | function declaration | FuncDecl | 1 | genericFunctions.go:150:45:150:52 | type parameter declaration | 0 | genericFunctions.go:150:45:150:45 | _ | genericFunctions.go:150:47:150:52 | string | interface { string } | +| genericFunctions.go:150:1:150:65 | function declaration | FuncDecl | 2 | genericFunctions.go:150:55:150:59 | type parameter declaration | 0 | genericFunctions.go:150:55:150:55 | _ | genericFunctions.go:150:57:150:59 | any | interface { } | +| genericFunctions.go:152:6:152:69 | type declaration specifier | TypeSpec | 0 | genericFunctions.go:152:38:152:42 | type parameter declaration | 0 | genericFunctions.go:152:38:152:38 | _ | genericFunctions.go:152:40:152:42 | any | interface { } | +| genericFunctions.go:152:6:152:69 | type declaration specifier | TypeSpec | 1 | genericFunctions.go:152:45:152:52 | type parameter declaration | 0 | genericFunctions.go:152:45:152:45 | _ | genericFunctions.go:152:47:152:52 | string | interface { string } | +| genericFunctions.go:152:6:152:69 | type declaration specifier | TypeSpec | 2 | genericFunctions.go:152:55:152:59 | type parameter declaration | 0 | genericFunctions.go:152:55:152:55 | _ | genericFunctions.go:152:57:152:59 | any | interface { } | diff --git a/go/ql/test/library-tests/semmle/go/Types/Aliases.expected b/go/ql/test/library-tests/semmle/go/Types/Aliases.expected new file mode 100644 index 00000000000..2c09dd790a5 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/Types/Aliases.expected @@ -0,0 +1,20 @@ +entities +| aliases.go | aliases.go:3:6:3:13 | aliasesX | 1 | file://:0:0:0:0 | int | +| aliases.go | aliases.go:4:6:4:13 | aliasesY | 1 | file://:0:0:0:0 | int | +| aliases.go | aliases.go:6:6:6:14 | aliasesS1 | 1 | file://:0:0:0:0 | struct type | +| aliases.go | aliases.go:6:26:6:26 | x | 3 | file://:0:0:0:0 | int | +| aliases.go | aliases.go:8:6:8:14 | aliasesS2 | 1 | file://:0:0:0:0 | struct type | +| aliases.go | aliases.go:8:26:8:26 | x | 3 | file://:0:0:0:0 | int | +| aliases.go | aliases.go:10:6:10:6 | F | 1 | file://:0:0:0:0 | signature type | +| aliases.go | aliases.go:10:8:10:11 | Afs1 | 1 | file://:0:0:0:0 | struct type | +| aliases.go | aliases.go:14:6:14:6 | G | 1 | file://:0:0:0:0 | signature type | +| aliases.go | aliases.go:14:8:14:11 | Afs2 | 1 | file://:0:0:0:0 | struct type | +| aliases.go | aliases.go:19:6:19:7 | S3 | 1 | aliases.go:19:6:19:7 | S3 | +| aliases.go | aliases.go:19:17:19:17 | x | 3 | file://:0:0:0:0 | int | +| aliases.go | aliases.go:22:6:22:6 | T | 1 | aliases.go:19:6:19:7 | S3 | +| aliases.go | aliases.go:25:6:25:6 | H | 1 | file://:0:0:0:0 | signature type | +| aliases.go | aliases.go:25:8:25:11 | Afs3 | 1 | aliases.go:19:6:19:7 | S3 | +#select +| F | func(struct { x int }) int | +| G | func(struct { x int }) int | +| H | func(S3) int | diff --git a/go/ql/test/library-tests/semmle/go/Types/Aliases.ql b/go/ql/test/library-tests/semmle/go/Types/Aliases.ql new file mode 100644 index 00000000000..79f366e37d9 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/Types/Aliases.ql @@ -0,0 +1,21 @@ +import go + +int countDecls(Entity e) { result = count(Ident decl | decl = e.getDeclaration()) } + +query predicate entities(string fp, Entity e, int c, Type ty) { + c = countDecls(e) and + ty = e.getType() and + exists(DbLocation loc | + loc = e.getDeclaration().getLocation() and + fp = loc.getFile().getBaseName() and + fp = "aliases.go" + ) +} + +from string fp, FuncDecl decl, SignatureType sig +where + decl.hasLocationInfo(fp, _, _, _, _) and + decl.getName() = ["F", "G", "H"] and + sig = decl.getType() and + fp.matches("%aliases.go%") +select decl.getName(), sig.pp() diff --git a/go/ql/test/library-tests/semmle/go/Types/Field_getPackage.expected b/go/ql/test/library-tests/semmle/go/Types/Field_getPackage.expected index e635a046b23..758199c6352 100644 --- a/go/ql/test/library-tests/semmle/go/Types/Field_getPackage.expected +++ b/go/ql/test/library-tests/semmle/go/Types/Field_getPackage.expected @@ -1,3 +1,6 @@ +| aliases.go:6:26:6:26 | x | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | +| aliases.go:8:26:8:26 | x | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | +| aliases.go:19:17:19:17 | x | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | | cyclic.go:4:3:4:3 | s | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | | cyclic.go:8:3:8:3 | u | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | | cyclic.go:9:2:9:2 | f | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | diff --git a/go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName2.expected b/go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName2.expected index 2ac146f266a..4c69f36880b 100644 --- a/go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName2.expected +++ b/go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName2.expected @@ -1,3 +1,6 @@ +| aliases.go:6:26:6:26 | x | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.S3 | x | +| aliases.go:8:26:8:26 | x | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.S3 | x | +| aliases.go:19:17:19:17 | x | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.S3 | x | | cyclic.go:4:3:4:3 | s | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.s | s | | cyclic.go:8:3:8:3 | u | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.t | u | | cyclic.go:8:3:8:3 | u | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.u | u | diff --git a/go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName3.expected b/go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName3.expected index acdddfe867e..4fe8aee19f4 100644 --- a/go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName3.expected +++ b/go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName3.expected @@ -1,3 +1,6 @@ +| aliases.go:6:26:6:26 | x | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | S3 | x | +| aliases.go:8:26:8:26 | x | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | S3 | x | +| aliases.go:19:17:19:17 | x | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | S3 | x | | cyclic.go:4:3:4:3 | s | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | s | s | | cyclic.go:8:3:8:3 | u | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | t | u | | cyclic.go:8:3:8:3 | u | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types | u | u | diff --git a/go/ql/test/library-tests/semmle/go/Types/QualifiedNames.expected b/go/ql/test/library-tests/semmle/go/Types/QualifiedNames.expected index 3f170370284..bedfbc5fa00 100644 --- a/go/ql/test/library-tests/semmle/go/Types/QualifiedNames.expected +++ b/go/ql/test/library-tests/semmle/go/Types/QualifiedNames.expected @@ -1,3 +1,4 @@ +| aliases.go:19:6:19:7 | S3 | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.S3 | | cyclic.go:3:6:3:6 | s | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.s | | cyclic.go:7:6:7:6 | t | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.t | | cyclic.go:12:6:12:6 | u | github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types.u | diff --git a/go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumParameter.expected b/go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumParameter.expected index 843020b9a95..6742adf837f 100644 --- a/go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumParameter.expected +++ b/go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumParameter.expected @@ -1,3 +1,6 @@ +| aliases.go:10:1:12:1 | function declaration | 1 | +| aliases.go:14:1:16:1 | function declaration | 1 | +| aliases.go:25:1:27:1 | function declaration | 1 | | depth.go:22:1:25:1 | function declaration | 0 | | generic.go:70:1:72:1 | function declaration | 1 | | generic.go:74:1:80:1 | function declaration | 1 | diff --git a/go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumResult.expected b/go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumResult.expected index 9072be74806..c6b20f54830 100644 --- a/go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumResult.expected +++ b/go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumResult.expected @@ -1,3 +1,6 @@ +| aliases.go:10:1:12:1 | function declaration | 1 | +| aliases.go:14:1:16:1 | function declaration | 1 | +| aliases.go:25:1:27:1 | function declaration | 1 | | depth.go:22:1:25:1 | function declaration | 0 | | generic.go:70:1:72:1 | function declaration | 1 | | generic.go:74:1:80:1 | function declaration | 0 | diff --git a/go/ql/test/library-tests/semmle/go/Types/StructFields.expected b/go/ql/test/library-tests/semmle/go/Types/StructFields.expected index 1db8f36d251..5bce8e1d7df 100644 --- a/go/ql/test/library-tests/semmle/go/Types/StructFields.expected +++ b/go/ql/test/library-tests/semmle/go/Types/StructFields.expected @@ -1,3 +1,6 @@ +| aliases.go:19:6:19:7 | S3 | aliases.go:6:18:6:37 | struct type | x | int | +| aliases.go:19:6:19:7 | S3 | aliases.go:8:18:8:37 | struct type | x | int | +| aliases.go:19:6:19:7 | S3 | aliases.go:19:9:19:23 | struct type | x | int | | cyclic.go:3:6:3:6 | s | cyclic.go:3:8:5:1 | struct type | s | * s | | cyclic.go:7:6:7:6 | t | cyclic.go:7:8:10:1 | struct type | f | int | | cyclic.go:7:6:7:6 | t | cyclic.go:7:8:10:1 | struct type | t | t | diff --git a/go/ql/test/library-tests/semmle/go/Types/Types.expected b/go/ql/test/library-tests/semmle/go/Types/Types.expected index b4a05a8858d..3801769db02 100644 --- a/go/ql/test/library-tests/semmle/go/Types/Types.expected +++ b/go/ql/test/library-tests/semmle/go/Types/Types.expected @@ -1,3 +1,4 @@ +| aliases.go:19:6:19:7 | S3 | S3 | | cyclic.go:3:6:3:6 | s | s | | cyclic.go:7:6:7:6 | t | t | | cyclic.go:12:6:12:6 | u | u | diff --git a/go/ql/test/library-tests/semmle/go/Types/aliases.go b/go/ql/test/library-tests/semmle/go/Types/aliases.go new file mode 100644 index 00000000000..49f84658732 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/Types/aliases.go @@ -0,0 +1,27 @@ +package main + +type aliasesX = int +type aliasesY = int + +type aliasesS1 = struct{ x aliasesX } + +type aliasesS2 = struct{ x aliasesY } + +func F(Afs1 aliasesS1) int { + return G(Afs1) + Afs1.x +} + +func G(Afs2 aliasesS2) int { + return Afs2.x +} + +// This is a named type, not an alias +type S3 struct{ x int } + +// This is a type alias +type T = S3 + +// We expect `Afs3` to be of type `S3` here, not `struct{ x int }` +func H(Afs3 T) int { + return Afs3.x +} diff --git a/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/embedding.go b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/embedding.go new file mode 100644 index 00000000000..fd255bddb46 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/embedding.go @@ -0,0 +1,32 @@ +package test + +import ( + "test.com/basename/pkg1" + "test.com/basename/pkg2" +) + +// Tests that dataflow behaves as expected when loads and stores from a field traverse embeddings that use different type names. + +// pkg2.IntStruct is an alias for pkg1.IntStruct +// Note referring to symbols in different packages is necessary so that Go will assign the fields the same name as well as the same type-- +// for example, if we defined two aliases here named 'IntStruct1' and 'IntStruct2' and embedded them into two types, +// the types would be non-identical due to having a field implicitly named IntStruct1 and IntStruct2 respectively, +// even though syntactically it could be addressed without mentioning the field name. + +type EmbedsPkg1IntStruct = struct{ pkg1.IntStruct } +type EmbedsPkg2IntStruct = struct{ pkg2.IntStruct } + +func FEmbedded() { + + x := source() + pkg1Struct := EmbedsPkg1IntStruct{pkg1.IntStruct{x}} + + GEmbedded(&pkg1Struct) + +} + +func GEmbedded(pkg2Struct *EmbedsPkg2IntStruct) { + + sink(pkg2Struct.Field) // $ hasValueFlow="selection of Field" + +} diff --git a/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/go.mod b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/go.mod new file mode 100644 index 00000000000..5fb81a66e38 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/go.mod @@ -0,0 +1,3 @@ +module test.com/basename + +go 1.23.1 diff --git a/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/pkg1/struct.go b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/pkg1/struct.go new file mode 100644 index 00000000000..a35f894bc50 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/pkg1/struct.go @@ -0,0 +1,5 @@ +package pkg1 + +type IntStruct struct { + Field int +} diff --git a/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/pkg2/struct.go b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/pkg2/struct.go new file mode 100644 index 00000000000..09f1531c82d --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/pkg2/struct.go @@ -0,0 +1,7 @@ +package pkg2 + +import ( + "test.com/basename/pkg1" +) + +type IntStruct = pkg1.IntStruct diff --git a/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/simple.go b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/simple.go new file mode 100644 index 00000000000..6ed30f64ca4 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/simple.go @@ -0,0 +1,26 @@ +package test + +// Tests that dataflow behaves as expected when field loads and stores, and pointer accesses, go via +// types which are identical, but which use different aliases. + +func source() int { return 0 } +func sink(value int) {} + +type IntAlias = int +type IntStruct = struct{ field int } +type IntAliasStruct = struct{ field IntAlias } + +func F() { + + x := source() + intStruct := IntStruct{x} + + G(&intStruct) + +} + +func G(intAliasStruct *IntAliasStruct) { + + sink(intAliasStruct.field) // $ hasValueFlow="selection of field" + +} diff --git a/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Diagnostics.expected b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Diagnostics.expected rename to go/ql/test/library-tests/semmle/go/aliases/DataflowFields/test.expected diff --git a/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/test.ql b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/test.ql new file mode 100644 index 00000000000..1b27b27d6dc --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/DataflowFields/test.ql @@ -0,0 +1,3 @@ +import go +import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/integration-tests/all-platforms/java/legacy b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/flow.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/legacy rename to go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/flow.expected diff --git a/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/flow.ql b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/flow.ql new file mode 100644 index 00000000000..1b27b27d6dc --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/flow.ql @@ -0,0 +1,3 @@ +import go +import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.expected b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.expected new file mode 100644 index 00000000000..c39b58ab620 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.expected @@ -0,0 +1,22 @@ +callTargets +| test.go:20:70:20:83 | call to sink | test.go:15:1:15:45 | function declaration | sink | +| test.go:25:65:25:78 | call to sink | test.go:15:1:15:45 | function declaration | sink | +| test.go:32:54:32:67 | call to sink | test.go:15:1:15:45 | function declaration | sink | +| test.go:39:60:39:73 | call to sink | test.go:15:1:15:45 | function declaration | sink | +| test.go:46:72:46:85 | call to sink | test.go:15:1:15:45 | function declaration | sink | +| test.go:53:70:53:83 | call to sink | test.go:15:1:15:45 | function declaration | sink | +| test.go:56:14:56:21 | call to source | test.go:14:1:14:57 | function declaration | source | +| test.go:57:2:57:29 | call to ImplementMe | test.go:20:1:20:85 | function declaration | ImplementMe | +| test.go:57:2:57:29 | call to ImplementMe | test.go:25:1:25:80 | function declaration | ImplementMe | +| test.go:57:2:57:29 | call to ImplementMe | test.go:32:1:32:69 | function declaration | ImplementMe | +| test.go:57:2:57:29 | call to ImplementMe | test.go:39:1:39:75 | function declaration | ImplementMe | +| test.go:57:2:57:29 | call to ImplementMe | test.go:46:1:46:87 | function declaration | ImplementMe | +| test.go:57:2:57:29 | call to ImplementMe | test.go:53:1:53:85 | function declaration | ImplementMe | +#select +| file://:0:0:0:0 | basic interface type | file://:0:0:0:0 | basic interface type | +| file://:0:0:0:0 | basic interface type | test.go:18:6:18:10 | Impl1 | +| file://:0:0:0:0 | basic interface type | test.go:23:6:23:10 | Impl2 | +| file://:0:0:0:0 | basic interface type | test.go:28:6:28:10 | Impl3 | +| file://:0:0:0:0 | basic interface type | test.go:35:6:35:10 | Impl4 | +| file://:0:0:0:0 | basic interface type | test.go:42:6:42:10 | Impl5 | +| file://:0:0:0:0 | basic interface type | test.go:49:6:49:10 | Impl6 | diff --git a/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.go b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.go new file mode 100644 index 00000000000..0d09449514d --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.go @@ -0,0 +1,58 @@ +package intfs + +// Tests that dataflow and interface implementation behave as expected when an interface +// is implemented using an identical type (in the structural sense defined by the go spec) +// where the two types differ at surface level, i.e. aliases must be followed to determine +// that they are identical. + +type IntAlias = int + +type Target = interface { + ImplementMe(callable func(struct{ x IntAlias })) +} + +func source() func(struct{ x IntAlias }) { return nil } +func sink(fptr func(struct{ x IntAlias })) {} + +// Simple direct implementation +type Impl1 struct{} + +func (recv Impl1) ImplementMe(callable func(struct{ x IntAlias })) { sink(callable) } // $ hasValueFlow="callable" + +// Implementation via unaliasing +type Impl2 struct{} + +func (recv Impl2) ImplementMe(callable func(struct{ x int })) { sink(callable) } // $ hasValueFlow="callable" + +// Implementation via top-level aliasing +type Impl3 struct{} + +type Impl3Alias = func(struct{ x IntAlias }) + +func (recv Impl3) ImplementMe(callable Impl3Alias) { sink(callable) } // $ hasValueFlow="callable" + +// Implementation via aliasing the struct +type Impl4 struct{} + +type Impl4Alias = struct{ x IntAlias } + +func (recv Impl4) ImplementMe(callable func(Impl4Alias)) { sink(callable) } // $ hasValueFlow="callable" + +// Implementation via aliasing the struct member +type Impl5 struct{} + +type Impl5Alias = IntAlias + +func (recv Impl5) ImplementMe(callable func(struct{ x Impl5Alias })) { sink(callable) } // $ hasValueFlow="callable" + +// Implementation via defining the method on an alias +type Impl6 struct{} + +type Impl6Alias = Impl6 + +func (recv Impl6Alias) ImplementMe(callable func(struct{ x int })) { sink(callable) } // $ hasValueFlow="callable" + +func Caller(target Target) { + callable := source() + target.ImplementMe(callable) +} diff --git a/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.ql b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.ql new file mode 100644 index 00000000000..ae0df68d38d --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/InterfaceImpls/test.ql @@ -0,0 +1,11 @@ +import go + +query predicate callTargets(DataFlow::CallNode cn, FuncDef target, string targetName) { + target = cn.getACallee() and targetName = target.getName() +} + +from InterfaceType i, Type impl +where + i.hasMethod("ImplementMe", _) and + impl.implements(i) +select i, impl diff --git a/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/methods.go b/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/methods.go new file mode 100644 index 00000000000..83287e117ae --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/methods.go @@ -0,0 +1,18 @@ +package aliases + +// Tests how interfaces defining identical types are represented in the database. + +type IntAlias = int + +type S1 = struct{ x int } +type S2 = struct{ x IntAlias } + +type I1 = interface{ F(int) } +type I2 = interface{ F(IntAlias) } +type I3 = interface{ F(S1) } +type I4 = interface{ F(S2) } + +func Test1(param1 I1, param2 I3, arg int) { + param1.F(arg) + param2.F(S1{arg}) +} diff --git a/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/test.expected b/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/test.expected new file mode 100644 index 00000000000..71cd1370437 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/test.expected @@ -0,0 +1,20 @@ +distinctDefinedFs +| 2 | +declaredEntities +| methods.go:5:6:5:13 | IntAlias (1 declaration sites) | +| methods.go:7:6:7:7 | S1 (1 declaration sites) | +| methods.go:7:19:7:19 | x (2 declaration sites) | +| methods.go:8:6:8:7 | S2 (1 declaration sites) | +| methods.go:8:19:8:19 | x (2 declaration sites) | +| methods.go:10:6:10:7 | I1 (1 declaration sites) | +| methods.go:10:22:10:22 | F (2 declaration sites) | +| methods.go:11:6:11:7 | I2 (1 declaration sites) | +| methods.go:11:22:11:22 | F (2 declaration sites) | +| methods.go:12:6:12:7 | I3 (1 declaration sites) | +| methods.go:12:22:12:22 | F (2 declaration sites) | +| methods.go:13:6:13:7 | I4 (1 declaration sites) | +| methods.go:13:22:13:22 | F (2 declaration sites) | +| methods.go:15:6:15:10 | Test1 (1 declaration sites) | +| methods.go:15:12:15:17 | param1 (1 declaration sites) | +| methods.go:15:23:15:28 | param2 (1 declaration sites) | +| methods.go:15:34:15:36 | arg (1 declaration sites) | diff --git a/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/test.ql b/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/test.ql new file mode 100644 index 00000000000..cb3fa313754 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/MethodDefs/test.ql @@ -0,0 +1,23 @@ +import go + +newtype TEntityWithDeclInfo = + MkEntityWithDeclInfo(Entity e, int nDecls) { nDecls = count(e.getDeclaration()) and nDecls > 0 } + +class EntityWithDeclInfo extends TEntityWithDeclInfo { + Entity e; + int nDecls; + + EntityWithDeclInfo() { this = MkEntityWithDeclInfo(e, nDecls) } + + string toString() { result = e.toString() + " (" + nDecls + " declaration sites)" } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + e.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +query predicate distinctDefinedFs(int ct) { ct = count(DeclaredFunction e | e.toString() = "F") } + +query predicate declaredEntities(EntityWithDeclInfo e) { any() } diff --git a/go/ql/test/library-tests/semmle/go/aliases/defsuses/defsuses.go b/go/ql/test/library-tests/semmle/go/aliases/defsuses/defsuses.go new file mode 100644 index 00000000000..e98f14532bd --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/defsuses/defsuses.go @@ -0,0 +1,19 @@ +package aliases + +// Tests how defs and uses of fields are represented in the database +// when identical types are used. + +type IntAlias = int + +type S1 = struct{ x int } +type S2 = struct{ x IntAlias } + +func Test1() int { + obj := S1{1} + obj.x = 2 + + var ptr *S2 + ptr = &obj + + return ptr.x +} diff --git a/go/ql/test/library-tests/semmle/go/aliases/defsuses/test.expected b/go/ql/test/library-tests/semmle/go/aliases/defsuses/test.expected new file mode 100644 index 00000000000..aa9c3ef213a --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/defsuses/test.expected @@ -0,0 +1,33 @@ +lowLevelDefs +| defsuses.go:6:6:6:13 | IntAlias | defsuses.go:6:6:6:13 | IntAlias (1 declaration sites) | +| defsuses.go:8:6:8:7 | S1 | defsuses.go:8:6:8:7 | S1 (1 declaration sites) | +| defsuses.go:8:19:8:19 | x | defsuses.go:8:19:8:19 | x (2 declaration sites) | +| defsuses.go:8:19:8:19 | x | defsuses.go:9:19:9:19 | x (2 declaration sites) | +| defsuses.go:9:6:9:7 | S2 | defsuses.go:9:6:9:7 | S2 (1 declaration sites) | +| defsuses.go:9:19:9:19 | x | defsuses.go:8:19:8:19 | x (2 declaration sites) | +| defsuses.go:9:19:9:19 | x | defsuses.go:9:19:9:19 | x (2 declaration sites) | +| defsuses.go:11:6:11:10 | Test1 | defsuses.go:11:6:11:10 | Test1 (1 declaration sites) | +| defsuses.go:12:2:12:4 | obj | defsuses.go:12:2:12:4 | obj (1 declaration sites) | +| defsuses.go:15:6:15:8 | ptr | defsuses.go:15:6:15:8 | ptr (1 declaration sites) | +lowLevelUses +| defsuses.go:6:17:6:19 | int | file://:0:0:0:0 | int (0 declaration sites) | +| defsuses.go:8:21:8:23 | int | file://:0:0:0:0 | int (0 declaration sites) | +| defsuses.go:9:21:9:28 | IntAlias | defsuses.go:6:6:6:13 | IntAlias (1 declaration sites) | +| defsuses.go:11:14:11:16 | int | file://:0:0:0:0 | int (0 declaration sites) | +| defsuses.go:12:9:12:10 | S1 | defsuses.go:8:6:8:7 | S1 (1 declaration sites) | +| defsuses.go:13:2:13:4 | obj | defsuses.go:12:2:12:4 | obj (1 declaration sites) | +| defsuses.go:13:6:13:6 | x | defsuses.go:8:19:8:19 | x (2 declaration sites) | +| defsuses.go:13:6:13:6 | x | defsuses.go:9:19:9:19 | x (2 declaration sites) | +| defsuses.go:15:11:15:12 | S2 | defsuses.go:9:6:9:7 | S2 (1 declaration sites) | +| defsuses.go:16:2:16:4 | ptr | defsuses.go:15:6:15:8 | ptr (1 declaration sites) | +| defsuses.go:16:9:16:11 | obj | defsuses.go:12:2:12:4 | obj (1 declaration sites) | +| defsuses.go:18:9:18:11 | ptr | defsuses.go:15:6:15:8 | ptr (1 declaration sites) | +| defsuses.go:18:13:18:13 | x | defsuses.go:8:19:8:19 | x (2 declaration sites) | +| defsuses.go:18:13:18:13 | x | defsuses.go:9:19:9:19 | x (2 declaration sites) | +distinctDefinedXs +| 1 | +distinctUsedXs +| 1 | +fieldUseUsePairs +| defsuses.go:13:6:13:6 | x | defsuses.go:18:13:18:13 | x | +| defsuses.go:18:13:18:13 | x | defsuses.go:13:6:13:6 | x | diff --git a/go/ql/test/library-tests/semmle/go/aliases/defsuses/test.ql b/go/ql/test/library-tests/semmle/go/aliases/defsuses/test.ql new file mode 100644 index 00000000000..923550d547e --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/aliases/defsuses/test.ql @@ -0,0 +1,37 @@ +import go + +newtype TEntityWithDeclInfo = MkEntityWithDeclInfo(Entity e) + +class EntityWithDeclInfo extends TEntityWithDeclInfo { + Entity e; + + EntityWithDeclInfo() { this = MkEntityWithDeclInfo(e) } + + string toString() { + result = e.toString() + " (" + count(e.getDeclaration()) + " declaration sites)" + } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + e.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +query predicate lowLevelDefs(Ident i, EntityWithDeclInfo ewrapped) { + exists(Entity e | ewrapped = MkEntityWithDeclInfo(e) | defs(i, e)) +} + +query predicate lowLevelUses(Ident i, EntityWithDeclInfo ewrapped) { + exists(Entity e | ewrapped = MkEntityWithDeclInfo(e) | uses(i, e)) +} + +query predicate distinctDefinedXs(int ct) { + ct = count(Entity e | defs(_, e) and e.toString() = "x") +} + +query predicate distinctUsedXs(int ct) { ct = count(Entity e | uses(_, e) and e.toString() = "x") } + +query predicate fieldUseUsePairs(Ident i1, Ident i2) { + exists(Field e | uses(i1, e) and uses(i2, e) and i1 != i2) +} diff --git a/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected b/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected index 992c1387103..6cc1e09486b 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected @@ -32,61 +32,40 @@ | test.go:59:31:59:39 | untrusted | test.go:57:15:57:41 | call to UserAgent | test.go:59:31:59:39 | untrusted | This query depends on a $@. | test.go:57:15:57:41 | call to UserAgent | user-provided value | | test.go:65:19:65:27 | untrusted | test.go:63:15:63:41 | call to UserAgent | test.go:65:19:65:27 | untrusted | This query depends on a $@. | test.go:63:15:63:41 | call to UserAgent | user-provided value | edges -| test.go:11:15:11:41 | call to UserAgent | test.go:13:11:13:19 | untrusted | provenance | Src:MaD:22 Sink:MaD:2 | -| test.go:11:15:11:41 | call to UserAgent | test.go:14:23:14:31 | untrusted | provenance | Src:MaD:22 Sink:MaD:3 | -| test.go:11:15:11:41 | call to UserAgent | test.go:15:14:15:22 | untrusted | provenance | Src:MaD:22 Sink:MaD:4 | -| test.go:11:15:11:41 | call to UserAgent | test.go:16:26:16:34 | untrusted | provenance | Src:MaD:22 Sink:MaD:5 | -| test.go:11:15:11:41 | call to UserAgent | test.go:17:12:17:20 | untrusted | provenance | Src:MaD:22 Sink:MaD:6 | -| test.go:11:15:11:41 | call to UserAgent | test.go:18:24:18:32 | untrusted | provenance | Src:MaD:22 Sink:MaD:7 | -| test.go:11:15:11:41 | call to UserAgent | test.go:19:15:19:23 | untrusted | provenance | Src:MaD:22 Sink:MaD:8 | -| test.go:11:15:11:41 | call to UserAgent | test.go:20:27:20:35 | untrusted | provenance | Src:MaD:22 Sink:MaD:9 | -| test.go:25:15:25:41 | call to UserAgent | test.go:28:12:28:20 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:29:10:29:18 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:30:15:30:23 | untrusted | provenance | Src:MaD:22 Sink:MaD:13 | -| test.go:25:15:25:41 | call to UserAgent | test.go:31:14:31:22 | untrusted | provenance | Src:MaD:22 Sink:MaD:15 | -| test.go:25:15:25:41 | call to UserAgent | test.go:32:15:32:23 | untrusted | provenance | Src:MaD:22 Sink:MaD:18 | -| test.go:25:15:25:41 | call to UserAgent | test.go:33:8:33:16 | untrusted | provenance | Src:MaD:22 Sink:MaD:16 | -| test.go:25:15:25:41 | call to UserAgent | test.go:34:11:34:19 | untrusted | provenance | Src:MaD:22 Sink:MaD:20 | -| test.go:25:15:25:41 | call to UserAgent | test.go:35:9:35:17 | untrusted | provenance | Src:MaD:22 Sink:MaD:11 | -| test.go:25:15:25:41 | call to UserAgent | test.go:36:8:36:16 | untrusted | provenance | Src:MaD:22 Sink:MaD:17 | -| test.go:25:15:25:41 | call to UserAgent | test.go:37:8:37:16 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:38:13:38:21 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:39:13:39:21 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:40:12:40:20 | untrusted | provenance | Src:MaD:22 Sink:MaD:12 | -| test.go:25:15:25:41 | call to UserAgent | test.go:41:12:41:20 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:42:9:42:17 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:43:12:43:20 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:44:16:44:24 | untrusted | provenance | Src:MaD:22 Sink:MaD:14 | -| test.go:25:15:25:41 | call to UserAgent | test.go:45:12:45:20 | untrusted | provenance | Src:MaD:22 | -| test.go:25:15:25:41 | call to UserAgent | test.go:46:14:46:22 | untrusted | provenance | Src:MaD:22 Sink:MaD:19 | -| test.go:26:16:26:42 | call to UserAgent | test.go:44:27:44:36 | untrusted2 | provenance | Src:MaD:22 | -| test.go:26:16:26:42 | call to UserAgent | test.go:46:25:46:34 | untrusted2 | provenance | Src:MaD:22 Sink:MaD:19 | -| test.go:50:15:50:41 | call to UserAgent | test.go:52:12:52:20 | untrusted | provenance | Src:MaD:22 Sink:MaD:10 | -| test.go:57:15:57:41 | call to UserAgent | test.go:59:31:59:39 | untrusted | provenance | Src:MaD:22 Sink:MaD:21 | -| test.go:63:15:63:41 | call to UserAgent | test.go:65:19:65:27 | untrusted | provenance | Src:MaD:22 Sink:MaD:1 | +| test.go:11:15:11:41 | call to UserAgent | test.go:13:11:13:19 | untrusted | provenance | Src:MaD:1 | +| test.go:11:15:11:41 | call to UserAgent | test.go:14:23:14:31 | untrusted | provenance | Src:MaD:1 | +| test.go:11:15:11:41 | call to UserAgent | test.go:15:14:15:22 | untrusted | provenance | Src:MaD:1 | +| test.go:11:15:11:41 | call to UserAgent | test.go:16:26:16:34 | untrusted | provenance | Src:MaD:1 | +| test.go:11:15:11:41 | call to UserAgent | test.go:17:12:17:20 | untrusted | provenance | Src:MaD:1 | +| test.go:11:15:11:41 | call to UserAgent | test.go:18:24:18:32 | untrusted | provenance | Src:MaD:1 | +| test.go:11:15:11:41 | call to UserAgent | test.go:19:15:19:23 | untrusted | provenance | Src:MaD:1 | +| test.go:11:15:11:41 | call to UserAgent | test.go:20:27:20:35 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:28:12:28:20 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:29:10:29:18 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:30:15:30:23 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:31:14:31:22 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:32:15:32:23 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:33:8:33:16 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:34:11:34:19 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:35:9:35:17 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:36:8:36:16 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:37:8:37:16 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:38:13:38:21 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:39:13:39:21 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:40:12:40:20 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:41:12:41:20 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:42:9:42:17 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:43:12:43:20 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:44:16:44:24 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:45:12:45:20 | untrusted | provenance | Src:MaD:1 | +| test.go:25:15:25:41 | call to UserAgent | test.go:46:14:46:22 | untrusted | provenance | Src:MaD:1 | +| test.go:26:16:26:42 | call to UserAgent | test.go:44:27:44:36 | untrusted2 | provenance | Src:MaD:1 | +| test.go:26:16:26:42 | call to UserAgent | test.go:46:25:46:34 | untrusted2 | provenance | Src:MaD:1 | +| test.go:50:15:50:41 | call to UserAgent | test.go:52:12:52:20 | untrusted | provenance | Src:MaD:1 | +| test.go:57:15:57:41 | call to UserAgent | test.go:59:31:59:39 | untrusted | provenance | Src:MaD:1 | +| test.go:63:15:63:41 | call to UserAgent | test.go:65:19:65:27 | untrusted | provenance | Src:MaD:1 | models -| 1 | Sink: group:beego-orm; Condition; false; Raw; ; ; Argument[1]; sql-injection; manual | -| 2 | Sink: group:beego-orm; DB; false; Exec; ; ; Argument[0]; sql-injection; manual | -| 3 | Sink: group:beego-orm; DB; false; ExecContext; ; ; Argument[1]; sql-injection; manual | -| 4 | Sink: group:beego-orm; DB; false; Prepare; ; ; Argument[0]; sql-injection; manual | -| 5 | Sink: group:beego-orm; DB; false; PrepareContext; ; ; Argument[1]; sql-injection; manual | -| 6 | Sink: group:beego-orm; DB; false; Query; ; ; Argument[0]; sql-injection; manual | -| 7 | Sink: group:beego-orm; DB; false; QueryContext; ; ; Argument[1]; sql-injection; manual | -| 8 | Sink: group:beego-orm; DB; false; QueryRow; ; ; Argument[0]; sql-injection; manual | -| 9 | Sink: group:beego-orm; DB; false; QueryRowContext; ; ; Argument[1]; sql-injection; manual | -| 10 | Sink: group:beego-orm; Ormer; false; Raw; ; ; Argument[0]; sql-injection; manual | -| 11 | Sink: group:beego-orm; QueryBuilder; false; And; ; ; Argument[0]; sql-injection; manual | -| 12 | Sink: group:beego-orm; QueryBuilder; false; Having; ; ; Argument[0]; sql-injection; manual | -| 13 | Sink: group:beego-orm; QueryBuilder; false; InnerJoin; ; ; Argument[0]; sql-injection; manual | -| 14 | Sink: group:beego-orm; QueryBuilder; false; InsertInto; ; ; Argument[0..1]; sql-injection; manual | -| 15 | Sink: group:beego-orm; QueryBuilder; false; LeftJoin; ; ; Argument[0]; sql-injection; manual | -| 16 | Sink: group:beego-orm; QueryBuilder; false; On; ; ; Argument[0]; sql-injection; manual | -| 17 | Sink: group:beego-orm; QueryBuilder; false; Or; ; ; Argument[0]; sql-injection; manual | -| 18 | Sink: group:beego-orm; QueryBuilder; false; RightJoin; ; ; Argument[0]; sql-injection; manual | -| 19 | Sink: group:beego-orm; QueryBuilder; false; Subquery; ; ; Argument[0..1]; sql-injection; manual | -| 20 | Sink: group:beego-orm; QueryBuilder; false; Where; ; ; Argument[0]; sql-injection; manual | -| 21 | Sink: group:beego-orm; QuerySeter; false; FilterRaw; ; ; Argument[1]; sql-injection; manual | -| 22 | Source: net/http; Request; true; UserAgent; ; ; ReturnValue; remote; manual | +| 1 | Source: net/http; Request; true; UserAgent; ; ; ReturnValue; remote; manual | nodes | test.go:11:15:11:41 | call to UserAgent | semmle.label | call to UserAgent | | test.go:13:11:13:19 | untrusted | semmle.label | untrusted | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/QueryString.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/QueryString.expected deleted file mode 100644 index db33d6d2504..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/QueryString.expected +++ /dev/null @@ -1,3 +0,0 @@ -testFailures -invalidModelRow -failures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/QueryString.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/QueryString.ql deleted file mode 100644 index eeb43a82fad..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/QueryString.ql +++ /dev/null @@ -1,60 +0,0 @@ -import go -import semmle.go.dataflow.ExternalFlow -import ModelValidation -import TestUtilities.InlineExpectationsTest - -module SqlTest implements TestSig { - string getARelevantTag() { result = "query" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "query" and - exists(SQL::Query q, SQL::QueryString qs | qs = q.getAQueryString() | - q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = q.toString() and - value = qs.toString() - ) - } -} - -module QueryString implements TestSig { - string getARelevantTag() { result = "querystring" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "querystring" and - element = "" and - exists(SQL::QueryString qs | not exists(SQL::Query q | qs = q.getAQueryString()) | - qs.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - value = qs.toString() - ) - } -} - -module Config implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - - predicate isSink(DataFlow::Node n) { - n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() - } -} - -module Flow = TaintTracking::Global; - -module TaintFlow implements TestSig { - string getARelevantTag() { result = "flowfrom" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "flowfrom" and - element = "" and - exists(DataFlow::Node fromNode, DataFlow::Node toNode | - toNode - .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - Flow::flow(fromNode, toNode) and - value = fromNode.asExpr().(StringLit).getValue() - ) - } -} - -import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.expected new file mode 100644 index 00000000000..ca70ed07c33 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.expected @@ -0,0 +1,25 @@ +| gorm.go:20:12:20:20 | untrusted | github.com/jinzhu/gorm | DB | Where | +| gorm.go:21:10:21:18 | untrusted | github.com/jinzhu/gorm | DB | Raw | +| gorm.go:22:10:22:18 | untrusted | github.com/jinzhu/gorm | DB | Not | +| gorm.go:23:12:23:20 | untrusted | github.com/jinzhu/gorm | DB | Order | +| gorm.go:24:9:24:17 | untrusted | github.com/jinzhu/gorm | DB | Or | +| gorm.go:25:13:25:21 | untrusted | github.com/jinzhu/gorm | DB | Select | +| gorm.go:26:12:26:20 | untrusted | github.com/jinzhu/gorm | DB | Table | +| gorm.go:27:12:27:20 | untrusted | github.com/jinzhu/gorm | DB | Group | +| gorm.go:28:13:28:21 | untrusted | github.com/jinzhu/gorm | DB | Having | +| gorm.go:29:12:29:20 | untrusted | github.com/jinzhu/gorm | DB | Joins | +| gorm.go:30:11:30:19 | untrusted | github.com/jinzhu/gorm | DB | Exec | +| gorm.go:31:12:31:20 | untrusted | github.com/jinzhu/gorm | DB | Pluck | +| gorm.go:34:12:34:20 | untrusted | gorm.io/gorm | DB | Where | +| gorm.go:35:10:35:18 | untrusted | gorm.io/gorm | DB | Raw | +| gorm.go:36:10:36:18 | untrusted | gorm.io/gorm | DB | Not | +| gorm.go:37:12:37:20 | untrusted | gorm.io/gorm | DB | Order | +| gorm.go:38:9:38:17 | untrusted | gorm.io/gorm | DB | Or | +| gorm.go:39:13:39:21 | untrusted | gorm.io/gorm | DB | Select | +| gorm.go:40:12:40:20 | untrusted | gorm.io/gorm | DB | Table | +| gorm.go:41:12:41:20 | untrusted | gorm.io/gorm | DB | Group | +| gorm.go:42:13:42:21 | untrusted | gorm.io/gorm | DB | Having | +| gorm.go:43:12:43:20 | untrusted | gorm.io/gorm | DB | Joins | +| gorm.go:44:11:44:19 | untrusted | gorm.io/gorm | DB | Exec | +| gorm.go:45:15:45:23 | untrusted | gorm.io/gorm | DB | Distinct | +| gorm.go:46:12:46:20 | untrusted | gorm.io/gorm | DB | Pluck | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.go index 2d736e2407c..bee8edbf7af 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.go @@ -13,35 +13,36 @@ func getUntrustedString() string { } func main() { + untrusted := getUntrustedString() db1 := gorm1.DB{} - db1.Where(untrusted) // $ querystring=untrusted - db1.Raw(untrusted) // $ querystring=untrusted - db1.Not(untrusted) // $ querystring=untrusted - db1.Order(untrusted) // $ querystring=untrusted - db1.Or(untrusted) // $ querystring=untrusted - db1.Select(untrusted) // $ querystring=untrusted - db1.Table(untrusted) // $ querystring=untrusted - db1.Group(untrusted) // $ querystring=untrusted - db1.Having(untrusted) // $ querystring=untrusted - db1.Joins(untrusted) // $ querystring=untrusted - db1.Exec(untrusted) // $ querystring=untrusted - db1.Pluck(untrusted, nil) // $ querystring=untrusted + db1.Where(untrusted) + db1.Raw(untrusted) + db1.Not(untrusted) + db1.Order(untrusted) + db1.Or(untrusted) + db1.Select(untrusted) + db1.Table(untrusted) + db1.Group(untrusted) + db1.Having(untrusted) + db1.Joins(untrusted) + db1.Exec(untrusted) + db1.Pluck(untrusted, nil) db2 := gorm2.DB{} - db2.Where(untrusted) // $ querystring=untrusted - db2.Raw(untrusted) // $ querystring=untrusted - db2.Not(untrusted) // $ querystring=untrusted - db2.Order(untrusted) // $ querystring=untrusted - db2.Or(untrusted) // $ querystring=untrusted - db2.Select(untrusted) // $ querystring=untrusted - db2.Table(untrusted) // $ querystring=untrusted - db2.Group(untrusted) // $ querystring=untrusted - db2.Having(untrusted) // $ querystring=untrusted - db2.Joins(untrusted) // $ querystring=untrusted - db2.Exec(untrusted) // $ querystring=untrusted - db2.Distinct(untrusted) // $ querystring=untrusted - db2.Pluck(untrusted, nil) // $ querystring=untrusted + db2.Where(untrusted) + db2.Raw(untrusted) + db2.Not(untrusted) + db2.Order(untrusted) + db2.Or(untrusted) + db2.Select(untrusted) + db2.Table(untrusted) + db2.Group(untrusted) + db2.Having(untrusted) + db2.Joins(untrusted) + db2.Exec(untrusted) + db2.Distinct(untrusted) + db2.Pluck(untrusted, nil) } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.ql new file mode 100644 index 00000000000..e08b506deaf --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.ql @@ -0,0 +1,5 @@ +import go + +from SQL::QueryString qs, Method meth, string a, string b, string c +where meth.hasQualifiedName(a, b, c) and qs = meth.getACall().getSyntacticArgument(0) +select qs, a, b, c diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/QueryString.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/QueryString.expected deleted file mode 100644 index db33d6d2504..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/QueryString.expected +++ /dev/null @@ -1,3 +0,0 @@ -testFailures -invalidModelRow -failures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/QueryString.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/QueryString.ql deleted file mode 100644 index eeb43a82fad..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/QueryString.ql +++ /dev/null @@ -1,60 +0,0 @@ -import go -import semmle.go.dataflow.ExternalFlow -import ModelValidation -import TestUtilities.InlineExpectationsTest - -module SqlTest implements TestSig { - string getARelevantTag() { result = "query" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "query" and - exists(SQL::Query q, SQL::QueryString qs | qs = q.getAQueryString() | - q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = q.toString() and - value = qs.toString() - ) - } -} - -module QueryString implements TestSig { - string getARelevantTag() { result = "querystring" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "querystring" and - element = "" and - exists(SQL::QueryString qs | not exists(SQL::Query q | qs = q.getAQueryString()) | - qs.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - value = qs.toString() - ) - } -} - -module Config implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - - predicate isSink(DataFlow::Node n) { - n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() - } -} - -module Flow = TaintTracking::Global; - -module TaintFlow implements TestSig { - string getARelevantTag() { result = "flowfrom" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "flowfrom" and - element = "" and - exists(DataFlow::Node fromNode, DataFlow::Node toNode | - toNode - .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - Flow::flow(fromNode, toNode) and - value = fromNode.asExpr().(StringLit).getValue() - ) - } -} - -import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.expected new file mode 100644 index 00000000000..0540a78fb34 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.expected @@ -0,0 +1,12 @@ +| sqlx.go:15:17:15:25 | untrusted | +| sqlx.go:16:14:16:22 | untrusted | +| sqlx.go:17:14:17:22 | untrusted | +| sqlx.go:18:12:18:20 | untrusted | +| sqlx.go:19:15:19:23 | untrusted | +| sqlx.go:20:16:20:24 | untrusted | +| sqlx.go:23:17:23:25 | untrusted | +| sqlx.go:24:14:24:22 | untrusted | +| sqlx.go:25:14:25:22 | untrusted | +| sqlx.go:26:12:26:20 | untrusted | +| sqlx.go:27:15:27:23 | untrusted | +| sqlx.go:28:16:28:24 | untrusted | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.go index e4e8d43395b..edc29c4d4ee 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.go @@ -12,19 +12,19 @@ func main() { db := sqlx.DB{} untrusted := getUntrustedString() - db.Select(nil, untrusted) // $ querystring=untrusted - db.Get(nil, untrusted) // $ querystring=untrusted - db.MustExec(untrusted) // $ querystring=untrusted - db.Queryx(untrusted) // $ querystring=untrusted - db.NamedExec(untrusted, nil) // $ querystring=untrusted - db.NamedQuery(untrusted, nil) // $ querystring=untrusted + db.Select(nil, untrusted) + db.Get(nil, untrusted) + db.MustExec(untrusted) + db.Queryx(untrusted) + db.NamedExec(untrusted, nil) + db.NamedQuery(untrusted, nil) tx := sqlx.Tx{} - tx.Select(nil, untrusted) // $ querystring=untrusted - tx.Get(nil, untrusted) // $ querystring=untrusted - tx.MustExec(untrusted) // $ querystring=untrusted - tx.Queryx(untrusted) // $ querystring=untrusted - tx.NamedExec(untrusted, nil) // $ querystring=untrusted - tx.NamedQuery(untrusted, nil) // $ querystring=untrusted + tx.Select(nil, untrusted) + tx.Get(nil, untrusted) + tx.MustExec(untrusted) + tx.Queryx(untrusted) + tx.NamedExec(untrusted, nil) + tx.NamedQuery(untrusted, nil) } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.ql new file mode 100644 index 00000000000..7b56fd97441 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.ql @@ -0,0 +1,4 @@ +import go + +from SQL::QueryString qs +select qs diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/QueryString.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/QueryString.expected deleted file mode 100644 index 105b7026d0c..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/QueryString.expected +++ /dev/null @@ -1,3 +0,0 @@ -failures -invalidModelRow -testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/QueryString.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/QueryString.ql deleted file mode 100644 index eeb43a82fad..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/QueryString.ql +++ /dev/null @@ -1,60 +0,0 @@ -import go -import semmle.go.dataflow.ExternalFlow -import ModelValidation -import TestUtilities.InlineExpectationsTest - -module SqlTest implements TestSig { - string getARelevantTag() { result = "query" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "query" and - exists(SQL::Query q, SQL::QueryString qs | qs = q.getAQueryString() | - q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = q.toString() and - value = qs.toString() - ) - } -} - -module QueryString implements TestSig { - string getARelevantTag() { result = "querystring" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "querystring" and - element = "" and - exists(SQL::QueryString qs | not exists(SQL::Query q | qs = q.getAQueryString()) | - qs.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - value = qs.toString() - ) - } -} - -module Config implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - - predicate isSink(DataFlow::Node n) { - n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() - } -} - -module Flow = TaintTracking::Global; - -module TaintFlow implements TestSig { - string getARelevantTag() { result = "flowfrom" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "flowfrom" and - element = "" and - exists(DataFlow::Node fromNode, DataFlow::Node toNode | - toNode - .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - Flow::flow(fromNode, toNode) and - value = fromNode.asExpr().(StringLit).getValue() - ) - } -} - -import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/bun.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/bun.go index 44a2e2c2fce..8ce4e5b0826 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/bun.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bun/bun.go @@ -22,28 +22,28 @@ func main() { panic(err) } db := bun.NewDB(sqlite, sqlitedialect.New()) - bun.NewRawQuery(db, untrusted) // $ querystring=untrusted + bun.NewRawQuery(db, untrusted) - db.ExecContext(ctx, untrusted) // $ querystring=untrusted - db.PrepareContext(ctx, untrusted) // $ querystring=untrusted - db.QueryContext(ctx, untrusted) // $ querystring=untrusted - db.QueryRowContext(ctx, untrusted) // $ querystring=untrusted + db.ExecContext(ctx, untrusted) + db.PrepareContext(ctx, untrusted) + db.QueryContext(ctx, untrusted) + db.QueryRowContext(ctx, untrusted) - db.Exec(untrusted) // $ querystring=untrusted - db.NewRaw(untrusted) // $ querystring=untrusted - db.Prepare(untrusted) // $ querystring=untrusted - db.Query(untrusted) // $ querystring=untrusted - db.QueryRow(untrusted) // $ querystring=untrusted - db.Raw(untrusted) // $ querystring=untrusted + db.Exec(untrusted) + db.NewRaw(untrusted) + db.Prepare(untrusted) + db.Query(untrusted) + db.QueryRow(untrusted) + db.Raw(untrusted) - db.NewSelect().ColumnExpr(untrusted) // $ querystring=untrusted - db.NewSelect().DistinctOn(untrusted) // $ querystring=untrusted - db.NewSelect().For(untrusted) // $ querystring=untrusted - db.NewSelect().GroupExpr(untrusted) // $ querystring=untrusted - db.NewSelect().Having(untrusted) // $ querystring=untrusted - db.NewSelect().ModelTableExpr(untrusted) // $ querystring=untrusted - db.NewSelect().OrderExpr(untrusted) // $ querystring=untrusted - db.NewSelect().TableExpr(untrusted) // $ querystring=untrusted - db.NewSelect().Where(untrusted) // $ querystring=untrusted - db.NewSelect().WhereOr(untrusted) // $ querystring=untrusted + db.NewSelect().ColumnExpr(untrusted) + db.NewSelect().DistinctOn(untrusted) + db.NewSelect().For(untrusted) + db.NewSelect().GroupExpr(untrusted) + db.NewSelect().Having(untrusted) + db.NewSelect().ModelTableExpr(untrusted) + db.NewSelect().OrderExpr(untrusted) + db.NewSelect().TableExpr(untrusted) + db.NewSelect().Where(untrusted) + db.NewSelect().WhereOr(untrusted) } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/QueryString.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/QueryString.expected deleted file mode 100644 index db33d6d2504..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/QueryString.expected +++ /dev/null @@ -1,3 +0,0 @@ -testFailures -invalidModelRow -failures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/QueryString.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/QueryString.ql deleted file mode 100644 index eeb43a82fad..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/QueryString.ql +++ /dev/null @@ -1,60 +0,0 @@ -import go -import semmle.go.dataflow.ExternalFlow -import ModelValidation -import TestUtilities.InlineExpectationsTest - -module SqlTest implements TestSig { - string getARelevantTag() { result = "query" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "query" and - exists(SQL::Query q, SQL::QueryString qs | qs = q.getAQueryString() | - q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = q.toString() and - value = qs.toString() - ) - } -} - -module QueryString implements TestSig { - string getARelevantTag() { result = "querystring" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "querystring" and - element = "" and - exists(SQL::QueryString qs | not exists(SQL::Query q | qs = q.getAQueryString()) | - qs.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - value = qs.toString() - ) - } -} - -module Config implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - - predicate isSink(DataFlow::Node n) { - n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() - } -} - -module Flow = TaintTracking::Global; - -module TaintFlow implements TestSig { - string getARelevantTag() { result = "flowfrom" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "flowfrom" and - element = "" and - exists(DataFlow::Node fromNode, DataFlow::Node toNode | - toNode - .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - Flow::flow(fromNode, toNode) and - value = fromNode.asExpr().(StringLit).getValue() - ) - } -} - -import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.expected new file mode 100644 index 00000000000..f4e3e4f15b0 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.expected @@ -0,0 +1,47 @@ +| gogf.go:12:9:12:11 | sql | +| gogf.go:13:11:13:13 | sql | +| gogf.go:14:13:14:15 | sql | +| gogf.go:15:13:15:15 | sql | +| gogf.go:16:11:16:13 | sql | +| gogf.go:17:13:17:15 | sql | +| gogf.go:18:12:18:14 | sql | +| gogf.go:19:10:19:12 | sql | +| gogf.go:20:8:20:10 | sql | +| gogf.go:21:17:21:19 | sql | +| gogf.go:22:19:22:21 | sql | +| gogf.go:23:20:23:22 | sql | +| gogf.go:24:23:24:25 | sql | +| gogf.go:25:21:25:23 | sql | +| gogf.go:26:23:26:25 | sql | +| gogf.go:27:22:27:24 | sql | +| gogf.go:28:24:28:26 | sql | +| gogf.go:32:9:32:11 | sql | +| gogf.go:33:11:33:13 | sql | +| gogf.go:34:13:34:15 | sql | +| gogf.go:35:13:35:15 | sql | +| gogf.go:36:11:36:13 | sql | +| gogf.go:37:13:37:15 | sql | +| gogf.go:38:12:38:14 | sql | +| gogf.go:39:10:39:12 | sql | +| gogf.go:40:8:40:10 | sql | +| gogf.go:41:17:41:19 | sql | +| gogf.go:42:23:42:25 | sql | +| gogf.go:43:21:43:23 | sql | +| gogf.go:44:23:44:25 | sql | +| gogf.go:45:22:45:24 | sql | +| gogf.go:46:24:46:26 | sql | +| gogf.go:51:9:51:11 | sql | +| gogf.go:52:11:52:13 | sql | +| gogf.go:53:13:53:15 | sql | +| gogf.go:54:13:54:15 | sql | +| gogf.go:55:11:55:13 | sql | +| gogf.go:56:13:56:15 | sql | +| gogf.go:57:12:57:14 | sql | +| gogf.go:58:10:58:12 | sql | +| gogf.go:59:8:59:10 | sql | +| gogf.go:60:17:60:19 | sql | +| gogf.go:61:23:61:25 | sql | +| gogf.go:62:21:62:23 | sql | +| gogf.go:63:23:63:25 | sql | +| gogf.go:64:22:64:24 | sql | +| gogf.go:65:24:65:26 | sql | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.go index e2db8016cf0..d0eceaf862c 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.go @@ -4,13 +4,11 @@ package main //go:generate depstubber -vendor github.com/gogf/gf/database/gdb DB,Core,TX "" import ( - "context" - "github.com/gogf/gf/database/gdb" "github.com/gogf/gf/frame/g" ) -func gogfCoreTest(sql string, c *gdb.Core, ctx context.Context) { +func gogfCoreTest(sql string, c *gdb.Core) { c.Exec(sql, nil) // $ querystring=sql c.GetAll(sql, nil) // $ querystring=sql c.GetArray(sql, nil) // $ querystring=sql @@ -23,14 +21,14 @@ func gogfCoreTest(sql string, c *gdb.Core, ctx context.Context) { c.GetScan(nil, sql, nil) // $ querystring=sql c.GetStruct(nil, sql, nil) // $ querystring=sql c.GetStructs(nil, sql, nil) // $ querystring=sql - c.DoCommit(ctx, nil, sql, nil) // $ querystring=sql - c.DoExec(ctx, nil, sql, nil) // $ querystring=sql - c.DoGetAll(ctx, nil, sql, nil) // $ querystring=sql - c.DoQuery(ctx, nil, sql, nil) // $ querystring=sql - c.DoPrepare(ctx, nil, sql) // $ querystring=sql + c.DoCommit(nil, nil, sql, nil) // $ querystring=sql + c.DoExec(nil, nil, sql, nil) // $ querystring=sql + c.DoGetAll(nil, nil, sql, nil) // $ querystring=sql + c.DoQuery(nil, nil, sql, nil) // $ querystring=sql + c.DoPrepare(nil, nil, sql) // $ querystring=sql } -func gogfDbtest(sql string, c gdb.DB, ctx context.Context) { +func gogfDbtest(sql string, c gdb.DB) { c.Exec(sql, nil) // $ querystring=sql c.GetAll(sql, nil) // $ querystring=sql c.GetArray(sql, nil) // $ querystring=sql @@ -41,14 +39,14 @@ func gogfDbtest(sql string, c gdb.DB, ctx context.Context) { c.Query(sql, nil) // $ querystring=sql c.Raw(sql, nil) // $ querystring=sql c.GetScan(nil, sql, nil) // $ querystring=sql - c.DoCommit(ctx, nil, sql, nil) // $ querystring=sql - c.DoExec(ctx, nil, sql, nil) // $ querystring=sql - c.DoGetAll(ctx, nil, sql, nil) // $ querystring=sql - c.DoQuery(ctx, nil, sql, nil) // $ querystring=sql - c.DoPrepare(ctx, nil, sql) // $ querystring=sql + c.DoCommit(nil, nil, sql, nil) // $ querystring=sql + c.DoExec(nil, nil, sql, nil) // $ querystring=sql + c.DoGetAll(nil, nil, sql, nil) // $ querystring=sql + c.DoQuery(nil, nil, sql, nil) // $ querystring=sql + c.DoPrepare(nil, nil, sql) // $ querystring=sql } -func gogfGTest(sql string, ctx context.Context) { +func gogfGTest(sql string) { c := g.DB("ad") c.Exec(sql, nil) // $ querystring=sql c.GetAll(sql, nil) // $ querystring=sql @@ -60,11 +58,11 @@ func gogfGTest(sql string, ctx context.Context) { c.Query(sql, nil) // $ querystring=sql c.Raw(sql, nil) // $ querystring=sql c.GetScan(nil, sql, nil) // $ querystring=sql - c.DoCommit(ctx, nil, sql, nil) // $ querystring=sql - c.DoExec(ctx, nil, sql, nil) // $ querystring=sql - c.DoGetAll(ctx, nil, sql, nil) // $ querystring=sql - c.DoQuery(ctx, nil, sql, nil) // $ querystring=sql - c.DoPrepare(ctx, nil, sql) // $ querystring=sql + c.DoCommit(nil, nil, sql, nil) // $ querystring=sql + c.DoExec(nil, nil, sql, nil) // $ querystring=sql + c.DoGetAll(nil, nil, sql, nil) // $ querystring=sql + c.DoQuery(nil, nil, sql, nil) // $ querystring=sql + c.DoPrepare(nil, nil, sql) // $ querystring=sql } func main() { diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.ql new file mode 100644 index 00000000000..7b56fd97441 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.ql @@ -0,0 +1,4 @@ +import go + +from SQL::QueryString qs +select qs diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/QueryString.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/QueryString.expected deleted file mode 100644 index db33d6d2504..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/QueryString.expected +++ /dev/null @@ -1,3 +0,0 @@ -testFailures -invalidModelRow -failures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/QueryString.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/QueryString.ql deleted file mode 100644 index eeb43a82fad..00000000000 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/QueryString.ql +++ /dev/null @@ -1,60 +0,0 @@ -import go -import semmle.go.dataflow.ExternalFlow -import ModelValidation -import TestUtilities.InlineExpectationsTest - -module SqlTest implements TestSig { - string getARelevantTag() { result = "query" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "query" and - exists(SQL::Query q, SQL::QueryString qs | qs = q.getAQueryString() | - q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = q.toString() and - value = qs.toString() - ) - } -} - -module QueryString implements TestSig { - string getARelevantTag() { result = "querystring" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "querystring" and - element = "" and - exists(SQL::QueryString qs | not exists(SQL::Query q | qs = q.getAQueryString()) | - qs.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - value = qs.toString() - ) - } -} - -module Config implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - - predicate isSink(DataFlow::Node n) { - n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() - } -} - -module Flow = TaintTracking::Global; - -module TaintFlow implements TestSig { - string getARelevantTag() { result = "flowfrom" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "flowfrom" and - element = "" and - exists(DataFlow::Node fromNode, DataFlow::Node toNode | - toNode - .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - Flow::flow(fromNode, toNode) and - value = fromNode.asExpr().(StringLit).getValue() - ) - } -} - -import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/go.mod b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/go.mod index 826ed0eb1c0..1f243775658 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/go.mod +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/go.mod @@ -2,4 +2,4 @@ module main go 1.18 -require github.com/rqlite/gorqlite v0.0.0-20240808172217-12ae7d03ef19 +require github.com/rqlite/gorqlite v0.0.0-20220528150909-c4e99ae96be6 diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.expected new file mode 100644 index 00000000000..cbd8166ea5e --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.expected @@ -0,0 +1,6 @@ +| gorqlite.go:11:13:11:16 | sqls | +| gorqlite.go:12:13:12:16 | sqls | +| gorqlite.go:13:13:13:16 | sqls | +| gorqlite.go:14:16:14:18 | sql | +| gorqlite.go:15:16:15:18 | sql | +| gorqlite.go:16:16:16:18 | sql | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.go index ebd6e5fd9f3..9b60c6684e6 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.go @@ -1,49 +1,20 @@ package main -//go:generate depstubber -vendor github.com/rqlite/gorqlite Connection,ParameterizedStatement Open +//go:generate depstubber -vendor github.com/rqlite/gorqlite Connection Open import ( - "context" - "github.com/rqlite/gorqlite" ) -func gorqlitetest(sql string, sqls []string, param_sql gorqlite.ParameterizedStatement, param_sqls []gorqlite.ParameterizedStatement, ctx context.Context) { +func gorqlitetest(sql string, sqls []string) { conn, _ := gorqlite.Open("dbUrl") - - conn.Query(sqls) // $ querystring=sqls - conn.Queue(sqls) // $ querystring=sqls - conn.Write(sqls) // $ querystring=sqls - + conn.Query(sqls) // $ querystring=sqls + conn.Queue(sqls) // $ querystring=sqls + conn.Write(sqls) // $ querystring=sqls conn.QueryOne(sql) // $ querystring=sql conn.QueueOne(sql) // $ querystring=sql conn.WriteOne(sql) // $ querystring=sql - - conn.QueryParameterized(param_sqls) // $ querystring=param_sqls - conn.QueueParameterized(param_sqls) // $ querystring=param_sqls - conn.WriteParameterized(param_sqls) // $ querystring=param_sqls - - conn.QueryOneParameterized(param_sql) // $ querystring=param_sql - conn.QueueOneParameterized(param_sql) // $ querystring=param_sql - conn.WriteOneParameterized(param_sql) // $ querystring=param_sql - - conn.QueryContext(ctx, sqls) // $ querystring=sqls - conn.QueueContext(ctx, sqls) // $ querystring=sqls - conn.WriteContext(ctx, sqls) // $ querystring=sqls - - conn.QueryOneContext(ctx, sql) // $ querystring=sql - conn.QueueOneContext(ctx, sql) // $ querystring=sql - conn.WriteOneContext(ctx, sql) // $ querystring=sql - - conn.QueryParameterizedContext(ctx, param_sqls) // $ querystring=param_sqls - conn.QueueParameterizedContext(ctx, param_sqls) // $ querystring=param_sqls - conn.WriteParameterizedContext(ctx, param_sqls) // $ querystring=param_sqls - - conn.QueryOneParameterizedContext(ctx, param_sql) // $ querystring=param_sql - conn.QueueOneParameterizedContext(ctx, param_sql) // $ querystring=param_sql - conn.WriteOneParameterizedContext(ctx, param_sql) // $ querystring=param_sql } - func main() { return } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.ql new file mode 100644 index 00000000000..7b56fd97441 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/gorqlite.ql @@ -0,0 +1,4 @@ +import go + +from SQL::QueryString qs +select qs diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/vendor/github.com/rqlite/gorqlite/stub.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/vendor/github.com/rqlite/gorqlite/stub.go index 0572097582e..f6f4ca18ec1 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/vendor/github.com/rqlite/gorqlite/stub.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/vendor/github.com/rqlite/gorqlite/stub.go @@ -2,15 +2,11 @@ // This is a simple stub for github.com/rqlite/gorqlite, strictly for use in testing. // See the LICENSE file for information about the licensing of the original library. -// Source: github.com/rqlite/gorqlite (exports: Connection,ParameterizedStatement; functions: Open) +// Source: github.com/rqlite/gorqlite (exports: Connection; functions: Open) // Package gorqlite is a stub of github.com/rqlite/gorqlite, generated by depstubber. package gorqlite -import ( - context "context" -) - type Connection struct { ID string } @@ -33,83 +29,19 @@ func (_ *Connection) Query(_ []string) ([]QueryResult, error) { return nil, nil } -func (_ *Connection) QueryContext(_ context.Context, _ []string) ([]QueryResult, error) { - return nil, nil -} - func (_ *Connection) QueryOne(_ string) (QueryResult, error) { return QueryResult{}, nil } -func (_ *Connection) QueryOneContext(_ context.Context, _ string) (QueryResult, error) { - return QueryResult{}, nil -} - -func (_ *Connection) QueryOneParameterized(_ ParameterizedStatement) (QueryResult, error) { - return QueryResult{}, nil -} - -func (_ *Connection) QueryOneParameterizedContext(_ context.Context, _ ParameterizedStatement) (QueryResult, error) { - return QueryResult{}, nil -} - -func (_ *Connection) QueryParameterized(_ []ParameterizedStatement) ([]QueryResult, error) { - return nil, nil -} - -func (_ *Connection) QueryParameterizedContext(_ context.Context, _ []ParameterizedStatement) ([]QueryResult, error) { - return nil, nil -} - func (_ *Connection) Queue(_ []string) (int64, error) { return 0, nil } -func (_ *Connection) QueueContext(_ context.Context, _ []string) (int64, error) { - return 0, nil -} - func (_ *Connection) QueueOne(_ string) (int64, error) { return 0, nil } -func (_ *Connection) QueueOneContext(_ context.Context, _ string) (int64, error) { - return 0, nil -} - -func (_ *Connection) QueueOneParameterized(_ ParameterizedStatement) (int64, error) { - return 0, nil -} - -func (_ *Connection) QueueOneParameterizedContext(_ context.Context, _ ParameterizedStatement) (int64, error) { - return 0, nil -} - -func (_ *Connection) QueueParameterized(_ []ParameterizedStatement) (int64, error) { - return 0, nil -} - -func (_ *Connection) QueueParameterizedContext(_ context.Context, _ []ParameterizedStatement) (int64, error) { - return 0, nil -} - -func (_ *Connection) Request(_ []string) ([]RequestResult, error) { - return nil, nil -} - -func (_ *Connection) RequestContext(_ context.Context, _ []string) ([]RequestResult, error) { - return nil, nil -} - -func (_ *Connection) RequestParameterized(_ []ParameterizedStatement) ([]RequestResult, error) { - return nil, nil -} - -func (_ *Connection) RequestParameterizedContext(_ context.Context, _ []ParameterizedStatement) ([]RequestResult, error) { - return nil, nil -} - -func (_ *Connection) SetConsistencyLevel(_ interface{}) error { +func (_ *Connection) SetConsistencyLevel(_ string) error { return nil } @@ -121,41 +53,12 @@ func (_ *Connection) Write(_ []string) ([]WriteResult, error) { return nil, nil } -func (_ *Connection) WriteContext(_ context.Context, _ []string) ([]WriteResult, error) { - return nil, nil -} - func (_ *Connection) WriteOne(_ string) (WriteResult, error) { return WriteResult{}, nil } -func (_ *Connection) WriteOneContext(_ context.Context, _ string) (WriteResult, error) { - return WriteResult{}, nil -} - -func (_ *Connection) WriteOneParameterized(_ ParameterizedStatement) (WriteResult, error) { - return WriteResult{}, nil -} - -func (_ *Connection) WriteOneParameterizedContext(_ context.Context, _ ParameterizedStatement) (WriteResult, error) { - return WriteResult{}, nil -} - -func (_ *Connection) WriteParameterized(_ []ParameterizedStatement) ([]WriteResult, error) { - return nil, nil -} - -func (_ *Connection) WriteParameterizedContext(_ context.Context, _ []ParameterizedStatement) ([]WriteResult, error) { - return nil, nil -} - -func Open(_ string) (*Connection, error) { - return nil, nil -} - -type ParameterizedStatement struct { - Query string - Arguments []interface{} +func Open(_ string) (Connection, error) { + return Connection{}, nil } type QueryResult struct { @@ -187,20 +90,10 @@ func (_ *QueryResult) Scan(_ ...interface{}) error { return nil } -func (_ *QueryResult) Slice() ([]interface{}, error) { - return nil, nil -} - func (_ *QueryResult) Types() []string { return nil } -type RequestResult struct { - Err error - Query *QueryResult - Write *WriteResult -} - type WriteResult struct { Err error Timing float64 diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/vendor/modules.txt b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/vendor/modules.txt index dafb7c6d1a9..f5e5b9989ed 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/vendor/modules.txt +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/gorqlite/vendor/modules.txt @@ -1,3 +1,3 @@ -# github.com/rqlite/gorqlite v0.0.0-20240808172217-12ae7d03ef19 +# github.com/rqlite/gorqlite v0.0.0-20220528150909-c4e99ae96be6 ## explicit github.com/rqlite/gorqlite diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/squirrel.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/squirrel.go index 3629b8087cb..15b687c7ad1 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/squirrel.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/squirrel.go @@ -10,35 +10,35 @@ func squirrelTest(querypart string) { squirrel.Expr(querypart) // $ querystring=querypart deleteBuilder := squirrel.Delete(querypart) // $ querystring=querypart deleteBuilder.From(querypart) // $ querystring=querypart - deleteBuilder.OrderBy(querypart) // $ querystring=querypart + deleteBuilder.OrderBy(querypart) // $ querystring=[]type{args} deleteBuilder.Prefix(querypart) // $ querystring=querypart deleteBuilder.Suffix(querypart) // $ querystring=querypart deleteBuilder.Where(querypart) // $ querystring=querypart insertBuilder := squirrel.Insert(querypart) // $ querystring=querypart - insertBuilder.Columns(querypart) // $ querystring=querypart - insertBuilder.Options(querypart) // $ querystring=querypart + insertBuilder.Columns(querypart) // $ querystring=[]type{args} + insertBuilder.Options(querypart) // $ querystring=[]type{args} insertBuilder.Prefix(querypart) // $ querystring=querypart insertBuilder.Suffix(querypart) // $ querystring=querypart insertBuilder.Into(querypart) // $ querystring=querypart - selectBuilder := squirrel.Select(querypart) // $ querystring=querypart - selectBuilder.Columns(querypart) // $ querystring=querypart + selectBuilder := squirrel.Select(querypart) // $ querystring=[]type{args} + selectBuilder.Columns(querypart) // $ querystring=[]type{args} selectBuilder.From(querypart) // $ querystring=querypart - selectBuilder.Options(querypart) // $ querystring=querypart - selectBuilder.OrderBy(querypart) // $ querystring=querypart + selectBuilder.Options(querypart) // $ querystring=[]type{args} + selectBuilder.OrderBy(querypart) // $ querystring=[]type{args} selectBuilder.Prefix(querypart) // $ querystring=querypart selectBuilder.Suffix(querypart) // $ querystring=querypart selectBuilder.Where(querypart) // $ querystring=querypart selectBuilder.CrossJoin(querypart) // $ querystring=querypart - selectBuilder.GroupBy(querypart) // $ querystring=querypart + selectBuilder.GroupBy(querypart) // $ querystring=[]type{args} selectBuilder.InnerJoin(querypart) // $ querystring=querypart selectBuilder.LeftJoin(querypart) // $ querystring=querypart selectBuilder.RightJoin(querypart) // $ querystring=querypart updateBuilder := squirrel.Update(querypart) // $ querystring=querypart updateBuilder.From(querypart) // $ querystring=querypart - updateBuilder.OrderBy(querypart) // $ querystring=querypart + updateBuilder.OrderBy(querypart) // $ querystring=[]type{args} updateBuilder.Prefix(querypart) // $ querystring=querypart updateBuilder.Suffix(querypart) // $ querystring=querypart updateBuilder.Where(querypart) // $ querystring=querypart diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected index ac8a66d1e2a..93ad219ccfc 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected @@ -2,7 +2,6 @@ | server/main.go:30:38:30:48 | selection of Text | rpc/notes/service.twirp.go:538:25:538:32 | selection of Body | server/main.go:30:38:30:48 | selection of Text | The $@ of this request depends on a $@. | server/main.go:30:38:30:48 | selection of Text | URL | rpc/notes/service.twirp.go:538:25:538:32 | selection of Body | user-provided value | | server/main.go:30:38:30:48 | selection of Text | server/main.go:19:56:19:61 | definition of params | server/main.go:30:38:30:48 | selection of Text | The $@ of this request depends on a $@. | server/main.go:30:38:30:48 | selection of Text | URL | server/main.go:19:56:19:61 | definition of params | user-provided value | edges -| client/main.go:16:35:16:78 | &... | client/main.go:16:35:16:78 | &... | provenance | | | client/main.go:16:35:16:78 | &... | server/main.go:19:56:19:61 | definition of params | provenance | | | rpc/notes/service.twirp.go:473:6:473:13 | definition of typedReq | rpc/notes/service.twirp.go:477:44:477:51 | typedReq | provenance | | | rpc/notes/service.twirp.go:477:44:477:51 | typedReq | server/main.go:19:56:19:61 | definition of params | provenance | | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected index cc487a014a0..7cd78374940 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected @@ -50,8 +50,6 @@ edges | test.go:43:2:43:43 | ... := ...[0] | test.go:44:24:44:34 | taintedNode | provenance | | | test.go:43:31:43:42 | selection of Body | test.go:43:2:43:43 | ... := ...[0] | provenance | Src:MaD:15 MaD:3 | | test.go:44:24:44:34 | taintedNode | test.go:42:6:42:14 | definition of cleanNode | provenance | MaD:8 | -| test.go:45:22:45:31 | &... | test.go:45:22:45:31 | &... | provenance | | -| test.go:45:22:45:31 | &... | test.go:45:22:45:31 | &... | provenance | | | test.go:45:22:45:31 | &... | test.go:45:23:45:31 | cleanNode | provenance | | | test.go:45:22:45:31 | &... [pointer] | test.go:45:22:45:31 | &... | provenance | | | test.go:45:22:45:31 | &... [pointer] | test.go:45:22:45:31 | &... | provenance | | @@ -63,8 +61,6 @@ edges | test.go:48:2:48:44 | ... := ...[0] | test.go:49:26:49:37 | taintedNode2 | provenance | | | test.go:48:32:48:43 | selection of Body | test.go:48:2:48:44 | ... := ...[0] | provenance | Src:MaD:15 MaD:3 | | test.go:49:26:49:37 | taintedNode2 | test.go:47:6:47:15 | definition of cleanNode2 | provenance | MaD:9 | -| test.go:50:22:50:32 | &... | test.go:50:22:50:32 | &... | provenance | | -| test.go:50:22:50:32 | &... | test.go:50:22:50:32 | &... | provenance | | | test.go:50:22:50:32 | &... | test.go:50:23:50:32 | cleanNode2 | provenance | | | test.go:50:22:50:32 | &... [pointer] | test.go:50:22:50:32 | &... | provenance | | | test.go:50:22:50:32 | &... [pointer] | test.go:50:22:50:32 | &... | provenance | | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected index b7a66a6a903..446695b259b 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected @@ -1,12 +1,11 @@ #select | test.go:57:11:57:41 | call to EscapeString | test.go:56:2:56:42 | ... := ...[0] | test.go:57:11:57:41 | call to EscapeString | This query depends on a $@. | test.go:56:2:56:42 | ... := ...[0] | user-provided value | edges -| test.go:56:2:56:42 | ... := ...[0] | test.go:57:29:57:40 | selection of Value | provenance | Src:MaD:3 | -| test.go:57:29:57:40 | selection of Value | test.go:57:11:57:41 | call to EscapeString | provenance | MaD:2 Sink:MaD:1 | +| test.go:56:2:56:42 | ... := ...[0] | test.go:57:29:57:40 | selection of Value | provenance | Src:MaD:2 | +| test.go:57:29:57:40 | selection of Value | test.go:57:11:57:41 | call to EscapeString | provenance | MaD:1 | models -| 1 | Sink: database/sql; DB; false; Query; ; ; Argument[0]; sql-injection; manual | -| 2 | Summary: golang.org/x/net/html; ; false; EscapeString; ; ; Argument[0]; ReturnValue; taint; manual | -| 3 | Source: net/http; Request; true; Cookie; ; ; ReturnValue[0]; remote; manual | +| 1 | Summary: golang.org/x/net/html; ; false; EscapeString; ; ; Argument[0]; ReturnValue; taint; manual | +| 2 | Source: net/http; Request; true; Cookie; ; ; ReturnValue[0]; remote; manual | nodes | test.go:56:2:56:42 | ... := ...[0] | semmle.label | ... := ...[0] | | test.go:57:11:57:41 | call to EscapeString | semmle.label | call to EscapeString | diff --git a/go/ql/test/query-tests/Diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected b/go/ql/test/query-tests/Diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected index 909c0a71ede..19c2ad21db8 100644 --- a/go/ql/test/query-tests/Diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected +++ b/go/ql/test/query-tests/Diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected @@ -1,5 +1,5 @@ | -:0:0:0:0 | malformed import path "github.com/github/codeql-go/ql/test/query-tests/Diagnostics/invalid{": invalid char '{' | -| -:0:0:0:0 | package ; expected main | +| -:0:0:0:0 | package ; expected package main | | bad.go:3:1:3:1 | expected 'package', found avvu | | bad.go:3:1:3:1 | expected 'package', found avvu | | bad.go:3:5:3:5 | expected 'IDENT', found newline | diff --git a/go/ql/test/query-tests/Diagnostics/ExtractionErrors.expected b/go/ql/test/query-tests/Diagnostics/ExtractionErrors.expected index c7695f79dca..b3a9e8631f0 100644 --- a/go/ql/test/query-tests/Diagnostics/ExtractionErrors.expected +++ b/go/ql/test/query-tests/Diagnostics/ExtractionErrors.expected @@ -4,4 +4,4 @@ | Extraction failed with error expected 'IDENT', found newline | 2 | | Extraction failed with error expected 'package', found avvu | 2 | | Extraction failed with error malformed import path "github.com/github/codeql-go/ql/test/query-tests/Diagnostics/invalid{": invalid char '{' | 2 | -| Extraction failed with error package ; expected main | 2 | +| Extraction failed with error package ; expected package main | 2 | diff --git a/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected b/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected index b1c1822ca70..faba4f42251 100644 --- a/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected +++ b/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected @@ -3,7 +3,6 @@ edges | StoredCommand.go:11:2:11:27 | ... := ...[0] | StoredCommand.go:13:2:13:5 | rows | provenance | | | StoredCommand.go:13:2:13:5 | rows | StoredCommand.go:13:12:13:19 | &... | provenance | FunctionModel | -| StoredCommand.go:13:12:13:19 | &... | StoredCommand.go:13:12:13:19 | &... | provenance | | | StoredCommand.go:13:12:13:19 | &... | StoredCommand.go:14:22:14:28 | cmdName | provenance | Sink:MaD:1 | models | 1 | Sink: os/exec; ; false; Command; ; ; Argument[0]; command-injection; manual | diff --git a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected index dfbfac29d86..efe98650a4e 100644 --- a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected @@ -2,7 +2,6 @@ edges | StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | provenance | | | stored.go:18:3:18:28 | ... := ...[0] | stored.go:25:14:25:17 | rows | provenance | | | stored.go:25:14:25:17 | rows | stored.go:25:29:25:33 | &... | provenance | FunctionModel | -| stored.go:25:29:25:33 | &... | stored.go:25:29:25:33 | &... | provenance | | | stored.go:25:29:25:33 | &... | stored.go:30:22:30:25 | name | provenance | | | stored.go:59:30:59:33 | definition of path | stored.go:61:22:61:25 | path | provenance | | nodes diff --git a/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected b/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected index 2741f6545e9..0da4f893d87 100644 --- a/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected @@ -25,53 +25,53 @@ | mongoDB.go:80:22:80:27 | filter | mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:80:22:80:27 | filter | This query depends on a $@. | mongoDB.go:40:20:40:30 | call to Referer | user-provided value | | mongoDB.go:81:18:81:25 | pipeline | mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:81:18:81:25 | pipeline | This query depends on a $@. | mongoDB.go:40:20:40:30 | call to Referer | user-provided value | edges -| SqlInjection.go:10:7:11:30 | []type{args} [array] | SqlInjection.go:10:7:11:30 | call to Sprintf | provenance | MaD:4 | -| SqlInjection.go:10:7:11:30 | call to Sprintf | SqlInjection.go:12:11:12:11 | q | provenance | Sink:MaD:1 | -| SqlInjection.go:11:3:11:9 | selection of URL | SqlInjection.go:11:3:11:17 | call to Query | provenance | Src:MaD:25 MaD:26 | +| SqlInjection.go:10:7:11:30 | []type{args} [array] | SqlInjection.go:10:7:11:30 | call to Sprintf | provenance | MaD:2 | +| SqlInjection.go:10:7:11:30 | call to Sprintf | SqlInjection.go:12:11:12:11 | q | provenance | | +| SqlInjection.go:11:3:11:9 | selection of URL | SqlInjection.go:11:3:11:17 | call to Query | provenance | Src:MaD:9 MaD:10 | | SqlInjection.go:11:3:11:17 | call to Query | SqlInjection.go:11:3:11:29 | index expression | provenance | | | SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | []type{args} [array] | provenance | | | SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | call to Sprintf | provenance | FunctionModel | | issue48.go:17:2:17:33 | ... := ...[0] | issue48.go:18:17:18:17 | b | provenance | | -| issue48.go:17:25:17:32 | selection of Body | issue48.go:17:2:17:33 | ... := ...[0] | provenance | Src:MaD:22 MaD:19 | -| issue48.go:18:17:18:17 | b | issue48.go:18:20:18:39 | &... | provenance | MaD:3 | +| issue48.go:17:25:17:32 | selection of Body | issue48.go:17:2:17:33 | ... := ...[0] | provenance | Src:MaD:6 MaD:3 | +| issue48.go:18:17:18:17 | b | issue48.go:18:20:18:39 | &... | provenance | MaD:1 | | issue48.go:18:20:18:39 | &... | issue48.go:21:3:21:33 | index expression | provenance | | -| issue48.go:20:8:21:34 | []type{args} [array] | issue48.go:20:8:21:34 | call to Sprintf | provenance | MaD:4 | -| issue48.go:20:8:21:34 | call to Sprintf | issue48.go:22:11:22:12 | q3 | provenance | Sink:MaD:1 | +| issue48.go:20:8:21:34 | []type{args} [array] | issue48.go:20:8:21:34 | call to Sprintf | provenance | MaD:2 | +| issue48.go:20:8:21:34 | call to Sprintf | issue48.go:22:11:22:12 | q3 | provenance | | | issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | []type{args} [array] | provenance | | | issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | call to Sprintf | provenance | FunctionModel | | issue48.go:27:2:27:34 | ... := ...[0] | issue48.go:28:17:28:18 | b2 | provenance | | -| issue48.go:27:26:27:33 | selection of Body | issue48.go:27:2:27:34 | ... := ...[0] | provenance | Src:MaD:22 MaD:19 | -| issue48.go:28:17:28:18 | b2 | issue48.go:28:21:28:41 | &... | provenance | MaD:3 | +| issue48.go:27:26:27:33 | selection of Body | issue48.go:27:2:27:34 | ... := ...[0] | provenance | Src:MaD:6 MaD:3 | +| issue48.go:28:17:28:18 | b2 | issue48.go:28:21:28:41 | &... | provenance | MaD:1 | | issue48.go:28:21:28:41 | &... | issue48.go:31:3:31:31 | selection of Category | provenance | | -| issue48.go:30:8:31:32 | []type{args} [array] | issue48.go:30:8:31:32 | call to Sprintf | provenance | MaD:4 | -| issue48.go:30:8:31:32 | call to Sprintf | issue48.go:32:11:32:12 | q4 | provenance | Sink:MaD:1 | +| issue48.go:30:8:31:32 | []type{args} [array] | issue48.go:30:8:31:32 | call to Sprintf | provenance | MaD:2 | +| issue48.go:30:8:31:32 | call to Sprintf | issue48.go:32:11:32:12 | q4 | provenance | | | issue48.go:31:3:31:31 | selection of Category | issue48.go:30:8:31:32 | []type{args} [array] | provenance | | | issue48.go:31:3:31:31 | selection of Category | issue48.go:30:8:31:32 | call to Sprintf | provenance | FunctionModel | -| issue48.go:37:17:37:50 | type conversion | issue48.go:37:53:37:73 | &... | provenance | MaD:3 | -| issue48.go:37:24:37:30 | selection of URL | issue48.go:37:24:37:38 | call to Query | provenance | Src:MaD:25 MaD:26 | +| issue48.go:37:17:37:50 | type conversion | issue48.go:37:53:37:73 | &... | provenance | MaD:1 | +| issue48.go:37:24:37:30 | selection of URL | issue48.go:37:24:37:38 | call to Query | provenance | Src:MaD:9 MaD:10 | | issue48.go:37:24:37:38 | call to Query | issue48.go:37:17:37:50 | type conversion | provenance | | | issue48.go:37:53:37:73 | &... | issue48.go:40:3:40:31 | selection of Category | provenance | | -| issue48.go:39:8:40:32 | []type{args} [array] | issue48.go:39:8:40:32 | call to Sprintf | provenance | MaD:4 | -| issue48.go:39:8:40:32 | call to Sprintf | issue48.go:41:11:41:12 | q5 | provenance | Sink:MaD:1 | +| issue48.go:39:8:40:32 | []type{args} [array] | issue48.go:39:8:40:32 | call to Sprintf | provenance | MaD:2 | +| issue48.go:39:8:40:32 | call to Sprintf | issue48.go:41:11:41:12 | q5 | provenance | | | issue48.go:40:3:40:31 | selection of Category | issue48.go:39:8:40:32 | []type{args} [array] | provenance | | | issue48.go:40:3:40:31 | selection of Category | issue48.go:39:8:40:32 | call to Sprintf | provenance | FunctionModel | -| main.go:11:11:11:16 | selection of Form | main.go:11:11:11:28 | index expression | provenance | Src:MaD:23 Sink:MaD:1 | -| main.go:15:11:15:84 | []type{args} [array] | main.go:15:11:15:84 | call to Sprintf | provenance | MaD:4 Sink:MaD:2 | -| main.go:15:63:15:67 | selection of URL | main.go:15:63:15:75 | call to Query | provenance | Src:MaD:25 MaD:26 | +| main.go:11:11:11:16 | selection of Form | main.go:11:11:11:28 | index expression | provenance | Src:MaD:7 | +| main.go:15:11:15:84 | []type{args} [array] | main.go:15:11:15:84 | call to Sprintf | provenance | MaD:2 | +| main.go:15:63:15:67 | selection of URL | main.go:15:63:15:75 | call to Query | provenance | Src:MaD:9 MaD:10 | | main.go:15:63:15:75 | call to Query | main.go:15:63:15:83 | index expression | provenance | | | main.go:15:63:15:83 | index expression | main.go:15:11:15:84 | []type{args} [array] | provenance | | -| main.go:15:63:15:83 | index expression | main.go:15:11:15:84 | call to Sprintf | provenance | FunctionModel Sink:MaD:2 | -| main.go:16:11:16:85 | []type{args} [array] | main.go:16:11:16:85 | call to Sprintf | provenance | MaD:4 Sink:MaD:2 | -| main.go:16:63:16:70 | selection of Header | main.go:16:63:16:84 | call to Get | provenance | Src:MaD:24 MaD:20 | +| main.go:15:63:15:83 | index expression | main.go:15:11:15:84 | call to Sprintf | provenance | FunctionModel | +| main.go:16:11:16:85 | []type{args} [array] | main.go:16:11:16:85 | call to Sprintf | provenance | MaD:2 | +| main.go:16:63:16:70 | selection of Header | main.go:16:63:16:84 | call to Get | provenance | Src:MaD:8 MaD:4 | | main.go:16:63:16:84 | call to Get | main.go:16:11:16:85 | []type{args} [array] | provenance | | -| main.go:16:63:16:84 | call to Get | main.go:16:11:16:85 | call to Sprintf | provenance | FunctionModel Sink:MaD:2 | +| main.go:16:63:16:84 | call to Get | main.go:16:11:16:85 | call to Sprintf | provenance | FunctionModel | | main.go:28:17:31:2 | &... [pointer, Category] | main.go:34:3:34:13 | RequestData [pointer, Category] | provenance | | | main.go:28:18:31:2 | struct literal [Category] | main.go:28:17:31:2 | &... [pointer, Category] | provenance | | -| main.go:30:13:30:19 | selection of URL | main.go:30:13:30:27 | call to Query | provenance | Src:MaD:25 MaD:26 | +| main.go:30:13:30:19 | selection of URL | main.go:30:13:30:27 | call to Query | provenance | Src:MaD:9 MaD:10 | | main.go:30:13:30:27 | call to Query | main.go:30:13:30:39 | index expression | provenance | | | main.go:30:13:30:39 | index expression | main.go:28:18:31:2 | struct literal [Category] | provenance | | -| main.go:33:7:34:23 | []type{args} [array] | main.go:33:7:34:23 | call to Sprintf | provenance | MaD:4 | -| main.go:33:7:34:23 | call to Sprintf | main.go:35:11:35:11 | q | provenance | Sink:MaD:1 | +| main.go:33:7:34:23 | []type{args} [array] | main.go:33:7:34:23 | call to Sprintf | provenance | MaD:2 | +| main.go:33:7:34:23 | call to Sprintf | main.go:35:11:35:11 | q | provenance | | | main.go:34:3:34:13 | RequestData [pointer, Category] | main.go:34:3:34:13 | implicit dereference [Category] | provenance | | | main.go:34:3:34:13 | implicit dereference [Category] | main.go:34:3:34:22 | selection of Category | provenance | | | main.go:34:3:34:22 | selection of Category | main.go:33:7:34:23 | []type{args} [array] | provenance | | @@ -80,11 +80,11 @@ edges | main.go:39:2:39:12 | definition of RequestData [pointer, Category] | main.go:43:3:43:13 | RequestData [pointer, Category] | provenance | | | main.go:40:2:40:12 | RequestData [pointer, Category] | main.go:40:2:40:12 | implicit dereference [Category] | provenance | | | main.go:40:2:40:12 | implicit dereference [Category] | main.go:39:2:39:12 | definition of RequestData [pointer, Category] | provenance | | -| main.go:40:25:40:31 | selection of URL | main.go:40:25:40:39 | call to Query | provenance | Src:MaD:25 MaD:26 | +| main.go:40:25:40:31 | selection of URL | main.go:40:25:40:39 | call to Query | provenance | Src:MaD:9 MaD:10 | | main.go:40:25:40:39 | call to Query | main.go:40:25:40:51 | index expression | provenance | | | main.go:40:25:40:51 | index expression | main.go:40:2:40:12 | implicit dereference [Category] | provenance | | -| main.go:42:7:43:23 | []type{args} [array] | main.go:42:7:43:23 | call to Sprintf | provenance | MaD:4 | -| main.go:42:7:43:23 | call to Sprintf | main.go:44:11:44:11 | q | provenance | Sink:MaD:1 | +| main.go:42:7:43:23 | []type{args} [array] | main.go:42:7:43:23 | call to Sprintf | provenance | MaD:2 | +| main.go:42:7:43:23 | call to Sprintf | main.go:44:11:44:11 | q | provenance | | | main.go:43:3:43:13 | RequestData [pointer, Category] | main.go:43:3:43:13 | implicit dereference [Category] | provenance | | | main.go:43:3:43:13 | implicit dereference [Category] | main.go:43:3:43:22 | selection of Category | provenance | | | main.go:43:3:43:22 | selection of Category | main.go:42:7:43:23 | []type{args} [array] | provenance | | @@ -93,11 +93,11 @@ edges | main.go:48:2:48:12 | definition of RequestData [pointer, Category] | main.go:52:3:52:13 | RequestData [pointer, Category] | provenance | | | main.go:49:3:49:14 | star expression [Category] | main.go:48:2:48:12 | definition of RequestData [pointer, Category] | provenance | | | main.go:49:4:49:14 | RequestData [pointer, Category] | main.go:49:3:49:14 | star expression [Category] | provenance | | -| main.go:49:28:49:34 | selection of URL | main.go:49:28:49:42 | call to Query | provenance | Src:MaD:25 MaD:26 | +| main.go:49:28:49:34 | selection of URL | main.go:49:28:49:42 | call to Query | provenance | Src:MaD:9 MaD:10 | | main.go:49:28:49:42 | call to Query | main.go:49:28:49:54 | index expression | provenance | | | main.go:49:28:49:54 | index expression | main.go:49:3:49:14 | star expression [Category] | provenance | | -| main.go:51:7:52:23 | []type{args} [array] | main.go:51:7:52:23 | call to Sprintf | provenance | MaD:4 | -| main.go:51:7:52:23 | call to Sprintf | main.go:53:11:53:11 | q | provenance | Sink:MaD:1 | +| main.go:51:7:52:23 | []type{args} [array] | main.go:51:7:52:23 | call to Sprintf | provenance | MaD:2 | +| main.go:51:7:52:23 | call to Sprintf | main.go:53:11:53:11 | q | provenance | | | main.go:52:3:52:13 | RequestData [pointer, Category] | main.go:52:3:52:13 | implicit dereference [Category] | provenance | | | main.go:52:3:52:13 | implicit dereference [Category] | main.go:52:3:52:22 | selection of Category | provenance | | | main.go:52:3:52:22 | selection of Category | main.go:51:7:52:23 | []type{args} [array] | provenance | | @@ -106,60 +106,44 @@ edges | main.go:57:2:57:12 | definition of RequestData [pointer, Category] | main.go:61:5:61:15 | RequestData [pointer, Category] | provenance | | | main.go:58:3:58:14 | star expression [Category] | main.go:57:2:57:12 | definition of RequestData [pointer, Category] | provenance | | | main.go:58:4:58:14 | RequestData [pointer, Category] | main.go:58:3:58:14 | star expression [Category] | provenance | | -| main.go:58:28:58:34 | selection of URL | main.go:58:28:58:42 | call to Query | provenance | Src:MaD:25 MaD:26 | +| main.go:58:28:58:34 | selection of URL | main.go:58:28:58:42 | call to Query | provenance | Src:MaD:9 MaD:10 | | main.go:58:28:58:42 | call to Query | main.go:58:28:58:54 | index expression | provenance | | | main.go:58:28:58:54 | index expression | main.go:58:3:58:14 | star expression [Category] | provenance | | -| main.go:60:7:61:26 | []type{args} [array] | main.go:60:7:61:26 | call to Sprintf | provenance | MaD:4 | -| main.go:60:7:61:26 | call to Sprintf | main.go:62:11:62:11 | q | provenance | Sink:MaD:1 | +| main.go:60:7:61:26 | []type{args} [array] | main.go:60:7:61:26 | call to Sprintf | provenance | MaD:2 | +| main.go:60:7:61:26 | call to Sprintf | main.go:62:11:62:11 | q | provenance | | | main.go:61:3:61:25 | selection of Category | main.go:60:7:61:26 | []type{args} [array] | provenance | | | main.go:61:3:61:25 | selection of Category | main.go:60:7:61:26 | call to Sprintf | provenance | FunctionModel | | main.go:61:4:61:15 | star expression [Category] | main.go:61:3:61:25 | selection of Category | provenance | | | main.go:61:5:61:15 | RequestData [pointer, Category] | main.go:61:4:61:15 | star expression [Category] | provenance | | -| mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:42:28:42:41 | untrustedInput | provenance | Src:MaD:21 | +| mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:42:28:42:41 | untrustedInput | provenance | Src:MaD:5 | | mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:50:34:50:39 | filter | provenance | | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:61:27:61:32 | filter | provenance | Sink:MaD:6 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:63:23:63:28 | filter | provenance | Sink:MaD:7 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:64:22:64:27 | filter | provenance | Sink:MaD:8 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:66:32:66:37 | filter | provenance | Sink:MaD:9 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:69:17:69:22 | filter | provenance | Sink:MaD:10 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:70:20:70:25 | filter | provenance | Sink:MaD:11 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:71:29:71:34 | filter | provenance | Sink:MaD:12 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:72:30:72:35 | filter | provenance | Sink:MaD:13 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:73:29:73:34 | filter | provenance | Sink:MaD:14 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:78:23:78:28 | filter | provenance | Sink:MaD:15 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:79:23:79:28 | filter | provenance | Sink:MaD:16 | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:80:22:80:27 | filter | provenance | Sink:MaD:17 | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:61:27:61:32 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:63:23:63:28 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:64:22:64:27 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:66:32:66:37 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:69:17:69:22 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:70:20:70:25 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:71:29:71:34 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:72:30:72:35 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:73:29:73:34 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:78:23:78:28 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:79:23:79:28 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:80:22:80:27 | filter | provenance | | | mongoDB.go:42:28:42:41 | untrustedInput | mongoDB.go:42:19:42:42 | struct literal | provenance | Config | -| mongoDB.go:50:23:50:40 | struct literal | mongoDB.go:57:22:57:29 | pipeline | provenance | Sink:MaD:5 | -| mongoDB.go:50:23:50:40 | struct literal | mongoDB.go:81:18:81:25 | pipeline | provenance | Sink:MaD:18 | +| mongoDB.go:50:23:50:40 | struct literal | mongoDB.go:57:22:57:29 | pipeline | provenance | | +| mongoDB.go:50:23:50:40 | struct literal | mongoDB.go:81:18:81:25 | pipeline | provenance | | | mongoDB.go:50:34:50:39 | filter | mongoDB.go:50:23:50:40 | struct literal | provenance | Config | models -| 1 | Sink: database/sql; DB; false; Query; ; ; Argument[0]; sql-injection; manual | -| 2 | Sink: database/sql; Tx; false; Query; ; ; Argument[0]; sql-injection; manual | -| 3 | Summary: encoding/json; ; false; Unmarshal; ; ; Argument[0]; Argument[1]; taint; manual | -| 4 | Summary: fmt; ; true; Sprintf; ; ; Argument[1].ArrayElement; ReturnValue; taint; manual | -| 5 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; Aggregate; ; ; Argument[1]; nosql-injection; manual | -| 6 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; CountDocuments; ; ; Argument[1]; nosql-injection; manual | -| 7 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; DeleteMany; ; ; Argument[1]; nosql-injection; manual | -| 8 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; DeleteOne; ; ; Argument[1]; nosql-injection; manual | -| 9 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; Distinct; ; ; Argument[2]; nosql-injection; manual | -| 10 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; Find; ; ; Argument[1]; nosql-injection; manual | -| 11 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; FindOne; ; ; Argument[1]; nosql-injection; manual | -| 12 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; FindOneAndDelete; ; ; Argument[1]; nosql-injection; manual | -| 13 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; FindOneAndReplace; ; ; Argument[1]; nosql-injection; manual | -| 14 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; FindOneAndUpdate; ; ; Argument[1]; nosql-injection; manual | -| 15 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; ReplaceOne; ; ; Argument[1]; nosql-injection; manual | -| 16 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; UpdateMany; ; ; Argument[1]; nosql-injection; manual | -| 17 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; UpdateOne; ; ; Argument[1]; nosql-injection; manual | -| 18 | Sink: go.mongodb.org/mongo-driver/mongo; Collection; true; Watch; ; ; Argument[1]; nosql-injection; manual | -| 19 | Summary: io/ioutil; ; false; ReadAll; ; ; Argument[0]; ReturnValue[0]; taint; manual | -| 20 | Summary: net/http; Header; true; Get; ; ; Argument[receiver]; ReturnValue; taint; manual | -| 21 | Source: net/http; Request; true; Referer; ; ; ReturnValue; remote; manual | -| 22 | Source: net/http; Request; true; Body; ; ; ; remote; manual | -| 23 | Source: net/http; Request; true; Form; ; ; ; remote; manual | -| 24 | Source: net/http; Request; true; Header; ; ; ; remote; manual | -| 25 | Source: net/http; Request; true; URL; ; ; ; remote; manual | -| 26 | Summary: net/url; URL; true; Query; ; ; Argument[receiver]; ReturnValue; taint; manual | +| 1 | Summary: encoding/json; ; false; Unmarshal; ; ; Argument[0]; Argument[1]; taint; manual | +| 2 | Summary: fmt; ; true; Sprintf; ; ; Argument[1].ArrayElement; ReturnValue; taint; manual | +| 3 | Summary: io/ioutil; ; false; ReadAll; ; ; Argument[0]; ReturnValue[0]; taint; manual | +| 4 | Summary: net/http; Header; true; Get; ; ; Argument[receiver]; ReturnValue; taint; manual | +| 5 | Source: net/http; Request; true; Referer; ; ; ReturnValue; remote; manual | +| 6 | Source: net/http; Request; true; Body; ; ; ; remote; manual | +| 7 | Source: net/http; Request; true; Form; ; ; ; remote; manual | +| 8 | Source: net/http; Request; true; Header; ; ; ; remote; manual | +| 9 | Source: net/http; Request; true; URL; ; ; ; remote; manual | +| 10 | Summary: net/url; URL; true; Query; ; ; Argument[receiver]; ReturnValue; taint; manual | nodes | SqlInjection.go:10:7:11:30 | []type{args} [array] | semmle.label | []type{args} [array] | | SqlInjection.go:10:7:11:30 | call to Sprintf | semmle.label | call to Sprintf | diff --git a/go/ql/test/query-tests/Summary/CONSISTENCY/UnexpectedFrontendErrors.expected b/go/ql/test/query-tests/Summary/CONSISTENCY/UnexpectedFrontendErrors.expected index d4dff7b992f..b0969d1a224 100644 --- a/go/ql/test/query-tests/Summary/CONSISTENCY/UnexpectedFrontendErrors.expected +++ b/go/ql/test/query-tests/Summary/CONSISTENCY/UnexpectedFrontendErrors.expected @@ -1,4 +1,4 @@ -| -:0:0:0:0 | package ; expected main | +| -:0:0:0:0 | package ; expected package main | | empty-file.go:1:1:1:1 | expected ';', found 'EOF' | | empty-file.go:1:1:1:1 | expected 'IDENT', found 'EOF' | | empty-file.go:1:1:1:1 | expected 'package', found 'EOF' | diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 7239329e51b..d9c920f443c 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -82,14 +82,14 @@ java.beans,,,193,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,193, java.io,66,1,256,,,,,,,,,22,,,,,,,,,,,,,,,44,,,,,,,,,,,,,,,,,,,,,,1,,249,7 java.lang,38,3,756,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,,3,,,681,75 java.math,,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9 -java.net,23,3,278,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,3,274,4 -java.nio,47,,361,,,,,,,,,5,,,,,,,,,,,,,,,41,,,,,,,,,1,,,,,,,,,,,,,,,259,102 +java.net,23,3,279,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,3,275,4 +java.nio,47,,373,,,,,,,,,5,,,,,,,,,,,,,,,41,,,,,,,,,1,,,,,,,,,,,,,,,267,106 java.rmi,,,71,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,71, -java.security,21,,543,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,539,4 +java.security,21,,547,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,543,4 java.sql,15,1,303,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,,1,,,,303, java.text,,,134,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,134, java.time,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,88 -java.util,48,2,1218,,,,,,,,,1,,,,,,,,,,,34,,,,3,,,,5,2,,1,2,,,,,,,,,,,,,2,,,704,514 +java.util,48,2,1221,,,,,,,,,1,,,,,,,,,,,34,,,,3,,,,5,2,,1,2,,,,,,,,,,,,,2,,,705,516 javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, javax.accessibility,,,31,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,31, javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,7, @@ -102,7 +102,7 @@ javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 javax.lang.model.element,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17, javax.lang.model.type,,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9, javax.lang.model.util,,,68,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,68, -javax.management,2,,799,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,798,1 +javax.management,2,,802,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,801,1 javax.naming,7,,324,,,,,,,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,318,6 javax.net,4,,86,,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,86, javax.portlet,1,,61,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,61, @@ -192,6 +192,7 @@ org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,57, org.apache.ibatis.mapping,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, org.apache.log4j,11,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,4 +org.apache.shiro.authc,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, org.apache.shiro.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.shiro.mgt,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index 8fa6813991f..cea3d438ee2 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -18,10 +18,10 @@ Java framework & library support `Google Guava `_,``com.google.common.*``,,730,43,9,,,,, JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java `_,``org.json``,,236,,,,,,, - Java Standard Library,``java.*``,10,4264,259,99,,9,,,26 - Java extensions,"``javax.*``, ``jakarta.*``",69,3257,90,10,4,2,1,1,4 + Java Standard Library,``java.*``,10,4284,259,99,,9,,,26 + Java extensions,"``javax.*``, ``jakarta.*``",69,3260,90,10,4,2,1,1,4 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 `Spring `_,``org.springframework.*``,38,486,143,26,,28,14,,35 - Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``io.undertow.server.handlers.resource``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.lingala.zip4j``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jboss.vfs``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.lastaflute.web``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.w3c.dom``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``software.amazon.awssdk.transfer.s3.model``, ``sun.awt``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.management.spi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.nio.ch``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``, ``sun.util.logging.internal``",132,10603,908,140,6,22,18,,208 - Totals,,311,25147,2635,404,16,128,33,1,409 + Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``io.undertow.server.handlers.resource``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.lingala.zip4j``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.authc``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jboss.vfs``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.lastaflute.web``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.w3c.dom``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``software.amazon.awssdk.transfer.s3.model``, ``sun.awt``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.management.spi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.nio.ch``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``, ``sun.util.logging.internal``",133,10603,908,140,6,22,18,,208 + Totals,,312,25170,2635,404,16,128,33,1,409 diff --git a/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/old.dbscheme b/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/old.dbscheme new file mode 100644 index 00000000000..376ce7dad79 --- /dev/null +++ b/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/old.dbscheme @@ -0,0 +1,1233 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +isCanonicalConstr( + int constructorid: @constructor ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +| 89 = @recordpatternexpr +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +isNullDefaultCase( + int id: @case ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/semmlecode.dbscheme b/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/semmlecode.dbscheme new file mode 100644 index 00000000000..dee651b58d1 --- /dev/null +++ b/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/semmlecode.dbscheme @@ -0,0 +1,1265 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +isCanonicalConstr( + int constructorid: @constructor ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +| 89 = @recordpatternexpr +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +isNullDefaultCase( + int id: @case ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/typeVars.ql b/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/typeVars.ql new file mode 100644 index 00000000000..629f68af492 --- /dev/null +++ b/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/typeVars.ql @@ -0,0 +1,11 @@ +class TypeVariable extends @typevariable { + string toString() { none() } +} + +class ClassOrInterfaceOrCallable extends @classorinterfaceorcallable { + string toString() { none() } +} + +from TypeVariable id, string nodeName, int pos, ClassOrInterfaceOrCallable parentid +where typeVars(id, nodeName, pos, parentid) +select id, nodeName, pos, 0, parentid diff --git a/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/upgrade.properties b/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/upgrade.properties new file mode 100644 index 00000000000..638930baec2 --- /dev/null +++ b/java/downgrades/376ce7dad79375c0772b8edb938da82ca5271ba1/upgrade.properties @@ -0,0 +1,3 @@ +description: Remove deprecated entries +compatibility: partial +typeVars.rel: run typeVars.qlo diff --git a/java/integration-tests-lib/buildless_test_utils.py b/java/integration-tests-lib/buildless_test_utils.py deleted file mode 100644 index 27f43060dae..00000000000 --- a/java/integration-tests-lib/buildless_test_utils.py +++ /dev/null @@ -1,37 +0,0 @@ -import sys -import os.path -import glob - -def extract_fetched_jar_path(l): - if not l.startswith("["): - # Line continuation - return None - bits = l.split(" ", 3) # date time processid logline - if len(bits) >= 4 and bits[3].startswith("Fetch "): - return bits[3][6:].strip() - else: - return None - -def read_fetched_jars(fname): - with open(fname, "r") as f: - lines = [l for l in f] - return [l for l in map(extract_fetched_jar_path, lines) if l is not None] - -def check_buildless_fetches(): - - extractor_logs = glob.glob(os.path.join("test-db", "log", "javac-extractor-*.log")) - fetched_jars = map(read_fetched_jars, extractor_logs) - all_fetched_jars = tuple(sorted([item for sublist in fetched_jars for item in sublist])) - - try: - with open("buildless-fetches.expected", "r") as f: - expected_jar_fetches = tuple(l.strip() for l in f) - except FileNotFoundError: - expected_jar_fetches = tuple() - - if all_fetched_jars != expected_jar_fetches: - print("Expected jar fetch mismatch. Expected:\n%s\n\nActual:\n%s" % ("\n".join(expected_jar_fetches), "\n".join(all_fetched_jars)), file = sys.stderr) - with open("buildless-fetches.actual", "w") as f: - for j in all_fetched_jars: - f.write(j + "\n") - sys.exit(1) diff --git a/java/integration-tests-lib/maven_wrapper_test_utils.py b/java/integration-tests-lib/maven_wrapper_test_utils.py deleted file mode 100644 index fd3b727ff77..00000000000 --- a/java/integration-tests-lib/maven_wrapper_test_utils.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys -import os.path - -def check_maven_wrapper_exists(expected_version): - if not os.path.exists(".mvn/wrapper/maven-wrapper.jar"): - print("Maven wrapper jar file expected but not found", file = sys.stderr) - sys.exit(1) - with open(".mvn/wrapper/maven-wrapper.properties", "r") as f: - content = f.read() - if ("apache-maven-%s-" % expected_version) not in content: - print("Expected Maven wrapper to fetch version %s, but actual properties file said:\n\n%s" % (expected_version, content), file = sys.stderr) - sys.exit(1) diff --git a/java/integration-tests-lib/mitm_proxy.py b/java/integration-tests-lib/mitm_proxy.py deleted file mode 100644 index a7606380019..00000000000 --- a/java/integration-tests-lib/mitm_proxy.py +++ /dev/null @@ -1,173 +0,0 @@ -import http.server -import sys -import os -import socket -import ssl -import random -from datetime import datetime, timedelta, timezone -from cryptography.hazmat.primitives import hashes, serialization -from cryptography import utils, x509 -from cryptography.hazmat.primitives.asymmetric import rsa, dsa - -import select - - -def generateCA(ca_cert_file, ca_key_file): - ca_key = dsa.generate_private_key(4096) - name = x509.Name([ - x509.NameAttribute(x509.NameOID.COUNTRY_NAME, "US"), - x509.NameAttribute(x509.NameOID.ORGANIZATION_NAME, "GitHub"), - x509.NameAttribute(x509.NameOID.COMMON_NAME, "GitHub CodeQL Proxy")]) - ca_cert = x509.CertificateBuilder().subject_name(name).issuer_name(name) - ca_cert = ca_cert.public_key(ca_key.public_key()) - ca_cert = ca_cert.serial_number(random.randint(50000000, 100000000)) - ca_cert = ca_cert.not_valid_before(datetime.now(timezone.utc)) - ca_cert = ca_cert.not_valid_after( - datetime.now(timezone.utc) + timedelta(days=3650)) - ca_cert = ca_cert.add_extension(x509.BasicConstraints( - ca=True, path_length=None), critical=True) - ca_cert = ca_cert.add_extension( - x509.SubjectKeyIdentifier.from_public_key(ca_key.public_key()), critical=False) - ca_cert = ca_cert.sign(ca_key, hashes.SHA256()) - with open(ca_cert_file, 'wb') as f: - f.write(ca_cert.public_bytes(encoding=serialization.Encoding.PEM)) - with open(ca_key_file, 'wb') as f: - f.write(ca_key.private_bytes(encoding=serialization.Encoding.PEM, - format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption())) - - -def create_certificate(hostname): - pkey = rsa.generate_private_key(public_exponent=65537, key_size=2048) - subject = x509.Name( - [x509.NameAttribute(x509.NameOID.COMMON_NAME, hostname)]) - - cert = x509.CertificateBuilder() - cert = cert.subject_name(subject).issuer_name(ca_certificate.subject) - cert = cert.public_key(pkey.public_key()) - cert = cert.serial_number(random.randint(50000000, 100000000)) - cert = cert.not_valid_before(datetime.now(timezone.utc)).not_valid_after( - datetime.now(timezone.utc) + timedelta(days=3650)) - cert = cert.add_extension(x509.BasicConstraints( - ca=False, path_length=None), critical=True) - cert = cert.add_extension( - x509.SubjectAlternativeName([x509.DNSName(hostname), x509.DNSName(f"*.{hostname}")]), critical=False) - - cert = cert.sign(ca_key, hashes.SHA256()) - - return (cert, pkey) - - -class Handler(http.server.SimpleHTTPRequestHandler): - def check_auth(self): - username = os.getenv('PROXY_USER') - password = os.getenv('PROXY_PASSWORD') - if username is None or password is None: - return True - - authorization = self.headers.get( - 'Proxy-Authorization', self.headers.get('Authorization', '')) - authorization = authorization.split() - if len(authorization) == 2: - import base64 - import binascii - auth_type = authorization[0] - if auth_type.lower() == "basic": - try: - authorization = authorization[1].encode('ascii') - authorization = base64.decodebytes( - authorization).decode('ascii') - except (binascii.Error, UnicodeError): - pass - else: - authorization = authorization.split(':') - if len(authorization) == 2: - return username == authorization[0] and password == authorization[1] - return False - - def do_CONNECT(self): - if not self.check_auth(): - self.send_response( - http.HTTPStatus.PROXY_AUTHENTICATION_REQUIRED) - self.send_header('Proxy-Authenticate', 'Basic realm="Proxy"') - self.end_headers() - return - # split self.path into host and port - host, port = self.path.split(':') - port = int(port) - self.send_response(http.HTTPStatus.OK, 'Connection established') - self.send_header('Connection', 'close') - self.end_headers() - self.mitm(host, port) - - # man in the middle SSL connection - def mitm(self, host, port): - ssl_client_context = ssl.create_default_context( - purpose=ssl.Purpose.CLIENT_AUTH) - if not os.path.exists("certs/" + host + '.pem'): - cert, pkey = create_certificate(host) - with open("certs/" + host + '.pem', 'wb') as f: - f.write(pkey.private_bytes(encoding=serialization.Encoding.PEM, - format=serialization.PrivateFormat.TraditionalOpenSSL, encryption_algorithm=serialization.NoEncryption())) - f.write(cert.public_bytes(encoding=serialization.Encoding.PEM)) - - ssl_client_context.load_cert_chain("certs/" + host + '.pem') - ssl_client_context.load_verify_locations(ca_certificate_path) - # wrap self.connection in SSL - client = ssl_client_context.wrap_socket( - self.connection, server_side=True) - - # create socket to host:port - remote = socket.create_connection( - (host, port)) - # wrap socket in SSL - ssl_server_context = ssl.create_default_context( - purpose=ssl.Purpose.SERVER_AUTH) - remote = ssl_server_context.wrap_socket(remote, server_hostname=host) - - try: - while True: - ready, _, _ = select.select( - [client, remote], [], [], 2.0) - if not ready: - break - for src in ready: - if src is client: - dst = remote - else: - dst = client - src.setblocking(False) - dst.setblocking(True) - pending = 8192 - while pending: - try: - data = src.recv(pending) - except ssl.SSLWantReadError: - break - if not data: - return - pending = src.pending() - dst.sendall(data) - finally: - remote.close() - client.close() - - def do_GET(self): - raise NotImplementedError() - - -if __name__ == '__main__': - port = int(sys.argv[1]) - ca_certificate = None - ca_certificate_path = None - ca_key = None - if len(sys.argv) > 2: - ca_certificate_path = sys.argv[2] - with open(ca_certificate_path, 'rb') as f: - ca_certificate = x509.load_pem_x509_certificate(f.read()) - with open(sys.argv[3], 'rb') as f: - ca_key = serialization.load_pem_private_key( - f.read(), password=None) - - server_address = ('localhost', port) - httpd = http.server.HTTPServer(server_address, Handler) - httpd.serve_forever() diff --git a/java/integration-tests-lib/toolchains_test_utils.py b/java/integration-tests-lib/toolchains_test_utils.py deleted file mode 100644 index 938096dbb4b..00000000000 --- a/java/integration-tests-lib/toolchains_test_utils.py +++ /dev/null @@ -1,42 +0,0 @@ -import os.path -import sys -import tempfile - -def actions_expose_all_toolchains(): - - # On actions, expose all usable toolchains so that we can test version-selection logic. - - toolchains_dir = tempfile.mkdtemp(prefix="integration-tests-toolchains-") - toolchains_file = os.path.join(toolchains_dir, "toolchains.xml") - - def none_or_blank(s): - return s is None or s == "" - - with open(toolchains_file, "w") as f: - f.write('\n\n') - - for v in [8, 11, 17, 21]: - homedir = os.getenv("JAVA_HOME_%d_X64" % v) - if none_or_blank(homedir): - homedir = os.getenv("JAVA_HOME_%d_arm64" % v) - if none_or_blank(homedir) and v == 8 and not none_or_blank(os.getenv("JAVA_HOME_11_arm64")): - print("Mocking a toolchain entry using Java 11 install as a fake Java 8 entry, so this test behaves the same on x64 and arm64 runners", file = sys.stderr) - homedir = os.getenv("JAVA_HOME_11_arm64") - if homedir is not None and homedir != "": - f.write(""" - - jdk - - %d - oracle - - - %s - - - """ % (v, homedir)) - - f.write("") - - return toolchains_file - diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 47288394904..0ca8cb4af09 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -325,7 +325,7 @@ open class KotlinFileExtractor( // parameter S of // `class Generic { public Generic(T t, S s) { ... } }` will have `tp.index` 1, // not 0). - tw.writeTypeVars(id, tp.name.asString(), apparentIndex, 0, parentId) + tw.writeTypeVars(id, tp.name.asString(), apparentIndex, parentId) val locId = tw.getLocation(tp) tw.writeHasLocation(id, locId) diff --git a/java/kotlin-extractor/src/main/kotlin/utils/Logger.kt b/java/kotlin-extractor/src/main/kotlin/utils/Logger.kt index 955a34feb1f..1eda875be2f 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/Logger.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/Logger.kt @@ -220,26 +220,26 @@ open class LoggerBase(val logCounter: LogCounter) { logStream.write(logMessage.toJsonLine()) } - fun trace(tw: TrapWriter, msg: String) { + fun trace(dtw: DiagnosticTrapWriter, msg: String) { if (verbosity >= 4) { val logMessage = LogMessage("TRACE", msg) - tw.writeComment(logMessage.toText()) + dtw.writeComment(logMessage.toText()) logStream.write(logMessage.toJsonLine()) } } - fun debug(tw: TrapWriter, msg: String) { + fun debug(dtw: DiagnosticTrapWriter, msg: String) { if (verbosity >= 4) { val logMessage = LogMessage("DEBUG", msg) - tw.writeComment(logMessage.toText()) + dtw.writeComment(logMessage.toText()) logStream.write(logMessage.toJsonLine()) } } - fun info(tw: TrapWriter, msg: String) { + fun info(dtw: DiagnosticTrapWriter, msg: String) { if (verbosity >= 3) { val logMessage = LogMessage("INFO", msg) - tw.writeComment(logMessage.toText()) + dtw.writeComment(logMessage.toText()) logStream.write(logMessage.toJsonLine()) } } @@ -279,7 +279,7 @@ open class LoggerBase(val logCounter: LogCounter) { } } -open class Logger(val loggerBase: LoggerBase, open val dtw: DiagnosticTrapWriter) { +open class Logger(val loggerBase: LoggerBase, val dtw: DiagnosticTrapWriter) { fun flush() { dtw.flush() loggerBase.flush() diff --git a/java/ql/automodel/src/AutomodelAlertSinkUtil.qll b/java/ql/automodel/src/AutomodelAlertSinkUtil.qll index ce0305f6095..f20c8e57b6c 100644 --- a/java/ql/automodel/src/AutomodelAlertSinkUtil.qll +++ b/java/ql/automodel/src/AutomodelAlertSinkUtil.qll @@ -99,7 +99,7 @@ class PotentialSinkModelExpr extends Expr { ) and (if argIdx = -1 then input = "Argument[this]" else input = "Argument[" + argIdx + "]") and package = callable.getDeclaringType().getPackage().getName() and - type = callable.getDeclaringType().getErasure().(RefType).nestedName() and + type = callable.getDeclaringType().getErasure().(RefType).getNestedName() and subtypes = considerSubtypes(callable) and name = callable.getName() and signature = ExternalFlow::paramsString(callable) diff --git a/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll b/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll index 13fbbe5d36f..750d776891f 100644 --- a/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll +++ b/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll @@ -6,7 +6,6 @@ private import java private import semmle.code.Location as Location private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.dataflow.TaintTracking -private import semmle.code.java.security.PathCreation private import semmle.code.java.dataflow.ExternalFlow as ExternalFlow private import semmle.code.java.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl private import semmle.code.java.security.ExternalAPIs as ExternalAPIs @@ -379,7 +378,7 @@ class ApplicationModeMetadataExtractor extends string { package = callable.getDeclaringType().getPackage().getName() and // we're using the erased types because the MaD convention is to not specify type parameters. // Whether something is or isn't a sink doesn't usually depend on the type parameters. - type = callable.getDeclaringType().getErasure().(RefType).nestedName() and + type = callable.getDeclaringType().getErasure().(RefType).getNestedName() and subtypes = AutomodelJavaUtil::considerSubtypes(callable).toString() and name = callable.getName() and signature = ExternalFlow::paramsString(callable) and diff --git a/java/ql/automodel/src/AutomodelFrameworkModeCharacteristics.qll b/java/ql/automodel/src/AutomodelFrameworkModeCharacteristics.qll index 357b3a7573c..7f385a41d1e 100644 --- a/java/ql/automodel/src/AutomodelFrameworkModeCharacteristics.qll +++ b/java/ql/automodel/src/AutomodelFrameworkModeCharacteristics.qll @@ -6,7 +6,6 @@ private import java private import semmle.code.Location as Location private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.dataflow.TaintTracking -private import semmle.code.java.security.PathCreation private import semmle.code.java.dataflow.ExternalFlow as ExternalFlow private import semmle.code.java.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl private import semmle.code.java.security.ExternalAPIs as ExternalAPIs @@ -320,7 +319,7 @@ class FrameworkModeMetadataExtractor extends string { package = callable.getDeclaringType().getPackage().getName() and // we're using the erased types because the MaD convention is to not specify type parameters. // Whether something is or isn't a sink doesn't usually depend on the type parameters. - type = callable.getDeclaringType().getErasure().(RefType).nestedName() and + type = callable.getDeclaringType().getErasure().(RefType).getNestedName() and subtypes = AutomodelJavaUtil::considerSubtypes(callable).toString() and name = callable.getName() and signature = ExternalFlow::paramsString(callable) and diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index 7dc759d1ac6..0a51a608913 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.8 + +No user-facing changes. + +## 1.0.7 + +No user-facing changes. + +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/1.0.6.md b/java/ql/automodel/src/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/1.0.7.md b/java/ql/automodel/src/change-notes/released/1.0.7.md new file mode 100644 index 00000000000..b3a381f0315 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/1.0.7.md @@ -0,0 +1,3 @@ +## 1.0.7 + +No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/1.0.8.md b/java/ql/automodel/src/change-notes/released/1.0.8.md new file mode 100644 index 00000000000..b3efd4f66ef --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/1.0.8.md @@ -0,0 +1,3 @@ +## 1.0.8 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index 42da17b3841..5c55fbd52ed 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.8 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index fd277afd1d7..8e4863f23b8 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 1.0.6-dev +version: 1.0.9-dev groups: - java - automodel diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/.gitignore b/java/ql/integration-tests/all-platforms/java/android-8-sample/.gitignore deleted file mode 100644 index c2065bc2620..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-8-sample/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -HELP.md -.gradle -build/ -!gradle/wrapper/gradle-wrapper.jar -!**/src/main/**/build/ -!**/src/test/**/build/ - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache -bin/ -!**/src/main/**/bin/ -!**/src/test/**/bin/ - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr -out/ -!**/src/main/**/out/ -!**/src/test/**/out/ - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ - -### VS Code ### -.vscode/ diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-8-sample/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-8-sample/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/android-8-sample/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 249e5832f09..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/android-8-sample/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/android-8-sample/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index da1db5f04e8..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-8-sample/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/test.expected b/java/ql/integration-tests/all-platforms/java/android-8-sample/test.expected deleted file mode 100644 index 64ce68113e7..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-8-sample/test.expected +++ /dev/null @@ -1,20 +0,0 @@ -#select -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/module.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml | -| project/build/intermediates/incremental/release/packageReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/release/packageReleaseResources/merger.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/test.expected b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/test.expected deleted file mode 100644 index 4f191ddaa1a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/test.expected +++ /dev/null @@ -1,20 +0,0 @@ -#select -| project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java:0:0:0:0 | BuildConfig | -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/module.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/test.py b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/test.py deleted file mode 100644 index 7f379da0a07..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * - -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 249e5832f09..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 41dfb87909a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradlew b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradlew deleted file mode 100755 index a69d9cb6c20..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradlew +++ /dev/null @@ -1,240 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradlew.bat b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradlew.bat deleted file mode 100644 index f127cfd49d4..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/gradlew.bat +++ /dev/null @@ -1,91 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.expected b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.expected deleted file mode 100644 index 4f191ddaa1a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.expected +++ /dev/null @@ -1,20 +0,0 @@ -#select -| project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java:0:0:0:0 | BuildConfig | -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/module.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.py b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.py deleted file mode 100644 index 7f379da0a07..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * - -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.ql b/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.expected b/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.expected deleted file mode 100644 index 4f191ddaa1a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.expected +++ /dev/null @@ -1,20 +0,0 @@ -#select -| project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java:0:0:0:0 | BuildConfig | -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/module.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.py b/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.py deleted file mode 100644 index 7f379da0a07..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * - -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.ql b/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.expected b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.expected deleted file mode 100644 index f49910c2646..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.expected +++ /dev/null @@ -1,23 +0,0 @@ -#select -| project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java:0:0:0:0 | BuildConfig | -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/module.xml | -| project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseResources/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml:0:0:0:0 | project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.py b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.py deleted file mode 100644 index 36702f6bb24..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.py +++ /dev/null @@ -1,8 +0,0 @@ -from create_database_utils import * -from toolchains_test_utils import * - -try_use_java11() - -toolchains_file = actions_expose_all_toolchains() - -run_codeql_database_create([], lang="java", extra_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": toolchains_file}) diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.ql b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 249e5832f09..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 41dfb87909a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradlew b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradlew deleted file mode 100755 index a69d9cb6c20..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradlew +++ /dev/null @@ -1,240 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradlew.bat b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradlew.bat deleted file mode 100644 index f127cfd49d4..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/gradlew.bat +++ /dev/null @@ -1,91 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.expected b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.expected deleted file mode 100644 index f49910c2646..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.expected +++ /dev/null @@ -1,23 +0,0 @@ -#select -| project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java:0:0:0:0 | BuildConfig | -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/module.xml | -| project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseResources/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml:0:0:0:0 | project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.py b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.py deleted file mode 100644 index 7f379da0a07..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * - -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.ql b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.expected b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.expected deleted file mode 100644 index f49910c2646..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.expected +++ /dev/null @@ -1,23 +0,0 @@ -#select -| project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java:0:0:0:0 | BuildConfig | -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/module.xml | -| project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseResources/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml:0:0:0:0 | project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.py b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.py deleted file mode 100644 index 36702f6bb24..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.py +++ /dev/null @@ -1,8 +0,0 @@ -from create_database_utils import * -from toolchains_test_utils import * - -try_use_java11() - -toolchains_file = actions_expose_all_toolchains() - -run_codeql_database_create([], lang="java", extra_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": toolchains_file}) diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.ql b/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-sample-old-style/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 249e5832f09..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 41dfb87909a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradlew b/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradlew deleted file mode 100755 index a69d9cb6c20..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradlew +++ /dev/null @@ -1,240 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradlew.bat b/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradlew.bat deleted file mode 100644 index f127cfd49d4..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/gradlew.bat +++ /dev/null @@ -1,91 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.expected b/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.expected deleted file mode 100644 index f49910c2646..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.expected +++ /dev/null @@ -1,23 +0,0 @@ -#select -| project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java:0:0:0:0 | BuildConfig | -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/module.xml | -| project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseResources/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml:0:0:0:0 | project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.py b/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.py deleted file mode 100644 index 7f379da0a07..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * - -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.ql b/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/android-sample/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/android-sample/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 249e5832f09..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/android-sample/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/android-sample/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 41dfb87909a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/gradlew b/java/ql/integration-tests/all-platforms/java/android-sample/gradlew deleted file mode 100755 index a69d9cb6c20..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample/gradlew +++ /dev/null @@ -1,240 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/gradlew.bat b/java/ql/integration-tests/all-platforms/java/android-sample/gradlew.bat deleted file mode 100644 index f127cfd49d4..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample/gradlew.bat +++ /dev/null @@ -1,91 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/test.expected b/java/ql/integration-tests/all-platforms/java/android-sample/test.expected deleted file mode 100644 index 4f191ddaa1a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample/test.expected +++ /dev/null @@ -1,20 +0,0 @@ -#select -| project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java:0:0:0:0 | BuildConfig | -| project/src/main/java/com/github/androidsample/Main.java:0:0:0:0 | Main | -xmlFiles -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/module.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/module.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml | -| project/build/intermediates/incremental/lintVitalReportRelease/release.xml:0:0:0:0 | project/build/intermediates/incremental/lintVitalReportRelease/release.xml | -| project/build/intermediates/incremental/mergeReleaseAssets/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseAssets/merger.xml | -| project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml | -| project/build/intermediates/incremental/mergeReleaseShaders/merger.xml:0:0:0:0 | project/build/intermediates/incremental/mergeReleaseShaders/merger.xml | -| project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml:0:0:0:0 | project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml | -| project/build/intermediates/merged_manifest/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifest/release/AndroidManifest.xml | -| project/build/intermediates/merged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/merged_manifests/release/AndroidManifest.xml | -| project/build/intermediates/packaged_manifests/release/AndroidManifest.xml:0:0:0:0 | project/build/intermediates/packaged_manifests/release/AndroidManifest.xml | -| project/src/main/AndroidManifest.xml:0:0:0:0 | project/src/main/AndroidManifest.xml | diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/test.py b/java/ql/integration-tests/all-platforms/java/android-sample/test.py deleted file mode 100644 index 7f379da0a07..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * - -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/test.ql b/java/ql/integration-tests/all-platforms/java/android-sample/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/android-sample/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/ant-sample/test.py b/java/ql/integration-tests/all-platforms/java/ant-sample/test.py deleted file mode 100644 index ab8845cbd73..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ant-sample/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/ant-sample/test.ql b/java/ql/integration-tests/all-platforms/java/ant-sample/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ant-sample/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.py b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.py deleted file mode 100644 index 6d0437d3ae2..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.py +++ /dev/null @@ -1,20 +0,0 @@ -import sys - -from create_database_utils import * -from buildless_test_utils import * -import subprocess - -# Each of these serves the "repo" and "repo2" directories on http://localhost:924[89] -repo_server_process = subprocess.Popen(["python3", "-m", "http.server", "9428"], cwd = "repo") -repo_server_process2 = subprocess.Popen(["python3", "-m", "http.server", "9429"], cwd = "repo2") - -try: - run_codeql_database_create([], lang="java", extra_args=["--extractor-option=buildless=true"], extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) -finally: - try: - repo_server_process.kill() - except Exception as e: - print("Failed to kill server 1:", e, file = sys.stderr) - repo_server_process2.kill() - -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/test.py b/java/ql/integration-tests/all-platforms/java/buildless-erroneous/test.py deleted file mode 100644 index 747dd6a82ad..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/test.py +++ /dev/null @@ -1,8 +0,0 @@ -import sys - -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true"}) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/.gitattributes b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/.gitattributes deleted file mode 100644 index 097f9f98d9e..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# Linux start script should use lf -/gradlew text eol=lf - -# These are Windows script files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7f93135c49b..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index ac72c34e8ac..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradlew b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradlew deleted file mode 100755 index 0adc8e1a532..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradlew.bat b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradlew.bat deleted file mode 100644 index 93e3f59f135..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.expected deleted file mode 100644 index 05792cb19fc..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.expected +++ /dev/null @@ -1 +0,0 @@ -| src/main/java/com/fractestexample/Test.java:0:0:0:0 | Test | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.py b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.py deleted file mode 100644 index bfff65b2fc2..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.py +++ /dev/null @@ -1,8 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * - -run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) - -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.ql deleted file mode 100644 index 8317a5a022f..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/test.ql +++ /dev/null @@ -1,5 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.expected deleted file mode 100644 index e7dd5838e6b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.expected +++ /dev/null @@ -1,5 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| gradle/verification-metadata.xml:0:0:0:0 | gradle/verification-metadata.xml | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.py b/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.py deleted file mode 100644 index 5e02cc11397..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.py +++ /dev/null @@ -1,9 +0,0 @@ -import sys - -from create_database_utils import * -from diagnostics_test_utils import * - -# gradlew has been rigged to stall for a long time by trying to fetch from a black-hole IP. We should find the timeout logic fires and buildless aborts the Gradle run quickly. - -run_codeql_database_create([], lang="java", extra_args=["--build-mode=none"], extra_env={"CODEQL_EXTRACTOR_JAVA_BUILDLESS_CHILD_PROCESS_IDLE_TIMEOUT": "5"}) -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitattributes b/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitattributes deleted file mode 100644 index 097f9f98d9e..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# Linux start script should use lf -/gradlew text eol=lf - -# These are Windows script files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-gradle/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7f93135c49b..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index ac72c34e8ac..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew deleted file mode 100755 index 0adc8e1a532..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew.bat b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew.bat deleted file mode 100644 index 93e3f59f135..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.expected deleted file mode 100644 index 05792cb19fc..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.expected +++ /dev/null @@ -1 +0,0 @@ -| src/main/java/com/fractestexample/Test.java:0:0:0:0 | Test | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.py b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.py deleted file mode 100644 index bfff65b2fc2..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.py +++ /dev/null @@ -1,8 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * - -run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) - -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.ql deleted file mode 100644 index 8317a5a022f..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.ql +++ /dev/null @@ -1,5 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/test.py b/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/test.py deleted file mode 100644 index 973a10c931c..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/test.py +++ /dev/null @@ -1,22 +0,0 @@ -import sys - -from create_database_utils import * -from buildless_test_utils import * -from diagnostics_test_utils import * -import subprocess -import os.path - -# This serves the "repo" directory on https://locahost:4443 -repo_server_process = subprocess.Popen(["python3", "../server.py"], cwd = "repo") - -mypath = os.path.abspath(os.path.dirname(__file__)) -certspath = os.path.join(mypath, "jdk8_shipped_cacerts_plus_cert_pem") -maven_certs_option = "-Djavax.net.ssl.trustStore=" + certspath - -try: - run_codeql_database_create([], lang="java", extra_args=["--build-mode=none"], extra_env={"MAVEN_OPTS": maven_certs_option, "CODEQL_JAVA_EXTRACTOR_TRUST_STORE_PATH": certspath}) -finally: - repo_server_process.kill() - -check_buildless_fetches() -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.expected deleted file mode 100644 index cbd09bcf554..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.expected +++ /dev/null @@ -1,10 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -propertiesFiles -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.py b/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.py deleted file mode 100644 index bfff65b2fc2..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.py +++ /dev/null @@ -1,8 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * - -run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) - -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.expected deleted file mode 100644 index ef6afbda3b0..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.expected +++ /dev/null @@ -1,17 +0,0 @@ -#select -| submod1/src/main/java/com/example/App.java:0:0:0:0 | App | -| submod1/src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -| submod2/src/main/java/com/example/App2.java:0:0:0:0 | App2 | -| submod2/src/test/java/com/example/AppTest2.java:0:0:0:0 | AppTest2 | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| submod1/pom.xml:0:0:0:0 | submod1/pom.xml | -| submod1/src/main/resources/page.xml:0:0:0:0 | submod1/src/main/resources/page.xml | -| submod1/src/main/resources/struts.xml:0:0:0:0 | submod1/src/main/resources/struts.xml | -| submod2/pom.xml:0:0:0:0 | submod2/pom.xml | -| submod2/src/main/resources/page.xml:0:0:0:0 | submod2/src/main/resources/page.xml | -| submod2/src/main/resources/struts.xml:0:0:0:0 | submod2/src/main/resources/struts.xml | -propertiesFiles -| submod1/src/main/resources/my-app.properties:0:0:0:0 | submod1/src/main/resources/my-app.properties | -| submod2/src/main/resources/my-app.properties:0:0:0:0 | submod2/src/main/resources/my-app.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.py b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.py deleted file mode 100644 index bfff65b2fc2..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.py +++ /dev/null @@ -1,8 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * - -run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) - -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/force_sequential_test_execution deleted file mode 100644 index 44bcad8d582..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -The wrapper downloading a Maven distribution multiple times in parallel is not safe. diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.expected deleted file mode 100644 index 0728284fc94..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.expected +++ /dev/null @@ -1,11 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -propertiesFiles -| .mvn/wrapper/maven-wrapper.properties:0:0:0:0 | .mvn/wrapper/maven-wrapper.properties | -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.py b/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.py deleted file mode 100644 index 948d030eb9d..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.py +++ /dev/null @@ -1,9 +0,0 @@ -import sys - -from create_database_utils import * -from diagnostics_test_utils import * - -# mvnw has been rigged to stall for a long time by trying to fetch from a black-hole IP. We should find the timeout logic fires and buildless aborts the Maven run quickly. - -run_codeql_database_create([], lang="java", extra_args=["--build-mode=none"], extra_env={"CODEQL_EXTRACTOR_JAVA_BUILDLESS_CHILD_PROCESS_IDLE_TIMEOUT": "5"}) -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/test.py b/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/test.py deleted file mode 100644 index 3f8deac940f..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/test.py +++ /dev/null @@ -1,8 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * - -run_codeql_database_create([], lang="java", extra_args=["--build-mode=none"]) - -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-maven/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven/test.expected deleted file mode 100644 index cbd09bcf554..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.expected +++ /dev/null @@ -1,10 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -propertiesFiles -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.py b/java/ql/integration-tests/all-platforms/java/buildless-maven/test.py deleted file mode 100644 index bfff65b2fc2..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.py +++ /dev/null @@ -1,8 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * - -run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) - -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-maven/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/test.py b/java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/test.py deleted file mode 100644 index a229dfff548..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java", extra_args=["--extractor-option=buildless=true"]) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/.gitattributes b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/.gitattributes deleted file mode 100644 index 097f9f98d9e..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# Linux start script should use lf -/gradlew text eol=lf - -# These are Windows script files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7f93135c49b..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index ac72c34e8ac..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradlew b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradlew deleted file mode 100755 index 0adc8e1a532..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradlew.bat b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradlew.bat deleted file mode 100644 index 93e3f59f135..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.expected deleted file mode 100644 index 05792cb19fc..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.expected +++ /dev/null @@ -1 +0,0 @@ -| src/main/java/com/fractestexample/Test.java:0:0:0:0 | Test | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.py b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.py deleted file mode 100644 index ac3b64436ed..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.py +++ /dev/null @@ -1,40 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * -import mitm_proxy -import os -import shutil -import subprocess -import sys - -shutil.rmtree('certs', ignore_errors=True) -os.mkdir('certs') - -ca_cert_file = 'certs/ca-cert.pem' -ca_key_file = 'certs/ca-key.pem' -mitm_proxy.generateCA(ca_cert_file, ca_key_file) -with open(ca_cert_file, 'rb') as f: - cert_pem = f.read().decode('ascii') - -# This starts an HTTP proxy server on http://localhost:9430 -environment = os.environ.copy() -environment["PROXY_USER"] = "proxy" -environment["PROXY_PASSWORD"] = "password" - -proxy_server_process = subprocess.Popen( - [sys.executable, mitm_proxy.__file__, "9430", "certs/ca-cert.pem", "certs/ca-key.pem"], env=environment) - -try: - run_codeql_database_create([], lang="java", extra_env={ - "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", - "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", - "CODEQL_PROXY_HOST": "localhost", - "CODEQL_PROXY_PORT": "9430", - "CODEQL_PROXY_USER": "proxy", - "CODEQL_PROXY_PASSWORD": "password", - "CODEQL_PROXY_CA_CERTIFICATE": cert_pem - }) -finally: - proxy_server_process.kill() -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.ql deleted file mode 100644 index 8317a5a022f..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/test.ql +++ /dev/null @@ -1,5 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.expected deleted file mode 100644 index 9ab4eed832b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.expected +++ /dev/null @@ -1,11 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| test-db/working/settings.xml:0:0:0:0 | test-db/working/settings.xml | -propertiesFiles -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.py b/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.py deleted file mode 100644 index 648957a9920..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.py +++ /dev/null @@ -1,40 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * -import mitm_proxy -import os -import shutil -import subprocess -import sys - -shutil.rmtree('certs', ignore_errors=True) -os.mkdir('certs') - -ca_cert_file = 'certs/ca-cert.pem' -ca_key_file = 'certs/ca-key.pem' -mitm_proxy.generateCA(ca_cert_file, ca_key_file) -with open(ca_cert_file, 'rb') as f: - cert_pem = f.read().decode('ascii') - -# This starts an HTTP proxy server on http://localhost:9431 -environment = os.environ.copy() -environment["PROXY_USER"] = "proxy" -environment["PROXY_PASSWORD"] = "password" - -proxy_server_process = subprocess.Popen( - [sys.executable, mitm_proxy.__file__, "9431", "certs/ca-cert.pem", "certs/ca-key.pem"], env=environment) - -try: - run_codeql_database_create([], lang="java", extra_env={ - "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", - "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", - "CODEQL_PROXY_HOST": "localhost", - "CODEQL_PROXY_PORT": "9431", - "CODEQL_PROXY_USER": "proxy", - "CODEQL_PROXY_PASSWORD": "password", - "CODEQL_PROXY_CA_CERTIFICATE": cert_pem - }) -finally: - proxy_server_process.kill() -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/.gitignore b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/.gitignore deleted file mode 100644 index 1b6985c0094..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.expected deleted file mode 100644 index fe848a3dbf2..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.expected +++ /dev/null @@ -1,8 +0,0 @@ -| gradle-sample2/src/main/java/com/example/App2.java:0:0:0:0 | App2 | -| gradle-sample2/src/test/java/com/example/AppTest2.java:0:0:0:0 | AppTest2 | -| gradle-sample/src/main/java/com/example/App.java:0:0:0:0 | App | -| gradle-sample/src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -| maven-project-1/src/main/java/com/example/App3.java:0:0:0:0 | App3 | -| maven-project-1/src/test/java/com/example/AppTest3.java:0:0:0:0 | AppTest3 | -| maven-project-2/src/main/java/com/example/App4.java:0:0:0:0 | App4 | -| maven-project-2/src/test/java/com/example/AppTest4.java:0:0:0:0 | AppTest4 | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.py b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.py deleted file mode 100644 index 6971aa508db..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.py +++ /dev/null @@ -1,14 +0,0 @@ -from create_database_utils import * -from diagnostics_test_utils import * -from buildless_test_utils import * -from toolchains_test_utils import * - -#The version of gradle used doesn't work on java 17 -try_use_java11() - -toolchains_file = actions_expose_all_toolchains() - -run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", "LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": toolchains_file}) - -check_diagnostics() -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.ql deleted file mode 100644 index 8317a5a022f..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/test.ql +++ /dev/null @@ -1,5 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py deleted file mode 100644 index cc9d91c7792..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys - -from create_database_utils import * -from buildless_test_utils import * -import subprocess - -# This serves the "repo" directory on http://localhost:9427 -repo_server_process = subprocess.Popen(["python3", "-m", "http.server", "9427"], cwd = "repo") - -try: - run_codeql_database_create([], lang="java", extra_args=["--extractor-option=buildless=true"], extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) -finally: - repo_server_process.kill() - -check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless/test.expected b/java/ql/integration-tests/all-platforms/java/buildless/test.expected deleted file mode 100644 index 0213d624f7b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless/test.expected +++ /dev/null @@ -1,9 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -propertiesFiles -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/buildless/test.py b/java/ql/integration-tests/all-platforms/java/buildless/test.py deleted file mode 100644 index 747dd6a82ad..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless/test.py +++ /dev/null @@ -1,8 +0,0 @@ -import sys - -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true"}) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/buildless/test.ql b/java/ql/integration-tests/all-platforms/java/buildless/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/buildless/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/.gitattributes b/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/.gitattributes deleted file mode 100644 index 00a51aff5e5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/force_sequential_test_execution deleted file mode 100644 index 4947fd6fe51..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/force_sequential_test_execution +++ /dev/null @@ -1,4 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. -# Additionally, Android SDK on-demand downloading can fail when multiple tests try to download the same SDK in parallel. diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 249e5832f09..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index e750102e092..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradlew b/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradlew deleted file mode 100755 index a69d9cb6c20..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradlew +++ /dev/null @@ -1,240 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradlew.bat b/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradlew.bat deleted file mode 100644 index f127cfd49d4..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/gradlew.bat +++ /dev/null @@ -1,91 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/test.py deleted file mode 100644 index 23fe1d32fd8..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/test.py deleted file mode 100644 index 23fe1d32fd8..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/test.py deleted file mode 100644 index 1838af5db40..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/test.py +++ /dev/null @@ -1,18 +0,0 @@ -import os -import pathlib -import shutil -import re - -from create_database_utils import * -from diagnostics_test_utils import * - -# Ensure the intended dependency download failure is not cached: -try: - shutil.rmtree(pathlib.Path.home().joinpath(".m2", "repository", "junit", "junit-nonesuch")) -except FileNotFoundError: - pass - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None) - -# Drop the specific output line here because it varies from version to version of Maven. -check_diagnostics(replacements = {"Relevant output line: [^\"]*": ""}) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/.gitattributes b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/.gitattributes deleted file mode 100644 index 00a51aff5e5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/.gitignore b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/.gitignore deleted file mode 100644 index 1b6985c0094..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023e..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/skip-on-platform-osx-arm b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/skip-on-platform-osx-arm deleted file mode 100644 index 8b3140e546e..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/skip-on-platform-osx-arm +++ /dev/null @@ -1,3 +0,0 @@ -2023-11-08: - -There is no Java 8 build available for OSX Arm, therefore this test fails. diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py deleted file mode 100644 index d087461cd89..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -from create_database_utils import * -from diagnostics_test_utils import * - -# Ensure we're using an old Java version that won't work with Gradle -for k in os.environ: - if k.upper() in ["JAVA_HOME_8_X64", "JAVA_HOME_8_ARM64"]: - os.environ["JAVA_HOME"] = os.environ[k] - sep = ";" if platform.system() == "Windows" else ":" - os.environ["PATH"] = "".join([os.path.join(os.environ["JAVA_HOME"], "bin"), sep, os.environ["PATH"]]) - break - -# Ensure the autobuilder *doesn't* see newer Java versions, which it could switch to in order to build the project: -for k in os.environ: - if re.match(r"^JAVA_HOME_\d\d_", k): - del os.environ[k] - -# Use a custom, empty toolchains.xml file so the autobuilder doesn't see any Java versions that may be -# in a system-level toolchains file -toolchains_path = os.path.join(os.getcwd(), 'toolchains.xml') - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None, extra_env={ - 'LGTM_INDEX_MAVEN_TOOLCHAINS_FILE': toolchains_path -}) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/test.py deleted file mode 100644 index 23fe1d32fd8..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/test.py deleted file mode 100644 index 23fe1d32fd8..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-build-system/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/no-build-system/test.py deleted file mode 100644 index 23fe1d32fd8..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/no-build-system/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/test.py deleted file mode 100644 index 23fe1d32fd8..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/.gitattributes b/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/.gitattributes deleted file mode 100644 index 00a51aff5e5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/.gitignore b/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/.gitignore deleted file mode 100644 index 1b6985c0094..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/test.py deleted file mode 100644 index 23fe1d32fd8..00000000000 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -from create_database_utils import * -from diagnostics_test_utils import * - -run_codeql_database_create([], lang="java", runFunction = runUnsuccessfully, db = None) - -check_diagnostics() diff --git a/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.expected b/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.expected deleted file mode 100644 index 8f3e41e24f0..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.expected +++ /dev/null @@ -1 +0,0 @@ -| Test.java:1:14:1:17 | Test | diff --git a/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.py b/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.py deleted file mode 100644 index 1478610427a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.py +++ /dev/null @@ -1,6 +0,0 @@ -import urllib.request -from create_database_utils import * - -urllib.request.urlretrieve("https://repo1.maven.org/maven2/org/eclipse/jdt/ecj/3.37.0/ecj-3.37.0.jar", "ecj.jar") - -run_codeql_database_create(["java -cp ecj.jar org.eclipse.jdt.internal.compiler.batch.Main -noExit Test.java"], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.ql b/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.ql deleted file mode 100644 index a61eb5e336a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/test.ql +++ /dev/null @@ -1,3 +0,0 @@ -import java - -select any(Class c | c.fromSource()) diff --git a/java/ql/integration-tests/all-platforms/java/ecj-sample/test.expected b/java/ql/integration-tests/all-platforms/java/ecj-sample/test.expected deleted file mode 100644 index 8f3e41e24f0..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ecj-sample/test.expected +++ /dev/null @@ -1 +0,0 @@ -| Test.java:1:14:1:17 | Test | diff --git a/java/ql/integration-tests/all-platforms/java/ecj-sample/test.py b/java/ql/integration-tests/all-platforms/java/ecj-sample/test.py deleted file mode 100644 index 9acadbdb6f1..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ecj-sample/test.py +++ /dev/null @@ -1,6 +0,0 @@ -import urllib.request -from create_database_utils import * - -urllib.request.urlretrieve("https://repo1.maven.org/maven2/org/eclipse/jdt/ecj/3.37.0/ecj-3.37.0.jar", "ecj.jar") - -run_codeql_database_create(["java -cp ecj.jar org.eclipse.jdt.internal.compiler.batch.Main Test.java"], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/ecj-sample/test.ql b/java/ql/integration-tests/all-platforms/java/ecj-sample/test.ql deleted file mode 100644 index a61eb5e336a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ecj-sample/test.ql +++ /dev/null @@ -1,3 +0,0 @@ -import java - -select any(Class c | c.fromSource()) diff --git a/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/test.py b/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/test.py deleted file mode 100644 index 40313e2654a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/test.py +++ /dev/null @@ -1,8 +0,0 @@ -import urllib.request -from create_database_utils import * - -urllib.request.urlretrieve("https://repo1.maven.org/maven2/org/eclipse/jdt/ecj/3.38.0/ecj-3.38.0.jar", "ecj.jar") - -# This tests the case where ECJ emits a RuntimeIn/VisibleAnnotations attribute that isn't the same size as the corresponding method argument list, in particular due to forgetting to include the synthetic parameters added to explicit enumeration constructors. - -run_codeql_database_create(["java -cp ecj.jar org.eclipse.jdt.internal.compiler.batch.Main Test.java -d out -source 8", "java -cp ecj.jar org.eclipse.jdt.internal.compiler.batch.Main Test2.java -cp out -source 8"], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/.gitattributes b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/.gitattributes deleted file mode 100644 index 097f9f98d9e..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# Linux start script should use lf -/gradlew text eol=lf - -# These are Windows script files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/.gitignore b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/.gitignore deleted file mode 100644 index 1b6985c0094..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 249e5832f09..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index ae04661ee73..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradlew b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradlew deleted file mode 100755 index a69d9cb6c20..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradlew +++ /dev/null @@ -1,240 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradlew.bat b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradlew.bat deleted file mode 100644 index f127cfd49d4..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/gradlew.bat +++ /dev/null @@ -1,91 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.expected b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.expected deleted file mode 100644 index 6c275db6911..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.expected +++ /dev/null @@ -1,4 +0,0 @@ -#select -| app/src/main/java/test/App.java:0:0:0:0 | App | -| app/src/test/java/test/AppTest.java:0:0:0:0 | AppTest | -xmlFiles diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.py b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.py deleted file mode 100644 index ab8845cbd73..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.ql b/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/.gitattributes b/java/ql/integration-tests/all-platforms/java/gradle-sample/.gitattributes deleted file mode 100644 index 00a51aff5e5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/.gitignore b/java/ql/integration-tests/all-platforms/java/gradle-sample/.gitignore deleted file mode 100644 index 1b6985c0094..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/gradle-sample/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/gradle-sample/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023e..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/gradle-sample/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/test.expected b/java/ql/integration-tests/all-platforms/java/gradle-sample/test.expected deleted file mode 100644 index e7dd5838e6b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample/test.expected +++ /dev/null @@ -1,5 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| gradle/verification-metadata.xml:0:0:0:0 | gradle/verification-metadata.xml | diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/test.py b/java/ql/integration-tests/all-platforms/java/gradle-sample/test.py deleted file mode 100644 index 1cb6e142763..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample/test.py +++ /dev/null @@ -1,8 +0,0 @@ -import sys - -from create_database_utils import * - -#The version of gradle used doesn't work on java 17 -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/test.ql b/java/ql/integration-tests/all-platforms/java/gradle-sample/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/gradle-sample/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/java-web-jsp/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/java-web-jsp/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/test.py b/java/ql/integration-tests/all-platforms/java/java-web-jsp/test.py deleted file mode 100644 index e87b8a1c009..00000000000 --- a/java/ql/integration-tests/all-platforms/java/java-web-jsp/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create(["mvn clean package -P tomcat8Jsp"], lang="java", extra_env = {"CODEQL_EXTRACTOR_JAVA_JSP": "true"}) diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/test.ql b/java/ql/integration-tests/all-platforms/java/java-web-jsp/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/java-web-jsp/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-enforcer/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-enforcer/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.expected b/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.expected deleted file mode 100644 index fc706ca445a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.expected +++ /dev/null @@ -1,15 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/page.xml:0:0:0:0 | target/classes/page.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | -propertiesFiles -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| target/classes/my-app.properties:0:0:0:0 | target/classes/my-app.properties | -| target/maven-archiver/pom.properties:0:0:0:0 | target/maven-archiver/pom.properties | -| test-db/log/ext/javac-1.properties:0:0:0:0 | test-db/log/ext/javac-1.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.py b/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.py deleted file mode 100644 index ab8845cbd73..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.ql b/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-enforcer/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.expected b/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.expected deleted file mode 100644 index fc706ca445a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.expected +++ /dev/null @@ -1,15 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/page.xml:0:0:0:0 | target/classes/page.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | -propertiesFiles -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| target/classes/my-app.properties:0:0:0:0 | target/classes/my-app.properties | -| target/maven-archiver/pom.properties:0:0:0:0 | target/maven-archiver/pom.properties | -| test-db/log/ext/javac-1.properties:0:0:0:0 | test-db/log/ext/javac-1.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.py b/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.py deleted file mode 100644 index 6d5ed7563ef..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java", extra_env = {"LGTM_INDEX_PROPERTIES_FILES": "true"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.ql b/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.expected b/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.expected deleted file mode 100644 index 7857752a01b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.expected +++ /dev/null @@ -1,7 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.py b/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.py deleted file mode 100644 index 65499f91e25..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.py +++ /dev/null @@ -1,10 +0,0 @@ -import sys - -from create_database_utils import * - -# Test that a build with 60 ~1MB XML docs extracts does not extract them, but we fall back to by-name mode instead: -for i in range(60): - with open("generated-%d.xml" % i, "w") as f: - f.write("" + ("a" * 1000000) + "") - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.ql b/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.expected b/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.expected deleted file mode 100644 index 82e6308469f..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.expected +++ /dev/null @@ -1,14 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| generated-0.xml:0:0:0:0 | generated-0.xml | -| generated-1.xml:0:0:0:0 | generated-1.xml | -| generated-2.xml:0:0:0:0 | generated-2.xml | -| generated-3.xml:0:0:0:0 | generated-3.xml | -| generated-4.xml:0:0:0:0 | generated-4.xml | -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/page.xml:0:0:0:0 | target/classes/page.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.py b/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.py deleted file mode 100644 index c951c4c6f0d..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.py +++ /dev/null @@ -1,10 +0,0 @@ -import sys - -from create_database_utils import * - -# Test that a build with 5 ~1MB XML docs extracts them: -for i in range(5): - with open("generated-%d.xml" % i, "w") as f: - f.write("" + ("a" * 1000000) + "") - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.ql b/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.expected b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.expected deleted file mode 100644 index 05f39a55338..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.expected +++ /dev/null @@ -1,9 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/page.xml:0:0:0:0 | target/classes/page.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.py b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.py deleted file mode 100644 index 76966e04fb3..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java", extra_env = {"LGTM_INDEX_XML_MODE": "all"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.ql b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.expected b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.expected deleted file mode 100644 index 7857752a01b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.expected +++ /dev/null @@ -1,7 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.py b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.py deleted file mode 100644 index 7d004ffb52f..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java", extra_env = {"LGTM_INDEX_XML_MODE": "byname"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.ql b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.expected b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.expected deleted file mode 100644 index 2f2c7ce04f2..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.expected +++ /dev/null @@ -1,4 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.py b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.py deleted file mode 100644 index 376596d1f9c..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java", extra_env = {"LGTM_INDEX_XML_MODE": "disabled"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.ql b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.expected b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.expected deleted file mode 100644 index 7857752a01b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.expected +++ /dev/null @@ -1,7 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.py b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.py deleted file mode 100644 index 7169e99d71f..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java", extra_env = {"LGTM_INDEX_XML_MODE": "smart"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.ql b/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-sample/force_sequential_test_execution deleted file mode 100644 index dd90439bca5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -# Concurrent Maven processes using ~/.m2/repository is not safe, so this test must run sequentially diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/test.expected b/java/ql/integration-tests/all-platforms/java/maven-sample/test.expected deleted file mode 100644 index fc706ca445a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample/test.expected +++ /dev/null @@ -1,15 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/page.xml:0:0:0:0 | target/classes/page.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | -propertiesFiles -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| target/classes/my-app.properties:0:0:0:0 | target/classes/my-app.properties | -| target/maven-archiver/pom.properties:0:0:0:0 | target/maven-archiver/pom.properties | -| test-db/log/ext/javac-1.properties:0:0:0:0 | test-db/log/ext/javac-1.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/test.py b/java/ql/integration-tests/all-platforms/java/maven-sample/test.py deleted file mode 100644 index ab8845cbd73..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -from create_database_utils import * - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/test.ql b/java/ql/integration-tests/all-platforms/java/maven-sample/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-sample/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/force_sequential_test_execution deleted file mode 100644 index 44bcad8d582..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -The wrapper downloading a Maven distribution multiple times in parallel is not safe. diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.expected b/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.expected deleted file mode 100644 index dd77a3fab0a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.expected +++ /dev/null @@ -1,16 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/page.xml:0:0:0:0 | target/classes/page.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | -propertiesFiles -| .mvn/wrapper/maven-wrapper.properties:0:0:0:0 | .mvn/wrapper/maven-wrapper.properties | -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| target/classes/my-app.properties:0:0:0:0 | target/classes/my-app.properties | -| target/maven-archiver/pom.properties:0:0:0:0 | target/maven-archiver/pom.properties | -| test-db/log/ext/javac-1.properties:0:0:0:0 | test-db/log/ext/javac-1.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.py b/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.py deleted file mode 100644 index 5311b982c2b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * -from maven_wrapper_test_utils import * - -run_codeql_database_create([], lang="java") -check_maven_wrapper_exists("3.9.4") diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.ql b/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/force_sequential_test_execution deleted file mode 100644 index 44bcad8d582..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -The wrapper downloading a Maven distribution multiple times in parallel is not safe. diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.expected b/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.expected deleted file mode 100644 index dd77a3fab0a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.expected +++ /dev/null @@ -1,16 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/page.xml:0:0:0:0 | target/classes/page.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | -propertiesFiles -| .mvn/wrapper/maven-wrapper.properties:0:0:0:0 | .mvn/wrapper/maven-wrapper.properties | -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| target/classes/my-app.properties:0:0:0:0 | target/classes/my-app.properties | -| target/maven-archiver/pom.properties:0:0:0:0 | target/maven-archiver/pom.properties | -| test-db/log/ext/javac-1.properties:0:0:0:0 | test-db/log/ext/javac-1.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.py b/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.py deleted file mode 100644 index 5311b982c2b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * -from maven_wrapper_test_utils import * - -run_codeql_database_create([], lang="java") -check_maven_wrapper_exists("3.9.4") diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.ql b/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/maven-wrapper/force_sequential_test_execution deleted file mode 100644 index 44bcad8d582..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper/force_sequential_test_execution +++ /dev/null @@ -1 +0,0 @@ -The wrapper downloading a Maven distribution multiple times in parallel is not safe. diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.expected b/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.expected deleted file mode 100644 index dd77a3fab0a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.expected +++ /dev/null @@ -1,16 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| pom.xml:0:0:0:0 | pom.xml | -| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | -| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | -| target/classes/page.xml:0:0:0:0 | target/classes/page.xml | -| target/classes/struts.xml:0:0:0:0 | target/classes/struts.xml | -propertiesFiles -| .mvn/wrapper/maven-wrapper.properties:0:0:0:0 | .mvn/wrapper/maven-wrapper.properties | -| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | -| target/classes/my-app.properties:0:0:0:0 | target/classes/my-app.properties | -| target/maven-archiver/pom.properties:0:0:0:0 | target/maven-archiver/pom.properties | -| test-db/log/ext/javac-1.properties:0:0:0:0 | test-db/log/ext/javac-1.properties | -| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.py b/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.py deleted file mode 100644 index 5311b982c2b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -from create_database_utils import * -from maven_wrapper_test_utils import * - -run_codeql_database_create([], lang="java") -check_maven_wrapper_exists("3.9.4") diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.ql b/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.ql deleted file mode 100644 index 25cd26fdd14..00000000000 --- a/java/ql/integration-tests/all-platforms/java/maven-wrapper/test.ql +++ /dev/null @@ -1,9 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } - -query predicate propertiesFiles(File f) { f.getExtension() = "properties" } diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/test.py b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/test.py deleted file mode 100644 index c4726143c50..00000000000 --- a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/test.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys - -from create_database_utils import * -import subprocess -import os - -try_use_java11() - -os.mkdir("mod1obj") -os.mkdir("mod2obj") - -subprocess.check_call(["javac", "mod1/module-info.java", "mod1/mod1pkg/Mod1Class.java", "-d", "mod1obj"]) -subprocess.check_call(["jar", "-c", "-f", "mod1.jar", "-C", "mod1obj", "mod1pkg/Mod1Class.class", "--release", "9", "-C", "mod1obj", "module-info.class"]) - -run_codeql_database_create(["javac mod2/mod2pkg/User.java mod2/module-info.java -d mod2obj -p mod1.jar"], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/test.py b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/test.py deleted file mode 100644 index c912a0cb27a..00000000000 --- a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/test.py +++ /dev/null @@ -1,13 +0,0 @@ -import sys - -from create_database_utils import * -import subprocess -import os - -os.mkdir("mod1obj") -os.mkdir("mod2obj") - -subprocess.check_call(["javac", "mod1/module-info.java", "mod1/mod1pkg/Mod1Class.java", "-d", "mod1obj"]) -subprocess.check_call(["jar", "-c", "-f", "mod1.jar", "-C", "mod1obj", "mod1pkg/Mod1Class.class", "--release", "9", "-C", "mod1obj", "module-info.class"]) - -run_codeql_database_create(["javac mod2/mod2pkg/User.java mod2/module-info.java -d mod2obj -p mod1.jar"], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitattributes b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitattributes deleted file mode 100644 index 00a51aff5e5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitignore b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitignore deleted file mode 100644 index 1b6985c0094..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml deleted file mode 100644 index 14a69b8178b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - true - false - - \ No newline at end of file diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 12d38de6a48..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew deleted file mode 100755 index 4f906e0c811..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew.bat b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew.bat deleted file mode 100644 index 107acd32c4e..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.expected b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.expected deleted file mode 100644 index e7dd5838e6b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.expected +++ /dev/null @@ -1,5 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| gradle/verification-metadata.xml:0:0:0:0 | gradle/verification-metadata.xml | diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.py b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.py deleted file mode 100644 index 846a89e8703..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.py +++ /dev/null @@ -1,31 +0,0 @@ -import sys - -from create_database_utils import * -import shutil -import os.path -import tempfile -import platform - -#The version of gradle used doesn't work on java 17 -try_use_java11() - -gradle_override_dir = tempfile.mkdtemp() -if platform.system() == "Windows": - with open(os.path.join(gradle_override_dir, "gradle.bat"), "w") as f: - f.write("@echo off\nexit /b 2\n") -else: - gradlepath = os.path.join(gradle_override_dir, "gradle") - with open(gradlepath, "w") as f: - f.write("#!/bin/bash\nexit 1\n") - os.chmod(gradlepath, 0o0755) - -oldpath = os.getenv("PATH") -os.environ["PATH"] = gradle_override_dir + os.pathsep + oldpath - -try: - run_codeql_database_create([], lang="java") -finally: - try: - shutil.rmtree(gradle_override_dir) - except Exception as e: - pass diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.ql b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/.gitattributes b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/.gitattributes deleted file mode 100644 index 00a51aff5e5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/.gitignore b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/.gitignore deleted file mode 100644 index 1b6985c0094..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradle/verification-metadata.xml b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradle/verification-metadata.xml deleted file mode 100644 index 14a69b8178b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradle/verification-metadata.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - true - false - - \ No newline at end of file diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 12d38de6a48..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradlew b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradlew deleted file mode 100755 index 4f906e0c811..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradlew.bat b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradlew.bat deleted file mode 100644 index 107acd32c4e..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.expected b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.expected deleted file mode 100644 index e7dd5838e6b..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.expected +++ /dev/null @@ -1,5 +0,0 @@ -#select -| src/main/java/com/example/App.java:0:0:0:0 | App | -| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | -xmlFiles -| gradle/verification-metadata.xml:0:0:0:0 | gradle/verification-metadata.xml | diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.py b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.py deleted file mode 100644 index 1cb6e142763..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.py +++ /dev/null @@ -1,8 +0,0 @@ -import sys - -from create_database_utils import * - -#The version of gradle used doesn't work on java 17 -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.ql b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/qlpack.yml b/java/ql/integration-tests/all-platforms/java/qlpack.yml deleted file mode 100644 index 4994af85a75..00000000000 --- a/java/ql/integration-tests/all-platforms/java/qlpack.yml +++ /dev/null @@ -1,5 +0,0 @@ -dependencies: - codeql/java-all: '*' - codeql/java-tests: '*' - codeql/java-queries: '*' -warnOnImplicitThis: true diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/.gitattributes b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/.gitattributes deleted file mode 100644 index 00a51aff5e5..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/.gitignore b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/.gitignore deleted file mode 100644 index c2065bc2620..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -HELP.md -.gradle -build/ -!gradle/wrapper/gradle-wrapper.jar -!**/src/main/**/build/ -!**/src/test/**/build/ - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache -bin/ -!**/src/main/**/bin/ -!**/src/test/**/bin/ - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr -out/ -!**/src/main/**/out/ -!**/src/test/**/out/ - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ - -### VS Code ### -.vscode/ diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/force_sequential_test_execution deleted file mode 100644 index b0e2500b259..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/force_sequential_test_execution +++ /dev/null @@ -1,3 +0,0 @@ -# We currently have a bug where gradle tests become flaky when executed in parallel -# - sometimes, gradle fails to connect to the gradle daemon. -# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e6441136f3d..00000000000 Binary files a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index b82aa23a4f0..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradlew b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradlew deleted file mode 100755 index 1aa94a42690..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradlew.bat b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradlew.bat deleted file mode 100644 index 25da30dbdee..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.expected b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.expected deleted file mode 100644 index f8e614cd984..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.expected +++ /dev/null @@ -1,4 +0,0 @@ -#select -| src/main/java/com/github/springbootsample/SpringBootSampleApplication.java:0:0:0:0 | SpringBootSampleApplication | -| src/test/java/com/github/springbootsample/SpringBootSampleApplicationTests.java:0:0:0:0 | SpringBootSampleApplicationTests | -xmlFiles diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.py b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.py deleted file mode 100644 index 1cb6e142763..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.py +++ /dev/null @@ -1,8 +0,0 @@ -import sys - -from create_database_utils import * - -#The version of gradle used doesn't work on java 17 -try_use_java11() - -run_codeql_database_create([], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.ql b/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.ql deleted file mode 100644 index c11b8fba707..00000000000 --- a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/test.ql +++ /dev/null @@ -1,7 +0,0 @@ -import java - -from File f -where f.isSourceFile() -select f - -query predicate xmlFiles(XmlFile x) { any() } diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/build.gradle b/java/ql/integration-tests/java/android-8-sample/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/build.gradle rename to java/ql/integration-tests/java/android-8-sample/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/project/build.gradle b/java/ql/integration-tests/java/android-8-sample/project/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/project/build.gradle rename to java/ql/integration-tests/java/android-8-sample/project/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-8-sample/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-8-sample/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-8-sample/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-8-sample/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/settings.gradle b/java/ql/integration-tests/java/android-8-sample/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/settings.gradle rename to java/ql/integration-tests/java/android-8-sample/settings.gradle diff --git a/java/ql/integration-tests/java/android-8-sample/source_archive.expected b/java/ql/integration-tests/java/android-8-sample/source_archive.expected new file mode 100644 index 00000000000..8d61145f807 --- /dev/null +++ b/java/ql/integration-tests/java/android-8-sample/source_archive.expected @@ -0,0 +1,27 @@ +.gradle/8.0/dependencies-accessors/gc.properties +.gradle/8.0/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalReportRelease/module.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalReportRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml +project/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/release/packageReleaseResources/merger.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/test.py b/java/ql/integration-tests/java/android-8-sample/test.py similarity index 66% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/test.py rename to java/ql/integration-tests/java/android-8-sample/test.py index 3a0b27fe5ce..72e3c5d3fc4 100644 --- a/java/ql/integration-tests/all-platforms/java/android-8-sample/test.py +++ b/java/ql/integration-tests/java/android-8-sample/test.py @@ -1,10 +1,4 @@ -import sys - -from create_database_utils import * - # Put Java 11 on the path so as to challenge our version selection logic: Java 11 is unsuitable for Android Gradle Plugin 8+, # so it will be necessary to notice Java 17 available in the environment and actively select it. - -try_use_java11() - -run_codeql_database_create([], lang="java") +def test(codeql, use_java_11, java, gradle_8_0, android_sdk): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/build.gradle.kts b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/build.gradle.kts rename to java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/project/build.gradle.kts b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/project/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/project/build.gradle.kts rename to java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/project/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/settings.gradle.kts b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/settings.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/settings.gradle.kts rename to java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/settings.gradle.kts diff --git a/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/source_archive.expected b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/source_archive.expected new file mode 100644 index 00000000000..70b1edf245a --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/source_archive.expected @@ -0,0 +1,26 @@ +.gradle/7.4/dependencies-accessors/gc.properties +.gradle/7.4/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalReportRelease/module.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalReportRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/test.py b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/test.py new file mode 100644 index 00000000000..e3a791a59f3 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-kotlin-build-script-no-wrapper/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, android_sdk): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/build.gradle.kts b/java/ql/integration-tests/java/android-sample-kotlin-build-script/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/build.gradle.kts rename to java/ql/integration-tests/java/android-sample-kotlin-build-script/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/project/build.gradle.kts b/java/ql/integration-tests/java/android-sample-kotlin-build-script/project/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/project/build.gradle.kts rename to java/ql/integration-tests/java/android-sample-kotlin-build-script/project/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-sample-kotlin-build-script/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-sample-kotlin-build-script/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-sample-kotlin-build-script/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-sample-kotlin-build-script/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/settings.gradle.kts b/java/ql/integration-tests/java/android-sample-kotlin-build-script/settings.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/settings.gradle.kts rename to java/ql/integration-tests/java/android-sample-kotlin-build-script/settings.gradle.kts diff --git a/java/ql/integration-tests/java/android-sample-kotlin-build-script/source_archive.expected b/java/ql/integration-tests/java/android-sample-kotlin-build-script/source_archive.expected new file mode 100644 index 00000000000..70b1edf245a --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-kotlin-build-script/source_archive.expected @@ -0,0 +1,26 @@ +.gradle/7.4/dependencies-accessors/gc.properties +.gradle/7.4/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalReportRelease/module.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalReportRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/android-sample-kotlin-build-script/test.py b/java/ql/integration-tests/java/android-sample-kotlin-build-script/test.py new file mode 100644 index 00000000000..d3399e414e6 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-kotlin-build-script/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, gradle_7_4, android_sdk): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/build.gradle b/java/ql/integration-tests/java/android-sample-no-wrapper/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/build.gradle rename to java/ql/integration-tests/java/android-sample-no-wrapper/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/project/build.gradle b/java/ql/integration-tests/java/android-sample-no-wrapper/project/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/project/build.gradle rename to java/ql/integration-tests/java/android-sample-no-wrapper/project/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-sample-no-wrapper/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-sample-no-wrapper/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-sample-no-wrapper/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-sample-no-wrapper/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/settings.gradle b/java/ql/integration-tests/java/android-sample-no-wrapper/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-no-wrapper/settings.gradle rename to java/ql/integration-tests/java/android-sample-no-wrapper/settings.gradle diff --git a/java/ql/integration-tests/java/android-sample-no-wrapper/source_archive.expected b/java/ql/integration-tests/java/android-sample-no-wrapper/source_archive.expected new file mode 100644 index 00000000000..70b1edf245a --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-no-wrapper/source_archive.expected @@ -0,0 +1,26 @@ +.gradle/7.4/dependencies-accessors/gc.properties +.gradle/7.4/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalReportRelease/module.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalReportRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/android-sample-no-wrapper/test.py b/java/ql/integration-tests/java/android-sample-no-wrapper/test.py new file mode 100644 index 00000000000..e3a791a59f3 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-no-wrapper/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, android_sdk): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/README b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/README similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/README rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/README diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/build.gradle.kts b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/build.gradle.kts rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/build.gradle.kts b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/build.gradle.kts rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/settings.gradle.kts b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/settings.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script-no-wrapper/settings.gradle.kts rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/settings.gradle.kts diff --git a/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/source_archive.expected b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/source_archive.expected new file mode 100644 index 00000000000..a8f354b9e17 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/source_archive.expected @@ -0,0 +1,29 @@ +.gradle/7.0.2/dependencies-accessors/gc.properties +.gradle/7.0.2/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalRelease/module.xml +project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/mergeReleaseResources/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.py b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.py new file mode 100644 index 00000000000..ca4ae04350f --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script-no-wrapper/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, android_sdk, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/.gitattributes b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/.gitattributes rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/README b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/README similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/README rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/README diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/build.gradle.kts b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/build.gradle.kts rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/project/build.gradle.kts b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/project/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/project/build.gradle.kts rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/project/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/settings.gradle.kts b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/settings.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/settings.gradle.kts rename to java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/settings.gradle.kts diff --git a/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/source_archive.expected b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/source_archive.expected new file mode 100644 index 00000000000..2d3a437d507 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/source_archive.expected @@ -0,0 +1,29 @@ +.gradle/7.4/dependencies-accessors/gc.properties +.gradle/7.4/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalRelease/module.xml +project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/mergeReleaseResources/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/test.py b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/test.py new file mode 100644 index 00000000000..d3399e414e6 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-old-style-kotlin-build-script/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, gradle_7_4, android_sdk): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/README b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/README similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/README rename to java/ql/integration-tests/java/android-sample-old-style-no-wrapper/README diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/build.gradle b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/build.gradle rename to java/ql/integration-tests/java/android-sample-old-style-no-wrapper/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/project/build.gradle b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/project/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/project/build.gradle rename to java/ql/integration-tests/java/android-sample-old-style-no-wrapper/project/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-sample-old-style-no-wrapper/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-sample-old-style-no-wrapper/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/settings.gradle b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-no-wrapper/settings.gradle rename to java/ql/integration-tests/java/android-sample-old-style-no-wrapper/settings.gradle diff --git a/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/source_archive.expected b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/source_archive.expected new file mode 100644 index 00000000000..a8f354b9e17 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/source_archive.expected @@ -0,0 +1,29 @@ +.gradle/7.0.2/dependencies-accessors/gc.properties +.gradle/7.0.2/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalRelease/module.xml +project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/mergeReleaseResources/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/test.py b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/test.py new file mode 100644 index 00000000000..ca4ae04350f --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-old-style-no-wrapper/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, android_sdk, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/README b/java/ql/integration-tests/java/android-sample-old-style/README similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style/README rename to java/ql/integration-tests/java/android-sample-old-style/README diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/build.gradle b/java/ql/integration-tests/java/android-sample-old-style/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style/build.gradle rename to java/ql/integration-tests/java/android-sample-old-style/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/project/build.gradle b/java/ql/integration-tests/java/android-sample-old-style/project/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style/project/build.gradle rename to java/ql/integration-tests/java/android-sample-old-style/project/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-sample-old-style/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-sample-old-style/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-sample-old-style/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-sample-old-style/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/settings.gradle b/java/ql/integration-tests/java/android-sample-old-style/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style/settings.gradle rename to java/ql/integration-tests/java/android-sample-old-style/settings.gradle diff --git a/java/ql/integration-tests/java/android-sample-old-style/source_archive.expected b/java/ql/integration-tests/java/android-sample-old-style/source_archive.expected new file mode 100644 index 00000000000..2d3a437d507 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-old-style/source_archive.expected @@ -0,0 +1,29 @@ +.gradle/7.4/dependencies-accessors/gc.properties +.gradle/7.4/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-testArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalRelease/module.xml +project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/mergeReleaseResources/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/lint_vital_partial_results/release/out/lint-issues-release.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/android-sample-old-style/test.py b/java/ql/integration-tests/java/android-sample-old-style/test.py new file mode 100644 index 00000000000..d3399e414e6 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample-old-style/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, gradle_7_4, android_sdk): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/build.gradle b/java/ql/integration-tests/java/android-sample/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample/build.gradle rename to java/ql/integration-tests/java/android-sample/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/project/build.gradle b/java/ql/integration-tests/java/android-sample/project/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample/project/build.gradle rename to java/ql/integration-tests/java/android-sample/project/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/android-sample/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/android-sample/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/android-sample/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/android-sample/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/settings.gradle b/java/ql/integration-tests/java/android-sample/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample/settings.gradle rename to java/ql/integration-tests/java/android-sample/settings.gradle diff --git a/java/ql/integration-tests/java/android-sample/source_archive.expected b/java/ql/integration-tests/java/android-sample/source_archive.expected new file mode 100644 index 00000000000..70b1edf245a --- /dev/null +++ b/java/ql/integration-tests/java/android-sample/source_archive.expected @@ -0,0 +1,26 @@ +.gradle/7.4/dependencies-accessors/gc.properties +.gradle/7.4/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +project/build/generated/source/buildConfig/release/com/github/androidsample/BuildConfig.java +project/build/intermediates/app_metadata/release/app-metadata.properties +project/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml +project/build/intermediates/incremental/lintVitalReportRelease/module.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml +project/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml +project/build/intermediates/incremental/lintVitalReportRelease/release.xml +project/build/intermediates/incremental/mergeReleaseAssets/merger.xml +project/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +project/build/intermediates/incremental/mergeReleaseShaders/merger.xml +project/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties +project/build/intermediates/incremental/release/mergeReleaseResources/merger.xml +project/build/intermediates/merged_manifest/release/AndroidManifest.xml +project/build/intermediates/merged_manifests/release/AndroidManifest.xml +project/build/intermediates/packaged_manifests/release/AndroidManifest.xml +project/src/main/AndroidManifest.xml +project/src/main/java/com/github/androidsample/Main.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/android-sample/test.py b/java/ql/integration-tests/java/android-sample/test.py new file mode 100644 index 00000000000..d3399e414e6 --- /dev/null +++ b/java/ql/integration-tests/java/android-sample/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, gradle_7_4, android_sdk): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/ant-sample/build.xml b/java/ql/integration-tests/java/ant-sample/build.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ant-sample/build.xml rename to java/ql/integration-tests/java/ant-sample/build.xml diff --git a/java/ql/integration-tests/all-platforms/java/ant-sample/src/main/java/com/example/App.java b/java/ql/integration-tests/java/ant-sample/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ant-sample/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/ant-sample/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/ant-sample/test.expected b/java/ql/integration-tests/java/ant-sample/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ant-sample/test.expected rename to java/ql/integration-tests/java/ant-sample/test.expected diff --git a/java/ql/integration-tests/java/ant-sample/test.py b/java/ql/integration-tests/java/ant-sample/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/ant-sample/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/test.ql b/java/ql/integration-tests/java/ant-sample/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/test.ql rename to java/ql/integration-tests/java/ant-sample/test.ql diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-dependency-different-repository/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-dependency-different-repository/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/pom.xml b/java/ql/integration-tests/java/buildless-dependency-different-repository/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/pom.xml rename to java/ql/integration-tests/java/buildless-dependency-different-repository/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.md5 b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.md5 rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.sha1 b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.sha1 rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.md5 b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.md5 rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.sha1 b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.sha1 rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.md5 b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.md5 rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.sha1 b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.sha1 rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.md5 b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.md5 rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.sha1 b/java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.sha1 rename to java/ql/integration-tests/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/src/main/java/Test.java b/java/ql/integration-tests/java/buildless-dependency-different-repository/src/main/java/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/src/main/java/Test.java rename to java/ql/integration-tests/java/buildless-dependency-different-repository/src/main/java/Test.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.expected b/java/ql/integration-tests/java/buildless-dependency-different-repository/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.expected rename to java/ql/integration-tests/java/buildless-dependency-different-repository/test.expected diff --git a/java/ql/integration-tests/java/buildless-dependency-different-repository/test.py b/java/ql/integration-tests/java/buildless-dependency-different-repository/test.py new file mode 100644 index 00000000000..6e0e201d9a2 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-dependency-different-repository/test.py @@ -0,0 +1,19 @@ +import subprocess +import logging + + +def test(codeql, java): + # Each of these serves the "repo" and "repo2" directories on http://localhost:924[89] + repo_server_process = subprocess.Popen(["python3", "-m", "http.server", "9428"], cwd="repo") + repo_server_process2 = subprocess.Popen(["python3", "-m", "http.server", "9429"], cwd="repo2") + try: + codeql.database.create( + extractor_option="buildless=true", + _env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}, + ) + finally: + try: + repo_server_process.kill() + except Exception as e: + logging.error("Failed to kill server 1:", e) + repo_server_process2.kill() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.ql b/java/ql/integration-tests/java/buildless-dependency-different-repository/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.ql rename to java/ql/integration-tests/java/buildless-dependency-different-repository/test.ql diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/DatabaseQualityDiagnostics.expected b/java/ql/integration-tests/java/buildless-erroneous/DatabaseQualityDiagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-erroneous/DatabaseQualityDiagnostics.expected rename to java/ql/integration-tests/java/buildless-erroneous/DatabaseQualityDiagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/DatabaseQualityDiagnostics.qlref b/java/ql/integration-tests/java/buildless-erroneous/DatabaseQualityDiagnostics.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-erroneous/DatabaseQualityDiagnostics.qlref rename to java/ql/integration-tests/java/buildless-erroneous/DatabaseQualityDiagnostics.qlref diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/ExtractorInformation.expected b/java/ql/integration-tests/java/buildless-erroneous/ExtractorInformation.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-erroneous/ExtractorInformation.expected rename to java/ql/integration-tests/java/buildless-erroneous/ExtractorInformation.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/ExtractorInformation.qlref b/java/ql/integration-tests/java/buildless-erroneous/ExtractorInformation.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-erroneous/ExtractorInformation.qlref rename to java/ql/integration-tests/java/buildless-erroneous/ExtractorInformation.qlref diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/Test.java b/java/ql/integration-tests/java/buildless-erroneous/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-erroneous/Test.java rename to java/ql/integration-tests/java/buildless-erroneous/Test.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected b/java/ql/integration-tests/java/buildless-erroneous/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected rename to java/ql/integration-tests/java/buildless-erroneous/diagnostics.expected diff --git a/java/ql/integration-tests/java/buildless-erroneous/test.py b/java/ql/integration-tests/java/buildless-erroneous/test.py new file mode 100644 index 00000000000..834b1132cf1 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-erroneous/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true"}) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/build.gradle b/java/ql/integration-tests/java/buildless-gradle-classifiers/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/build.gradle rename to java/ql/integration-tests/java/buildless-gradle-classifiers/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-gradle-classifiers/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-gradle-classifiers/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/diagnostics.expected b/java/ql/integration-tests/java/buildless-gradle-classifiers/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/diagnostics.expected rename to java/ql/integration-tests/java/buildless-gradle-classifiers/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/settings.gradle b/java/ql/integration-tests/java/buildless-gradle-classifiers/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/settings.gradle rename to java/ql/integration-tests/java/buildless-gradle-classifiers/settings.gradle diff --git a/java/ql/integration-tests/java/buildless-gradle-classifiers/source_archive.expected b/java/ql/integration-tests/java/buildless-gradle-classifiers/source_archive.expected new file mode 100644 index 00000000000..1ee055eeb02 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-gradle-classifiers/source_archive.expected @@ -0,0 +1,7 @@ +.gradle/8.3/dependencies-accessors/gc.properties +.gradle/8.3/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +src/main/java/com/fractestexample/Test.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/src/main/java/com/fractestexample/Test.java b/java/ql/integration-tests/java/buildless-gradle-classifiers/src/main/java/com/fractestexample/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/src/main/java/com/fractestexample/Test.java rename to java/ql/integration-tests/java/buildless-gradle-classifiers/src/main/java/com/fractestexample/Test.java diff --git a/java/ql/integration-tests/java/buildless-gradle-classifiers/test.py b/java/ql/integration-tests/java/buildless-gradle-classifiers/test.py new file mode 100644 index 00000000000..bea3e5f552c --- /dev/null +++ b/java/ql/integration-tests/java/buildless-gradle-classifiers/test.py @@ -0,0 +1,7 @@ +def test(codeql, java, gradle_8_3): + codeql.database.create( + _env={ + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", + } + ) diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/.gitattributes b/java/ql/integration-tests/java/buildless-gradle-timeout/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script/.gitattributes rename to java/ql/integration-tests/java/buildless-gradle-timeout/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/.gitignore b/java/ql/integration-tests/java/buildless-gradle-timeout/.gitignore similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-classifiers/.gitignore rename to java/ql/integration-tests/java/buildless-gradle-timeout/.gitignore diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/build.gradle b/java/ql/integration-tests/java/buildless-gradle-timeout/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/build.gradle rename to java/ql/integration-tests/java/buildless-gradle-timeout/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/diagnostics.expected b/java/ql/integration-tests/java/buildless-gradle-timeout/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/diagnostics.expected rename to java/ql/integration-tests/java/buildless-gradle-timeout/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradle/verification-metadata.xml b/java/ql/integration-tests/java/buildless-gradle-timeout/gradle/verification-metadata.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradle/verification-metadata.xml rename to java/ql/integration-tests/java/buildless-gradle-timeout/gradle/verification-metadata.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/java/buildless-gradle-timeout/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradle/wrapper/gradle-wrapper.jar rename to java/ql/integration-tests/java/buildless-gradle-timeout/gradle/wrapper/gradle-wrapper.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/java/buildless-gradle-timeout/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradle/wrapper/gradle-wrapper.properties rename to java/ql/integration-tests/java/buildless-gradle-timeout/gradle/wrapper/gradle-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradlew b/java/ql/integration-tests/java/buildless-gradle-timeout/gradlew similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradlew rename to java/ql/integration-tests/java/buildless-gradle-timeout/gradlew diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradlew.bat b/java/ql/integration-tests/java/buildless-gradle-timeout/gradlew.bat similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/gradlew.bat rename to java/ql/integration-tests/java/buildless-gradle-timeout/gradlew.bat diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/settings.gradle b/java/ql/integration-tests/java/buildless-gradle-timeout/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/settings.gradle rename to java/ql/integration-tests/java/buildless-gradle-timeout/settings.gradle diff --git a/java/ql/integration-tests/java/buildless-gradle-timeout/source_archive.expected b/java/ql/integration-tests/java/buildless-gradle-timeout/source_archive.expected new file mode 100644 index 00000000000..e51c49f2057 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-gradle-timeout/source_archive.expected @@ -0,0 +1,5 @@ +gradle/verification-metadata.xml +gradle/wrapper/gradle-wrapper.properties +src/main/java/com/example/App.java +src/test/java/com/example/AppTest.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/src/main/java/com/example/App.java b/java/ql/integration-tests/java/buildless-gradle-timeout/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/buildless-gradle-timeout/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/buildless-gradle-timeout/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/buildless-gradle-timeout/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/buildless-gradle-timeout/test.py b/java/ql/integration-tests/java/buildless-gradle-timeout/test.py new file mode 100644 index 00000000000..b0e307f15bb --- /dev/null +++ b/java/ql/integration-tests/java/buildless-gradle-timeout/test.py @@ -0,0 +1,7 @@ +def test(codeql, java): + # gradlew has been rigged to stall for a long time by trying to fetch from a black-hole IP. + # We should find the timeout logic fires and buildless aborts the Gradle run quickly. + codeql.database.create( + build_mode="none", + _env={"CODEQL_EXTRACTOR_JAVA_BUILDLESS_CHILD_PROCESS_IDLE_TIMEOUT": "5"}, + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/build.gradle b/java/ql/integration-tests/java/buildless-gradle/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle/build.gradle rename to java/ql/integration-tests/java/buildless-gradle/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-gradle/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-gradle/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected b/java/ql/integration-tests/java/buildless-gradle/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected rename to java/ql/integration-tests/java/buildless-gradle/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/settings.gradle b/java/ql/integration-tests/java/buildless-gradle/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle/settings.gradle rename to java/ql/integration-tests/java/buildless-gradle/settings.gradle diff --git a/java/ql/integration-tests/java/buildless-gradle/source_archive.expected b/java/ql/integration-tests/java/buildless-gradle/source_archive.expected new file mode 100644 index 00000000000..1ee055eeb02 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-gradle/source_archive.expected @@ -0,0 +1,7 @@ +.gradle/8.3/dependencies-accessors/gc.properties +.gradle/8.3/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +src/main/java/com/fractestexample/Test.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/src/main/java/com/fractestexample/Test.java b/java/ql/integration-tests/java/buildless-gradle/src/main/java/com/fractestexample/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle/src/main/java/com/fractestexample/Test.java rename to java/ql/integration-tests/java/buildless-gradle/src/main/java/com/fractestexample/Test.java diff --git a/java/ql/integration-tests/java/buildless-gradle/test.py b/java/ql/integration-tests/java/buildless-gradle/test.py new file mode 100644 index 00000000000..bea3e5f552c --- /dev/null +++ b/java/ql/integration-tests/java/buildless-gradle/test.py @@ -0,0 +1,7 @@ +def test(codeql, java, gradle_8_3): + codeql.database.create( + _env={ + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", + } + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-inherit-trust-store/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-inherit-trust-store/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/cert.pem b/java/ql/integration-tests/java/buildless-inherit-trust-store/cert.pem similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/cert.pem rename to java/ql/integration-tests/java/buildless-inherit-trust-store/cert.pem diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/diagnostics.expected b/java/ql/integration-tests/java/buildless-inherit-trust-store/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/diagnostics.expected rename to java/ql/integration-tests/java/buildless-inherit-trust-store/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/jdk8_shipped_cacerts_plus_cert_pem b/java/ql/integration-tests/java/buildless-inherit-trust-store/jdk8_shipped_cacerts_plus_cert_pem similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/jdk8_shipped_cacerts_plus_cert_pem rename to java/ql/integration-tests/java/buildless-inherit-trust-store/jdk8_shipped_cacerts_plus_cert_pem diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/key.pem b/java/ql/integration-tests/java/buildless-inherit-trust-store/key.pem similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/key.pem rename to java/ql/integration-tests/java/buildless-inherit-trust-store/key.pem diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/pom.xml b/java/ql/integration-tests/java/buildless-inherit-trust-store/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/pom.xml rename to java/ql/integration-tests/java/buildless-inherit-trust-store/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 b/java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 rename to java/ql/integration-tests/java/buildless-inherit-trust-store/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/server.py b/java/ql/integration-tests/java/buildless-inherit-trust-store/server.py similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/server.py rename to java/ql/integration-tests/java/buildless-inherit-trust-store/server.py diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/src/main/java/Test.java b/java/ql/integration-tests/java/buildless-inherit-trust-store/src/main/java/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/src/main/java/Test.java rename to java/ql/integration-tests/java/buildless-inherit-trust-store/src/main/java/Test.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/test.expected b/java/ql/integration-tests/java/buildless-inherit-trust-store/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/test.expected rename to java/ql/integration-tests/java/buildless-inherit-trust-store/test.expected diff --git a/java/ql/integration-tests/java/buildless-inherit-trust-store/test.py b/java/ql/integration-tests/java/buildless-inherit-trust-store/test.py new file mode 100644 index 00000000000..b69070ddf81 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-inherit-trust-store/test.py @@ -0,0 +1,21 @@ +import subprocess +import os + + +def test(codeql, java, cwd): + # This serves the "repo" directory on https://locahost:4443 + repo_server_process = subprocess.Popen(["python3", "../server.py"], cwd="repo") + certspath = cwd / "jdk8_shipped_cacerts_plus_cert_pem" + # If we override MAVEN_OPTS, we'll break cross-test maven isolation, so we need to append to it instead + maven_opts = os.environ["MAVEN_OPTS"] + f" -Djavax.net.ssl.trustStore={certspath}" + + try: + codeql.database.create( + extractor_option="buildless=true", + _env={ + "MAVEN_OPTS": maven_opts, + "CODEQL_JAVA_EXTRACTOR_TRUST_STORE_PATH": str(certspath), + }, + ) + finally: + repo_server_process.kill() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/test.ql b/java/ql/integration-tests/java/buildless-inherit-trust-store/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-inherit-trust-store/test.ql rename to java/ql/integration-tests/java/buildless-inherit-trust-store/test.ql diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-maven-executable-war/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-maven-executable-war/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/diagnostics.expected b/java/ql/integration-tests/java/buildless-maven-executable-war/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/diagnostics.expected rename to java/ql/integration-tests/java/buildless-maven-executable-war/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/pom.xml b/java/ql/integration-tests/java/buildless-maven-executable-war/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/pom.xml rename to java/ql/integration-tests/java/buildless-maven-executable-war/pom.xml diff --git a/java/ql/integration-tests/java/buildless-maven-executable-war/source_archive.expected b/java/ql/integration-tests/java/buildless-maven-executable-war/source_archive.expected new file mode 100644 index 00000000000..c6f2f49cf7d --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven-executable-war/source_archive.expected @@ -0,0 +1,7 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/main/java/com/example/App.java b/java/ql/integration-tests/java/buildless-maven-executable-war/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/buildless-maven-executable-war/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless-maven-executable-war/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless-maven-executable-war/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless-maven-executable-war/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless-maven-executable-war/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless-maven-executable-war/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless-maven-executable-war/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/buildless-maven-executable-war/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-executable-war/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/buildless-maven-executable-war/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/buildless-maven-executable-war/test.py b/java/ql/integration-tests/java/buildless-maven-executable-war/test.py new file mode 100644 index 00000000000..a92ac46584c --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven-executable-war/test.py @@ -0,0 +1,7 @@ +def test(codeql, java): + codeql.database.create( + _env={ + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", + } + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-maven-multimodule/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-maven-multimodule/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected b/java/ql/integration-tests/java/buildless-maven-multimodule/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected rename to java/ql/integration-tests/java/buildless-maven-multimodule/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/pom.xml b/java/ql/integration-tests/java/buildless-maven-multimodule/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/pom.xml rename to java/ql/integration-tests/java/buildless-maven-multimodule/pom.xml diff --git a/java/ql/integration-tests/java/buildless-maven-multimodule/source_archive.expected b/java/ql/integration-tests/java/buildless-maven-multimodule/source_archive.expected new file mode 100644 index 00000000000..06978379cfb --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven-multimodule/source_archive.expected @@ -0,0 +1,14 @@ +pom.xml +submod1/pom.xml +submod1/src/main/java/com/example/App.java +submod1/src/main/resources/my-app.properties +submod1/src/main/resources/page.xml +submod1/src/main/resources/struts.xml +submod1/src/test/java/com/example/AppTest.java +submod2/pom.xml +submod2/src/main/java/com/example/App2.java +submod2/src/main/resources/my-app.properties +submod2/src/main/resources/page.xml +submod2/src/main/resources/struts.xml +submod2/src/test/java/com/example/AppTest2.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/pom.xml b/java/ql/integration-tests/java/buildless-maven-multimodule/submod1/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/pom.xml rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod1/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/main/java/com/example/App.java b/java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod1/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod1/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/pom.xml b/java/ql/integration-tests/java/buildless-maven-multimodule/submod2/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/pom.xml rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod2/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/main/java/com/example/App2.java b/java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/main/java/com/example/App2.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/main/java/com/example/App2.java rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/main/java/com/example/App2.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/test/java/com/example/AppTest2.java b/java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/test/java/com/example/AppTest2.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/submod2/src/test/java/com/example/AppTest2.java rename to java/ql/integration-tests/java/buildless-maven-multimodule/submod2/src/test/java/com/example/AppTest2.java diff --git a/java/ql/integration-tests/java/buildless-maven-multimodule/test.py b/java/ql/integration-tests/java/buildless-maven-multimodule/test.py new file mode 100644 index 00000000000..a92ac46584c --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven-multimodule/test.py @@ -0,0 +1,7 @@ +def test(codeql, java): + codeql.database.create( + _env={ + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", + } + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/.gitattributes b/java/ql/integration-tests/java/buildless-maven-timeout/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/.gitattributes rename to java/ql/integration-tests/java/buildless-maven-timeout/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/.mvn/wrapper/maven-wrapper.jar b/java/ql/integration-tests/java/buildless-maven-timeout/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/.mvn/wrapper/maven-wrapper.jar rename to java/ql/integration-tests/java/buildless-maven-timeout/.mvn/wrapper/maven-wrapper.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/.mvn/wrapper/maven-wrapper.properties b/java/ql/integration-tests/java/buildless-maven-timeout/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/.mvn/wrapper/maven-wrapper.properties rename to java/ql/integration-tests/java/buildless-maven-timeout/.mvn/wrapper/maven-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/diagnostics.expected b/java/ql/integration-tests/java/buildless-maven-timeout/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/diagnostics.expected rename to java/ql/integration-tests/java/buildless-maven-timeout/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/mvnw b/java/ql/integration-tests/java/buildless-maven-timeout/mvnw similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/mvnw rename to java/ql/integration-tests/java/buildless-maven-timeout/mvnw diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/mvnw.cmd b/java/ql/integration-tests/java/buildless-maven-timeout/mvnw.cmd similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/mvnw.cmd rename to java/ql/integration-tests/java/buildless-maven-timeout/mvnw.cmd diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/pom.xml b/java/ql/integration-tests/java/buildless-maven-timeout/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/pom.xml rename to java/ql/integration-tests/java/buildless-maven-timeout/pom.xml diff --git a/java/ql/integration-tests/java/buildless-maven-timeout/source_archive.expected b/java/ql/integration-tests/java/buildless-maven-timeout/source_archive.expected new file mode 100644 index 00000000000..f73dc023c39 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven-timeout/source_archive.expected @@ -0,0 +1,8 @@ +.mvn/wrapper/maven-wrapper.properties +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/main/java/com/example/App.java b/java/ql/integration-tests/java/buildless-maven-timeout/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/buildless-maven-timeout/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless-maven-timeout/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless-maven-timeout/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless-maven-timeout/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless-maven-timeout/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless-maven-timeout/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless-maven-timeout/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/buildless-maven-timeout/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-timeout/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/buildless-maven-timeout/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/buildless-maven-timeout/test.py b/java/ql/integration-tests/java/buildless-maven-timeout/test.py new file mode 100644 index 00000000000..2c70d7dd91a --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven-timeout/test.py @@ -0,0 +1,6 @@ +def test(codeql, java): + # mvnw has been rigged to stall for a long time by trying to fetch from a black-hole IP. We should find the timeout logic fires and buildless aborts the Maven run quickly. + codeql.database.create( + build_mode="none", + _env={"CODEQL_EXTRACTOR_JAVA_BUILDLESS_CHILD_PROCESS_IDLE_TIMEOUT": "5"}, + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/diagnostics.expected b/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/diagnostics.expected rename to java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/pom.xml b/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/pom.xml rename to java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/src/main/java/dlfs/App.java b/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/src/main/java/dlfs/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/src/main/java/dlfs/App.java rename to java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/src/main/java/dlfs/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/src/site/site.xml b/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/src/site/site.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/src/site/site.xml rename to java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/src/site/site.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/src/test/java/dlfs/AppTest.java b/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/src/test/java/dlfs/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven-tolerate-unavailable-dependency/src/test/java/dlfs/AppTest.java rename to java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/src/test/java/dlfs/AppTest.java diff --git a/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/test.py b/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/test.py new file mode 100644 index 00000000000..f7673ce3ad1 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven-tolerate-unavailable-dependency/test.py @@ -0,0 +1,4 @@ +def test(codeql, java): + codeql.database.create( + build_mode="none", + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-maven/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-maven/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected b/java/ql/integration-tests/java/buildless-maven/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected rename to java/ql/integration-tests/java/buildless-maven/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/pom.xml b/java/ql/integration-tests/java/buildless-maven/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven/pom.xml rename to java/ql/integration-tests/java/buildless-maven/pom.xml diff --git a/java/ql/integration-tests/java/buildless-maven/source_archive.expected b/java/ql/integration-tests/java/buildless-maven/source_archive.expected new file mode 100644 index 00000000000..c6f2f49cf7d --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven/source_archive.expected @@ -0,0 +1,7 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/src/main/java/com/example/App.java b/java/ql/integration-tests/java/buildless-maven/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/buildless-maven/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless-maven/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless-maven/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless-maven/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless-maven/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless-maven/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless-maven/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/buildless-maven/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-maven/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/buildless-maven/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/buildless-maven/test.py b/java/ql/integration-tests/java/buildless-maven/test.py new file mode 100644 index 00000000000..a92ac46584c --- /dev/null +++ b/java/ql/integration-tests/java/buildless-maven/test.py @@ -0,0 +1,7 @@ +def test(codeql, java): + codeql.database.create( + _env={ + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", + } + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/PrintAst.expected b/java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/PrintAst.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/PrintAst.expected rename to java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/PrintAst.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/PrintAst.qlref b/java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/PrintAst.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/PrintAst.qlref rename to java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/PrintAst.qlref diff --git a/java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/Test.java b/java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/Test.java rename to java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/Test.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/Test2.java b/java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/Test2.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-module-definition-not-in-module-info-file/Test2.java rename to java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/Test2.java diff --git a/java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/test.py b/java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/test.py new file mode 100644 index 00000000000..549f7b72e50 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-module-definition-not-in-module-info-file/test.py @@ -0,0 +1,4 @@ +def test(codeql, java): + codeql.database.create( + extractor_option="buildless=true", + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/build.gradle b/java/ql/integration-tests/java/buildless-proxy-gradle/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/build.gradle rename to java/ql/integration-tests/java/buildless-proxy-gradle/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-proxy-gradle/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-proxy-gradle/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/diagnostics.expected b/java/ql/integration-tests/java/buildless-proxy-gradle/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/diagnostics.expected rename to java/ql/integration-tests/java/buildless-proxy-gradle/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/settings.gradle b/java/ql/integration-tests/java/buildless-proxy-gradle/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/settings.gradle rename to java/ql/integration-tests/java/buildless-proxy-gradle/settings.gradle diff --git a/java/ql/integration-tests/java/buildless-proxy-gradle/source_archive.expected b/java/ql/integration-tests/java/buildless-proxy-gradle/source_archive.expected new file mode 100644 index 00000000000..1ee055eeb02 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-proxy-gradle/source_archive.expected @@ -0,0 +1,7 @@ +.gradle/8.3/dependencies-accessors/gc.properties +.gradle/8.3/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +src/main/java/com/fractestexample/Test.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/src/main/java/com/fractestexample/Test.java b/java/ql/integration-tests/java/buildless-proxy-gradle/src/main/java/com/fractestexample/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/src/main/java/com/fractestexample/Test.java rename to java/ql/integration-tests/java/buildless-proxy-gradle/src/main/java/com/fractestexample/Test.java diff --git a/java/ql/integration-tests/java/buildless-proxy-gradle/test.py b/java/ql/integration-tests/java/buildless-proxy-gradle/test.py new file mode 100644 index 00000000000..970c78f97ab --- /dev/null +++ b/java/ql/integration-tests/java/buildless-proxy-gradle/test.py @@ -0,0 +1,7 @@ +def test(codeql, java, codeql_mitm_proxy, gradle_8_3): + codeql.database.create( + _env={ + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", + } + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-proxy-maven/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-proxy-maven/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/diagnostics.expected b/java/ql/integration-tests/java/buildless-proxy-maven/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/diagnostics.expected rename to java/ql/integration-tests/java/buildless-proxy-maven/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/pom.xml b/java/ql/integration-tests/java/buildless-proxy-maven/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/pom.xml rename to java/ql/integration-tests/java/buildless-proxy-maven/pom.xml diff --git a/java/ql/integration-tests/java/buildless-proxy-maven/source_archive.expected b/java/ql/integration-tests/java/buildless-proxy-maven/source_archive.expected new file mode 100644 index 00000000000..cdb0dca9421 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-proxy-maven/source_archive.expected @@ -0,0 +1,8 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +test-db/log/ext/javac.properties +test-db/working/settings.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/main/java/com/example/App.java b/java/ql/integration-tests/java/buildless-proxy-maven/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/buildless-proxy-maven/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless-proxy-maven/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless-proxy-maven/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless-proxy-maven/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless-proxy-maven/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless-proxy-maven/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless-proxy-maven/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/buildless-proxy-maven/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-maven/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/buildless-proxy-maven/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/buildless-proxy-maven/test.py b/java/ql/integration-tests/java/buildless-proxy-maven/test.py new file mode 100644 index 00000000000..c8919d321fa --- /dev/null +++ b/java/ql/integration-tests/java/buildless-proxy-maven/test.py @@ -0,0 +1,7 @@ +def test(codeql, java, codeql_mitm_proxy): + codeql.database.create( + _env={ + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", + } + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-sibling-projects/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-sibling-projects/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected b/java/ql/integration-tests/java/buildless-sibling-projects/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected rename to java/ql/integration-tests/java/buildless-sibling-projects/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/.gitattributes b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style-kotlin-build-script/.gitattributes rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/.gitignore b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/.gitignore similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/.gitignore rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/.gitignore diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/build.gradle b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/build.gradle rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradle/verification-metadata.xml b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradle/verification-metadata.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradle/verification-metadata.xml rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradle/verification-metadata.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradle/wrapper/gradle-wrapper.jar rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradle/wrapper/gradle-wrapper.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradle/wrapper/gradle-wrapper.properties rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradle/wrapper/gradle-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradlew b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradlew similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradlew rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradlew diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradlew.bat b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradlew.bat similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/gradlew.bat rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/gradlew.bat diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/settings.gradle b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/settings.gradle rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/settings.gradle diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/src/main/java/com/example/App.java b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-old-style/.gitattributes b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-old-style/.gitattributes rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitignore b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/.gitignore similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitignore rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/.gitignore diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/build.gradle b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/build.gradle rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradle/verification-metadata.xml b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradle/verification-metadata.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradle/verification-metadata.xml rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradle/verification-metadata.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradle/wrapper/gradle-wrapper.jar rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradle/wrapper/gradle-wrapper.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradle/wrapper/gradle-wrapper.properties rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradle/wrapper/gradle-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradlew b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradlew similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradlew rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradlew diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradlew.bat b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradlew.bat similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/gradlew.bat rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/gradlew.bat diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/settings.gradle b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/settings.gradle rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/settings.gradle diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/src/main/java/com/example/App2.java b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/src/main/java/com/example/App2.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/src/main/java/com/example/App2.java rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/src/main/java/com/example/App2.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/src/test/java/com/example/AppTest2.java b/java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/src/test/java/com/example/AppTest2.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/src/test/java/com/example/AppTest2.java rename to java/ql/integration-tests/java/buildless-sibling-projects/gradle-sample2/src/test/java/com/example/AppTest2.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/pom.xml b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/pom.xml rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/main/java/com/example/App3.java b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/main/java/com/example/App3.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/main/java/com/example/App3.java rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/main/java/com/example/App3.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/test/java/com/example/AppTest3.java b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/test/java/com/example/AppTest3.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-1/src/test/java/com/example/AppTest3.java rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-1/src/test/java/com/example/AppTest3.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/pom.xml b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/pom.xml rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/main/java/com/example/App4.java b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/main/java/com/example/App4.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/main/java/com/example/App4.java rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/main/java/com/example/App4.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/test/java/com/example/AppTest4.java b/java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/test/java/com/example/AppTest4.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/maven-project-2/src/test/java/com/example/AppTest4.java rename to java/ql/integration-tests/java/buildless-sibling-projects/maven-project-2/src/test/java/com/example/AppTest4.java diff --git a/java/ql/integration-tests/java/buildless-sibling-projects/source_archive.expected b/java/ql/integration-tests/java/buildless-sibling-projects/source_archive.expected new file mode 100644 index 00000000000..d0e6787e268 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-sibling-projects/source_archive.expected @@ -0,0 +1,29 @@ +gradle-sample/.gradle/6.6.1/gc.properties +gradle-sample/.gradle/buildOutputCleanup/cache.properties +gradle-sample/.gradle/configuration-cache/gc.properties +gradle-sample/.gradle/vcs-1/gc.properties +gradle-sample/gradle/verification-metadata.xml +gradle-sample/gradle/wrapper/gradle-wrapper.properties +gradle-sample/src/main/java/com/example/App.java +gradle-sample/src/test/java/com/example/AppTest.java +gradle-sample2/.gradle/6.6.1/gc.properties +gradle-sample2/.gradle/buildOutputCleanup/cache.properties +gradle-sample2/.gradle/configuration-cache/gc.properties +gradle-sample2/.gradle/vcs-1/gc.properties +gradle-sample2/gradle/verification-metadata.xml +gradle-sample2/gradle/wrapper/gradle-wrapper.properties +gradle-sample2/src/main/java/com/example/App2.java +gradle-sample2/src/test/java/com/example/AppTest2.java +maven-project-1/pom.xml +maven-project-1/src/main/java/com/example/App3.java +maven-project-1/src/main/resources/my-app.properties +maven-project-1/src/main/resources/page.xml +maven-project-1/src/main/resources/struts.xml +maven-project-1/src/test/java/com/example/AppTest3.java +maven-project-2/pom.xml +maven-project-2/src/main/java/com/example/App4.java +maven-project-2/src/main/resources/my-app.properties +maven-project-2/src/main/resources/page.xml +maven-project-2/src/main/resources/struts.xml +maven-project-2/src/test/java/com/example/AppTest4.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/buildless-sibling-projects/test.py b/java/ql/integration-tests/java/buildless-sibling-projects/test.py new file mode 100644 index 00000000000..1b7cae27c64 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-sibling-projects/test.py @@ -0,0 +1,9 @@ +def test(codeql, use_java_11, java, actions_toolchains_file): + # The version of gradle used doesn't work on java 17 + codeql.database.create( + _env={ + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", + "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true", + "LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file), + } + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/buildless-fetches.expected b/java/ql/integration-tests/java/buildless-snapshot-repository/buildless-fetches.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/buildless-fetches.expected rename to java/ql/integration-tests/java/buildless-snapshot-repository/buildless-fetches.expected diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/pom.xml b/java/ql/integration-tests/java/buildless-snapshot-repository/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/pom.xml rename to java/ql/integration-tests/java/buildless-snapshot-repository/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 b/java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 rename to java/ql/integration-tests/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/src/main/java/Test.java b/java/ql/integration-tests/java/buildless-snapshot-repository/src/main/java/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/src/main/java/Test.java rename to java/ql/integration-tests/java/buildless-snapshot-repository/src/main/java/Test.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.expected b/java/ql/integration-tests/java/buildless-snapshot-repository/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.expected rename to java/ql/integration-tests/java/buildless-snapshot-repository/test.expected diff --git a/java/ql/integration-tests/java/buildless-snapshot-repository/test.py b/java/ql/integration-tests/java/buildless-snapshot-repository/test.py new file mode 100644 index 00000000000..e5e38d725ae --- /dev/null +++ b/java/ql/integration-tests/java/buildless-snapshot-repository/test.py @@ -0,0 +1,16 @@ +import subprocess +import sys + + +def test(codeql, java): + # This serves the "repo" directory on http://localhost:9427 + repo_server_process = subprocess.Popen( + [sys.executable, "-m", "http.server", "9427"], cwd="repo" + ) + try: + codeql.database.create( + extractor_option="buildless=true", + _env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}, + ) + finally: + repo_server_process.kill() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.ql b/java/ql/integration-tests/java/buildless-snapshot-repository/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.ql rename to java/ql/integration-tests/java/buildless-snapshot-repository/test.ql diff --git a/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected b/java/ql/integration-tests/java/buildless/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected rename to java/ql/integration-tests/java/buildless/diagnostics.expected diff --git a/java/ql/integration-tests/java/buildless/source_archive.expected b/java/ql/integration-tests/java/buildless/source_archive.expected new file mode 100644 index 00000000000..b3923b0fd96 --- /dev/null +++ b/java/ql/integration-tests/java/buildless/source_archive.expected @@ -0,0 +1,6 @@ +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless/src/main/java/com/example/App.java b/java/ql/integration-tests/java/buildless/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/buildless/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/buildless/src/main/resources/my-app.properties b/java/ql/integration-tests/java/buildless/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/buildless/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/buildless/src/main/resources/page.xml b/java/ql/integration-tests/java/buildless/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless/src/main/resources/page.xml rename to java/ql/integration-tests/java/buildless/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless/src/main/resources/struts.xml b/java/ql/integration-tests/java/buildless/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless/src/main/resources/struts.xml rename to java/ql/integration-tests/java/buildless/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/buildless/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/buildless/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/buildless/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/buildless/test.py b/java/ql/integration-tests/java/buildless/test.py new file mode 100644 index 00000000000..834b1132cf1 --- /dev/null +++ b/java/ql/integration-tests/java/buildless/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true"}) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/build.gradle b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/build.gradle rename to java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/project/build.gradle b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/project/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/project/build.gradle rename to java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/project/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/project/src/main/AndroidManifest.xml b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/project/src/main/AndroidManifest.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/project/src/main/AndroidManifest.xml rename to java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/project/src/main/AndroidManifest.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/project/src/main/java/com/github/androidsample/Main.java b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/project/src/main/java/com/github/androidsample/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/project/src/main/java/com/github/androidsample/Main.java rename to java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/project/src/main/java/com/github/androidsample/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/settings.gradle b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/android-gradle-incompatibility/settings.gradle rename to java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/settings.gradle diff --git a/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py new file mode 100644 index 00000000000..f58e84e77a2 --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py @@ -0,0 +1,2 @@ +def test(codeql, java, gradle_7_3, android_sdk): + codeql.database.create(_assert_failure=True) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/compilation-error/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/compilation-error/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/pom.xml b/java/ql/integration-tests/java/diagnostics/compilation-error/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/pom.xml rename to java/ql/integration-tests/java/diagnostics/compilation-error/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/main/java/com/example/App.java b/java/ql/integration-tests/java/diagnostics/compilation-error/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/diagnostics/compilation-error/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/main/resources/my-app.properties b/java/ql/integration-tests/java/diagnostics/compilation-error/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/diagnostics/compilation-error/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/main/resources/page.xml b/java/ql/integration-tests/java/diagnostics/compilation-error/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/main/resources/page.xml rename to java/ql/integration-tests/java/diagnostics/compilation-error/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/main/resources/struts.xml b/java/ql/integration-tests/java/diagnostics/compilation-error/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/main/resources/struts.xml rename to java/ql/integration-tests/java/diagnostics/compilation-error/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/diagnostics/compilation-error/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/compilation-error/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/diagnostics/compilation-error/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/diagnostics/compilation-error/test.py b/java/ql/integration-tests/java/diagnostics/compilation-error/test.py new file mode 100644 index 00000000000..a0c0737d3ac --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/compilation-error/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_assert_failure=True) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/dependency-error/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/dependency-error/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/pom.xml b/java/ql/integration-tests/java/diagnostics/dependency-error/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/pom.xml rename to java/ql/integration-tests/java/diagnostics/dependency-error/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/main/java/com/example/App.java b/java/ql/integration-tests/java/diagnostics/dependency-error/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/diagnostics/dependency-error/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/main/resources/my-app.properties b/java/ql/integration-tests/java/diagnostics/dependency-error/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/diagnostics/dependency-error/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/main/resources/page.xml b/java/ql/integration-tests/java/diagnostics/dependency-error/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/main/resources/page.xml rename to java/ql/integration-tests/java/diagnostics/dependency-error/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/main/resources/struts.xml b/java/ql/integration-tests/java/diagnostics/dependency-error/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/main/resources/struts.xml rename to java/ql/integration-tests/java/diagnostics/dependency-error/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/diagnostics/dependency-error/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/dependency-error/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/diagnostics/dependency-error/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/diagnostics/dependency-error/test.py b/java/ql/integration-tests/java/diagnostics/dependency-error/test.py new file mode 100644 index 00000000000..d285932b959 --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/dependency-error/test.py @@ -0,0 +1,4 @@ +def test(codeql, java, check_diagnostics): + codeql.database.create(_assert_failure=True) + # Drop the specific output line here because it varies from version to version of Maven. + check_diagnostics.replacements = [('Relevant output line: [^"]*', "")] diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/build.gradle b/java/ql/integration-tests/java/diagnostics/java-version-too-old/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/build.gradle rename to java/ql/integration-tests/java/diagnostics/java-version-too-old/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/java-version-too-old/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/java-version-too-old/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/settings.gradle b/java/ql/integration-tests/java/diagnostics/java-version-too-old/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/settings.gradle rename to java/ql/integration-tests/java/diagnostics/java-version-too-old/settings.gradle diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/src/main/java/com/example/App.java b/java/ql/integration-tests/java/diagnostics/java-version-too-old/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/diagnostics/java-version-too-old/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/diagnostics/java-version-too-old/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/diagnostics/java-version-too-old/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/diagnostics/java-version-too-old/test.py b/java/ql/integration-tests/java/diagnostics/java-version-too-old/test.py new file mode 100644 index 00000000000..accbd8facdd --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/java-version-too-old/test.py @@ -0,0 +1,20 @@ +import os +import re +import runs_on + + +# There is no Java 8 build available for OSX Arm, therefore this test fails. +@runs_on.x86_64 +def test(codeql, use_java_8, java, cwd, gradle_6_6_1): + # Use a custom, empty toolchains.xml file so the autobuilder doesn't see any Java versions that may be + # in a system-level toolchains file + toolchains_path = cwd / "toolchains.xml" + + # Ensure the autobuilder *doesn't* see newer Java versions, which it could switch to in order to build the project: + for k in os.environ: + if re.match(r"^JAVA_HOME_\d\d_", k): + del os.environ[k] + codeql.database.create( + _assert_failure=True, + _env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(toolchains_path)}, + ) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/toolchains.xml b/java/ql/integration-tests/java/diagnostics/java-version-too-old/toolchains.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/toolchains.xml rename to java/ql/integration-tests/java/diagnostics/java-version-too-old/toolchains.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/.gitattributes b/java/ql/integration-tests/java/diagnostics/maven-http-repository/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/.gitattributes rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/.mvn/wrapper/maven-wrapper.jar b/java/ql/integration-tests/java/diagnostics/maven-http-repository/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/.mvn/wrapper/maven-wrapper.jar rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/.mvn/wrapper/maven-wrapper.jar diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/.mvn/wrapper/maven-wrapper.properties b/java/ql/integration-tests/java/diagnostics/maven-http-repository/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/.mvn/wrapper/maven-wrapper.properties rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/.mvn/wrapper/maven-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/maven-http-repository/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/mvnw b/java/ql/integration-tests/java/diagnostics/maven-http-repository/mvnw similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/mvnw rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/mvnw diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/mvnw.cmd b/java/ql/integration-tests/java/diagnostics/maven-http-repository/mvnw.cmd similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/mvnw.cmd rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/mvnw.cmd diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/pom.xml b/java/ql/integration-tests/java/diagnostics/maven-http-repository/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/pom.xml rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/main/java/com/example/App.java b/java/ql/integration-tests/java/diagnostics/maven-http-repository/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/main/resources/my-app.properties b/java/ql/integration-tests/java/diagnostics/maven-http-repository/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/main/resources/page.xml b/java/ql/integration-tests/java/diagnostics/maven-http-repository/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/main/resources/page.xml rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/main/resources/struts.xml b/java/ql/integration-tests/java/diagnostics/maven-http-repository/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/main/resources/struts.xml rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/diagnostics/maven-http-repository/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/maven-http-repository/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/diagnostics/maven-http-repository/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/diagnostics/maven-http-repository/test.py b/java/ql/integration-tests/java/diagnostics/maven-http-repository/test.py new file mode 100644 index 00000000000..a0c0737d3ac --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/maven-http-repository/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_assert_failure=True) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/pom.xml b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/pom.xml rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/java/com/example/App.java b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/my-app.properties b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/page.xml b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/page.xml rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/struts.xml b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/struts.xml rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-1/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-1/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/pom.xml b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/pom.xml rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/java/com/example/App.java b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/my-app.properties b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/page.xml b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/page.xml rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/struts.xml b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/struts.xml rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/multiple-candidate-builds/maven-project-2/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/maven-project-2/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/test.py b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/test.py new file mode 100644 index 00000000000..a0c0737d3ac --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/multiple-candidate-builds/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_assert_failure=True) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-build-system/Test.java b/java/ql/integration-tests/java/diagnostics/no-build-system/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-build-system/Test.java rename to java/ql/integration-tests/java/diagnostics/no-build-system/Test.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-build-system/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/no-build-system/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-build-system/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/no-build-system/diagnostics.expected diff --git a/java/ql/integration-tests/java/diagnostics/no-build-system/test.py b/java/ql/integration-tests/java/diagnostics/no-build-system/test.py new file mode 100644 index 00000000000..a0c0737d3ac --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/no-build-system/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_assert_failure=True) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/build.gradle b/java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/build.gradle rename to java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/diagnostics.expected similarity index 94% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/diagnostics.expected index 30e328253da..e8f7e949c5e 100644 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/diagnostics.expected +++ b/java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/diagnostics.expected @@ -13,7 +13,7 @@ } } { - "markdownMessage": "Gradle project does not define a `testClasses` goal. [Supply a manual build command](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language) that builds the code that should be analyzed.\n\nRelevant output line: `org.gradle.execution.TaskSelectionException: Task 'testClasses' not found in root project 'no-gradle-test-classes'.`", + "markdownMessage": "Gradle project does not define a `testClasses` goal. [Supply a manual build command](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language) that builds the code that should be analyzed.\n\nRelevant output line: `org.gradle.execution.TaskSelectionException: Task 'testClasses' not found in root project 'test'.`", "severity": "error", "source": { "extractorName": "java", diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/settings.gradle b/java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-test-classes/settings.gradle rename to java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/settings.gradle diff --git a/java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/test.py b/java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/test.py new file mode 100644 index 00000000000..a0c0737d3ac --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/no-gradle-test-classes/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_assert_failure=True) diff --git a/java/ql/integration-tests/all-platforms/java/android-sample/.gitattributes b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample/.gitattributes rename to java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/.gitignore b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/.gitignore similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-proxy-gradle/.gitignore rename to java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/.gitignore diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/build.gradle b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/build.gradle rename to java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/diagnostics.expected b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/diagnostics.expected rename to java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/settings.gradle b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/settings.gradle rename to java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/settings.gradle diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/src/main/java/com/example/App.java b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/no-gradle-wrapper/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/test.py b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/test.py new file mode 100644 index 00000000000..a0c0737d3ac --- /dev/null +++ b/java/ql/integration-tests/java/diagnostics/no-gradle-wrapper/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_assert_failure=True) diff --git a/java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/Test.java b/java/ql/integration-tests/java/ecj-sample-noexit/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-sample-noexit/Test.java rename to java/ql/integration-tests/java/ecj-sample-noexit/Test.java diff --git a/java/ql/integration-tests/java/ecj-sample-noexit/source_archive.expected b/java/ql/integration-tests/java/ecj-sample-noexit/source_archive.expected new file mode 100644 index 00000000000..3d16d23ce76 --- /dev/null +++ b/java/ql/integration-tests/java/ecj-sample-noexit/source_archive.expected @@ -0,0 +1,2 @@ +Test.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/ecj-sample-noexit/test.py b/java/ql/integration-tests/java/ecj-sample-noexit/test.py new file mode 100644 index 00000000000..a9afd1055ef --- /dev/null +++ b/java/ql/integration-tests/java/ecj-sample-noexit/test.py @@ -0,0 +1,4 @@ +def test(codeql, java, ecj): + codeql.database.create( + command=f"java -cp {ecj} org.eclipse.jdt.internal.compiler.batch.Main -noExit Test.java" + ) diff --git a/java/ql/integration-tests/all-platforms/java/ecj-sample/Test.java b/java/ql/integration-tests/java/ecj-sample/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-sample/Test.java rename to java/ql/integration-tests/java/ecj-sample/Test.java diff --git a/java/ql/integration-tests/java/ecj-sample/source_archive.expected b/java/ql/integration-tests/java/ecj-sample/source_archive.expected new file mode 100644 index 00000000000..3d16d23ce76 --- /dev/null +++ b/java/ql/integration-tests/java/ecj-sample/source_archive.expected @@ -0,0 +1,2 @@ +Test.java +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/ecj-sample/test.py b/java/ql/integration-tests/java/ecj-sample/test.py new file mode 100644 index 00000000000..d9948b5b54f --- /dev/null +++ b/java/ql/integration-tests/java/ecj-sample/test.py @@ -0,0 +1,4 @@ +def test(codeql, java, ecj): + codeql.database.create( + command=f"java -cp {ecj} org.eclipse.jdt.internal.compiler.batch.Main Test.java" + ) diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/ConstantExpAppearsNonConstant.expected b/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/Diag.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/ConstantExpAppearsNonConstant.expected rename to java/ql/integration-tests/java/ecj-tolerate-enum-annotations/Diag.expected diff --git a/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Diagnostics.ql b/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/Diag.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Diagnostics.ql rename to java/ql/integration-tests/java/ecj-tolerate-enum-annotations/Diag.ql diff --git a/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Test.java b/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Test.java rename to java/ql/integration-tests/java/ecj-tolerate-enum-annotations/Test.java diff --git a/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Test2.java b/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/Test2.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Test2.java rename to java/ql/integration-tests/java/ecj-tolerate-enum-annotations/Test2.java diff --git a/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/test.expected b/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/test.expected rename to java/ql/integration-tests/java/ecj-tolerate-enum-annotations/test.expected diff --git a/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/test.py b/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/test.py new file mode 100644 index 00000000000..027ca32b433 --- /dev/null +++ b/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/test.py @@ -0,0 +1,8 @@ +def test(codeql, java, ecj): + # This tests the case where ECJ emits a RuntimeIn/VisibleAnnotations attribute that isn't the same size as the corresponding method argument list, in particular due to forgetting to include the synthetic parameters added to explicit enumeration constructors. + codeql.database.create( + command=[ + f"java -cp {ecj} org.eclipse.jdt.internal.compiler.batch.Main Test.java -d out -source 8", + f"java -cp {ecj} org.eclipse.jdt.internal.compiler.batch.Main Test2.java -cp out -source 8", + ] + ) diff --git a/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/test.ql b/java/ql/integration-tests/java/ecj-tolerate-enum-annotations/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/test.ql rename to java/ql/integration-tests/java/ecj-tolerate-enum-annotations/test.ql diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/.gitattributes b/java/ql/integration-tests/java/gradle-sample-kotlin-script/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-gradle-timeout/.gitattributes rename to java/ql/integration-tests/java/gradle-sample-kotlin-script/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/app/build.gradle.kts b/java/ql/integration-tests/java/gradle-sample-kotlin-script/app/build.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/app/build.gradle.kts rename to java/ql/integration-tests/java/gradle-sample-kotlin-script/app/build.gradle.kts diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/app/src/main/java/test/App.java b/java/ql/integration-tests/java/gradle-sample-kotlin-script/app/src/main/java/test/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/app/src/main/java/test/App.java rename to java/ql/integration-tests/java/gradle-sample-kotlin-script/app/src/main/java/test/App.java diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/app/src/test/java/test/AppTest.java b/java/ql/integration-tests/java/gradle-sample-kotlin-script/app/src/test/java/test/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/app/src/test/java/test/AppTest.java rename to java/ql/integration-tests/java/gradle-sample-kotlin-script/app/src/test/java/test/AppTest.java diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/gradlew b/java/ql/integration-tests/java/gradle-sample-kotlin-script/gradlew similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/gradlew rename to java/ql/integration-tests/java/gradle-sample-kotlin-script/gradlew diff --git a/java/ql/integration-tests/all-platforms/java/android-8-sample/gradlew.bat b/java/ql/integration-tests/java/gradle-sample-kotlin-script/gradlew.bat similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-8-sample/gradlew.bat rename to java/ql/integration-tests/java/gradle-sample-kotlin-script/gradlew.bat diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/settings.gradle.kts b/java/ql/integration-tests/java/gradle-sample-kotlin-script/settings.gradle.kts similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample-kotlin-script/settings.gradle.kts rename to java/ql/integration-tests/java/gradle-sample-kotlin-script/settings.gradle.kts diff --git a/java/ql/integration-tests/java/gradle-sample-kotlin-script/source_archive.expected b/java/ql/integration-tests/java/gradle-sample-kotlin-script/source_archive.expected new file mode 100644 index 00000000000..f41668d4205 --- /dev/null +++ b/java/ql/integration-tests/java/gradle-sample-kotlin-script/source_archive.expected @@ -0,0 +1,9 @@ +.gradle/7.5.1/dependencies-accessors/gc.properties +.gradle/7.5.1/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +app/src/main/java/test/App.java +app/src/test/java/test/AppTest.java +gradle/wrapper/gradle-wrapper.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/java/gradle-sample-kotlin-script/test.py b/java/ql/integration-tests/java/gradle-sample-kotlin-script/test.py new file mode 100644 index 00000000000..7f71bc6c324 --- /dev/null +++ b/java/ql/integration-tests/java/gradle-sample-kotlin-script/test.py @@ -0,0 +1,2 @@ +def test(codeql, java, gradle_7_5_1): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/build.gradle b/java/ql/integration-tests/java/gradle-sample/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample/build.gradle rename to java/ql/integration-tests/java/gradle-sample/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/settings.gradle b/java/ql/integration-tests/java/gradle-sample/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample/settings.gradle rename to java/ql/integration-tests/java/gradle-sample/settings.gradle diff --git a/java/ql/integration-tests/java/gradle-sample/source_archive.expected b/java/ql/integration-tests/java/gradle-sample/source_archive.expected new file mode 100644 index 00000000000..ccdedc5ab73 --- /dev/null +++ b/java/ql/integration-tests/java/gradle-sample/source_archive.expected @@ -0,0 +1,9 @@ +.gradle/6.6.1/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/configuration-cache/gc.properties +.gradle/vcs-1/gc.properties +gradle/wrapper/gradle-wrapper.properties +src/main/java/com/example/App.java +src/test/java/com/example/AppTest.java +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/src/main/java/com/example/App.java b/java/ql/integration-tests/java/gradle-sample/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/gradle-sample/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/gradle-sample/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/gradle-sample/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/gradle-sample/test.py b/java/ql/integration-tests/java/gradle-sample/test.py new file mode 100644 index 00000000000..34670acfeea --- /dev/null +++ b/java/ql/integration-tests/java/gradle-sample/test.py @@ -0,0 +1,2 @@ +def test(codeql, use_java_11, java, gradle_6_6_1): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/.gitignore b/java/ql/integration-tests/java/java-web-jsp/.gitignore similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/.gitignore rename to java/ql/integration-tests/java/java-web-jsp/.gitignore diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/README.txt b/java/ql/integration-tests/java/java-web-jsp/README.txt similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/README.txt rename to java/ql/integration-tests/java/java-web-jsp/README.txt diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/pom.xml b/java/ql/integration-tests/java/java-web-jsp/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/pom.xml rename to java/ql/integration-tests/java/java-web-jsp/pom.xml diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/spotbugs-security-exclude.xml b/java/ql/integration-tests/java/java-web-jsp/spotbugs-security-exclude.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/spotbugs-security-exclude.xml rename to java/ql/integration-tests/java/java-web-jsp/spotbugs-security-exclude.xml diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/spotbugs-security-include.xml b/java/ql/integration-tests/java/java-web-jsp/spotbugs-security-include.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/spotbugs-security-include.xml rename to java/ql/integration-tests/java/java-web-jsp/spotbugs-security-include.xml diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/Counter.java b/java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/Counter.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/Counter.java rename to java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/Counter.java diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/Date2Tag.java b/java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/Date2Tag.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/Date2Tag.java rename to java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/Date2Tag.java diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/DateServlet.java b/java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/DateServlet.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/DateServlet.java rename to java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/DateServlet.java diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/DateTag.java b/java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/DateTag.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/DateTag.java rename to java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/DateTag.java diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/TagListener.java b/java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/TagListener.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/com/acme/TagListener.java rename to java/ql/integration-tests/java/java-web-jsp/src/main/java/com/acme/TagListener.java diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/LoggingUtil.java b/java/ql/integration-tests/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/LoggingUtil.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/LoggingUtil.java rename to java/ql/integration-tests/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/LoggingUtil.java diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/Main.java b/java/ql/integration-tests/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/Main.java rename to java/ql/integration-tests/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/Main.java diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/SystemOutHandler.java b/java/ql/integration-tests/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/SystemOutHandler.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/SystemOutHandler.java rename to java/ql/integration-tests/java/java-web-jsp/src/main/java/org/eclipse/jetty/demo/SystemOutHandler.java diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/resources/jetty-logging.properties b/java/ql/integration-tests/java/java-web-jsp/src/main/resources/jetty-logging.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/resources/jetty-logging.properties rename to java/ql/integration-tests/java/java-web-jsp/src/main/resources/jetty-logging.properties diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/resources/logging.properties b/java/ql/integration-tests/java/java-web-jsp/src/main/resources/logging.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/resources/logging.properties rename to java/ql/integration-tests/java/java-web-jsp/src/main/resources/logging.properties diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/acme-taglib.tld b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/acme-taglib.tld similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/acme-taglib.tld rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/acme-taglib.tld diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/acme-taglib2.tld b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/acme-taglib2.tld similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/acme-taglib2.tld rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/acme-taglib2.tld diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/applicationContext.xml b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/applicationContext.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/applicationContext.xml rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/applicationContext.xml diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/secret.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/secret.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/secret.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/secret.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/spring.tld b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/spring.tld similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/spring.tld rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/spring.tld diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/tags/panel.tag b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/tags/panel.tag similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/tags/panel.tag rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/tags/panel.tag diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/web.xml b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/web.xml rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/web.xml diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/weblogic.xml b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/weblogic.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/WEB-INF/weblogic.xml rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/WEB-INF/weblogic.xml diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/include/${param.secret_param}.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/include/${param.secret_param}.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/include/${param.secret_param}.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/include/${param.secret_param}.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/include/jsp_include_1.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/include/jsp_include_1.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/include/jsp_include_1.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/include/jsp_include_1.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/include/jsp_include_2_safe.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/include/jsp_include_2_safe.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/include/jsp_include_2_safe.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/include/jsp_include_2_safe.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/include/jsp_include_3.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/include/jsp_include_3.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/include/jsp_include_3.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/include/jsp_include_3.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/index.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/index.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/index.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/index.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_1.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_1.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_1.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_1.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_2.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_2.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_2.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_2.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_3.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_3.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_3.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/jstl/jstl_escape_3.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/random.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/random.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/random.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/random.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/spring/spring_eval_1.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/spring/spring_eval_1.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/spring/spring_eval_1.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/spring/spring_eval_1.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/spring/spring_eval_2.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/spring/spring_eval_2.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/spring/spring_eval_2.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/spring/spring_eval_2.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/spring/spring_eval_3.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/spring/spring_eval_3.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/spring/spring_eval_3.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/spring/spring_eval_3.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/spring/spring_eval_4_safe.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/spring/spring_eval_4_safe.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/spring/spring_eval_4_safe.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/spring/spring_eval_4_safe.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/bean1.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/bean1.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/bean1.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/bean1.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/bean2.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/bean2.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/bean2.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/bean2.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/dump.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/dump.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/dump.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/dump.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/expr.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/expr.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/expr.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/expr.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/foo/foo.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/foo/foo.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/foo/foo.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/foo/foo.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/jstl.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/jstl.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/jstl.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/jstl.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/tag.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/tag.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/tag.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/tag.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/tag2.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/tag2.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/tag2.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/tag2.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/tagfile.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/tagfile.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/test/tagfile.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/test/tagfile.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/various.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/various.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/various.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/various.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xml/xml1.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xml/xml1.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xml/xml1.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xml/xml1.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xml/xml2.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xml/xml2.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xml/xml2.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xml/xml2.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xsl/xsl1.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xsl/xsl1.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xsl/xsl1.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xsl/xsl1.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xsl/xsl2.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xsl/xsl2.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xsl/xsl2.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xsl/xsl2.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xsl/xsl3.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xsl/xsl3.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xsl/xsl3.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xsl/xsl3.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xsl/xsl4.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xsl/xsl4.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xsl/xsl4.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xsl/xsl4.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss0.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss0.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss0.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss0.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss1.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss1.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss1.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss1.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss2.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss2.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss2.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss2.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss3.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss3.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss3.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss3.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss4.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss4.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss4.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss4.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss5.jsp b/java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss5.jsp similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/src/main/webapp/xss/xss5.jsp rename to java/ql/integration-tests/java/java-web-jsp/src/main/webapp/xss/xss5.jsp diff --git a/java/ql/integration-tests/all-platforms/java/java-web-jsp/test.expected b/java/ql/integration-tests/java/java-web-jsp/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/java-web-jsp/test.expected rename to java/ql/integration-tests/java/java-web-jsp/test.expected diff --git a/java/ql/integration-tests/java/java-web-jsp/test.py b/java/ql/integration-tests/java/java-web-jsp/test.py new file mode 100644 index 00000000000..a727946877a --- /dev/null +++ b/java/ql/integration-tests/java/java-web-jsp/test.py @@ -0,0 +1,4 @@ +def test(codeql, java): + codeql.database.create( + command="mvn clean package -P tomcat8Jsp", _env={"CODEQL_EXTRACTOR_JAVA_JSP": "true"} + ) diff --git a/java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/test.ql b/java/ql/integration-tests/java/java-web-jsp/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/java/android-sample-kotlin-build-script-no-wrapper/test.ql rename to java/ql/integration-tests/java/java-web-jsp/test.ql diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/pom.xml b/java/ql/integration-tests/java/maven-enforcer/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-enforcer/pom.xml rename to java/ql/integration-tests/java/maven-enforcer/pom.xml diff --git a/java/ql/integration-tests/java/maven-enforcer/source_archive.expected b/java/ql/integration-tests/java/maven-enforcer/source_archive.expected new file mode 100644 index 00000000000..016c614aec4 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer/source_archive.expected @@ -0,0 +1,12 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-enforcer/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-enforcer/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-enforcer/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-enforcer/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-enforcer/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-enforcer/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-enforcer/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-enforcer/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-enforcer/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-enforcer/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-enforcer/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-enforcer/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-enforcer/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-enforcer/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-enforcer/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-enforcer/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-enforcer/test.py b/java/ql/integration-tests/java/maven-enforcer/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/pom.xml b/java/ql/integration-tests/java/maven-sample-extract-properties/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/pom.xml rename to java/ql/integration-tests/java/maven-sample-extract-properties/pom.xml diff --git a/java/ql/integration-tests/java/maven-sample-extract-properties/source_archive.expected b/java/ql/integration-tests/java/maven-sample-extract-properties/source_archive.expected new file mode 100644 index 00000000000..016c614aec4 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-extract-properties/source_archive.expected @@ -0,0 +1,12 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-sample-extract-properties/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-sample-extract-properties/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-sample-extract-properties/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-sample-extract-properties/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-sample-extract-properties/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-sample-extract-properties/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-sample-extract-properties/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-sample-extract-properties/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-sample-extract-properties/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-extract-properties/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-sample-extract-properties/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-sample-extract-properties/test.py b/java/ql/integration-tests/java/maven-sample-extract-properties/test.py new file mode 100644 index 00000000000..a12444ef170 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-extract-properties/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_env={"LGTM_INDEX_PROPERTIES_FILES": "true"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/pom.xml b/java/ql/integration-tests/java/maven-sample-large-xml-files/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/pom.xml rename to java/ql/integration-tests/java/maven-sample-large-xml-files/pom.xml diff --git a/java/ql/integration-tests/java/maven-sample-large-xml-files/source_archive.expected b/java/ql/integration-tests/java/maven-sample-large-xml-files/source_archive.expected new file mode 100644 index 00000000000..a4def4e92dc --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-large-xml-files/source_archive.expected @@ -0,0 +1,10 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-sample-large-xml-files/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-sample-large-xml-files/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-sample-large-xml-files/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-sample-large-xml-files/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-sample-large-xml-files/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-sample-large-xml-files/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-sample-large-xml-files/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-sample-large-xml-files/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-sample-large-xml-files/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-large-xml-files/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-sample-large-xml-files/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-sample-large-xml-files/test.py b/java/ql/integration-tests/java/maven-sample-large-xml-files/test.py new file mode 100644 index 00000000000..08a582b9d42 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-large-xml-files/test.py @@ -0,0 +1,6 @@ +def test(codeql, java): + # Test that a build with 60 ~1MB XML docs extracts does not extract them, but we fall back to by-name mode instead: + for i in range(60): + with open(f"generated-{i}.xml", "w") as f: + f.write("" + ("a" * 1000000) + "") + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/pom.xml b/java/ql/integration-tests/java/maven-sample-small-xml-files/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/pom.xml rename to java/ql/integration-tests/java/maven-sample-small-xml-files/pom.xml diff --git a/java/ql/integration-tests/java/maven-sample-small-xml-files/source_archive.expected b/java/ql/integration-tests/java/maven-sample-small-xml-files/source_archive.expected new file mode 100644 index 00000000000..ccc5c6f2513 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-small-xml-files/source_archive.expected @@ -0,0 +1,17 @@ +generated-0.xml +generated-1.xml +generated-2.xml +generated-3.xml +generated-4.xml +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-sample-small-xml-files/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-sample-small-xml-files/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-sample-small-xml-files/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-sample-small-xml-files/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-sample-small-xml-files/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-sample-small-xml-files/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-sample-small-xml-files/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-sample-small-xml-files/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-sample-small-xml-files/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-small-xml-files/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-sample-small-xml-files/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-sample-small-xml-files/test.py b/java/ql/integration-tests/java/maven-sample-small-xml-files/test.py new file mode 100644 index 00000000000..8795cbbaa09 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-small-xml-files/test.py @@ -0,0 +1,6 @@ +def test(codeql, java): + # Test that a build with 5 ~1MB XML docs extracts them: + for i in range(5): + with open(f"generated-{i}.xml", "w") as f: + f.write("" + ("a" * 1000000) + "") + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/pom.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-all/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/pom.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-all/pom.xml diff --git a/java/ql/integration-tests/java/maven-sample-xml-mode-all/source_archive.expected b/java/ql/integration-tests/java/maven-sample-xml-mode-all/source_archive.expected new file mode 100644 index 00000000000..016c614aec4 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-xml-mode-all/source_archive.expected @@ -0,0 +1,12 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-sample-xml-mode-all/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-sample-xml-mode-all/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-sample-xml-mode-all/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-sample-xml-mode-all/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-all/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-all/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-all/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-all/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-sample-xml-mode-all/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-all/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-sample-xml-mode-all/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-sample-xml-mode-all/test.py b/java/ql/integration-tests/java/maven-sample-xml-mode-all/test.py new file mode 100644 index 00000000000..93ac0300499 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-xml-mode-all/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_env={"LGTM_INDEX_XML_MODE": "all"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/pom.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/pom.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-byname/pom.xml diff --git a/java/ql/integration-tests/java/maven-sample-xml-mode-byname/source_archive.expected b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/source_archive.expected new file mode 100644 index 00000000000..a4def4e92dc --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/source_archive.expected @@ -0,0 +1,10 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-byname/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-sample-xml-mode-byname/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-sample-xml-mode-byname/test.py b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/test.py new file mode 100644 index 00000000000..64e5f7ba05a --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-xml-mode-byname/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_env={"LGTM_INDEX_XML_MODE": "byname"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/pom.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/pom.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-disabled/pom.xml diff --git a/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/source_archive.expected b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/source_archive.expected new file mode 100644 index 00000000000..23eaad53231 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/source_archive.expected @@ -0,0 +1,7 @@ +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-disabled/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-sample-xml-mode-disabled/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/test.py b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/test.py new file mode 100644 index 00000000000..aa6c911f94d --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-xml-mode-disabled/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_env={"LGTM_INDEX_XML_MODE": "disabled"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/pom.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/pom.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-smart/pom.xml diff --git a/java/ql/integration-tests/java/maven-sample-xml-mode-smart/source_archive.expected b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/source_archive.expected new file mode 100644 index 00000000000..a4def4e92dc --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/source_archive.expected @@ -0,0 +1,10 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample-xml-mode-smart/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-sample-xml-mode-smart/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-sample-xml-mode-smart/test.py b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/test.py new file mode 100644 index 00000000000..7736927eb8a --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample-xml-mode-smart/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(_env={"LGTM_INDEX_XML_MODE": "smart"}) diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/pom.xml b/java/ql/integration-tests/java/maven-sample/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample/pom.xml rename to java/ql/integration-tests/java/maven-sample/pom.xml diff --git a/java/ql/integration-tests/java/maven-sample/source_archive.expected b/java/ql/integration-tests/java/maven-sample/source_archive.expected new file mode 100644 index 00000000000..016c614aec4 --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample/source_archive.expected @@ -0,0 +1,12 @@ +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-sample/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-sample/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-sample/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-sample/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-sample/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-sample/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-sample/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-sample/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-sample/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-sample/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-sample/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-sample/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-sample/test.py b/java/ql/integration-tests/java/maven-sample/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-sample/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/.gitattributes b/java/ql/integration-tests/java/maven-wrapper-script-only/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/.gitattributes rename to java/ql/integration-tests/java/maven-wrapper-script-only/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/.mvn/wrapper/maven-wrapper.properties b/java/ql/integration-tests/java/maven-wrapper-script-only/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/.mvn/wrapper/maven-wrapper.properties rename to java/ql/integration-tests/java/maven-wrapper-script-only/.mvn/wrapper/maven-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/mvnw b/java/ql/integration-tests/java/maven-wrapper-script-only/mvnw similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/mvnw rename to java/ql/integration-tests/java/maven-wrapper-script-only/mvnw diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/mvnw.cmd b/java/ql/integration-tests/java/maven-wrapper-script-only/mvnw.cmd similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/mvnw.cmd rename to java/ql/integration-tests/java/maven-wrapper-script-only/mvnw.cmd diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/pom.xml b/java/ql/integration-tests/java/maven-wrapper-script-only/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/pom.xml rename to java/ql/integration-tests/java/maven-wrapper-script-only/pom.xml diff --git a/java/ql/integration-tests/java/maven-wrapper-script-only/source_archive.expected b/java/ql/integration-tests/java/maven-wrapper-script-only/source_archive.expected new file mode 100644 index 00000000000..63c4821feac --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-script-only/source_archive.expected @@ -0,0 +1,13 @@ +.mvn/wrapper/maven-wrapper.properties +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-wrapper-script-only/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-wrapper-script-only/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-wrapper-script-only/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-wrapper-script-only/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-wrapper-script-only/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-wrapper-script-only/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-wrapper-script-only/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-wrapper-script-only/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-wrapper-script-only/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-script-only/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-wrapper-script-only/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-wrapper-script-only/test.py b/java/ql/integration-tests/java/maven-wrapper-script-only/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-script-only/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/.gitattributes b/java/ql/integration-tests/java/maven-wrapper-source-only/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/.gitattributes rename to java/ql/integration-tests/java/maven-wrapper-source-only/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/.mvn/wrapper/MavenWrapperDownloader.java b/java/ql/integration-tests/java/maven-wrapper-source-only/.mvn/wrapper/MavenWrapperDownloader.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/.mvn/wrapper/MavenWrapperDownloader.java rename to java/ql/integration-tests/java/maven-wrapper-source-only/.mvn/wrapper/MavenWrapperDownloader.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/.mvn/wrapper/maven-wrapper.properties b/java/ql/integration-tests/java/maven-wrapper-source-only/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/.mvn/wrapper/maven-wrapper.properties rename to java/ql/integration-tests/java/maven-wrapper-source-only/.mvn/wrapper/maven-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/mvnw b/java/ql/integration-tests/java/maven-wrapper-source-only/mvnw similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/mvnw rename to java/ql/integration-tests/java/maven-wrapper-source-only/mvnw diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/mvnw.cmd b/java/ql/integration-tests/java/maven-wrapper-source-only/mvnw.cmd similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/mvnw.cmd rename to java/ql/integration-tests/java/maven-wrapper-source-only/mvnw.cmd diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/pom.xml b/java/ql/integration-tests/java/maven-wrapper-source-only/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/pom.xml rename to java/ql/integration-tests/java/maven-wrapper-source-only/pom.xml diff --git a/java/ql/integration-tests/java/maven-wrapper-source-only/source_archive.expected b/java/ql/integration-tests/java/maven-wrapper-source-only/source_archive.expected new file mode 100644 index 00000000000..63c4821feac --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-source-only/source_archive.expected @@ -0,0 +1,13 @@ +.mvn/wrapper/maven-wrapper.properties +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-wrapper-source-only/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-wrapper-source-only/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-wrapper-source-only/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-wrapper-source-only/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-wrapper-source-only/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-wrapper-source-only/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-wrapper-source-only/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-wrapper-source-only/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-wrapper-source-only/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper-source-only/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-wrapper-source-only/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-wrapper-source-only/test.py b/java/ql/integration-tests/java/maven-wrapper-source-only/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-source-only/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/.gitattributes b/java/ql/integration-tests/java/maven-wrapper/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/.gitattributes rename to java/ql/integration-tests/java/maven-wrapper/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/.mvn/wrapper/maven-wrapper.jar b/java/ql/integration-tests/java/maven-wrapper/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/.mvn/wrapper/maven-wrapper.jar rename to java/ql/integration-tests/java/maven-wrapper/.mvn/wrapper/maven-wrapper.jar diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/.mvn/wrapper/maven-wrapper.properties b/java/ql/integration-tests/java/maven-wrapper/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/.mvn/wrapper/maven-wrapper.properties rename to java/ql/integration-tests/java/maven-wrapper/.mvn/wrapper/maven-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/mvnw b/java/ql/integration-tests/java/maven-wrapper/mvnw similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/mvnw rename to java/ql/integration-tests/java/maven-wrapper/mvnw diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/mvnw.cmd b/java/ql/integration-tests/java/maven-wrapper/mvnw.cmd similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/mvnw.cmd rename to java/ql/integration-tests/java/maven-wrapper/mvnw.cmd diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/pom.xml b/java/ql/integration-tests/java/maven-wrapper/pom.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/pom.xml rename to java/ql/integration-tests/java/maven-wrapper/pom.xml diff --git a/java/ql/integration-tests/java/maven-wrapper/source_archive.expected b/java/ql/integration-tests/java/maven-wrapper/source_archive.expected new file mode 100644 index 00000000000..63c4821feac --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper/source_archive.expected @@ -0,0 +1,13 @@ +.mvn/wrapper/maven-wrapper.properties +pom.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-wrapper/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/maven-wrapper/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-wrapper/src/main/resources/my-app.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/src/main/resources/my-app.properties rename to java/ql/integration-tests/java/maven-wrapper/src/main/resources/my-app.properties diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-wrapper/src/main/resources/page.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/src/main/resources/page.xml rename to java/ql/integration-tests/java/maven-wrapper/src/main/resources/page.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-wrapper/src/main/resources/struts.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/src/main/resources/struts.xml rename to java/ql/integration-tests/java/maven-wrapper/src/main/resources/struts.xml diff --git a/java/ql/integration-tests/all-platforms/java/maven-wrapper/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-wrapper/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/maven-wrapper/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/maven-wrapper/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/maven-wrapper/test.py b/java/ql/integration-tests/java/maven-wrapper/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.expected b/java/ql/integration-tests/java/multi-release-jar-java11/ExtractorInformation.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.expected rename to java/ql/integration-tests/java/multi-release-jar-java11/ExtractorInformation.expected diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.qlref b/java/ql/integration-tests/java/multi-release-jar-java11/ExtractorInformation.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.qlref rename to java/ql/integration-tests/java/multi-release-jar-java11/ExtractorInformation.qlref diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/mod1pkg/Mod1Class.java b/java/ql/integration-tests/java/multi-release-jar-java11/mod1/mod1pkg/Mod1Class.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/mod1pkg/Mod1Class.java rename to java/ql/integration-tests/java/multi-release-jar-java11/mod1/mod1pkg/Mod1Class.java diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/module-info.java b/java/ql/integration-tests/java/multi-release-jar-java11/mod1/module-info.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/module-info.java rename to java/ql/integration-tests/java/multi-release-jar-java11/mod1/module-info.java diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/mod2pkg/User.java b/java/ql/integration-tests/java/multi-release-jar-java11/mod2/mod2pkg/User.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/mod2pkg/User.java rename to java/ql/integration-tests/java/multi-release-jar-java11/mod2/mod2pkg/User.java diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/module-info.java b/java/ql/integration-tests/java/multi-release-jar-java11/mod2/module-info.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/module-info.java rename to java/ql/integration-tests/java/multi-release-jar-java11/mod2/module-info.java diff --git a/java/ql/integration-tests/java/multi-release-jar-java11/test.py b/java/ql/integration-tests/java/multi-release-jar-java11/test.py new file mode 100644 index 00000000000..fafe3e16fdd --- /dev/null +++ b/java/ql/integration-tests/java/multi-release-jar-java11/test.py @@ -0,0 +1,11 @@ +import commands + + +def test(codeql, use_java_11, java): + commands.run( + "javac mod1/module-info.java mod1/mod1pkg/Mod1Class.java -d mod1obj", + "jar -c -f mod1.jar -C mod1obj mod1pkg/Mod1Class.class --release 9 -C mod1obj module-info.class", + ) + codeql.database.create( + command="javac mod2/mod2pkg/User.java mod2/module-info.java -d mod2obj -p mod1.jar" + ) diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.expected b/java/ql/integration-tests/java/multi-release-jar-java17/ExtractorInformation.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.expected rename to java/ql/integration-tests/java/multi-release-jar-java17/ExtractorInformation.expected diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.qlref b/java/ql/integration-tests/java/multi-release-jar-java17/ExtractorInformation.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.qlref rename to java/ql/integration-tests/java/multi-release-jar-java17/ExtractorInformation.qlref diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/mod1pkg/Mod1Class.java b/java/ql/integration-tests/java/multi-release-jar-java17/mod1/mod1pkg/Mod1Class.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/mod1pkg/Mod1Class.java rename to java/ql/integration-tests/java/multi-release-jar-java17/mod1/mod1pkg/Mod1Class.java diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/module-info.java b/java/ql/integration-tests/java/multi-release-jar-java17/mod1/module-info.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/module-info.java rename to java/ql/integration-tests/java/multi-release-jar-java17/mod1/module-info.java diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/mod2pkg/User.java b/java/ql/integration-tests/java/multi-release-jar-java17/mod2/mod2pkg/User.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/mod2pkg/User.java rename to java/ql/integration-tests/java/multi-release-jar-java17/mod2/mod2pkg/User.java diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/module-info.java b/java/ql/integration-tests/java/multi-release-jar-java17/mod2/module-info.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/module-info.java rename to java/ql/integration-tests/java/multi-release-jar-java17/mod2/module-info.java diff --git a/java/ql/integration-tests/java/multi-release-jar-java17/test.py b/java/ql/integration-tests/java/multi-release-jar-java17/test.py new file mode 100644 index 00000000000..195ed61fadd --- /dev/null +++ b/java/ql/integration-tests/java/multi-release-jar-java17/test.py @@ -0,0 +1,11 @@ +import commands + + +def test(codeql, java): + commands.run( + "javac mod1/module-info.java mod1/mod1pkg/Mod1Class.java -d mod1obj", + "jar -c -f mod1.jar -C mod1obj mod1pkg/Mod1Class.class --release 9 -C mod1obj module-info.class", + ) + codeql.database.create( + command="javac mod2/mod2pkg/User.java mod2/module-info.java -d mod2obj -p mod1.jar" + ) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/.gitattributes b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/.gitattributes rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/.gitignore b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/.gitignore similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample/.gitignore rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/.gitignore diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/build.gradle b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/build.gradle rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradle/verification-metadata.xml b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradle/verification-metadata.xml rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradle/wrapper/gradle-wrapper.properties rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradlew b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/gradlew similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradlew rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/gradlew diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradlew.bat b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/gradlew.bat similarity index 100% rename from java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/gradlew.bat rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/gradlew.bat diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/settings.gradle b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/settings.gradle rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/settings.gradle diff --git a/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/source_archive.expected b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/source_archive.expected new file mode 100644 index 00000000000..67b20f5ad70 --- /dev/null +++ b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/source_archive.expected @@ -0,0 +1,10 @@ +.gradle/6.6.1/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/configuration-cache/gc.properties +.gradle/vcs-1/gc.properties +gradle/verification-metadata.xml +gradle/wrapper/gradle-wrapper.properties +src/main/java/com/example/App.java +src/test/java/com/example/AppTest.java +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/main/java/com/example/App.java b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/partial-gradle-sample-without-gradle/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/test.py b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/test.py new file mode 100644 index 00000000000..44576600a58 --- /dev/null +++ b/java/ql/integration-tests/java/partial-gradle-sample-without-gradle/test.py @@ -0,0 +1,17 @@ +import tempfile +import runs_on +import pathlib + + +# The version of gradle used doesn't work on java 17 +def test(codeql, use_java_11, java, environment): + gradle_override_dir = pathlib.Path(tempfile.mkdtemp()) + if runs_on.windows: + (gradle_override_dir / "gradle.bat").write_text("@echo off\nexit /b 2\n") + else: + gradlepath = gradle_override_dir / "gradle" + gradlepath.write_text("#!/bin/bash\nexit 1\n") + gradlepath.chmod(0o0755) + + environment.add_path(gradle_override_dir) + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/.gitattributes b/java/ql/integration-tests/java/partial-gradle-sample/.gitattributes similarity index 100% rename from java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/gradle-sample2/.gitattributes rename to java/ql/integration-tests/java/partial-gradle-sample/.gitattributes diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/build.gradle b/java/ql/integration-tests/java/partial-gradle-sample/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/partial-gradle-sample/build.gradle rename to java/ql/integration-tests/java/partial-gradle-sample/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/gradle/verification-metadata.xml b/java/ql/integration-tests/java/partial-gradle-sample/gradle/verification-metadata.xml similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample/gradle/verification-metadata.xml rename to java/ql/integration-tests/java/partial-gradle-sample/gradle/verification-metadata.xml diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/java/partial-gradle-sample/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample/gradle/wrapper/gradle-wrapper.properties rename to java/ql/integration-tests/java/partial-gradle-sample/gradle/wrapper/gradle-wrapper.properties diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/gradlew b/java/ql/integration-tests/java/partial-gradle-sample/gradlew similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample/gradlew rename to java/ql/integration-tests/java/partial-gradle-sample/gradlew diff --git a/java/ql/integration-tests/all-platforms/java/gradle-sample/gradlew.bat b/java/ql/integration-tests/java/partial-gradle-sample/gradlew.bat similarity index 100% rename from java/ql/integration-tests/all-platforms/java/gradle-sample/gradlew.bat rename to java/ql/integration-tests/java/partial-gradle-sample/gradlew.bat diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/settings.gradle b/java/ql/integration-tests/java/partial-gradle-sample/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/partial-gradle-sample/settings.gradle rename to java/ql/integration-tests/java/partial-gradle-sample/settings.gradle diff --git a/java/ql/integration-tests/java/partial-gradle-sample/source_archive.expected b/java/ql/integration-tests/java/partial-gradle-sample/source_archive.expected new file mode 100644 index 00000000000..67b20f5ad70 --- /dev/null +++ b/java/ql/integration-tests/java/partial-gradle-sample/source_archive.expected @@ -0,0 +1,10 @@ +.gradle/6.6.1/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/configuration-cache/gc.properties +.gradle/vcs-1/gc.properties +gradle/verification-metadata.xml +gradle/wrapper/gradle-wrapper.properties +src/main/java/com/example/App.java +src/test/java/com/example/AppTest.java +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/src/main/java/com/example/App.java b/java/ql/integration-tests/java/partial-gradle-sample/src/main/java/com/example/App.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/partial-gradle-sample/src/main/java/com/example/App.java rename to java/ql/integration-tests/java/partial-gradle-sample/src/main/java/com/example/App.java diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/partial-gradle-sample/src/test/java/com/example/AppTest.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/partial-gradle-sample/src/test/java/com/example/AppTest.java rename to java/ql/integration-tests/java/partial-gradle-sample/src/test/java/com/example/AppTest.java diff --git a/java/ql/integration-tests/java/partial-gradle-sample/test.py b/java/ql/integration-tests/java/partial-gradle-sample/test.py new file mode 100644 index 00000000000..31e476045b1 --- /dev/null +++ b/java/ql/integration-tests/java/partial-gradle-sample/test.py @@ -0,0 +1,5 @@ +# The version of gradle used doesn't work on java 17 + + +def test(codeql, use_java_11, java): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/README b/java/ql/integration-tests/java/spring-boot-sample/README similarity index 100% rename from java/ql/integration-tests/all-platforms/java/spring-boot-sample/README rename to java/ql/integration-tests/java/spring-boot-sample/README diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/build.gradle b/java/ql/integration-tests/java/spring-boot-sample/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/spring-boot-sample/build.gradle rename to java/ql/integration-tests/java/spring-boot-sample/build.gradle diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/settings.gradle b/java/ql/integration-tests/java/spring-boot-sample/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/java/spring-boot-sample/settings.gradle rename to java/ql/integration-tests/java/spring-boot-sample/settings.gradle diff --git a/java/ql/integration-tests/java/spring-boot-sample/source_archive.expected b/java/ql/integration-tests/java/spring-boot-sample/source_archive.expected new file mode 100644 index 00000000000..7c6e9b460fe --- /dev/null +++ b/java/ql/integration-tests/java/spring-boot-sample/source_archive.expected @@ -0,0 +1,11 @@ +.gradle/8.7/dependencies-accessors/gc.properties +.gradle/8.7/gc.properties +.gradle/buildOutputCleanup/cache.properties +.gradle/vcs-1/gc.properties +build/resources/main/application.properties +gradle/wrapper/gradle-wrapper.properties +src/main/java/com/github/springbootsample/SpringBootSampleApplication.java +src/main/resources/application.properties +src/test/java/com/github/springbootsample/SpringBootSampleApplicationTests.java +test-db/log/ext/javac-1.properties +test-db/log/ext/javac.properties diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/src/main/java/com/github/springbootsample/SpringBootSampleApplication.java b/java/ql/integration-tests/java/spring-boot-sample/src/main/java/com/github/springbootsample/SpringBootSampleApplication.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/spring-boot-sample/src/main/java/com/github/springbootsample/SpringBootSampleApplication.java rename to java/ql/integration-tests/java/spring-boot-sample/src/main/java/com/github/springbootsample/SpringBootSampleApplication.java diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/src/main/resources/application.properties b/java/ql/integration-tests/java/spring-boot-sample/src/main/resources/application.properties similarity index 100% rename from java/ql/integration-tests/all-platforms/java/spring-boot-sample/src/main/resources/application.properties rename to java/ql/integration-tests/java/spring-boot-sample/src/main/resources/application.properties diff --git a/java/ql/integration-tests/all-platforms/java/spring-boot-sample/src/test/java/com/github/springbootsample/SpringBootSampleApplicationTests.java b/java/ql/integration-tests/java/spring-boot-sample/src/test/java/com/github/springbootsample/SpringBootSampleApplicationTests.java similarity index 100% rename from java/ql/integration-tests/all-platforms/java/spring-boot-sample/src/test/java/com/github/springbootsample/SpringBootSampleApplicationTests.java rename to java/ql/integration-tests/java/spring-boot-sample/src/test/java/com/github/springbootsample/SpringBootSampleApplicationTests.java diff --git a/java/ql/integration-tests/java/spring-boot-sample/test.py b/java/ql/integration-tests/java/spring-boot-sample/test.py new file mode 100644 index 00000000000..a3d842b5390 --- /dev/null +++ b/java/ql/integration-tests/java/spring-boot-sample/test.py @@ -0,0 +1,2 @@ +def test(codeql, java, gradle_8_7): + codeql.database.create() diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/PrintAst.expected b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/PrintAst.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/PrintAst.expected rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/PrintAst.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/PrintAst.qlref b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/PrintAst.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/PrintAst.qlref rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/PrintAst.qlref diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/User.java b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/User.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/User.java rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/User.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/deprecatedAnnotationTypes.expected b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/deprecatedAnnotationTypes.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/deprecatedAnnotationTypes.expected rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/deprecatedAnnotationTypes.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/deprecatedAnnotationTypes.ql b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/deprecatedAnnotationTypes.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/deprecatedAnnotationTypes.ql rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/deprecatedAnnotationTypes.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/ktUser.kt b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/ktUser.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/ktUser.kt rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/ktUser.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/qlpack.yml b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/qlpack.yml similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/qlpack.yml rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/qlpack.yml diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/test.ext.yml b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/test.ext.yml similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/test.ext.yml rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/test.ext.yml diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/test.kt b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/test.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/test.kt rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/test.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/test.py b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/annotation-id-consistency/test.py rename to java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/app/build.gradle b/java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/app/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/app/build.gradle rename to java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/app/build.gradle diff --git a/java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/app/src/main/kotlin/testProject/App.kt b/java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/app/src/main/kotlin/testProject/App.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/app/src/main/kotlin/testProject/App.kt rename to java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/app/src/main/kotlin/testProject/App.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/compArgs.expected b/java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/compArgs.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/compArgs.expected rename to java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/compArgs.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/compArgs.ql b/java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/compArgs.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/compArgs.ql rename to java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/compArgs.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/settings.gradle b/java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/settings.gradle rename to java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/settings.gradle diff --git a/java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/test.py b/java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/compiler_arguments/test.py rename to java/ql/integration-tests/kotlin/all-platforms/compiler_arguments/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/lib.kt b/java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/lib.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/lib.kt rename to java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/lib.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/qlpack.yml b/java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/qlpack.yml similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/qlpack.yml rename to java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/qlpack.yml diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected b/java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ext.yml b/java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/test.ext.yml similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ext.yml rename to java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/test.ext.yml diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.py b/java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.py rename to java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql b/java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/user.kt b/java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/user.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/user.kt rename to java/ql/integration-tests/kotlin/all-platforms/default-parameter-mad-flow/user.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/diagnostics.expected b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/diagnostics.expected rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/com/intellij/mock/MockProject.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/com/intellij/mock/MockProject.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/com/intellij/mock/MockProject.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/com/intellij/mock/MockProject.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/com/intellij/openapi/Disposable.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/com/intellij/openapi/Disposable.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/com/intellij/openapi/Disposable.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/com/intellij/openapi/Disposable.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/driver/Main.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/driver/Main.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/driver/Main.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/driver/Main.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/kotlin/KotlinVersion.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/kotlin/KotlinVersion.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/kotlin/KotlinVersion.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/kotlin/KotlinVersion.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/ExitCode.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/ExitCode.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/ExitCode.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/ExitCode.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/ParseCommandLineArgumentsKt.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/ParseCommandLineArgumentsKt.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/ParseCommandLineArgumentsKt.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/common/arguments/ParseCommandLineArgumentsKt.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/config/CompilerConfiguration.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/config/CompilerConfiguration.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/config/CompilerConfiguration.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/config/CompilerConfiguration.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/utils/KotlinPaths.java b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/utils/KotlinPaths.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/utils/KotlinPaths.java rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/fake-kotlinc-source/org/jetbrains/kotlin/utils/KotlinPaths.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/test.py b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/test.py rename to java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/enabling/KotlinDefault.kt b/java/ql/integration-tests/kotlin/all-platforms/enabling/KotlinDefault.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enabling/KotlinDefault.kt rename to java/ql/integration-tests/kotlin/all-platforms/enabling/KotlinDefault.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/enabling/KotlinDisabled.kt b/java/ql/integration-tests/kotlin/all-platforms/enabling/KotlinDisabled.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enabling/KotlinDisabled.kt rename to java/ql/integration-tests/kotlin/all-platforms/enabling/KotlinDisabled.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/enabling/KotlinEnabled.kt b/java/ql/integration-tests/kotlin/all-platforms/enabling/KotlinEnabled.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enabling/KotlinEnabled.kt rename to java/ql/integration-tests/kotlin/all-platforms/enabling/KotlinEnabled.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/enabling/source_archive.expected b/java/ql/integration-tests/kotlin/all-platforms/enabling/source_archive.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enabling/source_archive.expected rename to java/ql/integration-tests/kotlin/all-platforms/enabling/source_archive.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/enabling/test.py b/java/ql/integration-tests/kotlin/all-platforms/enabling/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enabling/test.py rename to java/ql/integration-tests/kotlin/all-platforms/enabling/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/NotNull.java b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/NotNull.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/NotNull.java rename to java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/NotNull.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/Test.java b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/Test.java rename to java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/Test.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/test.expected b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/test.py b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/test.py rename to java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/test.ql b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/user.kt b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/user.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/enhanced-nullability/user.kt rename to java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/user.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/test.expected b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/test.kt b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/test.kt rename to java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/test.py b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/test.py rename to java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/test.ql b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/user.kt b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/user.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/external-property-overloads/user.kt rename to java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/user.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/classes.expected b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/classes.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/classes.expected rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/classes.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/classes.ql b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/classes.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/classes.ql rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/classes.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/code/A.kt b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/code/A.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/code/A.kt rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/code/A.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/code/B.kt b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/code/B.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/code/B.kt rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/code/B.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/code/C.kt b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/code/C.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/code/C.kt rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/code/C.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/compilationFiles.expected b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/compilationFiles.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/compilationFiles.expected rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/compilationFiles.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/compilationFiles.ql b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/compilationFiles.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/compilationFiles.ql rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/compilationFiles.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/compilations.expected b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/compilations.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/compilations.expected rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/compilations.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/compilations.ql b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/compilations.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/compilations.ql rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/compilations.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_crash/test.py b/java/ql/integration-tests/kotlin/all-platforms/extractor_crash/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_crash/test.py rename to java/ql/integration-tests/kotlin/all-platforms/extractor_crash/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/ExtractorInformation.expected b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/ExtractorInformation.expected rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/ExtractorInformation.ext.yml b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.ext.yml similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/ExtractorInformation.ext.yml rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.ext.yml diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/ExtractorInformation.qlref b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/ExtractorInformation.qlref rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.qlref diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/SomeClass.kt b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/SomeClass.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/SomeClass.kt rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/SomeClass.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/test.py b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin1/test.py rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/ExtractorInformation.expected b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/ExtractorInformation.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/ExtractorInformation.expected rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/ExtractorInformation.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/ExtractorInformation.ext.yml b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/ExtractorInformation.ext.yml similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/ExtractorInformation.ext.yml rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/ExtractorInformation.ext.yml diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/ExtractorInformation.qlref b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/ExtractorInformation.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/ExtractorInformation.qlref rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/ExtractorInformation.qlref diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/SomeClass.kt b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/SomeClass.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/SomeClass.kt rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/SomeClass.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/test.py b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/extractor_information_kotlin2/test.py rename to java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin2/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/file_classes/A.kt b/java/ql/integration-tests/kotlin/all-platforms/file_classes/A.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/file_classes/A.kt rename to java/ql/integration-tests/kotlin/all-platforms/file_classes/A.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/file_classes/B.kt b/java/ql/integration-tests/kotlin/all-platforms/file_classes/B.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/file_classes/B.kt rename to java/ql/integration-tests/kotlin/all-platforms/file_classes/B.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/file_classes/C.kt b/java/ql/integration-tests/kotlin/all-platforms/file_classes/C.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/file_classes/C.kt rename to java/ql/integration-tests/kotlin/all-platforms/file_classes/C.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/file_classes/classes.expected b/java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/file_classes/classes.expected rename to java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/file_classes/classes.ql b/java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/file_classes/classes.ql rename to java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/file_classes/test.py b/java/ql/integration-tests/kotlin/all-platforms/file_classes/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/file_classes/test.py rename to java/ql/integration-tests/kotlin/all-platforms/file_classes/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/app/build.gradle b/java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/app/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/app/build.gradle rename to java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/app/build.gradle diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/app/src/main/kotlin/testProject/App.kt b/java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/app/src/main/kotlin/testProject/App.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/app/src/main/kotlin/testProject/App.kt rename to java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/app/src/main/kotlin/testProject/App.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/compilations.expected b/java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/compilations.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/compilations.expected rename to java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/compilations.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/compilations.ql b/java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/compilations.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/compilations.ql rename to java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/compilations.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/methods.expected b/java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/methods.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/methods.expected rename to java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/methods.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/methods.ql b/java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/methods.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/methods.ql rename to java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/methods.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/settings.gradle b/java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/settings.gradle rename to java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/settings.gradle diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/test.py b/java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_groovy_app/test.py rename to java/ql/integration-tests/kotlin/all-platforms/gradle_groovy_app/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/diag.expected b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/ConstantExpAppearsNonConstant.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/diag.expected rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/ConstantExpAppearsNonConstant.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/ConstantExpAppearsNonConstant.qlref b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/ConstantExpAppearsNonConstant.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/ConstantExpAppearsNonConstant.qlref rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/ConstantExpAppearsNonConstant.qlref diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/PrintAst.expected b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/PrintAst.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/PrintAst.expected rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/PrintAst.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/PrintAst.qlref b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/PrintAst.qlref similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/PrintAst.qlref rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/PrintAst.qlref diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/app/build.gradle b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/app/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/app/build.gradle rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/app/build.gradle diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/app/src/main/kotlin/testProject/App.kt b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/app/src/main/kotlin/testProject/App.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/app/src/main/kotlin/testProject/App.kt rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/app/src/main/kotlin/testProject/App.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/diag.expected b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/diag.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/diag.expected rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/diag.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/diag.ql b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/diag.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/diag.ql rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/diag.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/settings.gradle b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/settings.gradle rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/settings.gradle diff --git a/java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/test.py b/java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/gradle_kotlinx_serialization/test.py rename to java/ql/integration-tests/kotlin/all-platforms/gradle_kotlinx_serialization/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/Test.java b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/Test.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/Test.java rename to java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/Test.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/test.expected b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/test.py b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/test.py rename to java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/test.ql b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/user.kt b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/user.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java-interface-redeclares-tostring/user.kt rename to java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/user.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/java_modifiers/libsrc/extlib/A.java b/java/ql/integration-tests/kotlin/all-platforms/java_modifiers/libsrc/extlib/A.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java_modifiers/libsrc/extlib/A.java rename to java/ql/integration-tests/kotlin/all-platforms/java_modifiers/libsrc/extlib/A.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/java_modifiers/test.expected b/java/ql/integration-tests/kotlin/all-platforms/java_modifiers/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java_modifiers/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/java_modifiers/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/java_modifiers/test.kt b/java/ql/integration-tests/kotlin/all-platforms/java_modifiers/test.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java_modifiers/test.kt rename to java/ql/integration-tests/kotlin/all-platforms/java_modifiers/test.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/java_modifiers/test.py b/java/ql/integration-tests/kotlin/all-platforms/java_modifiers/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java_modifiers/test.py rename to java/ql/integration-tests/kotlin/all-platforms/java_modifiers/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/java_modifiers/test.ql b/java/ql/integration-tests/kotlin/all-platforms/java_modifiers/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/java_modifiers/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/java_modifiers/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/User.java b/java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/User.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/User.java rename to java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/User.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/test.expected b/java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/test.kt b/java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/test.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/test.kt rename to java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/test.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/test.py b/java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/test.py rename to java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/test.ql b/java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/user.kt b/java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/user.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/jvmoverloads-external-class/user.kt rename to java/ql/integration-tests/kotlin/all-platforms/jvmoverloads-external-class/user.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/User.java b/java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/User.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/User.java rename to java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/User.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/noforwards.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/noforwards.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/noforwards.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/noforwards.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/test.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/test.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/test.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/test.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/test.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/test.py b/java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/test.py rename to java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/test.ql b/java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin-interface-inherited-default/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/kotlin-interface-inherited-default/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/J.java b/java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/J.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/J.java rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/J.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/K.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/K.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/K.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/K.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/K2.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/K2.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/K2.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/K2.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/jlocs.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/jlocs.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/jlocs.expected rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/jlocs.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/jlocs.ql b/java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/jlocs.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/jlocs.ql rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/jlocs.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/test.py b/java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_compiler_java_source/test.py rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_compiler_java_source/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/libsrc/longsig.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/libsrc/longsig.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/libsrc/longsig.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/libsrc/longsig.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/test.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/test.py b/java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/test.py rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/test.ql b/java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/user.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/user.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_file_import/user.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_file_import/user.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/JavaDefns.java b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/JavaDefns.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/JavaDefns.java rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/JavaDefns.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/JavaDefns2.java b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/JavaDefns2.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/JavaDefns2.java rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/JavaDefns2.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/JavaUser.java b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/JavaUser.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/JavaUser.java rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/JavaUser.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/kotlindefns.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/kotlindefns.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/kotlindefns.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/kotlindefns.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/kotlinuser.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/kotlinuser.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/kotlinuser.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/kotlinuser.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/test.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/test.py b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/test.py rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/test.ql b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_lowering_wildcards/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/ReadsFields.java b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/ReadsFields.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/ReadsFields.java rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/ReadsFields.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/hasFields.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/hasFields.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/hasFields.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/hasFields.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.py b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.py rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.ql b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_java_static_fields/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/app/build.gradle b/java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/app/build.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/app/build.gradle rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/app/build.gradle diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/app/src/main/kotlin/testProject/App.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/app/src/main/kotlin/testProject/App.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/app/src/main/kotlin/testProject/App.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/app/src/main/kotlin/testProject/App.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/doubleIntercepted.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/diag.expected similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/doubleIntercepted.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/diag.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/diag.ql b/java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/diag.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/diag.ql rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/diag.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/settings.gradle b/java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/settings.gradle similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/settings.gradle rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/settings.gradle diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/test.py b/java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlin_kfunction/test.py rename to java/ql/integration-tests/kotlin/all-platforms/kotlin_kfunction/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/FileA.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/FileA.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/FileA.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/FileA.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/FileB.kt b/java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/FileB.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/FileB.kt rename to java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/FileB.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/compilations.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/compilations.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/compilations.expected rename to java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/compilations.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/compilations.ql b/java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/compilations.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/compilations.ql rename to java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/compilations.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/methods.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/methods.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/methods.expected rename to java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/methods.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/methods.ql b/java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/methods.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/methods.ql rename to java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/methods.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/test.py b/java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/kotlinc_multi/test.py rename to java/ql/integration-tests/kotlin/all-platforms/kotlinc_multi/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/logs/logs.expected b/java/ql/integration-tests/kotlin/all-platforms/logs/logs.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/logs/logs.expected rename to java/ql/integration-tests/kotlin/all-platforms/logs/logs.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/logs/test.kt b/java/ql/integration-tests/kotlin/all-platforms/logs/test.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/logs/test.kt rename to java/ql/integration-tests/kotlin/all-platforms/logs/test.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/logs/test.py b/java/ql/integration-tests/kotlin/all-platforms/logs/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/logs/test.py rename to java/ql/integration-tests/kotlin/all-platforms/logs/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/JavaUser.java b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/JavaUser.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/JavaUser.java rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/JavaUser.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/KotlinUser.kt b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/KotlinUser.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/KotlinUser.kt rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/KotlinUser.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/libsrc/extlib/OuterGeneric.java b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/libsrc/extlib/OuterGeneric.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/libsrc/extlib/OuterGeneric.java rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/libsrc/extlib/OuterGeneric.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/libsrc/extlib/OuterManyParams.java b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/libsrc/extlib/OuterManyParams.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/libsrc/extlib/OuterManyParams.java rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/libsrc/extlib/OuterManyParams.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/libsrc/extlib/OuterNotGeneric.java b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/libsrc/extlib/OuterNotGeneric.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/libsrc/extlib/OuterNotGeneric.java rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/libsrc/extlib/OuterNotGeneric.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/libsrc/extlib/TypeParamVisibility.java b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/libsrc/extlib/TypeParamVisibility.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/libsrc/extlib/TypeParamVisibility.java rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/libsrc/extlib/TypeParamVisibility.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/test.expected b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/test.py b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/test.py rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/test.ql b/java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nested_generic_types/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/nested_generic_types/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/AnnotatedInterface.java b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/AnnotatedInterface.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/AnnotatedInterface.java rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/AnnotatedInterface.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/AnnotatedMethods.java b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/AnnotatedMethods.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/AnnotatedMethods.java rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/AnnotatedMethods.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/JavaUser.java b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/JavaUser.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/JavaUser.java rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/JavaUser.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/ktUser.kt b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/ktUser.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/ktUser.kt rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/ktUser.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/org/jetbrains/annotations/NotNull.java b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/org/jetbrains/annotations/NotNull.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/org/jetbrains/annotations/NotNull.java rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/org/jetbrains/annotations/NotNull.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/org/jetbrains/annotations/Nullable.java b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/org/jetbrains/annotations/Nullable.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/org/jetbrains/annotations/Nullable.java rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/org/jetbrains/annotations/Nullable.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/test.expected b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/test.py b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/test.py rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/test.ql b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/zpkg/A.java b/java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/zpkg/A.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/nullability-annotations/zpkg/A.java rename to java/ql/integration-tests/kotlin/all-platforms/nullability-annotations/zpkg/A.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/path_transformer/classes.expected b/java/ql/integration-tests/kotlin/all-platforms/path_transformer/classes.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/path_transformer/classes.expected rename to java/ql/integration-tests/kotlin/all-platforms/path_transformer/classes.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/path_transformer/classes.ql b/java/ql/integration-tests/kotlin/all-platforms/path_transformer/classes.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/path_transformer/classes.ql rename to java/ql/integration-tests/kotlin/all-platforms/path_transformer/classes.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/path_transformer/kotlin_source.kt b/java/ql/integration-tests/kotlin/all-platforms/path_transformer/kotlin_source.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/path_transformer/kotlin_source.kt rename to java/ql/integration-tests/kotlin/all-platforms/path_transformer/kotlin_source.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/path_transformer/test.py b/java/ql/integration-tests/kotlin/all-platforms/path_transformer/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/path_transformer/test.py rename to java/ql/integration-tests/kotlin/all-platforms/path_transformer/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/hasprops.kt b/java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/hasprops.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/hasprops.kt rename to java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/hasprops.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/test.expected b/java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/test.py b/java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/test.py rename to java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/test.ql b/java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/usesprops.kt b/java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/usesprops.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/private_property_accessors/usesprops.kt rename to java/ql/integration-tests/kotlin/all-platforms/private_property_accessors/usesprops.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/JavaUser.java b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/JavaUser.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/JavaUser.java rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/JavaUser.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/KotlinUser.kt b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/KotlinUser.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/KotlinUser.kt rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/KotlinUser.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/libsrc/extlib/GenericTypeJava.java b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/libsrc/extlib/GenericTypeJava.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/libsrc/extlib/GenericTypeJava.java rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/libsrc/extlib/GenericTypeJava.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/libsrc/extlib/GenericTypeKotlin.java b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/libsrc/extlib/GenericTypeKotlin.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/libsrc/extlib/GenericTypeKotlin.java rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/libsrc/extlib/GenericTypeKotlin.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/libsrc/extlib/RawTypesInSignatureJava.java b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/libsrc/extlib/RawTypesInSignatureJava.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/libsrc/extlib/RawTypesInSignatureJava.java rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/libsrc/extlib/RawTypesInSignatureJava.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/libsrc/extlib/RawTypesInSignatureKotlin.java b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/libsrc/extlib/RawTypesInSignatureKotlin.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/libsrc/extlib/RawTypesInSignatureKotlin.java rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/libsrc/extlib/RawTypesInSignatureKotlin.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/test.expected b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/test.py b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/test.py rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/test.ql b/java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/raw_generic_types/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/raw_generic_types/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/JavaDefinedContainer.java b/java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/JavaDefinedContainer.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/JavaDefinedContainer.java rename to java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/JavaDefinedContainer.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/JavaDefinedRepeatable.java b/java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/JavaDefinedRepeatable.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/JavaDefinedRepeatable.java rename to java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/JavaDefinedRepeatable.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/JavaUser.java b/java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/JavaUser.java similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/JavaUser.java rename to java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/JavaUser.java diff --git a/java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/lib.kt b/java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/lib.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/lib.kt rename to java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/lib.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/test.expected b/java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/test.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/test.expected rename to java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/test.expected diff --git a/java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/test.kt b/java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/test.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/test.kt rename to java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/test.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/test.py b/java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/test.py rename to java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/test.py diff --git a/java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/test.ql b/java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/test.ql similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/repeatable-annotations/test.ql rename to java/ql/integration-tests/kotlin/all-platforms/repeatable-annotations/test.ql diff --git a/java/ql/integration-tests/all-platforms/kotlin/trap_compression/test.kt b/java/ql/integration-tests/kotlin/all-platforms/trap_compression/test.kt similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/trap_compression/test.kt rename to java/ql/integration-tests/kotlin/all-platforms/trap_compression/test.kt diff --git a/java/ql/integration-tests/all-platforms/kotlin/trap_compression/test.py b/java/ql/integration-tests/kotlin/all-platforms/trap_compression/test.py similarity index 100% rename from java/ql/integration-tests/all-platforms/kotlin/trap_compression/test.py rename to java/ql/integration-tests/kotlin/all-platforms/trap_compression/test.py diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/PrintAst.expected b/java/ql/integration-tests/kotlin/linux/custom_plugin/PrintAst.expected similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/PrintAst.expected rename to java/ql/integration-tests/kotlin/linux/custom_plugin/PrintAst.expected diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/PrintAst.qlref b/java/ql/integration-tests/kotlin/linux/custom_plugin/PrintAst.qlref similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/PrintAst.qlref rename to java/ql/integration-tests/kotlin/linux/custom_plugin/PrintAst.qlref diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/a.kt b/java/ql/integration-tests/kotlin/linux/custom_plugin/a.kt similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/a.kt rename to java/ql/integration-tests/kotlin/linux/custom_plugin/a.kt diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/b.kt b/java/ql/integration-tests/kotlin/linux/custom_plugin/b.kt similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/b.kt rename to java/ql/integration-tests/kotlin/linux/custom_plugin/b.kt diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/c.kt b/java/ql/integration-tests/kotlin/linux/custom_plugin/c.kt similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/c.kt rename to java/ql/integration-tests/kotlin/linux/custom_plugin/c.kt diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/d.kt b/java/ql/integration-tests/kotlin/linux/custom_plugin/d.kt similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/d.kt rename to java/ql/integration-tests/kotlin/linux/custom_plugin/d.kt diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/diag.expected b/java/ql/integration-tests/kotlin/linux/custom_plugin/diag.expected similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/diag.expected rename to java/ql/integration-tests/kotlin/linux/custom_plugin/diag.expected diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/diag.ql b/java/ql/integration-tests/kotlin/linux/custom_plugin/diag.ql similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/diag.ql rename to java/ql/integration-tests/kotlin/linux/custom_plugin/diag.ql diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/e.kt b/java/ql/integration-tests/kotlin/linux/custom_plugin/e.kt similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/e.kt rename to java/ql/integration-tests/kotlin/linux/custom_plugin/e.kt diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/methods.expected b/java/ql/integration-tests/kotlin/linux/custom_plugin/methods.expected similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/methods.expected rename to java/ql/integration-tests/kotlin/linux/custom_plugin/methods.expected diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/methods.ql b/java/ql/integration-tests/kotlin/linux/custom_plugin/methods.ql similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/methods.ql rename to java/ql/integration-tests/kotlin/linux/custom_plugin/methods.ql diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/BUILD.bazel b/java/ql/integration-tests/kotlin/linux/custom_plugin/plugin/BUILD.bazel similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/BUILD.bazel rename to java/ql/integration-tests/kotlin/linux/custom_plugin/plugin/BUILD.bazel diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/Plugin.kt b/java/ql/integration-tests/kotlin/linux/custom_plugin/plugin/Plugin.kt similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/Plugin.kt rename to java/ql/integration-tests/kotlin/linux/custom_plugin/plugin/Plugin.kt diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar b/java/ql/integration-tests/kotlin/linux/custom_plugin/plugin/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar rename to java/ql/integration-tests/kotlin/linux/custom_plugin/plugin/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/qlpack.yml b/java/ql/integration-tests/kotlin/linux/custom_plugin/qlpack.yml similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/qlpack.yml rename to java/ql/integration-tests/kotlin/linux/custom_plugin/qlpack.yml diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/rootClasses.expected b/java/ql/integration-tests/kotlin/linux/custom_plugin/rootClasses.expected similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/rootClasses.expected rename to java/ql/integration-tests/kotlin/linux/custom_plugin/rootClasses.expected diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/rootClasses.ql b/java/ql/integration-tests/kotlin/linux/custom_plugin/rootClasses.ql similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/rootClasses.ql rename to java/ql/integration-tests/kotlin/linux/custom_plugin/rootClasses.ql diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/staticinit.expected b/java/ql/integration-tests/kotlin/linux/custom_plugin/staticinit.expected similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/staticinit.expected rename to java/ql/integration-tests/kotlin/linux/custom_plugin/staticinit.expected diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/staticinit.ql b/java/ql/integration-tests/kotlin/linux/custom_plugin/staticinit.ql similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/staticinit.ql rename to java/ql/integration-tests/kotlin/linux/custom_plugin/staticinit.ql diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/test.py b/java/ql/integration-tests/kotlin/linux/custom_plugin/test.py similarity index 82% rename from java/ql/integration-tests/linux-only/kotlin/custom_plugin/test.py rename to java/ql/integration-tests/kotlin/linux/custom_plugin/test.py index 2ec685ac685..71b6514059f 100644 --- a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/test.py +++ b/java/ql/integration-tests/kotlin/linux/custom_plugin/test.py @@ -13,7 +13,7 @@ def test(codeql, java_full, cwd, semmle_code_dir, test_dir): f"--output_user_root={build_dir}", "--max_idle_secs=1", "build", - "//java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin", + "//java/ql/integration-tests/kotlin/linux/custom_plugin/plugin", "--spawn_strategy=local", "--nouse_action_cache", "--noremote_accept_cached", @@ -23,7 +23,7 @@ def test(codeql, java_full, cwd, semmle_code_dir, test_dir): _cwd=test_dir, ) shutil.copy( - "bazel-bin/java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/plugin.jar", + "bazel-bin/java/ql/integration-tests/kotlin/linux/custom_plugin/plugin/plugin.jar", "plugin.jar", ) codeql.database.create( diff --git a/java/ql/integration-tests/linux-only/kotlin/use_java_library/javasrc/extlib/BoundedGenericTest.java b/java/ql/integration-tests/kotlin/linux/use_java_library/javasrc/extlib/BoundedGenericTest.java similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/use_java_library/javasrc/extlib/BoundedGenericTest.java rename to java/ql/integration-tests/kotlin/linux/use_java_library/javasrc/extlib/BoundedGenericTest.java diff --git a/java/ql/integration-tests/linux-only/kotlin/use_java_library/javasrc/extlib/ComplexBoundedGenericTest.java b/java/ql/integration-tests/kotlin/linux/use_java_library/javasrc/extlib/ComplexBoundedGenericTest.java similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/use_java_library/javasrc/extlib/ComplexBoundedGenericTest.java rename to java/ql/integration-tests/kotlin/linux/use_java_library/javasrc/extlib/ComplexBoundedGenericTest.java diff --git a/java/ql/integration-tests/linux-only/kotlin/use_java_library/javasrc/extlib/GenericTest.java b/java/ql/integration-tests/kotlin/linux/use_java_library/javasrc/extlib/GenericTest.java similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/use_java_library/javasrc/extlib/GenericTest.java rename to java/ql/integration-tests/kotlin/linux/use_java_library/javasrc/extlib/GenericTest.java diff --git a/java/ql/integration-tests/linux-only/kotlin/use_java_library/javasrc/extlib/Lib.java b/java/ql/integration-tests/kotlin/linux/use_java_library/javasrc/extlib/Lib.java similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/use_java_library/javasrc/extlib/Lib.java rename to java/ql/integration-tests/kotlin/linux/use_java_library/javasrc/extlib/Lib.java diff --git a/java/ql/integration-tests/linux-only/kotlin/use_java_library/parameterTypes.expected b/java/ql/integration-tests/kotlin/linux/use_java_library/parameterTypes.expected similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/use_java_library/parameterTypes.expected rename to java/ql/integration-tests/kotlin/linux/use_java_library/parameterTypes.expected diff --git a/java/ql/integration-tests/linux-only/kotlin/use_java_library/parameterTypes.ql b/java/ql/integration-tests/kotlin/linux/use_java_library/parameterTypes.ql similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/use_java_library/parameterTypes.ql rename to java/ql/integration-tests/kotlin/linux/use_java_library/parameterTypes.ql diff --git a/java/ql/integration-tests/linux-only/kotlin/use_java_library/test.py b/java/ql/integration-tests/kotlin/linux/use_java_library/test.py similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/use_java_library/test.py rename to java/ql/integration-tests/kotlin/linux/use_java_library/test.py diff --git a/java/ql/integration-tests/linux-only/kotlin/use_java_library/user.kt b/java/ql/integration-tests/kotlin/linux/use_java_library/user.kt similarity index 100% rename from java/ql/integration-tests/linux-only/kotlin/use_java_library/user.kt rename to java/ql/integration-tests/kotlin/linux/use_java_library/user.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/generic-extension-property/User.java b/java/ql/integration-tests/kotlin/posix/generic-extension-property/User.java similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/generic-extension-property/User.java rename to java/ql/integration-tests/kotlin/posix/generic-extension-property/User.java diff --git a/java/ql/integration-tests/posix-only/kotlin/generic-extension-property/test.expected b/java/ql/integration-tests/kotlin/posix/generic-extension-property/test.expected similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/generic-extension-property/test.expected rename to java/ql/integration-tests/kotlin/posix/generic-extension-property/test.expected diff --git a/java/ql/integration-tests/posix-only/kotlin/generic-extension-property/test.kt b/java/ql/integration-tests/kotlin/posix/generic-extension-property/test.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/generic-extension-property/test.kt rename to java/ql/integration-tests/kotlin/posix/generic-extension-property/test.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/generic-extension-property/test.py b/java/ql/integration-tests/kotlin/posix/generic-extension-property/test.py similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/generic-extension-property/test.py rename to java/ql/integration-tests/kotlin/posix/generic-extension-property/test.py diff --git a/java/ql/integration-tests/posix-only/kotlin/generic-extension-property/test.ql b/java/ql/integration-tests/kotlin/posix/generic-extension-property/test.ql similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/generic-extension-property/test.ql rename to java/ql/integration-tests/kotlin/posix/generic-extension-property/test.ql diff --git a/java/ql/integration-tests/posix-only/kotlin/java_kotlin_extraction_orders/test.expected b/java/ql/integration-tests/kotlin/posix/java_kotlin_extraction_orders/test.expected similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/java_kotlin_extraction_orders/test.expected rename to java/ql/integration-tests/kotlin/posix/java_kotlin_extraction_orders/test.expected diff --git a/java/ql/integration-tests/posix-only/kotlin/java_kotlin_extraction_orders/test.py b/java/ql/integration-tests/kotlin/posix/java_kotlin_extraction_orders/test.py similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/java_kotlin_extraction_orders/test.py rename to java/ql/integration-tests/kotlin/posix/java_kotlin_extraction_orders/test.py diff --git a/java/ql/integration-tests/posix-only/kotlin/java_kotlin_extraction_orders/test.ql b/java/ql/integration-tests/kotlin/posix/java_kotlin_extraction_orders/test.ql similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/java_kotlin_extraction_orders/test.ql rename to java/ql/integration-tests/kotlin/posix/java_kotlin_extraction_orders/test.ql diff --git a/java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/manual.kt b/java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/doubleIntercepted.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/manual.kt rename to java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/doubleIntercepted.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/manuallyIntercepted.kt b/java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/manual.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/manuallyIntercepted.kt rename to java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/manual.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/normal.kt b/java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/manuallyIntercepted.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/normal.kt rename to java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/manuallyIntercepted.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/notSeen.kt b/java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/normal.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/code/notSeen.kt rename to java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/normal.kt diff --git a/javascript/ql/integration-tests/all-platforms/no-types/javascript.expected b/java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/notSeen.kt similarity index 100% rename from javascript/ql/integration-tests/all-platforms/no-types/javascript.expected rename to java/ql/integration-tests/kotlin/posix/kotlin_double_interception/code/notSeen.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/files.expected b/java/ql/integration-tests/kotlin/posix/kotlin_double_interception/files.expected similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/files.expected rename to java/ql/integration-tests/kotlin/posix/kotlin_double_interception/files.expected diff --git a/java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/files.ql b/java/ql/integration-tests/kotlin/posix/kotlin_double_interception/files.ql similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/files.ql rename to java/ql/integration-tests/kotlin/posix/kotlin_double_interception/files.ql diff --git a/java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/test.py b/java/ql/integration-tests/kotlin/posix/kotlin_double_interception/test.py similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/kotlin_double_interception/test.py rename to java/ql/integration-tests/kotlin/posix/kotlin_double_interception/test.py diff --git a/java/ql/integration-tests/posix-only/kotlin/module_mangled_names/User.java b/java/ql/integration-tests/kotlin/posix/module_mangled_names/User.java similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/module_mangled_names/User.java rename to java/ql/integration-tests/kotlin/posix/module_mangled_names/User.java diff --git a/java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test.expected b/java/ql/integration-tests/kotlin/posix/module_mangled_names/test.expected similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test.expected rename to java/ql/integration-tests/kotlin/posix/module_mangled_names/test.expected diff --git a/java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test.py b/java/ql/integration-tests/kotlin/posix/module_mangled_names/test.py similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test.py rename to java/ql/integration-tests/kotlin/posix/module_mangled_names/test.py diff --git a/java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test.ql b/java/ql/integration-tests/kotlin/posix/module_mangled_names/test.ql similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test.ql rename to java/ql/integration-tests/kotlin/posix/module_mangled_names/test.ql diff --git a/java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test1.kt b/java/ql/integration-tests/kotlin/posix/module_mangled_names/test1.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test1.kt rename to java/ql/integration-tests/kotlin/posix/module_mangled_names/test1.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test2.kt b/java/ql/integration-tests/kotlin/posix/module_mangled_names/test2.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test2.kt rename to java/ql/integration-tests/kotlin/posix/module_mangled_names/test2.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test3.kt b/java/ql/integration-tests/kotlin/posix/module_mangled_names/test3.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/module_mangled_names/test3.kt rename to java/ql/integration-tests/kotlin/posix/module_mangled_names/test3.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/Test.java b/java/ql/integration-tests/kotlin/posix/needless-java-wildcards/Test.java similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/Test.java rename to java/ql/integration-tests/kotlin/posix/needless-java-wildcards/Test.java diff --git a/java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/kConsumer.kt b/java/ql/integration-tests/kotlin/posix/needless-java-wildcards/kConsumer.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/kConsumer.kt rename to java/ql/integration-tests/kotlin/posix/needless-java-wildcards/kConsumer.kt diff --git a/java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/test.expected b/java/ql/integration-tests/kotlin/posix/needless-java-wildcards/test.expected similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/test.expected rename to java/ql/integration-tests/kotlin/posix/needless-java-wildcards/test.expected diff --git a/java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/test.py b/java/ql/integration-tests/kotlin/posix/needless-java-wildcards/test.py similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/test.py rename to java/ql/integration-tests/kotlin/posix/needless-java-wildcards/test.py diff --git a/java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/test.ql b/java/ql/integration-tests/kotlin/posix/needless-java-wildcards/test.ql similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/test.ql rename to java/ql/integration-tests/kotlin/posix/needless-java-wildcards/test.ql diff --git a/java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/user.kt b/java/ql/integration-tests/kotlin/posix/needless-java-wildcards/user.kt similarity index 100% rename from java/ql/integration-tests/posix-only/kotlin/needless-java-wildcards/user.kt rename to java/ql/integration-tests/kotlin/posix/needless-java-wildcards/user.kt diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 2dd89daf33f..41804317176 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,36 @@ +## 4.0.0 + +### Breaking Changes + +* Deleted the deprecated `ProcessBuilderConstructor`, `MethodProcessBuilderCommand`, and `MethodRuntimeExec` from `JDK.qll`. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted the deprecated `getURI` predicate from `CamelJavaDslToDecl` and `SpringCamelXmlToElement`, use `getUri` instead. +* Deleted the deprecated `ExecCallable` class from `ExternalProcess.qll`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted the deprecated `PathCreation.qll` file. +* Deleted the deprecated `WebviewDubuggingEnabledQuery.qll` file. + +### Major Analysis Improvements + +* When a method exists as source code, we will no longer use a models-as-data (MaD) model of that method. This primarily affects query results when the analysis includes generated models for the source code being analysed. + +## 3.0.2 + +No user-facing changes. + +## 3.0.1 + +### Minor Analysis Improvements + +* Threat-model for `System.in` changed from `commandargs` to newly created `stdin` (both subgroups of `local`). + +### Bug Fixes + +* Fixed an issue where analysis in `build-mode: none` may very occasionally throw a `CoderMalfunctionError` while resolving dependencies provided by a build system (Maven or Gradle), which could cause some dependency resolution and consequently alerts to vary unpredictably from one run to another. +* Fixed an issue where Java analysis in `build-mode: none` would fail to resolve dependencies using the `executable-war` Maven artifact type. +* Fixed an issue where analysis in `build-mode: none` may fail to resolve dependencies of Gradle projects where the dependency uses a non-empty artifact classifier -- for example, `someproject-1.2.3-tests.jar`, which has the classifier `tests`. + ## 3.0.0 ### Breaking Changes diff --git a/java/ql/lib/change-notes/2024-08-09-buildless-executable-war.md b/java/ql/lib/change-notes/2024-08-09-buildless-executable-war.md deleted file mode 100644 index 96088e50532..00000000000 --- a/java/ql/lib/change-notes/2024-08-09-buildless-executable-war.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed an issue where Java analysis in `build-mode: none` would fail to resolve dependencies using the `executable-war` Maven artifact type. diff --git a/java/ql/lib/change-notes/2024-08-09-buildless-gradle-classifiers.md b/java/ql/lib/change-notes/2024-08-09-buildless-gradle-classifiers.md deleted file mode 100644 index d8ed932ecf2..00000000000 --- a/java/ql/lib/change-notes/2024-08-09-buildless-gradle-classifiers.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed an issue where analysis in `build-mode: none` may fail to resolve dependencies of Gradle projects where the dependency uses a non-empty artifact classifier -- for example, `someproject-1.2.3-tests.jar`, which has the classifier `tests`. diff --git a/java/ql/lib/change-notes/2024-08-13-stdin-threat-model.md b/java/ql/lib/change-notes/2024-08-13-stdin-threat-model.md deleted file mode 100644 index 93d456dc2a3..00000000000 --- a/java/ql/lib/change-notes/2024-08-13-stdin-threat-model.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Threat-model for `System.in` changed from `commandargs` to newly created `stdin` (both subgroups of `local`). diff --git a/java/ql/lib/change-notes/2024-08-14-buildless-coder-malfunction.md b/java/ql/lib/change-notes/2024-08-14-buildless-coder-malfunction.md deleted file mode 100644 index a84fec4c8f1..00000000000 --- a/java/ql/lib/change-notes/2024-08-14-buildless-coder-malfunction.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed an issue where analysis in `build-mode: none` may very occasionally throw a `CoderMalfunctionError` while resolving dependencies provided by a build system (Maven or Gradle), which could cause some dependency resolution and consequently alerts to vary unpredictably from one run to another. diff --git a/java/ql/lib/change-notes/2024-09-16-nestedName.md b/java/ql/lib/change-notes/2024-09-16-nestedName.md new file mode 100644 index 00000000000..26e384e99da --- /dev/null +++ b/java/ql/lib/change-notes/2024-09-16-nestedName.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `RefType.nestedName()` predicate has been deprecated, and `RefType.getNestedName()` added to replace it. diff --git a/java/ql/lib/change-notes/released/3.0.1.md b/java/ql/lib/change-notes/released/3.0.1.md new file mode 100644 index 00000000000..6c67dd0d9bf --- /dev/null +++ b/java/ql/lib/change-notes/released/3.0.1.md @@ -0,0 +1,11 @@ +## 3.0.1 + +### Minor Analysis Improvements + +* Threat-model for `System.in` changed from `commandargs` to newly created `stdin` (both subgroups of `local`). + +### Bug Fixes + +* Fixed an issue where analysis in `build-mode: none` may very occasionally throw a `CoderMalfunctionError` while resolving dependencies provided by a build system (Maven or Gradle), which could cause some dependency resolution and consequently alerts to vary unpredictably from one run to another. +* Fixed an issue where Java analysis in `build-mode: none` would fail to resolve dependencies using the `executable-war` Maven artifact type. +* Fixed an issue where analysis in `build-mode: none` may fail to resolve dependencies of Gradle projects where the dependency uses a non-empty artifact classifier -- for example, `someproject-1.2.3-tests.jar`, which has the classifier `tests`. diff --git a/java/ql/lib/change-notes/released/3.0.2.md b/java/ql/lib/change-notes/released/3.0.2.md new file mode 100644 index 00000000000..8ab60a37393 --- /dev/null +++ b/java/ql/lib/change-notes/released/3.0.2.md @@ -0,0 +1,3 @@ +## 3.0.2 + +No user-facing changes. diff --git a/java/ql/lib/change-notes/released/4.0.0.md b/java/ql/lib/change-notes/released/4.0.0.md new file mode 100644 index 00000000000..b3ebf7b75f8 --- /dev/null +++ b/java/ql/lib/change-notes/released/4.0.0.md @@ -0,0 +1,16 @@ +## 4.0.0 + +### Breaking Changes + +* Deleted the deprecated `ProcessBuilderConstructor`, `MethodProcessBuilderCommand`, and `MethodRuntimeExec` from `JDK.qll`. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted the deprecated `getURI` predicate from `CamelJavaDslToDecl` and `SpringCamelXmlToElement`, use `getUri` instead. +* Deleted the deprecated `ExecCallable` class from `ExternalProcess.qll`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted the deprecated `PathCreation.qll` file. +* Deleted the deprecated `WebviewDubuggingEnabledQuery.qll` file. + +### Major Analysis Improvements + +* A generated (Models as Data) summary model is no longer used, if there exists a source code alternative. This primarily affects the analysis, when the analysis includes generated models for the source code being analysed. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 33d3a2cd113..49fe3eef697 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 3.0.0 +lastReleaseVersion: 4.0.0 diff --git a/java/ql/lib/config/semmlecode.dbscheme b/java/ql/lib/config/semmlecode.dbscheme index dee651b58d1..376ce7dad79 100644 --- a/java/ql/lib/config/semmlecode.dbscheme +++ b/java/ql/lib/config/semmlecode.dbscheme @@ -138,21 +138,6 @@ compilation_time( float seconds : float ref ); -/** - * An error or warning generated by the extractor. - * The diagnostic message `diagnostic` was generated during compiler - * invocation `compilation`, and is the `file_number_diagnostic_number`th - * message generated while extracting the `file_number`th file of that - * invocation. - */ -#keyset[compilation, file_number, file_number_diagnostic_number] -diagnostic_for( - unique int diagnostic : @diagnostic ref, - int compilation : @compilation ref, - int file_number : int ref, - int file_number_diagnostic_number : int ref -); - /** * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed * time (respectively) that the original compilation (not the extraction) @@ -191,6 +176,21 @@ diagnostics( int location: @location_default ref ); +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + /* * External artifacts */ @@ -202,41 +202,10 @@ externalData( string value : string ref ); -snapshotDate( - unique date snapshotDate : date ref -); - sourceLocationPrefix( string prefix : string ref ); -/* - * Duplicate code - */ - -duplicateCode( - unique int id : @duplication, - string relativePath : string ref, - int equivClass : int ref -); - -similarCode( - unique int id : @similarity, - string relativePath : string ref, - int equivClass : int ref -); - -@duplication_or_similarity = @duplication | @similarity - -tokens( - int id : @duplication_or_similarity ref, - int offset : int ref, - int beginLine : int ref, - int beginColumn : int ref, - int endLine : int ref, - int endColumn : int ref -); - /* * SMAP */ @@ -516,7 +485,6 @@ typeVars( unique int id: @typevariable, string nodeName: string ref, int pos: int ref, - int kind: int ref, // deprecated int parentid: @classorinterfaceorcallable ref ); diff --git a/java/ql/lib/config/semmlecode.dbscheme.stats b/java/ql/lib/config/semmlecode.dbscheme.stats index c7b35b17ef7..0a89bd2d1ec 100644 --- a/java/ql/lib/config/semmlecode.dbscheme.stats +++ b/java/ql/lib/config/semmlecode.dbscheme.stats @@ -16,14 +16,6 @@ @externalDataElement 1 - - @duplication - 1 - - - @similarity - 1 - @file 1291911 @@ -3965,17 +3957,6 @@ - - snapshotDate - 1 - - - snapshotDate - 1 - - - - sourceLocationPrefix 569 @@ -3987,522 +3968,6 @@ - - duplicateCode - 1 - - - id - 1 - - - relativePath - 1 - - - equivClass - 1 - - - - - id - relativePath - - - 12 - - - 1 - 2 - 1 - - - - - - - id - equivClass - - - 12 - - - 1 - 2 - 1 - - - - - - - relativePath - id - - - 12 - - - - - - relativePath - equivClass - - - 12 - - - - - - equivClass - id - - - 12 - - - - - - equivClass - relativePath - - - 12 - - - - - - - - similarCode - 1 - - - id - 1 - - - relativePath - 1 - - - equivClass - 1 - - - - - id - relativePath - - - 12 - - - 1 - 2 - 1 - - - - - - - id - equivClass - - - 12 - - - 1 - 2 - 1 - - - - - - - relativePath - id - - - 12 - - - - - - relativePath - equivClass - - - 12 - - - - - - equivClass - id - - - 12 - - - - - - equivClass - relativePath - - - 12 - - - - - - - - tokens - 1 - - - id - 1 - - - offset - 1 - - - beginLine - 1 - - - beginColumn - 1 - - - endLine - 1 - - - endColumn - 1 - - - - - id - offset - - - 12 - - - - - - id - beginLine - - - 12 - - - - - - id - beginColumn - - - 12 - - - - - - id - endLine - - - 12 - - - - - - id - endColumn - - - 12 - - - - - - offset - id - - - 12 - - - - - - offset - beginLine - - - 12 - - - - - - offset - beginColumn - - - 12 - - - - - - offset - endLine - - - 12 - - - - - - offset - endColumn - - - 12 - - - - - - beginLine - id - - - 12 - - - - - - beginLine - offset - - - 12 - - - - - - beginLine - beginColumn - - - 12 - - - - - - beginLine - endLine - - - 12 - - - - - - beginLine - endColumn - - - 12 - - - - - - beginColumn - id - - - 12 - - - - - - beginColumn - offset - - - 12 - - - - - - beginColumn - beginLine - - - 12 - - - - - - beginColumn - endLine - - - 12 - - - - - - beginColumn - endColumn - - - 12 - - - - - - endLine - id - - - 12 - - - - - - endLine - offset - - - 12 - - - - - - endLine - beginLine - - - 12 - - - - - - endLine - beginColumn - - - 12 - - - - - - endLine - endColumn - - - 12 - - - - - - endColumn - id - - - 12 - - - - - - endColumn - offset - - - 12 - - - - - - endColumn - beginLine - - - 12 - - - - - - endColumn - beginColumn - - - 12 - - - - - - endColumn - endLine - - - 12 - - - - - - smap_header 1 @@ -13510,10 +12975,6 @@ pos 1048 - - kind - 262 - parentid 612137 @@ -13552,22 +13013,6 @@ - - id - kind - - - 12 - - - 1 - 2 - 864332 - - - - - id parentid @@ -13671,22 +13116,6 @@ - - nodeName - kind - - - 12 - - - 1 - 2 - 11797 - - - - - nodeName parentid @@ -13805,22 +13234,6 @@ - - pos - kind - - - 12 - - - 1 - 2 - 1048 - - - - - pos parentid @@ -13852,70 +13265,6 @@ - - kind - id - - - 12 - - - 3297 - 3298 - 262 - - - - - - - kind - nodeName - - - 12 - - - 45 - 46 - 262 - - - - - - - kind - pos - - - 12 - - - 4 - 5 - 262 - - - - - - - kind - parentid - - - 12 - - - 2335 - 2336 - 262 - - - - - parentid id @@ -13994,22 +13343,6 @@ - - parentid - kind - - - 12 - - - 1 - 2 - 612137 - - - - - diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index f48acbeace1..5acfd7f4e10 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -48,6 +48,7 @@ extensions: - ["java.net", "URI", False, "URI", "(String,String,String)", "", "Argument[1]", "ReturnValue", "taint", "ai-manual"] - ["java.net", "URI", False, "URI", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.net", "URI", False, "create", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.net", "URI", False, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] - ["java.net", "URI", False, "resolve", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.net", "URI", False, "resolve", "(URI)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.net", "URI", False, "toASCIIString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] diff --git a/java/ql/lib/ext/java.nio.model.yml b/java/ql/lib/ext/java.nio.model.yml index 1548dc2c649..40c12b6c633 100644 --- a/java/ql/lib/ext/java.nio.model.yml +++ b/java/ql/lib/ext/java.nio.model.yml @@ -5,7 +5,20 @@ extensions: data: - ["java.nio", "ByteBuffer", False, "array", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio", "ByteBuffer", False, "get", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.nio", "ByteBuffer", False, "wrap", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio", "ByteBuffer", True, "put", "(ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["java.nio", "ByteBuffer", True, "put", "(ByteBuffer)", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["java.nio", "ByteBuffer", True, "put", "(byte)", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[])", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[],int,int)", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["java.nio", "ByteBuffer", True, "wrap", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio", "ByteBuffer", True, "wrap", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio", "CharBuffer", True, "wrap", "(CharSequence)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio", "CharBuffer", True, "wrap", "(CharSequence,int,int)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio", "CharBuffer", True, "wrap", "(char[])", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio", "CharBuffer", True, "wrap", "(char[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - addsTo: pack: codeql/java-all diff --git a/java/ql/lib/ext/java.security.cert.model.yml b/java/ql/lib/ext/java.security.cert.model.yml index 503ad06cabf..d85413b723d 100644 --- a/java/ql/lib/ext/java.security.cert.model.yml +++ b/java/ql/lib/ext/java.security.cert.model.yml @@ -4,6 +4,14 @@ extensions: extensible: sinkModel data: - ["java.security.cert", "X509CertSelector", False, "setSubjectPublicKey", "(byte[])", "", "Argument[0]", "credentials-key", "hq-generated"] + + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.security.cert", "X509Certificate", True, "getIssuerX500Principal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] + - ["java.security.cert", "X509Certificate", True, "getSubjectX500Principal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] + - addsTo: pack: codeql/java-all extensible: neutralModel diff --git a/java/ql/lib/ext/java.security.model.yml b/java/ql/lib/ext/java.security.model.yml index 6157c635fe6..27120072763 100644 --- a/java/ql/lib/ext/java.security.model.yml +++ b/java/ql/lib/ext/java.security.model.yml @@ -26,6 +26,9 @@ extensions: - ["java.security", "CodeSource", False, "getCertificates", "()", "", "Argument[this].SyntheticField[java.security.CodeSource.certificates].ArrayElement", "ReturnValue.ArrayElement", "value", "df-manual"] - ["java.security", "CodeSource", False, "getCodeSigners", "()", "", "Argument[this].SyntheticField[java.security.CodeSource.codeSigners].ArrayElement", "ReturnValue.ArrayElement", "value", "df-manual"] - ["java.security", "CodeSource", False, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] + - ["java.security", "Permission", True, "Permission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-manual"] + - ["java.security", "Permission", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] + - addsTo: pack: codeql/java-all extensible: neutralModel diff --git a/java/ql/lib/ext/java.util.logging.model.yml b/java/ql/lib/ext/java.util.logging.model.yml index 4bd8c6556c9..f297bc8cda1 100644 --- a/java/ql/lib/ext/java.util.logging.model.yml +++ b/java/ql/lib/ext/java.util.logging.model.yml @@ -46,8 +46,13 @@ extensions: - ["java.util.logging", "Logger", False, "getLogger", "(String)", "", "Argument[0]", "ReturnValue.SyntheticField[java.util.logging.Logger.name]", "value", "manual"] - ["java.util.logging", "Logger", False, "getName", "()", "", "Argument[this].SyntheticField[java.util.logging.Logger.name]", "ReturnValue", "value", "manual"] - ["java.util.logging", "LogRecord", False, "LogRecord", "", "", "Argument[1]", "Argument[this]", "taint", "manual"] + - ["java.util.logging", "LogRecord", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] + - ["java.util.logging", "LogRecord", True, "getParameters", "()", "", "Argument[this].SyntheticField[java.util.logging.LogRecord.parameters].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] + - ["java.util.logging", "LogRecord", True, "setParameters", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this].SyntheticField[java.util.logging.LogRecord.parameters].ArrayElement", "value", "manual"] - addsTo: pack: codeql/java-all extensible: neutralModel data: + - ["java.util.logging", "Handler", "getEncoding", "()", "summary", "manual"] - ["java.util.logging", "Logger", "isLoggable", "(Level)", "summary", "manual"] + - ["java.util.logging", "LogRecord", "getResourceBundle", "()", "summary", "df-manual"] diff --git a/java/ql/lib/ext/java.util.logging.yml b/java/ql/lib/ext/java.util.logging.yml deleted file mode 100644 index c4bf4e77300..00000000000 --- a/java/ql/lib/ext/java.util.logging.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: neutralModel - data: - # summary neutrals - - ["java.util.logging", "LogRecord", "getResourceBundle", "()", "summary", "df-manual"] - - ["java.util.logging", "LogRecord", "setParameters", "", "summary", "df-manual"] diff --git a/java/ql/lib/ext/javax.management.model.yml b/java/ql/lib/ext/javax.management.model.yml index f1877228cf1..d973be3a69b 100644 --- a/java/ql/lib/ext/javax.management.model.yml +++ b/java/ql/lib/ext/javax.management.model.yml @@ -3,4 +3,7 @@ extensions: pack: codeql/java-all extensible: summaryModel data: + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,String)", "", "Argument[3]", "Argument[this]", "taint", "df-manual"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,long,String)", "", "Argument[4]", "Argument[this]", "taint", "df-manual"] + - ["javax.management", "Notification", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] - ["javax.management", "ObjectName", True, "ObjectName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 3b1e06d84ae..9189b611545 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 3.0.1-dev +version: 4.0.1-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/lib/semmle/code/Location.qll b/java/ql/lib/semmle/code/Location.qll index 8b53254893b..1a6ddc73728 100644 --- a/java/ql/lib/semmle/code/Location.qll +++ b/java/ql/lib/semmle/code/Location.qll @@ -34,7 +34,7 @@ predicate hasName(Element e, string name) { or localvars(e, name, _, _) or - typeVars(e, name, _, _, _) + typeVars(e, name, _, _) or wildcards(e, name, _) or diff --git a/java/ql/lib/semmle/code/java/Annotation.qll b/java/ql/lib/semmle/code/java/Annotation.qll index de7dd47a93e..f39b1f3420a 100644 --- a/java/ql/lib/semmle/code/java/Annotation.qll +++ b/java/ql/lib/semmle/code/java/Annotation.qll @@ -255,7 +255,7 @@ class Annotatable extends Element { */ predicate hasAnnotation(string package, string name) { exists(AnnotationType at | at = this.getAnAnnotation().getType() | - at.nestedName() = name and at.getPackage().getName() = package + at.getNestedName() = name and at.getPackage().getName() = package ) } diff --git a/java/ql/lib/semmle/code/java/Element.qll b/java/ql/lib/semmle/code/java/Element.qll index 08689f05f94..493bf7cec0f 100644 --- a/java/ql/lib/semmle/code/java/Element.qll +++ b/java/ql/lib/semmle/code/java/Element.qll @@ -36,6 +36,13 @@ class Element extends @element, Top { */ predicate fromSource() { this.getCompilationUnit().isSourceFile() } + /** + * Holds if this element is from source and classified as a stub implementation. + * An implementation is considered a stub, if the the path to the + * source file contains `/stubs/`. + */ + predicate isStub() { this.fromSource() and this.getFile().getAbsolutePath().matches("%/stubs/%") } + /** Gets the compilation unit that this element belongs to. */ CompilationUnit getCompilationUnit() { result = this.getFile() } @@ -110,5 +117,5 @@ private predicate hasChildElement(Element parent, Element e) { or fields(e, _, _, parent, _) or - typeVars(e, _, _, _, parent) + typeVars(e, _, _, parent) } diff --git a/java/ql/lib/semmle/code/java/Generics.qll b/java/ql/lib/semmle/code/java/Generics.qll index 5f67d78b383..507c3bb919e 100644 --- a/java/ql/lib/semmle/code/java/Generics.qll +++ b/java/ql/lib/semmle/code/java/Generics.qll @@ -39,7 +39,7 @@ import Type * For example, `X` in `class X { }`. */ class GenericType extends ClassOrInterface { - GenericType() { typeVars(_, _, _, _, this) } + GenericType() { typeVars(_, _, _, this) } /** * Gets a parameterization of this generic type, where each use of @@ -64,7 +64,7 @@ class GenericType extends ClassOrInterface { /** * Gets the `i`-th type parameter of this generic type. */ - TypeVariable getTypeParameter(int i) { typeVars(result, _, i, _, this) } + TypeVariable getTypeParameter(int i) { typeVars(result, _, i, this) } /** * Gets a type parameter of this generic type. @@ -139,10 +139,10 @@ abstract class BoundedType extends RefType, @boundedtype { */ class TypeVariable extends BoundedType, Modifiable, @typevariable { /** Gets the generic type that is parameterized by this type parameter, if any. */ - GenericType getGenericType() { typeVars(this, _, _, _, result) } + GenericType getGenericType() { typeVars(this, _, _, result) } /** Gets the generic callable that is parameterized by this type parameter, if any. */ - GenericCallable getGenericCallable() { typeVars(this, _, _, _, result) } + GenericCallable getGenericCallable() { typeVars(this, _, _, result) } /** * Gets an upper bound of this type parameter, or `Object` @@ -196,7 +196,7 @@ class TypeVariable extends BoundedType, Modifiable, @typevariable { } /** Gets the index of `this` type variable. */ - int getIndex() { typeVars(this, _, result, _, _) } + int getIndex() { typeVars(this, _, result, _) } override string getAPrimaryQlClass() { result = "TypeVariable" } } @@ -327,7 +327,7 @@ class TypeBound extends @typebound { class ParameterizedType extends ClassOrInterface { ParameterizedType() { typeArgs(_, _, this) or - typeVars(_, _, _, _, this) + typeVars(_, _, _, this) } /** @@ -351,13 +351,13 @@ class ParameterizedType extends ClassOrInterface { */ RefType getATypeArgument() { typeArgs(result, _, this) or - typeVars(result, _, _, _, this) + typeVars(result, _, _, this) } /** Gets the type argument of this parameterized type at the specified position. */ RefType getTypeArgument(int pos) { typeArgs(result, pos, this) or - typeVars(result, _, pos, _, this) + typeVars(result, _, pos, this) } /** Gets the number of type arguments of this parameterized type. */ @@ -365,13 +365,13 @@ class ParameterizedType extends ClassOrInterface { result = count(int pos | typeArgs(_, pos, this) or - typeVars(_, _, pos, _, this) + typeVars(_, _, pos, this) ) } /** Holds if this type originates from source code. */ override predicate fromSource() { - typeVars(_, _, _, _, this) and ClassOrInterface.super.fromSource() + typeVars(_, _, _, this) and ClassOrInterface.super.fromSource() } override string getAPrimaryQlClass() { result = "ParameterizedType" } @@ -444,14 +444,14 @@ class GenericCallable extends Callable { exists(Callable srcDecl | methods(this, _, _, _, _, srcDecl) or constrs(this, _, _, _, _, srcDecl) | - typeVars(_, _, _, _, srcDecl) + typeVars(_, _, _, srcDecl) ) } /** * Gets the `i`-th type parameter of this generic callable. */ - TypeVariable getTypeParameter(int i) { typeVars(result, _, i, _, this.getSourceDeclaration()) } + TypeVariable getTypeParameter(int i) { typeVars(result, _, i, this.getSourceDeclaration()) } /** * Gets a type parameter of this generic callable. diff --git a/java/ql/lib/semmle/code/java/JDK.qll b/java/ql/lib/semmle/code/java/JDK.qll index 55d420dbcae..ee86cf0a191 100644 --- a/java/ql/lib/semmle/code/java/JDK.qll +++ b/java/ql/lib/semmle/code/java/JDK.qll @@ -210,39 +210,6 @@ class TypeFile extends Class { } // --- Standard methods --- -/** - * DEPRECATED: Any constructor of class `java.lang.ProcessBuilder`. - */ -deprecated class ProcessBuilderConstructor extends Constructor, ExecCallable { - ProcessBuilderConstructor() { this.getDeclaringType() instanceof TypeProcessBuilder } - - override int getAnExecutedArgument() { result = 0 } -} - -/** - * DEPRECATED: Any of the methods named `command` on class `java.lang.ProcessBuilder`. - */ -deprecated class MethodProcessBuilderCommand extends Method, ExecCallable { - MethodProcessBuilderCommand() { - this.hasName("command") and - this.getDeclaringType() instanceof TypeProcessBuilder - } - - override int getAnExecutedArgument() { result = 0 } -} - -/** - * DEPRECATED: Any method named `exec` on class `java.lang.Runtime`. - */ -deprecated class MethodRuntimeExec extends Method, ExecCallable { - MethodRuntimeExec() { - this.hasName("exec") and - this.getDeclaringType() instanceof TypeRuntime - } - - override int getAnExecutedArgument() { result = 0 } -} - /** * Any method named `getenv` on class `java.lang.System`. */ diff --git a/java/ql/lib/semmle/code/java/Type.qll b/java/ql/lib/semmle/code/java/Type.qll index 5976bc12f00..f2709d3dda1 100644 --- a/java/ql/lib/semmle/code/java/Type.qll +++ b/java/ql/lib/semmle/code/java/Type.qll @@ -592,7 +592,7 @@ class RefType extends Type, Annotatable, Modifiable, @reftype { * to the name of the enclosing type, which might be a nested type as well. */ predicate hasQualifiedName(string package, string type) { - this.getPackage().hasName(package) and type = this.nestedName() + this.getPackage().hasName(package) and type = this.getNestedName() } /** @@ -601,7 +601,7 @@ class RefType extends Type, Annotatable, Modifiable, @reftype { override string getTypeDescriptor() { result = "L" + this.getPackage().getName().replaceAll(".", "/") + "/" + - this.getSourceDeclaration().nestedName() + ";" + this.getSourceDeclaration().getNestedName() + ";" } /** @@ -615,8 +615,8 @@ class RefType extends Type, Annotatable, Modifiable, @reftype { string getQualifiedName() { exists(string pkgName | pkgName = this.getPackage().getName() | if pkgName = "" - then result = this.nestedName() - else result = pkgName + "." + this.nestedName() + then result = this.getNestedName() + else result = pkgName + "." + this.getNestedName() ) } @@ -627,12 +627,15 @@ class RefType extends Type, Annotatable, Modifiable, @reftype { * Otherwise the name of the nested type is prefixed with a `$` and appended to * the name of the enclosing type, which might be a nested type as well. */ - string nestedName() { + string getNestedName() { not this instanceof NestedType and result = this.getName() or - this.(NestedType).getEnclosingType().nestedName() + "$" + this.getName() = result + this.(NestedType).getEnclosingType().getNestedName() + "$" + this.getName() = result } + /** DEPRECATED: Alias for `getNestedName`. */ + deprecated string nestedName() { result = this.getNestedName() } + /** * Gets the source declaration of this type. * diff --git a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll index f930675998a..28be9a61d75 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll @@ -422,10 +422,10 @@ private predicate elementSpec( private string getNestedName(Type t) { not t instanceof RefType and result = t.toString() or - not t.(Array).getElementType() instanceof NestedType and result = t.(RefType).nestedName() + not t.(Array).getElementType() instanceof NestedType and result = t.(RefType).getNestedName() or result = - t.(Array).getElementType().(NestedType).getEnclosingType().nestedName() + "$" + t.getName() + t.(Array).getElementType().(NestedType).getEnclosingType().getNestedName() + "$" + t.getName() } private string getQualifiedName(Type t) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ContentDataFlow.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ContentDataFlow.qll new file mode 100644 index 00000000000..2c9b1217044 --- /dev/null +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ContentDataFlow.qll @@ -0,0 +1,7 @@ +private import java +private import DataFlowImplSpecific +private import codeql.dataflow.internal.ContentDataFlowImpl + +module ContentDataFlow { + import MakeImplContentDataFlow +} diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowDispatch.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowDispatch.qll index 6f27ea5b4b5..f63df6ad09e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowDispatch.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowDispatch.qll @@ -40,11 +40,32 @@ private module DispatchImpl { else any() } - /** Gets a viable implementation of the target of the given `Call`. */ + /** + * Gets a viable implementation of the target of the given `Call`. + * The following heuristic is applied for finding the appropriate callable: + * In general, dispatch to both any existing model and any viable source dispatch. + * However, if the model is generated and the static call target is in the source then + * we trust the source more than the model and skip dispatch to the model. + * Vice versa, if the model is manual and the source dispatch has a comparatively low + * confidence then we only dispatch to the model. Additionally, manual models that + * match a source dispatch exactly take precedence over the source. + */ DataFlowCallable viableCallable(DataFlowCall c) { - result.asCallable() = sourceDispatch(c.asCall()) - or - result.asSummarizedCallable().getACall() = c.asCall() + exists(Call call | call = c.asCall() | + result.asCallable() = sourceDispatch(call) + or + not ( + // Only use summarized callables with generated summaries in case + // the static call target is not in the source code. + // Note that if applyGeneratedModel holds it implies that there doesn't + // exist a manual model. + exists(Callable staticTarget | staticTarget = call.getCallee().getSourceDeclaration() | + staticTarget.fromSource() and not staticTarget.isStub() + ) and + result.asSummarizedCallable().applyGeneratedModel() + ) and + result.asSummarizedCallable().getACall() = call + ) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll index 3b1439511d1..359fa71744b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll index 3b1439511d1..359fa71744b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll index 3b1439511d1..359fa71744b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll index 3b1439511d1..359fa71744b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll index 3b1439511d1..359fa71744b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll index 3b1439511d1..359fa71744b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll index 84b31f14e98..784d248d8dc 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -147,7 +147,14 @@ private module CaptureInput implements VariableCapture::InputSig { } class Callable extends J::Callable { - predicate isConstructor() { this instanceof Constructor } + predicate isConstructor() { + // InstanceInitializers are called from constructors and are equally likely + // to capture variables for the purpose of field initialization, so we treat + // them as constructors for the heuristic identification of whether to allow + // this-to-this summaries. + this instanceof Constructor or + this instanceof InstanceInitializer + } } } diff --git a/java/ql/lib/semmle/code/java/frameworks/JsonIo.qll b/java/ql/lib/semmle/code/java/frameworks/JsonIo.qll index 9dc6510c5e7..d40e7ebf81e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JsonIo.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JsonIo.qll @@ -43,34 +43,6 @@ class JsonIoUseMapsSetter extends MethodCall { } } -/** - * DEPRECATED: Use `SafeJsonIoFlow` instead. - * - * A data flow configuration tracing flow from JsonIo safe settings. - */ -deprecated class SafeJsonIoConfig extends DataFlow2::Configuration { - SafeJsonIoConfig() { this = "UnsafeDeserialization::SafeJsonIoConfig" } - - override predicate isSource(DataFlow::Node src) { - exists(MethodCall ma | - ma instanceof JsonIoUseMapsSetter and - src.asExpr() = ma.getQualifier() - ) - } - - override predicate isSink(DataFlow::Node sink) { - exists(MethodCall ma | - ma.getMethod() instanceof JsonIoJsonToJavaMethod and - sink.asExpr() = ma.getArgument(1) - ) - or - exists(ClassInstanceExpr cie | - cie.getConstructor().getDeclaringType() instanceof JsonIoJsonReader and - sink.asExpr() = cie.getArgument(1) - ) - } -} - /** * A data flow configuration tracing flow from JsonIo safe settings. */ diff --git a/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaDSL.qll b/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaDSL.qll index 79c476cdf20..ed09baf8ead 100644 --- a/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaDSL.qll +++ b/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaDSL.qll @@ -42,9 +42,6 @@ class CamelJavaDslToDecl extends ProcessorDefinitionElement { * Gets the URI specified by this `to` declaration. */ string getUri() { result = this.getArgument(0).(CompileTimeConstantExpr).getStringValue() } - - /** DEPRECATED: Alias for getUri */ - deprecated string getURI() { result = this.getUri() } } /** diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll index 985565255b6..6fec620ccd5 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll @@ -97,9 +97,6 @@ class SpringCamelXmlToElement extends SpringCamelXmlRouteElement { * Gets the URI attribute for this `` element. */ string getUri() { result = this.getAttribute("uri").getValue() } - - /** DEPRECATED: Alias for getUri */ - deprecated string getURI() { result = this.getUri() } } /** diff --git a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirectionQuery.qll b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirectionQuery.qll index 42d420a76b3..b179a4f92e0 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirectionQuery.qll @@ -7,27 +7,6 @@ import semmle.code.java.dataflow.TaintTracking deprecated import semmle.code.java.dataflow.TaintTracking3 import semmle.code.java.security.AndroidIntentRedirection -/** - * DEPRECATED: Use `IntentRedirectionFlow` instead. - * - * A taint tracking configuration for tainted Intents being used to start Android components. - */ -deprecated class IntentRedirectionConfiguration extends TaintTracking::Configuration { - IntentRedirectionConfiguration() { this = "IntentRedirectionConfiguration" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof IntentRedirectionSink } - - override predicate isSanitizer(DataFlow::Node sanitizer) { - sanitizer instanceof IntentRedirectionSanitizer - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(IntentRedirectionAdditionalTaintStep c).step(node1, node2) - } -} - /** A taint tracking configuration for tainted Intents being used to start Android components. */ module IntentRedirectionConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } diff --git a/java/ql/lib/semmle/code/java/security/AndroidSensitiveCommunicationQuery.qll b/java/ql/lib/semmle/code/java/security/AndroidSensitiveCommunicationQuery.qll index a4f9713ac30..2ba13c06feb 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidSensitiveCommunicationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidSensitiveCommunicationQuery.qll @@ -122,36 +122,6 @@ private predicate isStartActivityOrServiceSink(DataFlow::Node arg) { ) } -/** - * DEPRECATED: Use `SensitiveCommunicationFlow` instead. - * - * Taint configuration tracking flow from variables containing sensitive information to broadcast Intents. - */ -deprecated class SensitiveCommunicationConfig extends TaintTracking::Configuration { - SensitiveCommunicationConfig() { this = "Sensitive Communication Configuration" } - - override predicate isSource(DataFlow::Node source) { - source.asExpr() instanceof SensitiveInfoExpr - } - - override predicate isSink(DataFlow::Node sink) { - isSensitiveBroadcastSink(sink) - or - isStartActivityOrServiceSink(sink) - } - - /** - * Holds if broadcast doesn't specify receiving package name of the 3rd party app - */ - override predicate isSanitizer(DataFlow::Node node) { node instanceof ExplicitIntentSanitizer } - - override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - super.allowImplicitRead(node, c) - or - this.isSink(node) - } -} - /** * A sensitive communication sink node. */ diff --git a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll index 903dae5d67e..692bdfc1a70 100644 --- a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll @@ -109,37 +109,3 @@ predicate execIsTainted( InputToArgumentToExecFlow::flowPath(source, sink) and argumentToExec(execArg, sink.getNode()) } - -/** - * DEPRECATED: Use `execIsTainted` instead. - * - * Implementation of `ExecTainted.ql`. It is extracted to a QLL - * so that it can be excluded from `ExecUnescaped.ql` to avoid - * reporting overlapping results. - */ -deprecated predicate execTainted(DataFlow::PathNode source, DataFlow::PathNode sink, Expr execArg) { - exists(RemoteUserInputToArgumentToExecFlowConfig conf | - conf.hasFlowPath(source, sink) and argumentToExec(execArg, sink.getNode()) - ) -} - -/** - * DEPRECATED: Use `RemoteUserInputToArgumentToExecFlow` instead. - * - * A taint-tracking configuration for unvalidated user input that is used to run an external process. - */ -deprecated class RemoteUserInputToArgumentToExecFlowConfig extends TaintTracking::Configuration { - RemoteUserInputToArgumentToExecFlowConfig() { - this = "ExecCommon::RemoteUserInputToArgumentToExecFlowConfig" - } - - override predicate isSource(DataFlow::Node src) { src instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof CommandInjectionSink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof CommandInjectionSanitizer } - - override predicate isAdditionalTaintStep(DataFlow::Node n1, DataFlow::Node n2) { - any(CommandInjectionAdditionalTaintStep s).step(n1, n2) - } -} diff --git a/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll b/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll index 63a93134512..96d3c5a528c 100644 --- a/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll @@ -36,23 +36,6 @@ private predicate endsWithStep(DataFlow::Node node1, DataFlow::Node node2) { ) } -/** - * DEPRECATED: Use `ConditionalBypassFlow` instead. - * - * A taint tracking configuration for untrusted data flowing to sensitive conditions. - */ -deprecated class ConditionalBypassFlowConfig extends TaintTracking::Configuration { - ConditionalBypassFlowConfig() { this = "ConditionalBypassFlowConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { conditionControlsMethod(_, sink.asExpr()) } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - endsWithStep(node1, node2) - } -} - /** * A taint tracking configuration for untrusted data flowing to sensitive conditions. */ diff --git a/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll b/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll index f27b677722f..6838555179a 100644 --- a/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll +++ b/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll @@ -92,19 +92,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getMethodDescription() { result = this.getMethod().getQualifiedName() } } -/** - * DEPRECATED: Use `UntrustedDataToExternalApiFlow` instead. - * - * A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. - */ -deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { - UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } -} - /** * Taint tracking configuration for flow from `ThreatModelFlowSource`s to `ExternalApiDataNode`s. */ diff --git a/java/ql/lib/semmle/code/java/security/ExternalProcess.qll b/java/ql/lib/semmle/code/java/security/ExternalProcess.qll index 385d2f6c548..58f7457e9e3 100644 --- a/java/ql/lib/semmle/code/java/security/ExternalProcess.qll +++ b/java/ql/lib/semmle/code/java/security/ExternalProcess.qll @@ -4,16 +4,6 @@ import semmle.code.java.Member private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.security.CommandLineQuery -/** - * DEPRECATED: A callable that executes a command. - */ -abstract deprecated class ExecCallable extends Callable { - /** - * Gets the index of an argument that will be part of the command that is executed. - */ - abstract int getAnExecutedArgument(); -} - /** * An expression used as an argument to a call that executes an external command. For calls to * varargs method calls, this only includes the first argument, which will be the command diff --git a/java/ql/lib/semmle/code/java/security/FragmentInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/FragmentInjectionQuery.qll index 97ad1d7a564..f625807470d 100644 --- a/java/ql/lib/semmle/code/java/security/FragmentInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/FragmentInjectionQuery.qll @@ -5,24 +5,6 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.FragmentInjection -/** - * DEPRECATED: Use `FragmentInjectionFlow` instead. - * - * A taint-tracking configuration for unsafe user input - * that is used to create Android fragments dynamically. - */ -deprecated class FragmentInjectionTaintConf extends TaintTracking::Configuration { - FragmentInjectionTaintConf() { this = "FragmentInjectionTaintConf" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof FragmentInjectionSink } - - override predicate isAdditionalTaintStep(DataFlow::Node n1, DataFlow::Node n2) { - any(FragmentInjectionAdditionalTaintStep c).step(n1, n2) - } -} - /** * A taint-tracking configuration for unsafe user input * that is used to create Android fragments dynamically. diff --git a/java/ql/lib/semmle/code/java/security/GroovyInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/GroovyInjectionQuery.qll index aecd634b541..3af836cac97 100644 --- a/java/ql/lib/semmle/code/java/security/GroovyInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/GroovyInjectionQuery.qll @@ -5,24 +5,6 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.GroovyInjection -/** - * DEPRECATED: Use `GroovyInjectionFlow` instead. - * - * A taint-tracking configuration for unsafe user input - * that is used to evaluate a Groovy expression. - */ -deprecated class GroovyInjectionConfig extends TaintTracking::Configuration { - GroovyInjectionConfig() { this = "GroovyInjectionConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof GroovyInjectionSink } - - override predicate isAdditionalTaintStep(DataFlow::Node fromNode, DataFlow::Node toNode) { - any(GroovyInjectionAdditionalTaintStep c).step(fromNode, toNode) - } -} - /** * A taint-tracking configuration for unsafe user input * that is used to evaluate a Groovy expression. diff --git a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsApiCallQuery.qll b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsApiCallQuery.qll index 92d4f2a22aa..f623973a657 100644 --- a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsApiCallQuery.qll +++ b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsApiCallQuery.qll @@ -6,55 +6,6 @@ import java import semmle.code.java.dataflow.DataFlow import HardcodedCredentials -/** - * DEPRECATED: Use `HardcodedCredentialApiCallFlow` instead. - * - * A data-flow configuration that tracks flow from a hard-coded credential in a call to a sensitive Java API which may compromise security. - */ -deprecated class HardcodedCredentialApiCallConfiguration extends DataFlow::Configuration { - HardcodedCredentialApiCallConfiguration() { this = "HardcodedCredentialApiCallConfiguration" } - - override predicate isSource(DataFlow::Node n) { - n.asExpr() instanceof HardcodedExpr and - not n.asExpr().getEnclosingCallable() instanceof ToStringMethod - } - - override predicate isSink(DataFlow::Node n) { n.asExpr() instanceof CredentialsApiSink } - - override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - node1.asExpr().getType() instanceof TypeString and - ( - exists(MethodCall ma | ma.getMethod().hasName(["getBytes", "toCharArray"]) | - node2.asExpr() = ma and - ma.getQualifier() = node1.asExpr() - ) - or - // These base64 routines are usually taint propagators, and this is not a general - // TaintTracking::Configuration, so we must specifically include them here - // as a common transform applied to a constant before passing to a remote API. - exists(MethodCall ma | - ma.getMethod() - .hasQualifiedName([ - "java.util", "cn.hutool.core.codec", "org.apache.shiro.codec", - "apache.commons.codec.binary", "org.springframework.util" - ], ["Base64$Encoder", "Base64$Decoder", "Base64", "Base64Utils"], - [ - "encode", "encodeToString", "decode", "decodeBase64", "encodeBase64", - "encodeBase64Chunked", "encodeBase64String", "encodeBase64URLSafe", - "encodeBase64URLSafeString" - ]) - | - node1.asExpr() = ma.getArgument(0) and - node2.asExpr() = ma - ) - ) - } - - override predicate isBarrier(DataFlow::Node n) { - n.asExpr().(MethodCall).getMethod() instanceof MethodSystemGetenv - } -} - /** * A data-flow configuration that tracks flow from a hard-coded credential in a call to a sensitive Java API which may compromise security. */ diff --git a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsSourceCallQuery.qll b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsSourceCallQuery.qll index 67383877d7e..2192c5c70de 100644 --- a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsSourceCallQuery.qll +++ b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsSourceCallQuery.qll @@ -8,22 +8,6 @@ deprecated import semmle.code.java.dataflow.DataFlow2 private import semmle.code.java.dataflow.DataFlow2 import HardcodedCredentials -/** - * DEPRECATED: Use `HardcodedCredentialSourceCallFlow` instead. - * - * A data-flow configuration that tracks hardcoded expressions flowing to a parameter whose name suggests - * it may be a credential, excluding those which flow on to other such insecure usage sites. - */ -deprecated class HardcodedCredentialSourceCallConfiguration extends DataFlow::Configuration { - HardcodedCredentialSourceCallConfiguration() { - this = "HardcodedCredentialSourceCallConfiguration" - } - - override predicate isSource(DataFlow::Node n) { n.asExpr() instanceof HardcodedExpr } - - override predicate isSink(DataFlow::Node n) { n.asExpr() instanceof FinalCredentialsSourceSink } -} - /** * A data-flow configuration that tracks hardcoded expressions flowing to a parameter whose name suggests * it may be a credential, excluding those which flow on to other such insecure usage sites. @@ -40,22 +24,6 @@ module HardcodedCredentialSourceCallConfig implements DataFlow::ConfigSig { */ module HardcodedCredentialSourceCallFlow = DataFlow::Global; -/** - * DEPRECATED: Use `HardcodedCredentialParameterSourceCallFlow` instead. - * - * A data-flow configuration that tracks flow from an argument whose corresponding parameter name suggests - * a credential, to an argument to a sensitive call. - */ -deprecated class HardcodedCredentialSourceCallConfiguration2 extends DataFlow2::Configuration { - HardcodedCredentialSourceCallConfiguration2() { - this = "HardcodedCredentialSourceCallConfiguration2" - } - - override predicate isSource(DataFlow::Node n) { n.asExpr() instanceof CredentialsSourceSink } - - override predicate isSink(DataFlow::Node n) { n.asExpr() instanceof CredentialsSink } -} - /** * A data-flow configuration that tracks flow from an argument whose corresponding parameter name suggests * a credential, to an argument to a sensitive call. diff --git a/java/ql/lib/semmle/code/java/security/HttpsUrlsQuery.qll b/java/ql/lib/semmle/code/java/security/HttpsUrlsQuery.qll index ae9d3d6201e..031066d506e 100644 --- a/java/ql/lib/semmle/code/java/security/HttpsUrlsQuery.qll +++ b/java/ql/lib/semmle/code/java/security/HttpsUrlsQuery.qll @@ -6,27 +6,6 @@ import semmle.code.java.frameworks.Networking import semmle.code.java.security.HttpsUrls private import semmle.code.java.security.Sanitizers -/** - * DEPRECATED: Use `HttpsStringToUrlOpenMethodFlow` instead. - * - * A taint tracking configuration for HTTP connections. - */ -deprecated class HttpStringToUrlOpenMethodFlowConfig extends TaintTracking::Configuration { - HttpStringToUrlOpenMethodFlowConfig() { this = "HttpStringToUrlOpenMethodFlowConfig" } - - override predicate isSource(DataFlow::Node src) { src.asExpr() instanceof HttpStringLiteral } - - override predicate isSink(DataFlow::Node sink) { sink instanceof UrlOpenSink } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(HttpUrlsAdditionalTaintStep c).step(node1, node2) - } - - override predicate isSanitizer(DataFlow::Node node) { - node.getType() instanceof PrimitiveType or node.getType() instanceof BoxedType - } -} - /** * A taint tracking configuration for HTTP connections. */ diff --git a/java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll b/java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll index 402dacb2e9a..0a8e0686549 100644 --- a/java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll @@ -6,55 +6,6 @@ import semmle.code.java.frameworks.android.Intent import semmle.code.java.frameworks.android.PendingIntent import semmle.code.java.security.ImplicitPendingIntents -/** - * DEPRECATED: Use `ImplicitPendingIntentStartFlow` instead. - * - * A taint tracking configuration for implicit `PendingIntent`s - * being wrapped in another implicit `Intent` that gets started. - */ -deprecated class ImplicitPendingIntentStartConf extends TaintTracking::Configuration { - ImplicitPendingIntentStartConf() { this = "ImplicitPendingIntentStartConf" } - - override predicate isSource(DataFlow::Node source, DataFlow::FlowState state) { - source.(ImplicitPendingIntentSource).hasState(state) - } - - override predicate isSink(DataFlow::Node sink, DataFlow::FlowState state) { - sink.(ImplicitPendingIntentSink).hasState(state) - } - - override predicate isSanitizer(DataFlow::Node sanitizer) { - sanitizer instanceof ExplicitIntentSanitizer - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(ImplicitPendingIntentAdditionalTaintStep c).step(node1, node2) - } - - override predicate isAdditionalTaintStep( - DataFlow::Node node1, DataFlow::FlowState state1, DataFlow::Node node2, - DataFlow::FlowState state2 - ) { - any(ImplicitPendingIntentAdditionalTaintStep c).step(node1, state1, node2, state2) - } - - override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - super.allowImplicitRead(node, c) - or - this.isSink(node, _) and - allowIntentExtrasImplicitRead(node, c) - or - this.isAdditionalTaintStep(node, _) and - c.(DataFlow::FieldContent).getType() instanceof PendingIntent - or - // Allow implicit reads of Intent arrays for steps like getActivities - // or sinks like startActivities - (this.isSink(node, _) or this.isAdditionalFlowStep(node, _, _, _)) and - node.getType().(Array).getElementType() instanceof TypeIntent and - c instanceof DataFlow::ArrayContent - } -} - /** * A taint tracking configuration for implicit `PendingIntent`s * being wrapped in another implicit `Intent` that gets started. diff --git a/java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll b/java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll index 60e16662d9a..9e69308e458 100644 --- a/java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll +++ b/java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll @@ -5,24 +5,6 @@ import semmle.code.java.security.HttpsUrls import semmle.code.java.security.InsecureBasicAuth import semmle.code.java.dataflow.TaintTracking -/** - * DEPRECATED: Use `InsecureBasicAuthFlow` instead. - * - * A taint tracking configuration for the Basic authentication scheme - * being used in HTTP connections. - */ -deprecated class BasicAuthFlowConfig extends TaintTracking::Configuration { - BasicAuthFlowConfig() { this = "InsecureBasicAuth::BasicAuthFlowConfig" } - - override predicate isSource(DataFlow::Node src) { src instanceof InsecureBasicAuthSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof InsecureBasicAuthSink } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(HttpUrlsAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint tracking configuration for the Basic authentication scheme * being used in HTTP connections. diff --git a/java/ql/lib/semmle/code/java/security/InsecureTrustManagerQuery.qll b/java/ql/lib/semmle/code/java/security/InsecureTrustManagerQuery.qll index a7514ceff96..d732716ec2e 100644 --- a/java/ql/lib/semmle/code/java/security/InsecureTrustManagerQuery.qll +++ b/java/ql/lib/semmle/code/java/security/InsecureTrustManagerQuery.qll @@ -4,28 +4,6 @@ import java import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.InsecureTrustManager -/** - * DEPRECATED: Use `InsecureTrustManagerFlow` instead. - * - * A configuration to model the flow of an insecure `TrustManager` - * to the initialization of an SSL context. - */ -deprecated class InsecureTrustManagerConfiguration extends DataFlow::Configuration { - InsecureTrustManagerConfiguration() { this = "InsecureTrustManagerConfiguration" } - - override predicate isSource(DataFlow::Node source) { - source instanceof InsecureTrustManagerSource - } - - override predicate isSink(DataFlow::Node sink) { sink instanceof InsecureTrustManagerSink } - - override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - (this.isSink(node) or this.isAdditionalFlowStep(node, _)) and - node.getType() instanceof Array and - c instanceof DataFlow::ArrayContent - } -} - /** * A configuration to model the flow of an insecure `TrustManager` * to the initialization of an SSL context. diff --git a/java/ql/lib/semmle/code/java/security/InsufficientKeySizeQuery.qll b/java/ql/lib/semmle/code/java/security/InsufficientKeySizeQuery.qll index 67678d72a28..e08cd50cdb3 100644 --- a/java/ql/lib/semmle/code/java/security/InsufficientKeySizeQuery.qll +++ b/java/ql/lib/semmle/code/java/security/InsufficientKeySizeQuery.qll @@ -3,23 +3,6 @@ import semmle.code.java.dataflow.DataFlow import semmle.code.java.security.InsufficientKeySize -/** - * DEPRECATED: Use `KeySizeFlow` instead. - * - * A data flow configuration for tracking key sizes used in cryptographic algorithms. - */ -deprecated class KeySizeConfiguration extends DataFlow::Configuration { - KeySizeConfiguration() { this = "KeySizeConfiguration" } - - override predicate isSource(DataFlow::Node source, DataFlow::FlowState state) { - exists(KeySizeState s | source.(InsufficientKeySizeSource).hasState(s) and state = s.toString()) - } - - override predicate isSink(DataFlow::Node sink, DataFlow::FlowState state) { - exists(KeySizeState s | sink.(InsufficientKeySizeSink).hasState(s) and state = s.toString()) - } -} - /** * A data flow configuration for tracking key sizes used in cryptographic algorithms. */ diff --git a/java/ql/lib/semmle/code/java/security/IntentUriPermissionManipulationQuery.qll b/java/ql/lib/semmle/code/java/security/IntentUriPermissionManipulationQuery.qll index b9fc3f42eb7..740ce24bf62 100644 --- a/java/ql/lib/semmle/code/java/security/IntentUriPermissionManipulationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/IntentUriPermissionManipulationQuery.qll @@ -8,29 +8,6 @@ private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.DataFlow private import IntentUriPermissionManipulation -/** - * DEPRECATED: Use `IntentUriPermissionManipulationFlow` instead. - * - * A taint tracking configuration for user-provided Intents being returned to third party apps. - */ -deprecated class IntentUriPermissionManipulationConf extends TaintTracking::Configuration { - IntentUriPermissionManipulationConf() { this = "UriPermissionManipulationConf" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { - sink instanceof IntentUriPermissionManipulationSink - } - - override predicate isSanitizer(DataFlow::Node barrier) { - barrier instanceof IntentUriPermissionManipulationSanitizer - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(IntentUriPermissionManipulationAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint tracking configuration for user-provided Intents being returned to third party apps. */ diff --git a/java/ql/lib/semmle/code/java/security/JexlInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/JexlInjectionQuery.qll index 6f3a7ad00af..de49560e779 100644 --- a/java/ql/lib/semmle/code/java/security/JexlInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/JexlInjectionQuery.qll @@ -38,25 +38,6 @@ private class DefaultJexlInjectionAdditionalTaintStep extends JexlInjectionAddit } } -/** - * DEPRECATED: Use `JexlInjectionFlow` instead. - * - * A taint-tracking configuration for unsafe user input - * that is used to construct and evaluate a JEXL expression. - * It supports both JEXL 2 and 3. - */ -deprecated class JexlInjectionConfig extends TaintTracking::Configuration { - JexlInjectionConfig() { this = "JexlInjectionConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof JexlEvaluationSink } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(JexlInjectionAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint-tracking configuration for unsafe user input * that is used to construct and evaluate a JEXL expression. diff --git a/java/ql/lib/semmle/code/java/security/JndiInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/JndiInjectionQuery.qll index c7343172016..3c1f4b8e68e 100644 --- a/java/ql/lib/semmle/code/java/security/JndiInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/JndiInjectionQuery.qll @@ -7,28 +7,6 @@ import semmle.code.java.frameworks.SpringLdap import semmle.code.java.security.JndiInjection private import semmle.code.java.security.Sanitizers -/** - * DEPRECATED: Use `JndiInjectionFlow` instead. - * - * A taint-tracking configuration for unvalidated user input that is used in JNDI lookup. - */ -deprecated class JndiInjectionFlowConfig extends TaintTracking::Configuration { - JndiInjectionFlowConfig() { this = "JndiInjectionFlowConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof JndiInjectionSink } - - override predicate isSanitizer(DataFlow::Node node) { - node instanceof SimpleTypeSanitizer or - node instanceof JndiInjectionSanitizer - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(JndiInjectionAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint-tracking configuration for unvalidated user input that is used in JNDI lookup. */ diff --git a/java/ql/lib/semmle/code/java/security/LogInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/LogInjectionQuery.qll index f66ae7f5808..cebc807cc47 100644 --- a/java/ql/lib/semmle/code/java/security/LogInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/LogInjectionQuery.qll @@ -4,25 +4,6 @@ import java import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.LogInjection -/** - * DEPRECATED: Use `LogInjectionFlow` instead. - * - * A taint-tracking configuration for tracking untrusted user input used in log entries. - */ -deprecated class LogInjectionConfiguration extends TaintTracking::Configuration { - LogInjectionConfiguration() { this = "LogInjectionConfiguration" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof LogInjectionSink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof LogInjectionSanitizer } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(LogInjectionAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint-tracking configuration for tracking untrusted user input used in log entries. */ diff --git a/java/ql/lib/semmle/code/java/security/MissingJWTSignatureCheckQuery.qll b/java/ql/lib/semmle/code/java/security/MissingJWTSignatureCheckQuery.qll index c316da2f965..eaa4c6320c1 100644 --- a/java/ql/lib/semmle/code/java/security/MissingJWTSignatureCheckQuery.qll +++ b/java/ql/lib/semmle/code/java/security/MissingJWTSignatureCheckQuery.qll @@ -4,26 +4,6 @@ import java import semmle.code.java.dataflow.DataFlow import semmle.code.java.security.JWT -/** - * DEPRECATED: Use `MissingJwtSignatureCheckFlow` instead. - * - * Models flow from signing keys assignments to qualifiers of JWT insecure parsers. - * This is used to determine whether a `JwtParser` performing unsafe parsing has a signing key set. - */ -deprecated class MissingJwtSignatureCheckConf extends DataFlow::Configuration { - MissingJwtSignatureCheckConf() { this = "SigningToExprDataFlow" } - - override predicate isSource(DataFlow::Node source) { - source instanceof JwtParserWithInsecureParseSource - } - - override predicate isSink(DataFlow::Node sink) { sink instanceof JwtParserWithInsecureParseSink } - - override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - any(JwtParserWithInsecureParseAdditionalFlowStep c).step(node1, node2) - } -} - /** * Models flow from signing keys assignments to qualifiers of JWT insecure parsers. * This is used to determine whether a `JwtParser` performing unsafe parsing has a signing key set. diff --git a/java/ql/lib/semmle/code/java/security/MvelInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/MvelInjectionQuery.qll index c2697861d7c..4bf81804f82 100644 --- a/java/ql/lib/semmle/code/java/security/MvelInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/MvelInjectionQuery.qll @@ -5,28 +5,6 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.MvelInjection -/** - * DEPRECATED: Use `MvelInjectionFlow` instead. - * - * A taint-tracking configuration for unsafe user input - * that is used to construct and evaluate a MVEL expression. - */ -deprecated class MvelInjectionFlowConfig extends TaintTracking::Configuration { - MvelInjectionFlowConfig() { this = "MvelInjectionFlowConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof MvelEvaluationSink } - - override predicate isSanitizer(DataFlow::Node sanitizer) { - sanitizer instanceof MvelInjectionSanitizer - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(MvelInjectionAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint-tracking configuration for unsafe user input * that is used to construct and evaluate a MVEL expression. diff --git a/java/ql/lib/semmle/code/java/security/OgnlInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/OgnlInjectionQuery.qll index 259f344205e..3acf18c453c 100644 --- a/java/ql/lib/semmle/code/java/security/OgnlInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/OgnlInjectionQuery.qll @@ -5,27 +5,6 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.OgnlInjection private import semmle.code.java.security.Sanitizers -/** - * DEPRECATED: Use `OgnlInjectionFlow` instead. - * - * A taint-tracking configuration for unvalidated user input that is used in OGNL EL evaluation. - */ -deprecated class OgnlInjectionFlowConfig extends TaintTracking::Configuration { - OgnlInjectionFlowConfig() { this = "OgnlInjectionFlowConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof OgnlInjectionSink } - - override predicate isSanitizer(DataFlow::Node node) { - node.getType() instanceof PrimitiveType or node.getType() instanceof BoxedType - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(OgnlInjectionAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint-tracking configuration for unvalidated user input that is used in OGNL EL evaluation. */ diff --git a/java/ql/lib/semmle/code/java/security/PartialPathTraversalQuery.qll b/java/ql/lib/semmle/code/java/security/PartialPathTraversalQuery.qll index 442af520f5d..c4c3e6b093c 100644 --- a/java/ql/lib/semmle/code/java/security/PartialPathTraversalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/PartialPathTraversalQuery.qll @@ -6,23 +6,6 @@ import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.TaintTracking import semmle.code.java.dataflow.FlowSources -/** - * DEPRECATED: Use `PartialPathTraversalFromRemoteFlow` instead. - * - * A taint-tracking configuration for unsafe user input - * that is used to validate against path traversal, but is insufficient - * and remains vulnerable to Partial Path Traversal. - */ -deprecated class PartialPathTraversalFromRemoteConfig extends TaintTracking::Configuration { - PartialPathTraversalFromRemoteConfig() { this = "PartialPathTraversalFromRemoteConfig" } - - override predicate isSource(DataFlow::Node node) { node instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node node) { - any(PartialPathTraversalMethodCall ma).getQualifier() = node.asExpr() - } -} - /** * A taint-tracking configuration for unsafe user input * that is used to validate against path traversal, but is insufficient diff --git a/java/ql/lib/semmle/code/java/security/PathCreation.qll b/java/ql/lib/semmle/code/java/security/PathCreation.qll deleted file mode 100644 index 3d40a1d4fdb..00000000000 --- a/java/ql/lib/semmle/code/java/security/PathCreation.qll +++ /dev/null @@ -1,143 +0,0 @@ -/** - * DEPRECATED. - * - * Models the different ways to create paths. Either by using `java.io.File`-related APIs or `java.nio.file.Path`-related APIs. - */ - -import java - -/** DEPRECATED: Models the creation of a path. */ -abstract deprecated class PathCreation extends Expr { - /** - * Gets an input that is used in the creation of this path. - * This excludes inputs of type `File` and `Path`. - */ - abstract Expr getAnInput(); -} - -/** Models the `java.nio.file.Paths.get` method. */ -deprecated private class PathsGet extends PathCreation, MethodCall { - PathsGet() { - exists(Method m | m = this.getMethod() | - m.getDeclaringType() instanceof TypePaths and - m.getName() = "get" - ) - } - - override Expr getAnInput() { result = this.getAnArgument() } -} - -/** Models the `java.nio.file.FileSystem.getPath` method. */ -deprecated private class FileSystemGetPath extends PathCreation, MethodCall { - FileSystemGetPath() { - exists(Method m | m = this.getMethod() | - m.getDeclaringType() instanceof TypeFileSystem and - m.getName() = "getPath" - ) - } - - override Expr getAnInput() { result = this.getAnArgument() } -} - -/** Models the `new java.io.File(...)` constructor. */ -deprecated private class FileCreation extends PathCreation, ClassInstanceExpr { - FileCreation() { this.getConstructedType() instanceof TypeFile } - - override Expr getAnInput() { - result = this.getAnArgument() and - // Relevant arguments include those that are not a `File`. - not result.getType() instanceof TypeFile - } -} - -/** Models the `java.nio.file.Path.resolveSibling` method. */ -deprecated private class PathResolveSiblingCreation extends PathCreation, MethodCall { - PathResolveSiblingCreation() { - exists(Method m | m = this.getMethod() | - m.getDeclaringType() instanceof TypePath and - m.getName() = "resolveSibling" - ) - } - - override Expr getAnInput() { - result = this.getAnArgument() and - // Relevant arguments are those of type `String`. - result.getType() instanceof TypeString - } -} - -/** Models the `java.nio.file.Path.resolve` method. */ -deprecated private class PathResolveCreation extends PathCreation, MethodCall { - PathResolveCreation() { - exists(Method m | m = this.getMethod() | - m.getDeclaringType() instanceof TypePath and - m.getName() = "resolve" - ) - } - - override Expr getAnInput() { - result = this.getAnArgument() and - // Relevant arguments are those of type `String`. - result.getType() instanceof TypeString - } -} - -/** Models the `java.nio.file.Path.of` method. */ -deprecated private class PathOfCreation extends PathCreation, MethodCall { - PathOfCreation() { - exists(Method m | m = this.getMethod() | - m.getDeclaringType() instanceof TypePath and - m.getName() = "of" - ) - } - - override Expr getAnInput() { result = this.getAnArgument() } -} - -/** Models the `new java.io.FileWriter(...)` constructor. */ -deprecated private class FileWriterCreation extends PathCreation, ClassInstanceExpr { - FileWriterCreation() { this.getConstructedType().hasQualifiedName("java.io", "FileWriter") } - - override Expr getAnInput() { - result = this.getAnArgument() and - // Relevant arguments are those of type `String`. - result.getType() instanceof TypeString - } -} - -/** Models the `new java.io.FileReader(...)` constructor. */ -deprecated private class FileReaderCreation extends PathCreation, ClassInstanceExpr { - FileReaderCreation() { this.getConstructedType().hasQualifiedName("java.io", "FileReader") } - - override Expr getAnInput() { - result = this.getAnArgument() and - // Relevant arguments are those of type `String`. - result.getType() instanceof TypeString - } -} - -/** Models the `new java.io.FileInputStream(...)` constructor. */ -deprecated private class FileInputStreamCreation extends PathCreation, ClassInstanceExpr { - FileInputStreamCreation() { - this.getConstructedType().hasQualifiedName("java.io", "FileInputStream") - } - - override Expr getAnInput() { - result = this.getAnArgument() and - // Relevant arguments are those of type `String`. - result.getType() instanceof TypeString - } -} - -/** Models the `new java.io.FileOutputStream(...)` constructor. */ -deprecated private class FileOutputStreamCreation extends PathCreation, ClassInstanceExpr { - FileOutputStreamCreation() { - this.getConstructedType().hasQualifiedName("java.io", "FileOutputStream") - } - - override Expr getAnInput() { - result = this.getAnArgument() and - // Relevant arguments are those of type `String`. - result.getType() instanceof TypeString - } -} diff --git a/java/ql/lib/semmle/code/java/security/RequestForgeryConfig.qll b/java/ql/lib/semmle/code/java/security/RequestForgeryConfig.qll index a26245ae9cf..e8415cc1978 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgeryConfig.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgeryConfig.qll @@ -7,31 +7,6 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.RequestForgery -/** - * DEPRECATED: Use `RequestForgeryConfiguration` module instead. - * - * A taint-tracking configuration characterising request-forgery risks. - */ -deprecated class RequestForgeryConfiguration extends TaintTracking::Configuration { - RequestForgeryConfiguration() { this = "Server-Side Request Forgery" } - - override predicate isSource(DataFlow::Node source) { - source instanceof RemoteFlowSource and - // Exclude results of remote HTTP requests: fetching something else based on that result - // is no worse than following a redirect returned by the remote server, and typically - // we're requesting a resource via https which we trust to only send us to safe URLs. - not source.asExpr().(MethodCall).getCallee() instanceof UrlConnectionGetInputStreamMethod - } - - override predicate isSink(DataFlow::Node sink) { sink instanceof RequestForgerySink } - - override predicate isAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) { - any(RequestForgeryAdditionalTaintStep r).propagatesTaint(pred, succ) - } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof RequestForgerySanitizer } -} - /** * A taint-tracking configuration characterising request-forgery risks. */ diff --git a/java/ql/lib/semmle/code/java/security/RsaWithoutOaepQuery.qll b/java/ql/lib/semmle/code/java/security/RsaWithoutOaepQuery.qll index 848a1c2b990..66e4a0537d2 100644 --- a/java/ql/lib/semmle/code/java/security/RsaWithoutOaepQuery.qll +++ b/java/ql/lib/semmle/code/java/security/RsaWithoutOaepQuery.qll @@ -4,28 +4,6 @@ import java import Encryption import semmle.code.java.dataflow.DataFlow -/** - * DEPRECATED: Use `RsaWithoutOaepFlow` instead. - * - * A configuration for finding RSA ciphers initialized without using OAEP padding. - */ -deprecated class RsaWithoutOaepConfig extends DataFlow::Configuration { - RsaWithoutOaepConfig() { this = "RsaWithoutOaepConfig" } - - override predicate isSource(DataFlow::Node src) { - exists(CompileTimeConstantExpr specExpr, string spec | - specExpr.getStringValue() = spec and - specExpr = src.asExpr() and - spec.matches("RSA/%") and - not spec.matches("%OAEP%") - ) - } - - override predicate isSink(DataFlow::Node sink) { - exists(CryptoAlgoSpec cr | sink.asExpr() = cr.getAlgoSpec()) - } -} - /** * A configuration for finding RSA ciphers initialized without using OAEP padding. */ diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index f7232f045b3..201b347e014 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -40,29 +40,6 @@ private class TypeType extends RefType { } } -/** - * DEPRECATED: Use `SensitiveLoggerConfiguration` module instead. - * - * A data-flow configuration for identifying potentially-sensitive data flowing to a log output. - */ -deprecated class SensitiveLoggerConfiguration extends TaintTracking::Configuration { - SensitiveLoggerConfiguration() { this = "SensitiveLoggerConfiguration" } - - override predicate isSource(DataFlow::Node source) { source instanceof SensitiveLoggerSource } - - override predicate isSink(DataFlow::Node sink) { sinkNode(sink, "log-injection") } - - override predicate isSanitizer(DataFlow::Node sanitizer) { - sanitizer.asExpr() instanceof LiveLiteral or - sanitizer.getType() instanceof PrimitiveType or - sanitizer.getType() instanceof BoxedType or - sanitizer.getType() instanceof NumberType or - sanitizer.getType() instanceof TypeType - } - - override predicate isSanitizerIn(DataFlow::Node node) { this.isSource(node) } -} - /** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */ module SensitiveLoggerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof SensitiveLoggerSource } diff --git a/java/ql/lib/semmle/code/java/security/SensitiveResultReceiverQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveResultReceiverQuery.qll index 8269a42c5c2..e22dcef1211 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveResultReceiverQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveResultReceiverQuery.qll @@ -32,25 +32,6 @@ private predicate untrustedResultReceiverSend(DataFlow::Node src, ResultReceiver UntrustedResultReceiverFlow::flow(src, DataFlow::exprNode(call.getReceiver())) } -deprecated private class SensitiveResultReceiverConf extends TaintTracking::Configuration { - SensitiveResultReceiverConf() { this = "SensitiveResultReceiverConf" } - - override predicate isSource(DataFlow::Node node) { node.asExpr() instanceof SensitiveExpr } - - override predicate isSink(DataFlow::Node node) { - exists(ResultReceiverSendCall call | - untrustedResultReceiverSend(_, call) and - node.asExpr() = call.getSentData() - ) - } - - override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - super.allowImplicitRead(node, c) - or - this.isSink(node) - } -} - /** * A sensitive result receiver sink node. */ @@ -74,21 +55,6 @@ private module SensitiveResultReceiverConfig implements DataFlow::ConfigSig { /** Taint tracking flow for sensitive expressions flowing to untrusted result receivers. */ module SensitiveResultReceiverFlow = TaintTracking::Global; -/** - * DEPRECATED: Use `isSensitiveResultReceiver` instead. - * - * Holds if there is a path from sensitive data at `src` to a result receiver at `sink`, and the receiver was obtained from an untrusted source `recSrc`. - */ -deprecated predicate sensitiveResultReceiver( - DataFlow::PathNode src, DataFlow::PathNode sink, DataFlow::Node recSrc -) { - exists(ResultReceiverSendCall call | - any(SensitiveResultReceiverConf c).hasFlowPath(src, sink) and - sink.getNode().asExpr() = call.getSentData() and - untrustedResultReceiverSend(recSrc, call) - ) -} - /** * Holds if there is a path from sensitive data at `src` to a result receiver at `sink`, and the receiver was obtained from an untrusted source `recSrc`. */ diff --git a/java/ql/lib/semmle/code/java/security/SpelInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/SpelInjectionQuery.qll index cbd79c65d25..848aae8da30 100644 --- a/java/ql/lib/semmle/code/java/security/SpelInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SpelInjectionQuery.qll @@ -6,24 +6,6 @@ private import semmle.code.java.dataflow.TaintTracking private import semmle.code.java.frameworks.spring.SpringExpression private import semmle.code.java.security.SpelInjection -/** - * DEPRECATED: Use `SpelInjectionFlow` instead. - * - * A taint-tracking configuration for unsafe user input - * that is used to construct and evaluate a SpEL expression. - */ -deprecated class SpelInjectionConfig extends TaintTracking::Configuration { - SpelInjectionConfig() { this = "SpelInjectionConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof SpelExpressionEvaluationSink } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(SpelExpressionInjectionAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint-tracking configuration for unsafe user input * that is used to construct and evaluate a SpEL expression. diff --git a/java/ql/lib/semmle/code/java/security/SqlInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/SqlInjectionQuery.qll index 4e21af71332..c4638538a63 100644 --- a/java/ql/lib/semmle/code/java/security/SqlInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SqlInjectionQuery.qll @@ -11,29 +11,6 @@ import semmle.code.java.dataflow.FlowSources private import semmle.code.java.security.Sanitizers import semmle.code.java.security.QueryInjection -/** - * DEPRECATED: Use `QueryInjectionFlow` instead. - * - * A taint-tracking configuration for unvalidated user input that is used in SQL queries. - */ -deprecated class QueryInjectionFlowConfig extends TaintTracking::Configuration { - QueryInjectionFlowConfig() { this = "SqlInjectionLib::QueryInjectionFlowConfig" } - - override predicate isSource(DataFlow::Node src) { src instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof QueryInjectionSink } - - override predicate isSanitizer(DataFlow::Node node) { - node.getType() instanceof PrimitiveType or - node.getType() instanceof BoxedType or - node.getType() instanceof NumberType - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(AdditionalQueryInjectionTaintStep s).step(node1, node2) - } -} - /** * A taint-tracking configuration for unvalidated user input that is used in SQL queries. */ @@ -52,16 +29,6 @@ module QueryInjectionFlowConfig implements DataFlow::ConfigSig { /** Tracks flow of unvalidated user input that is used in SQL queries. */ module QueryInjectionFlow = TaintTracking::Global; -/** - * Implementation of `SqlTainted.ql`. This is extracted to a QLL so that it - * can be excluded from `SqlConcatenated.ql` to avoid overlapping results. - */ -deprecated predicate queryTaintedBy( - QueryInjectionSink query, DataFlow::PathNode source, DataFlow::PathNode sink -) { - any(QueryInjectionFlowConfig c).hasFlowPath(source, sink) and sink.getNode() = query -} - /** * Implementation of `SqlTainted.ql`. This is extracted to a QLL so that it * can be excluded from `SqlConcatenated.ql` to avoid overlapping results. diff --git a/java/ql/lib/semmle/code/java/security/StaticInitializationVectorQuery.qll b/java/ql/lib/semmle/code/java/security/StaticInitializationVectorQuery.qll index 14a8789d4f9..9ba848d1e0d 100644 --- a/java/ql/lib/semmle/code/java/security/StaticInitializationVectorQuery.qll +++ b/java/ql/lib/semmle/code/java/security/StaticInitializationVectorQuery.qll @@ -119,21 +119,6 @@ private class EncryptionInitializationSink extends DataFlow::Node { EncryptionInitializationSink() { sinkNode(this, "encryption-iv") } } -/** - * DEPRECATED: Use `StaticInitializationVectorFlow` instead. - * - * A config that tracks dataflow to initializing a cipher with a static initialization vector. - */ -deprecated class StaticInitializationVectorConfig extends TaintTracking::Configuration { - StaticInitializationVectorConfig() { this = "StaticInitializationVectorConfig" } - - override predicate isSource(DataFlow::Node source) { - source instanceof StaticInitializationVectorSource - } - - override predicate isSink(DataFlow::Node sink) { sink instanceof EncryptionInitializationSink } -} - /** * A config that tracks dataflow to initializing a cipher with a static initialization vector. */ diff --git a/java/ql/lib/semmle/code/java/security/TemplateInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/TemplateInjectionQuery.qll index 07150b554aa..a9595b0f6f1 100644 --- a/java/ql/lib/semmle/code/java/security/TemplateInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TemplateInjectionQuery.qll @@ -5,42 +5,6 @@ import semmle.code.java.dataflow.TaintTracking import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.TemplateInjection -/** - * DEPRECATED: Use `TemplateInjectionFlow` instead. - * - * A taint tracking configuration to reason about server-side template injection (SST) vulnerabilities - */ -deprecated class TemplateInjectionFlowConfig extends TaintTracking::Configuration { - TemplateInjectionFlowConfig() { this = "TemplateInjectionFlowConfig" } - - override predicate isSource(DataFlow::Node source, DataFlow::FlowState state) { - source.(TemplateInjectionSource).hasState(state) - } - - override predicate isSink(DataFlow::Node sink, DataFlow::FlowState state) { - sink.(TemplateInjectionSink).hasState(state) - } - - override predicate isSanitizer(DataFlow::Node sanitizer) { - sanitizer instanceof TemplateInjectionSanitizer - } - - override predicate isSanitizer(DataFlow::Node sanitizer, DataFlow::FlowState state) { - sanitizer.(TemplateInjectionSanitizerWithState).hasState(state) - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(TemplateInjectionAdditionalTaintStep a).isAdditionalTaintStep(node1, node2) - } - - override predicate isAdditionalTaintStep( - DataFlow::Node node1, DataFlow::FlowState state1, DataFlow::Node node2, - DataFlow::FlowState state2 - ) { - any(TemplateInjectionAdditionalTaintStep a).isAdditionalTaintStep(node1, state1, node2, state2) - } -} - /** A taint tracking configuration to reason about server-side template injection (SST) vulnerabilities */ module TemplateInjectionFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof TemplateInjectionSource } diff --git a/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccessQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccessQuery.qll index bf25cd3117e..3239b387d8e 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccessQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccessQuery.qll @@ -6,23 +6,6 @@ import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.RequestForgery import semmle.code.java.security.UnsafeAndroidAccess -/** - * DEPRECATED: Use `FetchUntrustedResourceFlow` instead. - * - * A taint configuration tracking flow from untrusted inputs to a resource fetching call. - */ -deprecated class FetchUntrustedResourceConfiguration extends TaintTracking::Configuration { - FetchUntrustedResourceConfiguration() { this = "FetchUntrustedResourceConfiguration" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof UrlResourceSink } - - override predicate isSanitizer(DataFlow::Node sanitizer) { - sanitizer instanceof RequestForgerySanitizer - } -} - /** * A taint configuration tracking flow from untrusted inputs to a resource fetching call. */ diff --git a/java/ql/lib/semmle/code/java/security/UnsafeCertTrustQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeCertTrustQuery.qll index 39a55118ec4..803e3836ab0 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeCertTrustQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeCertTrustQuery.qll @@ -5,23 +5,6 @@ import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.UnsafeCertTrust import semmle.code.java.security.Encryption -/** - * DEPRECATED: Use `SslEndpointIdentificationFlow` instead. - * - * A taint flow configuration for SSL connections created without a proper certificate trust configuration. - */ -deprecated class SslEndpointIdentificationFlowConfig extends TaintTracking::Configuration { - SslEndpointIdentificationFlowConfig() { this = "SslEndpointIdentificationFlowConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof SslConnectionInit } - - override predicate isSink(DataFlow::Node sink) { sink instanceof SslConnectionCreation } - - override predicate isSanitizer(DataFlow::Node sanitizer) { - sanitizer instanceof SslUnsafeCertTrustSanitizer - } -} - /** * A taint flow configuration for SSL connections created without a proper certificate trust configuration. */ diff --git a/java/ql/lib/semmle/code/java/security/UnsafeContentUriResolutionQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeContentUriResolutionQuery.qll index a43864f8b53..db629143d5c 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeContentUriResolutionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeContentUriResolutionQuery.qll @@ -5,27 +5,6 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.UnsafeContentUriResolution -/** - * DEPRECATED: Use `UnsafeContentUriResolutionFlow` instead. - * - * A taint-tracking configuration to find paths from remote sources to content URI resolutions. - */ -deprecated class UnsafeContentResolutionConf extends TaintTracking::Configuration { - UnsafeContentResolutionConf() { this = "UnsafeContentResolutionConf" } - - override predicate isSource(DataFlow::Node src) { src instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ContentUriResolutionSink } - - override predicate isSanitizer(DataFlow::Node sanitizer) { - sanitizer instanceof ContentUriResolutionSanitizer - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(ContentUriResolutionAdditionalTaintStep s).step(node1, node2) - } -} - /** * A taint-tracking configuration to find paths from remote sources to content URI resolutions. */ diff --git a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll index 734ad4c89fe..739b2713780 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll @@ -314,25 +314,6 @@ private predicate isUnsafeDeserializationTaintStep(DataFlow::Node pred, DataFlow intentFlowsToParcel(pred, succ) } -/** - * DEPRECATED: Use `UnsafeDeserializationFlow` instead. - * - * Tracks flows from remote user input to a deserialization sink. - */ -deprecated class UnsafeDeserializationConfig extends TaintTracking::Configuration { - UnsafeDeserializationConfig() { this = "UnsafeDeserializationConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeDeserializationSink } - - override predicate isAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) { - isUnsafeDeserializationTaintStep(pred, succ) - } - - override predicate isSanitizer(DataFlow::Node node) { isUnsafeDeserializationSanitizer(node) } -} - /** Tracks flows from remote user input to a deserialization sink. */ private module UnsafeDeserializationConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } @@ -428,30 +409,6 @@ private predicate isUnsafeTypeAdditionalTaintStep(DataFlow::Node fromNode, DataF intentFlowsToParcel(fromNode, toNode) } -/** - * DEPRECATED: Use `UnsafeTypeFlow` instead. - * - * Tracks flow from a remote source to a type descriptor (e.g. a `java.lang.Class` instance) - * passed to a deserialization method. - * - * If this is user-controlled, arbitrary code could be executed while instantiating the user-specified type. - */ -deprecated class UnsafeTypeConfig extends TaintTracking2::Configuration { - UnsafeTypeConfig() { this = "UnsafeTypeConfig" } - - override predicate isSource(DataFlow::Node src) { src instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeTypeSink } - - /** - * Holds if `fromNode` to `toNode` is a dataflow step that resolves a class - * or at least looks like resolving a class. - */ - override predicate isAdditionalTaintStep(DataFlow::Node fromNode, DataFlow::Node toNode) { - isUnsafeTypeAdditionalTaintStep(fromNode, toNode) - } -} - /** * Tracks flow from a remote source to a type descriptor (e.g. a `java.lang.Class` instance) * passed to a deserialization method. @@ -480,21 +437,6 @@ module UnsafeTypeConfig implements DataFlow::ConfigSig { */ module UnsafeTypeFlow = TaintTracking::Global; -/** - * DEPRECATED: Use `EnableJacksonDefaultTypingFlow` instead. - * - * Tracks flow from `enableDefaultTyping` calls to a subsequent Jackson deserialization method call. - */ -deprecated class EnableJacksonDefaultTypingConfig extends DataFlow2::Configuration { - EnableJacksonDefaultTypingConfig() { this = "EnableJacksonDefaultTypingConfig" } - - override predicate isSource(DataFlow::Node src) { - any(EnableJacksonDefaultTyping ma).getQualifier() = src.asExpr() - } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ObjectMapperReadQualifier } -} - private module EnableJacksonDefaultTypingConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { any(EnableJacksonDefaultTyping ma).getQualifier() = src.asExpr() @@ -523,32 +465,6 @@ private predicate isObjectMapperBuilderAdditionalFlowStep( ) } -/** - * DEPRECATED: Use `SafeObjectMapperFlow` instead. - * - * Tracks flow from calls that set a type validator to a subsequent Jackson deserialization method call, - * including across builder method calls. - * - * Such a Jackson deserialization method call is safe because validation will likely prevent instantiating unexpected types. - */ -deprecated class SafeObjectMapperConfig extends DataFlow2::Configuration { - SafeObjectMapperConfig() { this = "SafeObjectMapperConfig" } - - override predicate isSource(DataFlow::Node src) { - src instanceof SetPolymorphicTypeValidatorSource - } - - override predicate isSink(DataFlow::Node sink) { sink instanceof ObjectMapperReadQualifier } - - /** - * Holds if `fromNode` to `toNode` is a dataflow step - * that configures or creates an `ObjectMapper` via a builder. - */ - override predicate isAdditionalFlowStep(DataFlow::Node fromNode, DataFlow::Node toNode) { - isObjectMapperBuilderAdditionalFlowStep(fromNode, toNode) - } -} - /** * Tracks flow from calls that set a type validator to a subsequent Jackson deserialization method call, * including across builder method calls. diff --git a/java/ql/lib/semmle/code/java/security/WebviewDebuggingEnabledQuery.qll b/java/ql/lib/semmle/code/java/security/WebviewDebuggingEnabledQuery.qll index f10b0132b5a..8e5b177268d 100644 --- a/java/ql/lib/semmle/code/java/security/WebviewDebuggingEnabledQuery.qll +++ b/java/ql/lib/semmle/code/java/security/WebviewDebuggingEnabledQuery.qll @@ -19,32 +19,6 @@ private predicate isDebugCheck(Expr ex) { ) } -/** - * DEPRECATED: Use `WebviewDebugEnabledFlow` instead. - * - * A configuration to find instances of `setWebContentDebuggingEnabled` called with `true` values. - */ -deprecated class WebviewDebugEnabledConfig extends DataFlow::Configuration { - WebviewDebugEnabledConfig() { this = "WebviewDebugEnabledConfig" } - - override predicate isSource(DataFlow::Node node) { - node.asExpr().(BooleanLiteral).getBooleanValue() = true - } - - override predicate isSink(DataFlow::Node node) { - exists(MethodCall ma | - ma.getMethod().hasQualifiedName("android.webkit", "WebView", "setWebContentsDebuggingEnabled") and - node.asExpr() = ma.getArgument(0) - ) - } - - override predicate isBarrier(DataFlow::Node node) { - exists(Guard debug | isDebugCheck(debug) and debug.controls(node.asExpr().getBasicBlock(), _)) - or - node.getEnclosingCallable().getDeclaringType() instanceof NonSecurityTestClass - } -} - /** * A webview debug sink node. */ diff --git a/java/ql/lib/semmle/code/java/security/WebviewDubuggingEnabledQuery.qll b/java/ql/lib/semmle/code/java/security/WebviewDubuggingEnabledQuery.qll deleted file mode 100644 index f315c55291e..00000000000 --- a/java/ql/lib/semmle/code/java/security/WebviewDubuggingEnabledQuery.qll +++ /dev/null @@ -1,11 +0,0 @@ -/** - * DEPRECATED: Use `semmle.code.java.security.WebviewDebuggingEnabledQuery` instead. - * - * Definitions for the Android Webview Debugging Enabled query - */ - -import java -private import semmle.code.java.security.WebviewDebuggingEnabledQuery as WebviewDebuggingEnabledQuery - -deprecated class WebviewDebugEnabledConfig = - WebviewDebuggingEnabledQuery::WebviewDebugEnabledConfig; diff --git a/java/ql/lib/semmle/code/java/security/XmlParsers.qll b/java/ql/lib/semmle/code/java/security/XmlParsers.qll index 565efb4f59a..4a5b7121e60 100644 --- a/java/ql/lib/semmle/code/java/security/XmlParsers.qll +++ b/java/ql/lib/semmle/code/java/security/XmlParsers.qll @@ -833,27 +833,6 @@ class TransformerFactoryConfig extends TransformerConfig { } } -/** - * DEPRECATED. - * - * A dataflow configuration that identifies `TransformerFactory` and `SAXTransformerFactory` - * instances that have been safely configured. - */ -deprecated class SafeTransformerFactoryFlowConfig extends DataFlow3::Configuration { - SafeTransformerFactoryFlowConfig() { this = "XmlParsers::SafeTransformerFactoryFlowConfig" } - - override predicate isSource(DataFlow::Node src) { src.asExpr() instanceof SafeTransformerFactory } - - override predicate isSink(DataFlow::Node sink) { - exists(MethodCall ma | - sink.asExpr() = ma.getQualifier() and - ma.getMethod().getDeclaringType() instanceof TransformerFactory - ) - } - - override int fieldFlowBranchLimit() { result = 0 } -} - /** * DEPRECATED. * diff --git a/java/ql/lib/semmle/code/java/security/XsltInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/XsltInjectionQuery.qll index 028ef4863d3..d437ca860d5 100644 --- a/java/ql/lib/semmle/code/java/security/XsltInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/XsltInjectionQuery.qll @@ -7,27 +7,6 @@ import semmle.code.java.security.XmlParsers import semmle.code.java.security.XsltInjection private import semmle.code.java.security.Sanitizers -/** - * DEPRECATED: Use `XsltInjectionFlow` instead. - * - * A taint-tracking configuration for unvalidated user input that is used in XSLT transformation. - */ -deprecated class XsltInjectionFlowConfig extends TaintTracking::Configuration { - XsltInjectionFlowConfig() { this = "XsltInjectionFlowConfig" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof XsltInjectionSink } - - override predicate isSanitizer(DataFlow::Node node) { - node.getType() instanceof PrimitiveType or node.getType() instanceof BoxedType - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - any(XsltInjectionAdditionalTaintStep c).step(node1, node2) - } -} - /** * A taint-tracking configuration for unvalidated user input that is used in XSLT transformation. */ diff --git a/java/ql/lib/semmle/code/java/security/XxeLocalQuery.qll b/java/ql/lib/semmle/code/java/security/XxeLocalQuery.qll index f6bfa8850b2..f485137fc78 100644 --- a/java/ql/lib/semmle/code/java/security/XxeLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/XxeLocalQuery.qll @@ -5,25 +5,6 @@ private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.TaintTracking private import semmle.code.java.security.XxeQuery -/** - * DEPRECATED: Use `XxeLocalFlow` instead. - * - * A taint-tracking configuration for unvalidated local user input that is used in XML external entity expansion. - */ -deprecated class XxeLocalConfig extends TaintTracking::Configuration { - XxeLocalConfig() { this = "XxeLocalConfig" } - - override predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput } - - override predicate isSink(DataFlow::Node sink) { sink instanceof XxeSink } - - override predicate isSanitizer(DataFlow::Node sanitizer) { sanitizer instanceof XxeSanitizer } - - override predicate isAdditionalTaintStep(DataFlow::Node n1, DataFlow::Node n2) { - any(XxeAdditionalTaintStep s).step(n1, n2) - } -} - /** * A taint-tracking configuration for unvalidated local user input that is used in XML external entity expansion. */ diff --git a/java/ql/lib/semmle/code/java/security/XxeRemoteQuery.qll b/java/ql/lib/semmle/code/java/security/XxeRemoteQuery.qll index 9236a7185c3..58b1e5bfed1 100644 --- a/java/ql/lib/semmle/code/java/security/XxeRemoteQuery.qll +++ b/java/ql/lib/semmle/code/java/security/XxeRemoteQuery.qll @@ -5,25 +5,6 @@ private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.TaintTracking private import semmle.code.java.security.XxeQuery -/** - * DEPRECATED: Use `XxeFlow` instead. - * - * A taint-tracking configuration for unvalidated remote user input that is used in XML external entity expansion. - */ -deprecated class XxeConfig extends TaintTracking::Configuration { - XxeConfig() { this = "XxeConfig" } - - override predicate isSource(DataFlow::Node src) { src instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof XxeSink } - - override predicate isSanitizer(DataFlow::Node sanitizer) { sanitizer instanceof XxeSanitizer } - - override predicate isAdditionalTaintStep(DataFlow::Node n1, DataFlow::Node n2) { - any(XxeAdditionalTaintStep s).step(n1, n2) - } -} - /** * A taint-tracking configuration for unvalidated remote user input that is used in XML external entity expansion. */ diff --git a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll index 08a58bfa6e9..0055670d895 100644 --- a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll @@ -5,7 +5,6 @@ import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.PathSanitizer private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.security.PathCreation private import semmle.code.java.security.Sanitizers /** diff --git a/java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll b/java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll index d08374e0318..55c1a043230 100644 --- a/java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll +++ b/java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll @@ -33,38 +33,6 @@ private class LengthRestrictedMethod extends Method { } } -/** - * DEPRECATED: Use `PolynomialRedosFlow` instead. - * - * A configuration for Polynomial ReDoS queries. - */ -deprecated class PolynomialRedosConfig extends TaintTracking::Configuration { - PolynomialRedosConfig() { this = "PolynomialRedosConfig" } - - override predicate isSource(DataFlow::Node src) { src instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof PolynomialRedosSink } - - override predicate isSanitizer(DataFlow::Node node) { - node.getType() instanceof PrimitiveType or - node.getType() instanceof BoxedType or - node.asExpr().(MethodCall).getMethod() instanceof LengthRestrictedMethod - } -} - -/** - * DEPRECATED: Use `PolynomialRedosFlow` instead. - * - * Holds if there is flow from `source` to `sink` that is matched against the regexp term `regexp` that is vulnerable to Polynomial ReDoS. - */ -deprecated predicate hasPolynomialReDoSResult( - DataFlow::PathNode source, DataFlow::PathNode sink, - SuperlinearBackTracking::PolynomialBackTrackingTerm regexp -) { - any(PolynomialRedosConfig config).hasFlowPath(source, sink) and - regexp.getRootTerm() = sink.getNode().(PolynomialRedosSink).getRegExp() -} - /** A configuration for Polynomial ReDoS queries. */ module PolynomialRedosConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { src instanceof ThreatModelFlowSource } diff --git a/java/ql/lib/semmle/code/java/security/regexp/RegexInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/regexp/RegexInjectionQuery.qll index 5d44139e02e..88710061819 100644 --- a/java/ql/lib/semmle/code/java/security/regexp/RegexInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/regexp/RegexInjectionQuery.qll @@ -5,21 +5,6 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.regexp.RegexInjection -/** - * DEPRECATED: Use `RegexInjectionFlow` instead. - * - * A taint-tracking configuration for untrusted user input used to construct regular expressions. - */ -deprecated class RegexInjectionConfiguration extends TaintTracking::Configuration { - RegexInjectionConfiguration() { this = "RegexInjection" } - - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSink(DataFlow::Node sink) { sink instanceof RegexInjectionSink } - - override predicate isSanitizer(DataFlow::Node node) { node instanceof RegexInjectionSanitizer } -} - /** * A taint-tracking configuration for untrusted user input used to construct regular expressions. */ diff --git a/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/old.dbscheme b/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/old.dbscheme new file mode 100644 index 00000000000..dee651b58d1 --- /dev/null +++ b/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/old.dbscheme @@ -0,0 +1,1265 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +isCanonicalConstr( + int constructorid: @constructor ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +| 89 = @recordpatternexpr +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +isNullDefaultCase( + int id: @case ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/semmlecode.dbscheme b/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/semmlecode.dbscheme new file mode 100644 index 00000000000..376ce7dad79 --- /dev/null +++ b/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/semmlecode.dbscheme @@ -0,0 +1,1233 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +isCanonicalConstr( + int constructorid: @constructor ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +| 89 = @recordpatternexpr +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +isNullDefaultCase( + int id: @case ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/typeVars.ql b/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/typeVars.ql new file mode 100644 index 00000000000..95401916504 --- /dev/null +++ b/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/typeVars.ql @@ -0,0 +1,11 @@ +class TypeVariable extends @typevariable { + string toString() { none() } +} + +class ClassOrInterfaceOrCallable extends @classorinterfaceorcallable { + string toString() { none() } +} + +from TypeVariable id, string nodeName, int pos, ClassOrInterfaceOrCallable parentid +where typeVars(id, nodeName, pos, _, parentid) +select id, nodeName, pos, parentid diff --git a/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/upgrade.properties b/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/upgrade.properties new file mode 100644 index 00000000000..72c0df1adee --- /dev/null +++ b/java/ql/lib/upgrades/dee651b58d1e5455ca2d07eca37775a21d772fcc/upgrade.properties @@ -0,0 +1,7 @@ +description: Remove deprecated entries +compatibility: full +duplicateCode.rel: delete +similarCode.rel: delete +tokens.rel: delete +snapshotDate.rel: delete +typeVars.rel: run typeVars.qlo diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 464768e3a7f..c33e27c7b65 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.1.5 + +No user-facing changes. + +## 1.1.4 + +No user-facing changes. + +## 1.1.3 + +No user-facing changes. + ## 1.1.2 ### Minor Analysis Improvements diff --git a/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql index 3963442d648..9410a5f7c87 100644 --- a/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql +++ b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql @@ -14,7 +14,6 @@ */ import java -import semmle.code.java.security.PathCreation import semmle.code.java.security.TaintedPathQuery import TaintedPathFlow::PathGraph diff --git a/java/ql/src/Security/CWE/CWE-295/InsecureTrustManager.ql b/java/ql/src/Security/CWE/CWE-295/InsecureTrustManager.ql index 4904c08b195..f8c09907838 100644 --- a/java/ql/src/Security/CWE/CWE-295/InsecureTrustManager.ql +++ b/java/ql/src/Security/CWE/CWE-295/InsecureTrustManager.ql @@ -19,4 +19,4 @@ from InsecureTrustManagerFlow::PathNode source, InsecureTrustManagerFlow::PathNo where InsecureTrustManagerFlow::flowPath(source, sink) select sink, source, sink, "This uses $@, which is defined in $@ and trusts any certificate.", source, "TrustManager", - source.getNode().asExpr().(ClassInstanceExpr).getConstructedType() as type, type.nestedName() + source.getNode().asExpr().(ClassInstanceExpr).getConstructedType() as type, type.getNestedName() diff --git a/java/ql/src/Telemetry/ExternalApi.qll b/java/ql/src/Telemetry/ExternalApi.qll index a548593c36a..f76ced8c66c 100644 --- a/java/ql/src/Telemetry/ExternalApi.qll +++ b/java/ql/src/Telemetry/ExternalApi.qll @@ -30,7 +30,7 @@ class ExternalApi extends Callable { string getApiName() { result = this.getDeclaringType().getPackage() + "." + - this.getDeclaringType().getSourceDeclaration().nestedName() + "#" + this.getName() + + this.getDeclaringType().getSourceDeclaration().getNestedName() + "#" + this.getName() + paramsString(this) } diff --git a/java/ql/src/change-notes/released/1.1.3.md b/java/ql/src/change-notes/released/1.1.3.md new file mode 100644 index 00000000000..e8f1701bd62 --- /dev/null +++ b/java/ql/src/change-notes/released/1.1.3.md @@ -0,0 +1,3 @@ +## 1.1.3 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.1.4.md b/java/ql/src/change-notes/released/1.1.4.md new file mode 100644 index 00000000000..b95051903c5 --- /dev/null +++ b/java/ql/src/change-notes/released/1.1.4.md @@ -0,0 +1,3 @@ +## 1.1.4 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.1.5.md b/java/ql/src/change-notes/released/1.1.5.md new file mode 100644 index 00000000000..11a52a121d1 --- /dev/null +++ b/java/ql/src/change-notes/released/1.1.5.md @@ -0,0 +1,3 @@ +## 1.1.5 + +No user-facing changes. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 53ab127707f..df39a9de059 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.2 +lastReleaseVersion: 1.1.5 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 32442dbf4d6..28de019af81 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.1.3-dev +version: 1.1.6-dev groups: - java - queries diff --git a/java/ql/src/utils/flowtestcasegenerator/FlowTestCaseUtils.qll b/java/ql/src/utils/flowtestcasegenerator/FlowTestCaseUtils.qll index 8855d7af7a6..3f76cbac394 100644 --- a/java/ql/src/utils/flowtestcasegenerator/FlowTestCaseUtils.qll +++ b/java/ql/src/utils/flowtestcasegenerator/FlowTestCaseUtils.qll @@ -101,7 +101,7 @@ string getShortNameIfPossible(Type t) { getRootSourceDeclaration(t) = any(TestCase tc).getADesiredImport() and exists(RefType replaced, string nestedName | replaced = replaceTypeVariable(t).getSourceDeclaration() and - nestedName = replaced.nestedName().replaceAll("$", ".") + nestedName = replaced.getNestedName().replaceAll("$", ".") | if isImportable(getRootSourceDeclaration(t)) then result = nestedName diff --git a/java/ql/src/utils/modeleditor/ModelEditor.qll b/java/ql/src/utils/modeleditor/ModelEditor.qll index dd4d405b83e..d5286e9024a 100644 --- a/java/ql/src/utils/modeleditor/ModelEditor.qll +++ b/java/ql/src/utils/modeleditor/ModelEditor.qll @@ -27,7 +27,7 @@ class Endpoint extends Callable { /** * Gets the type name of this endpoint. */ - string getTypeName() { result = this.getDeclaringType().nestedName() } + string getTypeName() { result = this.getDeclaringType().getNestedName() } /** * Gets the parameter types of this endpoint. diff --git a/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql new file mode 100644 index 00000000000..e0e793348f5 --- /dev/null +++ b/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -0,0 +1,13 @@ +/** + * @name Capture content based summary models. + * @description Finds applicable content based summary models to be used by other queries. + * @kind diagnostic + * @id java/utils/modelgenerator/contentbased-summary-models + * @tags modelgenerator + */ + +import internal.CaptureModels + +from DataFlowSummaryTargetApi api, string flow +where flow = captureContentFlow(api) +select flow order by flow diff --git a/java/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql b/java/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql new file mode 100644 index 00000000000..1d9724abef8 --- /dev/null +++ b/java/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql @@ -0,0 +1,28 @@ +/** + * @name Capture Summary Models Partial Path + * @description Capture Summary Models Partial Path + * @kind path-problem + * @precision low + * @id java/utils/modelgenerator/summary-models-partial-path + * @severity info + * @tags modelgenerator + */ + +import java +import semmle.code.java.dataflow.DataFlow +import utils.modelgenerator.internal.CaptureModels +import PartialFlow::PartialPathGraph + +int explorationLimit() { result = 3 } + +module PartialFlow = PropagateFlow::FlowExplorationFwd; + +from + PartialFlow::PartialPathNode source, PartialFlow::PartialPathNode sink, + DataFlowSummaryTargetApi api, DataFlow::ParameterNode p +where + PartialFlow::partialFlow(source, sink, _) and + p = source.getNode() and + p.asParameter() = api.getAParameter() +select sink.getNode(), source, sink, "There is flow from a $@ to $@.", source.getNode(), + "parameter", sink.getNode(), "intermediate value" diff --git a/java/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPath.ql b/java/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPath.ql new file mode 100644 index 00000000000..88d45dc1f5b --- /dev/null +++ b/java/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPath.ql @@ -0,0 +1,25 @@ +/** + * @name Capture Summary Models Path + * @description Capture Summary Models Path + * @kind path-problem + * @precision low + * @id java/utils/modelgenerator/summary-models-path + * @severity warning + * @tags modelgenerator + */ + +import java +import semmle.code.java.dataflow.DataFlow +import utils.modelgenerator.internal.CaptureModels +import PropagateFlow::PathGraph + +from + PropagateFlow::PathNode source, PropagateFlow::PathNode sink, DataFlowSummaryTargetApi api, + DataFlow::Node p, DataFlow::Node returnNodeExt +where + PropagateFlow::flowPath(source, sink) and + p = source.getNode() and + returnNodeExt = sink.getNode() and + exists(captureThroughFlow0(api, p, returnNodeExt)) +select sink.getNode(), source, sink, "There is flow from $@ to the $@.", source.getNode(), + "parameter", sink.getNode(), "return value" diff --git a/java/ql/src/utils/modelgenerator/debug/README.md b/java/ql/src/utils/modelgenerator/debug/README.md new file mode 100644 index 00000000000..8d01e511882 --- /dev/null +++ b/java/ql/src/utils/modelgenerator/debug/README.md @@ -0,0 +1 @@ +The queries in this directory are purely used for model generator debugging purposes in VS Code. diff --git a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll index b5eff2664d2..0f24bab005e 100644 --- a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -18,17 +18,35 @@ private class ReturnNodeExt extends DataFlow::Node { kind = DataFlowImplCommon::getParamReturnPosition(this, _).getKind() } - string getOutput() { - kind instanceof DataFlowImplCommon::ValueReturnKind and + /** + * Gets the kind of the return node. + */ + DataFlowImplCommon::ReturnKindExt getKind() { result = kind } +} + +bindingset[c] +private signature string printCallableParamSig(Callable c, ParameterPosition p); + +private module PrintReturnNodeExt { + string getOutput(ReturnNodeExt node) { + node.getKind() instanceof DataFlowImplCommon::ValueReturnKind and result = "ReturnValue" or exists(ParameterPosition pos | - pos = kind.(DataFlowImplCommon::ParamUpdateReturnKind).getPosition() and - result = paramReturnNodeAsOutput(returnNodeEnclosingCallable(this), pos) + pos = node.getKind().(DataFlowImplCommon::ParamUpdateReturnKind).getPosition() and + result = printCallableParam(returnNodeEnclosingCallable(node), pos) ) } } +string getOutput(ReturnNodeExt node) { + result = PrintReturnNodeExt::getOutput(node) +} + +string getContentOutput(ReturnNodeExt node) { + result = PrintReturnNodeExt::getOutput(node) +} + class DataFlowSummaryTargetApi extends SummaryTargetApi { DataFlowSummaryTargetApi() { not isUninterestingForDataFlowModels(this) } } @@ -71,7 +89,8 @@ private predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2 * Holds if content `c` is either a field, a synthetic field or language specific * content of a relevant type or a container like content. */ -private predicate isRelevantContent(DataFlow::ContentSet c) { +pragma[nomagic] +private predicate isRelevantContent0(DataFlow::ContentSet c) { isRelevantTypeInContent(c) or containerContent(c) } @@ -85,6 +104,16 @@ string parameterNodeAsInput(DataFlow::ParameterNode p) { result = qualifierString() and p instanceof InstanceParameterNode } +/** + * Gets the MaD string representation of the parameter `p` + * when used in content flow. + */ +string parameterNodeAsContentInput(DataFlow::ParameterNode p) { + result = parameterContentAccess(p.asParameter()) + or + result = qualifierString() and p instanceof InstanceParameterNode +} + /** * Gets the MaD input string representation of `source`. */ @@ -170,7 +199,7 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { ) { exists(DataFlow::ContentSet c | DataFlowImplCommon::store(node1, c.getAStoreContent(), node2, _, _) and - isRelevantContent(c) and + isRelevantContent0(c) and ( state1 instanceof TaintRead and state2.(TaintStore).getStep() = 1 or @@ -180,7 +209,7 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { or exists(DataFlow::ContentSet c | DataFlowPrivate::readStep(node1, c, node2) and - isRelevantContent(c) and + isRelevantContent0(c) and state1.(TaintRead).getStep() + 1 = state2.(TaintRead).getStep() ) } @@ -194,19 +223,94 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { } } -private module PropagateFlow = TaintTracking::GlobalWithState; +module PropagateFlow = TaintTracking::GlobalWithState; + +/** + * Gets the summary model(s) of `api`, if there is flow from parameters to return value or parameter. + */ +string captureThroughFlow0( + DataFlowSummaryTargetApi api, DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt +) { + exists(string input, string output | + p.getEnclosingCallable() = api and + returnNodeExt.(DataFlow::Node).getEnclosingCallable() = api and + input = parameterNodeAsInput(p) and + output = getOutput(returnNodeExt) and + input != output and + result = Printing::asTaintModel(api, input, output) + ) +} /** * Gets the summary model(s) of `api`, if there is flow from parameters to return value or parameter. */ string captureThroughFlow(DataFlowSummaryTargetApi api) { - exists(DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt, string input, string output | + exists(DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt | PropagateFlow::flow(p, returnNodeExt) and - returnNodeExt.(DataFlow::Node).getEnclosingCallable() = api and - input = parameterNodeAsInput(p) and - output = returnNodeExt.getOutput() and + result = captureThroughFlow0(api, p, returnNodeExt) + ) +} + +private module PropagateContentFlowConfig implements ContentDataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof DataFlow::ParameterNode and + source.getEnclosingCallable() instanceof DataFlowSummaryTargetApi + } + + predicate isSink(DataFlow::Node sink) { + sink instanceof ReturnNodeExt and + sink.getEnclosingCallable() instanceof DataFlowSummaryTargetApi + } + + predicate isAdditionalFlowStep = isAdditionalContentFlowStep/2; + + predicate isBarrier(DataFlow::Node n) { + exists(Type t | t = n.getType() and not isRelevantType(t)) + } + + int accessPathLimit() { result = 2 } + + predicate isRelevantContent(DataFlow::ContentSet s) { isRelevantContent0(s) } + + DataFlow::FlowFeature getAFeature() { + result instanceof DataFlow::FeatureEqualSourceSinkCallContext + } +} + +private module PropagateContentFlow = ContentDataFlow::Global; + +private string getContent(PropagateContentFlow::AccessPath ap, int i) { + exists(ContentSet head, PropagateContentFlow::AccessPath tail | + head = ap.getHead() and + tail = ap.getTail() + | + i = 0 and + result = "." + printContent(head) + or + i > 0 and result = getContent(tail, i - 1) + ) +} + +private string printStoreAccessPath(PropagateContentFlow::AccessPath ap) { + result = concat(int i | | getContent(ap, i), "" order by i) +} + +private string printReadAccessPath(PropagateContentFlow::AccessPath ap) { + result = concat(int i | | getContent(ap, i), "" order by i desc) +} + +string captureContentFlow(DataFlowSummaryTargetApi api) { + exists( + DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt, string input, string output, + PropagateContentFlow::AccessPath reads, PropagateContentFlow::AccessPath stores, + boolean preservesValue + | + PropagateContentFlow::flow(p, reads, returnNodeExt, stores, preservesValue) and + returnNodeExt.getEnclosingCallable() = api and + input = parameterNodeAsContentInput(p) + printReadAccessPath(reads) and + output = getContentOutput(returnNodeExt) + printStoreAccessPath(stores) and input != output and - result = Printing::asTaintModel(api, input, output) + result = Printing::asModel(api, input, output, preservesValue) ) } @@ -252,7 +356,7 @@ string captureSource(DataFlowSourceTargetApi api) { ExternalFlow::sourceNode(source, kind) and api = sink.getEnclosingCallable() and not irrelevantSourceSinkApi(source.getEnclosingCallable(), api) and - result = Printing::asSourceModel(api, sink.getOutput(), kind) + result = Printing::asSourceModel(api, getOutput(sink), kind) ) } diff --git a/java/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll b/java/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll index b881deb6e6a..763960df0d8 100644 --- a/java/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll +++ b/java/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll @@ -4,10 +4,12 @@ private import java as J private import semmle.code.java.dataflow.internal.DataFlowPrivate +private import semmle.code.java.dataflow.internal.DataFlowUtil as DataFlowUtil private import semmle.code.java.dataflow.internal.ContainerFlow as ContainerFlow private import semmle.code.java.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl private import semmle.code.java.dataflow.internal.ModelExclusions private import semmle.code.java.dataflow.DataFlow as Df +private import semmle.code.java.dataflow.internal.ContentDataFlow as Cdf private import semmle.code.java.dataflow.SSA as Ssa private import semmle.code.java.dataflow.TaintTracking as Tt import semmle.code.java.dataflow.ExternalFlow as ExternalFlow @@ -17,6 +19,8 @@ import semmle.code.java.dataflow.internal.DataFlowDispatch as DataFlowDispatch module DataFlow = Df::DataFlow; +module ContentDataFlow = Cdf::ContentDataFlow; + module TaintTracking = Tt::TaintTracking; class Type = J::Type; @@ -25,6 +29,8 @@ class Unit = J::Unit; class Callable = J::Callable; +class ContentSet = DataFlowUtil::ContentSet; + private predicate isInfrequentlyUsed(J::CompilationUnit cu) { cu.getPackage().getName().matches("javax.swing%") or cu.getPackage().getName().matches("java.awt%") @@ -148,7 +154,7 @@ private string isExtensible(Callable c) { private predicate qualifiedName(Callable c, string package, string type) { exists(RefType t | t = c.getDeclaringType() | package = t.getCompilationUnit().getPackage().getName() and - type = t.getErasure().(J::RefType).nestedName() + type = t.getErasure().(J::RefType).getNestedName() ) } @@ -217,6 +223,12 @@ string parameterAccess(J::Parameter p) { else result = "Argument[" + p.getPosition() + "]" } +/** + * Gets the MaD string representation of the parameter `p` + * when used in content flow. + */ +string parameterContentAccess(J::Parameter p) { result = "Argument[" + p.getPosition() + "]" } + class InstanceParameterNode = DataFlow::InstanceParameterNode; class ParameterPosition = DataFlowDispatch::ParameterPosition; @@ -232,6 +244,17 @@ string paramReturnNodeAsOutput(Callable c, ParameterPosition pos) { result = qualifierString() and pos = -1 } +/** + * Gets the MaD string representation of return through parameter at position + * `pos` of callable `c` for content flow. + */ +bindingset[c] +string paramReturnNodeAsContentOutput(Callable c, ParameterPosition pos) { + result = parameterContentAccess(c.getParameter(pos)) + or + result = qualifierString() and pos = -1 +} + /** * Gets the enclosing callable of `ret`. */ @@ -305,3 +328,34 @@ bindingset[kind] predicate isRelevantSourceKind(string kind) { any() } predicate containerContent = DataFlowPrivate::containerContent/1; + +/** + * Holds if there is a taint step from `node1` to `node2` in content flow. + */ +predicate isAdditionalContentFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + TaintTracking::defaultAdditionalTaintStep(node1, node2, _) and + not exists(DataFlow::Content f | + DataFlowPrivate::readStep(node1, f, node2) and containerContent(f) + ) +} + +/** + * Gets the MaD string representation of the contentset `c`. + */ +string printContent(ContentSet c) { + exists(Field f, string name | + f = c.(DataFlowUtil::FieldContent).getField() and name = f.getQualifiedName() + | + if f.isPublic() then result = "Field[" + name + "]" else result = "SyntheticField[" + name + "]" + ) + or + result = "SyntheticField[" + c.(DataFlowUtil::SyntheticFieldContent).getField() + "]" + or + c instanceof DataFlowUtil::CollectionContent and result = "Element" + or + c instanceof DataFlowUtil::ArrayContent and result = "ArrayElement" + or + c instanceof DataFlowUtil::MapValueContent and result = "MapValue" + or + c instanceof DataFlowUtil::MapKeyContent and result = "MapKey" +} diff --git a/java/ql/test/library-tests/dataflow/capture/B.java b/java/ql/test/library-tests/dataflow/capture/B.java index 8909358b8a4..6fc406c1a21 100644 --- a/java/ql/test/library-tests/dataflow/capture/B.java +++ b/java/ql/test/library-tests/dataflow/capture/B.java @@ -248,4 +248,35 @@ public class B { sink(l.get(0)); // $ hasValueFlow=src sink(l2.get(0)); // $ hasValueFlow=src } + + void testInstanceInitializer() { + // Tests capture in the instance initializer ("") + String s = source("init"); + class MyLocal3 { + String f = s; + void run() { + sink(this.f); // $ hasValueFlow=init + } + } + new MyLocal3().run(); + } + + void testConstructorIndirection() { + // Tests capture in nested constructor call + String s = source("init"); + class MyLocal4 { + String f; + MyLocal4() { + this(42); + } + MyLocal4(int i) { + f = s; + } + String get() { + return this.f; + } + } + sink(new MyLocal4().get()); // $ hasValueFlow=init + sink(new MyLocal4(1).get()); // $ hasValueFlow=init + } } diff --git a/java/ql/test/library-tests/dataflow/capture/inlinetest.expected b/java/ql/test/library-tests/dataflow/capture/inlinetest.expected index 5c08b6d3c31..efd347890dd 100644 --- a/java/ql/test/library-tests/dataflow/capture/inlinetest.expected +++ b/java/ql/test/library-tests/dataflow/capture/inlinetest.expected @@ -254,6 +254,46 @@ edges | B.java:247:5:247:18 | new MyLocal2(...) [pre constructor] : MyLocal2 [String s] : String | B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List l, ] : String | provenance | MaD:2 | | B.java:248:10:248:10 | l : ArrayList [] : String | B.java:248:10:248:17 | get(...) | provenance | MaD:3 | | B.java:249:10:249:11 | l2 : ArrayList [] : String | B.java:249:10:249:18 | get(...) | provenance | MaD:3 | +| B.java:254:16:254:29 | source(...) : String | B.java:261:5:261:18 | String s : String | provenance | | +| B.java:255:11:255:18 | parameter this : MyLocal3 [String s] : String | B.java:255:11:255:18 | this <.method> : MyLocal3 [String s] : String | provenance | | +| B.java:255:11:255:18 | parameter this : MyLocal3 [String s] : String | B.java:256:18:256:18 | this : MyLocal3 [String s] : String | provenance | | +| B.java:255:11:255:18 | this <.method> : MyLocal3 [String s] : String | B.java:255:11:255:18 | parameter this : MyLocal3 [String s] : String | provenance | | +| B.java:255:11:255:18 | this <.method> : MyLocal3 [String s] : String | B.java:255:11:255:18 | this <.method> [post update] : MyLocal3 [f] : String | provenance | | +| B.java:255:11:255:18 | this <.method> [post update] : MyLocal3 [f] : String | B.java:255:11:255:18 | parameter this [Return] : MyLocal3 [f] : String | provenance | | +| B.java:256:7:256:19 | this <.field> [post update] : MyLocal3 [f] : String | B.java:255:11:255:18 | parameter this [Return] : MyLocal3 [f] : String | provenance | | +| B.java:256:18:256:18 | s : String | B.java:256:7:256:19 | this <.field> [post update] : MyLocal3 [f] : String | provenance | | +| B.java:256:18:256:18 | this : MyLocal3 [String s] : String | B.java:256:18:256:18 | s : String | provenance | | +| B.java:257:12:257:14 | parameter this : MyLocal3 [f] : String | B.java:258:14:258:17 | this : MyLocal3 [f] : String | provenance | | +| B.java:258:14:258:17 | this : MyLocal3 [f] : String | B.java:258:14:258:19 | this.f | provenance | | +| B.java:261:5:261:18 | String s : String | B.java:261:5:261:18 | new MyLocal3(...) [pre constructor] : MyLocal3 [String s] : String | provenance | | +| B.java:261:5:261:18 | new MyLocal3(...) : MyLocal3 [f] : String | B.java:257:12:257:14 | parameter this : MyLocal3 [f] : String | provenance | | +| B.java:261:5:261:18 | new MyLocal3(...) [pre constructor] : MyLocal3 [String s] : String | B.java:255:11:255:18 | parameter this : MyLocal3 [String s] : String | provenance | | +| B.java:261:5:261:18 | new MyLocal3(...) [pre constructor] : MyLocal3 [String s] : String | B.java:261:5:261:18 | new MyLocal3(...) : MyLocal3 [f] : String | provenance | | +| B.java:266:16:266:29 | source(...) : String | B.java:279:10:279:23 | String s : String | provenance | | +| B.java:266:16:266:29 | source(...) : String | B.java:280:10:280:24 | String s : String | provenance | | +| B.java:269:7:269:14 | parameter this : MyLocal4 [String s] : String | B.java:270:9:270:17 | this : MyLocal4 [String s] : String | provenance | | +| B.java:270:9:270:17 | this : MyLocal4 [String s] : String | B.java:270:9:270:17 | this [post update] : MyLocal4 [f] : String | provenance | | +| B.java:270:9:270:17 | this : MyLocal4 [String s] : String | B.java:272:7:272:14 | parameter this : MyLocal4 [String s] : String | provenance | | +| B.java:270:9:270:17 | this [post update] : MyLocal4 [f] : String | B.java:269:7:269:14 | parameter this [Return] : MyLocal4 [f] : String | provenance | | +| B.java:272:7:272:14 | parameter this : MyLocal4 [String s] : String | B.java:273:13:273:13 | this : MyLocal4 [String s] : String | provenance | | +| B.java:273:9:273:9 | this <.field> [post update] : MyLocal4 [f] : String | B.java:272:7:272:14 | parameter this [Return] : MyLocal4 [f] : String | provenance | | +| B.java:273:13:273:13 | s : String | B.java:273:9:273:9 | this <.field> [post update] : MyLocal4 [f] : String | provenance | | +| B.java:273:13:273:13 | this : MyLocal4 [String s] : String | B.java:273:13:273:13 | s : String | provenance | | +| B.java:275:14:275:16 | parameter this : MyLocal4 [f] : String | B.java:276:16:276:19 | this : MyLocal4 [f] : String | provenance | | +| B.java:276:16:276:19 | this : MyLocal4 [f] : String | B.java:276:16:276:21 | this.f : String | provenance | | +| B.java:279:10:279:23 | String s : String | B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [String s] : String | provenance | | +| B.java:279:10:279:23 | String s : String | B.java:279:10:279:23 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | provenance | | +| B.java:279:10:279:23 | String s : String | B.java:280:10:280:24 | String s : String | provenance | | +| B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [String s] : String | B.java:279:10:279:23 | String s : String | provenance | | +| B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [f] : String | B.java:275:14:275:16 | parameter this : MyLocal4 [f] : String | provenance | | +| B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [f] : String | B.java:279:10:279:29 | get(...) | provenance | | +| B.java:279:10:279:23 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | B.java:269:7:269:14 | parameter this : MyLocal4 [String s] : String | provenance | | +| B.java:279:10:279:23 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [f] : String | provenance | | +| B.java:280:10:280:24 | String s : String | B.java:280:10:280:24 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | provenance | | +| B.java:280:10:280:24 | new MyLocal4(...) : MyLocal4 [f] : String | B.java:275:14:275:16 | parameter this : MyLocal4 [f] : String | provenance | | +| B.java:280:10:280:24 | new MyLocal4(...) : MyLocal4 [f] : String | B.java:280:10:280:30 | get(...) | provenance | | +| B.java:280:10:280:24 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | B.java:272:7:272:14 | parameter this : MyLocal4 [String s] : String | provenance | | +| B.java:280:10:280:24 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | B.java:280:10:280:24 | new MyLocal4(...) : MyLocal4 [f] : String | provenance | | nodes | B.java:11:5:11:6 | l1 [post update] : ArrayList [] : String | semmle.label | l1 [post update] : ArrayList [] : String | | B.java:11:12:11:22 | source(...) : String | semmle.label | source(...) : String | @@ -511,6 +551,45 @@ nodes | B.java:248:10:248:17 | get(...) | semmle.label | get(...) | | B.java:249:10:249:11 | l2 : ArrayList [] : String | semmle.label | l2 : ArrayList [] : String | | B.java:249:10:249:18 | get(...) | semmle.label | get(...) | +| B.java:254:16:254:29 | source(...) : String | semmle.label | source(...) : String | +| B.java:255:11:255:18 | parameter this : MyLocal3 [String s] : String | semmle.label | parameter this : MyLocal3 [String s] : String | +| B.java:255:11:255:18 | parameter this : MyLocal3 [String s] : String | semmle.label | parameter this : MyLocal3 [String s] : String | +| B.java:255:11:255:18 | parameter this [Return] : MyLocal3 [f] : String | semmle.label | parameter this [Return] : MyLocal3 [f] : String | +| B.java:255:11:255:18 | parameter this [Return] : MyLocal3 [f] : String | semmle.label | parameter this [Return] : MyLocal3 [f] : String | +| B.java:255:11:255:18 | this <.method> : MyLocal3 [String s] : String | semmle.label | this <.method> : MyLocal3 [String s] : String | +| B.java:255:11:255:18 | this <.method> [post update] : MyLocal3 [f] : String | semmle.label | this <.method> [post update] : MyLocal3 [f] : String | +| B.java:256:7:256:19 | this <.field> [post update] : MyLocal3 [f] : String | semmle.label | this <.field> [post update] : MyLocal3 [f] : String | +| B.java:256:18:256:18 | s : String | semmle.label | s : String | +| B.java:256:18:256:18 | this : MyLocal3 [String s] : String | semmle.label | this : MyLocal3 [String s] : String | +| B.java:257:12:257:14 | parameter this : MyLocal3 [f] : String | semmle.label | parameter this : MyLocal3 [f] : String | +| B.java:258:14:258:17 | this : MyLocal3 [f] : String | semmle.label | this : MyLocal3 [f] : String | +| B.java:258:14:258:19 | this.f | semmle.label | this.f | +| B.java:261:5:261:18 | String s : String | semmle.label | String s : String | +| B.java:261:5:261:18 | new MyLocal3(...) : MyLocal3 [f] : String | semmle.label | new MyLocal3(...) : MyLocal3 [f] : String | +| B.java:261:5:261:18 | new MyLocal3(...) [pre constructor] : MyLocal3 [String s] : String | semmle.label | new MyLocal3(...) [pre constructor] : MyLocal3 [String s] : String | +| B.java:266:16:266:29 | source(...) : String | semmle.label | source(...) : String | +| B.java:269:7:269:14 | parameter this : MyLocal4 [String s] : String | semmle.label | parameter this : MyLocal4 [String s] : String | +| B.java:269:7:269:14 | parameter this [Return] : MyLocal4 [f] : String | semmle.label | parameter this [Return] : MyLocal4 [f] : String | +| B.java:270:9:270:17 | this : MyLocal4 [String s] : String | semmle.label | this : MyLocal4 [String s] : String | +| B.java:270:9:270:17 | this [post update] : MyLocal4 [f] : String | semmle.label | this [post update] : MyLocal4 [f] : String | +| B.java:272:7:272:14 | parameter this : MyLocal4 [String s] : String | semmle.label | parameter this : MyLocal4 [String s] : String | +| B.java:272:7:272:14 | parameter this [Return] : MyLocal4 [f] : String | semmle.label | parameter this [Return] : MyLocal4 [f] : String | +| B.java:273:9:273:9 | this <.field> [post update] : MyLocal4 [f] : String | semmle.label | this <.field> [post update] : MyLocal4 [f] : String | +| B.java:273:13:273:13 | s : String | semmle.label | s : String | +| B.java:273:13:273:13 | this : MyLocal4 [String s] : String | semmle.label | this : MyLocal4 [String s] : String | +| B.java:275:14:275:16 | parameter this : MyLocal4 [f] : String | semmle.label | parameter this : MyLocal4 [f] : String | +| B.java:276:16:276:19 | this : MyLocal4 [f] : String | semmle.label | this : MyLocal4 [f] : String | +| B.java:276:16:276:21 | this.f : String | semmle.label | this.f : String | +| B.java:279:10:279:23 | String s : String | semmle.label | String s : String | +| B.java:279:10:279:23 | String s : String | semmle.label | String s : String | +| B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [String s] : String | semmle.label | new MyLocal4(...) : MyLocal4 [String s] : String | +| B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [f] : String | semmle.label | new MyLocal4(...) : MyLocal4 [f] : String | +| B.java:279:10:279:23 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | semmle.label | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | +| B.java:279:10:279:29 | get(...) | semmle.label | get(...) | +| B.java:280:10:280:24 | String s : String | semmle.label | String s : String | +| B.java:280:10:280:24 | new MyLocal4(...) : MyLocal4 [f] : String | semmle.label | new MyLocal4(...) : MyLocal4 [f] : String | +| B.java:280:10:280:24 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | semmle.label | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | +| B.java:280:10:280:30 | get(...) | semmle.label | get(...) | subpaths | B.java:13:5:13:6 | l1 : ArrayList [] : String | B.java:13:16:13:16 | e : String | B.java:13:16:13:29 | parameter this [Return] : new Consumer(...) { ... } [List l2, ] : String | B.java:13:16:13:29 | ...->... [post update] : new Consumer(...) { ... } [List l2, ] : String | | B.java:30:14:30:24 | source(...) : String | B.java:22:26:22:26 | x : String | B.java:22:26:22:71 | parameter this [Return] : new Consumer(...) { ... } [B other, bf1] : String | B.java:30:5:30:5 | f [post update] : new Consumer(...) { ... } [B other, bf1] : String | @@ -530,4 +609,11 @@ subpaths | B.java:178:10:178:11 | m2 : MyLocal [List l, ] : String | B.java:169:14:169:16 | parameter this : MyLocal [List l, ] : String | B.java:170:16:170:23 | get(...) : String | B.java:178:10:178:17 | get(...) | | B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List l, ] : String | B.java:240:12:240:14 | parameter this : MyLocal2 [List l, ] : String | B.java:240:12:240:14 | parameter this [Return] : MyLocal2 [List l2, ] : String | B.java:247:5:247:18 | new MyLocal2(...) [post update] : MyLocal2 [List l2, ] : String | | B.java:247:5:247:18 | new MyLocal2(...) [pre constructor] : MyLocal2 [String s] : String | B.java:235:7:235:14 | parameter this : MyLocal2 [String s] : String | B.java:235:7:235:14 | parameter this [Return] : MyLocal2 [List l, ] : String | B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List l, ] : String | +| B.java:255:11:255:18 | this <.method> : MyLocal3 [String s] : String | B.java:255:11:255:18 | parameter this : MyLocal3 [String s] : String | B.java:255:11:255:18 | parameter this [Return] : MyLocal3 [f] : String | B.java:255:11:255:18 | this <.method> [post update] : MyLocal3 [f] : String | +| B.java:261:5:261:18 | new MyLocal3(...) [pre constructor] : MyLocal3 [String s] : String | B.java:255:11:255:18 | parameter this : MyLocal3 [String s] : String | B.java:255:11:255:18 | parameter this [Return] : MyLocal3 [f] : String | B.java:261:5:261:18 | new MyLocal3(...) : MyLocal3 [f] : String | +| B.java:270:9:270:17 | this : MyLocal4 [String s] : String | B.java:272:7:272:14 | parameter this : MyLocal4 [String s] : String | B.java:272:7:272:14 | parameter this [Return] : MyLocal4 [f] : String | B.java:270:9:270:17 | this [post update] : MyLocal4 [f] : String | +| B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [f] : String | B.java:275:14:275:16 | parameter this : MyLocal4 [f] : String | B.java:276:16:276:21 | this.f : String | B.java:279:10:279:29 | get(...) | +| B.java:279:10:279:23 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | B.java:269:7:269:14 | parameter this : MyLocal4 [String s] : String | B.java:269:7:269:14 | parameter this [Return] : MyLocal4 [f] : String | B.java:279:10:279:23 | new MyLocal4(...) : MyLocal4 [f] : String | +| B.java:280:10:280:24 | new MyLocal4(...) : MyLocal4 [f] : String | B.java:275:14:275:16 | parameter this : MyLocal4 [f] : String | B.java:276:16:276:21 | this.f : String | B.java:280:10:280:30 | get(...) | +| B.java:280:10:280:24 | new MyLocal4(...) [pre constructor] : MyLocal4 [String s] : String | B.java:272:7:272:14 | parameter this : MyLocal4 [String s] : String | B.java:272:7:272:14 | parameter this [Return] : MyLocal4 [f] : String | B.java:280:10:280:24 | new MyLocal4(...) : MyLocal4 [f] : String | testFailures diff --git a/java/ql/test/library-tests/dataflow/external-models/C.java b/java/ql/test/library-tests/dataflow/external-models/C.java index b1c7f2dc85c..79d43480703 100644 --- a/java/ql/test/library-tests/dataflow/external-models/C.java +++ b/java/ql/test/library-tests/dataflow/external-models/C.java @@ -1,5 +1,7 @@ package my.qltest; +import my.qltest.external.Library; + public class C { void foo() { Object arg1 = new Object(); @@ -25,35 +27,82 @@ public class C { } void fooGenerated() { - Object arg1 = new Object(); - stepArgResGenerated(arg1); + Object arg = new Object(); - Object arg2 = new Object(); - // The summary for the first parameter is ignored, because it is generated and - // because there is hand written summary for the second parameter. - stepArgResGeneratedIgnored(arg1, arg2); - - stepArgQualGenerated(arg1); - // The summary for the first parameter is ignored, because it is generated and - // because there is hand written neutral summary model for this callable. - stepArgQualGeneratedIgnored(arg1); + // The (generated) summary is ignored because the source code is available. + stepArgResGenerated(arg); } - Object stepArgRes(Object x) { return null; } + // Library functionality is emulated by placing the source code in a "stubs" + // folder. This means that a generated summary will be applied, if there + // doesn't exist a manual summary or manual summary neutral. + void fooLibrary() { + Object arg1 = new Object(); - void stepArgArg(Object in, Object out) { } + Library lib = new Library(); - void stepArgQual(Object x) { } + lib.apiStepArgResGenerated(arg1); - Object stepQualRes() { return null; } + Object arg2 = new Object(); - void stepQualArg(Object out) { } + // The summary for the first parameter is ignored, because it is generated and + // because there is a manual summary for the second parameter. + lib.apiStepArgResGeneratedIgnored(arg1, arg2); - Object stepArgResGenerated(Object x) { return null; } + lib.apiStepArgQualGenerated(arg1); - Object stepArgResGeneratedIgnored(Object x, Object y) { return null; } + // The summary for the parameter is ignored, because it is generated and + // because there is a manual neutral summary model for this callable. + lib.apiStepArgQualGeneratedIgnored(arg1); + } - Object stepArgQualGenerated(Object x) { return null; } - - Object stepArgQualGeneratedIgnored(Object x) { return null; } + void fooPossibleLibraryDispatch(Library lib) { + Object arg1 = new Object(); + + lib.id(arg1); + } + + void fooExplicitDispatch() { + Object arg1 = new Object(); + + MyLibrary lib = new MyLibrary(); + + lib.id(arg1); + } + + void fooGeneric(MyGenericLibrary lib) { + lib.get(); + } + + Object stepArgRes(Object x) { + return null; + } + + void stepArgArg(Object in, Object out) {} + + void stepArgQual(Object x) {} + + Object stepQualRes() { + return null; + } + + void stepQualArg(Object out) {} + + Object stepArgResGenerated(Object x) { + return null; + } + + class MyLibrary extends Library { + @Override + // Bad implementation of the id function. + public Object id(Object x) { + return null; + } + } + + public class MyGenericLibrary { + public T get() { + return null; + } + } } diff --git a/java/ql/test/library-tests/dataflow/external-models/steps.expected b/java/ql/test/library-tests/dataflow/external-models/steps.expected index c9b2fd4d01e..37d38018502 100644 --- a/java/ql/test/library-tests/dataflow/external-models/steps.expected +++ b/java/ql/test/library-tests/dataflow/external-models/steps.expected @@ -1,13 +1,14 @@ invalidModelRow #select -| C.java:6:16:6:19 | arg1 | C.java:6:5:6:20 | stepArgRes(...) | -| C.java:10:16:10:21 | argIn1 | C.java:10:24:10:30 | argOut1 [post update] | -| C.java:13:16:13:21 | argIn2 | C.java:13:24:13:30 | argOut2 [post update] | -| C.java:16:17:16:20 | arg2 | C.java:16:5:16:21 | this <.method> [post update] | -| C.java:18:22:18:25 | arg3 | C.java:18:5:18:8 | this [post update] | -| C.java:20:5:20:8 | this | C.java:20:5:20:22 | stepQualRes(...) | -| C.java:21:5:21:17 | this <.method> | C.java:21:5:21:17 | stepQualRes(...) | -| C.java:24:5:24:23 | this <.method> | C.java:24:17:24:22 | argOut [post update] | -| C.java:29:25:29:28 | arg1 | C.java:29:5:29:29 | stepArgResGenerated(...) | -| C.java:34:38:34:41 | arg2 | C.java:34:5:34:42 | stepArgResGeneratedIgnored(...) | -| C.java:36:26:36:29 | arg1 | C.java:36:5:36:30 | this <.method> [post update] | +| C.java:8:16:8:19 | arg1 | C.java:8:5:8:20 | stepArgRes(...) | +| C.java:12:16:12:21 | argIn1 | C.java:12:24:12:30 | argOut1 [post update] | +| C.java:15:16:15:21 | argIn2 | C.java:15:24:15:30 | argOut2 [post update] | +| C.java:18:17:18:20 | arg2 | C.java:18:5:18:21 | this <.method> [post update] | +| C.java:20:22:20:25 | arg3 | C.java:20:5:20:8 | this [post update] | +| C.java:22:5:22:8 | this | C.java:22:5:22:22 | stepQualRes(...) | +| C.java:23:5:23:17 | this <.method> | C.java:23:5:23:17 | stepQualRes(...) | +| C.java:26:5:26:23 | this <.method> | C.java:26:17:26:22 | argOut [post update] | +| C.java:44:32:44:35 | arg1 | C.java:44:5:44:36 | apiStepArgResGenerated(...) | +| C.java:50:45:50:48 | arg2 | C.java:50:5:50:49 | apiStepArgResGeneratedIgnored(...) | +| C.java:52:33:52:36 | arg1 | C.java:52:5:52:7 | lib [post update] | +| C.java:62:12:62:15 | arg1 | C.java:62:5:62:16 | id(...) | diff --git a/java/ql/test/library-tests/dataflow/external-models/steps.ext.yml b/java/ql/test/library-tests/dataflow/external-models/steps.ext.yml index 831079dd40b..a0f01e48d51 100644 --- a/java/ql/test/library-tests/dataflow/external-models/steps.ext.yml +++ b/java/ql/test/library-tests/dataflow/external-models/steps.ext.yml @@ -9,13 +9,16 @@ extensions: - ["my.qltest", "C", False, "stepQualRes", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["my.qltest", "C", False, "stepQualArg", "(Object)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["my.qltest", "C", False, "stepArgResGenerated", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["my.qltest", "C", False, "stepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["my.qltest", "C", False, "stepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["my.qltest", "C", False, "stepArgQualGenerated", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["my.qltest", "C", False, "stepArgQualGeneratedIgnored", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["my.qltest", "C$MyGenericLibrary", True, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["my.qltest.external", "Library", False, "apiStepArgResGenerated", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["my.qltest.external", "Library", False, "apiStepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["my.qltest.external", "Library", False, "apiStepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"] + - ["my.qltest.external", "Library", False, "apiStepArgQualGenerated", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["my.qltest.external", "Library", False, "apiStepArgQualGeneratedIgnored", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["my.qltest.external", "Library", False, "id", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/java-all extensible: neutralModel data: - - ["my.qltest", "C", "stepArgQualGenerated", "(Object)", "summary", "df-generated"] - - ["my.qltest", "C", "stepArgQualGeneratedIgnored", "(Object)", "summary", "manual"] + - ["my.qltest.external", "Library", "apiStepArgQualGenerated", "(Object)", "summary", "df-generated"] + - ["my.qltest.external", "Library", "apiStepArgQualGeneratedIgnored", "(Object)", "summary", "manual"] diff --git a/java/ql/test/library-tests/dataflow/external-models/stubs/Library.java b/java/ql/test/library-tests/dataflow/external-models/stubs/Library.java new file mode 100644 index 00000000000..2515c8aebfa --- /dev/null +++ b/java/ql/test/library-tests/dataflow/external-models/stubs/Library.java @@ -0,0 +1,23 @@ +package my.qltest.external; + +public class Library { + public Object apiStepArgResGenerated(Object x) { + return null; + } + + public Object apiStepArgResGeneratedIgnored(Object x, Object y) { + return null; + } + + public Object apiStepArgQualGenerated(Object x) { + return null; + } + + public Object apiStepArgQualGeneratedIgnored(Object x) { + return null; + } + + public Object id(Object x) { + return null; + } +} diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected index 5a5618355c0..9031c242a1c 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected +++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected @@ -1,14 +1,14 @@ models -| 1 | Summary: java.nio; CharBuffer; true; wrap; (char[]); ; Argument[0]; ReturnValue; taint; df-generated | -| 2 | Summary: java.io; Reader; true; read; ; ; Argument[this]; Argument[0]; taint; manual | -| 3 | Summary: java.io; StringReader; false; StringReader; ; ; Argument[0]; Argument[this]; taint; manual | -| 4 | Summary: java.lang; Appendable; true; append; ; ; Argument[0]; Argument[this]; taint; manual | -| 5 | Summary: java.lang; CharSequence; true; subSequence; ; ; Argument[this]; ReturnValue; taint; manual | -| 6 | Summary: java.lang; CharSequence; true; toString; ; ; Argument[this]; ReturnValue; taint; manual | -| 7 | Summary: java.lang; Iterable; true; iterator; (); ; Argument[this].Element; ReturnValue.Element; value; manual | -| 8 | Summary: java.lang; String; false; toCharArray; ; ; Argument[this]; ReturnValue; taint; manual | -| 9 | Summary: java.lang; StringBuffer; true; StringBuffer; (String); ; Argument[0]; Argument[this]; taint; manual | -| 10 | Summary: java.lang; StringBuilder; true; StringBuilder; ; ; Argument[0]; Argument[this]; taint; manual | +| 1 | Summary: java.io; Reader; true; read; ; ; Argument[this]; Argument[0]; taint; manual | +| 2 | Summary: java.io; StringReader; false; StringReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 3 | Summary: java.lang; Appendable; true; append; ; ; Argument[0]; Argument[this]; taint; manual | +| 4 | Summary: java.lang; CharSequence; true; subSequence; ; ; Argument[this]; ReturnValue; taint; manual | +| 5 | Summary: java.lang; CharSequence; true; toString; ; ; Argument[this]; ReturnValue; taint; manual | +| 6 | Summary: java.lang; Iterable; true; iterator; (); ; Argument[this].Element; ReturnValue.Element; value; manual | +| 7 | Summary: java.lang; String; false; toCharArray; ; ; Argument[this]; ReturnValue; taint; manual | +| 8 | Summary: java.lang; StringBuffer; true; StringBuffer; (String); ; Argument[0]; Argument[this]; taint; manual | +| 9 | Summary: java.lang; StringBuilder; true; StringBuilder; ; ; Argument[0]; Argument[this]; taint; manual | +| 10 | Summary: java.nio; CharBuffer; true; wrap; (char[]); ; Argument[0]; ReturnValue; taint; manual | | 11 | Summary: java.util; Collection; true; add; ; ; Argument[0]; Argument[this].Element; value; manual | | 12 | Summary: java.util; Dictionary; true; put; (Object,Object); ; Argument[1]; Argument[this].MapValue; value; manual | | 13 | Summary: java.util; Iterator; true; next; ; ; Argument[this].Element; ReturnValue; value; manual | @@ -945,234 +945,234 @@ edges | RegExUtilsTest.java:27:57:27:63 | taint(...) : String | RegExUtilsTest.java:27:10:27:64 | replacePattern(...) | provenance | MaD:78 | | StrBuilderTest.java:17:28:17:50 | new StrBuilder(...) : StrBuilder | StrBuilderTest.java:17:58:17:62 | cons1 : StrBuilder | provenance | | | StrBuilderTest.java:17:43:17:49 | taint(...) : String | StrBuilderTest.java:17:28:17:50 | new StrBuilder(...) : StrBuilder | provenance | MaD:226 | -| StrBuilderTest.java:17:58:17:62 | cons1 : StrBuilder | StrBuilderTest.java:17:58:17:73 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:17:58:17:62 | cons1 : StrBuilder | StrBuilderTest.java:17:58:17:73 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:17:58:17:62 | cons1 : StrBuilder | StrBuilderTest.java:17:58:17:73 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:19:44:19:46 | sb1 [post update] : StrBuilder | StrBuilderTest.java:19:84:19:86 | sb1 : StrBuilder | provenance | | -| StrBuilderTest.java:19:55:19:61 | taint(...) : String | StrBuilderTest.java:19:55:19:75 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTest.java:19:55:19:61 | taint(...) : String | StrBuilderTest.java:19:55:19:75 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTest.java:19:55:19:75 | toCharArray(...) : char[] | StrBuilderTest.java:19:44:19:46 | sb1 [post update] : StrBuilder | provenance | MaD:228 | -| StrBuilderTest.java:19:84:19:86 | sb1 : StrBuilder | StrBuilderTest.java:19:84:19:97 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:19:84:19:86 | sb1 : StrBuilder | StrBuilderTest.java:19:84:19:97 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:19:84:19:86 | sb1 : StrBuilder | StrBuilderTest.java:19:84:19:97 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:20:44:20:46 | sb2 [post update] : StrBuilder | StrBuilderTest.java:20:90:20:92 | sb2 : StrBuilder | provenance | | -| StrBuilderTest.java:20:55:20:61 | taint(...) : String | StrBuilderTest.java:20:55:20:75 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTest.java:20:55:20:61 | taint(...) : String | StrBuilderTest.java:20:55:20:75 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTest.java:20:55:20:75 | toCharArray(...) : char[] | StrBuilderTest.java:20:44:20:46 | sb2 [post update] : StrBuilder | provenance | MaD:229 | -| StrBuilderTest.java:20:90:20:92 | sb2 : StrBuilder | StrBuilderTest.java:20:90:20:103 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:20:90:20:92 | sb2 : StrBuilder | StrBuilderTest.java:20:90:20:103 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:20:90:20:92 | sb2 : StrBuilder | StrBuilderTest.java:20:90:20:103 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:21:44:21:46 | sb3 [post update] : StrBuilder | StrBuilderTest.java:21:101:21:103 | sb3 : StrBuilder | provenance | | | StrBuilderTest.java:21:55:21:92 | wrap(...) : CharBuffer | StrBuilderTest.java:21:44:21:46 | sb3 [post update] : StrBuilder | provenance | MaD:241 | -| StrBuilderTest.java:21:71:21:77 | taint(...) : String | StrBuilderTest.java:21:71:21:91 | toCharArray(...) : char[] | provenance | MaD:8 | -| StrBuilderTest.java:21:71:21:91 | toCharArray(...) : char[] | StrBuilderTest.java:21:55:21:92 | wrap(...) : CharBuffer | provenance | MaD:1 | -| StrBuilderTest.java:21:101:21:103 | sb3 : StrBuilder | StrBuilderTest.java:21:101:21:114 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:21:71:21:77 | taint(...) : String | StrBuilderTest.java:21:71:21:91 | toCharArray(...) : char[] | provenance | MaD:7 | +| StrBuilderTest.java:21:71:21:91 | toCharArray(...) : char[] | StrBuilderTest.java:21:55:21:92 | wrap(...) : CharBuffer | provenance | MaD:10 | +| StrBuilderTest.java:21:101:21:103 | sb3 : StrBuilder | StrBuilderTest.java:21:101:21:114 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:21:101:21:103 | sb3 : StrBuilder | StrBuilderTest.java:21:101:21:114 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:22:44:22:46 | sb4 [post update] : StrBuilder | StrBuilderTest.java:22:107:22:109 | sb4 : StrBuilder | provenance | | | StrBuilderTest.java:22:55:22:92 | wrap(...) : CharBuffer | StrBuilderTest.java:22:44:22:46 | sb4 [post update] : StrBuilder | provenance | MaD:242 | -| StrBuilderTest.java:22:71:22:77 | taint(...) : String | StrBuilderTest.java:22:71:22:91 | toCharArray(...) : char[] | provenance | MaD:8 | -| StrBuilderTest.java:22:71:22:91 | toCharArray(...) : char[] | StrBuilderTest.java:22:55:22:92 | wrap(...) : CharBuffer | provenance | MaD:1 | -| StrBuilderTest.java:22:107:22:109 | sb4 : StrBuilder | StrBuilderTest.java:22:107:22:120 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:22:71:22:77 | taint(...) : String | StrBuilderTest.java:22:71:22:91 | toCharArray(...) : char[] | provenance | MaD:7 | +| StrBuilderTest.java:22:71:22:91 | toCharArray(...) : char[] | StrBuilderTest.java:22:55:22:92 | wrap(...) : CharBuffer | provenance | MaD:10 | +| StrBuilderTest.java:22:107:22:109 | sb4 : StrBuilder | StrBuilderTest.java:22:107:22:120 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:22:107:22:109 | sb4 : StrBuilder | StrBuilderTest.java:22:107:22:120 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:23:44:23:46 | sb5 [post update] : StrBuilder | StrBuilderTest.java:23:84:23:86 | sb5 : StrBuilder | provenance | | -| StrBuilderTest.java:23:55:23:75 | (...)... : String | StrBuilderTest.java:23:44:23:46 | sb5 [post update] : StrBuilder | provenance | MaD:4 | +| StrBuilderTest.java:23:55:23:75 | (...)... : String | StrBuilderTest.java:23:44:23:46 | sb5 [post update] : StrBuilder | provenance | MaD:3 | | StrBuilderTest.java:23:55:23:75 | (...)... : String | StrBuilderTest.java:23:44:23:46 | sb5 [post update] : StrBuilder | provenance | MaD:230 | | StrBuilderTest.java:23:69:23:75 | taint(...) : String | StrBuilderTest.java:23:55:23:75 | (...)... : String | provenance | | -| StrBuilderTest.java:23:84:23:86 | sb5 : StrBuilder | StrBuilderTest.java:23:84:23:97 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:23:84:23:86 | sb5 : StrBuilder | StrBuilderTest.java:23:84:23:97 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:23:84:23:86 | sb5 : StrBuilder | StrBuilderTest.java:23:84:23:97 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:24:44:24:46 | sb6 [post update] : StrBuilder | StrBuilderTest.java:24:90:24:92 | sb6 : StrBuilder | provenance | | -| StrBuilderTest.java:24:55:24:75 | (...)... : String | StrBuilderTest.java:24:44:24:46 | sb6 [post update] : StrBuilder | provenance | MaD:4 | +| StrBuilderTest.java:24:55:24:75 | (...)... : String | StrBuilderTest.java:24:44:24:46 | sb6 [post update] : StrBuilder | provenance | MaD:3 | | StrBuilderTest.java:24:55:24:75 | (...)... : String | StrBuilderTest.java:24:44:24:46 | sb6 [post update] : StrBuilder | provenance | MaD:231 | | StrBuilderTest.java:24:69:24:75 | taint(...) : String | StrBuilderTest.java:24:55:24:75 | (...)... : String | provenance | | -| StrBuilderTest.java:24:90:24:92 | sb6 : StrBuilder | StrBuilderTest.java:24:90:24:103 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:24:90:24:92 | sb6 : StrBuilder | StrBuilderTest.java:24:90:24:103 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:24:90:24:92 | sb6 : StrBuilder | StrBuilderTest.java:24:90:24:103 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:25:44:25:46 | sb7 [post update] : StrBuilder | StrBuilderTest.java:25:78:25:80 | sb7 : StrBuilder | provenance | | | StrBuilderTest.java:25:55:25:69 | (...)... : String | StrBuilderTest.java:25:44:25:46 | sb7 [post update] : StrBuilder | provenance | MaD:232 | | StrBuilderTest.java:25:63:25:69 | taint(...) : String | StrBuilderTest.java:25:55:25:69 | (...)... : String | provenance | | -| StrBuilderTest.java:25:78:25:80 | sb7 : StrBuilder | StrBuilderTest.java:25:78:25:91 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:25:78:25:80 | sb7 : StrBuilder | StrBuilderTest.java:25:78:25:91 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:25:78:25:80 | sb7 : StrBuilder | StrBuilderTest.java:25:78:25:91 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:27:50:27:54 | auxsb [post update] : StrBuilder | StrBuilderTest.java:28:59:28:63 | auxsb : StrBuilder | provenance | | | StrBuilderTest.java:27:63:27:69 | taint(...) : String | StrBuilderTest.java:27:50:27:54 | auxsb [post update] : StrBuilder | provenance | MaD:233 | | StrBuilderTest.java:28:48:28:50 | sb8 [post update] : StrBuilder | StrBuilderTest.java:28:72:28:74 | sb8 : StrBuilder | provenance | | | StrBuilderTest.java:28:59:28:63 | auxsb : StrBuilder | StrBuilderTest.java:28:48:28:50 | sb8 [post update] : StrBuilder | provenance | MaD:243 | -| StrBuilderTest.java:28:72:28:74 | sb8 : StrBuilder | StrBuilderTest.java:28:72:28:85 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:28:72:28:74 | sb8 : StrBuilder | StrBuilderTest.java:28:72:28:85 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:28:72:28:74 | sb8 : StrBuilder | StrBuilderTest.java:28:72:28:85 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:30:44:30:46 | sb9 [post update] : StrBuilder | StrBuilderTest.java:30:88:30:90 | sb9 : StrBuilder | provenance | | | StrBuilderTest.java:30:55:30:79 | new StringBuffer(...) : StringBuffer | StrBuilderTest.java:30:44:30:46 | sb9 [post update] : StrBuilder | provenance | MaD:237 | -| StrBuilderTest.java:30:72:30:78 | taint(...) : String | StrBuilderTest.java:30:55:30:79 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| StrBuilderTest.java:30:88:30:90 | sb9 : StrBuilder | StrBuilderTest.java:30:88:30:101 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:30:72:30:78 | taint(...) : String | StrBuilderTest.java:30:55:30:79 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| StrBuilderTest.java:30:88:30:90 | sb9 : StrBuilder | StrBuilderTest.java:30:88:30:101 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:30:88:30:90 | sb9 : StrBuilder | StrBuilderTest.java:30:88:30:101 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:31:45:31:48 | sb10 [post update] : StrBuilder | StrBuilderTest.java:31:96:31:99 | sb10 : StrBuilder | provenance | | | StrBuilderTest.java:31:57:31:81 | new StringBuffer(...) : StringBuffer | StrBuilderTest.java:31:45:31:48 | sb10 [post update] : StrBuilder | provenance | MaD:238 | -| StrBuilderTest.java:31:74:31:80 | taint(...) : String | StrBuilderTest.java:31:57:31:81 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| StrBuilderTest.java:31:96:31:99 | sb10 : StrBuilder | StrBuilderTest.java:31:96:31:110 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:31:74:31:80 | taint(...) : String | StrBuilderTest.java:31:57:31:81 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| StrBuilderTest.java:31:96:31:99 | sb10 : StrBuilder | StrBuilderTest.java:31:96:31:110 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:31:96:31:99 | sb10 : StrBuilder | StrBuilderTest.java:31:96:31:110 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:32:45:32:48 | sb11 [post update] : StrBuilder | StrBuilderTest.java:32:91:32:94 | sb11 : StrBuilder | provenance | | | StrBuilderTest.java:32:57:32:82 | new StringBuilder(...) : StringBuilder | StrBuilderTest.java:32:45:32:48 | sb11 [post update] : StrBuilder | provenance | MaD:239 | -| StrBuilderTest.java:32:75:32:81 | taint(...) : String | StrBuilderTest.java:32:57:32:82 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| StrBuilderTest.java:32:91:32:94 | sb11 : StrBuilder | StrBuilderTest.java:32:91:32:105 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:32:75:32:81 | taint(...) : String | StrBuilderTest.java:32:57:32:82 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| StrBuilderTest.java:32:91:32:94 | sb11 : StrBuilder | StrBuilderTest.java:32:91:32:105 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:32:91:32:94 | sb11 : StrBuilder | StrBuilderTest.java:32:91:32:105 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:33:45:33:48 | sb12 [post update] : StrBuilder | StrBuilderTest.java:33:97:33:100 | sb12 : StrBuilder | provenance | | | StrBuilderTest.java:33:57:33:82 | new StringBuilder(...) : StringBuilder | StrBuilderTest.java:33:45:33:48 | sb12 [post update] : StrBuilder | provenance | MaD:240 | -| StrBuilderTest.java:33:75:33:81 | taint(...) : String | StrBuilderTest.java:33:57:33:82 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| StrBuilderTest.java:33:97:33:100 | sb12 : StrBuilder | StrBuilderTest.java:33:97:33:111 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:33:75:33:81 | taint(...) : String | StrBuilderTest.java:33:57:33:82 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| StrBuilderTest.java:33:97:33:100 | sb12 : StrBuilder | StrBuilderTest.java:33:97:33:111 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:33:97:33:100 | sb12 : StrBuilder | StrBuilderTest.java:33:97:33:111 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:34:45:34:48 | sb13 [post update] : StrBuilder | StrBuilderTest.java:34:72:34:75 | sb13 : StrBuilder | provenance | | | StrBuilderTest.java:34:57:34:63 | taint(...) : String | StrBuilderTest.java:34:45:34:48 | sb13 [post update] : StrBuilder | provenance | MaD:233 | -| StrBuilderTest.java:34:72:34:75 | sb13 : StrBuilder | StrBuilderTest.java:34:72:34:86 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:34:72:34:75 | sb13 : StrBuilder | StrBuilderTest.java:34:72:34:86 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:34:72:34:75 | sb13 : StrBuilder | StrBuilderTest.java:34:72:34:86 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:35:45:35:48 | sb14 [post update] : StrBuilder | StrBuilderTest.java:35:78:35:81 | sb14 : StrBuilder | provenance | | | StrBuilderTest.java:35:57:35:63 | taint(...) : String | StrBuilderTest.java:35:45:35:48 | sb14 [post update] : StrBuilder | provenance | MaD:234 | -| StrBuilderTest.java:35:78:35:81 | sb14 : StrBuilder | StrBuilderTest.java:35:78:35:92 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:35:78:35:81 | sb14 : StrBuilder | StrBuilderTest.java:35:78:35:92 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:35:78:35:81 | sb14 : StrBuilder | StrBuilderTest.java:35:78:35:92 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:36:45:36:48 | sb15 [post update] : StrBuilder | StrBuilderTest.java:36:90:36:93 | sb15 : StrBuilder | provenance | | | StrBuilderTest.java:36:57:36:63 | taint(...) : String | StrBuilderTest.java:36:45:36:48 | sb15 [post update] : StrBuilder | provenance | MaD:235 | -| StrBuilderTest.java:36:90:36:93 | sb15 : StrBuilder | StrBuilderTest.java:36:90:36:104 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:36:90:36:93 | sb15 : StrBuilder | StrBuilderTest.java:36:90:36:104 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:36:90:36:93 | sb15 : StrBuilder | StrBuilderTest.java:36:90:36:104 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:37:45:37:48 | sb16 [post update] : StrBuilder | StrBuilderTest.java:37:97:37:100 | sb16 : StrBuilder | provenance | | | StrBuilderTest.java:37:45:37:89 | new ..[] { .. } : Object[] [[]] : String | StrBuilderTest.java:37:45:37:48 | sb16 [post update] : StrBuilder | provenance | MaD:236 | | StrBuilderTest.java:37:74:37:80 | taint(...) : String | StrBuilderTest.java:37:45:37:89 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| StrBuilderTest.java:37:97:37:100 | sb16 : StrBuilder | StrBuilderTest.java:37:97:37:111 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:37:97:37:100 | sb16 : StrBuilder | StrBuilderTest.java:37:97:37:111 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:37:97:37:100 | sb16 : StrBuilder | StrBuilderTest.java:37:97:37:111 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:40:13:40:23 | taintedList [post update] : ArrayList [] : String | StrBuilderTest.java:41:64:41:74 | taintedList : ArrayList [] : String | provenance | | | StrBuilderTest.java:40:13:40:23 | taintedList [post update] : ArrayList [] : String | StrBuilderTest.java:42:64:42:74 | taintedList : ArrayList [] : String | provenance | | | StrBuilderTest.java:40:29:40:35 | taint(...) : String | StrBuilderTest.java:40:13:40:23 | taintedList [post update] : ArrayList [] : String | provenance | MaD:11 | | StrBuilderTest.java:41:49:41:52 | sb17 [post update] : StrBuilder | StrBuilderTest.java:41:83:41:86 | sb17 : StrBuilder | provenance | | | StrBuilderTest.java:41:64:41:74 | taintedList : ArrayList [] : String | StrBuilderTest.java:41:49:41:52 | sb17 [post update] : StrBuilder | provenance | MaD:245 | -| StrBuilderTest.java:41:83:41:86 | sb17 : StrBuilder | StrBuilderTest.java:41:83:41:97 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:41:83:41:86 | sb17 : StrBuilder | StrBuilderTest.java:41:83:41:97 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:41:83:41:86 | sb17 : StrBuilder | StrBuilderTest.java:41:83:41:97 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:42:49:42:52 | sb18 [post update] : StrBuilder | StrBuilderTest.java:42:94:42:97 | sb18 : StrBuilder | provenance | | -| StrBuilderTest.java:42:64:42:74 | taintedList : ArrayList [] : String | StrBuilderTest.java:42:64:42:85 | iterator(...) : Iterator [] : String | provenance | MaD:7 | +| StrBuilderTest.java:42:64:42:74 | taintedList : ArrayList [] : String | StrBuilderTest.java:42:64:42:85 | iterator(...) : Iterator [] : String | provenance | MaD:6 | | StrBuilderTest.java:42:64:42:85 | iterator(...) : Iterator [] : String | StrBuilderTest.java:42:49:42:52 | sb18 [post update] : StrBuilder | provenance | MaD:246 | -| StrBuilderTest.java:42:94:42:97 | sb18 : StrBuilder | StrBuilderTest.java:42:94:42:108 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:42:94:42:97 | sb18 : StrBuilder | StrBuilderTest.java:42:94:42:108 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:42:94:42:97 | sb18 : StrBuilder | StrBuilderTest.java:42:94:42:108 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:44:45:44:48 | sb19 [post update] : StrBuilder | StrBuilderTest.java:44:84:44:87 | sb19 : StrBuilder | provenance | | | StrBuilderTest.java:44:45:44:76 | new ..[] { .. } : Object[] [[]] : String | StrBuilderTest.java:44:45:44:48 | sb19 [post update] : StrBuilder | provenance | MaD:247 | | StrBuilderTest.java:44:69:44:75 | taint(...) : String | StrBuilderTest.java:44:45:44:76 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| StrBuilderTest.java:44:84:44:87 | sb19 : StrBuilder | StrBuilderTest.java:44:84:44:98 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:44:84:44:87 | sb19 : StrBuilder | StrBuilderTest.java:44:84:44:98 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:44:84:44:87 | sb19 : StrBuilder | StrBuilderTest.java:44:84:44:98 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:45:45:45:48 | sb20 [post update] : StrBuilder | StrBuilderTest.java:45:84:45:87 | sb20 : StrBuilder | provenance | | | StrBuilderTest.java:45:45:45:76 | new ..[] { .. } : Object[] [[]] : String | StrBuilderTest.java:45:45:45:48 | sb20 [post update] : StrBuilder | provenance | MaD:247 | | StrBuilderTest.java:45:60:45:66 | taint(...) : String | StrBuilderTest.java:45:45:45:76 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| StrBuilderTest.java:45:84:45:87 | sb20 : StrBuilder | StrBuilderTest.java:45:84:45:98 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:45:84:45:87 | sb20 : StrBuilder | StrBuilderTest.java:45:84:45:98 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:45:84:45:87 | sb20 : StrBuilder | StrBuilderTest.java:45:84:45:98 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:46:45:46:48 | sb21 [post update] : StrBuilder | StrBuilderTest.java:46:97:46:100 | sb21 : StrBuilder | provenance | | | StrBuilderTest.java:46:74:46:80 | taint(...) : String | StrBuilderTest.java:46:45:46:48 | sb21 [post update] : StrBuilder | provenance | MaD:249 | -| StrBuilderTest.java:46:97:46:100 | sb21 : StrBuilder | StrBuilderTest.java:46:97:46:111 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:46:97:46:100 | sb21 : StrBuilder | StrBuilderTest.java:46:97:46:111 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:46:97:46:100 | sb21 : StrBuilder | StrBuilderTest.java:46:97:46:111 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:47:45:47:48 | sb22 [post update] : StrBuilder | StrBuilderTest.java:47:98:47:101 | sb22 : StrBuilder | provenance | | | StrBuilderTest.java:47:75:47:81 | taint(...) : String | StrBuilderTest.java:47:45:47:48 | sb22 [post update] : StrBuilder | provenance | MaD:251 | -| StrBuilderTest.java:47:98:47:101 | sb22 : StrBuilder | StrBuilderTest.java:47:98:47:112 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:47:98:47:101 | sb22 : StrBuilder | StrBuilderTest.java:47:98:47:112 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:47:98:47:101 | sb22 : StrBuilder | StrBuilderTest.java:47:98:47:112 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:48:45:48:48 | sb23 [post update] : StrBuilder | StrBuilderTest.java:48:88:48:91 | sb23 : StrBuilder | provenance | | -| StrBuilderTest.java:48:59:48:65 | taint(...) : String | StrBuilderTest.java:48:59:48:79 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTest.java:48:59:48:65 | taint(...) : String | StrBuilderTest.java:48:59:48:79 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTest.java:48:59:48:79 | toCharArray(...) : char[] | StrBuilderTest.java:48:45:48:48 | sb23 [post update] : StrBuilder | provenance | MaD:266 | -| StrBuilderTest.java:48:88:48:91 | sb23 : StrBuilder | StrBuilderTest.java:48:88:48:102 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:48:88:48:91 | sb23 : StrBuilder | StrBuilderTest.java:48:88:48:102 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:48:88:48:91 | sb23 : StrBuilder | StrBuilderTest.java:48:88:48:102 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:49:45:49:48 | sb24 [post update] : StrBuilder | StrBuilderTest.java:49:94:49:97 | sb24 : StrBuilder | provenance | | -| StrBuilderTest.java:49:59:49:65 | taint(...) : String | StrBuilderTest.java:49:59:49:79 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTest.java:49:59:49:65 | taint(...) : String | StrBuilderTest.java:49:59:49:79 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTest.java:49:59:49:79 | toCharArray(...) : char[] | StrBuilderTest.java:49:45:49:48 | sb24 [post update] : StrBuilder | provenance | MaD:267 | -| StrBuilderTest.java:49:94:49:97 | sb24 : StrBuilder | StrBuilderTest.java:49:94:49:108 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:49:94:49:97 | sb24 : StrBuilder | StrBuilderTest.java:49:94:49:108 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:49:94:49:97 | sb24 : StrBuilder | StrBuilderTest.java:49:94:49:108 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:50:45:50:48 | sb25 [post update] : StrBuilder | StrBuilderTest.java:50:82:50:85 | sb25 : StrBuilder | provenance | | | StrBuilderTest.java:50:59:50:73 | (...)... : String | StrBuilderTest.java:50:45:50:48 | sb25 [post update] : StrBuilder | provenance | MaD:268 | | StrBuilderTest.java:50:67:50:73 | taint(...) : String | StrBuilderTest.java:50:59:50:73 | (...)... : String | provenance | | -| StrBuilderTest.java:50:82:50:85 | sb25 : StrBuilder | StrBuilderTest.java:50:82:50:96 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:50:82:50:85 | sb25 : StrBuilder | StrBuilderTest.java:50:82:50:96 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:50:82:50:85 | sb25 : StrBuilder | StrBuilderTest.java:50:82:50:96 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:52:50:52:54 | auxsb [post update] : StrBuilder | StrBuilderTest.java:53:63:53:67 | auxsb : StrBuilder | provenance | | | StrBuilderTest.java:52:65:52:71 | taint(...) : String | StrBuilderTest.java:52:50:52:54 | auxsb [post update] : StrBuilder | provenance | MaD:269 | | StrBuilderTest.java:53:49:53:52 | sb26 [post update] : StrBuilder | StrBuilderTest.java:53:76:53:79 | sb26 : StrBuilder | provenance | | | StrBuilderTest.java:53:63:53:67 | auxsb : StrBuilder | StrBuilderTest.java:53:49:53:52 | sb26 [post update] : StrBuilder | provenance | MaD:277 | -| StrBuilderTest.java:53:76:53:79 | sb26 : StrBuilder | StrBuilderTest.java:53:76:53:90 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:53:76:53:79 | sb26 : StrBuilder | StrBuilderTest.java:53:76:53:90 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:53:76:53:79 | sb26 : StrBuilder | StrBuilderTest.java:53:76:53:90 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:55:45:55:48 | sb27 [post update] : StrBuilder | StrBuilderTest.java:55:92:55:95 | sb27 : StrBuilder | provenance | | | StrBuilderTest.java:55:59:55:83 | new StringBuffer(...) : StringBuffer | StrBuilderTest.java:55:45:55:48 | sb27 [post update] : StrBuilder | provenance | MaD:273 | -| StrBuilderTest.java:55:76:55:82 | taint(...) : String | StrBuilderTest.java:55:59:55:83 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| StrBuilderTest.java:55:92:55:95 | sb27 : StrBuilder | StrBuilderTest.java:55:92:55:106 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:55:76:55:82 | taint(...) : String | StrBuilderTest.java:55:59:55:83 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| StrBuilderTest.java:55:92:55:95 | sb27 : StrBuilder | StrBuilderTest.java:55:92:55:106 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:55:92:55:95 | sb27 : StrBuilder | StrBuilderTest.java:55:92:55:106 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:56:45:56:48 | sb28 [post update] : StrBuilder | StrBuilderTest.java:56:98:56:101 | sb28 : StrBuilder | provenance | | | StrBuilderTest.java:56:59:56:83 | new StringBuffer(...) : StringBuffer | StrBuilderTest.java:56:45:56:48 | sb28 [post update] : StrBuilder | provenance | MaD:274 | -| StrBuilderTest.java:56:76:56:82 | taint(...) : String | StrBuilderTest.java:56:59:56:83 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| StrBuilderTest.java:56:98:56:101 | sb28 : StrBuilder | StrBuilderTest.java:56:98:56:112 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:56:76:56:82 | taint(...) : String | StrBuilderTest.java:56:59:56:83 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| StrBuilderTest.java:56:98:56:101 | sb28 : StrBuilder | StrBuilderTest.java:56:98:56:112 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:56:98:56:101 | sb28 : StrBuilder | StrBuilderTest.java:56:98:56:112 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:57:45:57:48 | sb29 [post update] : StrBuilder | StrBuilderTest.java:57:93:57:96 | sb29 : StrBuilder | provenance | | | StrBuilderTest.java:57:59:57:84 | new StringBuilder(...) : StringBuilder | StrBuilderTest.java:57:45:57:48 | sb29 [post update] : StrBuilder | provenance | MaD:275 | -| StrBuilderTest.java:57:77:57:83 | taint(...) : String | StrBuilderTest.java:57:59:57:84 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| StrBuilderTest.java:57:93:57:96 | sb29 : StrBuilder | StrBuilderTest.java:57:93:57:107 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:57:77:57:83 | taint(...) : String | StrBuilderTest.java:57:59:57:84 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| StrBuilderTest.java:57:93:57:96 | sb29 : StrBuilder | StrBuilderTest.java:57:93:57:107 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:57:93:57:96 | sb29 : StrBuilder | StrBuilderTest.java:57:93:57:107 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:58:45:58:48 | sb30 [post update] : StrBuilder | StrBuilderTest.java:58:99:58:102 | sb30 : StrBuilder | provenance | | | StrBuilderTest.java:58:59:58:84 | new StringBuilder(...) : StringBuilder | StrBuilderTest.java:58:45:58:48 | sb30 [post update] : StrBuilder | provenance | MaD:276 | -| StrBuilderTest.java:58:77:58:83 | taint(...) : String | StrBuilderTest.java:58:59:58:84 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| StrBuilderTest.java:58:99:58:102 | sb30 : StrBuilder | StrBuilderTest.java:58:99:58:113 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:58:77:58:83 | taint(...) : String | StrBuilderTest.java:58:59:58:84 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| StrBuilderTest.java:58:99:58:102 | sb30 : StrBuilder | StrBuilderTest.java:58:99:58:113 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:58:99:58:102 | sb30 : StrBuilder | StrBuilderTest.java:58:99:58:113 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:59:45:59:48 | sb31 [post update] : StrBuilder | StrBuilderTest.java:59:74:59:77 | sb31 : StrBuilder | provenance | | | StrBuilderTest.java:59:59:59:65 | taint(...) : String | StrBuilderTest.java:59:45:59:48 | sb31 [post update] : StrBuilder | provenance | MaD:269 | -| StrBuilderTest.java:59:74:59:77 | sb31 : StrBuilder | StrBuilderTest.java:59:74:59:88 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:59:74:59:77 | sb31 : StrBuilder | StrBuilderTest.java:59:74:59:88 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:59:74:59:77 | sb31 : StrBuilder | StrBuilderTest.java:59:74:59:88 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:60:45:60:48 | sb32 [post update] : StrBuilder | StrBuilderTest.java:60:80:60:83 | sb32 : StrBuilder | provenance | | | StrBuilderTest.java:60:59:60:65 | taint(...) : String | StrBuilderTest.java:60:45:60:48 | sb32 [post update] : StrBuilder | provenance | MaD:270 | -| StrBuilderTest.java:60:80:60:83 | sb32 : StrBuilder | StrBuilderTest.java:60:80:60:94 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:60:80:60:83 | sb32 : StrBuilder | StrBuilderTest.java:60:80:60:94 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:60:80:60:83 | sb32 : StrBuilder | StrBuilderTest.java:60:80:60:94 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:61:45:61:48 | sb33 [post update] : StrBuilder | StrBuilderTest.java:61:92:61:95 | sb33 : StrBuilder | provenance | | | StrBuilderTest.java:61:59:61:65 | taint(...) : String | StrBuilderTest.java:61:45:61:48 | sb33 [post update] : StrBuilder | provenance | MaD:271 | -| StrBuilderTest.java:61:92:61:95 | sb33 : StrBuilder | StrBuilderTest.java:61:92:61:106 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:61:92:61:95 | sb33 : StrBuilder | StrBuilderTest.java:61:92:61:106 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:61:92:61:95 | sb33 : StrBuilder | StrBuilderTest.java:61:92:61:106 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:62:45:62:48 | sb34 [post update] : StrBuilder | StrBuilderTest.java:62:99:62:102 | sb34 : StrBuilder | provenance | | | StrBuilderTest.java:62:45:62:91 | new ..[] { .. } : Object[] [[]] : String | StrBuilderTest.java:62:45:62:48 | sb34 [post update] : StrBuilder | provenance | MaD:272 | | StrBuilderTest.java:62:76:62:82 | taint(...) : String | StrBuilderTest.java:62:45:62:91 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| StrBuilderTest.java:62:99:62:102 | sb34 : StrBuilder | StrBuilderTest.java:62:99:62:113 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:62:99:62:102 | sb34 : StrBuilder | StrBuilderTest.java:62:99:62:113 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:62:99:62:102 | sb34 : StrBuilder | StrBuilderTest.java:62:99:62:113 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:63:45:63:48 | sb35 [post update] : StrBuilder | StrBuilderTest.java:63:81:63:84 | sb35 : StrBuilder | provenance | | | StrBuilderTest.java:63:66:63:72 | taint(...) : String | StrBuilderTest.java:63:45:63:48 | sb35 [post update] : StrBuilder | provenance | MaD:256 | -| StrBuilderTest.java:63:81:63:84 | sb35 : StrBuilder | StrBuilderTest.java:63:81:63:95 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:63:81:63:84 | sb35 : StrBuilder | StrBuilderTest.java:63:81:63:95 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:63:81:63:84 | sb35 : StrBuilder | StrBuilderTest.java:63:81:63:95 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:64:45:64:48 | sb36 [post update] : StrBuilder | StrBuilderTest.java:64:84:64:87 | sb36 : StrBuilder | provenance | | | StrBuilderTest.java:64:66:64:72 | taint(...) : String | StrBuilderTest.java:64:45:64:48 | sb36 [post update] : StrBuilder | provenance | MaD:257 | -| StrBuilderTest.java:64:84:64:87 | sb36 : StrBuilder | StrBuilderTest.java:64:84:64:98 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:64:84:64:87 | sb36 : StrBuilder | StrBuilderTest.java:64:84:64:98 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:64:84:64:87 | sb36 : StrBuilder | StrBuilderTest.java:64:84:64:98 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:65:45:65:48 | sb37 [post update] : StrBuilder | StrBuilderTest.java:65:92:65:95 | sb37 : StrBuilder | provenance | | | StrBuilderTest.java:65:66:65:72 | taint(...) : String | StrBuilderTest.java:65:45:65:48 | sb37 [post update] : StrBuilder | provenance | MaD:258 | -| StrBuilderTest.java:65:92:65:95 | sb37 : StrBuilder | StrBuilderTest.java:65:92:65:106 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:65:92:65:95 | sb37 : StrBuilder | StrBuilderTest.java:65:92:65:106 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:65:92:65:95 | sb37 : StrBuilder | StrBuilderTest.java:65:92:65:106 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:66:45:66:48 | sb38 [post update] : StrBuilder | StrBuilderTest.java:66:85:66:88 | sb38 : StrBuilder | provenance | | | StrBuilderTest.java:66:70:66:76 | taint(...) : String | StrBuilderTest.java:66:45:66:48 | sb38 [post update] : StrBuilder | provenance | MaD:258 | -| StrBuilderTest.java:66:85:66:88 | sb38 : StrBuilder | StrBuilderTest.java:66:85:66:99 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:66:85:66:88 | sb38 : StrBuilder | StrBuilderTest.java:66:85:66:99 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:66:85:66:88 | sb38 : StrBuilder | StrBuilderTest.java:66:85:66:99 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:68:50:68:54 | auxsb [post update] : StrBuilder | StrBuilderTest.java:69:49:69:53 | auxsb : StrBuilder | provenance | | | StrBuilderTest.java:68:65:68:71 | taint(...) : String | StrBuilderTest.java:68:50:68:54 | auxsb [post update] : StrBuilder | provenance | MaD:269 | | StrBuilderTest.java:69:49:69:53 | auxsb : StrBuilder | StrBuilderTest.java:69:64:69:67 | sb39 [post update] : StrBuilder | provenance | MaD:259 | | StrBuilderTest.java:69:64:69:67 | sb39 [post update] : StrBuilder | StrBuilderTest.java:69:76:69:79 | sb39 : StrBuilder | provenance | | -| StrBuilderTest.java:69:76:69:79 | sb39 : StrBuilder | StrBuilderTest.java:69:76:69:90 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:69:76:69:79 | sb39 : StrBuilder | StrBuilderTest.java:69:76:69:90 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:69:76:69:79 | sb39 : StrBuilder | StrBuilderTest.java:69:76:69:90 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:73:13:73:23 | taintedList [post update] : ArrayList [] : String | StrBuilderTest.java:74:75:74:85 | taintedList : ArrayList [] : String | provenance | | | StrBuilderTest.java:73:13:73:23 | taintedList [post update] : ArrayList [] : String | StrBuilderTest.java:75:75:75:85 | taintedList : ArrayList [] : String | provenance | | | StrBuilderTest.java:73:29:73:35 | taint(...) : String | StrBuilderTest.java:73:13:73:23 | taintedList [post update] : ArrayList [] : String | provenance | MaD:11 | | StrBuilderTest.java:74:49:74:52 | sb40 [post update] : StrBuilder | StrBuilderTest.java:74:100:74:103 | sb40 : StrBuilder | provenance | | | StrBuilderTest.java:74:75:74:85 | taintedList : ArrayList [] : String | StrBuilderTest.java:74:49:74:52 | sb40 [post update] : StrBuilder | provenance | MaD:262 | -| StrBuilderTest.java:74:100:74:103 | sb40 : StrBuilder | StrBuilderTest.java:74:100:74:114 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:74:100:74:103 | sb40 : StrBuilder | StrBuilderTest.java:74:100:74:114 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:74:100:74:103 | sb40 : StrBuilder | StrBuilderTest.java:74:100:74:114 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:75:49:75:52 | sb41 [post update] : StrBuilder | StrBuilderTest.java:75:111:75:114 | sb41 : StrBuilder | provenance | | -| StrBuilderTest.java:75:75:75:85 | taintedList : ArrayList [] : String | StrBuilderTest.java:75:75:75:96 | iterator(...) : Iterator [] : String | provenance | MaD:7 | +| StrBuilderTest.java:75:75:75:85 | taintedList : ArrayList [] : String | StrBuilderTest.java:75:75:75:96 | iterator(...) : Iterator [] : String | provenance | MaD:6 | | StrBuilderTest.java:75:75:75:96 | iterator(...) : Iterator [] : String | StrBuilderTest.java:75:49:75:52 | sb41 [post update] : StrBuilder | provenance | MaD:263 | -| StrBuilderTest.java:75:111:75:114 | sb41 : StrBuilder | StrBuilderTest.java:75:111:75:125 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:75:111:75:114 | sb41 : StrBuilder | StrBuilderTest.java:75:111:75:125 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:75:111:75:114 | sb41 : StrBuilder | StrBuilderTest.java:75:111:75:125 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:77:49:77:52 | sb42 [post update] : StrBuilder | StrBuilderTest.java:77:105:77:108 | sb42 : StrBuilder | provenance | | | StrBuilderTest.java:77:90:77:96 | taint(...) : String | StrBuilderTest.java:77:49:77:52 | sb42 [post update] : StrBuilder | provenance | MaD:261 | -| StrBuilderTest.java:77:105:77:108 | sb42 : StrBuilder | StrBuilderTest.java:77:105:77:119 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:77:105:77:108 | sb42 : StrBuilder | StrBuilderTest.java:77:105:77:119 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:77:105:77:108 | sb42 : StrBuilder | StrBuilderTest.java:77:105:77:119 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:78:49:78:52 | sb43 [post update] : StrBuilder | StrBuilderTest.java:78:116:78:119 | sb43 : StrBuilder | provenance | | | StrBuilderTest.java:78:101:78:107 | taint(...) : String | StrBuilderTest.java:78:49:78:52 | sb43 [post update] : StrBuilder | provenance | MaD:261 | -| StrBuilderTest.java:78:116:78:119 | sb43 : StrBuilder | StrBuilderTest.java:78:116:78:130 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:78:116:78:119 | sb43 : StrBuilder | StrBuilderTest.java:78:116:78:130 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:78:116:78:119 | sb43 : StrBuilder | StrBuilderTest.java:78:116:78:130 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:79:37:79:60 | {...} : String[] [[]] : String | StrBuilderTest.java:81:75:81:86 | taintedArray : String[] [[]] : String | provenance | | | StrBuilderTest.java:79:52:79:58 | taint(...) : String | StrBuilderTest.java:79:37:79:60 | {...} : String[] [[]] : String | provenance | | | StrBuilderTest.java:81:49:81:52 | sb44 [post update] : StrBuilder | StrBuilderTest.java:81:101:81:104 | sb44 : StrBuilder | provenance | | | StrBuilderTest.java:81:75:81:86 | taintedArray : String[] [[]] : String | StrBuilderTest.java:81:49:81:52 | sb44 [post update] : StrBuilder | provenance | MaD:264 | -| StrBuilderTest.java:81:101:81:104 | sb44 : StrBuilder | StrBuilderTest.java:81:101:81:115 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:81:101:81:104 | sb44 : StrBuilder | StrBuilderTest.java:81:101:81:115 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:81:101:81:104 | sb44 : StrBuilder | StrBuilderTest.java:81:101:81:115 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:82:49:82:52 | sb45 [post update] : StrBuilder | StrBuilderTest.java:82:106:82:109 | sb45 : StrBuilder | provenance | | | StrBuilderTest.java:82:91:82:97 | taint(...) : String | StrBuilderTest.java:82:49:82:52 | sb45 [post update] : StrBuilder | provenance | MaD:261 | -| StrBuilderTest.java:82:106:82:109 | sb45 : StrBuilder | StrBuilderTest.java:82:106:82:120 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:82:106:82:109 | sb45 : StrBuilder | StrBuilderTest.java:82:106:82:120 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:82:106:82:109 | sb45 : StrBuilder | StrBuilderTest.java:82:106:82:120 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:85:49:85:52 | sb46 [post update] : StrBuilder | StrBuilderTest.java:87:13:87:16 | sb46 : StrBuilder | provenance | | | StrBuilderTest.java:85:61:85:67 | taint(...) : String | StrBuilderTest.java:85:49:85:52 | sb46 [post update] : StrBuilder | provenance | MaD:233 | | StrBuilderTest.java:87:13:87:16 | sb46 : StrBuilder | StrBuilderTest.java:87:13:87:27 | asReader(...) : Reader | provenance | MaD:278 | -| StrBuilderTest.java:87:13:87:27 | asReader(...) : Reader | StrBuilderTest.java:87:34:87:39 | target [post update] : char[] | provenance | MaD:2 | +| StrBuilderTest.java:87:13:87:27 | asReader(...) : Reader | StrBuilderTest.java:87:34:87:39 | target [post update] : char[] | provenance | MaD:1 | | StrBuilderTest.java:87:34:87:39 | target [post update] : char[] | StrBuilderTest.java:88:18:88:23 | target | provenance | | | StrBuilderTest.java:90:45:90:48 | sb47 [post update] : StrBuilder | StrBuilderTest.java:90:72:90:75 | sb47 : StrBuilder | provenance | | | StrBuilderTest.java:90:57:90:63 | taint(...) : String | StrBuilderTest.java:90:45:90:48 | sb47 [post update] : StrBuilder | provenance | MaD:233 | @@ -1194,23 +1194,23 @@ edges | StrBuilderTest.java:102:13:102:16 | sb51 : StrBuilder | StrBuilderTest.java:102:33:102:38 | target [post update] : char[] | provenance | MaD:288 | | StrBuilderTest.java:102:33:102:38 | target [post update] : char[] | StrBuilderTest.java:103:18:103:23 | target | provenance | | | StrBuilderTest.java:105:45:105:48 | sb52 [post update] : StrBuilder | StrBuilderTest.java:105:89:105:92 | sb52 : StrBuilder | provenance | | -| StrBuilderTest.java:105:60:105:66 | taint(...) : String | StrBuilderTest.java:105:60:105:80 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTest.java:105:60:105:66 | taint(...) : String | StrBuilderTest.java:105:60:105:80 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTest.java:105:60:105:80 | toCharArray(...) : char[] | StrBuilderTest.java:105:45:105:48 | sb52 [post update] : StrBuilder | provenance | MaD:290 | -| StrBuilderTest.java:105:89:105:92 | sb52 : StrBuilder | StrBuilderTest.java:105:89:105:103 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:105:89:105:92 | sb52 : StrBuilder | StrBuilderTest.java:105:89:105:103 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:105:89:105:92 | sb52 : StrBuilder | StrBuilderTest.java:105:89:105:103 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:106:45:106:48 | sb53 [post update] : StrBuilder | StrBuilderTest.java:106:95:106:98 | sb53 : StrBuilder | provenance | | -| StrBuilderTest.java:106:60:106:66 | taint(...) : String | StrBuilderTest.java:106:60:106:80 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTest.java:106:60:106:66 | taint(...) : String | StrBuilderTest.java:106:60:106:80 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTest.java:106:60:106:80 | toCharArray(...) : char[] | StrBuilderTest.java:106:45:106:48 | sb53 [post update] : StrBuilder | provenance | MaD:290 | -| StrBuilderTest.java:106:95:106:98 | sb53 : StrBuilder | StrBuilderTest.java:106:95:106:109 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:106:95:106:98 | sb53 : StrBuilder | StrBuilderTest.java:106:95:106:109 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:106:95:106:98 | sb53 : StrBuilder | StrBuilderTest.java:106:95:106:109 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:107:45:107:48 | sb54 [post update] : StrBuilder | StrBuilderTest.java:107:75:107:78 | sb54 : StrBuilder | provenance | | | StrBuilderTest.java:107:60:107:66 | taint(...) : String | StrBuilderTest.java:107:45:107:48 | sb54 [post update] : StrBuilder | provenance | MaD:290 | -| StrBuilderTest.java:107:75:107:78 | sb54 : StrBuilder | StrBuilderTest.java:107:75:107:89 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:107:75:107:78 | sb54 : StrBuilder | StrBuilderTest.java:107:75:107:89 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:107:75:107:78 | sb54 : StrBuilder | StrBuilderTest.java:107:75:107:89 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:108:45:108:48 | sb55 [post update] : StrBuilder | StrBuilderTest.java:108:83:108:86 | sb55 : StrBuilder | provenance | | | StrBuilderTest.java:108:60:108:74 | (...)... : String | StrBuilderTest.java:108:45:108:48 | sb55 [post update] : StrBuilder | provenance | MaD:290 | | StrBuilderTest.java:108:68:108:74 | taint(...) : String | StrBuilderTest.java:108:60:108:74 | (...)... : String | provenance | | -| StrBuilderTest.java:108:83:108:86 | sb55 : StrBuilder | StrBuilderTest.java:108:83:108:97 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:108:83:108:86 | sb55 : StrBuilder | StrBuilderTest.java:108:83:108:97 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:108:83:108:86 | sb55 : StrBuilder | StrBuilderTest.java:108:83:108:97 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:109:45:109:48 | sb56 [post update] : StrBuilder | StrBuilderTest.java:109:72:109:75 | sb56 : StrBuilder | provenance | | | StrBuilderTest.java:109:57:109:63 | taint(...) : String | StrBuilderTest.java:109:45:109:48 | sb56 [post update] : StrBuilder | provenance | MaD:233 | @@ -1219,41 +1219,41 @@ edges | StrBuilderTest.java:110:57:110:63 | taint(...) : String | StrBuilderTest.java:110:45:110:48 | sb57 [post update] : StrBuilder | provenance | MaD:233 | | StrBuilderTest.java:110:72:110:75 | sb57 : StrBuilder | StrBuilderTest.java:110:72:110:91 | midString(...) | provenance | MaD:292 | | StrBuilderTest.java:112:35:112:59 | new StringReader(...) : StringReader | StrBuilderTest.java:113:63:113:68 | reader : StringReader | provenance | | -| StrBuilderTest.java:112:52:112:58 | taint(...) : String | StrBuilderTest.java:112:35:112:59 | new StringReader(...) : StringReader | provenance | MaD:3 | +| StrBuilderTest.java:112:52:112:58 | taint(...) : String | StrBuilderTest.java:112:35:112:59 | new StringReader(...) : StringReader | provenance | MaD:2 | | StrBuilderTest.java:113:49:113:52 | sb58 [post update] : StrBuilder | StrBuilderTest.java:113:77:113:80 | sb58 : StrBuilder | provenance | | | StrBuilderTest.java:113:63:113:68 | reader : StringReader | StrBuilderTest.java:113:49:113:52 | sb58 [post update] : StrBuilder | provenance | MaD:294 | -| StrBuilderTest.java:113:77:113:80 | sb58 : StrBuilder | StrBuilderTest.java:113:77:113:91 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:113:77:113:80 | sb58 : StrBuilder | StrBuilderTest.java:113:77:113:91 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:113:77:113:80 | sb58 : StrBuilder | StrBuilderTest.java:113:77:113:91 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:115:45:115:48 | sb59 [post update] : StrBuilder | StrBuilderTest.java:115:79:115:82 | sb59 : StrBuilder | provenance | | | StrBuilderTest.java:115:64:115:70 | taint(...) : String | StrBuilderTest.java:115:45:115:48 | sb59 [post update] : StrBuilder | provenance | MaD:296 | -| StrBuilderTest.java:115:79:115:82 | sb59 : StrBuilder | StrBuilderTest.java:115:79:115:93 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:115:79:115:82 | sb59 : StrBuilder | StrBuilderTest.java:115:79:115:93 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:115:79:115:82 | sb59 : StrBuilder | StrBuilderTest.java:115:79:115:93 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:116:45:116:48 | sb60 [post update] : StrBuilder | StrBuilderTest.java:116:88:116:91 | sb60 : StrBuilder | provenance | | | StrBuilderTest.java:116:64:116:70 | taint(...) : String | StrBuilderTest.java:116:45:116:48 | sb60 [post update] : StrBuilder | provenance | MaD:297 | -| StrBuilderTest.java:116:88:116:91 | sb60 : StrBuilder | StrBuilderTest.java:116:88:116:102 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:116:88:116:91 | sb60 : StrBuilder | StrBuilderTest.java:116:88:116:102 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:116:88:116:91 | sb60 : StrBuilder | StrBuilderTest.java:116:88:116:102 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:117:45:117:48 | sb61 [post update] : StrBuilder | StrBuilderTest.java:117:94:117:97 | sb61 : StrBuilder | provenance | | | StrBuilderTest.java:117:79:117:85 | taint(...) : String | StrBuilderTest.java:117:45:117:48 | sb61 [post update] : StrBuilder | provenance | MaD:299 | -| StrBuilderTest.java:117:94:117:97 | sb61 : StrBuilder | StrBuilderTest.java:117:94:117:108 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:117:94:117:97 | sb61 : StrBuilder | StrBuilderTest.java:117:94:117:108 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:117:94:117:97 | sb61 : StrBuilder | StrBuilderTest.java:117:94:117:108 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:118:45:118:48 | sb62 [post update] : StrBuilder | StrBuilderTest.java:118:86:118:89 | sb62 : StrBuilder | provenance | | | StrBuilderTest.java:118:71:118:77 | taint(...) : String | StrBuilderTest.java:118:45:118:48 | sb62 [post update] : StrBuilder | provenance | MaD:299 | -| StrBuilderTest.java:118:86:118:89 | sb62 : StrBuilder | StrBuilderTest.java:118:86:118:100 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:118:86:118:89 | sb62 : StrBuilder | StrBuilderTest.java:118:86:118:100 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:118:86:118:89 | sb62 : StrBuilder | StrBuilderTest.java:118:86:118:100 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:120:45:120:48 | sb64 [post update] : StrBuilder | StrBuilderTest.java:120:96:120:99 | sb64 : StrBuilder | provenance | | | StrBuilderTest.java:120:81:120:87 | taint(...) : String | StrBuilderTest.java:120:45:120:48 | sb64 [post update] : StrBuilder | provenance | MaD:301 | -| StrBuilderTest.java:120:96:120:99 | sb64 : StrBuilder | StrBuilderTest.java:120:96:120:110 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:120:96:120:99 | sb64 : StrBuilder | StrBuilderTest.java:120:96:120:110 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:120:96:120:99 | sb64 : StrBuilder | StrBuilderTest.java:120:96:120:110 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:121:45:121:48 | sb65 [post update] : StrBuilder | StrBuilderTest.java:121:88:121:91 | sb65 : StrBuilder | provenance | | | StrBuilderTest.java:121:73:121:79 | taint(...) : String | StrBuilderTest.java:121:45:121:48 | sb65 [post update] : StrBuilder | provenance | MaD:301 | -| StrBuilderTest.java:121:88:121:91 | sb65 : StrBuilder | StrBuilderTest.java:121:88:121:102 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:121:88:121:91 | sb65 : StrBuilder | StrBuilderTest.java:121:88:121:102 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:121:88:121:91 | sb65 : StrBuilder | StrBuilderTest.java:121:88:121:102 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:123:45:123:48 | sb67 [post update] : StrBuilder | StrBuilderTest.java:123:72:123:75 | sb67 : StrBuilder | provenance | | | StrBuilderTest.java:123:57:123:63 | taint(...) : String | StrBuilderTest.java:123:45:123:48 | sb67 [post update] : StrBuilder | provenance | MaD:233 | | StrBuilderTest.java:123:72:123:75 | sb67 : StrBuilder | StrBuilderTest.java:123:72:123:90 | rightString(...) | provenance | MaD:303 | | StrBuilderTest.java:124:45:124:48 | sb68 [post update] : StrBuilder | StrBuilderTest.java:124:72:124:75 | sb68 : StrBuilder | provenance | | | StrBuilderTest.java:124:57:124:63 | taint(...) : String | StrBuilderTest.java:124:45:124:48 | sb68 [post update] : StrBuilder | provenance | MaD:233 | -| StrBuilderTest.java:124:72:124:75 | sb68 : StrBuilder | StrBuilderTest.java:124:72:124:93 | subSequence(...) | provenance | MaD:5 | +| StrBuilderTest.java:124:72:124:75 | sb68 : StrBuilder | StrBuilderTest.java:124:72:124:93 | subSequence(...) | provenance | MaD:4 | | StrBuilderTest.java:124:72:124:75 | sb68 : StrBuilder | StrBuilderTest.java:124:72:124:93 | subSequence(...) | provenance | MaD:308 | | StrBuilderTest.java:125:45:125:48 | sb69 [post update] : StrBuilder | StrBuilderTest.java:125:72:125:75 | sb69 : StrBuilder | provenance | | | StrBuilderTest.java:125:57:125:63 | taint(...) : String | StrBuilderTest.java:125:45:125:48 | sb69 [post update] : StrBuilder | provenance | MaD:233 | @@ -1275,18 +1275,18 @@ edges | StrBuilderTest.java:130:72:130:75 | sb74 : StrBuilder | StrBuilderTest.java:130:72:130:93 | toStringBuilder(...) | provenance | MaD:313 | | StrBuilderTest.java:135:14:135:58 | append(...) : StrBuilder | StrBuilderTest.java:135:14:135:82 | append(...) : StrBuilder | provenance | MaD:227 | | StrBuilderTest.java:135:14:135:58 | append(...) : StrBuilder | StrBuilderTest.java:135:14:135:82 | append(...) : StrBuilder | provenance | ValuePreservingMethod | -| StrBuilderTest.java:135:14:135:82 | append(...) : StrBuilder | StrBuilderTest.java:135:14:135:93 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:135:14:135:82 | append(...) : StrBuilder | StrBuilderTest.java:135:14:135:93 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:135:14:135:82 | append(...) : StrBuilder | StrBuilderTest.java:135:14:135:93 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:135:51:135:57 | taint(...) : String | StrBuilderTest.java:135:14:135:58 | append(...) : StrBuilder | provenance | MaD:233+MaD:227 | | StrBuilderTest.java:138:9:138:45 | append(...) [post update] : StrBuilder | StrBuilderTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | provenance | MaD:227 | | StrBuilderTest.java:138:9:138:45 | append(...) [post update] : StrBuilder | StrBuilderTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | provenance | ValuePreservingMethod | | StrBuilderTest.java:138:54:138:60 | taint(...) : String | StrBuilderTest.java:138:9:138:45 | append(...) [post update] : StrBuilder | provenance | MaD:233 | -| StrBuilderTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | StrBuilderTest.java:139:14:139:42 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | StrBuilderTest.java:139:14:139:42 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | StrBuilderTest.java:139:14:139:42 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:143:9:143:46 | append(...) [post update] : StrBuilder | StrBuilderTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | provenance | MaD:227 | | StrBuilderTest.java:143:9:143:46 | append(...) [post update] : StrBuilder | StrBuilderTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | provenance | ValuePreservingMethod | | StrBuilderTest.java:143:55:143:61 | taint(...) : String | StrBuilderTest.java:143:9:143:46 | append(...) [post update] : StrBuilder | provenance | MaD:233 | -| StrBuilderTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | StrBuilderTest.java:144:14:144:43 | toString(...) | provenance | MaD:6 | +| StrBuilderTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | StrBuilderTest.java:144:14:144:43 | toString(...) | provenance | MaD:5 | | StrBuilderTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | StrBuilderTest.java:144:14:144:43 | toString(...) | provenance | MaD:311 | | StrBuilderTest.java:147:43:147:65 | new StrBuilder(...) : StrBuilder | StrBuilderTest.java:148:14:148:33 | fluentAllMethodsTest : StrBuilder | provenance | | | StrBuilderTest.java:147:43:147:65 | new StrBuilder(...) : StrBuilder | StrBuilderTest.java:148:14:149:23 | append(...) : StrBuilder | provenance | ValuePreservingMethod | @@ -1672,234 +1672,234 @@ edges | StrBuilderTest.java:205:17:205:23 | taint(...) : String | StrBuilderTest.java:178:9:204:15 | trim(...) [post update] : StrBuilder | provenance | MaD:233 | | StrBuilderTextTest.java:17:28:17:50 | new StrBuilder(...) : StrBuilder | StrBuilderTextTest.java:17:58:17:62 | cons1 : StrBuilder | provenance | | | StrBuilderTextTest.java:17:43:17:49 | taint(...) : String | StrBuilderTextTest.java:17:28:17:50 | new StrBuilder(...) : StrBuilder | provenance | MaD:418 | -| StrBuilderTextTest.java:17:58:17:62 | cons1 : StrBuilder | StrBuilderTextTest.java:17:58:17:73 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:17:58:17:62 | cons1 : StrBuilder | StrBuilderTextTest.java:17:58:17:73 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:17:58:17:62 | cons1 : StrBuilder | StrBuilderTextTest.java:17:58:17:73 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:19:44:19:46 | sb1 [post update] : StrBuilder | StrBuilderTextTest.java:19:84:19:86 | sb1 : StrBuilder | provenance | | -| StrBuilderTextTest.java:19:55:19:61 | taint(...) : String | StrBuilderTextTest.java:19:55:19:75 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTextTest.java:19:55:19:61 | taint(...) : String | StrBuilderTextTest.java:19:55:19:75 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTextTest.java:19:55:19:75 | toCharArray(...) : char[] | StrBuilderTextTest.java:19:44:19:46 | sb1 [post update] : StrBuilder | provenance | MaD:420 | -| StrBuilderTextTest.java:19:84:19:86 | sb1 : StrBuilder | StrBuilderTextTest.java:19:84:19:97 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:19:84:19:86 | sb1 : StrBuilder | StrBuilderTextTest.java:19:84:19:97 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:19:84:19:86 | sb1 : StrBuilder | StrBuilderTextTest.java:19:84:19:97 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:20:44:20:46 | sb2 [post update] : StrBuilder | StrBuilderTextTest.java:20:90:20:92 | sb2 : StrBuilder | provenance | | -| StrBuilderTextTest.java:20:55:20:61 | taint(...) : String | StrBuilderTextTest.java:20:55:20:75 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTextTest.java:20:55:20:61 | taint(...) : String | StrBuilderTextTest.java:20:55:20:75 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTextTest.java:20:55:20:75 | toCharArray(...) : char[] | StrBuilderTextTest.java:20:44:20:46 | sb2 [post update] : StrBuilder | provenance | MaD:421 | -| StrBuilderTextTest.java:20:90:20:92 | sb2 : StrBuilder | StrBuilderTextTest.java:20:90:20:103 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:20:90:20:92 | sb2 : StrBuilder | StrBuilderTextTest.java:20:90:20:103 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:20:90:20:92 | sb2 : StrBuilder | StrBuilderTextTest.java:20:90:20:103 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:21:44:21:46 | sb3 [post update] : StrBuilder | StrBuilderTextTest.java:21:101:21:103 | sb3 : StrBuilder | provenance | | | StrBuilderTextTest.java:21:55:21:92 | wrap(...) : CharBuffer | StrBuilderTextTest.java:21:44:21:46 | sb3 [post update] : StrBuilder | provenance | MaD:433 | -| StrBuilderTextTest.java:21:71:21:77 | taint(...) : String | StrBuilderTextTest.java:21:71:21:91 | toCharArray(...) : char[] | provenance | MaD:8 | -| StrBuilderTextTest.java:21:71:21:91 | toCharArray(...) : char[] | StrBuilderTextTest.java:21:55:21:92 | wrap(...) : CharBuffer | provenance | MaD:1 | -| StrBuilderTextTest.java:21:101:21:103 | sb3 : StrBuilder | StrBuilderTextTest.java:21:101:21:114 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:21:71:21:77 | taint(...) : String | StrBuilderTextTest.java:21:71:21:91 | toCharArray(...) : char[] | provenance | MaD:7 | +| StrBuilderTextTest.java:21:71:21:91 | toCharArray(...) : char[] | StrBuilderTextTest.java:21:55:21:92 | wrap(...) : CharBuffer | provenance | MaD:10 | +| StrBuilderTextTest.java:21:101:21:103 | sb3 : StrBuilder | StrBuilderTextTest.java:21:101:21:114 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:21:101:21:103 | sb3 : StrBuilder | StrBuilderTextTest.java:21:101:21:114 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:22:44:22:46 | sb4 [post update] : StrBuilder | StrBuilderTextTest.java:22:107:22:109 | sb4 : StrBuilder | provenance | | | StrBuilderTextTest.java:22:55:22:92 | wrap(...) : CharBuffer | StrBuilderTextTest.java:22:44:22:46 | sb4 [post update] : StrBuilder | provenance | MaD:434 | -| StrBuilderTextTest.java:22:71:22:77 | taint(...) : String | StrBuilderTextTest.java:22:71:22:91 | toCharArray(...) : char[] | provenance | MaD:8 | -| StrBuilderTextTest.java:22:71:22:91 | toCharArray(...) : char[] | StrBuilderTextTest.java:22:55:22:92 | wrap(...) : CharBuffer | provenance | MaD:1 | -| StrBuilderTextTest.java:22:107:22:109 | sb4 : StrBuilder | StrBuilderTextTest.java:22:107:22:120 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:22:71:22:77 | taint(...) : String | StrBuilderTextTest.java:22:71:22:91 | toCharArray(...) : char[] | provenance | MaD:7 | +| StrBuilderTextTest.java:22:71:22:91 | toCharArray(...) : char[] | StrBuilderTextTest.java:22:55:22:92 | wrap(...) : CharBuffer | provenance | MaD:10 | +| StrBuilderTextTest.java:22:107:22:109 | sb4 : StrBuilder | StrBuilderTextTest.java:22:107:22:120 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:22:107:22:109 | sb4 : StrBuilder | StrBuilderTextTest.java:22:107:22:120 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:23:44:23:46 | sb5 [post update] : StrBuilder | StrBuilderTextTest.java:23:84:23:86 | sb5 : StrBuilder | provenance | | -| StrBuilderTextTest.java:23:55:23:75 | (...)... : String | StrBuilderTextTest.java:23:44:23:46 | sb5 [post update] : StrBuilder | provenance | MaD:4 | +| StrBuilderTextTest.java:23:55:23:75 | (...)... : String | StrBuilderTextTest.java:23:44:23:46 | sb5 [post update] : StrBuilder | provenance | MaD:3 | | StrBuilderTextTest.java:23:55:23:75 | (...)... : String | StrBuilderTextTest.java:23:44:23:46 | sb5 [post update] : StrBuilder | provenance | MaD:422 | | StrBuilderTextTest.java:23:69:23:75 | taint(...) : String | StrBuilderTextTest.java:23:55:23:75 | (...)... : String | provenance | | -| StrBuilderTextTest.java:23:84:23:86 | sb5 : StrBuilder | StrBuilderTextTest.java:23:84:23:97 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:23:84:23:86 | sb5 : StrBuilder | StrBuilderTextTest.java:23:84:23:97 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:23:84:23:86 | sb5 : StrBuilder | StrBuilderTextTest.java:23:84:23:97 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:24:44:24:46 | sb6 [post update] : StrBuilder | StrBuilderTextTest.java:24:90:24:92 | sb6 : StrBuilder | provenance | | -| StrBuilderTextTest.java:24:55:24:75 | (...)... : String | StrBuilderTextTest.java:24:44:24:46 | sb6 [post update] : StrBuilder | provenance | MaD:4 | +| StrBuilderTextTest.java:24:55:24:75 | (...)... : String | StrBuilderTextTest.java:24:44:24:46 | sb6 [post update] : StrBuilder | provenance | MaD:3 | | StrBuilderTextTest.java:24:55:24:75 | (...)... : String | StrBuilderTextTest.java:24:44:24:46 | sb6 [post update] : StrBuilder | provenance | MaD:423 | | StrBuilderTextTest.java:24:69:24:75 | taint(...) : String | StrBuilderTextTest.java:24:55:24:75 | (...)... : String | provenance | | -| StrBuilderTextTest.java:24:90:24:92 | sb6 : StrBuilder | StrBuilderTextTest.java:24:90:24:103 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:24:90:24:92 | sb6 : StrBuilder | StrBuilderTextTest.java:24:90:24:103 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:24:90:24:92 | sb6 : StrBuilder | StrBuilderTextTest.java:24:90:24:103 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:25:44:25:46 | sb7 [post update] : StrBuilder | StrBuilderTextTest.java:25:78:25:80 | sb7 : StrBuilder | provenance | | | StrBuilderTextTest.java:25:55:25:69 | (...)... : String | StrBuilderTextTest.java:25:44:25:46 | sb7 [post update] : StrBuilder | provenance | MaD:424 | | StrBuilderTextTest.java:25:63:25:69 | taint(...) : String | StrBuilderTextTest.java:25:55:25:69 | (...)... : String | provenance | | -| StrBuilderTextTest.java:25:78:25:80 | sb7 : StrBuilder | StrBuilderTextTest.java:25:78:25:91 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:25:78:25:80 | sb7 : StrBuilder | StrBuilderTextTest.java:25:78:25:91 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:25:78:25:80 | sb7 : StrBuilder | StrBuilderTextTest.java:25:78:25:91 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:27:50:27:54 | auxsb [post update] : StrBuilder | StrBuilderTextTest.java:28:59:28:63 | auxsb : StrBuilder | provenance | | | StrBuilderTextTest.java:27:63:27:69 | taint(...) : String | StrBuilderTextTest.java:27:50:27:54 | auxsb [post update] : StrBuilder | provenance | MaD:425 | | StrBuilderTextTest.java:28:48:28:50 | sb8 [post update] : StrBuilder | StrBuilderTextTest.java:28:72:28:74 | sb8 : StrBuilder | provenance | | | StrBuilderTextTest.java:28:59:28:63 | auxsb : StrBuilder | StrBuilderTextTest.java:28:48:28:50 | sb8 [post update] : StrBuilder | provenance | MaD:435 | -| StrBuilderTextTest.java:28:72:28:74 | sb8 : StrBuilder | StrBuilderTextTest.java:28:72:28:85 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:28:72:28:74 | sb8 : StrBuilder | StrBuilderTextTest.java:28:72:28:85 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:28:72:28:74 | sb8 : StrBuilder | StrBuilderTextTest.java:28:72:28:85 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:30:44:30:46 | sb9 [post update] : StrBuilder | StrBuilderTextTest.java:30:88:30:90 | sb9 : StrBuilder | provenance | | | StrBuilderTextTest.java:30:55:30:79 | new StringBuffer(...) : StringBuffer | StrBuilderTextTest.java:30:44:30:46 | sb9 [post update] : StrBuilder | provenance | MaD:429 | -| StrBuilderTextTest.java:30:72:30:78 | taint(...) : String | StrBuilderTextTest.java:30:55:30:79 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| StrBuilderTextTest.java:30:88:30:90 | sb9 : StrBuilder | StrBuilderTextTest.java:30:88:30:101 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:30:72:30:78 | taint(...) : String | StrBuilderTextTest.java:30:55:30:79 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| StrBuilderTextTest.java:30:88:30:90 | sb9 : StrBuilder | StrBuilderTextTest.java:30:88:30:101 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:30:88:30:90 | sb9 : StrBuilder | StrBuilderTextTest.java:30:88:30:101 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:31:45:31:48 | sb10 [post update] : StrBuilder | StrBuilderTextTest.java:31:96:31:99 | sb10 : StrBuilder | provenance | | | StrBuilderTextTest.java:31:57:31:81 | new StringBuffer(...) : StringBuffer | StrBuilderTextTest.java:31:45:31:48 | sb10 [post update] : StrBuilder | provenance | MaD:430 | -| StrBuilderTextTest.java:31:74:31:80 | taint(...) : String | StrBuilderTextTest.java:31:57:31:81 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| StrBuilderTextTest.java:31:96:31:99 | sb10 : StrBuilder | StrBuilderTextTest.java:31:96:31:110 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:31:74:31:80 | taint(...) : String | StrBuilderTextTest.java:31:57:31:81 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| StrBuilderTextTest.java:31:96:31:99 | sb10 : StrBuilder | StrBuilderTextTest.java:31:96:31:110 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:31:96:31:99 | sb10 : StrBuilder | StrBuilderTextTest.java:31:96:31:110 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:32:45:32:48 | sb11 [post update] : StrBuilder | StrBuilderTextTest.java:32:91:32:94 | sb11 : StrBuilder | provenance | | | StrBuilderTextTest.java:32:57:32:82 | new StringBuilder(...) : StringBuilder | StrBuilderTextTest.java:32:45:32:48 | sb11 [post update] : StrBuilder | provenance | MaD:431 | -| StrBuilderTextTest.java:32:75:32:81 | taint(...) : String | StrBuilderTextTest.java:32:57:32:82 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| StrBuilderTextTest.java:32:91:32:94 | sb11 : StrBuilder | StrBuilderTextTest.java:32:91:32:105 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:32:75:32:81 | taint(...) : String | StrBuilderTextTest.java:32:57:32:82 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| StrBuilderTextTest.java:32:91:32:94 | sb11 : StrBuilder | StrBuilderTextTest.java:32:91:32:105 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:32:91:32:94 | sb11 : StrBuilder | StrBuilderTextTest.java:32:91:32:105 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:33:45:33:48 | sb12 [post update] : StrBuilder | StrBuilderTextTest.java:33:97:33:100 | sb12 : StrBuilder | provenance | | | StrBuilderTextTest.java:33:57:33:82 | new StringBuilder(...) : StringBuilder | StrBuilderTextTest.java:33:45:33:48 | sb12 [post update] : StrBuilder | provenance | MaD:432 | -| StrBuilderTextTest.java:33:75:33:81 | taint(...) : String | StrBuilderTextTest.java:33:57:33:82 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| StrBuilderTextTest.java:33:97:33:100 | sb12 : StrBuilder | StrBuilderTextTest.java:33:97:33:111 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:33:75:33:81 | taint(...) : String | StrBuilderTextTest.java:33:57:33:82 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| StrBuilderTextTest.java:33:97:33:100 | sb12 : StrBuilder | StrBuilderTextTest.java:33:97:33:111 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:33:97:33:100 | sb12 : StrBuilder | StrBuilderTextTest.java:33:97:33:111 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:34:45:34:48 | sb13 [post update] : StrBuilder | StrBuilderTextTest.java:34:72:34:75 | sb13 : StrBuilder | provenance | | | StrBuilderTextTest.java:34:57:34:63 | taint(...) : String | StrBuilderTextTest.java:34:45:34:48 | sb13 [post update] : StrBuilder | provenance | MaD:425 | -| StrBuilderTextTest.java:34:72:34:75 | sb13 : StrBuilder | StrBuilderTextTest.java:34:72:34:86 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:34:72:34:75 | sb13 : StrBuilder | StrBuilderTextTest.java:34:72:34:86 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:34:72:34:75 | sb13 : StrBuilder | StrBuilderTextTest.java:34:72:34:86 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:35:45:35:48 | sb14 [post update] : StrBuilder | StrBuilderTextTest.java:35:78:35:81 | sb14 : StrBuilder | provenance | | | StrBuilderTextTest.java:35:57:35:63 | taint(...) : String | StrBuilderTextTest.java:35:45:35:48 | sb14 [post update] : StrBuilder | provenance | MaD:426 | -| StrBuilderTextTest.java:35:78:35:81 | sb14 : StrBuilder | StrBuilderTextTest.java:35:78:35:92 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:35:78:35:81 | sb14 : StrBuilder | StrBuilderTextTest.java:35:78:35:92 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:35:78:35:81 | sb14 : StrBuilder | StrBuilderTextTest.java:35:78:35:92 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:36:45:36:48 | sb15 [post update] : StrBuilder | StrBuilderTextTest.java:36:90:36:93 | sb15 : StrBuilder | provenance | | | StrBuilderTextTest.java:36:57:36:63 | taint(...) : String | StrBuilderTextTest.java:36:45:36:48 | sb15 [post update] : StrBuilder | provenance | MaD:427 | -| StrBuilderTextTest.java:36:90:36:93 | sb15 : StrBuilder | StrBuilderTextTest.java:36:90:36:104 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:36:90:36:93 | sb15 : StrBuilder | StrBuilderTextTest.java:36:90:36:104 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:36:90:36:93 | sb15 : StrBuilder | StrBuilderTextTest.java:36:90:36:104 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:37:45:37:48 | sb16 [post update] : StrBuilder | StrBuilderTextTest.java:37:97:37:100 | sb16 : StrBuilder | provenance | | | StrBuilderTextTest.java:37:45:37:89 | new ..[] { .. } : Object[] [[]] : String | StrBuilderTextTest.java:37:45:37:48 | sb16 [post update] : StrBuilder | provenance | MaD:428 | | StrBuilderTextTest.java:37:74:37:80 | taint(...) : String | StrBuilderTextTest.java:37:45:37:89 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| StrBuilderTextTest.java:37:97:37:100 | sb16 : StrBuilder | StrBuilderTextTest.java:37:97:37:111 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:37:97:37:100 | sb16 : StrBuilder | StrBuilderTextTest.java:37:97:37:111 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:37:97:37:100 | sb16 : StrBuilder | StrBuilderTextTest.java:37:97:37:111 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:40:13:40:23 | taintedList [post update] : ArrayList [] : String | StrBuilderTextTest.java:41:64:41:74 | taintedList : ArrayList [] : String | provenance | | | StrBuilderTextTest.java:40:13:40:23 | taintedList [post update] : ArrayList [] : String | StrBuilderTextTest.java:42:64:42:74 | taintedList : ArrayList [] : String | provenance | | | StrBuilderTextTest.java:40:29:40:35 | taint(...) : String | StrBuilderTextTest.java:40:13:40:23 | taintedList [post update] : ArrayList [] : String | provenance | MaD:11 | | StrBuilderTextTest.java:41:49:41:52 | sb17 [post update] : StrBuilder | StrBuilderTextTest.java:41:83:41:86 | sb17 : StrBuilder | provenance | | | StrBuilderTextTest.java:41:64:41:74 | taintedList : ArrayList [] : String | StrBuilderTextTest.java:41:49:41:52 | sb17 [post update] : StrBuilder | provenance | MaD:437 | -| StrBuilderTextTest.java:41:83:41:86 | sb17 : StrBuilder | StrBuilderTextTest.java:41:83:41:97 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:41:83:41:86 | sb17 : StrBuilder | StrBuilderTextTest.java:41:83:41:97 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:41:83:41:86 | sb17 : StrBuilder | StrBuilderTextTest.java:41:83:41:97 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:42:49:42:52 | sb18 [post update] : StrBuilder | StrBuilderTextTest.java:42:94:42:97 | sb18 : StrBuilder | provenance | | -| StrBuilderTextTest.java:42:64:42:74 | taintedList : ArrayList [] : String | StrBuilderTextTest.java:42:64:42:85 | iterator(...) : Iterator [] : String | provenance | MaD:7 | +| StrBuilderTextTest.java:42:64:42:74 | taintedList : ArrayList [] : String | StrBuilderTextTest.java:42:64:42:85 | iterator(...) : Iterator [] : String | provenance | MaD:6 | | StrBuilderTextTest.java:42:64:42:85 | iterator(...) : Iterator [] : String | StrBuilderTextTest.java:42:49:42:52 | sb18 [post update] : StrBuilder | provenance | MaD:438 | -| StrBuilderTextTest.java:42:94:42:97 | sb18 : StrBuilder | StrBuilderTextTest.java:42:94:42:108 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:42:94:42:97 | sb18 : StrBuilder | StrBuilderTextTest.java:42:94:42:108 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:42:94:42:97 | sb18 : StrBuilder | StrBuilderTextTest.java:42:94:42:108 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:44:45:44:48 | sb19 [post update] : StrBuilder | StrBuilderTextTest.java:44:84:44:87 | sb19 : StrBuilder | provenance | | | StrBuilderTextTest.java:44:45:44:76 | new ..[] { .. } : Object[] [[]] : String | StrBuilderTextTest.java:44:45:44:48 | sb19 [post update] : StrBuilder | provenance | MaD:439 | | StrBuilderTextTest.java:44:69:44:75 | taint(...) : String | StrBuilderTextTest.java:44:45:44:76 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| StrBuilderTextTest.java:44:84:44:87 | sb19 : StrBuilder | StrBuilderTextTest.java:44:84:44:98 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:44:84:44:87 | sb19 : StrBuilder | StrBuilderTextTest.java:44:84:44:98 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:44:84:44:87 | sb19 : StrBuilder | StrBuilderTextTest.java:44:84:44:98 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:45:45:45:48 | sb20 [post update] : StrBuilder | StrBuilderTextTest.java:45:84:45:87 | sb20 : StrBuilder | provenance | | | StrBuilderTextTest.java:45:45:45:76 | new ..[] { .. } : Object[] [[]] : String | StrBuilderTextTest.java:45:45:45:48 | sb20 [post update] : StrBuilder | provenance | MaD:439 | | StrBuilderTextTest.java:45:60:45:66 | taint(...) : String | StrBuilderTextTest.java:45:45:45:76 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| StrBuilderTextTest.java:45:84:45:87 | sb20 : StrBuilder | StrBuilderTextTest.java:45:84:45:98 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:45:84:45:87 | sb20 : StrBuilder | StrBuilderTextTest.java:45:84:45:98 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:45:84:45:87 | sb20 : StrBuilder | StrBuilderTextTest.java:45:84:45:98 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:46:45:46:48 | sb21 [post update] : StrBuilder | StrBuilderTextTest.java:46:97:46:100 | sb21 : StrBuilder | provenance | | | StrBuilderTextTest.java:46:74:46:80 | taint(...) : String | StrBuilderTextTest.java:46:45:46:48 | sb21 [post update] : StrBuilder | provenance | MaD:441 | -| StrBuilderTextTest.java:46:97:46:100 | sb21 : StrBuilder | StrBuilderTextTest.java:46:97:46:111 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:46:97:46:100 | sb21 : StrBuilder | StrBuilderTextTest.java:46:97:46:111 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:46:97:46:100 | sb21 : StrBuilder | StrBuilderTextTest.java:46:97:46:111 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:47:45:47:48 | sb22 [post update] : StrBuilder | StrBuilderTextTest.java:47:98:47:101 | sb22 : StrBuilder | provenance | | | StrBuilderTextTest.java:47:75:47:81 | taint(...) : String | StrBuilderTextTest.java:47:45:47:48 | sb22 [post update] : StrBuilder | provenance | MaD:443 | -| StrBuilderTextTest.java:47:98:47:101 | sb22 : StrBuilder | StrBuilderTextTest.java:47:98:47:112 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:47:98:47:101 | sb22 : StrBuilder | StrBuilderTextTest.java:47:98:47:112 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:47:98:47:101 | sb22 : StrBuilder | StrBuilderTextTest.java:47:98:47:112 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:48:45:48:48 | sb23 [post update] : StrBuilder | StrBuilderTextTest.java:48:88:48:91 | sb23 : StrBuilder | provenance | | -| StrBuilderTextTest.java:48:59:48:65 | taint(...) : String | StrBuilderTextTest.java:48:59:48:79 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTextTest.java:48:59:48:65 | taint(...) : String | StrBuilderTextTest.java:48:59:48:79 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTextTest.java:48:59:48:79 | toCharArray(...) : char[] | StrBuilderTextTest.java:48:45:48:48 | sb23 [post update] : StrBuilder | provenance | MaD:458 | -| StrBuilderTextTest.java:48:88:48:91 | sb23 : StrBuilder | StrBuilderTextTest.java:48:88:48:102 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:48:88:48:91 | sb23 : StrBuilder | StrBuilderTextTest.java:48:88:48:102 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:48:88:48:91 | sb23 : StrBuilder | StrBuilderTextTest.java:48:88:48:102 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:49:45:49:48 | sb24 [post update] : StrBuilder | StrBuilderTextTest.java:49:94:49:97 | sb24 : StrBuilder | provenance | | -| StrBuilderTextTest.java:49:59:49:65 | taint(...) : String | StrBuilderTextTest.java:49:59:49:79 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTextTest.java:49:59:49:65 | taint(...) : String | StrBuilderTextTest.java:49:59:49:79 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTextTest.java:49:59:49:79 | toCharArray(...) : char[] | StrBuilderTextTest.java:49:45:49:48 | sb24 [post update] : StrBuilder | provenance | MaD:459 | -| StrBuilderTextTest.java:49:94:49:97 | sb24 : StrBuilder | StrBuilderTextTest.java:49:94:49:108 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:49:94:49:97 | sb24 : StrBuilder | StrBuilderTextTest.java:49:94:49:108 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:49:94:49:97 | sb24 : StrBuilder | StrBuilderTextTest.java:49:94:49:108 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:50:45:50:48 | sb25 [post update] : StrBuilder | StrBuilderTextTest.java:50:82:50:85 | sb25 : StrBuilder | provenance | | | StrBuilderTextTest.java:50:59:50:73 | (...)... : String | StrBuilderTextTest.java:50:45:50:48 | sb25 [post update] : StrBuilder | provenance | MaD:460 | | StrBuilderTextTest.java:50:67:50:73 | taint(...) : String | StrBuilderTextTest.java:50:59:50:73 | (...)... : String | provenance | | -| StrBuilderTextTest.java:50:82:50:85 | sb25 : StrBuilder | StrBuilderTextTest.java:50:82:50:96 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:50:82:50:85 | sb25 : StrBuilder | StrBuilderTextTest.java:50:82:50:96 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:50:82:50:85 | sb25 : StrBuilder | StrBuilderTextTest.java:50:82:50:96 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:52:50:52:54 | auxsb [post update] : StrBuilder | StrBuilderTextTest.java:53:63:53:67 | auxsb : StrBuilder | provenance | | | StrBuilderTextTest.java:52:65:52:71 | taint(...) : String | StrBuilderTextTest.java:52:50:52:54 | auxsb [post update] : StrBuilder | provenance | MaD:461 | | StrBuilderTextTest.java:53:49:53:52 | sb26 [post update] : StrBuilder | StrBuilderTextTest.java:53:76:53:79 | sb26 : StrBuilder | provenance | | | StrBuilderTextTest.java:53:63:53:67 | auxsb : StrBuilder | StrBuilderTextTest.java:53:49:53:52 | sb26 [post update] : StrBuilder | provenance | MaD:469 | -| StrBuilderTextTest.java:53:76:53:79 | sb26 : StrBuilder | StrBuilderTextTest.java:53:76:53:90 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:53:76:53:79 | sb26 : StrBuilder | StrBuilderTextTest.java:53:76:53:90 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:53:76:53:79 | sb26 : StrBuilder | StrBuilderTextTest.java:53:76:53:90 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:55:45:55:48 | sb27 [post update] : StrBuilder | StrBuilderTextTest.java:55:92:55:95 | sb27 : StrBuilder | provenance | | | StrBuilderTextTest.java:55:59:55:83 | new StringBuffer(...) : StringBuffer | StrBuilderTextTest.java:55:45:55:48 | sb27 [post update] : StrBuilder | provenance | MaD:465 | -| StrBuilderTextTest.java:55:76:55:82 | taint(...) : String | StrBuilderTextTest.java:55:59:55:83 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| StrBuilderTextTest.java:55:92:55:95 | sb27 : StrBuilder | StrBuilderTextTest.java:55:92:55:106 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:55:76:55:82 | taint(...) : String | StrBuilderTextTest.java:55:59:55:83 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| StrBuilderTextTest.java:55:92:55:95 | sb27 : StrBuilder | StrBuilderTextTest.java:55:92:55:106 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:55:92:55:95 | sb27 : StrBuilder | StrBuilderTextTest.java:55:92:55:106 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:56:45:56:48 | sb28 [post update] : StrBuilder | StrBuilderTextTest.java:56:98:56:101 | sb28 : StrBuilder | provenance | | | StrBuilderTextTest.java:56:59:56:83 | new StringBuffer(...) : StringBuffer | StrBuilderTextTest.java:56:45:56:48 | sb28 [post update] : StrBuilder | provenance | MaD:466 | -| StrBuilderTextTest.java:56:76:56:82 | taint(...) : String | StrBuilderTextTest.java:56:59:56:83 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| StrBuilderTextTest.java:56:98:56:101 | sb28 : StrBuilder | StrBuilderTextTest.java:56:98:56:112 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:56:76:56:82 | taint(...) : String | StrBuilderTextTest.java:56:59:56:83 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| StrBuilderTextTest.java:56:98:56:101 | sb28 : StrBuilder | StrBuilderTextTest.java:56:98:56:112 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:56:98:56:101 | sb28 : StrBuilder | StrBuilderTextTest.java:56:98:56:112 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:57:45:57:48 | sb29 [post update] : StrBuilder | StrBuilderTextTest.java:57:93:57:96 | sb29 : StrBuilder | provenance | | | StrBuilderTextTest.java:57:59:57:84 | new StringBuilder(...) : StringBuilder | StrBuilderTextTest.java:57:45:57:48 | sb29 [post update] : StrBuilder | provenance | MaD:467 | -| StrBuilderTextTest.java:57:77:57:83 | taint(...) : String | StrBuilderTextTest.java:57:59:57:84 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| StrBuilderTextTest.java:57:93:57:96 | sb29 : StrBuilder | StrBuilderTextTest.java:57:93:57:107 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:57:77:57:83 | taint(...) : String | StrBuilderTextTest.java:57:59:57:84 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| StrBuilderTextTest.java:57:93:57:96 | sb29 : StrBuilder | StrBuilderTextTest.java:57:93:57:107 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:57:93:57:96 | sb29 : StrBuilder | StrBuilderTextTest.java:57:93:57:107 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:58:45:58:48 | sb30 [post update] : StrBuilder | StrBuilderTextTest.java:58:99:58:102 | sb30 : StrBuilder | provenance | | | StrBuilderTextTest.java:58:59:58:84 | new StringBuilder(...) : StringBuilder | StrBuilderTextTest.java:58:45:58:48 | sb30 [post update] : StrBuilder | provenance | MaD:468 | -| StrBuilderTextTest.java:58:77:58:83 | taint(...) : String | StrBuilderTextTest.java:58:59:58:84 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| StrBuilderTextTest.java:58:99:58:102 | sb30 : StrBuilder | StrBuilderTextTest.java:58:99:58:113 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:58:77:58:83 | taint(...) : String | StrBuilderTextTest.java:58:59:58:84 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| StrBuilderTextTest.java:58:99:58:102 | sb30 : StrBuilder | StrBuilderTextTest.java:58:99:58:113 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:58:99:58:102 | sb30 : StrBuilder | StrBuilderTextTest.java:58:99:58:113 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:59:45:59:48 | sb31 [post update] : StrBuilder | StrBuilderTextTest.java:59:74:59:77 | sb31 : StrBuilder | provenance | | | StrBuilderTextTest.java:59:59:59:65 | taint(...) : String | StrBuilderTextTest.java:59:45:59:48 | sb31 [post update] : StrBuilder | provenance | MaD:461 | -| StrBuilderTextTest.java:59:74:59:77 | sb31 : StrBuilder | StrBuilderTextTest.java:59:74:59:88 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:59:74:59:77 | sb31 : StrBuilder | StrBuilderTextTest.java:59:74:59:88 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:59:74:59:77 | sb31 : StrBuilder | StrBuilderTextTest.java:59:74:59:88 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:60:45:60:48 | sb32 [post update] : StrBuilder | StrBuilderTextTest.java:60:80:60:83 | sb32 : StrBuilder | provenance | | | StrBuilderTextTest.java:60:59:60:65 | taint(...) : String | StrBuilderTextTest.java:60:45:60:48 | sb32 [post update] : StrBuilder | provenance | MaD:462 | -| StrBuilderTextTest.java:60:80:60:83 | sb32 : StrBuilder | StrBuilderTextTest.java:60:80:60:94 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:60:80:60:83 | sb32 : StrBuilder | StrBuilderTextTest.java:60:80:60:94 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:60:80:60:83 | sb32 : StrBuilder | StrBuilderTextTest.java:60:80:60:94 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:61:45:61:48 | sb33 [post update] : StrBuilder | StrBuilderTextTest.java:61:92:61:95 | sb33 : StrBuilder | provenance | | | StrBuilderTextTest.java:61:59:61:65 | taint(...) : String | StrBuilderTextTest.java:61:45:61:48 | sb33 [post update] : StrBuilder | provenance | MaD:463 | -| StrBuilderTextTest.java:61:92:61:95 | sb33 : StrBuilder | StrBuilderTextTest.java:61:92:61:106 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:61:92:61:95 | sb33 : StrBuilder | StrBuilderTextTest.java:61:92:61:106 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:61:92:61:95 | sb33 : StrBuilder | StrBuilderTextTest.java:61:92:61:106 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:62:45:62:48 | sb34 [post update] : StrBuilder | StrBuilderTextTest.java:62:99:62:102 | sb34 : StrBuilder | provenance | | | StrBuilderTextTest.java:62:45:62:91 | new ..[] { .. } : Object[] [[]] : String | StrBuilderTextTest.java:62:45:62:48 | sb34 [post update] : StrBuilder | provenance | MaD:464 | | StrBuilderTextTest.java:62:76:62:82 | taint(...) : String | StrBuilderTextTest.java:62:45:62:91 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| StrBuilderTextTest.java:62:99:62:102 | sb34 : StrBuilder | StrBuilderTextTest.java:62:99:62:113 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:62:99:62:102 | sb34 : StrBuilder | StrBuilderTextTest.java:62:99:62:113 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:62:99:62:102 | sb34 : StrBuilder | StrBuilderTextTest.java:62:99:62:113 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:63:45:63:48 | sb35 [post update] : StrBuilder | StrBuilderTextTest.java:63:81:63:84 | sb35 : StrBuilder | provenance | | | StrBuilderTextTest.java:63:66:63:72 | taint(...) : String | StrBuilderTextTest.java:63:45:63:48 | sb35 [post update] : StrBuilder | provenance | MaD:448 | -| StrBuilderTextTest.java:63:81:63:84 | sb35 : StrBuilder | StrBuilderTextTest.java:63:81:63:95 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:63:81:63:84 | sb35 : StrBuilder | StrBuilderTextTest.java:63:81:63:95 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:63:81:63:84 | sb35 : StrBuilder | StrBuilderTextTest.java:63:81:63:95 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:64:45:64:48 | sb36 [post update] : StrBuilder | StrBuilderTextTest.java:64:84:64:87 | sb36 : StrBuilder | provenance | | | StrBuilderTextTest.java:64:66:64:72 | taint(...) : String | StrBuilderTextTest.java:64:45:64:48 | sb36 [post update] : StrBuilder | provenance | MaD:449 | -| StrBuilderTextTest.java:64:84:64:87 | sb36 : StrBuilder | StrBuilderTextTest.java:64:84:64:98 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:64:84:64:87 | sb36 : StrBuilder | StrBuilderTextTest.java:64:84:64:98 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:64:84:64:87 | sb36 : StrBuilder | StrBuilderTextTest.java:64:84:64:98 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:65:45:65:48 | sb37 [post update] : StrBuilder | StrBuilderTextTest.java:65:92:65:95 | sb37 : StrBuilder | provenance | | | StrBuilderTextTest.java:65:66:65:72 | taint(...) : String | StrBuilderTextTest.java:65:45:65:48 | sb37 [post update] : StrBuilder | provenance | MaD:450 | -| StrBuilderTextTest.java:65:92:65:95 | sb37 : StrBuilder | StrBuilderTextTest.java:65:92:65:106 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:65:92:65:95 | sb37 : StrBuilder | StrBuilderTextTest.java:65:92:65:106 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:65:92:65:95 | sb37 : StrBuilder | StrBuilderTextTest.java:65:92:65:106 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:66:45:66:48 | sb38 [post update] : StrBuilder | StrBuilderTextTest.java:66:85:66:88 | sb38 : StrBuilder | provenance | | | StrBuilderTextTest.java:66:70:66:76 | taint(...) : String | StrBuilderTextTest.java:66:45:66:48 | sb38 [post update] : StrBuilder | provenance | MaD:450 | -| StrBuilderTextTest.java:66:85:66:88 | sb38 : StrBuilder | StrBuilderTextTest.java:66:85:66:99 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:66:85:66:88 | sb38 : StrBuilder | StrBuilderTextTest.java:66:85:66:99 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:66:85:66:88 | sb38 : StrBuilder | StrBuilderTextTest.java:66:85:66:99 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:68:50:68:54 | auxsb [post update] : StrBuilder | StrBuilderTextTest.java:69:49:69:53 | auxsb : StrBuilder | provenance | | | StrBuilderTextTest.java:68:65:68:71 | taint(...) : String | StrBuilderTextTest.java:68:50:68:54 | auxsb [post update] : StrBuilder | provenance | MaD:461 | | StrBuilderTextTest.java:69:49:69:53 | auxsb : StrBuilder | StrBuilderTextTest.java:69:64:69:67 | sb39 [post update] : StrBuilder | provenance | MaD:451 | | StrBuilderTextTest.java:69:64:69:67 | sb39 [post update] : StrBuilder | StrBuilderTextTest.java:69:76:69:79 | sb39 : StrBuilder | provenance | | -| StrBuilderTextTest.java:69:76:69:79 | sb39 : StrBuilder | StrBuilderTextTest.java:69:76:69:90 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:69:76:69:79 | sb39 : StrBuilder | StrBuilderTextTest.java:69:76:69:90 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:69:76:69:79 | sb39 : StrBuilder | StrBuilderTextTest.java:69:76:69:90 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:73:13:73:23 | taintedList [post update] : ArrayList [] : String | StrBuilderTextTest.java:74:75:74:85 | taintedList : ArrayList [] : String | provenance | | | StrBuilderTextTest.java:73:13:73:23 | taintedList [post update] : ArrayList [] : String | StrBuilderTextTest.java:75:75:75:85 | taintedList : ArrayList [] : String | provenance | | | StrBuilderTextTest.java:73:29:73:35 | taint(...) : String | StrBuilderTextTest.java:73:13:73:23 | taintedList [post update] : ArrayList [] : String | provenance | MaD:11 | | StrBuilderTextTest.java:74:49:74:52 | sb40 [post update] : StrBuilder | StrBuilderTextTest.java:74:100:74:103 | sb40 : StrBuilder | provenance | | | StrBuilderTextTest.java:74:75:74:85 | taintedList : ArrayList [] : String | StrBuilderTextTest.java:74:49:74:52 | sb40 [post update] : StrBuilder | provenance | MaD:454 | -| StrBuilderTextTest.java:74:100:74:103 | sb40 : StrBuilder | StrBuilderTextTest.java:74:100:74:114 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:74:100:74:103 | sb40 : StrBuilder | StrBuilderTextTest.java:74:100:74:114 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:74:100:74:103 | sb40 : StrBuilder | StrBuilderTextTest.java:74:100:74:114 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:75:49:75:52 | sb41 [post update] : StrBuilder | StrBuilderTextTest.java:75:111:75:114 | sb41 : StrBuilder | provenance | | -| StrBuilderTextTest.java:75:75:75:85 | taintedList : ArrayList [] : String | StrBuilderTextTest.java:75:75:75:96 | iterator(...) : Iterator [] : String | provenance | MaD:7 | +| StrBuilderTextTest.java:75:75:75:85 | taintedList : ArrayList [] : String | StrBuilderTextTest.java:75:75:75:96 | iterator(...) : Iterator [] : String | provenance | MaD:6 | | StrBuilderTextTest.java:75:75:75:96 | iterator(...) : Iterator [] : String | StrBuilderTextTest.java:75:49:75:52 | sb41 [post update] : StrBuilder | provenance | MaD:455 | -| StrBuilderTextTest.java:75:111:75:114 | sb41 : StrBuilder | StrBuilderTextTest.java:75:111:75:125 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:75:111:75:114 | sb41 : StrBuilder | StrBuilderTextTest.java:75:111:75:125 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:75:111:75:114 | sb41 : StrBuilder | StrBuilderTextTest.java:75:111:75:125 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:77:49:77:52 | sb42 [post update] : StrBuilder | StrBuilderTextTest.java:77:105:77:108 | sb42 : StrBuilder | provenance | | | StrBuilderTextTest.java:77:90:77:96 | taint(...) : String | StrBuilderTextTest.java:77:49:77:52 | sb42 [post update] : StrBuilder | provenance | MaD:453 | -| StrBuilderTextTest.java:77:105:77:108 | sb42 : StrBuilder | StrBuilderTextTest.java:77:105:77:119 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:77:105:77:108 | sb42 : StrBuilder | StrBuilderTextTest.java:77:105:77:119 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:77:105:77:108 | sb42 : StrBuilder | StrBuilderTextTest.java:77:105:77:119 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:78:49:78:52 | sb43 [post update] : StrBuilder | StrBuilderTextTest.java:78:116:78:119 | sb43 : StrBuilder | provenance | | | StrBuilderTextTest.java:78:101:78:107 | taint(...) : String | StrBuilderTextTest.java:78:49:78:52 | sb43 [post update] : StrBuilder | provenance | MaD:453 | -| StrBuilderTextTest.java:78:116:78:119 | sb43 : StrBuilder | StrBuilderTextTest.java:78:116:78:130 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:78:116:78:119 | sb43 : StrBuilder | StrBuilderTextTest.java:78:116:78:130 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:78:116:78:119 | sb43 : StrBuilder | StrBuilderTextTest.java:78:116:78:130 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:79:37:79:60 | {...} : String[] [[]] : String | StrBuilderTextTest.java:81:75:81:86 | taintedArray : String[] [[]] : String | provenance | | | StrBuilderTextTest.java:79:52:79:58 | taint(...) : String | StrBuilderTextTest.java:79:37:79:60 | {...} : String[] [[]] : String | provenance | | | StrBuilderTextTest.java:81:49:81:52 | sb44 [post update] : StrBuilder | StrBuilderTextTest.java:81:101:81:104 | sb44 : StrBuilder | provenance | | | StrBuilderTextTest.java:81:75:81:86 | taintedArray : String[] [[]] : String | StrBuilderTextTest.java:81:49:81:52 | sb44 [post update] : StrBuilder | provenance | MaD:456 | -| StrBuilderTextTest.java:81:101:81:104 | sb44 : StrBuilder | StrBuilderTextTest.java:81:101:81:115 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:81:101:81:104 | sb44 : StrBuilder | StrBuilderTextTest.java:81:101:81:115 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:81:101:81:104 | sb44 : StrBuilder | StrBuilderTextTest.java:81:101:81:115 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:82:49:82:52 | sb45 [post update] : StrBuilder | StrBuilderTextTest.java:82:106:82:109 | sb45 : StrBuilder | provenance | | | StrBuilderTextTest.java:82:91:82:97 | taint(...) : String | StrBuilderTextTest.java:82:49:82:52 | sb45 [post update] : StrBuilder | provenance | MaD:453 | -| StrBuilderTextTest.java:82:106:82:109 | sb45 : StrBuilder | StrBuilderTextTest.java:82:106:82:120 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:82:106:82:109 | sb45 : StrBuilder | StrBuilderTextTest.java:82:106:82:120 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:82:106:82:109 | sb45 : StrBuilder | StrBuilderTextTest.java:82:106:82:120 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:85:49:85:52 | sb46 [post update] : StrBuilder | StrBuilderTextTest.java:87:13:87:16 | sb46 : StrBuilder | provenance | | | StrBuilderTextTest.java:85:61:85:67 | taint(...) : String | StrBuilderTextTest.java:85:49:85:52 | sb46 [post update] : StrBuilder | provenance | MaD:425 | | StrBuilderTextTest.java:87:13:87:16 | sb46 : StrBuilder | StrBuilderTextTest.java:87:13:87:27 | asReader(...) : Reader | provenance | MaD:470 | -| StrBuilderTextTest.java:87:13:87:27 | asReader(...) : Reader | StrBuilderTextTest.java:87:34:87:39 | target [post update] : char[] | provenance | MaD:2 | +| StrBuilderTextTest.java:87:13:87:27 | asReader(...) : Reader | StrBuilderTextTest.java:87:34:87:39 | target [post update] : char[] | provenance | MaD:1 | | StrBuilderTextTest.java:87:34:87:39 | target [post update] : char[] | StrBuilderTextTest.java:88:18:88:23 | target | provenance | | | StrBuilderTextTest.java:90:45:90:48 | sb47 [post update] : StrBuilder | StrBuilderTextTest.java:90:72:90:75 | sb47 : StrBuilder | provenance | | | StrBuilderTextTest.java:90:57:90:63 | taint(...) : String | StrBuilderTextTest.java:90:45:90:48 | sb47 [post update] : StrBuilder | provenance | MaD:425 | @@ -1921,23 +1921,23 @@ edges | StrBuilderTextTest.java:102:13:102:16 | sb51 : StrBuilder | StrBuilderTextTest.java:102:33:102:38 | target [post update] : char[] | provenance | MaD:480 | | StrBuilderTextTest.java:102:33:102:38 | target [post update] : char[] | StrBuilderTextTest.java:103:18:103:23 | target | provenance | | | StrBuilderTextTest.java:105:45:105:48 | sb52 [post update] : StrBuilder | StrBuilderTextTest.java:105:89:105:92 | sb52 : StrBuilder | provenance | | -| StrBuilderTextTest.java:105:60:105:66 | taint(...) : String | StrBuilderTextTest.java:105:60:105:80 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTextTest.java:105:60:105:66 | taint(...) : String | StrBuilderTextTest.java:105:60:105:80 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTextTest.java:105:60:105:80 | toCharArray(...) : char[] | StrBuilderTextTest.java:105:45:105:48 | sb52 [post update] : StrBuilder | provenance | MaD:482 | -| StrBuilderTextTest.java:105:89:105:92 | sb52 : StrBuilder | StrBuilderTextTest.java:105:89:105:103 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:105:89:105:92 | sb52 : StrBuilder | StrBuilderTextTest.java:105:89:105:103 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:105:89:105:92 | sb52 : StrBuilder | StrBuilderTextTest.java:105:89:105:103 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:106:45:106:48 | sb53 [post update] : StrBuilder | StrBuilderTextTest.java:106:95:106:98 | sb53 : StrBuilder | provenance | | -| StrBuilderTextTest.java:106:60:106:66 | taint(...) : String | StrBuilderTextTest.java:106:60:106:80 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrBuilderTextTest.java:106:60:106:66 | taint(...) : String | StrBuilderTextTest.java:106:60:106:80 | toCharArray(...) : char[] | provenance | MaD:7 | | StrBuilderTextTest.java:106:60:106:80 | toCharArray(...) : char[] | StrBuilderTextTest.java:106:45:106:48 | sb53 [post update] : StrBuilder | provenance | MaD:482 | -| StrBuilderTextTest.java:106:95:106:98 | sb53 : StrBuilder | StrBuilderTextTest.java:106:95:106:109 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:106:95:106:98 | sb53 : StrBuilder | StrBuilderTextTest.java:106:95:106:109 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:106:95:106:98 | sb53 : StrBuilder | StrBuilderTextTest.java:106:95:106:109 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:107:45:107:48 | sb54 [post update] : StrBuilder | StrBuilderTextTest.java:107:75:107:78 | sb54 : StrBuilder | provenance | | | StrBuilderTextTest.java:107:60:107:66 | taint(...) : String | StrBuilderTextTest.java:107:45:107:48 | sb54 [post update] : StrBuilder | provenance | MaD:482 | -| StrBuilderTextTest.java:107:75:107:78 | sb54 : StrBuilder | StrBuilderTextTest.java:107:75:107:89 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:107:75:107:78 | sb54 : StrBuilder | StrBuilderTextTest.java:107:75:107:89 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:107:75:107:78 | sb54 : StrBuilder | StrBuilderTextTest.java:107:75:107:89 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:108:45:108:48 | sb55 [post update] : StrBuilder | StrBuilderTextTest.java:108:83:108:86 | sb55 : StrBuilder | provenance | | | StrBuilderTextTest.java:108:60:108:74 | (...)... : String | StrBuilderTextTest.java:108:45:108:48 | sb55 [post update] : StrBuilder | provenance | MaD:482 | | StrBuilderTextTest.java:108:68:108:74 | taint(...) : String | StrBuilderTextTest.java:108:60:108:74 | (...)... : String | provenance | | -| StrBuilderTextTest.java:108:83:108:86 | sb55 : StrBuilder | StrBuilderTextTest.java:108:83:108:97 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:108:83:108:86 | sb55 : StrBuilder | StrBuilderTextTest.java:108:83:108:97 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:108:83:108:86 | sb55 : StrBuilder | StrBuilderTextTest.java:108:83:108:97 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:109:45:109:48 | sb56 [post update] : StrBuilder | StrBuilderTextTest.java:109:72:109:75 | sb56 : StrBuilder | provenance | | | StrBuilderTextTest.java:109:57:109:63 | taint(...) : String | StrBuilderTextTest.java:109:45:109:48 | sb56 [post update] : StrBuilder | provenance | MaD:425 | @@ -1946,41 +1946,41 @@ edges | StrBuilderTextTest.java:110:57:110:63 | taint(...) : String | StrBuilderTextTest.java:110:45:110:48 | sb57 [post update] : StrBuilder | provenance | MaD:425 | | StrBuilderTextTest.java:110:72:110:75 | sb57 : StrBuilder | StrBuilderTextTest.java:110:72:110:91 | midString(...) | provenance | MaD:484 | | StrBuilderTextTest.java:112:35:112:59 | new StringReader(...) : StringReader | StrBuilderTextTest.java:113:63:113:68 | reader : StringReader | provenance | | -| StrBuilderTextTest.java:112:52:112:58 | taint(...) : String | StrBuilderTextTest.java:112:35:112:59 | new StringReader(...) : StringReader | provenance | MaD:3 | +| StrBuilderTextTest.java:112:52:112:58 | taint(...) : String | StrBuilderTextTest.java:112:35:112:59 | new StringReader(...) : StringReader | provenance | MaD:2 | | StrBuilderTextTest.java:113:49:113:52 | sb58 [post update] : StrBuilder | StrBuilderTextTest.java:113:77:113:80 | sb58 : StrBuilder | provenance | | | StrBuilderTextTest.java:113:63:113:68 | reader : StringReader | StrBuilderTextTest.java:113:49:113:52 | sb58 [post update] : StrBuilder | provenance | MaD:486 | -| StrBuilderTextTest.java:113:77:113:80 | sb58 : StrBuilder | StrBuilderTextTest.java:113:77:113:91 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:113:77:113:80 | sb58 : StrBuilder | StrBuilderTextTest.java:113:77:113:91 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:113:77:113:80 | sb58 : StrBuilder | StrBuilderTextTest.java:113:77:113:91 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:115:45:115:48 | sb59 [post update] : StrBuilder | StrBuilderTextTest.java:115:79:115:82 | sb59 : StrBuilder | provenance | | | StrBuilderTextTest.java:115:64:115:70 | taint(...) : String | StrBuilderTextTest.java:115:45:115:48 | sb59 [post update] : StrBuilder | provenance | MaD:488 | -| StrBuilderTextTest.java:115:79:115:82 | sb59 : StrBuilder | StrBuilderTextTest.java:115:79:115:93 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:115:79:115:82 | sb59 : StrBuilder | StrBuilderTextTest.java:115:79:115:93 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:115:79:115:82 | sb59 : StrBuilder | StrBuilderTextTest.java:115:79:115:93 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:116:45:116:48 | sb60 [post update] : StrBuilder | StrBuilderTextTest.java:116:88:116:91 | sb60 : StrBuilder | provenance | | | StrBuilderTextTest.java:116:64:116:70 | taint(...) : String | StrBuilderTextTest.java:116:45:116:48 | sb60 [post update] : StrBuilder | provenance | MaD:489 | -| StrBuilderTextTest.java:116:88:116:91 | sb60 : StrBuilder | StrBuilderTextTest.java:116:88:116:102 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:116:88:116:91 | sb60 : StrBuilder | StrBuilderTextTest.java:116:88:116:102 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:116:88:116:91 | sb60 : StrBuilder | StrBuilderTextTest.java:116:88:116:102 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:117:45:117:48 | sb61 [post update] : StrBuilder | StrBuilderTextTest.java:117:94:117:97 | sb61 : StrBuilder | provenance | | | StrBuilderTextTest.java:117:79:117:85 | taint(...) : String | StrBuilderTextTest.java:117:45:117:48 | sb61 [post update] : StrBuilder | provenance | MaD:491 | -| StrBuilderTextTest.java:117:94:117:97 | sb61 : StrBuilder | StrBuilderTextTest.java:117:94:117:108 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:117:94:117:97 | sb61 : StrBuilder | StrBuilderTextTest.java:117:94:117:108 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:117:94:117:97 | sb61 : StrBuilder | StrBuilderTextTest.java:117:94:117:108 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:118:45:118:48 | sb62 [post update] : StrBuilder | StrBuilderTextTest.java:118:86:118:89 | sb62 : StrBuilder | provenance | | | StrBuilderTextTest.java:118:71:118:77 | taint(...) : String | StrBuilderTextTest.java:118:45:118:48 | sb62 [post update] : StrBuilder | provenance | MaD:491 | -| StrBuilderTextTest.java:118:86:118:89 | sb62 : StrBuilder | StrBuilderTextTest.java:118:86:118:100 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:118:86:118:89 | sb62 : StrBuilder | StrBuilderTextTest.java:118:86:118:100 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:118:86:118:89 | sb62 : StrBuilder | StrBuilderTextTest.java:118:86:118:100 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:120:45:120:48 | sb64 [post update] : StrBuilder | StrBuilderTextTest.java:120:96:120:99 | sb64 : StrBuilder | provenance | | | StrBuilderTextTest.java:120:81:120:87 | taint(...) : String | StrBuilderTextTest.java:120:45:120:48 | sb64 [post update] : StrBuilder | provenance | MaD:493 | -| StrBuilderTextTest.java:120:96:120:99 | sb64 : StrBuilder | StrBuilderTextTest.java:120:96:120:110 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:120:96:120:99 | sb64 : StrBuilder | StrBuilderTextTest.java:120:96:120:110 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:120:96:120:99 | sb64 : StrBuilder | StrBuilderTextTest.java:120:96:120:110 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:121:45:121:48 | sb65 [post update] : StrBuilder | StrBuilderTextTest.java:121:88:121:91 | sb65 : StrBuilder | provenance | | | StrBuilderTextTest.java:121:73:121:79 | taint(...) : String | StrBuilderTextTest.java:121:45:121:48 | sb65 [post update] : StrBuilder | provenance | MaD:493 | -| StrBuilderTextTest.java:121:88:121:91 | sb65 : StrBuilder | StrBuilderTextTest.java:121:88:121:102 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:121:88:121:91 | sb65 : StrBuilder | StrBuilderTextTest.java:121:88:121:102 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:121:88:121:91 | sb65 : StrBuilder | StrBuilderTextTest.java:121:88:121:102 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:123:45:123:48 | sb67 [post update] : StrBuilder | StrBuilderTextTest.java:123:72:123:75 | sb67 : StrBuilder | provenance | | | StrBuilderTextTest.java:123:57:123:63 | taint(...) : String | StrBuilderTextTest.java:123:45:123:48 | sb67 [post update] : StrBuilder | provenance | MaD:425 | | StrBuilderTextTest.java:123:72:123:75 | sb67 : StrBuilder | StrBuilderTextTest.java:123:72:123:90 | rightString(...) | provenance | MaD:495 | | StrBuilderTextTest.java:124:45:124:48 | sb68 [post update] : StrBuilder | StrBuilderTextTest.java:124:72:124:75 | sb68 : StrBuilder | provenance | | | StrBuilderTextTest.java:124:57:124:63 | taint(...) : String | StrBuilderTextTest.java:124:45:124:48 | sb68 [post update] : StrBuilder | provenance | MaD:425 | -| StrBuilderTextTest.java:124:72:124:75 | sb68 : StrBuilder | StrBuilderTextTest.java:124:72:124:93 | subSequence(...) | provenance | MaD:5 | +| StrBuilderTextTest.java:124:72:124:75 | sb68 : StrBuilder | StrBuilderTextTest.java:124:72:124:93 | subSequence(...) | provenance | MaD:4 | | StrBuilderTextTest.java:124:72:124:75 | sb68 : StrBuilder | StrBuilderTextTest.java:124:72:124:93 | subSequence(...) | provenance | MaD:500 | | StrBuilderTextTest.java:125:45:125:48 | sb69 [post update] : StrBuilder | StrBuilderTextTest.java:125:72:125:75 | sb69 : StrBuilder | provenance | | | StrBuilderTextTest.java:125:57:125:63 | taint(...) : String | StrBuilderTextTest.java:125:45:125:48 | sb69 [post update] : StrBuilder | provenance | MaD:425 | @@ -2001,16 +2001,16 @@ edges | StrBuilderTextTest.java:130:57:130:63 | taint(...) : String | StrBuilderTextTest.java:130:45:130:48 | sb74 [post update] : StrBuilder | provenance | MaD:425 | | StrBuilderTextTest.java:130:72:130:75 | sb74 : StrBuilder | StrBuilderTextTest.java:130:72:130:93 | toStringBuilder(...) | provenance | MaD:505 | | StrBuilderTextTest.java:135:14:135:58 | append(...) : StrBuilder | StrBuilderTextTest.java:135:14:135:82 | append(...) : StrBuilder | provenance | MaD:419 | -| StrBuilderTextTest.java:135:14:135:82 | append(...) : StrBuilder | StrBuilderTextTest.java:135:14:135:93 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:135:14:135:82 | append(...) : StrBuilder | StrBuilderTextTest.java:135:14:135:93 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:135:14:135:82 | append(...) : StrBuilder | StrBuilderTextTest.java:135:14:135:93 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:135:51:135:57 | taint(...) : String | StrBuilderTextTest.java:135:14:135:58 | append(...) : StrBuilder | provenance | MaD:425+MaD:419 | | StrBuilderTextTest.java:138:9:138:45 | append(...) [post update] : StrBuilder | StrBuilderTextTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | provenance | MaD:419 | | StrBuilderTextTest.java:138:54:138:60 | taint(...) : String | StrBuilderTextTest.java:138:9:138:45 | append(...) [post update] : StrBuilder | provenance | MaD:425 | -| StrBuilderTextTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | StrBuilderTextTest.java:139:14:139:42 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | StrBuilderTextTest.java:139:14:139:42 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:139:14:139:31 | fluentBackflowTest : StrBuilder | StrBuilderTextTest.java:139:14:139:42 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:143:9:143:46 | append(...) [post update] : StrBuilder | StrBuilderTextTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | provenance | MaD:419 | | StrBuilderTextTest.java:143:55:143:61 | taint(...) : String | StrBuilderTextTest.java:143:9:143:46 | append(...) [post update] : StrBuilder | provenance | MaD:425 | -| StrBuilderTextTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | StrBuilderTextTest.java:144:14:144:43 | toString(...) | provenance | MaD:6 | +| StrBuilderTextTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | StrBuilderTextTest.java:144:14:144:43 | toString(...) | provenance | MaD:5 | | StrBuilderTextTest.java:144:14:144:32 | fluentBackflowTest2 : StrBuilder | StrBuilderTextTest.java:144:14:144:43 | toString(...) | provenance | MaD:503 | | StrBuilderTextTest.java:147:43:147:65 | new StrBuilder(...) : StrBuilder | StrBuilderTextTest.java:148:14:148:33 | fluentAllMethodsTest : StrBuilder | provenance | | | StrBuilderTextTest.java:147:58:147:64 | taint(...) : String | StrBuilderTextTest.java:147:43:147:65 | new StrBuilder(...) : StrBuilder | provenance | MaD:418 | @@ -2150,10 +2150,10 @@ edges | StrSubstitutorTest.java:51:12:51:25 | untaintedSubst : StrSubstitutor | StrSubstitutorTest.java:51:12:51:48 | replace(...) | provenance | MaD:319 | | StrSubstitutorTest.java:51:35:51:41 | taint(...) : String | StrSubstitutorTest.java:51:12:51:48 | replace(...) | provenance | MaD:332 | | StrSubstitutorTest.java:52:12:52:25 | untaintedSubst : StrSubstitutor | StrSubstitutorTest.java:52:12:52:56 | replace(...) | provenance | MaD:319 | -| StrSubstitutorTest.java:52:35:52:41 | taint(...) : String | StrSubstitutorTest.java:52:35:52:55 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrSubstitutorTest.java:52:35:52:41 | taint(...) : String | StrSubstitutorTest.java:52:35:52:55 | toCharArray(...) : char[] | provenance | MaD:7 | | StrSubstitutorTest.java:52:35:52:55 | toCharArray(...) : char[] | StrSubstitutorTest.java:52:12:52:56 | replace(...) | provenance | MaD:320 | | StrSubstitutorTest.java:53:12:53:25 | untaintedSubst : StrSubstitutor | StrSubstitutorTest.java:53:12:53:62 | replace(...) | provenance | MaD:319 | -| StrSubstitutorTest.java:53:35:53:41 | taint(...) : String | StrSubstitutorTest.java:53:35:53:55 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrSubstitutorTest.java:53:35:53:41 | taint(...) : String | StrSubstitutorTest.java:53:35:53:55 | toCharArray(...) : char[] | provenance | MaD:7 | | StrSubstitutorTest.java:53:35:53:55 | toCharArray(...) : char[] | StrSubstitutorTest.java:53:12:53:62 | replace(...) | provenance | MaD:321 | | StrSubstitutorTest.java:54:12:54:25 | untaintedSubst : StrSubstitutor | StrSubstitutorTest.java:54:12:54:56 | replace(...) | provenance | MaD:319 | | StrSubstitutorTest.java:54:35:54:55 | (...)... : String | StrSubstitutorTest.java:54:12:54:56 | replace(...) | provenance | MaD:322 | @@ -2169,16 +2169,16 @@ edges | StrSubstitutorTest.java:57:50:57:56 | taint(...) : String | StrSubstitutorTest.java:57:35:57:57 | new StrBuilder(...) : StrBuilder | provenance | MaD:226 | | StrSubstitutorTest.java:58:12:58:25 | untaintedSubst : StrSubstitutor | StrSubstitutorTest.java:58:12:58:61 | replace(...) | provenance | MaD:319 | | StrSubstitutorTest.java:58:35:58:60 | new StringBuilder(...) : StringBuilder | StrSubstitutorTest.java:58:12:58:61 | replace(...) | provenance | MaD:322 | -| StrSubstitutorTest.java:58:53:58:59 | taint(...) : String | StrSubstitutorTest.java:58:35:58:60 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | +| StrSubstitutorTest.java:58:53:58:59 | taint(...) : String | StrSubstitutorTest.java:58:35:58:60 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | | StrSubstitutorTest.java:59:12:59:25 | untaintedSubst : StrSubstitutor | StrSubstitutorTest.java:59:12:59:67 | replace(...) | provenance | MaD:319 | | StrSubstitutorTest.java:59:35:59:60 | new StringBuilder(...) : StringBuilder | StrSubstitutorTest.java:59:12:59:67 | replace(...) | provenance | MaD:323 | -| StrSubstitutorTest.java:59:53:59:59 | taint(...) : String | StrSubstitutorTest.java:59:35:59:60 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | +| StrSubstitutorTest.java:59:53:59:59 | taint(...) : String | StrSubstitutorTest.java:59:35:59:60 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | | StrSubstitutorTest.java:60:12:60:25 | untaintedSubst : StrSubstitutor | StrSubstitutorTest.java:60:12:60:60 | replace(...) | provenance | MaD:319 | | StrSubstitutorTest.java:60:35:60:59 | new StringBuffer(...) : StringBuffer | StrSubstitutorTest.java:60:12:60:60 | replace(...) | provenance | MaD:333 | -| StrSubstitutorTest.java:60:52:60:58 | taint(...) : String | StrSubstitutorTest.java:60:35:60:59 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | +| StrSubstitutorTest.java:60:52:60:58 | taint(...) : String | StrSubstitutorTest.java:60:35:60:59 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | | StrSubstitutorTest.java:61:12:61:25 | untaintedSubst : StrSubstitutor | StrSubstitutorTest.java:61:12:61:66 | replace(...) | provenance | MaD:319 | | StrSubstitutorTest.java:61:35:61:59 | new StringBuffer(...) : StringBuffer | StrSubstitutorTest.java:61:12:61:66 | replace(...) | provenance | MaD:334 | -| StrSubstitutorTest.java:61:52:61:58 | taint(...) : String | StrSubstitutorTest.java:61:35:61:59 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | +| StrSubstitutorTest.java:61:52:61:58 | taint(...) : String | StrSubstitutorTest.java:61:35:61:59 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | | StrSubstitutorTest.java:64:35:64:41 | taint(...) : String | StrSubstitutorTest.java:64:12:64:73 | replace(...) | provenance | MaD:325 | | StrSubstitutorTest.java:65:35:65:41 | taint(...) : String | StrSubstitutorTest.java:65:12:65:83 | replace(...) | provenance | MaD:327 | | StrSubstitutorTest.java:66:44:66:53 | taintedMap : HashMap [] : String | StrSubstitutorTest.java:66:12:66:54 | replace(...) | provenance | MaD:326 | @@ -2190,41 +2190,41 @@ edges | StrSubstitutorTest.java:71:44:71:55 | taintedProps : Properties [] : String | StrSubstitutorTest.java:71:12:71:56 | replace(...) | provenance | MaD:330 | | StrSubstitutorTest.java:74:50:74:61 | taintedSubst : StrSubstitutor | StrSubstitutorTest.java:74:73:74:83 | strBuilder1 [post update] : StrBuilder | provenance | MaD:341 | | StrSubstitutorTest.java:74:73:74:83 | strBuilder1 [post update] : StrBuilder | StrSubstitutorTest.java:74:92:74:102 | strBuilder1 : StrBuilder | provenance | | -| StrSubstitutorTest.java:74:92:74:102 | strBuilder1 : StrBuilder | StrSubstitutorTest.java:74:92:74:113 | toString(...) | provenance | MaD:6 | +| StrSubstitutorTest.java:74:92:74:102 | strBuilder1 : StrBuilder | StrSubstitutorTest.java:74:92:74:113 | toString(...) | provenance | MaD:5 | | StrSubstitutorTest.java:74:92:74:102 | strBuilder1 : StrBuilder | StrSubstitutorTest.java:74:92:74:113 | toString(...) | provenance | MaD:311 | | StrSubstitutorTest.java:75:50:75:61 | taintedSubst : StrSubstitutor | StrSubstitutorTest.java:75:73:75:83 | strBuilder2 [post update] : StrBuilder | provenance | MaD:342 | | StrSubstitutorTest.java:75:73:75:83 | strBuilder2 [post update] : StrBuilder | StrSubstitutorTest.java:75:98:75:108 | strBuilder2 : StrBuilder | provenance | | -| StrSubstitutorTest.java:75:98:75:108 | strBuilder2 : StrBuilder | StrSubstitutorTest.java:75:98:75:119 | toString(...) | provenance | MaD:6 | +| StrSubstitutorTest.java:75:98:75:108 | strBuilder2 : StrBuilder | StrSubstitutorTest.java:75:98:75:119 | toString(...) | provenance | MaD:5 | | StrSubstitutorTest.java:75:98:75:108 | strBuilder2 : StrBuilder | StrSubstitutorTest.java:75:98:75:119 | toString(...) | provenance | MaD:311 | | StrSubstitutorTest.java:76:59:76:70 | taintedSubst : StrSubstitutor | StrSubstitutorTest.java:76:82:76:95 | stringBuilder1 [post update] : StringBuilder | provenance | MaD:339 | | StrSubstitutorTest.java:76:82:76:95 | stringBuilder1 [post update] : StringBuilder | StrSubstitutorTest.java:76:104:76:117 | stringBuilder1 : StringBuilder | provenance | | -| StrSubstitutorTest.java:76:104:76:117 | stringBuilder1 : StringBuilder | StrSubstitutorTest.java:76:104:76:128 | toString(...) | provenance | MaD:6 | +| StrSubstitutorTest.java:76:104:76:117 | stringBuilder1 : StringBuilder | StrSubstitutorTest.java:76:104:76:128 | toString(...) | provenance | MaD:5 | | StrSubstitutorTest.java:77:59:77:70 | taintedSubst : StrSubstitutor | StrSubstitutorTest.java:77:82:77:95 | stringBuilder2 [post update] : StringBuilder | provenance | MaD:340 | | StrSubstitutorTest.java:77:82:77:95 | stringBuilder2 [post update] : StringBuilder | StrSubstitutorTest.java:77:110:77:123 | stringBuilder2 : StringBuilder | provenance | | -| StrSubstitutorTest.java:77:110:77:123 | stringBuilder2 : StringBuilder | StrSubstitutorTest.java:77:110:77:134 | toString(...) | provenance | MaD:6 | +| StrSubstitutorTest.java:77:110:77:123 | stringBuilder2 : StringBuilder | StrSubstitutorTest.java:77:110:77:134 | toString(...) | provenance | MaD:5 | | StrSubstitutorTest.java:78:56:78:67 | taintedSubst : StrSubstitutor | StrSubstitutorTest.java:78:79:78:91 | stringBuffer1 [post update] : StringBuffer | provenance | MaD:337 | | StrSubstitutorTest.java:78:79:78:91 | stringBuffer1 [post update] : StringBuffer | StrSubstitutorTest.java:78:100:78:112 | stringBuffer1 : StringBuffer | provenance | | -| StrSubstitutorTest.java:78:100:78:112 | stringBuffer1 : StringBuffer | StrSubstitutorTest.java:78:100:78:123 | toString(...) | provenance | MaD:6 | +| StrSubstitutorTest.java:78:100:78:112 | stringBuffer1 : StringBuffer | StrSubstitutorTest.java:78:100:78:123 | toString(...) | provenance | MaD:5 | | StrSubstitutorTest.java:79:56:79:67 | taintedSubst : StrSubstitutor | StrSubstitutorTest.java:79:79:79:91 | stringBuffer2 [post update] : StringBuffer | provenance | MaD:338 | | StrSubstitutorTest.java:79:79:79:91 | stringBuffer2 [post update] : StringBuffer | StrSubstitutorTest.java:79:106:79:118 | stringBuffer2 : StringBuffer | provenance | | -| StrSubstitutorTest.java:79:106:79:118 | stringBuffer2 : StringBuffer | StrSubstitutorTest.java:79:106:79:129 | toString(...) | provenance | MaD:6 | +| StrSubstitutorTest.java:79:106:79:118 | stringBuffer2 : StringBuffer | StrSubstitutorTest.java:79:106:79:129 | toString(...) | provenance | MaD:5 | | StrTokenizerTest.java:12:11:12:49 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:12:10:12:61 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:12:28:12:34 | taint(...) : String | StrTokenizerTest.java:12:28:12:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:12:28:12:34 | taint(...) : String | StrTokenizerTest.java:12:28:12:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:12:28:12:48 | toCharArray(...) : char[] | StrTokenizerTest.java:12:11:12:49 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | | StrTokenizerTest.java:13:11:13:54 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:13:10:13:66 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:13:28:13:34 | taint(...) : String | StrTokenizerTest.java:13:28:13:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:13:28:13:34 | taint(...) : String | StrTokenizerTest.java:13:28:13:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:13:28:13:48 | toCharArray(...) : char[] | StrTokenizerTest.java:13:11:13:54 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | | StrTokenizerTest.java:14:11:14:59 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:14:10:14:71 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:14:28:14:34 | taint(...) : String | StrTokenizerTest.java:14:28:14:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:14:28:14:34 | taint(...) : String | StrTokenizerTest.java:14:28:14:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:14:28:14:48 | toCharArray(...) : char[] | StrTokenizerTest.java:14:11:14:59 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | | StrTokenizerTest.java:15:11:15:54 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:15:10:15:66 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:15:28:15:34 | taint(...) : String | StrTokenizerTest.java:15:28:15:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:15:28:15:34 | taint(...) : String | StrTokenizerTest.java:15:28:15:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:15:28:15:48 | toCharArray(...) : char[] | StrTokenizerTest.java:15:11:15:54 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | | StrTokenizerTest.java:16:11:16:67 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:16:10:16:79 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:16:28:16:34 | taint(...) : String | StrTokenizerTest.java:16:28:16:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:16:28:16:34 | taint(...) : String | StrTokenizerTest.java:16:28:16:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:16:28:16:48 | toCharArray(...) : char[] | StrTokenizerTest.java:16:11:16:67 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | | StrTokenizerTest.java:17:11:17:85 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:17:10:17:97 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:17:28:17:34 | taint(...) : String | StrTokenizerTest.java:17:28:17:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:17:28:17:34 | taint(...) : String | StrTokenizerTest.java:17:28:17:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:17:28:17:48 | toCharArray(...) : char[] | StrTokenizerTest.java:17:11:17:85 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | | StrTokenizerTest.java:18:11:18:35 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:18:10:18:47 | toString(...) | provenance | MaD:356 | | StrTokenizerTest.java:18:28:18:34 | taint(...) : String | StrTokenizerTest.java:18:11:18:35 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | @@ -2239,12 +2239,12 @@ edges | StrTokenizerTest.java:23:11:23:71 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:23:10:23:83 | toString(...) | provenance | MaD:356 | | StrTokenizerTest.java:23:28:23:34 | taint(...) : String | StrTokenizerTest.java:23:11:23:71 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | | StrTokenizerTest.java:26:10:26:59 | getCSVInstance(...) : StrTokenizer | StrTokenizerTest.java:26:10:26:70 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:26:38:26:44 | taint(...) : String | StrTokenizerTest.java:26:38:26:58 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:26:38:26:44 | taint(...) : String | StrTokenizerTest.java:26:38:26:58 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:26:38:26:58 | toCharArray(...) : char[] | StrTokenizerTest.java:26:10:26:59 | getCSVInstance(...) : StrTokenizer | provenance | MaD:346 | | StrTokenizerTest.java:27:10:27:45 | getCSVInstance(...) : StrTokenizer | StrTokenizerTest.java:27:10:27:56 | toString(...) | provenance | MaD:356 | | StrTokenizerTest.java:27:38:27:44 | taint(...) : String | StrTokenizerTest.java:27:10:27:45 | getCSVInstance(...) : StrTokenizer | provenance | MaD:346 | | StrTokenizerTest.java:28:10:28:59 | getTSVInstance(...) : StrTokenizer | StrTokenizerTest.java:28:10:28:70 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:28:38:28:44 | taint(...) : String | StrTokenizerTest.java:28:38:28:58 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:28:38:28:44 | taint(...) : String | StrTokenizerTest.java:28:38:28:58 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:28:38:28:58 | toCharArray(...) : char[] | StrTokenizerTest.java:28:10:28:59 | getTSVInstance(...) : StrTokenizer | provenance | MaD:348 | | StrTokenizerTest.java:29:10:29:45 | getTSVInstance(...) : StrTokenizer | StrTokenizerTest.java:29:10:29:56 | toString(...) | provenance | MaD:356 | | StrTokenizerTest.java:29:38:29:44 | taint(...) : String | StrTokenizerTest.java:29:10:29:45 | getTSVInstance(...) : StrTokenizer | provenance | MaD:348 | @@ -2268,27 +2268,27 @@ edges | StrTokenizerTest.java:39:11:39:35 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTest.java:39:10:39:52 | previousToken(...) | provenance | MaD:354 | | StrTokenizerTest.java:39:28:39:34 | taint(...) : String | StrTokenizerTest.java:39:11:39:35 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:344 | | StrTokenizerTest.java:42:10:42:58 | reset(...) : StrTokenizer | StrTokenizerTest.java:42:10:42:69 | toString(...) | provenance | MaD:356 | -| StrTokenizerTest.java:42:37:42:43 | taint(...) : String | StrTokenizerTest.java:42:37:42:57 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTest.java:42:37:42:43 | taint(...) : String | StrTokenizerTest.java:42:37:42:57 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTest.java:42:37:42:57 | toCharArray(...) : char[] | StrTokenizerTest.java:42:10:42:58 | reset(...) : StrTokenizer | provenance | MaD:355 | | StrTokenizerTest.java:43:10:43:44 | reset(...) : StrTokenizer | StrTokenizerTest.java:43:10:43:55 | toString(...) | provenance | MaD:356 | | StrTokenizerTest.java:43:37:43:43 | taint(...) : String | StrTokenizerTest.java:43:10:43:44 | reset(...) : StrTokenizer | provenance | MaD:355 | | StrTokenizerTextTest.java:12:11:12:49 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:12:10:12:61 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:12:28:12:34 | taint(...) : String | StrTokenizerTextTest.java:12:28:12:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:12:28:12:34 | taint(...) : String | StrTokenizerTextTest.java:12:28:12:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:12:28:12:48 | toCharArray(...) : char[] | StrTokenizerTextTest.java:12:11:12:49 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | | StrTokenizerTextTest.java:13:11:13:54 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:13:10:13:66 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:13:28:13:34 | taint(...) : String | StrTokenizerTextTest.java:13:28:13:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:13:28:13:34 | taint(...) : String | StrTokenizerTextTest.java:13:28:13:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:13:28:13:48 | toCharArray(...) : char[] | StrTokenizerTextTest.java:13:11:13:54 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | | StrTokenizerTextTest.java:14:11:14:59 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:14:10:14:71 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:14:28:14:34 | taint(...) : String | StrTokenizerTextTest.java:14:28:14:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:14:28:14:34 | taint(...) : String | StrTokenizerTextTest.java:14:28:14:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:14:28:14:48 | toCharArray(...) : char[] | StrTokenizerTextTest.java:14:11:14:59 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | | StrTokenizerTextTest.java:15:11:15:54 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:15:10:15:66 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:15:28:15:34 | taint(...) : String | StrTokenizerTextTest.java:15:28:15:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:15:28:15:34 | taint(...) : String | StrTokenizerTextTest.java:15:28:15:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:15:28:15:48 | toCharArray(...) : char[] | StrTokenizerTextTest.java:15:11:15:54 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | | StrTokenizerTextTest.java:16:11:16:67 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:16:10:16:79 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:16:28:16:34 | taint(...) : String | StrTokenizerTextTest.java:16:28:16:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:16:28:16:34 | taint(...) : String | StrTokenizerTextTest.java:16:28:16:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:16:28:16:48 | toCharArray(...) : char[] | StrTokenizerTextTest.java:16:11:16:67 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | | StrTokenizerTextTest.java:17:11:17:85 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:17:10:17:97 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:17:28:17:34 | taint(...) : String | StrTokenizerTextTest.java:17:28:17:48 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:17:28:17:34 | taint(...) : String | StrTokenizerTextTest.java:17:28:17:48 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:17:28:17:48 | toCharArray(...) : char[] | StrTokenizerTextTest.java:17:11:17:85 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | | StrTokenizerTextTest.java:18:11:18:35 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:18:10:18:47 | toString(...) | provenance | MaD:519 | | StrTokenizerTextTest.java:18:28:18:34 | taint(...) : String | StrTokenizerTextTest.java:18:11:18:35 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | @@ -2303,12 +2303,12 @@ edges | StrTokenizerTextTest.java:23:11:23:71 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:23:10:23:83 | toString(...) | provenance | MaD:519 | | StrTokenizerTextTest.java:23:28:23:34 | taint(...) : String | StrTokenizerTextTest.java:23:11:23:71 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | | StrTokenizerTextTest.java:26:10:26:59 | getCSVInstance(...) : StrTokenizer | StrTokenizerTextTest.java:26:10:26:70 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:26:38:26:44 | taint(...) : String | StrTokenizerTextTest.java:26:38:26:58 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:26:38:26:44 | taint(...) : String | StrTokenizerTextTest.java:26:38:26:58 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:26:38:26:58 | toCharArray(...) : char[] | StrTokenizerTextTest.java:26:10:26:59 | getCSVInstance(...) : StrTokenizer | provenance | MaD:509 | | StrTokenizerTextTest.java:27:10:27:45 | getCSVInstance(...) : StrTokenizer | StrTokenizerTextTest.java:27:10:27:56 | toString(...) | provenance | MaD:519 | | StrTokenizerTextTest.java:27:38:27:44 | taint(...) : String | StrTokenizerTextTest.java:27:10:27:45 | getCSVInstance(...) : StrTokenizer | provenance | MaD:509 | | StrTokenizerTextTest.java:28:10:28:59 | getTSVInstance(...) : StrTokenizer | StrTokenizerTextTest.java:28:10:28:70 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:28:38:28:44 | taint(...) : String | StrTokenizerTextTest.java:28:38:28:58 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:28:38:28:44 | taint(...) : String | StrTokenizerTextTest.java:28:38:28:58 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:28:38:28:58 | toCharArray(...) : char[] | StrTokenizerTextTest.java:28:10:28:59 | getTSVInstance(...) : StrTokenizer | provenance | MaD:511 | | StrTokenizerTextTest.java:29:10:29:45 | getTSVInstance(...) : StrTokenizer | StrTokenizerTextTest.java:29:10:29:56 | toString(...) | provenance | MaD:519 | | StrTokenizerTextTest.java:29:38:29:44 | taint(...) : String | StrTokenizerTextTest.java:29:10:29:45 | getTSVInstance(...) : StrTokenizer | provenance | MaD:511 | @@ -2332,7 +2332,7 @@ edges | StrTokenizerTextTest.java:39:11:39:35 | new StrTokenizer(...) : StrTokenizer | StrTokenizerTextTest.java:39:10:39:52 | previousToken(...) | provenance | MaD:517 | | StrTokenizerTextTest.java:39:28:39:34 | taint(...) : String | StrTokenizerTextTest.java:39:11:39:35 | new StrTokenizer(...) : StrTokenizer | provenance | MaD:507 | | StrTokenizerTextTest.java:42:10:42:58 | reset(...) : StrTokenizer | StrTokenizerTextTest.java:42:10:42:69 | toString(...) | provenance | MaD:519 | -| StrTokenizerTextTest.java:42:37:42:43 | taint(...) : String | StrTokenizerTextTest.java:42:37:42:57 | toCharArray(...) : char[] | provenance | MaD:8 | +| StrTokenizerTextTest.java:42:37:42:43 | taint(...) : String | StrTokenizerTextTest.java:42:37:42:57 | toCharArray(...) : char[] | provenance | MaD:7 | | StrTokenizerTextTest.java:42:37:42:57 | toCharArray(...) : char[] | StrTokenizerTextTest.java:42:10:42:58 | reset(...) : StrTokenizer | provenance | MaD:518 | | StrTokenizerTextTest.java:43:10:43:44 | reset(...) : StrTokenizer | StrTokenizerTextTest.java:43:10:43:55 | toString(...) | provenance | MaD:519 | | StrTokenizerTextTest.java:43:37:43:43 | taint(...) : String | StrTokenizerTextTest.java:43:10:43:44 | reset(...) : StrTokenizer | provenance | MaD:518 | @@ -2445,10 +2445,10 @@ edges | StringSubstitutorTextTest.java:52:12:52:25 | untaintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:52:12:52:48 | replace(...) | provenance | MaD:522 | | StringSubstitutorTextTest.java:52:35:52:41 | taint(...) : String | StringSubstitutorTextTest.java:52:12:52:48 | replace(...) | provenance | MaD:535 | | StringSubstitutorTextTest.java:53:12:53:25 | untaintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:53:12:53:56 | replace(...) | provenance | MaD:522 | -| StringSubstitutorTextTest.java:53:35:53:41 | taint(...) : String | StringSubstitutorTextTest.java:53:35:53:55 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringSubstitutorTextTest.java:53:35:53:41 | taint(...) : String | StringSubstitutorTextTest.java:53:35:53:55 | toCharArray(...) : char[] | provenance | MaD:7 | | StringSubstitutorTextTest.java:53:35:53:55 | toCharArray(...) : char[] | StringSubstitutorTextTest.java:53:12:53:56 | replace(...) | provenance | MaD:523 | | StringSubstitutorTextTest.java:54:12:54:25 | untaintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:54:12:54:62 | replace(...) | provenance | MaD:522 | -| StringSubstitutorTextTest.java:54:35:54:41 | taint(...) : String | StringSubstitutorTextTest.java:54:35:54:55 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringSubstitutorTextTest.java:54:35:54:41 | taint(...) : String | StringSubstitutorTextTest.java:54:35:54:55 | toCharArray(...) : char[] | provenance | MaD:7 | | StringSubstitutorTextTest.java:54:35:54:55 | toCharArray(...) : char[] | StringSubstitutorTextTest.java:54:12:54:62 | replace(...) | provenance | MaD:524 | | StringSubstitutorTextTest.java:55:12:55:25 | untaintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:55:12:55:56 | replace(...) | provenance | MaD:522 | | StringSubstitutorTextTest.java:55:35:55:55 | (...)... : String | StringSubstitutorTextTest.java:55:12:55:56 | replace(...) | provenance | MaD:525 | @@ -2464,16 +2464,16 @@ edges | StringSubstitutorTextTest.java:58:57:58:63 | taint(...) : String | StringSubstitutorTextTest.java:58:35:58:64 | new TextStringBuilder(...) : TextStringBuilder | provenance | MaD:561 | | StringSubstitutorTextTest.java:59:12:59:25 | untaintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:59:12:59:61 | replace(...) | provenance | MaD:522 | | StringSubstitutorTextTest.java:59:35:59:60 | new StringBuilder(...) : StringBuilder | StringSubstitutorTextTest.java:59:12:59:61 | replace(...) | provenance | MaD:525 | -| StringSubstitutorTextTest.java:59:53:59:59 | taint(...) : String | StringSubstitutorTextTest.java:59:35:59:60 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | +| StringSubstitutorTextTest.java:59:53:59:59 | taint(...) : String | StringSubstitutorTextTest.java:59:35:59:60 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | | StringSubstitutorTextTest.java:60:12:60:25 | untaintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:60:12:60:67 | replace(...) | provenance | MaD:522 | | StringSubstitutorTextTest.java:60:35:60:60 | new StringBuilder(...) : StringBuilder | StringSubstitutorTextTest.java:60:12:60:67 | replace(...) | provenance | MaD:526 | -| StringSubstitutorTextTest.java:60:53:60:59 | taint(...) : String | StringSubstitutorTextTest.java:60:35:60:60 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | +| StringSubstitutorTextTest.java:60:53:60:59 | taint(...) : String | StringSubstitutorTextTest.java:60:35:60:60 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | | StringSubstitutorTextTest.java:61:12:61:25 | untaintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:61:12:61:60 | replace(...) | provenance | MaD:522 | | StringSubstitutorTextTest.java:61:35:61:59 | new StringBuffer(...) : StringBuffer | StringSubstitutorTextTest.java:61:12:61:60 | replace(...) | provenance | MaD:536 | -| StringSubstitutorTextTest.java:61:52:61:58 | taint(...) : String | StringSubstitutorTextTest.java:61:35:61:59 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | +| StringSubstitutorTextTest.java:61:52:61:58 | taint(...) : String | StringSubstitutorTextTest.java:61:35:61:59 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | | StringSubstitutorTextTest.java:62:12:62:25 | untaintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:62:12:62:66 | replace(...) | provenance | MaD:522 | | StringSubstitutorTextTest.java:62:35:62:59 | new StringBuffer(...) : StringBuffer | StringSubstitutorTextTest.java:62:12:62:66 | replace(...) | provenance | MaD:537 | -| StringSubstitutorTextTest.java:62:52:62:58 | taint(...) : String | StringSubstitutorTextTest.java:62:35:62:59 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | +| StringSubstitutorTextTest.java:62:52:62:58 | taint(...) : String | StringSubstitutorTextTest.java:62:35:62:59 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | | StringSubstitutorTextTest.java:65:38:65:44 | taint(...) : String | StringSubstitutorTextTest.java:65:12:65:76 | replace(...) | provenance | MaD:528 | | StringSubstitutorTextTest.java:66:38:66:44 | taint(...) : String | StringSubstitutorTextTest.java:66:12:66:86 | replace(...) | provenance | MaD:530 | | StringSubstitutorTextTest.java:67:47:67:56 | taintedMap : HashMap [] : String | StringSubstitutorTextTest.java:67:12:67:57 | replace(...) | provenance | MaD:529 | @@ -2485,41 +2485,41 @@ edges | StringSubstitutorTextTest.java:72:47:72:58 | taintedProps : Properties [] : String | StringSubstitutorTextTest.java:72:12:72:59 | replace(...) | provenance | MaD:533 | | StringSubstitutorTextTest.java:75:64:75:75 | taintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:75:87:75:97 | strBuilder1 [post update] : TextStringBuilder | provenance | MaD:544 | | StringSubstitutorTextTest.java:75:87:75:97 | strBuilder1 [post update] : TextStringBuilder | StringSubstitutorTextTest.java:75:106:75:116 | strBuilder1 : TextStringBuilder | provenance | | -| StringSubstitutorTextTest.java:75:106:75:116 | strBuilder1 : TextStringBuilder | StringSubstitutorTextTest.java:75:106:75:127 | toString(...) | provenance | MaD:6 | +| StringSubstitutorTextTest.java:75:106:75:116 | strBuilder1 : TextStringBuilder | StringSubstitutorTextTest.java:75:106:75:127 | toString(...) | provenance | MaD:5 | | StringSubstitutorTextTest.java:75:106:75:116 | strBuilder1 : TextStringBuilder | StringSubstitutorTextTest.java:75:106:75:127 | toString(...) | provenance | MaD:646 | | StringSubstitutorTextTest.java:76:64:76:75 | taintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:76:87:76:97 | strBuilder2 [post update] : TextStringBuilder | provenance | MaD:545 | | StringSubstitutorTextTest.java:76:87:76:97 | strBuilder2 [post update] : TextStringBuilder | StringSubstitutorTextTest.java:76:112:76:122 | strBuilder2 : TextStringBuilder | provenance | | -| StringSubstitutorTextTest.java:76:112:76:122 | strBuilder2 : TextStringBuilder | StringSubstitutorTextTest.java:76:112:76:133 | toString(...) | provenance | MaD:6 | +| StringSubstitutorTextTest.java:76:112:76:122 | strBuilder2 : TextStringBuilder | StringSubstitutorTextTest.java:76:112:76:133 | toString(...) | provenance | MaD:5 | | StringSubstitutorTextTest.java:76:112:76:122 | strBuilder2 : TextStringBuilder | StringSubstitutorTextTest.java:76:112:76:133 | toString(...) | provenance | MaD:646 | | StringSubstitutorTextTest.java:77:59:77:70 | taintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:77:82:77:95 | stringBuilder1 [post update] : StringBuilder | provenance | MaD:542 | | StringSubstitutorTextTest.java:77:82:77:95 | stringBuilder1 [post update] : StringBuilder | StringSubstitutorTextTest.java:77:104:77:117 | stringBuilder1 : StringBuilder | provenance | | -| StringSubstitutorTextTest.java:77:104:77:117 | stringBuilder1 : StringBuilder | StringSubstitutorTextTest.java:77:104:77:128 | toString(...) | provenance | MaD:6 | +| StringSubstitutorTextTest.java:77:104:77:117 | stringBuilder1 : StringBuilder | StringSubstitutorTextTest.java:77:104:77:128 | toString(...) | provenance | MaD:5 | | StringSubstitutorTextTest.java:78:59:78:70 | taintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:78:82:78:95 | stringBuilder2 [post update] : StringBuilder | provenance | MaD:543 | | StringSubstitutorTextTest.java:78:82:78:95 | stringBuilder2 [post update] : StringBuilder | StringSubstitutorTextTest.java:78:110:78:123 | stringBuilder2 : StringBuilder | provenance | | -| StringSubstitutorTextTest.java:78:110:78:123 | stringBuilder2 : StringBuilder | StringSubstitutorTextTest.java:78:110:78:134 | toString(...) | provenance | MaD:6 | +| StringSubstitutorTextTest.java:78:110:78:123 | stringBuilder2 : StringBuilder | StringSubstitutorTextTest.java:78:110:78:134 | toString(...) | provenance | MaD:5 | | StringSubstitutorTextTest.java:79:56:79:67 | taintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:79:79:79:91 | stringBuffer1 [post update] : StringBuffer | provenance | MaD:540 | | StringSubstitutorTextTest.java:79:79:79:91 | stringBuffer1 [post update] : StringBuffer | StringSubstitutorTextTest.java:79:100:79:112 | stringBuffer1 : StringBuffer | provenance | | -| StringSubstitutorTextTest.java:79:100:79:112 | stringBuffer1 : StringBuffer | StringSubstitutorTextTest.java:79:100:79:123 | toString(...) | provenance | MaD:6 | +| StringSubstitutorTextTest.java:79:100:79:112 | stringBuffer1 : StringBuffer | StringSubstitutorTextTest.java:79:100:79:123 | toString(...) | provenance | MaD:5 | | StringSubstitutorTextTest.java:80:56:80:67 | taintedSubst : StringSubstitutor | StringSubstitutorTextTest.java:80:79:80:91 | stringBuffer2 [post update] : StringBuffer | provenance | MaD:541 | | StringSubstitutorTextTest.java:80:79:80:91 | stringBuffer2 [post update] : StringBuffer | StringSubstitutorTextTest.java:80:106:80:118 | stringBuffer2 : StringBuffer | provenance | | -| StringSubstitutorTextTest.java:80:106:80:118 | stringBuffer2 : StringBuffer | StringSubstitutorTextTest.java:80:106:80:129 | toString(...) | provenance | MaD:6 | +| StringSubstitutorTextTest.java:80:106:80:118 | stringBuffer2 : StringBuffer | StringSubstitutorTextTest.java:80:106:80:129 | toString(...) | provenance | MaD:5 | | StringTokenizerTest.java:12:11:12:52 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:12:10:12:64 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:12:31:12:37 | taint(...) : String | StringTokenizerTest.java:12:31:12:51 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:12:31:12:37 | taint(...) : String | StringTokenizerTest.java:12:31:12:51 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:12:31:12:51 | toCharArray(...) : char[] | StringTokenizerTest.java:12:11:12:52 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | | StringTokenizerTest.java:13:11:13:57 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:13:10:13:69 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:13:31:13:37 | taint(...) : String | StringTokenizerTest.java:13:31:13:51 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:13:31:13:37 | taint(...) : String | StringTokenizerTest.java:13:31:13:51 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:13:31:13:51 | toCharArray(...) : char[] | StringTokenizerTest.java:13:11:13:57 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | | StringTokenizerTest.java:14:11:14:62 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:14:10:14:74 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:14:31:14:37 | taint(...) : String | StringTokenizerTest.java:14:31:14:51 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:14:31:14:37 | taint(...) : String | StringTokenizerTest.java:14:31:14:51 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:14:31:14:51 | toCharArray(...) : char[] | StringTokenizerTest.java:14:11:14:62 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | | StringTokenizerTest.java:15:11:15:57 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:15:10:15:69 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:15:31:15:37 | taint(...) : String | StringTokenizerTest.java:15:31:15:51 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:15:31:15:37 | taint(...) : String | StringTokenizerTest.java:15:31:15:51 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:15:31:15:51 | toCharArray(...) : char[] | StringTokenizerTest.java:15:11:15:57 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | | StringTokenizerTest.java:16:11:16:73 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:16:10:16:85 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:16:31:16:37 | taint(...) : String | StringTokenizerTest.java:16:31:16:51 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:16:31:16:37 | taint(...) : String | StringTokenizerTest.java:16:31:16:51 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:16:31:16:51 | toCharArray(...) : char[] | StringTokenizerTest.java:16:11:16:73 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | | StringTokenizerTest.java:17:11:17:94 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:17:10:17:106 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:17:31:17:37 | taint(...) : String | StringTokenizerTest.java:17:31:17:51 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:17:31:17:37 | taint(...) : String | StringTokenizerTest.java:17:31:17:51 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:17:31:17:51 | toCharArray(...) : char[] | StringTokenizerTest.java:17:11:17:94 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | | StringTokenizerTest.java:18:11:18:38 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:18:10:18:50 | toString(...) | provenance | MaD:559 | | StringTokenizerTest.java:18:31:18:37 | taint(...) : String | StringTokenizerTest.java:18:11:18:38 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | @@ -2534,12 +2534,12 @@ edges | StringTokenizerTest.java:23:11:23:80 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:23:10:23:92 | toString(...) | provenance | MaD:559 | | StringTokenizerTest.java:23:31:23:37 | taint(...) : String | StringTokenizerTest.java:23:11:23:80 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | | StringTokenizerTest.java:26:10:26:62 | getCSVInstance(...) : StringTokenizer | StringTokenizerTest.java:26:10:26:73 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:26:41:26:47 | taint(...) : String | StringTokenizerTest.java:26:41:26:61 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:26:41:26:47 | taint(...) : String | StringTokenizerTest.java:26:41:26:61 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:26:41:26:61 | toCharArray(...) : char[] | StringTokenizerTest.java:26:10:26:62 | getCSVInstance(...) : StringTokenizer | provenance | MaD:549 | | StringTokenizerTest.java:27:10:27:48 | getCSVInstance(...) : StringTokenizer | StringTokenizerTest.java:27:10:27:59 | toString(...) | provenance | MaD:559 | | StringTokenizerTest.java:27:41:27:47 | taint(...) : String | StringTokenizerTest.java:27:10:27:48 | getCSVInstance(...) : StringTokenizer | provenance | MaD:549 | | StringTokenizerTest.java:28:10:28:62 | getTSVInstance(...) : StringTokenizer | StringTokenizerTest.java:28:10:28:73 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:28:41:28:47 | taint(...) : String | StringTokenizerTest.java:28:41:28:61 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:28:41:28:47 | taint(...) : String | StringTokenizerTest.java:28:41:28:61 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:28:41:28:61 | toCharArray(...) : char[] | StringTokenizerTest.java:28:10:28:62 | getTSVInstance(...) : StringTokenizer | provenance | MaD:551 | | StringTokenizerTest.java:29:10:29:48 | getTSVInstance(...) : StringTokenizer | StringTokenizerTest.java:29:10:29:59 | toString(...) | provenance | MaD:559 | | StringTokenizerTest.java:29:41:29:47 | taint(...) : String | StringTokenizerTest.java:29:10:29:48 | getTSVInstance(...) : StringTokenizer | provenance | MaD:551 | @@ -2563,7 +2563,7 @@ edges | StringTokenizerTest.java:39:11:39:38 | new StringTokenizer(...) : StringTokenizer | StringTokenizerTest.java:39:10:39:55 | previousToken(...) | provenance | MaD:557 | | StringTokenizerTest.java:39:31:39:37 | taint(...) : String | StringTokenizerTest.java:39:11:39:38 | new StringTokenizer(...) : StringTokenizer | provenance | MaD:547 | | StringTokenizerTest.java:42:10:42:61 | reset(...) : StringTokenizer | StringTokenizerTest.java:42:10:42:72 | toString(...) | provenance | MaD:559 | -| StringTokenizerTest.java:42:40:42:46 | taint(...) : String | StringTokenizerTest.java:42:40:42:60 | toCharArray(...) : char[] | provenance | MaD:8 | +| StringTokenizerTest.java:42:40:42:46 | taint(...) : String | StringTokenizerTest.java:42:40:42:60 | toCharArray(...) : char[] | provenance | MaD:7 | | StringTokenizerTest.java:42:40:42:60 | toCharArray(...) : char[] | StringTokenizerTest.java:42:10:42:61 | reset(...) : StringTokenizer | provenance | MaD:558 | | StringTokenizerTest.java:43:10:43:47 | reset(...) : StringTokenizer | StringTokenizerTest.java:43:10:43:58 | toString(...) | provenance | MaD:559 | | StringTokenizerTest.java:43:40:43:46 | taint(...) : String | StringTokenizerTest.java:43:10:43:47 | reset(...) : StringTokenizer | provenance | MaD:558 | @@ -2614,9 +2614,9 @@ edges | Test.java:63:36:63:42 | taint(...) : String | Test.java:63:14:63:43 | getDigits(...) | provenance | MaD:104 | | Test.java:64:37:64:43 | taint(...) : String | Test.java:64:14:64:61 | getIfBlank(...) | provenance | MaD:105 | | Test.java:65:37:65:43 | taint(...) : String | Test.java:65:14:65:61 | getIfEmpty(...) | provenance | MaD:106 | -| Test.java:73:31:73:37 | taint(...) : String | Test.java:73:31:73:51 | toCharArray(...) : char[] | provenance | MaD:8 | +| Test.java:73:31:73:37 | taint(...) : String | Test.java:73:31:73:51 | toCharArray(...) : char[] | provenance | MaD:7 | | Test.java:73:31:73:51 | toCharArray(...) : char[] | Test.java:73:14:73:57 | join(...) | provenance | MaD:107 | -| Test.java:74:31:74:37 | taint(...) : String | Test.java:74:31:74:51 | toCharArray(...) : char[] | provenance | MaD:8 | +| Test.java:74:31:74:37 | taint(...) : String | Test.java:74:31:74:51 | toCharArray(...) : char[] | provenance | MaD:7 | | Test.java:74:31:74:51 | toCharArray(...) : char[] | Test.java:74:14:74:63 | join(...) | provenance | MaD:108 | | Test.java:77:9:77:19 | taintedList [post update] : ArrayList [] : String | Test.java:78:31:78:41 | taintedList : ArrayList [] : String | provenance | | | Test.java:77:9:77:19 | taintedList [post update] : ArrayList [] : String | Test.java:79:31:79:41 | taintedList : ArrayList [] : String | provenance | | @@ -2628,9 +2628,9 @@ edges | Test.java:78:31:78:41 | taintedList : ArrayList [] : String | Test.java:78:14:78:47 | join(...) | provenance | MaD:109 | | Test.java:79:31:79:41 | taintedList : ArrayList [] : String | Test.java:79:14:79:49 | join(...) | provenance | MaD:110 | | Test.java:81:46:81:52 | taint(...) : String | Test.java:81:14:81:53 | join(...) | provenance | MaD:111 | -| Test.java:83:31:83:41 | taintedList : ArrayList [] : String | Test.java:83:31:83:52 | iterator(...) : Iterator [] : String | provenance | MaD:7 | +| Test.java:83:31:83:41 | taintedList : ArrayList [] : String | Test.java:83:31:83:52 | iterator(...) : Iterator [] : String | provenance | MaD:6 | | Test.java:83:31:83:52 | iterator(...) : Iterator [] : String | Test.java:83:14:83:58 | join(...) | provenance | MaD:119 | -| Test.java:84:31:84:41 | taintedList : ArrayList [] : String | Test.java:84:31:84:52 | iterator(...) : Iterator [] : String | provenance | MaD:7 | +| Test.java:84:31:84:41 | taintedList : ArrayList [] : String | Test.java:84:31:84:52 | iterator(...) : Iterator [] : String | provenance | MaD:6 | | Test.java:84:31:84:52 | iterator(...) : Iterator [] : String | Test.java:84:14:84:60 | join(...) | provenance | MaD:120 | | Test.java:85:57:85:63 | taint(...) : String | Test.java:85:14:85:64 | join(...) | provenance | MaD:121 | | Test.java:87:31:87:41 | taintedList : ArrayList [] : String | Test.java:87:14:87:53 | join(...) | provenance | MaD:122 | @@ -2774,7 +2774,7 @@ edges | Test.java:263:33:263:39 | taint(...) : String | Test.java:263:14:263:53 | unwrap(...) | provenance | MaD:215 | | Test.java:266:36:266:42 | taint(...) : String | Test.java:266:14:266:43 | upperCase(...) | provenance | MaD:216 | | Test.java:267:36:267:42 | taint(...) : String | Test.java:267:14:267:49 | upperCase(...) | provenance | MaD:217 | -| Test.java:268:34:268:40 | taint(...) : String | Test.java:268:34:268:54 | toCharArray(...) : char[] | provenance | MaD:8 | +| Test.java:268:34:268:40 | taint(...) : String | Test.java:268:34:268:54 | toCharArray(...) : char[] | provenance | MaD:7 | | Test.java:268:34:268:54 | toCharArray(...) : char[] | Test.java:268:14:268:55 | valueOf(...) | provenance | MaD:218 | | Test.java:269:31:269:37 | taint(...) : String | Test.java:269:14:269:43 | wrap(...) | provenance | MaD:219 | | Test.java:270:31:270:37 | taint(...) : String | Test.java:270:14:270:55 | wrap(...) | provenance | MaD:220 | @@ -2784,239 +2784,239 @@ edges | Test.java:274:51:274:57 | taint(...) : String | Test.java:274:14:274:58 | wrapIfMissing(...) | provenance | MaD:222 | | TextStringBuilderTest.java:17:35:17:64 | new TextStringBuilder(...) : TextStringBuilder | TextStringBuilderTest.java:17:72:17:76 | cons1 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:17:57:17:63 | taint(...) : String | TextStringBuilderTest.java:17:35:17:64 | new TextStringBuilder(...) : TextStringBuilder | provenance | MaD:561 | -| TextStringBuilderTest.java:17:72:17:76 | cons1 : TextStringBuilder | TextStringBuilderTest.java:17:72:17:87 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:17:72:17:76 | cons1 : TextStringBuilder | TextStringBuilderTest.java:17:72:17:87 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:17:72:17:76 | cons1 : TextStringBuilder | TextStringBuilderTest.java:17:72:17:87 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:18:35:18:78 | new TextStringBuilder(...) : TextStringBuilder | TextStringBuilderTest.java:18:86:18:90 | cons2 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:18:57:18:77 | (...)... : String | TextStringBuilderTest.java:18:35:18:78 | new TextStringBuilder(...) : TextStringBuilder | provenance | MaD:560 | | TextStringBuilderTest.java:18:71:18:77 | taint(...) : String | TextStringBuilderTest.java:18:57:18:77 | (...)... : String | provenance | | -| TextStringBuilderTest.java:18:86:18:90 | cons2 : TextStringBuilder | TextStringBuilderTest.java:18:86:18:101 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:18:86:18:90 | cons2 : TextStringBuilder | TextStringBuilderTest.java:18:86:18:101 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:18:86:18:90 | cons2 : TextStringBuilder | TextStringBuilderTest.java:18:86:18:101 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:20:58:20:60 | sb1 [post update] : TextStringBuilder | TextStringBuilderTest.java:20:98:20:100 | sb1 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:20:69:20:75 | taint(...) : String | TextStringBuilderTest.java:20:69:20:89 | toCharArray(...) : char[] | provenance | MaD:8 | +| TextStringBuilderTest.java:20:69:20:75 | taint(...) : String | TextStringBuilderTest.java:20:69:20:89 | toCharArray(...) : char[] | provenance | MaD:7 | | TextStringBuilderTest.java:20:69:20:89 | toCharArray(...) : char[] | TextStringBuilderTest.java:20:58:20:60 | sb1 [post update] : TextStringBuilder | provenance | MaD:563 | -| TextStringBuilderTest.java:20:98:20:100 | sb1 : TextStringBuilder | TextStringBuilderTest.java:20:98:20:111 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:20:98:20:100 | sb1 : TextStringBuilder | TextStringBuilderTest.java:20:98:20:111 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:20:98:20:100 | sb1 : TextStringBuilder | TextStringBuilderTest.java:20:98:20:111 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:21:58:21:60 | sb2 [post update] : TextStringBuilder | TextStringBuilderTest.java:21:104:21:106 | sb2 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:21:69:21:75 | taint(...) : String | TextStringBuilderTest.java:21:69:21:89 | toCharArray(...) : char[] | provenance | MaD:8 | +| TextStringBuilderTest.java:21:69:21:75 | taint(...) : String | TextStringBuilderTest.java:21:69:21:89 | toCharArray(...) : char[] | provenance | MaD:7 | | TextStringBuilderTest.java:21:69:21:89 | toCharArray(...) : char[] | TextStringBuilderTest.java:21:58:21:60 | sb2 [post update] : TextStringBuilder | provenance | MaD:564 | -| TextStringBuilderTest.java:21:104:21:106 | sb2 : TextStringBuilder | TextStringBuilderTest.java:21:104:21:117 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:21:104:21:106 | sb2 : TextStringBuilder | TextStringBuilderTest.java:21:104:21:117 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:21:104:21:106 | sb2 : TextStringBuilder | TextStringBuilderTest.java:21:104:21:117 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:22:58:22:60 | sb3 [post update] : TextStringBuilder | TextStringBuilderTest.java:22:115:22:117 | sb3 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:22:69:22:106 | wrap(...) : CharBuffer | TextStringBuilderTest.java:22:58:22:60 | sb3 [post update] : TextStringBuilder | provenance | MaD:576 | -| TextStringBuilderTest.java:22:85:22:91 | taint(...) : String | TextStringBuilderTest.java:22:85:22:105 | toCharArray(...) : char[] | provenance | MaD:8 | -| TextStringBuilderTest.java:22:85:22:105 | toCharArray(...) : char[] | TextStringBuilderTest.java:22:69:22:106 | wrap(...) : CharBuffer | provenance | MaD:1 | -| TextStringBuilderTest.java:22:115:22:117 | sb3 : TextStringBuilder | TextStringBuilderTest.java:22:115:22:128 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:22:85:22:91 | taint(...) : String | TextStringBuilderTest.java:22:85:22:105 | toCharArray(...) : char[] | provenance | MaD:7 | +| TextStringBuilderTest.java:22:85:22:105 | toCharArray(...) : char[] | TextStringBuilderTest.java:22:69:22:106 | wrap(...) : CharBuffer | provenance | MaD:10 | +| TextStringBuilderTest.java:22:115:22:117 | sb3 : TextStringBuilder | TextStringBuilderTest.java:22:115:22:128 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:22:115:22:117 | sb3 : TextStringBuilder | TextStringBuilderTest.java:22:115:22:128 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:23:58:23:60 | sb4 [post update] : TextStringBuilder | TextStringBuilderTest.java:23:121:23:123 | sb4 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:23:69:23:106 | wrap(...) : CharBuffer | TextStringBuilderTest.java:23:58:23:60 | sb4 [post update] : TextStringBuilder | provenance | MaD:577 | -| TextStringBuilderTest.java:23:85:23:91 | taint(...) : String | TextStringBuilderTest.java:23:85:23:105 | toCharArray(...) : char[] | provenance | MaD:8 | -| TextStringBuilderTest.java:23:85:23:105 | toCharArray(...) : char[] | TextStringBuilderTest.java:23:69:23:106 | wrap(...) : CharBuffer | provenance | MaD:1 | -| TextStringBuilderTest.java:23:121:23:123 | sb4 : TextStringBuilder | TextStringBuilderTest.java:23:121:23:134 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:23:85:23:91 | taint(...) : String | TextStringBuilderTest.java:23:85:23:105 | toCharArray(...) : char[] | provenance | MaD:7 | +| TextStringBuilderTest.java:23:85:23:105 | toCharArray(...) : char[] | TextStringBuilderTest.java:23:69:23:106 | wrap(...) : CharBuffer | provenance | MaD:10 | +| TextStringBuilderTest.java:23:121:23:123 | sb4 : TextStringBuilder | TextStringBuilderTest.java:23:121:23:134 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:23:121:23:123 | sb4 : TextStringBuilder | TextStringBuilderTest.java:23:121:23:134 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:24:58:24:60 | sb5 [post update] : TextStringBuilder | TextStringBuilderTest.java:24:98:24:100 | sb5 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:24:69:24:89 | (...)... : String | TextStringBuilderTest.java:24:58:24:60 | sb5 [post update] : TextStringBuilder | provenance | MaD:4 | +| TextStringBuilderTest.java:24:69:24:89 | (...)... : String | TextStringBuilderTest.java:24:58:24:60 | sb5 [post update] : TextStringBuilder | provenance | MaD:3 | | TextStringBuilderTest.java:24:69:24:89 | (...)... : String | TextStringBuilderTest.java:24:58:24:60 | sb5 [post update] : TextStringBuilder | provenance | MaD:565 | | TextStringBuilderTest.java:24:83:24:89 | taint(...) : String | TextStringBuilderTest.java:24:69:24:89 | (...)... : String | provenance | | -| TextStringBuilderTest.java:24:98:24:100 | sb5 : TextStringBuilder | TextStringBuilderTest.java:24:98:24:111 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:24:98:24:100 | sb5 : TextStringBuilder | TextStringBuilderTest.java:24:98:24:111 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:24:98:24:100 | sb5 : TextStringBuilder | TextStringBuilderTest.java:24:98:24:111 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:25:58:25:60 | sb6 [post update] : TextStringBuilder | TextStringBuilderTest.java:25:104:25:106 | sb6 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:25:69:25:89 | (...)... : String | TextStringBuilderTest.java:25:58:25:60 | sb6 [post update] : TextStringBuilder | provenance | MaD:4 | +| TextStringBuilderTest.java:25:69:25:89 | (...)... : String | TextStringBuilderTest.java:25:58:25:60 | sb6 [post update] : TextStringBuilder | provenance | MaD:3 | | TextStringBuilderTest.java:25:69:25:89 | (...)... : String | TextStringBuilderTest.java:25:58:25:60 | sb6 [post update] : TextStringBuilder | provenance | MaD:566 | | TextStringBuilderTest.java:25:83:25:89 | taint(...) : String | TextStringBuilderTest.java:25:69:25:89 | (...)... : String | provenance | | -| TextStringBuilderTest.java:25:104:25:106 | sb6 : TextStringBuilder | TextStringBuilderTest.java:25:104:25:117 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:25:104:25:106 | sb6 : TextStringBuilder | TextStringBuilderTest.java:25:104:25:117 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:25:104:25:106 | sb6 : TextStringBuilder | TextStringBuilderTest.java:25:104:25:117 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:26:58:26:60 | sb7 [post update] : TextStringBuilder | TextStringBuilderTest.java:26:92:26:94 | sb7 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:26:69:26:83 | (...)... : String | TextStringBuilderTest.java:26:58:26:60 | sb7 [post update] : TextStringBuilder | provenance | MaD:567 | | TextStringBuilderTest.java:26:77:26:83 | taint(...) : String | TextStringBuilderTest.java:26:69:26:83 | (...)... : String | provenance | | -| TextStringBuilderTest.java:26:92:26:94 | sb7 : TextStringBuilder | TextStringBuilderTest.java:26:92:26:105 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:26:92:26:94 | sb7 : TextStringBuilder | TextStringBuilderTest.java:26:92:26:105 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:26:92:26:94 | sb7 : TextStringBuilder | TextStringBuilderTest.java:26:92:26:105 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:28:64:28:68 | auxsb [post update] : TextStringBuilder | TextStringBuilderTest.java:29:73:29:77 | auxsb : TextStringBuilder | provenance | | | TextStringBuilderTest.java:28:77:28:83 | taint(...) : String | TextStringBuilderTest.java:28:64:28:68 | auxsb [post update] : TextStringBuilder | provenance | MaD:568 | | TextStringBuilderTest.java:29:62:29:64 | sb8 [post update] : TextStringBuilder | TextStringBuilderTest.java:29:86:29:88 | sb8 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:29:73:29:77 | auxsb : TextStringBuilder | TextStringBuilderTest.java:29:62:29:64 | sb8 [post update] : TextStringBuilder | provenance | MaD:578 | -| TextStringBuilderTest.java:29:86:29:88 | sb8 : TextStringBuilder | TextStringBuilderTest.java:29:86:29:99 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:29:86:29:88 | sb8 : TextStringBuilder | TextStringBuilderTest.java:29:86:29:99 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:29:86:29:88 | sb8 : TextStringBuilder | TextStringBuilderTest.java:29:86:29:99 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:31:58:31:60 | sb9 [post update] : TextStringBuilder | TextStringBuilderTest.java:31:102:31:104 | sb9 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:31:69:31:93 | new StringBuffer(...) : StringBuffer | TextStringBuilderTest.java:31:58:31:60 | sb9 [post update] : TextStringBuilder | provenance | MaD:572 | -| TextStringBuilderTest.java:31:86:31:92 | taint(...) : String | TextStringBuilderTest.java:31:69:31:93 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| TextStringBuilderTest.java:31:102:31:104 | sb9 : TextStringBuilder | TextStringBuilderTest.java:31:102:31:115 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:31:86:31:92 | taint(...) : String | TextStringBuilderTest.java:31:69:31:93 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| TextStringBuilderTest.java:31:102:31:104 | sb9 : TextStringBuilder | TextStringBuilderTest.java:31:102:31:115 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:31:102:31:104 | sb9 : TextStringBuilder | TextStringBuilderTest.java:31:102:31:115 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:32:59:32:62 | sb10 [post update] : TextStringBuilder | TextStringBuilderTest.java:32:110:32:113 | sb10 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:32:71:32:95 | new StringBuffer(...) : StringBuffer | TextStringBuilderTest.java:32:59:32:62 | sb10 [post update] : TextStringBuilder | provenance | MaD:573 | -| TextStringBuilderTest.java:32:88:32:94 | taint(...) : String | TextStringBuilderTest.java:32:71:32:95 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| TextStringBuilderTest.java:32:110:32:113 | sb10 : TextStringBuilder | TextStringBuilderTest.java:32:110:32:124 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:32:88:32:94 | taint(...) : String | TextStringBuilderTest.java:32:71:32:95 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| TextStringBuilderTest.java:32:110:32:113 | sb10 : TextStringBuilder | TextStringBuilderTest.java:32:110:32:124 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:32:110:32:113 | sb10 : TextStringBuilder | TextStringBuilderTest.java:32:110:32:124 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:33:59:33:62 | sb11 [post update] : TextStringBuilder | TextStringBuilderTest.java:33:105:33:108 | sb11 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:33:71:33:96 | new StringBuilder(...) : StringBuilder | TextStringBuilderTest.java:33:59:33:62 | sb11 [post update] : TextStringBuilder | provenance | MaD:574 | -| TextStringBuilderTest.java:33:89:33:95 | taint(...) : String | TextStringBuilderTest.java:33:71:33:96 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| TextStringBuilderTest.java:33:105:33:108 | sb11 : TextStringBuilder | TextStringBuilderTest.java:33:105:33:119 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:33:89:33:95 | taint(...) : String | TextStringBuilderTest.java:33:71:33:96 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| TextStringBuilderTest.java:33:105:33:108 | sb11 : TextStringBuilder | TextStringBuilderTest.java:33:105:33:119 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:33:105:33:108 | sb11 : TextStringBuilder | TextStringBuilderTest.java:33:105:33:119 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:34:59:34:62 | sb12 [post update] : TextStringBuilder | TextStringBuilderTest.java:34:111:34:114 | sb12 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:34:71:34:96 | new StringBuilder(...) : StringBuilder | TextStringBuilderTest.java:34:59:34:62 | sb12 [post update] : TextStringBuilder | provenance | MaD:575 | -| TextStringBuilderTest.java:34:89:34:95 | taint(...) : String | TextStringBuilderTest.java:34:71:34:96 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| TextStringBuilderTest.java:34:111:34:114 | sb12 : TextStringBuilder | TextStringBuilderTest.java:34:111:34:125 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:34:89:34:95 | taint(...) : String | TextStringBuilderTest.java:34:71:34:96 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| TextStringBuilderTest.java:34:111:34:114 | sb12 : TextStringBuilder | TextStringBuilderTest.java:34:111:34:125 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:34:111:34:114 | sb12 : TextStringBuilder | TextStringBuilderTest.java:34:111:34:125 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:35:59:35:62 | sb13 [post update] : TextStringBuilder | TextStringBuilderTest.java:35:86:35:89 | sb13 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:35:71:35:77 | taint(...) : String | TextStringBuilderTest.java:35:59:35:62 | sb13 [post update] : TextStringBuilder | provenance | MaD:568 | -| TextStringBuilderTest.java:35:86:35:89 | sb13 : TextStringBuilder | TextStringBuilderTest.java:35:86:35:100 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:35:86:35:89 | sb13 : TextStringBuilder | TextStringBuilderTest.java:35:86:35:100 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:35:86:35:89 | sb13 : TextStringBuilder | TextStringBuilderTest.java:35:86:35:100 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:36:59:36:62 | sb14 [post update] : TextStringBuilder | TextStringBuilderTest.java:36:92:36:95 | sb14 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:36:71:36:77 | taint(...) : String | TextStringBuilderTest.java:36:59:36:62 | sb14 [post update] : TextStringBuilder | provenance | MaD:569 | -| TextStringBuilderTest.java:36:92:36:95 | sb14 : TextStringBuilder | TextStringBuilderTest.java:36:92:36:106 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:36:92:36:95 | sb14 : TextStringBuilder | TextStringBuilderTest.java:36:92:36:106 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:36:92:36:95 | sb14 : TextStringBuilder | TextStringBuilderTest.java:36:92:36:106 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:37:59:37:62 | sb15 [post update] : TextStringBuilder | TextStringBuilderTest.java:37:104:37:107 | sb15 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:37:71:37:77 | taint(...) : String | TextStringBuilderTest.java:37:59:37:62 | sb15 [post update] : TextStringBuilder | provenance | MaD:570 | -| TextStringBuilderTest.java:37:104:37:107 | sb15 : TextStringBuilder | TextStringBuilderTest.java:37:104:37:118 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:37:104:37:107 | sb15 : TextStringBuilder | TextStringBuilderTest.java:37:104:37:118 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:37:104:37:107 | sb15 : TextStringBuilder | TextStringBuilderTest.java:37:104:37:118 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:38:59:38:62 | sb16 [post update] : TextStringBuilder | TextStringBuilderTest.java:38:111:38:114 | sb16 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:38:59:38:103 | new ..[] { .. } : Object[] [[]] : String | TextStringBuilderTest.java:38:59:38:62 | sb16 [post update] : TextStringBuilder | provenance | MaD:571 | | TextStringBuilderTest.java:38:88:38:94 | taint(...) : String | TextStringBuilderTest.java:38:59:38:103 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| TextStringBuilderTest.java:38:111:38:114 | sb16 : TextStringBuilder | TextStringBuilderTest.java:38:111:38:125 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:38:111:38:114 | sb16 : TextStringBuilder | TextStringBuilderTest.java:38:111:38:125 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:38:111:38:114 | sb16 : TextStringBuilder | TextStringBuilderTest.java:38:111:38:125 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:41:13:41:23 | taintedList [post update] : ArrayList [] : String | TextStringBuilderTest.java:42:78:42:88 | taintedList : ArrayList [] : String | provenance | | | TextStringBuilderTest.java:41:13:41:23 | taintedList [post update] : ArrayList [] : String | TextStringBuilderTest.java:43:78:43:88 | taintedList : ArrayList [] : String | provenance | | | TextStringBuilderTest.java:41:29:41:35 | taint(...) : String | TextStringBuilderTest.java:41:13:41:23 | taintedList [post update] : ArrayList [] : String | provenance | MaD:11 | | TextStringBuilderTest.java:42:63:42:66 | sb17 [post update] : TextStringBuilder | TextStringBuilderTest.java:42:97:42:100 | sb17 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:42:78:42:88 | taintedList : ArrayList [] : String | TextStringBuilderTest.java:42:63:42:66 | sb17 [post update] : TextStringBuilder | provenance | MaD:580 | -| TextStringBuilderTest.java:42:97:42:100 | sb17 : TextStringBuilder | TextStringBuilderTest.java:42:97:42:111 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:42:97:42:100 | sb17 : TextStringBuilder | TextStringBuilderTest.java:42:97:42:111 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:42:97:42:100 | sb17 : TextStringBuilder | TextStringBuilderTest.java:42:97:42:111 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:43:63:43:66 | sb18 [post update] : TextStringBuilder | TextStringBuilderTest.java:43:108:43:111 | sb18 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:43:78:43:88 | taintedList : ArrayList [] : String | TextStringBuilderTest.java:43:78:43:99 | iterator(...) : Iterator [] : String | provenance | MaD:7 | +| TextStringBuilderTest.java:43:78:43:88 | taintedList : ArrayList [] : String | TextStringBuilderTest.java:43:78:43:99 | iterator(...) : Iterator [] : String | provenance | MaD:6 | | TextStringBuilderTest.java:43:78:43:99 | iterator(...) : Iterator [] : String | TextStringBuilderTest.java:43:63:43:66 | sb18 [post update] : TextStringBuilder | provenance | MaD:581 | -| TextStringBuilderTest.java:43:108:43:111 | sb18 : TextStringBuilder | TextStringBuilderTest.java:43:108:43:122 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:43:108:43:111 | sb18 : TextStringBuilder | TextStringBuilderTest.java:43:108:43:122 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:43:108:43:111 | sb18 : TextStringBuilder | TextStringBuilderTest.java:43:108:43:122 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:45:59:45:62 | sb19 [post update] : TextStringBuilder | TextStringBuilderTest.java:45:98:45:101 | sb19 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:45:59:45:90 | new ..[] { .. } : Object[] [[]] : String | TextStringBuilderTest.java:45:59:45:62 | sb19 [post update] : TextStringBuilder | provenance | MaD:582 | | TextStringBuilderTest.java:45:83:45:89 | taint(...) : String | TextStringBuilderTest.java:45:59:45:90 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| TextStringBuilderTest.java:45:98:45:101 | sb19 : TextStringBuilder | TextStringBuilderTest.java:45:98:45:112 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:45:98:45:101 | sb19 : TextStringBuilder | TextStringBuilderTest.java:45:98:45:112 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:45:98:45:101 | sb19 : TextStringBuilder | TextStringBuilderTest.java:45:98:45:112 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:46:59:46:62 | sb20 [post update] : TextStringBuilder | TextStringBuilderTest.java:46:98:46:101 | sb20 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:46:59:46:90 | new ..[] { .. } : Object[] [[]] : String | TextStringBuilderTest.java:46:59:46:62 | sb20 [post update] : TextStringBuilder | provenance | MaD:582 | | TextStringBuilderTest.java:46:74:46:80 | taint(...) : String | TextStringBuilderTest.java:46:59:46:90 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| TextStringBuilderTest.java:46:98:46:101 | sb20 : TextStringBuilder | TextStringBuilderTest.java:46:98:46:112 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:46:98:46:101 | sb20 : TextStringBuilder | TextStringBuilderTest.java:46:98:46:112 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:46:98:46:101 | sb20 : TextStringBuilder | TextStringBuilderTest.java:46:98:46:112 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:47:59:47:62 | sb21 [post update] : TextStringBuilder | TextStringBuilderTest.java:47:111:47:114 | sb21 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:47:88:47:94 | taint(...) : String | TextStringBuilderTest.java:47:59:47:62 | sb21 [post update] : TextStringBuilder | provenance | MaD:584 | -| TextStringBuilderTest.java:47:111:47:114 | sb21 : TextStringBuilder | TextStringBuilderTest.java:47:111:47:125 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:47:111:47:114 | sb21 : TextStringBuilder | TextStringBuilderTest.java:47:111:47:125 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:47:111:47:114 | sb21 : TextStringBuilder | TextStringBuilderTest.java:47:111:47:125 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:48:59:48:62 | sb22 [post update] : TextStringBuilder | TextStringBuilderTest.java:48:112:48:115 | sb22 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:48:89:48:95 | taint(...) : String | TextStringBuilderTest.java:48:59:48:62 | sb22 [post update] : TextStringBuilder | provenance | MaD:586 | -| TextStringBuilderTest.java:48:112:48:115 | sb22 : TextStringBuilder | TextStringBuilderTest.java:48:112:48:126 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:48:112:48:115 | sb22 : TextStringBuilder | TextStringBuilderTest.java:48:112:48:126 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:48:112:48:115 | sb22 : TextStringBuilder | TextStringBuilderTest.java:48:112:48:126 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:49:59:49:62 | sb23 [post update] : TextStringBuilder | TextStringBuilderTest.java:49:102:49:105 | sb23 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:49:73:49:79 | taint(...) : String | TextStringBuilderTest.java:49:73:49:93 | toCharArray(...) : char[] | provenance | MaD:8 | +| TextStringBuilderTest.java:49:73:49:79 | taint(...) : String | TextStringBuilderTest.java:49:73:49:93 | toCharArray(...) : char[] | provenance | MaD:7 | | TextStringBuilderTest.java:49:73:49:93 | toCharArray(...) : char[] | TextStringBuilderTest.java:49:59:49:62 | sb23 [post update] : TextStringBuilder | provenance | MaD:601 | -| TextStringBuilderTest.java:49:102:49:105 | sb23 : TextStringBuilder | TextStringBuilderTest.java:49:102:49:116 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:49:102:49:105 | sb23 : TextStringBuilder | TextStringBuilderTest.java:49:102:49:116 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:49:102:49:105 | sb23 : TextStringBuilder | TextStringBuilderTest.java:49:102:49:116 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:50:59:50:62 | sb24 [post update] : TextStringBuilder | TextStringBuilderTest.java:50:108:50:111 | sb24 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:50:73:50:79 | taint(...) : String | TextStringBuilderTest.java:50:73:50:93 | toCharArray(...) : char[] | provenance | MaD:8 | +| TextStringBuilderTest.java:50:73:50:79 | taint(...) : String | TextStringBuilderTest.java:50:73:50:93 | toCharArray(...) : char[] | provenance | MaD:7 | | TextStringBuilderTest.java:50:73:50:93 | toCharArray(...) : char[] | TextStringBuilderTest.java:50:59:50:62 | sb24 [post update] : TextStringBuilder | provenance | MaD:602 | -| TextStringBuilderTest.java:50:108:50:111 | sb24 : TextStringBuilder | TextStringBuilderTest.java:50:108:50:122 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:50:108:50:111 | sb24 : TextStringBuilder | TextStringBuilderTest.java:50:108:50:122 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:50:108:50:111 | sb24 : TextStringBuilder | TextStringBuilderTest.java:50:108:50:122 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:51:59:51:62 | sb25 [post update] : TextStringBuilder | TextStringBuilderTest.java:51:96:51:99 | sb25 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:51:73:51:87 | (...)... : String | TextStringBuilderTest.java:51:59:51:62 | sb25 [post update] : TextStringBuilder | provenance | MaD:603 | | TextStringBuilderTest.java:51:81:51:87 | taint(...) : String | TextStringBuilderTest.java:51:73:51:87 | (...)... : String | provenance | | -| TextStringBuilderTest.java:51:96:51:99 | sb25 : TextStringBuilder | TextStringBuilderTest.java:51:96:51:110 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:51:96:51:99 | sb25 : TextStringBuilder | TextStringBuilderTest.java:51:96:51:110 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:51:96:51:99 | sb25 : TextStringBuilder | TextStringBuilderTest.java:51:96:51:110 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:53:64:53:68 | auxsb [post update] : TextStringBuilder | TextStringBuilderTest.java:54:77:54:81 | auxsb : TextStringBuilder | provenance | | | TextStringBuilderTest.java:53:79:53:85 | taint(...) : String | TextStringBuilderTest.java:53:64:53:68 | auxsb [post update] : TextStringBuilder | provenance | MaD:604 | | TextStringBuilderTest.java:54:63:54:66 | sb26 [post update] : TextStringBuilder | TextStringBuilderTest.java:54:90:54:93 | sb26 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:54:77:54:81 | auxsb : TextStringBuilder | TextStringBuilderTest.java:54:63:54:66 | sb26 [post update] : TextStringBuilder | provenance | MaD:612 | -| TextStringBuilderTest.java:54:90:54:93 | sb26 : TextStringBuilder | TextStringBuilderTest.java:54:90:54:104 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:54:90:54:93 | sb26 : TextStringBuilder | TextStringBuilderTest.java:54:90:54:104 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:54:90:54:93 | sb26 : TextStringBuilder | TextStringBuilderTest.java:54:90:54:104 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:56:59:56:62 | sb27 [post update] : TextStringBuilder | TextStringBuilderTest.java:56:106:56:109 | sb27 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:56:73:56:97 | new StringBuffer(...) : StringBuffer | TextStringBuilderTest.java:56:59:56:62 | sb27 [post update] : TextStringBuilder | provenance | MaD:608 | -| TextStringBuilderTest.java:56:90:56:96 | taint(...) : String | TextStringBuilderTest.java:56:73:56:97 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| TextStringBuilderTest.java:56:106:56:109 | sb27 : TextStringBuilder | TextStringBuilderTest.java:56:106:56:120 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:56:90:56:96 | taint(...) : String | TextStringBuilderTest.java:56:73:56:97 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| TextStringBuilderTest.java:56:106:56:109 | sb27 : TextStringBuilder | TextStringBuilderTest.java:56:106:56:120 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:56:106:56:109 | sb27 : TextStringBuilder | TextStringBuilderTest.java:56:106:56:120 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:57:59:57:62 | sb28 [post update] : TextStringBuilder | TextStringBuilderTest.java:57:112:57:115 | sb28 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:57:73:57:97 | new StringBuffer(...) : StringBuffer | TextStringBuilderTest.java:57:59:57:62 | sb28 [post update] : TextStringBuilder | provenance | MaD:609 | -| TextStringBuilderTest.java:57:90:57:96 | taint(...) : String | TextStringBuilderTest.java:57:73:57:97 | new StringBuffer(...) : StringBuffer | provenance | MaD:9 | -| TextStringBuilderTest.java:57:112:57:115 | sb28 : TextStringBuilder | TextStringBuilderTest.java:57:112:57:126 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:57:90:57:96 | taint(...) : String | TextStringBuilderTest.java:57:73:57:97 | new StringBuffer(...) : StringBuffer | provenance | MaD:8 | +| TextStringBuilderTest.java:57:112:57:115 | sb28 : TextStringBuilder | TextStringBuilderTest.java:57:112:57:126 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:57:112:57:115 | sb28 : TextStringBuilder | TextStringBuilderTest.java:57:112:57:126 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:58:59:58:62 | sb29 [post update] : TextStringBuilder | TextStringBuilderTest.java:58:107:58:110 | sb29 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:58:73:58:98 | new StringBuilder(...) : StringBuilder | TextStringBuilderTest.java:58:59:58:62 | sb29 [post update] : TextStringBuilder | provenance | MaD:610 | -| TextStringBuilderTest.java:58:91:58:97 | taint(...) : String | TextStringBuilderTest.java:58:73:58:98 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| TextStringBuilderTest.java:58:107:58:110 | sb29 : TextStringBuilder | TextStringBuilderTest.java:58:107:58:121 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:58:91:58:97 | taint(...) : String | TextStringBuilderTest.java:58:73:58:98 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| TextStringBuilderTest.java:58:107:58:110 | sb29 : TextStringBuilder | TextStringBuilderTest.java:58:107:58:121 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:58:107:58:110 | sb29 : TextStringBuilder | TextStringBuilderTest.java:58:107:58:121 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:59:59:59:62 | sb30 [post update] : TextStringBuilder | TextStringBuilderTest.java:59:113:59:116 | sb30 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:59:73:59:98 | new StringBuilder(...) : StringBuilder | TextStringBuilderTest.java:59:59:59:62 | sb30 [post update] : TextStringBuilder | provenance | MaD:611 | -| TextStringBuilderTest.java:59:91:59:97 | taint(...) : String | TextStringBuilderTest.java:59:73:59:98 | new StringBuilder(...) : StringBuilder | provenance | MaD:10 | -| TextStringBuilderTest.java:59:113:59:116 | sb30 : TextStringBuilder | TextStringBuilderTest.java:59:113:59:127 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:59:91:59:97 | taint(...) : String | TextStringBuilderTest.java:59:73:59:98 | new StringBuilder(...) : StringBuilder | provenance | MaD:9 | +| TextStringBuilderTest.java:59:113:59:116 | sb30 : TextStringBuilder | TextStringBuilderTest.java:59:113:59:127 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:59:113:59:116 | sb30 : TextStringBuilder | TextStringBuilderTest.java:59:113:59:127 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:60:59:60:62 | sb31 [post update] : TextStringBuilder | TextStringBuilderTest.java:60:88:60:91 | sb31 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:60:73:60:79 | taint(...) : String | TextStringBuilderTest.java:60:59:60:62 | sb31 [post update] : TextStringBuilder | provenance | MaD:604 | -| TextStringBuilderTest.java:60:88:60:91 | sb31 : TextStringBuilder | TextStringBuilderTest.java:60:88:60:102 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:60:88:60:91 | sb31 : TextStringBuilder | TextStringBuilderTest.java:60:88:60:102 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:60:88:60:91 | sb31 : TextStringBuilder | TextStringBuilderTest.java:60:88:60:102 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:61:59:61:62 | sb32 [post update] : TextStringBuilder | TextStringBuilderTest.java:61:94:61:97 | sb32 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:61:73:61:79 | taint(...) : String | TextStringBuilderTest.java:61:59:61:62 | sb32 [post update] : TextStringBuilder | provenance | MaD:605 | -| TextStringBuilderTest.java:61:94:61:97 | sb32 : TextStringBuilder | TextStringBuilderTest.java:61:94:61:108 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:61:94:61:97 | sb32 : TextStringBuilder | TextStringBuilderTest.java:61:94:61:108 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:61:94:61:97 | sb32 : TextStringBuilder | TextStringBuilderTest.java:61:94:61:108 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:62:59:62:62 | sb33 [post update] : TextStringBuilder | TextStringBuilderTest.java:62:106:62:109 | sb33 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:62:73:62:79 | taint(...) : String | TextStringBuilderTest.java:62:59:62:62 | sb33 [post update] : TextStringBuilder | provenance | MaD:606 | -| TextStringBuilderTest.java:62:106:62:109 | sb33 : TextStringBuilder | TextStringBuilderTest.java:62:106:62:120 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:62:106:62:109 | sb33 : TextStringBuilder | TextStringBuilderTest.java:62:106:62:120 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:62:106:62:109 | sb33 : TextStringBuilder | TextStringBuilderTest.java:62:106:62:120 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:63:59:63:62 | sb34 [post update] : TextStringBuilder | TextStringBuilderTest.java:63:113:63:116 | sb34 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:63:59:63:105 | new ..[] { .. } : Object[] [[]] : String | TextStringBuilderTest.java:63:59:63:62 | sb34 [post update] : TextStringBuilder | provenance | MaD:607 | | TextStringBuilderTest.java:63:90:63:96 | taint(...) : String | TextStringBuilderTest.java:63:59:63:105 | new ..[] { .. } : Object[] [[]] : String | provenance | | -| TextStringBuilderTest.java:63:113:63:116 | sb34 : TextStringBuilder | TextStringBuilderTest.java:63:113:63:127 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:63:113:63:116 | sb34 : TextStringBuilder | TextStringBuilderTest.java:63:113:63:127 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:63:113:63:116 | sb34 : TextStringBuilder | TextStringBuilderTest.java:63:113:63:127 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:64:59:64:62 | sb35 [post update] : TextStringBuilder | TextStringBuilderTest.java:64:95:64:98 | sb35 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:64:80:64:86 | taint(...) : String | TextStringBuilderTest.java:64:59:64:62 | sb35 [post update] : TextStringBuilder | provenance | MaD:591 | -| TextStringBuilderTest.java:64:95:64:98 | sb35 : TextStringBuilder | TextStringBuilderTest.java:64:95:64:109 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:64:95:64:98 | sb35 : TextStringBuilder | TextStringBuilderTest.java:64:95:64:109 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:64:95:64:98 | sb35 : TextStringBuilder | TextStringBuilderTest.java:64:95:64:109 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:65:59:65:62 | sb36 [post update] : TextStringBuilder | TextStringBuilderTest.java:65:98:65:101 | sb36 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:65:80:65:86 | taint(...) : String | TextStringBuilderTest.java:65:59:65:62 | sb36 [post update] : TextStringBuilder | provenance | MaD:592 | -| TextStringBuilderTest.java:65:98:65:101 | sb36 : TextStringBuilder | TextStringBuilderTest.java:65:98:65:112 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:65:98:65:101 | sb36 : TextStringBuilder | TextStringBuilderTest.java:65:98:65:112 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:65:98:65:101 | sb36 : TextStringBuilder | TextStringBuilderTest.java:65:98:65:112 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:66:59:66:62 | sb37 [post update] : TextStringBuilder | TextStringBuilderTest.java:66:106:66:109 | sb37 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:66:80:66:86 | taint(...) : String | TextStringBuilderTest.java:66:59:66:62 | sb37 [post update] : TextStringBuilder | provenance | MaD:593 | -| TextStringBuilderTest.java:66:106:66:109 | sb37 : TextStringBuilder | TextStringBuilderTest.java:66:106:66:120 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:66:106:66:109 | sb37 : TextStringBuilder | TextStringBuilderTest.java:66:106:66:120 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:66:106:66:109 | sb37 : TextStringBuilder | TextStringBuilderTest.java:66:106:66:120 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:67:59:67:62 | sb38 [post update] : TextStringBuilder | TextStringBuilderTest.java:67:99:67:102 | sb38 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:67:84:67:90 | taint(...) : String | TextStringBuilderTest.java:67:59:67:62 | sb38 [post update] : TextStringBuilder | provenance | MaD:593 | -| TextStringBuilderTest.java:67:99:67:102 | sb38 : TextStringBuilder | TextStringBuilderTest.java:67:99:67:113 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:67:99:67:102 | sb38 : TextStringBuilder | TextStringBuilderTest.java:67:99:67:113 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:67:99:67:102 | sb38 : TextStringBuilder | TextStringBuilderTest.java:67:99:67:113 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:69:64:69:68 | auxsb [post update] : TextStringBuilder | TextStringBuilderTest.java:70:63:70:67 | auxsb : TextStringBuilder | provenance | | | TextStringBuilderTest.java:69:79:69:85 | taint(...) : String | TextStringBuilderTest.java:69:64:69:68 | auxsb [post update] : TextStringBuilder | provenance | MaD:604 | | TextStringBuilderTest.java:70:63:70:67 | auxsb : TextStringBuilder | TextStringBuilderTest.java:70:78:70:81 | sb39 [post update] : TextStringBuilder | provenance | MaD:594 | | TextStringBuilderTest.java:70:78:70:81 | sb39 [post update] : TextStringBuilder | TextStringBuilderTest.java:70:90:70:93 | sb39 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:70:90:70:93 | sb39 : TextStringBuilder | TextStringBuilderTest.java:70:90:70:104 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:70:90:70:93 | sb39 : TextStringBuilder | TextStringBuilderTest.java:70:90:70:104 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:70:90:70:93 | sb39 : TextStringBuilder | TextStringBuilderTest.java:70:90:70:104 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:74:13:74:23 | taintedList [post update] : ArrayList [] : String | TextStringBuilderTest.java:75:89:75:99 | taintedList : ArrayList [] : String | provenance | | | TextStringBuilderTest.java:74:13:74:23 | taintedList [post update] : ArrayList [] : String | TextStringBuilderTest.java:76:89:76:99 | taintedList : ArrayList [] : String | provenance | | | TextStringBuilderTest.java:74:29:74:35 | taint(...) : String | TextStringBuilderTest.java:74:13:74:23 | taintedList [post update] : ArrayList [] : String | provenance | MaD:11 | | TextStringBuilderTest.java:75:63:75:66 | sb40 [post update] : TextStringBuilder | TextStringBuilderTest.java:75:114:75:117 | sb40 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:75:89:75:99 | taintedList : ArrayList [] : String | TextStringBuilderTest.java:75:63:75:66 | sb40 [post update] : TextStringBuilder | provenance | MaD:597 | -| TextStringBuilderTest.java:75:114:75:117 | sb40 : TextStringBuilder | TextStringBuilderTest.java:75:114:75:128 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:75:114:75:117 | sb40 : TextStringBuilder | TextStringBuilderTest.java:75:114:75:128 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:75:114:75:117 | sb40 : TextStringBuilder | TextStringBuilderTest.java:75:114:75:128 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:76:63:76:66 | sb41 [post update] : TextStringBuilder | TextStringBuilderTest.java:76:125:76:128 | sb41 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:76:89:76:99 | taintedList : ArrayList [] : String | TextStringBuilderTest.java:76:89:76:110 | iterator(...) : Iterator [] : String | provenance | MaD:7 | +| TextStringBuilderTest.java:76:89:76:99 | taintedList : ArrayList [] : String | TextStringBuilderTest.java:76:89:76:110 | iterator(...) : Iterator [] : String | provenance | MaD:6 | | TextStringBuilderTest.java:76:89:76:110 | iterator(...) : Iterator [] : String | TextStringBuilderTest.java:76:63:76:66 | sb41 [post update] : TextStringBuilder | provenance | MaD:598 | -| TextStringBuilderTest.java:76:125:76:128 | sb41 : TextStringBuilder | TextStringBuilderTest.java:76:125:76:139 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:76:125:76:128 | sb41 : TextStringBuilder | TextStringBuilderTest.java:76:125:76:139 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:76:125:76:128 | sb41 : TextStringBuilder | TextStringBuilderTest.java:76:125:76:139 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:78:63:78:66 | sb42 [post update] : TextStringBuilder | TextStringBuilderTest.java:78:119:78:122 | sb42 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:78:104:78:110 | taint(...) : String | TextStringBuilderTest.java:78:63:78:66 | sb42 [post update] : TextStringBuilder | provenance | MaD:596 | -| TextStringBuilderTest.java:78:119:78:122 | sb42 : TextStringBuilder | TextStringBuilderTest.java:78:119:78:133 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:78:119:78:122 | sb42 : TextStringBuilder | TextStringBuilderTest.java:78:119:78:133 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:78:119:78:122 | sb42 : TextStringBuilder | TextStringBuilderTest.java:78:119:78:133 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:79:63:79:66 | sb43 [post update] : TextStringBuilder | TextStringBuilderTest.java:79:130:79:133 | sb43 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:79:115:79:121 | taint(...) : String | TextStringBuilderTest.java:79:63:79:66 | sb43 [post update] : TextStringBuilder | provenance | MaD:596 | -| TextStringBuilderTest.java:79:130:79:133 | sb43 : TextStringBuilder | TextStringBuilderTest.java:79:130:79:144 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:79:130:79:133 | sb43 : TextStringBuilder | TextStringBuilderTest.java:79:130:79:144 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:79:130:79:133 | sb43 : TextStringBuilder | TextStringBuilderTest.java:79:130:79:144 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:80:37:80:60 | {...} : String[] [[]] : String | TextStringBuilderTest.java:82:89:82:100 | taintedArray : String[] [[]] : String | provenance | | | TextStringBuilderTest.java:80:52:80:58 | taint(...) : String | TextStringBuilderTest.java:80:37:80:60 | {...} : String[] [[]] : String | provenance | | | TextStringBuilderTest.java:82:63:82:66 | sb44 [post update] : TextStringBuilder | TextStringBuilderTest.java:82:115:82:118 | sb44 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:82:89:82:100 | taintedArray : String[] [[]] : String | TextStringBuilderTest.java:82:63:82:66 | sb44 [post update] : TextStringBuilder | provenance | MaD:599 | -| TextStringBuilderTest.java:82:115:82:118 | sb44 : TextStringBuilder | TextStringBuilderTest.java:82:115:82:129 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:82:115:82:118 | sb44 : TextStringBuilder | TextStringBuilderTest.java:82:115:82:129 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:82:115:82:118 | sb44 : TextStringBuilder | TextStringBuilderTest.java:82:115:82:129 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:83:63:83:66 | sb45 [post update] : TextStringBuilder | TextStringBuilderTest.java:83:120:83:123 | sb45 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:83:105:83:111 | taint(...) : String | TextStringBuilderTest.java:83:63:83:66 | sb45 [post update] : TextStringBuilder | provenance | MaD:596 | -| TextStringBuilderTest.java:83:120:83:123 | sb45 : TextStringBuilder | TextStringBuilderTest.java:83:120:83:134 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:83:120:83:123 | sb45 : TextStringBuilder | TextStringBuilderTest.java:83:120:83:134 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:83:120:83:123 | sb45 : TextStringBuilder | TextStringBuilderTest.java:83:120:83:134 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:86:63:86:66 | sb46 [post update] : TextStringBuilder | TextStringBuilderTest.java:88:13:88:16 | sb46 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:86:75:86:81 | taint(...) : String | TextStringBuilderTest.java:86:63:86:66 | sb46 [post update] : TextStringBuilder | provenance | MaD:568 | | TextStringBuilderTest.java:88:13:88:16 | sb46 : TextStringBuilder | TextStringBuilderTest.java:88:13:88:27 | asReader(...) : Reader | provenance | MaD:613 | -| TextStringBuilderTest.java:88:13:88:27 | asReader(...) : Reader | TextStringBuilderTest.java:88:34:88:39 | target [post update] : char[] | provenance | MaD:2 | +| TextStringBuilderTest.java:88:13:88:27 | asReader(...) : Reader | TextStringBuilderTest.java:88:34:88:39 | target [post update] : char[] | provenance | MaD:1 | | TextStringBuilderTest.java:88:34:88:39 | target [post update] : char[] | TextStringBuilderTest.java:89:18:89:23 | target | provenance | | | TextStringBuilderTest.java:91:59:91:62 | sb47 [post update] : TextStringBuilder | TextStringBuilderTest.java:91:86:91:89 | sb47 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:91:71:91:77 | taint(...) : String | TextStringBuilderTest.java:91:59:91:62 | sb47 [post update] : TextStringBuilder | provenance | MaD:568 | @@ -3038,23 +3038,23 @@ edges | TextStringBuilderTest.java:103:13:103:16 | sb51 : TextStringBuilder | TextStringBuilderTest.java:103:33:103:38 | target [post update] : char[] | provenance | MaD:623 | | TextStringBuilderTest.java:103:33:103:38 | target [post update] : char[] | TextStringBuilderTest.java:104:18:104:23 | target | provenance | | | TextStringBuilderTest.java:106:59:106:62 | sb52 [post update] : TextStringBuilder | TextStringBuilderTest.java:106:103:106:106 | sb52 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:106:74:106:80 | taint(...) : String | TextStringBuilderTest.java:106:74:106:94 | toCharArray(...) : char[] | provenance | MaD:8 | +| TextStringBuilderTest.java:106:74:106:80 | taint(...) : String | TextStringBuilderTest.java:106:74:106:94 | toCharArray(...) : char[] | provenance | MaD:7 | | TextStringBuilderTest.java:106:74:106:94 | toCharArray(...) : char[] | TextStringBuilderTest.java:106:59:106:62 | sb52 [post update] : TextStringBuilder | provenance | MaD:625 | -| TextStringBuilderTest.java:106:103:106:106 | sb52 : TextStringBuilder | TextStringBuilderTest.java:106:103:106:117 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:106:103:106:106 | sb52 : TextStringBuilder | TextStringBuilderTest.java:106:103:106:117 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:106:103:106:106 | sb52 : TextStringBuilder | TextStringBuilderTest.java:106:103:106:117 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:107:59:107:62 | sb53 [post update] : TextStringBuilder | TextStringBuilderTest.java:107:109:107:112 | sb53 : TextStringBuilder | provenance | | -| TextStringBuilderTest.java:107:74:107:80 | taint(...) : String | TextStringBuilderTest.java:107:74:107:94 | toCharArray(...) : char[] | provenance | MaD:8 | +| TextStringBuilderTest.java:107:74:107:80 | taint(...) : String | TextStringBuilderTest.java:107:74:107:94 | toCharArray(...) : char[] | provenance | MaD:7 | | TextStringBuilderTest.java:107:74:107:94 | toCharArray(...) : char[] | TextStringBuilderTest.java:107:59:107:62 | sb53 [post update] : TextStringBuilder | provenance | MaD:625 | -| TextStringBuilderTest.java:107:109:107:112 | sb53 : TextStringBuilder | TextStringBuilderTest.java:107:109:107:123 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:107:109:107:112 | sb53 : TextStringBuilder | TextStringBuilderTest.java:107:109:107:123 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:107:109:107:112 | sb53 : TextStringBuilder | TextStringBuilderTest.java:107:109:107:123 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:108:59:108:62 | sb54 [post update] : TextStringBuilder | TextStringBuilderTest.java:108:89:108:92 | sb54 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:108:74:108:80 | taint(...) : String | TextStringBuilderTest.java:108:59:108:62 | sb54 [post update] : TextStringBuilder | provenance | MaD:625 | -| TextStringBuilderTest.java:108:89:108:92 | sb54 : TextStringBuilder | TextStringBuilderTest.java:108:89:108:103 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:108:89:108:92 | sb54 : TextStringBuilder | TextStringBuilderTest.java:108:89:108:103 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:108:89:108:92 | sb54 : TextStringBuilder | TextStringBuilderTest.java:108:89:108:103 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:109:59:109:62 | sb55 [post update] : TextStringBuilder | TextStringBuilderTest.java:109:97:109:100 | sb55 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:109:74:109:88 | (...)... : String | TextStringBuilderTest.java:109:59:109:62 | sb55 [post update] : TextStringBuilder | provenance | MaD:625 | | TextStringBuilderTest.java:109:82:109:88 | taint(...) : String | TextStringBuilderTest.java:109:74:109:88 | (...)... : String | provenance | | -| TextStringBuilderTest.java:109:97:109:100 | sb55 : TextStringBuilder | TextStringBuilderTest.java:109:97:109:111 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:109:97:109:100 | sb55 : TextStringBuilder | TextStringBuilderTest.java:109:97:109:111 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:109:97:109:100 | sb55 : TextStringBuilder | TextStringBuilderTest.java:109:97:109:111 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:110:59:110:62 | sb56 [post update] : TextStringBuilder | TextStringBuilderTest.java:110:86:110:89 | sb56 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:110:71:110:77 | taint(...) : String | TextStringBuilderTest.java:110:59:110:62 | sb56 [post update] : TextStringBuilder | provenance | MaD:568 | @@ -3063,41 +3063,41 @@ edges | TextStringBuilderTest.java:111:71:111:77 | taint(...) : String | TextStringBuilderTest.java:111:59:111:62 | sb57 [post update] : TextStringBuilder | provenance | MaD:568 | | TextStringBuilderTest.java:111:86:111:89 | sb57 : TextStringBuilder | TextStringBuilderTest.java:111:86:111:105 | midString(...) | provenance | MaD:627 | | TextStringBuilderTest.java:113:35:113:59 | new StringReader(...) : StringReader | TextStringBuilderTest.java:114:77:114:82 | reader : StringReader | provenance | | -| TextStringBuilderTest.java:113:52:113:58 | taint(...) : String | TextStringBuilderTest.java:113:35:113:59 | new StringReader(...) : StringReader | provenance | MaD:3 | +| TextStringBuilderTest.java:113:52:113:58 | taint(...) : String | TextStringBuilderTest.java:113:35:113:59 | new StringReader(...) : StringReader | provenance | MaD:2 | | TextStringBuilderTest.java:114:63:114:66 | sb58 [post update] : TextStringBuilder | TextStringBuilderTest.java:114:91:114:94 | sb58 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:114:77:114:82 | reader : StringReader | TextStringBuilderTest.java:114:63:114:66 | sb58 [post update] : TextStringBuilder | provenance | MaD:629 | -| TextStringBuilderTest.java:114:91:114:94 | sb58 : TextStringBuilder | TextStringBuilderTest.java:114:91:114:105 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:114:91:114:94 | sb58 : TextStringBuilder | TextStringBuilderTest.java:114:91:114:105 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:114:91:114:94 | sb58 : TextStringBuilder | TextStringBuilderTest.java:114:91:114:105 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:116:59:116:62 | sb59 [post update] : TextStringBuilder | TextStringBuilderTest.java:116:93:116:96 | sb59 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:116:78:116:84 | taint(...) : String | TextStringBuilderTest.java:116:59:116:62 | sb59 [post update] : TextStringBuilder | provenance | MaD:631 | -| TextStringBuilderTest.java:116:93:116:96 | sb59 : TextStringBuilder | TextStringBuilderTest.java:116:93:116:107 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:116:93:116:96 | sb59 : TextStringBuilder | TextStringBuilderTest.java:116:93:116:107 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:116:93:116:96 | sb59 : TextStringBuilder | TextStringBuilderTest.java:116:93:116:107 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:117:59:117:62 | sb60 [post update] : TextStringBuilder | TextStringBuilderTest.java:117:102:117:105 | sb60 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:117:78:117:84 | taint(...) : String | TextStringBuilderTest.java:117:59:117:62 | sb60 [post update] : TextStringBuilder | provenance | MaD:632 | -| TextStringBuilderTest.java:117:102:117:105 | sb60 : TextStringBuilder | TextStringBuilderTest.java:117:102:117:116 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:117:102:117:105 | sb60 : TextStringBuilder | TextStringBuilderTest.java:117:102:117:116 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:117:102:117:105 | sb60 : TextStringBuilder | TextStringBuilderTest.java:117:102:117:116 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:118:59:118:62 | sb61 [post update] : TextStringBuilder | TextStringBuilderTest.java:118:111:118:114 | sb61 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:118:96:118:102 | taint(...) : String | TextStringBuilderTest.java:118:59:118:62 | sb61 [post update] : TextStringBuilder | provenance | MaD:634 | -| TextStringBuilderTest.java:118:111:118:114 | sb61 : TextStringBuilder | TextStringBuilderTest.java:118:111:118:125 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:118:111:118:114 | sb61 : TextStringBuilder | TextStringBuilderTest.java:118:111:118:125 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:118:111:118:114 | sb61 : TextStringBuilder | TextStringBuilderTest.java:118:111:118:125 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:119:59:119:62 | sb62 [post update] : TextStringBuilder | TextStringBuilderTest.java:119:100:119:103 | sb62 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:119:85:119:91 | taint(...) : String | TextStringBuilderTest.java:119:59:119:62 | sb62 [post update] : TextStringBuilder | provenance | MaD:634 | -| TextStringBuilderTest.java:119:100:119:103 | sb62 : TextStringBuilder | TextStringBuilderTest.java:119:100:119:114 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:119:100:119:103 | sb62 : TextStringBuilder | TextStringBuilderTest.java:119:100:119:114 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:119:100:119:103 | sb62 : TextStringBuilder | TextStringBuilderTest.java:119:100:119:114 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:121:59:121:62 | sb64 [post update] : TextStringBuilder | TextStringBuilderTest.java:121:113:121:116 | sb64 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:121:98:121:104 | taint(...) : String | TextStringBuilderTest.java:121:59:121:62 | sb64 [post update] : TextStringBuilder | provenance | MaD:636 | -| TextStringBuilderTest.java:121:113:121:116 | sb64 : TextStringBuilder | TextStringBuilderTest.java:121:113:121:127 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:121:113:121:116 | sb64 : TextStringBuilder | TextStringBuilderTest.java:121:113:121:127 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:121:113:121:116 | sb64 : TextStringBuilder | TextStringBuilderTest.java:121:113:121:127 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:122:59:122:62 | sb65 [post update] : TextStringBuilder | TextStringBuilderTest.java:122:102:122:105 | sb65 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:122:87:122:93 | taint(...) : String | TextStringBuilderTest.java:122:59:122:62 | sb65 [post update] : TextStringBuilder | provenance | MaD:636 | -| TextStringBuilderTest.java:122:102:122:105 | sb65 : TextStringBuilder | TextStringBuilderTest.java:122:102:122:116 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:122:102:122:105 | sb65 : TextStringBuilder | TextStringBuilderTest.java:122:102:122:116 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:122:102:122:105 | sb65 : TextStringBuilder | TextStringBuilderTest.java:122:102:122:116 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:124:59:124:62 | sb67 [post update] : TextStringBuilder | TextStringBuilderTest.java:124:86:124:89 | sb67 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:124:71:124:77 | taint(...) : String | TextStringBuilderTest.java:124:59:124:62 | sb67 [post update] : TextStringBuilder | provenance | MaD:568 | | TextStringBuilderTest.java:124:86:124:89 | sb67 : TextStringBuilder | TextStringBuilderTest.java:124:86:124:104 | rightString(...) | provenance | MaD:638 | | TextStringBuilderTest.java:125:59:125:62 | sb68 [post update] : TextStringBuilder | TextStringBuilderTest.java:125:86:125:89 | sb68 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:125:71:125:77 | taint(...) : String | TextStringBuilderTest.java:125:59:125:62 | sb68 [post update] : TextStringBuilder | provenance | MaD:568 | -| TextStringBuilderTest.java:125:86:125:89 | sb68 : TextStringBuilder | TextStringBuilderTest.java:125:86:125:107 | subSequence(...) | provenance | MaD:5 | +| TextStringBuilderTest.java:125:86:125:89 | sb68 : TextStringBuilder | TextStringBuilderTest.java:125:86:125:107 | subSequence(...) | provenance | MaD:4 | | TextStringBuilderTest.java:125:86:125:89 | sb68 : TextStringBuilder | TextStringBuilderTest.java:125:86:125:107 | subSequence(...) | provenance | MaD:643 | | TextStringBuilderTest.java:126:59:126:62 | sb69 [post update] : TextStringBuilder | TextStringBuilderTest.java:126:86:126:89 | sb69 : TextStringBuilder | provenance | | | TextStringBuilderTest.java:126:71:126:77 | taint(...) : String | TextStringBuilderTest.java:126:59:126:62 | sb69 [post update] : TextStringBuilder | provenance | MaD:568 | @@ -3118,16 +3118,16 @@ edges | TextStringBuilderTest.java:131:71:131:77 | taint(...) : String | TextStringBuilderTest.java:131:59:131:62 | sb74 [post update] : TextStringBuilder | provenance | MaD:568 | | TextStringBuilderTest.java:131:86:131:89 | sb74 : TextStringBuilder | TextStringBuilderTest.java:131:86:131:107 | toStringBuilder(...) | provenance | MaD:648 | | TextStringBuilderTest.java:136:14:136:58 | append(...) : TextStringBuilder | TextStringBuilderTest.java:136:14:136:82 | append(...) : TextStringBuilder | provenance | MaD:562 | -| TextStringBuilderTest.java:136:14:136:82 | append(...) : TextStringBuilder | TextStringBuilderTest.java:136:14:136:93 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:136:14:136:82 | append(...) : TextStringBuilder | TextStringBuilderTest.java:136:14:136:93 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:136:14:136:82 | append(...) : TextStringBuilder | TextStringBuilderTest.java:136:14:136:93 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:136:51:136:57 | taint(...) : String | TextStringBuilderTest.java:136:14:136:58 | append(...) : TextStringBuilder | provenance | MaD:568+MaD:562 | | TextStringBuilderTest.java:139:9:139:45 | append(...) [post update] : TextStringBuilder | TextStringBuilderTest.java:140:14:140:31 | fluentBackflowTest : TextStringBuilder | provenance | MaD:562 | | TextStringBuilderTest.java:139:54:139:60 | taint(...) : String | TextStringBuilderTest.java:139:9:139:45 | append(...) [post update] : TextStringBuilder | provenance | MaD:568 | -| TextStringBuilderTest.java:140:14:140:31 | fluentBackflowTest : TextStringBuilder | TextStringBuilderTest.java:140:14:140:42 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:140:14:140:31 | fluentBackflowTest : TextStringBuilder | TextStringBuilderTest.java:140:14:140:42 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:140:14:140:31 | fluentBackflowTest : TextStringBuilder | TextStringBuilderTest.java:140:14:140:42 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:144:9:144:46 | append(...) [post update] : TextStringBuilder | TextStringBuilderTest.java:145:14:145:32 | fluentBackflowTest2 : TextStringBuilder | provenance | MaD:562 | | TextStringBuilderTest.java:144:55:144:61 | taint(...) : String | TextStringBuilderTest.java:144:9:144:46 | append(...) [post update] : TextStringBuilder | provenance | MaD:568 | -| TextStringBuilderTest.java:145:14:145:32 | fluentBackflowTest2 : TextStringBuilder | TextStringBuilderTest.java:145:14:145:43 | toString(...) | provenance | MaD:6 | +| TextStringBuilderTest.java:145:14:145:32 | fluentBackflowTest2 : TextStringBuilder | TextStringBuilderTest.java:145:14:145:43 | toString(...) | provenance | MaD:5 | | TextStringBuilderTest.java:145:14:145:32 | fluentBackflowTest2 : TextStringBuilder | TextStringBuilderTest.java:145:14:145:43 | toString(...) | provenance | MaD:646 | | TextStringBuilderTest.java:148:50:148:79 | new TextStringBuilder(...) : TextStringBuilder | TextStringBuilderTest.java:149:14:149:33 | fluentAllMethodsTest : TextStringBuilder | provenance | | | TextStringBuilderTest.java:148:72:148:78 | taint(...) : String | TextStringBuilderTest.java:148:50:148:79 | new TextStringBuilder(...) : TextStringBuilder | provenance | MaD:561 | @@ -3198,7 +3198,7 @@ edges | ToStringBuilderTest.java:21:71:21:85 | (...)... : String | ToStringBuilderTest.java:21:59:21:62 | sb11 [post update] : ToStringBuilder | provenance | MaD:20 | | ToStringBuilderTest.java:21:79:21:85 | taint(...) : String | ToStringBuilderTest.java:21:71:21:85 | (...)... : String | provenance | | | ToStringBuilderTest.java:21:94:21:97 | sb11 : ToStringBuilder | ToStringBuilderTest.java:21:94:21:115 | getStringBuffer(...) : StringBuffer | provenance | MaD:29 | -| ToStringBuilderTest.java:21:94:21:115 | getStringBuffer(...) : StringBuffer | ToStringBuilderTest.java:21:94:21:126 | toString(...) | provenance | MaD:6 | +| ToStringBuilderTest.java:21:94:21:115 | getStringBuffer(...) : StringBuffer | ToStringBuilderTest.java:21:94:21:126 | toString(...) | provenance | MaD:5 | | ToStringBuilderTest.java:25:14:25:58 | append(...) : ToStringBuilder | ToStringBuilderTest.java:25:14:25:82 | append(...) : ToStringBuilder | provenance | MaD:19 | | ToStringBuilderTest.java:25:14:25:82 | append(...) : ToStringBuilder | ToStringBuilderTest.java:25:14:25:93 | toString(...) | provenance | MaD:30 | | ToStringBuilderTest.java:25:51:25:57 | taint(...) : String | ToStringBuilderTest.java:25:14:25:58 | append(...) : ToStringBuilder | provenance | MaD:20+MaD:19 | diff --git a/java/ql/test/library-tests/logging/Test.java b/java/ql/test/library-tests/logging/Test.java index 4dacd6ccf5c..3e609f41735 100644 --- a/java/ql/test/library-tests/logging/Test.java +++ b/java/ql/test/library-tests/logging/Test.java @@ -6,163 +6,172 @@ import org.apache.logging.log4j.message.EntryMessage; import org.apache.logging.log4j.message.Message; import org.slf4j.spi.LoggingEventBuilder; -// Test case generated by GenerateFlowTestCase.ql +// Test case originally generated by GenerateFlowTestCase.ql +// Subsequently modified manually. public class Test { - Object source() { - return null; - } + Object source() { + return null; + } - void sink(Object o) {} + void sink(Object o) {} - public void test() throws Exception { - - { - // "java.util.logging;LogRecord;false;LogRecord;;;Argument[1];Argument[this];taint;manual" - LogRecord out = null; - String in = (String) source(); - out = new LogRecord(null, in); - sink(out); // $ hasTaintFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceEntry;(Message);;Argument[0];ReturnValue;taint;manual" - EntryMessage out = null; - Message in = (Message) source(); - Logger instance = null; - out = instance.traceEntry(in); - sink(out); // $ hasTaintFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceEntry;(String,Object[]);;Argument[0..1];ReturnValue;taint;manual" - EntryMessage out = null; - Object[] in = (Object[]) source(); - Logger instance = null; - out = instance.traceEntry((String) null, in); - sink(out); // $ hasTaintFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceEntry;(String,Object[]);;Argument[0..1];ReturnValue;taint;manual" - EntryMessage out = null; - String in = (String) source(); - Logger instance = null; - out = instance.traceEntry(in, (Object[]) null); - sink(out); // $ hasTaintFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceEntry;(String,Supplier[]);;Argument[0..1];ReturnValue;taint;manual" - EntryMessage out = null; - String in = (String) source(); - Logger instance = null; - out = instance.traceEntry(in, (org.apache.logging.log4j.util.Supplier[]) null); - sink(out); // $ hasTaintFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceEntry;(String,Supplier[]);;Argument[0..1];ReturnValue;taint;manual" - EntryMessage out = null; - org.apache.logging.log4j.util.Supplier[] in = - (org.apache.logging.log4j.util.Supplier[]) source(); - Logger instance = null; - out = instance.traceEntry((String) null, in); - sink(out); // $ hasTaintFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceEntry;(Supplier[]);;Argument[0];ReturnValue;taint;manual" - EntryMessage out = null; - org.apache.logging.log4j.util.Supplier[] in = - (org.apache.logging.log4j.util.Supplier[]) source(); - Logger instance = null; - out = instance.traceEntry(in); - sink(out); // $ hasTaintFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceExit;(EntryMessage,Object);;Argument[1];ReturnValue;value;manual" - Object out = null; - Object in = (Object) source(); - Logger instance = null; - out = instance.traceExit((EntryMessage) null, in); - sink(out); // $ hasValueFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceExit;(Message,Object);;Argument[1];ReturnValue;value;manual" - Object out = null; - Object in = (Object) source(); - Logger instance = null; - out = instance.traceExit((Message) null, in); - sink(out); // $ hasValueFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceExit;(Object);;Argument[0];ReturnValue;value;manual" - Object out = null; - Object in = (Object) source(); - Logger instance = null; - out = instance.traceExit(in); - sink(out); // $ hasValueFlow - } - { - // "org.apache.logging.log4j;Logger;true;traceExit;(String,Object);;Argument[1];ReturnValue;value;manual" - Object out = null; - Object in = (Object) source(); - Logger instance = null; - out = instance.traceExit((String) null, in); - sink(out); // $ hasValueFlow - } - { - // "org.slf4j.spi;LoggingEventBuilder;true;addArgument;;;Argument[this];ReturnValue;value;manual" - LoggingEventBuilder out = null; - LoggingEventBuilder in = (LoggingEventBuilder) source(); - out = in.addArgument((Object) null); - sink(out); // $ hasValueFlow - } - { - // "org.slf4j.spi;LoggingEventBuilder;true;addArgument;;;Argument[this];ReturnValue;value;manual" - LoggingEventBuilder out = null; - LoggingEventBuilder in = (LoggingEventBuilder) source(); - out = in.addArgument((java.util.function.Supplier) null); - sink(out); // $ hasValueFlow - } - { - // "org.slf4j.spi;LoggingEventBuilder;true;addKeyValue;;;Argument[this];ReturnValue;value;manual" - LoggingEventBuilder out = null; - LoggingEventBuilder in = (LoggingEventBuilder) source(); - out = in.addKeyValue((String) null, (Object) null); - sink(out); // $ hasValueFlow - } - { - // "org.slf4j.spi;LoggingEventBuilder;true;addKeyValue;;;Argument[this];ReturnValue;value;manual" - LoggingEventBuilder out = null; - LoggingEventBuilder in = (LoggingEventBuilder) source(); - out = in.addKeyValue((String) null, (java.util.function.Supplier) null); - sink(out); // $ hasValueFlow - } - { - // "org.slf4j.spi;LoggingEventBuilder;true;addKeyValue;;;Argument[1];Argument[this];taint;manual" - LoggingEventBuilder out = null; - Object in = (Object) source(); - out.addKeyValue((String) null, in); - sink(out); // $ hasTaintFlow - } - { - // "org.slf4j.spi;LoggingEventBuilder;true;addKeyValue;;;Argument[1];Argument[this];taint;manual" - LoggingEventBuilder out = null; - java.util.function.Supplier in = (java.util.function.Supplier) source(); - out.addKeyValue((String) null, in); - sink(out); // $ hasTaintFlow - } - { - // "org.slf4j.spi;LoggingEventBuilder;true;addMarker;;;Argument[this];ReturnValue;value;manual" - LoggingEventBuilder out = null; - LoggingEventBuilder in = (LoggingEventBuilder) source(); - out = in.addMarker(null); - sink(out); // $ hasValueFlow - } - { - // "org.slf4j.spi;LoggingEventBuilder;true;setCause;;;Argument[this];ReturnValue;value;manual" - LoggingEventBuilder out = null; - LoggingEventBuilder in = (LoggingEventBuilder) source(); - out = in.setCause(null); - sink(out); // $ hasValueFlow - } - - } + public void test() throws Exception { + { + // "java.util.logging;LogRecord;false;LogRecord;;;Argument[1];Argument[this];taint;manual" + LogRecord out = null; + String in = (String) source(); + out = new LogRecord(null, in); + sink(out); // $ hasTaintFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceEntry;(Message);;Argument[0];ReturnValue;taint;manual" + EntryMessage out = null; + Message in = (Message) source(); + Logger instance = null; + out = instance.traceEntry(in); + sink(out); // $ hasTaintFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceEntry;(String,Object[]);;Argument[0..1];ReturnValue;taint;manual" + EntryMessage out = null; + Object[] in = (Object[]) source(); + Logger instance = null; + out = instance.traceEntry((String) null, in); + sink(out); // $ hasTaintFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceEntry;(String,Object[]);;Argument[0..1];ReturnValue;taint;manual" + EntryMessage out = null; + String in = (String) source(); + Logger instance = null; + out = instance.traceEntry(in, (Object[]) null); + sink(out); // $ hasTaintFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceEntry;(String,Supplier[]);;Argument[0..1];ReturnValue;taint;manual" + EntryMessage out = null; + String in = (String) source(); + Logger instance = null; + out = instance.traceEntry(in, (org.apache.logging.log4j.util.Supplier[]) null); + sink(out); // $ hasTaintFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceEntry;(String,Supplier[]);;Argument[0..1];ReturnValue;taint;manual" + EntryMessage out = null; + org.apache.logging.log4j.util.Supplier[] in = + (org.apache.logging.log4j.util.Supplier[]) source(); + Logger instance = null; + out = instance.traceEntry((String) null, in); + sink(out); // $ hasTaintFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceEntry;(Supplier[]);;Argument[0];ReturnValue;taint;manual" + EntryMessage out = null; + org.apache.logging.log4j.util.Supplier[] in = + (org.apache.logging.log4j.util.Supplier[]) source(); + Logger instance = null; + out = instance.traceEntry(in); + sink(out); // $ hasTaintFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceExit;(EntryMessage,Object);;Argument[1];ReturnValue;value;manual" + Object out = null; + Object in = (Object) source(); + Logger instance = null; + out = instance.traceExit((EntryMessage) null, in); + sink(out); // $ hasValueFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceExit;(Message,Object);;Argument[1];ReturnValue;value;manual" + Object out = null; + Object in = (Object) source(); + Logger instance = null; + out = instance.traceExit((Message) null, in); + sink(out); // $ hasValueFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceExit;(Object);;Argument[0];ReturnValue;value;manual" + Object out = null; + Object in = (Object) source(); + Logger instance = null; + out = instance.traceExit(in); + sink(out); // $ hasValueFlow + } + { + // "org.apache.logging.log4j;Logger;true;traceExit;(String,Object);;Argument[1];ReturnValue;value;manual" + Object out = null; + Object in = (Object) source(); + Logger instance = null; + out = instance.traceExit((String) null, in); + sink(out); // $ hasValueFlow + } + { + // "org.slf4j.spi;LoggingEventBuilder;true;addArgument;;;Argument[this];ReturnValue;value;manual" + LoggingEventBuilder out = null; + LoggingEventBuilder in = (LoggingEventBuilder) source(); + out = in.addArgument((Object) null); + sink(out); // $ hasValueFlow + } + { + // "org.slf4j.spi;LoggingEventBuilder;true;addArgument;;;Argument[this];ReturnValue;value;manual" + LoggingEventBuilder out = null; + LoggingEventBuilder in = (LoggingEventBuilder) source(); + out = in.addArgument((java.util.function.Supplier) null); + sink(out); // $ hasValueFlow + } + { + // "org.slf4j.spi;LoggingEventBuilder;true;addKeyValue;;;Argument[this];ReturnValue;value;manual" + LoggingEventBuilder out = null; + LoggingEventBuilder in = (LoggingEventBuilder) source(); + out = in.addKeyValue((String) null, (Object) null); + sink(out); // $ hasValueFlow + } + { + // "org.slf4j.spi;LoggingEventBuilder;true;addKeyValue;;;Argument[this];ReturnValue;value;manual" + LoggingEventBuilder out = null; + LoggingEventBuilder in = (LoggingEventBuilder) source(); + out = in.addKeyValue((String) null, (java.util.function.Supplier) null); + sink(out); // $ hasValueFlow + } + { + // "org.slf4j.spi;LoggingEventBuilder;true;addKeyValue;;;Argument[1];Argument[this];taint;manual" + LoggingEventBuilder out = null; + Object in = (Object) source(); + out.addKeyValue((String) null, in); + sink(out); // $ hasTaintFlow + } + { + // "org.slf4j.spi;LoggingEventBuilder;true;addKeyValue;;;Argument[1];Argument[this];taint;manual" + LoggingEventBuilder out = null; + java.util.function.Supplier in = (java.util.function.Supplier) source(); + out.addKeyValue((String) null, in); + sink(out); // $ hasTaintFlow + } + { + // "org.slf4j.spi;LoggingEventBuilder;true;addMarker;;;Argument[this];ReturnValue;value;manual" + LoggingEventBuilder out = null; + LoggingEventBuilder in = (LoggingEventBuilder) source(); + out = in.addMarker(null); + sink(out); // $ hasValueFlow + } + { + // "org.slf4j.spi;LoggingEventBuilder;true;setCause;;;Argument[this];ReturnValue;value;manual" + LoggingEventBuilder out = null; + LoggingEventBuilder in = (LoggingEventBuilder) source(); + out = in.setCause(null); + sink(out); // $ hasValueFlow + } + { + // "java.util.logging;LogRecord;true;getParameters;();;Argument[this].SyntheticField[java.util.logging.LogRecord.parameters].ArrayElement;ReturnValue.ArrayElement;value;manual + // "java.util.logging;LogRecord;true;setParameters;(Object[]);Argument[0].ArrayElement;Argument[this].SyntheticField[java.util.logging.LogRecord.parameters].ArrayElement;value;manual + LogRecord record = new LogRecord(null, null); + Object[] parameters = new Object[1]; + parameters[0] = source(); + record.setParameters(parameters); + Object[] out = record.getParameters(); + sink(out[0]); // $ hasValueFlow + } + } } diff --git a/java/ql/test/library-tests/logging/test.expected b/java/ql/test/library-tests/logging/test.expected index 4b8be156480..6aec73afeaf 100644 --- a/java/ql/test/library-tests/logging/test.expected +++ b/java/ql/test/library-tests/logging/test.expected @@ -1,190 +1,207 @@ models | 1 | Summary: java.util.logging; LogRecord; false; LogRecord; ; ; Argument[1]; Argument[this]; taint; manual | -| 2 | Summary: org.apache.logging.log4j; Logger; true; traceEntry; (Message); ; Argument[0]; ReturnValue; taint; manual | -| 3 | Summary: org.apache.logging.log4j; Logger; true; traceEntry; (String,Object[]); ; Argument[0..1]; ReturnValue; taint; manual | -| 4 | Summary: org.apache.logging.log4j; Logger; true; traceEntry; (String,Supplier[]); ; Argument[0..1]; ReturnValue; taint; manual | -| 5 | Summary: org.apache.logging.log4j; Logger; true; traceEntry; (Supplier[]); ; Argument[0]; ReturnValue; taint; manual | -| 6 | Summary: org.apache.logging.log4j; Logger; true; traceExit; (EntryMessage,Object); ; Argument[1]; ReturnValue; value; manual | -| 7 | Summary: org.apache.logging.log4j; Logger; true; traceExit; (Message,Object); ; Argument[1]; ReturnValue; value; manual | -| 8 | Summary: org.apache.logging.log4j; Logger; true; traceExit; (Object); ; Argument[0]; ReturnValue; value; manual | -| 9 | Summary: org.apache.logging.log4j; Logger; true; traceExit; (String,Object); ; Argument[1]; ReturnValue; value; manual | -| 10 | Summary: org.slf4j.spi; LoggingEventBuilder; true; addArgument; ; ; Argument[this]; ReturnValue; value; manual | -| 11 | Summary: org.slf4j.spi; LoggingEventBuilder; true; addKeyValue; ; ; Argument[this]; ReturnValue; value; manual | -| 12 | Summary: org.slf4j.spi; LoggingEventBuilder; true; addKeyValue; ; ; Argument[1]; Argument[this]; taint; manual | -| 13 | Summary: org.slf4j.spi; LoggingEventBuilder; true; addMarker; ; ; Argument[this]; ReturnValue; value; manual | -| 14 | Summary: org.slf4j.spi; LoggingEventBuilder; true; setCause; ; ; Argument[this]; ReturnValue; value; manual | +| 2 | Summary: java.util.logging; LogRecord; true; getParameters; (); ; Argument[this].SyntheticField[java.util.logging.LogRecord.parameters].ArrayElement; ReturnValue.ArrayElement; value; manual | +| 3 | Summary: java.util.logging; LogRecord; true; setParameters; (Object[]); ; Argument[0].ArrayElement; Argument[this].SyntheticField[java.util.logging.LogRecord.parameters].ArrayElement; value; manual | +| 4 | Summary: org.apache.logging.log4j; Logger; true; traceEntry; (Message); ; Argument[0]; ReturnValue; taint; manual | +| 5 | Summary: org.apache.logging.log4j; Logger; true; traceEntry; (String,Object[]); ; Argument[0..1]; ReturnValue; taint; manual | +| 6 | Summary: org.apache.logging.log4j; Logger; true; traceEntry; (String,Supplier[]); ; Argument[0..1]; ReturnValue; taint; manual | +| 7 | Summary: org.apache.logging.log4j; Logger; true; traceEntry; (Supplier[]); ; Argument[0]; ReturnValue; taint; manual | +| 8 | Summary: org.apache.logging.log4j; Logger; true; traceExit; (EntryMessage,Object); ; Argument[1]; ReturnValue; value; manual | +| 9 | Summary: org.apache.logging.log4j; Logger; true; traceExit; (Message,Object); ; Argument[1]; ReturnValue; value; manual | +| 10 | Summary: org.apache.logging.log4j; Logger; true; traceExit; (Object); ; Argument[0]; ReturnValue; value; manual | +| 11 | Summary: org.apache.logging.log4j; Logger; true; traceExit; (String,Object); ; Argument[1]; ReturnValue; value; manual | +| 12 | Summary: org.slf4j.spi; LoggingEventBuilder; true; addArgument; ; ; Argument[this]; ReturnValue; value; manual | +| 13 | Summary: org.slf4j.spi; LoggingEventBuilder; true; addKeyValue; ; ; Argument[this]; ReturnValue; value; manual | +| 14 | Summary: org.slf4j.spi; LoggingEventBuilder; true; addKeyValue; ; ; Argument[1]; Argument[this]; taint; manual | +| 15 | Summary: org.slf4j.spi; LoggingEventBuilder; true; addMarker; ; ; Argument[this]; ReturnValue; value; manual | +| 16 | Summary: org.slf4j.spi; LoggingEventBuilder; true; setCause; ; ; Argument[this]; ReturnValue; value; manual | edges -| Test.java:23:16:23:32 | (...)... : String | Test.java:24:30:24:31 | in : String | provenance | | -| Test.java:23:25:23:32 | source(...) : Object | Test.java:23:16:23:32 | (...)... : String | provenance | | -| Test.java:24:10:24:32 | new LogRecord(...) : LogRecord | Test.java:25:9:25:11 | out | provenance | | -| Test.java:24:30:24:31 | in : String | Test.java:24:10:24:32 | new LogRecord(...) : LogRecord | provenance | MaD:1 | -| Test.java:30:17:30:34 | (...)... : Message | Test.java:32:30:32:31 | in : Message | provenance | | -| Test.java:30:27:30:34 | source(...) : Object | Test.java:30:17:30:34 | (...)... : Message | provenance | | -| Test.java:32:10:32:32 | traceEntry(...) : EntryMessage | Test.java:33:9:33:11 | out | provenance | | -| Test.java:32:30:32:31 | in : Message | Test.java:32:10:32:32 | traceEntry(...) : EntryMessage | provenance | MaD:2 | -| Test.java:38:18:38:36 | (...)... : Object[] | Test.java:40:45:40:46 | in : Object[] | provenance | | -| Test.java:38:29:38:36 | source(...) : Object | Test.java:38:18:38:36 | (...)... : Object[] | provenance | | -| Test.java:40:10:40:47 | traceEntry(...) : EntryMessage | Test.java:41:9:41:11 | out | provenance | | -| Test.java:40:45:40:46 | in : Object[] | Test.java:40:10:40:47 | traceEntry(...) : EntryMessage | provenance | MaD:3 | -| Test.java:46:16:46:32 | (...)... : String | Test.java:48:30:48:31 | in : String | provenance | | -| Test.java:46:25:46:32 | source(...) : Object | Test.java:46:16:46:32 | (...)... : String | provenance | | -| Test.java:48:10:48:49 | traceEntry(...) : EntryMessage | Test.java:49:9:49:11 | out | provenance | | -| Test.java:48:30:48:31 | in : String | Test.java:48:10:48:49 | traceEntry(...) : EntryMessage | provenance | MaD:3 | -| Test.java:54:16:54:32 | (...)... : String | Test.java:56:30:56:31 | in : String | provenance | | -| Test.java:54:25:54:32 | source(...) : Object | Test.java:54:16:54:32 | (...)... : String | provenance | | -| Test.java:56:10:56:81 | traceEntry(...) : EntryMessage | Test.java:57:9:57:11 | out | provenance | | -| Test.java:56:30:56:31 | in : String | Test.java:56:10:56:81 | traceEntry(...) : EntryMessage | provenance | MaD:4 | -| Test.java:63:6:63:56 | (...)... : Supplier[] | Test.java:65:45:65:46 | in : Supplier[] | provenance | | -| Test.java:63:49:63:56 | source(...) : Object | Test.java:63:6:63:56 | (...)... : Supplier[] | provenance | | -| Test.java:65:10:65:47 | traceEntry(...) : EntryMessage | Test.java:66:9:66:11 | out | provenance | | -| Test.java:65:45:65:46 | in : Supplier[] | Test.java:65:10:65:47 | traceEntry(...) : EntryMessage | provenance | MaD:4 | -| Test.java:72:6:72:56 | (...)... : Supplier[] | Test.java:74:30:74:31 | in : Supplier[] | provenance | | -| Test.java:72:49:72:56 | source(...) : Object | Test.java:72:6:72:56 | (...)... : Supplier[] | provenance | | -| Test.java:74:10:74:32 | traceEntry(...) : EntryMessage | Test.java:75:9:75:11 | out | provenance | | -| Test.java:74:30:74:31 | in : Supplier[] | Test.java:74:10:74:32 | traceEntry(...) : EntryMessage | provenance | MaD:5 | -| Test.java:80:16:80:32 | (...)... : Object | Test.java:82:50:82:51 | in : Object | provenance | | -| Test.java:80:25:80:32 | source(...) : Object | Test.java:80:16:80:32 | (...)... : Object | provenance | | -| Test.java:82:10:82:52 | traceExit(...) : Object | Test.java:83:9:83:11 | out | provenance | | -| Test.java:82:50:82:51 | in : Object | Test.java:82:10:82:52 | traceExit(...) : Object | provenance | MaD:6 | -| Test.java:88:16:88:32 | (...)... : Object | Test.java:90:45:90:46 | in : Object | provenance | | -| Test.java:88:25:88:32 | source(...) : Object | Test.java:88:16:88:32 | (...)... : Object | provenance | | -| Test.java:90:10:90:47 | traceExit(...) : Object | Test.java:91:9:91:11 | out | provenance | | -| Test.java:90:45:90:46 | in : Object | Test.java:90:10:90:47 | traceExit(...) : Object | provenance | MaD:7 | -| Test.java:96:16:96:32 | (...)... : Object | Test.java:98:29:98:30 | in : Object | provenance | | -| Test.java:96:25:96:32 | source(...) : Object | Test.java:96:16:96:32 | (...)... : Object | provenance | | -| Test.java:98:10:98:31 | traceExit(...) : Object | Test.java:99:9:99:11 | out | provenance | | -| Test.java:98:29:98:30 | in : Object | Test.java:98:10:98:31 | traceExit(...) : Object | provenance | MaD:8 | -| Test.java:104:16:104:32 | (...)... : Object | Test.java:106:44:106:45 | in : Object | provenance | | -| Test.java:104:25:104:32 | source(...) : Object | Test.java:104:16:104:32 | (...)... : Object | provenance | | -| Test.java:106:10:106:46 | traceExit(...) : Object | Test.java:107:9:107:11 | out | provenance | | -| Test.java:106:44:106:45 | in : Object | Test.java:106:10:106:46 | traceExit(...) : Object | provenance | MaD:9 | -| Test.java:112:29:112:58 | (...)... : LoggingEventBuilder | Test.java:113:10:113:11 | in : LoggingEventBuilder | provenance | | -| Test.java:112:51:112:58 | source(...) : Object | Test.java:112:29:112:58 | (...)... : LoggingEventBuilder | provenance | | -| Test.java:113:10:113:11 | in : LoggingEventBuilder | Test.java:113:10:113:38 | addArgument(...) : LoggingEventBuilder | provenance | MaD:10 | -| Test.java:113:10:113:38 | addArgument(...) : LoggingEventBuilder | Test.java:114:9:114:11 | out | provenance | | -| Test.java:119:29:119:58 | (...)... : LoggingEventBuilder | Test.java:120:10:120:11 | in : LoggingEventBuilder | provenance | | -| Test.java:119:51:119:58 | source(...) : Object | Test.java:119:29:119:58 | (...)... : LoggingEventBuilder | provenance | | -| Test.java:120:10:120:11 | in : LoggingEventBuilder | Test.java:120:10:120:59 | addArgument(...) : LoggingEventBuilder | provenance | MaD:10 | -| Test.java:120:10:120:59 | addArgument(...) : LoggingEventBuilder | Test.java:121:9:121:11 | out | provenance | | -| Test.java:126:29:126:58 | (...)... : LoggingEventBuilder | Test.java:127:10:127:11 | in : LoggingEventBuilder | provenance | | -| Test.java:126:51:126:58 | source(...) : Object | Test.java:126:29:126:58 | (...)... : LoggingEventBuilder | provenance | | -| Test.java:127:10:127:11 | in : LoggingEventBuilder | Test.java:127:10:127:53 | addKeyValue(...) : LoggingEventBuilder | provenance | MaD:11 | -| Test.java:127:10:127:53 | addKeyValue(...) : LoggingEventBuilder | Test.java:128:9:128:11 | out | provenance | | -| Test.java:133:29:133:58 | (...)... : LoggingEventBuilder | Test.java:134:10:134:11 | in : LoggingEventBuilder | provenance | | -| Test.java:133:51:133:58 | source(...) : Object | Test.java:133:29:133:58 | (...)... : LoggingEventBuilder | provenance | | -| Test.java:134:10:134:11 | in : LoggingEventBuilder | Test.java:134:10:134:74 | addKeyValue(...) : LoggingEventBuilder | provenance | MaD:11 | -| Test.java:134:10:134:74 | addKeyValue(...) : LoggingEventBuilder | Test.java:135:9:135:11 | out | provenance | | -| Test.java:140:16:140:32 | (...)... : Object | Test.java:141:35:141:36 | in : Object | provenance | | -| Test.java:140:25:140:32 | source(...) : Object | Test.java:140:16:140:32 | (...)... : Object | provenance | | -| Test.java:141:4:141:6 | out [post update] : LoggingEventBuilder | Test.java:142:9:142:11 | out | provenance | | -| Test.java:141:35:141:36 | in : Object | Test.java:141:4:141:6 | out [post update] : LoggingEventBuilder | provenance | MaD:12 | -| Test.java:147:37:147:74 | (...)... : Supplier | Test.java:148:35:148:36 | in : Supplier | provenance | | -| Test.java:147:67:147:74 | source(...) : Object | Test.java:147:37:147:74 | (...)... : Supplier | provenance | | -| Test.java:148:4:148:6 | out [post update] : LoggingEventBuilder | Test.java:149:9:149:11 | out | provenance | | -| Test.java:148:35:148:36 | in : Supplier | Test.java:148:4:148:6 | out [post update] : LoggingEventBuilder | provenance | MaD:12 | -| Test.java:154:29:154:58 | (...)... : LoggingEventBuilder | Test.java:155:10:155:11 | in : LoggingEventBuilder | provenance | | -| Test.java:154:51:154:58 | source(...) : Object | Test.java:154:29:154:58 | (...)... : LoggingEventBuilder | provenance | | -| Test.java:155:10:155:11 | in : LoggingEventBuilder | Test.java:155:10:155:27 | addMarker(...) : LoggingEventBuilder | provenance | MaD:13 | -| Test.java:155:10:155:27 | addMarker(...) : LoggingEventBuilder | Test.java:156:9:156:11 | out | provenance | | -| Test.java:161:29:161:58 | (...)... : LoggingEventBuilder | Test.java:162:10:162:11 | in : LoggingEventBuilder | provenance | | -| Test.java:161:51:161:58 | source(...) : Object | Test.java:161:29:161:58 | (...)... : LoggingEventBuilder | provenance | | -| Test.java:162:10:162:11 | in : LoggingEventBuilder | Test.java:162:10:162:26 | setCause(...) : LoggingEventBuilder | provenance | MaD:14 | -| Test.java:162:10:162:26 | setCause(...) : LoggingEventBuilder | Test.java:163:9:163:11 | out | provenance | | +| Test.java:24:19:24:35 | (...)... : String | Test.java:25:33:25:34 | in : String | provenance | | +| Test.java:24:28:24:35 | source(...) : Object | Test.java:24:19:24:35 | (...)... : String | provenance | | +| Test.java:25:13:25:35 | new LogRecord(...) : LogRecord | Test.java:26:12:26:14 | out | provenance | | +| Test.java:25:33:25:34 | in : String | Test.java:25:13:25:35 | new LogRecord(...) : LogRecord | provenance | MaD:1 | +| Test.java:31:20:31:37 | (...)... : Message | Test.java:33:33:33:34 | in : Message | provenance | | +| Test.java:31:30:31:37 | source(...) : Object | Test.java:31:20:31:37 | (...)... : Message | provenance | | +| Test.java:33:13:33:35 | traceEntry(...) : EntryMessage | Test.java:34:12:34:14 | out | provenance | | +| Test.java:33:33:33:34 | in : Message | Test.java:33:13:33:35 | traceEntry(...) : EntryMessage | provenance | MaD:4 | +| Test.java:39:21:39:39 | (...)... : Object[] | Test.java:41:48:41:49 | in : Object[] | provenance | | +| Test.java:39:32:39:39 | source(...) : Object | Test.java:39:21:39:39 | (...)... : Object[] | provenance | | +| Test.java:41:13:41:50 | traceEntry(...) : EntryMessage | Test.java:42:12:42:14 | out | provenance | | +| Test.java:41:48:41:49 | in : Object[] | Test.java:41:13:41:50 | traceEntry(...) : EntryMessage | provenance | MaD:5 | +| Test.java:47:19:47:35 | (...)... : String | Test.java:49:33:49:34 | in : String | provenance | | +| Test.java:47:28:47:35 | source(...) : Object | Test.java:47:19:47:35 | (...)... : String | provenance | | +| Test.java:49:13:49:52 | traceEntry(...) : EntryMessage | Test.java:50:12:50:14 | out | provenance | | +| Test.java:49:33:49:34 | in : String | Test.java:49:13:49:52 | traceEntry(...) : EntryMessage | provenance | MaD:5 | +| Test.java:55:19:55:35 | (...)... : String | Test.java:57:33:57:34 | in : String | provenance | | +| Test.java:55:28:55:35 | source(...) : Object | Test.java:55:19:55:35 | (...)... : String | provenance | | +| Test.java:57:13:57:84 | traceEntry(...) : EntryMessage | Test.java:58:12:58:14 | out | provenance | | +| Test.java:57:33:57:34 | in : String | Test.java:57:13:57:84 | traceEntry(...) : EntryMessage | provenance | MaD:6 | +| Test.java:64:11:64:61 | (...)... : Supplier[] | Test.java:66:48:66:49 | in : Supplier[] | provenance | | +| Test.java:64:54:64:61 | source(...) : Object | Test.java:64:11:64:61 | (...)... : Supplier[] | provenance | | +| Test.java:66:13:66:50 | traceEntry(...) : EntryMessage | Test.java:67:12:67:14 | out | provenance | | +| Test.java:66:48:66:49 | in : Supplier[] | Test.java:66:13:66:50 | traceEntry(...) : EntryMessage | provenance | MaD:6 | +| Test.java:73:11:73:61 | (...)... : Supplier[] | Test.java:75:33:75:34 | in : Supplier[] | provenance | | +| Test.java:73:54:73:61 | source(...) : Object | Test.java:73:11:73:61 | (...)... : Supplier[] | provenance | | +| Test.java:75:13:75:35 | traceEntry(...) : EntryMessage | Test.java:76:12:76:14 | out | provenance | | +| Test.java:75:33:75:34 | in : Supplier[] | Test.java:75:13:75:35 | traceEntry(...) : EntryMessage | provenance | MaD:7 | +| Test.java:81:19:81:35 | (...)... : Object | Test.java:83:53:83:54 | in : Object | provenance | | +| Test.java:81:28:81:35 | source(...) : Object | Test.java:81:19:81:35 | (...)... : Object | provenance | | +| Test.java:83:13:83:55 | traceExit(...) : Object | Test.java:84:12:84:14 | out | provenance | | +| Test.java:83:53:83:54 | in : Object | Test.java:83:13:83:55 | traceExit(...) : Object | provenance | MaD:8 | +| Test.java:89:19:89:35 | (...)... : Object | Test.java:91:48:91:49 | in : Object | provenance | | +| Test.java:89:28:89:35 | source(...) : Object | Test.java:89:19:89:35 | (...)... : Object | provenance | | +| Test.java:91:13:91:50 | traceExit(...) : Object | Test.java:92:12:92:14 | out | provenance | | +| Test.java:91:48:91:49 | in : Object | Test.java:91:13:91:50 | traceExit(...) : Object | provenance | MaD:9 | +| Test.java:97:19:97:35 | (...)... : Object | Test.java:99:32:99:33 | in : Object | provenance | | +| Test.java:97:28:97:35 | source(...) : Object | Test.java:97:19:97:35 | (...)... : Object | provenance | | +| Test.java:99:13:99:34 | traceExit(...) : Object | Test.java:100:12:100:14 | out | provenance | | +| Test.java:99:32:99:33 | in : Object | Test.java:99:13:99:34 | traceExit(...) : Object | provenance | MaD:10 | +| Test.java:105:19:105:35 | (...)... : Object | Test.java:107:47:107:48 | in : Object | provenance | | +| Test.java:105:28:105:35 | source(...) : Object | Test.java:105:19:105:35 | (...)... : Object | provenance | | +| Test.java:107:13:107:49 | traceExit(...) : Object | Test.java:108:12:108:14 | out | provenance | | +| Test.java:107:47:107:48 | in : Object | Test.java:107:13:107:49 | traceExit(...) : Object | provenance | MaD:11 | +| Test.java:113:32:113:61 | (...)... : LoggingEventBuilder | Test.java:114:13:114:14 | in : LoggingEventBuilder | provenance | | +| Test.java:113:54:113:61 | source(...) : Object | Test.java:113:32:113:61 | (...)... : LoggingEventBuilder | provenance | | +| Test.java:114:13:114:14 | in : LoggingEventBuilder | Test.java:114:13:114:41 | addArgument(...) : LoggingEventBuilder | provenance | MaD:12 | +| Test.java:114:13:114:41 | addArgument(...) : LoggingEventBuilder | Test.java:115:12:115:14 | out | provenance | | +| Test.java:120:32:120:61 | (...)... : LoggingEventBuilder | Test.java:121:13:121:14 | in : LoggingEventBuilder | provenance | | +| Test.java:120:54:120:61 | source(...) : Object | Test.java:120:32:120:61 | (...)... : LoggingEventBuilder | provenance | | +| Test.java:121:13:121:14 | in : LoggingEventBuilder | Test.java:121:13:121:62 | addArgument(...) : LoggingEventBuilder | provenance | MaD:12 | +| Test.java:121:13:121:62 | addArgument(...) : LoggingEventBuilder | Test.java:122:12:122:14 | out | provenance | | +| Test.java:127:32:127:61 | (...)... : LoggingEventBuilder | Test.java:128:13:128:14 | in : LoggingEventBuilder | provenance | | +| Test.java:127:54:127:61 | source(...) : Object | Test.java:127:32:127:61 | (...)... : LoggingEventBuilder | provenance | | +| Test.java:128:13:128:14 | in : LoggingEventBuilder | Test.java:128:13:128:56 | addKeyValue(...) : LoggingEventBuilder | provenance | MaD:13 | +| Test.java:128:13:128:56 | addKeyValue(...) : LoggingEventBuilder | Test.java:129:12:129:14 | out | provenance | | +| Test.java:134:32:134:61 | (...)... : LoggingEventBuilder | Test.java:135:13:135:14 | in : LoggingEventBuilder | provenance | | +| Test.java:134:54:134:61 | source(...) : Object | Test.java:134:32:134:61 | (...)... : LoggingEventBuilder | provenance | | +| Test.java:135:13:135:14 | in : LoggingEventBuilder | Test.java:135:13:135:77 | addKeyValue(...) : LoggingEventBuilder | provenance | MaD:13 | +| Test.java:135:13:135:77 | addKeyValue(...) : LoggingEventBuilder | Test.java:136:12:136:14 | out | provenance | | +| Test.java:141:19:141:35 | (...)... : Object | Test.java:142:38:142:39 | in : Object | provenance | | +| Test.java:141:28:141:35 | source(...) : Object | Test.java:141:19:141:35 | (...)... : Object | provenance | | +| Test.java:142:7:142:9 | out [post update] : LoggingEventBuilder | Test.java:143:12:143:14 | out | provenance | | +| Test.java:142:38:142:39 | in : Object | Test.java:142:7:142:9 | out [post update] : LoggingEventBuilder | provenance | MaD:14 | +| Test.java:148:40:148:77 | (...)... : Supplier | Test.java:149:38:149:39 | in : Supplier | provenance | | +| Test.java:148:70:148:77 | source(...) : Object | Test.java:148:40:148:77 | (...)... : Supplier | provenance | | +| Test.java:149:7:149:9 | out [post update] : LoggingEventBuilder | Test.java:150:12:150:14 | out | provenance | | +| Test.java:149:38:149:39 | in : Supplier | Test.java:149:7:149:9 | out [post update] : LoggingEventBuilder | provenance | MaD:14 | +| Test.java:155:32:155:61 | (...)... : LoggingEventBuilder | Test.java:156:13:156:14 | in : LoggingEventBuilder | provenance | | +| Test.java:155:54:155:61 | source(...) : Object | Test.java:155:32:155:61 | (...)... : LoggingEventBuilder | provenance | | +| Test.java:156:13:156:14 | in : LoggingEventBuilder | Test.java:156:13:156:30 | addMarker(...) : LoggingEventBuilder | provenance | MaD:15 | +| Test.java:156:13:156:30 | addMarker(...) : LoggingEventBuilder | Test.java:157:12:157:14 | out | provenance | | +| Test.java:162:32:162:61 | (...)... : LoggingEventBuilder | Test.java:163:13:163:14 | in : LoggingEventBuilder | provenance | | +| Test.java:162:54:162:61 | source(...) : Object | Test.java:162:32:162:61 | (...)... : LoggingEventBuilder | provenance | | +| Test.java:163:13:163:14 | in : LoggingEventBuilder | Test.java:163:13:163:29 | setCause(...) : LoggingEventBuilder | provenance | MaD:16 | +| Test.java:163:13:163:29 | setCause(...) : LoggingEventBuilder | Test.java:164:12:164:14 | out | provenance | | +| Test.java:171:7:171:16 | parameters [post update] : Object[] [[]] : Object | Test.java:172:28:172:37 | parameters : Object[] [[]] : Object | provenance | | +| Test.java:171:23:171:30 | source(...) : Object | Test.java:171:7:171:16 | parameters [post update] : Object[] [[]] : Object | provenance | | +| Test.java:172:7:172:12 | record [post update] : LogRecord [java.util.logging.LogRecord.parameters, []] : Object | Test.java:173:22:173:27 | record : LogRecord [java.util.logging.LogRecord.parameters, []] : Object | provenance | | +| Test.java:172:28:172:37 | parameters : Object[] [[]] : Object | Test.java:172:7:172:12 | record [post update] : LogRecord [java.util.logging.LogRecord.parameters, []] : Object | provenance | MaD:3 | +| Test.java:173:22:173:27 | record : LogRecord [java.util.logging.LogRecord.parameters, []] : Object | Test.java:173:22:173:43 | getParameters(...) : Object[] [[]] : Object | provenance | MaD:2 | +| Test.java:173:22:173:43 | getParameters(...) : Object[] [[]] : Object | Test.java:174:12:174:14 | out : Object[] [[]] : Object | provenance | | +| Test.java:174:12:174:14 | out : Object[] [[]] : Object | Test.java:174:12:174:17 | ...[...] | provenance | | nodes -| Test.java:23:16:23:32 | (...)... : String | semmle.label | (...)... : String | -| Test.java:23:25:23:32 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:24:10:24:32 | new LogRecord(...) : LogRecord | semmle.label | new LogRecord(...) : LogRecord | -| Test.java:24:30:24:31 | in : String | semmle.label | in : String | -| Test.java:25:9:25:11 | out | semmle.label | out | -| Test.java:30:17:30:34 | (...)... : Message | semmle.label | (...)... : Message | -| Test.java:30:27:30:34 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:32:10:32:32 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | -| Test.java:32:30:32:31 | in : Message | semmle.label | in : Message | -| Test.java:33:9:33:11 | out | semmle.label | out | -| Test.java:38:18:38:36 | (...)... : Object[] | semmle.label | (...)... : Object[] | -| Test.java:38:29:38:36 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:40:10:40:47 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | -| Test.java:40:45:40:46 | in : Object[] | semmle.label | in : Object[] | -| Test.java:41:9:41:11 | out | semmle.label | out | -| Test.java:46:16:46:32 | (...)... : String | semmle.label | (...)... : String | -| Test.java:46:25:46:32 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:48:10:48:49 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | -| Test.java:48:30:48:31 | in : String | semmle.label | in : String | -| Test.java:49:9:49:11 | out | semmle.label | out | -| Test.java:54:16:54:32 | (...)... : String | semmle.label | (...)... : String | -| Test.java:54:25:54:32 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:56:10:56:81 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | -| Test.java:56:30:56:31 | in : String | semmle.label | in : String | -| Test.java:57:9:57:11 | out | semmle.label | out | -| Test.java:63:6:63:56 | (...)... : Supplier[] | semmle.label | (...)... : Supplier[] | -| Test.java:63:49:63:56 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:65:10:65:47 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | -| Test.java:65:45:65:46 | in : Supplier[] | semmle.label | in : Supplier[] | -| Test.java:66:9:66:11 | out | semmle.label | out | -| Test.java:72:6:72:56 | (...)... : Supplier[] | semmle.label | (...)... : Supplier[] | -| Test.java:72:49:72:56 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:74:10:74:32 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | -| Test.java:74:30:74:31 | in : Supplier[] | semmle.label | in : Supplier[] | -| Test.java:75:9:75:11 | out | semmle.label | out | -| Test.java:80:16:80:32 | (...)... : Object | semmle.label | (...)... : Object | -| Test.java:80:25:80:32 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:82:10:82:52 | traceExit(...) : Object | semmle.label | traceExit(...) : Object | -| Test.java:82:50:82:51 | in : Object | semmle.label | in : Object | -| Test.java:83:9:83:11 | out | semmle.label | out | -| Test.java:88:16:88:32 | (...)... : Object | semmle.label | (...)... : Object | -| Test.java:88:25:88:32 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:90:10:90:47 | traceExit(...) : Object | semmle.label | traceExit(...) : Object | -| Test.java:90:45:90:46 | in : Object | semmle.label | in : Object | -| Test.java:91:9:91:11 | out | semmle.label | out | -| Test.java:96:16:96:32 | (...)... : Object | semmle.label | (...)... : Object | -| Test.java:96:25:96:32 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:98:10:98:31 | traceExit(...) : Object | semmle.label | traceExit(...) : Object | -| Test.java:98:29:98:30 | in : Object | semmle.label | in : Object | -| Test.java:99:9:99:11 | out | semmle.label | out | -| Test.java:104:16:104:32 | (...)... : Object | semmle.label | (...)... : Object | -| Test.java:104:25:104:32 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:106:10:106:46 | traceExit(...) : Object | semmle.label | traceExit(...) : Object | -| Test.java:106:44:106:45 | in : Object | semmle.label | in : Object | -| Test.java:107:9:107:11 | out | semmle.label | out | -| Test.java:112:29:112:58 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | -| Test.java:112:51:112:58 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:113:10:113:11 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | -| Test.java:113:10:113:38 | addArgument(...) : LoggingEventBuilder | semmle.label | addArgument(...) : LoggingEventBuilder | -| Test.java:114:9:114:11 | out | semmle.label | out | -| Test.java:119:29:119:58 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | -| Test.java:119:51:119:58 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:120:10:120:11 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | -| Test.java:120:10:120:59 | addArgument(...) : LoggingEventBuilder | semmle.label | addArgument(...) : LoggingEventBuilder | -| Test.java:121:9:121:11 | out | semmle.label | out | -| Test.java:126:29:126:58 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | -| Test.java:126:51:126:58 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:127:10:127:11 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | -| Test.java:127:10:127:53 | addKeyValue(...) : LoggingEventBuilder | semmle.label | addKeyValue(...) : LoggingEventBuilder | -| Test.java:128:9:128:11 | out | semmle.label | out | -| Test.java:133:29:133:58 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | -| Test.java:133:51:133:58 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:134:10:134:11 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | -| Test.java:134:10:134:74 | addKeyValue(...) : LoggingEventBuilder | semmle.label | addKeyValue(...) : LoggingEventBuilder | -| Test.java:135:9:135:11 | out | semmle.label | out | -| Test.java:140:16:140:32 | (...)... : Object | semmle.label | (...)... : Object | -| Test.java:140:25:140:32 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:141:4:141:6 | out [post update] : LoggingEventBuilder | semmle.label | out [post update] : LoggingEventBuilder | -| Test.java:141:35:141:36 | in : Object | semmle.label | in : Object | -| Test.java:142:9:142:11 | out | semmle.label | out | -| Test.java:147:37:147:74 | (...)... : Supplier | semmle.label | (...)... : Supplier | -| Test.java:147:67:147:74 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:148:4:148:6 | out [post update] : LoggingEventBuilder | semmle.label | out [post update] : LoggingEventBuilder | -| Test.java:148:35:148:36 | in : Supplier | semmle.label | in : Supplier | -| Test.java:149:9:149:11 | out | semmle.label | out | -| Test.java:154:29:154:58 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | -| Test.java:154:51:154:58 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:155:10:155:11 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | -| Test.java:155:10:155:27 | addMarker(...) : LoggingEventBuilder | semmle.label | addMarker(...) : LoggingEventBuilder | -| Test.java:156:9:156:11 | out | semmle.label | out | -| Test.java:161:29:161:58 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | -| Test.java:161:51:161:58 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:162:10:162:11 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | -| Test.java:162:10:162:26 | setCause(...) : LoggingEventBuilder | semmle.label | setCause(...) : LoggingEventBuilder | -| Test.java:163:9:163:11 | out | semmle.label | out | +| Test.java:24:19:24:35 | (...)... : String | semmle.label | (...)... : String | +| Test.java:24:28:24:35 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:25:13:25:35 | new LogRecord(...) : LogRecord | semmle.label | new LogRecord(...) : LogRecord | +| Test.java:25:33:25:34 | in : String | semmle.label | in : String | +| Test.java:26:12:26:14 | out | semmle.label | out | +| Test.java:31:20:31:37 | (...)... : Message | semmle.label | (...)... : Message | +| Test.java:31:30:31:37 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:33:13:33:35 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | +| Test.java:33:33:33:34 | in : Message | semmle.label | in : Message | +| Test.java:34:12:34:14 | out | semmle.label | out | +| Test.java:39:21:39:39 | (...)... : Object[] | semmle.label | (...)... : Object[] | +| Test.java:39:32:39:39 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:41:13:41:50 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | +| Test.java:41:48:41:49 | in : Object[] | semmle.label | in : Object[] | +| Test.java:42:12:42:14 | out | semmle.label | out | +| Test.java:47:19:47:35 | (...)... : String | semmle.label | (...)... : String | +| Test.java:47:28:47:35 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:49:13:49:52 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | +| Test.java:49:33:49:34 | in : String | semmle.label | in : String | +| Test.java:50:12:50:14 | out | semmle.label | out | +| Test.java:55:19:55:35 | (...)... : String | semmle.label | (...)... : String | +| Test.java:55:28:55:35 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:57:13:57:84 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | +| Test.java:57:33:57:34 | in : String | semmle.label | in : String | +| Test.java:58:12:58:14 | out | semmle.label | out | +| Test.java:64:11:64:61 | (...)... : Supplier[] | semmle.label | (...)... : Supplier[] | +| Test.java:64:54:64:61 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:66:13:66:50 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | +| Test.java:66:48:66:49 | in : Supplier[] | semmle.label | in : Supplier[] | +| Test.java:67:12:67:14 | out | semmle.label | out | +| Test.java:73:11:73:61 | (...)... : Supplier[] | semmle.label | (...)... : Supplier[] | +| Test.java:73:54:73:61 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:75:13:75:35 | traceEntry(...) : EntryMessage | semmle.label | traceEntry(...) : EntryMessage | +| Test.java:75:33:75:34 | in : Supplier[] | semmle.label | in : Supplier[] | +| Test.java:76:12:76:14 | out | semmle.label | out | +| Test.java:81:19:81:35 | (...)... : Object | semmle.label | (...)... : Object | +| Test.java:81:28:81:35 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:83:13:83:55 | traceExit(...) : Object | semmle.label | traceExit(...) : Object | +| Test.java:83:53:83:54 | in : Object | semmle.label | in : Object | +| Test.java:84:12:84:14 | out | semmle.label | out | +| Test.java:89:19:89:35 | (...)... : Object | semmle.label | (...)... : Object | +| Test.java:89:28:89:35 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:91:13:91:50 | traceExit(...) : Object | semmle.label | traceExit(...) : Object | +| Test.java:91:48:91:49 | in : Object | semmle.label | in : Object | +| Test.java:92:12:92:14 | out | semmle.label | out | +| Test.java:97:19:97:35 | (...)... : Object | semmle.label | (...)... : Object | +| Test.java:97:28:97:35 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:99:13:99:34 | traceExit(...) : Object | semmle.label | traceExit(...) : Object | +| Test.java:99:32:99:33 | in : Object | semmle.label | in : Object | +| Test.java:100:12:100:14 | out | semmle.label | out | +| Test.java:105:19:105:35 | (...)... : Object | semmle.label | (...)... : Object | +| Test.java:105:28:105:35 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:107:13:107:49 | traceExit(...) : Object | semmle.label | traceExit(...) : Object | +| Test.java:107:47:107:48 | in : Object | semmle.label | in : Object | +| Test.java:108:12:108:14 | out | semmle.label | out | +| Test.java:113:32:113:61 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | +| Test.java:113:54:113:61 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:114:13:114:14 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | +| Test.java:114:13:114:41 | addArgument(...) : LoggingEventBuilder | semmle.label | addArgument(...) : LoggingEventBuilder | +| Test.java:115:12:115:14 | out | semmle.label | out | +| Test.java:120:32:120:61 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | +| Test.java:120:54:120:61 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:121:13:121:14 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | +| Test.java:121:13:121:62 | addArgument(...) : LoggingEventBuilder | semmle.label | addArgument(...) : LoggingEventBuilder | +| Test.java:122:12:122:14 | out | semmle.label | out | +| Test.java:127:32:127:61 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | +| Test.java:127:54:127:61 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:128:13:128:14 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | +| Test.java:128:13:128:56 | addKeyValue(...) : LoggingEventBuilder | semmle.label | addKeyValue(...) : LoggingEventBuilder | +| Test.java:129:12:129:14 | out | semmle.label | out | +| Test.java:134:32:134:61 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | +| Test.java:134:54:134:61 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:135:13:135:14 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | +| Test.java:135:13:135:77 | addKeyValue(...) : LoggingEventBuilder | semmle.label | addKeyValue(...) : LoggingEventBuilder | +| Test.java:136:12:136:14 | out | semmle.label | out | +| Test.java:141:19:141:35 | (...)... : Object | semmle.label | (...)... : Object | +| Test.java:141:28:141:35 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:142:7:142:9 | out [post update] : LoggingEventBuilder | semmle.label | out [post update] : LoggingEventBuilder | +| Test.java:142:38:142:39 | in : Object | semmle.label | in : Object | +| Test.java:143:12:143:14 | out | semmle.label | out | +| Test.java:148:40:148:77 | (...)... : Supplier | semmle.label | (...)... : Supplier | +| Test.java:148:70:148:77 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:149:7:149:9 | out [post update] : LoggingEventBuilder | semmle.label | out [post update] : LoggingEventBuilder | +| Test.java:149:38:149:39 | in : Supplier | semmle.label | in : Supplier | +| Test.java:150:12:150:14 | out | semmle.label | out | +| Test.java:155:32:155:61 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | +| Test.java:155:54:155:61 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:156:13:156:14 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | +| Test.java:156:13:156:30 | addMarker(...) : LoggingEventBuilder | semmle.label | addMarker(...) : LoggingEventBuilder | +| Test.java:157:12:157:14 | out | semmle.label | out | +| Test.java:162:32:162:61 | (...)... : LoggingEventBuilder | semmle.label | (...)... : LoggingEventBuilder | +| Test.java:162:54:162:61 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:163:13:163:14 | in : LoggingEventBuilder | semmle.label | in : LoggingEventBuilder | +| Test.java:163:13:163:29 | setCause(...) : LoggingEventBuilder | semmle.label | setCause(...) : LoggingEventBuilder | +| Test.java:164:12:164:14 | out | semmle.label | out | +| Test.java:171:7:171:16 | parameters [post update] : Object[] [[]] : Object | semmle.label | parameters [post update] : Object[] [[]] : Object | +| Test.java:171:23:171:30 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:172:7:172:12 | record [post update] : LogRecord [java.util.logging.LogRecord.parameters, []] : Object | semmle.label | record [post update] : LogRecord [java.util.logging.LogRecord.parameters, []] : Object | +| Test.java:172:28:172:37 | parameters : Object[] [[]] : Object | semmle.label | parameters : Object[] [[]] : Object | +| Test.java:173:22:173:27 | record : LogRecord [java.util.logging.LogRecord.parameters, []] : Object | semmle.label | record : LogRecord [java.util.logging.LogRecord.parameters, []] : Object | +| Test.java:173:22:173:43 | getParameters(...) : Object[] [[]] : Object | semmle.label | getParameters(...) : Object[] [[]] : Object | +| Test.java:174:12:174:14 | out : Object[] [[]] : Object | semmle.label | out : Object[] [[]] : Object | +| Test.java:174:12:174:17 | ...[...] | semmle.label | ...[...] | subpaths testFailures diff --git a/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql index a345d6df1fc..ac56b93e642 100644 --- a/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql +++ b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql @@ -26,7 +26,7 @@ module NeutralSinkTest implements TestSig { exists(Call call, Callable callable | call.getCallee() = callable and neutralModel(callable.getDeclaringType().getCompilationUnit().getPackage().getName(), - callable.getDeclaringType().getSourceDeclaration().nestedName(), callable.getName(), + callable.getDeclaringType().getSourceDeclaration().getNestedName(), callable.getName(), [paramsString(callable), ""], "sink", _) and call.getLocation() = location and element = call.toString() and diff --git a/java/ql/test/library-tests/pathcreation/PathCreation.expected b/java/ql/test/library-tests/pathcreation/PathCreation.expected deleted file mode 100644 index 3ea0481c5f3..00000000000 --- a/java/ql/test/library-tests/pathcreation/PathCreation.expected +++ /dev/null @@ -1,26 +0,0 @@ -WARNING: type 'PathCreation' has been deprecated and may be removed in future (PathCreation.ql:4,6-18) -| PathCreation.java:13:18:13:32 | new File(...) | PathCreation.java:13:27:13:31 | "dir" | -| PathCreation.java:14:19:14:40 | new File(...) | PathCreation.java:14:28:14:32 | "dir" | -| PathCreation.java:14:19:14:40 | new File(...) | PathCreation.java:14:35:14:39 | "sub" | -| PathCreation.java:18:18:18:49 | new File(...) | PathCreation.java:18:44:18:48 | "sub" | -| PathCreation.java:18:27:18:41 | new File(...) | PathCreation.java:18:36:18:40 | "dir" | -| PathCreation.java:22:18:22:41 | new File(...) | PathCreation.java:22:27:22:40 | new URI(...) | -| PathCreation.java:26:18:26:31 | of(...) | PathCreation.java:26:26:26:30 | "dir" | -| PathCreation.java:27:19:27:39 | of(...) | PathCreation.java:27:27:27:31 | "dir" | -| PathCreation.java:27:19:27:39 | of(...) | PathCreation.java:27:34:27:38 | "sub" | -| PathCreation.java:31:18:31:40 | of(...) | PathCreation.java:31:26:31:39 | new URI(...) | -| PathCreation.java:35:18:35:33 | get(...) | PathCreation.java:35:28:35:32 | "dir" | -| PathCreation.java:36:19:36:41 | get(...) | PathCreation.java:36:29:36:33 | "dir" | -| PathCreation.java:36:19:36:41 | get(...) | PathCreation.java:36:36:36:40 | "sub" | -| PathCreation.java:40:18:40:42 | get(...) | PathCreation.java:40:28:40:41 | new URI(...) | -| PathCreation.java:44:18:44:56 | getPath(...) | PathCreation.java:44:51:44:55 | "dir" | -| PathCreation.java:45:19:45:64 | getPath(...) | PathCreation.java:45:52:45:56 | "dir" | -| PathCreation.java:45:19:45:64 | getPath(...) | PathCreation.java:45:59:45:63 | "sub" | -| PathCreation.java:49:18:49:31 | of(...) | PathCreation.java:49:26:49:30 | "dir" | -| PathCreation.java:49:18:49:53 | resolveSibling(...) | PathCreation.java:49:48:49:52 | "sub" | -| PathCreation.java:53:18:53:31 | of(...) | PathCreation.java:53:26:53:30 | "dir" | -| PathCreation.java:53:18:53:46 | resolve(...) | PathCreation.java:53:41:53:45 | "sub" | -| PathCreation.java:57:25:57:45 | new FileWriter(...) | PathCreation.java:57:40:57:44 | "dir" | -| PathCreation.java:61:25:61:45 | new FileReader(...) | PathCreation.java:61:40:61:44 | "dir" | -| PathCreation.java:65:32:65:58 | new FileOutputStream(...) | PathCreation.java:65:53:65:57 | "dir" | -| PathCreation.java:69:31:69:56 | new FileInputStream(...) | PathCreation.java:69:51:69:55 | "dir" | diff --git a/java/ql/test/library-tests/pathcreation/PathCreation.java b/java/ql/test/library-tests/pathcreation/PathCreation.java deleted file mode 100644 index fcd1eed3e28..00000000000 --- a/java/ql/test/library-tests/pathcreation/PathCreation.java +++ /dev/null @@ -1,71 +0,0 @@ -import java.io.File; -import java.io.FileWriter; -import java.io.FileReader; -import java.io.FileOutputStream; -import java.io.FileInputStream; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.FileSystems; -import java.net.URI; - -class PathCreation { - public void testNewFileWithString() { - File f = new File("dir"); - File f2 = new File("dir", "sub"); - } - - public void testNewFileWithFileString() { - File f = new File(new File("dir"), "sub"); - } - - public void testNewFileWithURI() throws java.net.URISyntaxException { - File f = new File(new URI("dir")); - } - - public void testPathOfWithString() { - Path p = Path.of("dir"); - Path p2 = Path.of("dir", "sub"); - } - - public void testPathOfWithURI() throws java.net.URISyntaxException { - Path p = Path.of(new URI("dir")); - } - - public void testPathsGetWithString() { - Path p = Paths.get("dir"); - Path p2 = Paths.get("dir", "sub"); - } - - public void testPathsGetWithURI() throws java.net.URISyntaxException { - Path p = Paths.get(new URI("dir")); - } - - public void testFileSystemGetPathWithString() { - Path p = FileSystems.getDefault().getPath("dir"); - Path p2 = FileSystems.getDefault().getPath("dir", "sub"); - } - - public void testPathResolveSiblingWithString() { - Path p = Path.of("dir").resolveSibling("sub"); - } - - public void testPathResolveWithString() { - Path p = Path.of("dir").resolve("sub"); - } - - public void testNewFileWriterWithString() throws java.io.IOException { - FileWriter fw = new FileWriter("dir"); - } - - public void testNewFileReaderWithString() throws java.io.FileNotFoundException { - FileReader fr = new FileReader("dir"); - } - - public void testNewFileOutputStreamWithString() throws java.io.FileNotFoundException { - FileOutputStream fos = new FileOutputStream("dir"); - } - - public void testNewFileInputStreamWithString() throws java.io.FileNotFoundException { - FileInputStream fis = new FileInputStream("dir"); - } -} diff --git a/java/ql/test/library-tests/pathcreation/PathCreation.ql b/java/ql/test/library-tests/pathcreation/PathCreation.ql deleted file mode 100644 index fb27c538319..00000000000 --- a/java/ql/test/library-tests/pathcreation/PathCreation.ql +++ /dev/null @@ -1,5 +0,0 @@ -import java -import semmle.code.java.security.PathCreation - -from PathCreation path -select path, path.getAnInput() diff --git a/java/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.expected b/java/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.expected new file mode 100644 index 00000000000..cb6fc390349 --- /dev/null +++ b/java/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.expected @@ -0,0 +1,2 @@ +unexpectedModel +expectedModel diff --git a/java/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ql b/java/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ql new file mode 100644 index 00000000000..3d2a2e07ac6 --- /dev/null +++ b/java/ql/test/utils/modelgenerator/dataflow/CaptureContentSummaryModels.ql @@ -0,0 +1,11 @@ +import java +import utils.modelgenerator.internal.CaptureModels +import TestUtilities.InlineMadTest + +module InlineMadTestConfig implements InlineMadTestConfigSig { + string getCapturedModel(Callable c) { result = captureContentFlow(c) } + + string getKind() { result = "contentbased-summary" } +} + +import InlineMadTest diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/Factory.java b/java/ql/test/utils/modelgenerator/dataflow/p/Factory.java index 1887e0ca73e..23381486e5f 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/Factory.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/Factory.java @@ -2,16 +2,18 @@ package p; public final class Factory { - private String value; + public String value; private int intValue; // summary=p;Factory;false;create;(String,int);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;Factory;false;create;(String,int);;Argument[0];ReturnValue.Field[p.Factory.value];value;df-generated public static Factory create(String value, int foo) { return new Factory(value, foo); } // summary=p;Factory;false;create;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;Factory;false;create;(String);;Argument[0];ReturnValue.Field[p.Factory.value];value;df-generated public static Factory create(String value) { return new Factory(value, 0); } @@ -22,6 +24,7 @@ public final class Factory { } // summary=p;Factory;false;getValue;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;Factory;false;getValue;();;Argument[this].Field[p.Factory.value];ReturnValue;value;df-generated public String getValue() { return value; } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/FinalClass.java b/java/ql/test/utils/modelgenerator/dataflow/p/FinalClass.java index 2638f818854..b436a4ed650 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/FinalClass.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/FinalClass.java @@ -5,6 +5,7 @@ public final class FinalClass { private static final String C = "constant"; // summary=p;FinalClass;false;returnsInput;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;FinalClass;false;returnsInput;(String);;Argument[0];ReturnValue;value;df-generated public String returnsInput(String input) { return input; } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/FluentAPI.java b/java/ql/test/utils/modelgenerator/dataflow/p/FluentAPI.java index b7793e30666..1799dc3ec4c 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/FluentAPI.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/FluentAPI.java @@ -3,6 +3,7 @@ package p; public final class FluentAPI { // summary=p;FluentAPI;false;returnsThis;(String);;Argument[this];ReturnValue;value;df-generated + // contentbased-summary=p;FluentAPI;false;returnsThis;(String);;Argument[this];ReturnValue;value;df-generated public FluentAPI returnsThis(String input) { return this; } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/ImmutablePojo.java b/java/ql/test/utils/modelgenerator/dataflow/p/ImmutablePojo.java index 0a2cf2d7dbd..9d83f6bf842 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/ImmutablePojo.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/ImmutablePojo.java @@ -7,12 +7,14 @@ public final class ImmutablePojo { private final long x; // summary=p;ImmutablePojo;false;ImmutablePojo;(String,int);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=p;ImmutablePojo;false;ImmutablePojo;(String,int);;Argument[0];Argument[this].SyntheticField[p.ImmutablePojo.value];value;df-generated public ImmutablePojo(String value, int x) { this.value = value; this.x = x; } // summary=p;ImmutablePojo;false;getValue;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;ImmutablePojo;false;getValue;();;Argument[this].SyntheticField[p.ImmutablePojo.value];ReturnValue;value;df-generated public String getValue() { return value; } @@ -24,6 +26,8 @@ public final class ImmutablePojo { // summary=p;ImmutablePojo;false;or;(String);;Argument[0];ReturnValue;taint;df-generated // summary=p;ImmutablePojo;false;or;(String);;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;ImmutablePojo;false;or;(String);;Argument[0];ReturnValue;value;df-generated + // contentbased-summary=p;ImmutablePojo;false;or;(String);;Argument[this].SyntheticField[p.ImmutablePojo.value];ReturnValue;value;df-generated public String or(String defaultValue) { return value != null ? value : defaultValue; } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/Inheritance.java b/java/ql/test/utils/modelgenerator/dataflow/p/Inheritance.java index 8c083cd3972..d36cba1e099 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/Inheritance.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/Inheritance.java @@ -11,6 +11,7 @@ public class Inheritance { public class AImplBasePrivateImpl extends BasePrivate { // summary=p;Inheritance$AImplBasePrivateImpl;true;id;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;Inheritance$AImplBasePrivateImpl;true;id;(String);;Argument[0];ReturnValue;value;df-generated @Override public String id(String s) { return s; @@ -19,6 +20,7 @@ public class Inheritance { public class AImplBasePublic extends BasePublic { // summary=p;Inheritance$BasePublic;true;id;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;Inheritance$BasePublic;true;id;(String);;Argument[0];ReturnValue;value;df-generated @Override public String id(String s) { return s; @@ -59,6 +61,7 @@ public class Inheritance { public class BImpl extends B { // summary=p;Inheritance$IPublic1;true;id;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;Inheritance$IPublic1;true;id;(String);;Argument[0];ReturnValue;value;df-generated @Override public String id(String s) { return s; @@ -67,6 +70,7 @@ public class Inheritance { public class CImpl extends C { // summary=p;Inheritance$C;true;id;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;Inheritance$C;true;id;(String);;Argument[0];ReturnValue;value;df-generated @Override public String id(String s) { return s; @@ -75,6 +79,7 @@ public class Inheritance { public class DImpl extends D { // summary=p;Inheritance$IPublic2;true;id;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;Inheritance$IPublic2;true;id;(String);;Argument[0];ReturnValue;value;df-generated @Override public String id(String s) { return s; @@ -83,6 +88,7 @@ public class Inheritance { public class EImpl extends E { // summary=p;Inheritance$EImpl;true;id;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;Inheritance$EImpl;true;id;(String);;Argument[0];ReturnValue;value;df-generated @Override public String id(String s) { return s; diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/InnerClasses.java b/java/ql/test/utils/modelgenerator/dataflow/p/InnerClasses.java index 5b6a8427a3f..8fef83143cb 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/InnerClasses.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/InnerClasses.java @@ -10,12 +10,14 @@ public class InnerClasses { public class CaptureMe { // summary=p;InnerClasses$CaptureMe;true;yesCm;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;InnerClasses$CaptureMe;true;yesCm;(String);;Argument[0];ReturnValue;value;df-generated public String yesCm(String input) { return input; } } // summary=p;InnerClasses;true;yes;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;InnerClasses;true;yes;(String);;Argument[0];ReturnValue;value;df-generated public String yes(String input) { return input; } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/InnerHolder.java b/java/ql/test/utils/modelgenerator/dataflow/p/InnerHolder.java index e09680dad52..5e8a050a428 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/InnerHolder.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/InnerHolder.java @@ -19,21 +19,25 @@ public final class InnerHolder { private StringBuilder sb = new StringBuilder(); // summary=p;InnerHolder;false;setContext;(String);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=p;InnerHolder;false;setContext;(String);;Argument[0];Argument[this].SyntheticField[p.InnerHolder.context].SyntheticField[p.InnerHolder$Context.value];value;df-generated public void setContext(String value) { context = new Context(value); } // summary=p;InnerHolder;false;explicitSetContext;(String);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=p;InnerHolder;false;explicitSetContext;(String);;Argument[0];Argument[this].SyntheticField[p.InnerHolder.context].SyntheticField[p.InnerHolder$Context.value];value;df-generated public void explicitSetContext(String value) { this.context = new Context(value); } // summary=p;InnerHolder;false;append;(String);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=p;InnerHolder;false;append;(String);;Argument[0];Argument[this].SyntheticField[p.InnerHolder.sb];taint;df-generated public void append(String value) { sb.append(value); } // summary=p;InnerHolder;false;getValue;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;InnerHolder;false;getValue;();;Argument[this].SyntheticField[p.InnerHolder.context].SyntheticField[p.InnerHolder$Context.value];ReturnValue;value;df-generated public String getValue() { return context.getValue(); } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java b/java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java index 10fc72c907f..cf7626eba61 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java @@ -13,6 +13,7 @@ public final class Joiner { private String emptyValue; // summary=p;Joiner;false;Joiner;(CharSequence);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=p;Joiner;false;Joiner;(CharSequence);;Argument[0];Argument[this].SyntheticField[p.Joiner.delimiter];taint;df-generated public Joiner(CharSequence delimiter) { this(delimiter, "", ""); } @@ -20,6 +21,9 @@ public final class Joiner { // summary=p;Joiner;false;Joiner;(CharSequence,CharSequence,CharSequence);;Argument[0];Argument[this];taint;df-generated // summary=p;Joiner;false;Joiner;(CharSequence,CharSequence,CharSequence);;Argument[1];Argument[this];taint;df-generated // summary=p;Joiner;false;Joiner;(CharSequence,CharSequence,CharSequence);;Argument[2];Argument[this];taint;df-generated + // contentbased-summary=p;Joiner;false;Joiner;(CharSequence,CharSequence,CharSequence);;Argument[0];Argument[this].SyntheticField[p.Joiner.delimiter];taint;df-generated + // contentbased-summary=p;Joiner;false;Joiner;(CharSequence,CharSequence,CharSequence);;Argument[1];Argument[this].SyntheticField[p.Joiner.prefix];taint;df-generated + // contentbased-summary=p;Joiner;false;Joiner;(CharSequence,CharSequence,CharSequence);;Argument[2];Argument[this].SyntheticField[p.Joiner.suffix];taint;df-generated public Joiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix) { Objects.requireNonNull(prefix, "The prefix must not be null"); Objects.requireNonNull(delimiter, "The delimiter must not be null"); @@ -32,6 +36,9 @@ public final class Joiner { // summary=p;Joiner;false;setEmptyValue;(CharSequence);;Argument[0];Argument[this];taint;df-generated // summary=p;Joiner;false;setEmptyValue;(CharSequence);;Argument[this];ReturnValue;value;df-generated + // contentbased-summary=p;Joiner;false;setEmptyValue;(CharSequence);;Argument[0];Argument[this].SyntheticField[p.Joiner.emptyValue];taint;df-generated + // contentbased-summary=p;Joiner;false;setEmptyValue;(CharSequence);;Argument[0];ReturnValue.SyntheticField[p.Joiner.emptyValue];taint;df-generated + // contentbased-summary=p;Joiner;false;setEmptyValue;(CharSequence);;Argument[this];ReturnValue;value;df-generated public Joiner setEmptyValue(CharSequence emptyValue) { this.emptyValue = Objects.requireNonNull(emptyValue, "The empty value must not be null").toString(); @@ -71,6 +78,8 @@ public final class Joiner { } // summary=p;Joiner;false;add;(CharSequence);;Argument[this];ReturnValue;value;df-generated + // contentbased-summary=p;Joiner;false;add;(CharSequence);;Argument[this].SyntheticField[p.Joiner.elts].ArrayElement;ReturnValue.SyntheticField[p.Joiner.elts].ArrayElement;value;df-generated + // contentbased-summary=p;Joiner;false;add;(CharSequence);;Argument[this];ReturnValue;value;df-generated public Joiner add(CharSequence newElement) { final String elt = String.valueOf(newElement); if (elts == null) { @@ -94,6 +103,8 @@ public final class Joiner { } // summary=p;Joiner;false;merge;(Joiner);;Argument[this];ReturnValue;value;df-generated + // contentbased-summary=p;Joiner;false;merge;(Joiner);;Argument[this].SyntheticField[p.Joiner.elts].ArrayElement;ReturnValue.SyntheticField[p.Joiner.elts].ArrayElement;value;df-generated + // contentbased-summary=p;Joiner;false;merge;(Joiner);;Argument[this];ReturnValue;value;df-generated public Joiner merge(Joiner other) { Objects.requireNonNull(other); if (other.elts == null) { diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/MultipleImpl2.java b/java/ql/test/utils/modelgenerator/dataflow/p/MultipleImpl2.java index 3e5d9abd768..09984a4742f 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/MultipleImpl2.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/MultipleImpl2.java @@ -17,6 +17,7 @@ class MultipleImpl2 { public class Impl2 implements IInterface { // summary=p;MultipleImpl2$IInterface;true;m;(Object);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;MultipleImpl2$IInterface;true;m;(Object);;Argument[0];ReturnValue;value;df-generated public Object m(Object value) { return value; } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/MultipleImpls.java b/java/ql/test/utils/modelgenerator/dataflow/p/MultipleImpls.java index 1bf73599588..164f55ae732 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/MultipleImpls.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/MultipleImpls.java @@ -10,6 +10,7 @@ public class MultipleImpls { public static class Strat1 implements Strategy { // summary=p;MultipleImpls$Strategy;true;doSomething;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;MultipleImpls$Strategy;true;doSomething;(String);;Argument[0];ReturnValue;value;df-generated public String doSomething(String value) { return value; } @@ -29,12 +30,18 @@ public class MultipleImpls { private String foo; // summary=p;MultipleImpls$Strategy;true;doSomething;(String);;Argument[0];Argument[this];taint;df-generated + // A field based model should not be lifted if the field pertains to the concrete + // implementation. + // SPURIOUS-contentbased-summary=p;MultipleImpls$Strategy;true;doSomething;(String);;Argument[0];Argument[this].SyntheticField[p.MultipleImpls$Strat2.foo];value;df-generated public String doSomething(String value) { this.foo = value; return "none"; } // summary=p;MultipleImpls$Strat2;true;getValue;();;Argument[this];ReturnValue;taint;df-generated + // A field based model should not be lifted if the field pertains to the concrete + // implementation. + // SPURIOUS-contentbased-summary=p;MultipleImpls$Strat2;true;getValue;();;Argument[this].SyntheticField[p.MultipleImpls$Strat2.foo];ReturnValue;value;df-generated public String getValue() { return this.foo; } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/ParamFlow.java b/java/ql/test/utils/modelgenerator/dataflow/p/ParamFlow.java index d175ee9c71e..05614c392e4 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/ParamFlow.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/ParamFlow.java @@ -8,6 +8,7 @@ import java.util.List; public class ParamFlow { // summary=p;ParamFlow;true;returnsInput;(String);;Argument[0];ReturnValue;taint;df-generated + // contentbased-summary=p;ParamFlow;true;returnsInput;(String);;Argument[0];ReturnValue;value;df-generated public String returnsInput(String input) { return input; } @@ -19,6 +20,8 @@ public class ParamFlow { // summary=p;ParamFlow;true;returnMultipleParameters;(String,String);;Argument[0];ReturnValue;taint;df-generated // summary=p;ParamFlow;true;returnMultipleParameters;(String,String);;Argument[1];ReturnValue;taint;df-generated + // contentbased-summary=p;ParamFlow;true;returnMultipleParameters;(String,String);;Argument[0];ReturnValue;value;df-generated + // contentbased-summary=p;ParamFlow;true;returnMultipleParameters;(String,String);;Argument[1];ReturnValue;value;df-generated public String returnMultipleParameters(String one, String two) { if (System.currentTimeMillis() > 100) { return two; @@ -27,26 +30,31 @@ public class ParamFlow { } // summary=p;ParamFlow;true;returnArrayElement;(String[]);;Argument[0].ArrayElement;ReturnValue;taint;df-generated + // contentbased-summary=p;ParamFlow;true;returnArrayElement;(String[]);;Argument[0].ArrayElement;ReturnValue;value;df-generated public String returnArrayElement(String[] input) { return input[0]; } // summary=p;ParamFlow;true;returnVarArgElement;(String[]);;Argument[0].ArrayElement;ReturnValue;taint;df-generated + // contentbased-summary=p;ParamFlow;true;returnVarArgElement;(String[]);;Argument[0].ArrayElement;ReturnValue;value;df-generated public String returnVarArgElement(String... input) { return input[0]; } // summary=p;ParamFlow;true;returnCollectionElement;(List);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=p;ParamFlow;true;returnCollectionElement;(List);;Argument[0].Element;ReturnValue;value;df-generated public String returnCollectionElement(List input) { return input.get(0); } // summary=p;ParamFlow;true;returnIteratorElement;(Iterator);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=p;ParamFlow;true;returnIteratorElement;(Iterator);;Argument[0].Element;ReturnValue;value;df-generated public String returnIteratorElement(Iterator input) { return input.next(); } // summary=p;ParamFlow;true;returnIterableElement;(Iterable);;Argument[0].Element;ReturnValue;taint;df-generated + // contentbased-summary=p;ParamFlow;true;returnIterableElement;(Iterable);;Argument[0].Element;ReturnValue;value;df-generated public String returnIterableElement(Iterable input) { return input.iterator().next(); } @@ -57,16 +65,19 @@ public class ParamFlow { } // summary=p;ParamFlow;true;writeChunked;(byte[],OutputStream);;Argument[0];Argument[1];taint;df-generated + // contentbased-summary=p;ParamFlow;true;writeChunked;(byte[],OutputStream);;Argument[0];Argument[1];taint;df-generated public void writeChunked(byte[] data, OutputStream output) throws IOException { output.write(data, 0, data.length); } // summary=p;ParamFlow;true;writeChunked;(char[],OutputStream);;Argument[0];Argument[1];taint;df-generated + // contentbased-summary=p;ParamFlow;true;writeChunked;(char[],OutputStream);;Argument[0];Argument[1];taint;df-generated public void writeChunked(char[] data, OutputStream output) throws IOException { output.write(String.valueOf(data).getBytes(), 0, data.length); } // summary=p;ParamFlow;true;addTo;(String,List);;Argument[0];Argument[1].Element;taint;df-generated + // contentbased-summary=p;ParamFlow;true;addTo;(String,List);;Argument[0];Argument[1].Element;value;df-generated public void addTo(String data, List target) { target.add(data); } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/Pojo.java b/java/ql/test/utils/modelgenerator/dataflow/p/Pojo.java index 9d5de0517e1..e6fb581aac2 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/Pojo.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/Pojo.java @@ -24,18 +24,20 @@ public final class Pojo { private int intValue = 2; - private byte[] byteArray = new byte[] {1, 2, 3}; + public byte[] byteArray = new byte[] {1, 2, 3}; private float[] floatArray = new float[] {1, 2, 3}; private char[] charArray = new char[] {'a', 'b', 'c'}; private List charList = Arrays.asList('a', 'b', 'c'); private Byte[] byteObjectArray = new Byte[] {1, 2, 3}; // summary=p;Pojo;false;getValue;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;Pojo;false;getValue;();;Argument[this].SyntheticField[p.Pojo.value];ReturnValue;value;df-generated public String getValue() { return value; } // summary=p;Pojo;false;setValue;(String);;Argument[0];Argument[this];taint;df-generated + // contentbased-summary=p;Pojo;false;setValue;(String);;Argument[0];Argument[this].SyntheticField[p.Pojo.value];value;df-generated public void setValue(String value) { this.value = value; } @@ -62,11 +64,13 @@ public final class Pojo { } // summary=p;Pojo;false;getCharArray;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;Pojo;false;getCharArray;();;Argument[this].SyntheticField[p.Pojo.charArray];ReturnValue;value;df-generated public char[] getCharArray() { return charArray; } // summary=p;Pojo;false;getByteArray;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;Pojo;false;getByteArray;();;Argument[this].Field[p.Pojo.byteArray];ReturnValue;value;df-generated public byte[] getByteArray() { return byteArray; } @@ -87,11 +91,13 @@ public final class Pojo { } // summary=p;Pojo;false;getBoxedChars;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;Pojo;false;getBoxedChars;();;Argument[this].SyntheticField[p.Pojo.charList];ReturnValue;value;df-generated public List getBoxedChars() { return charList; } // summary=p;Pojo;false;getBoxedBytes;();;Argument[this];ReturnValue;taint;df-generated + // contentbased-summary=p;Pojo;false;getBoxedBytes;();;Argument[this].SyntheticField[p.Pojo.byteObjectArray];ReturnValue;value;df-generated public Byte[] getBoxedBytes() { return byteObjectArray; } @@ -107,6 +113,7 @@ public final class Pojo { } // summary=p;Pojo;false;fillIn;(List);;Argument[this];Argument[0].Element;taint;df-generated + // contentbased-summary=p;Pojo;false;fillIn;(List);;Argument[this].SyntheticField[p.Pojo.value];Argument[0].Element;value;df-generated public void fillIn(List target) { target.add(value); } diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/PrivateFlowViaPublicInterface.java b/java/ql/test/utils/modelgenerator/dataflow/p/PrivateFlowViaPublicInterface.java index eeebabeb68c..b5a1de27d4a 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/PrivateFlowViaPublicInterface.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/PrivateFlowViaPublicInterface.java @@ -29,6 +29,9 @@ public class PrivateFlowViaPublicInterface { } // summary=p;PrivateFlowViaPublicInterface$SPI;true;openStream;();;Argument[this];ReturnValue;taint;df-generated + // A field based model should not be lifted if the field pertains to the concrete + // implementation. + // SPURIOUS-contentbased-summary=p;PrivateFlowViaPublicInterface$SPI;true;openStream;();;Argument[this].SyntheticField[p.PrivateFlowViaPublicInterface$PrivateImplWithSink.file];ReturnValue;taint;df-generated @Override public OutputStream openStream() throws IOException { return new FileOutputStream(file); @@ -51,6 +54,9 @@ public class PrivateFlowViaPublicInterface { } // summary=p;PrivateFlowViaPublicInterface;true;createAnSPI;(File);;Argument[0];ReturnValue;taint;df-generated + // A field based model should not be lifted if the field pertains to the concrete + // implementation. + // SPURIOUS-contentbased-summary=p;PrivateFlowViaPublicInterface;true;createAnSPI;(File);;Argument[0];ReturnValue.SyntheticField[p.PrivateFlowViaPublicInterface$PrivateImplWithSink.file];value;df-generated public static SPI createAnSPI(File file) { return new PrivateImplWithSink(file); } diff --git a/javascript/extractor/lib/typescript/package-lock.json b/javascript/extractor/lib/typescript/package-lock.json index 66e41baecab..50a9e0a66ca 100644 --- a/javascript/extractor/lib/typescript/package-lock.json +++ b/javascript/extractor/lib/typescript/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "typescript-parser-wrapper", "dependencies": { - "typescript": "5.5.2" + "typescript": "^5.6.2" }, "devDependencies": { "@types/node": "18.15.3" @@ -20,9 +20,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/javascript/extractor/lib/typescript/package.json b/javascript/extractor/lib/typescript/package.json index 961a8526a94..bf650ec457a 100644 --- a/javascript/extractor/lib/typescript/package.json +++ b/javascript/extractor/lib/typescript/package.json @@ -2,7 +2,7 @@ "name": "typescript-parser-wrapper", "private": true, "dependencies": { - "typescript": "5.5.2" + "typescript": "5.6.2" }, "scripts": { "build": "tsc --project tsconfig.json", @@ -14,4 +14,4 @@ "devDependencies": { "@types/node": "18.15.3" } -} \ No newline at end of file +} diff --git a/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java b/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java index 2fc9474d298..d42b0676246 100644 --- a/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java +++ b/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java @@ -1203,11 +1203,13 @@ public class TypeScriptASTConverter { Literal source = tryConvertChild(node, "moduleSpecifier", Literal.class); Expression attributes = convertChild(node, "attributes"); if (hasChild(node, "exportClause")) { + JsonElement exportClauseNode = node.get("exportClause"); boolean hasTypeKeyword = node.get("isTypeOnly").getAsBoolean(); + boolean isNamespaceExportNode = hasKind(exportClauseNode, "NamespaceExport"); List specifiers = - hasKind(node.get("exportClause"), "NamespaceExport") + isNamespaceExportNode ? Collections.singletonList(convertChild(node, "exportClause")) - : convertChildren(node.get("exportClause").getAsJsonObject(), "elements"); + : convertChildren(exportClauseNode.getAsJsonObject(), "elements"); return new ExportNamedDeclaration(loc, null, specifiers, source, attributes, hasTypeKeyword); } else { return new ExportAllDeclaration(loc, source, attributes); @@ -1215,15 +1217,21 @@ public class TypeScriptASTConverter { } private Node convertExportSpecifier(JsonObject node, SourceLocation loc) throws ParseError { + Identifier local = convertChild(node, hasChild(node, "propertyName") ? "propertyName" : "name"); + JsonObject exportedToken = node.get("name").getAsJsonObject(); + Identifier exported = convertNodeAsIdentifier(exportedToken); + return new ExportSpecifier( loc, - convertChild(node, hasChild(node, "propertyName") ? "propertyName" : "name"), - convertChild(node, "name")); + local, + exported); } private Node convertNamespaceExport(JsonObject node, SourceLocation loc) throws ParseError { // Convert the "* as ns" from an export declaration. - return new ExportNamespaceSpecifier(loc, convertChild(node, "name")); + JsonObject exportedNamespaceToken = node.get("name").getAsJsonObject(); + Identifier exportedNamespaceIdentifier = convertNodeAsIdentifier(exportedNamespaceToken); + return new ExportNamespaceSpecifier(loc, exportedNamespaceIdentifier); } private Node convertExpressionStatement(JsonObject node, SourceLocation loc) throws ParseError { @@ -1431,7 +1439,8 @@ public class TypeScriptASTConverter { private Node convertImportSpecifier(JsonObject node, SourceLocation loc) throws ParseError { boolean hasImported = hasChild(node, "propertyName"); - Identifier imported = convertChild(node, hasImported ? "propertyName" : "name"); + JsonObject importedToken = node.get(hasImported? "propertyName" : "name").getAsJsonObject(); + Identifier imported = convertNodeAsIdentifier(importedToken); Identifier local = convertChild(node, "name"); boolean isTypeOnly = node.get("isTypeOnly").getAsBoolean() == true; return new ImportSpecifier(loc, imported, local, isTypeOnly); diff --git a/javascript/ql/integration-tests/all-platforms/no-types/qlpack.yml b/javascript/ql/integration-tests/all-platforms/no-types/qlpack.yml deleted file mode 100644 index 8d1460010cb..00000000000 --- a/javascript/ql/integration-tests/all-platforms/no-types/qlpack.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - codeql/javascript-all: '*' -warnOnImplicitThis: true diff --git a/javascript/ql/integration-tests/all-platforms/diagnostics/internal-error/diagnostics.expected b/javascript/ql/integration-tests/diagnostics/internal-error/diagnostics.expected similarity index 100% rename from javascript/ql/integration-tests/all-platforms/diagnostics/internal-error/diagnostics.expected rename to javascript/ql/integration-tests/diagnostics/internal-error/diagnostics.expected diff --git a/javascript/ql/integration-tests/all-platforms/diagnostics/internal-error/src/my_failure.ts b/javascript/ql/integration-tests/diagnostics/internal-error/src/my_failure.ts similarity index 100% rename from javascript/ql/integration-tests/all-platforms/diagnostics/internal-error/src/my_failure.ts rename to javascript/ql/integration-tests/diagnostics/internal-error/src/my_failure.ts diff --git a/javascript/ql/integration-tests/all-platforms/diagnostics/internal-error/test.py b/javascript/ql/integration-tests/diagnostics/internal-error/test.py similarity index 100% rename from javascript/ql/integration-tests/all-platforms/diagnostics/internal-error/test.py rename to javascript/ql/integration-tests/diagnostics/internal-error/test.py diff --git a/javascript/ql/integration-tests/all-platforms/diagnostics/internal-error/tsconfig.json b/javascript/ql/integration-tests/diagnostics/internal-error/tsconfig.json similarity index 100% rename from javascript/ql/integration-tests/all-platforms/diagnostics/internal-error/tsconfig.json rename to javascript/ql/integration-tests/diagnostics/internal-error/tsconfig.json diff --git a/javascript/ql/integration-tests/all-platforms/diagnostics/syntax-error/bad.js b/javascript/ql/integration-tests/diagnostics/syntax-error/bad.js similarity index 100% rename from javascript/ql/integration-tests/all-platforms/diagnostics/syntax-error/bad.js rename to javascript/ql/integration-tests/diagnostics/syntax-error/bad.js diff --git a/javascript/ql/integration-tests/all-platforms/diagnostics/syntax-error/diagnostics.expected b/javascript/ql/integration-tests/diagnostics/syntax-error/diagnostics.expected similarity index 100% rename from javascript/ql/integration-tests/all-platforms/diagnostics/syntax-error/diagnostics.expected rename to javascript/ql/integration-tests/diagnostics/syntax-error/diagnostics.expected diff --git a/javascript/ql/integration-tests/all-platforms/diagnostics/syntax-error/test.py b/javascript/ql/integration-tests/diagnostics/syntax-error/test.py similarity index 100% rename from javascript/ql/integration-tests/all-platforms/diagnostics/syntax-error/test.py rename to javascript/ql/integration-tests/diagnostics/syntax-error/test.py diff --git a/javascript/ql/integration-tests/all-platforms/no-types/foo.ts b/javascript/ql/integration-tests/no-types/foo.ts similarity index 100% rename from javascript/ql/integration-tests/all-platforms/no-types/foo.ts rename to javascript/ql/integration-tests/no-types/foo.ts diff --git a/ruby/extractor/codeql-extractor-fake-crate/BUILD.bazel b/javascript/ql/integration-tests/no-types/javascript.expected similarity index 100% rename from ruby/extractor/codeql-extractor-fake-crate/BUILD.bazel rename to javascript/ql/integration-tests/no-types/javascript.expected diff --git a/javascript/ql/integration-tests/all-platforms/no-types/javascript.ql b/javascript/ql/integration-tests/no-types/javascript.ql similarity index 100% rename from javascript/ql/integration-tests/all-platforms/no-types/javascript.ql rename to javascript/ql/integration-tests/no-types/javascript.ql diff --git a/javascript/ql/integration-tests/all-platforms/no-types/test.py b/javascript/ql/integration-tests/no-types/test.py similarity index 100% rename from javascript/ql/integration-tests/all-platforms/no-types/test.py rename to javascript/ql/integration-tests/no-types/test.py diff --git a/javascript/ql/integration-tests/all-platforms/no-types/tsconfig.json b/javascript/ql/integration-tests/no-types/tsconfig.json similarity index 100% rename from javascript/ql/integration-tests/all-platforms/no-types/tsconfig.json rename to javascript/ql/integration-tests/no-types/tsconfig.json diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 134bbe39a69..105414b5b37 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,27 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted the deprecated `isHTMLElement` and `getDOMName` predicates from the JSX library, use `isHtmlElement` and `getDomName` respectively instead. +* Deleted the deprecated `getPackageJSON` predicate from the `SourceMappingComment` class, use `SourceMappingComment` instead. +* Deleted many deprecated directives from the `Stmt.qll` file, use the `Directive::` module instead. +* Deleted the deprecated `YAMLNode`, `YAMLValue`, and `YAMLScalar` classes from the YAML libraries, use `YamlNode`, `YamlValue`, and `YamlScalar` respectively instead. +* Deleted the deprecated `getARouteHandlerExpr` predicate from `Connect.qll`, use `getARouteHandlerNode` instead. +* Deleted the deprecated `getGWTVersion` predicate from `GWT.qll`, use `getGwtVersion` instead. +* Deleted the deprecated `getOwnOptionsObject` predicate from `Vue.qll`, use `getOwnOptions().getASink()` instead. + +### Major Analysis Improvements + +* Added support for TypeScript 5.6. + +## 1.1.4 + +No user-facing changes. + +## 1.1.3 + +No user-facing changes. + ## 1.1.2 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/1.1.3.md b/javascript/ql/lib/change-notes/released/1.1.3.md new file mode 100644 index 00000000000..e8f1701bd62 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/1.1.3.md @@ -0,0 +1,3 @@ +## 1.1.3 + +No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/1.1.4.md b/javascript/ql/lib/change-notes/released/1.1.4.md new file mode 100644 index 00000000000..b95051903c5 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/1.1.4.md @@ -0,0 +1,3 @@ +## 1.1.4 + +No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.0.0.md b/javascript/ql/lib/change-notes/released/2.0.0.md new file mode 100644 index 00000000000..bb31589fa6e --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.0.0.md @@ -0,0 +1,15 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted the deprecated `isHTMLElement` and `getDOMName` predicates from the JSX library, use `isHtmlElement` and `getDomName` respectively instead. +* Deleted the deprecated `getPackageJSON` predicate from the `SourceMappingComment` class, use `SourceMappingComment` instead. +* Deleted many deprecated directives from the `Stmt.qll` file, use the `Directive::` module instead. +* Deleted the deprecated `YAMLNode`, `YAMLValue`, and `YAMLScalar` classes from the YAML libraries, use `YamlNode`, `YamlValue`, and `YamlScalar` respectively instead. +* Deleted the deprecated `getARouteHandlerExpr` predicate from `Connect.qll`, use `getARouteHandlerNode` instead. +* Deleted the deprecated `getGWTVersion` predicate from `GWT.qll`, use `getGwtVersion` instead. +* Deleted the deprecated `getOwnOptionsObject` predicate from `Vue.qll`, use `getOwnOptions().getASink()` instead. + +### Major Analysis Improvements + +* Added support for TypeScript 5.6. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 53ab127707f..0abe6ccede0 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.2 +lastReleaseVersion: 2.0.0 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 0a9adfd363a..6355ae8868a 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 1.1.3-dev +version: 2.0.1-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/lib/semmle/javascript/JSX.qll b/javascript/ql/lib/semmle/javascript/JSX.qll index 6fd7c775d4e..ed8a7b097a6 100644 --- a/javascript/ql/lib/semmle/javascript/JSX.qll +++ b/javascript/ql/lib/semmle/javascript/JSX.qll @@ -73,9 +73,6 @@ class JsxElement extends JsxNode { * That is, the name starts with a lowercase letter. */ predicate isHtmlElement() { this.getName().regexpMatch("[a-z].*") } - - /** DEPRECATED: Alias for isHtmlElement */ - deprecated predicate isHTMLElement() { this.isHtmlElement() } } /** @@ -256,7 +253,4 @@ class JsxPragma extends JSDocTag { * the result is `React.DOM`. */ string getDomName() { result = this.getDescription().trim() } - - /** DEPRECATED: Alias for getDomName */ - deprecated string getDOMName() { result = this.getDomName() } } diff --git a/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll b/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll index 7231143ed55..03b5bf93fb0 100644 --- a/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll +++ b/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll @@ -197,9 +197,6 @@ class MainModulePath extends PathExpr, @json_string { not exists(getExportRelativePath(this)) and result = "." } - /** DEPRECATED: Alias for getPackageJson */ - deprecated PackageJson getPackageJSON() { result = this.getPackageJson() } - override string getValue() { result = this.(JsonString).getValue() } override Folder getAdditionalSearchRoot(int priority) { @@ -258,9 +255,6 @@ private class FilesPath extends PathExpr, @json_string { /** Gets the `package.json` file in which this path occurs. */ PackageJson getPackageJson() { result = pkg } - /** DEPRECATED: Alias for getPackageJson */ - deprecated PackageJson getPackageJSON() { result = this.getPackageJson() } - override string getValue() { result = this.(JsonString).getValue() } override Folder getAdditionalSearchRoot(int priority) { diff --git a/javascript/ql/lib/semmle/javascript/SourceMaps.qll b/javascript/ql/lib/semmle/javascript/SourceMaps.qll index 17dbbd8ccdf..21fa7112132 100644 --- a/javascript/ql/lib/semmle/javascript/SourceMaps.qll +++ b/javascript/ql/lib/semmle/javascript/SourceMaps.qll @@ -23,7 +23,4 @@ class SourceMappingComment extends Comment { /** Gets the URL of the source map referenced by this comment. */ string getSourceMappingUrl() { result = url } - - /** DEPRECATED: Alias for getSourceMappingUrl */ - deprecated string getSourceMappingURL() { result = this.getSourceMappingUrl() } } diff --git a/javascript/ql/lib/semmle/javascript/Stmt.qll b/javascript/ql/lib/semmle/javascript/Stmt.qll index 9adfece36a0..93eb1d1dea0 100644 --- a/javascript/ql/lib/semmle/javascript/Stmt.qll +++ b/javascript/ql/lib/semmle/javascript/Stmt.qll @@ -434,36 +434,6 @@ module Directive { } } -/** DEPRECATED. Use `Directive::KnownDirective` instead. */ -deprecated class KnownDirective = Directive::KnownDirective; - -/** DEPRECATED. Use `Directive::StrictModeDecl` instead. */ -deprecated class StrictModeDecl = Directive::StrictModeDecl; - -/** DEPRECATED. Use `Directive::AsmJSDirective` instead. */ -deprecated class AsmJSDirective = Directive::AsmJSDirective; - -/** DEPRECATED. Use `Directive::BabelDirective` instead. */ -deprecated class BabelDirective = Directive::BabelDirective; - -/** DEPRECATED. Use `Directive::SixToFiveDirective` instead. */ -deprecated class SixToFiveDirective = Directive::SixToFiveDirective; - -/** DEPRECATED. Use `Directive::SystemJSFormatDirective` instead. */ -deprecated class SystemJSFormatDirective = Directive::SystemJSFormatDirective; - -/** DEPRECATED. Use `Directive::NgInjectDirective` instead. */ -deprecated class NgInjectDirective = Directive::NgInjectDirective; - -/** DEPRECATED. Use `Directive::YuiDirective` instead. */ -deprecated class YuiDirective = Directive::YuiDirective; - -/** DEPRECATED. Use `Directive::SystemJSDepsDirective` instead. */ -deprecated class SystemJSDepsDirective = Directive::SystemJSDepsDirective; - -/** DEPRECATED. Use `Directive::BundleDirective` instead. */ -deprecated class BundleDirective = Directive::BundleDirective; - /** * An `if` statement. * diff --git a/javascript/ql/lib/semmle/javascript/YAML.qll b/javascript/ql/lib/semmle/javascript/YAML.qll index 1ab562b9524..24486b729c0 100644 --- a/javascript/ql/lib/semmle/javascript/YAML.qll +++ b/javascript/ql/lib/semmle/javascript/YAML.qll @@ -54,12 +54,3 @@ private class MyYmlNode extends Locatable instanceof YamlNode { override string toString() { result = YamlNode.super.toString() } } - -/** DEPRECATED: Alias for YamlNode */ -deprecated class YAMLNode = YamlNode; - -/** DEPRECATED: Alias for YamlValue */ -deprecated class YAMLValue = YamlValue; - -/** DEPRECATED: Alias for YamlScalar */ -deprecated class YAMLScalar = YamlScalar; diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Connect.qll b/javascript/ql/lib/semmle/javascript/frameworks/Connect.qll index dbcbc0635db..f6ac5854f4d 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Connect.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Connect.qll @@ -88,12 +88,6 @@ module Connect { override DataFlow::Node getServer() { result = server } - /** - * DEPRECATED: Use `getARouteHandlerNode` instead. - * Gets an argument that represents a route handler being registered. - */ - deprecated Expr getARouteHandlerExpr() { result = this.getARouteHandlerNode().asExpr() } - /** * Gets an argument that represents a route handler being registered. */ diff --git a/javascript/ql/lib/semmle/javascript/frameworks/GWT.qll b/javascript/ql/lib/semmle/javascript/frameworks/GWT.qll index 345873719a6..7fa72c9a9f0 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/GWT.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/GWT.qll @@ -28,9 +28,6 @@ class GwtHeader extends InlineScript { result = e.getStringValue() ) } - - /** DEPRECATED: Alias for getGwtVersion */ - deprecated string getGWTVersion() { result = this.getGwtVersion() } } /** diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Vue.qll b/javascript/ql/lib/semmle/javascript/frameworks/Vue.qll index 096877900c9..ebfe042f4d0 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Vue.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Vue.qll @@ -183,14 +183,6 @@ module Vue { result = this.getAsClassComponent().getDecoratorOptions() } - /** - * DEPRECATED. Use `getOwnOptions().getASink()`. - * - * Gets the options passed to the Vue object, such as the object literal `{...}` in `new Vue{{...})` - * or the default export of a single-file component. - */ - deprecated DataFlow::Node getOwnOptionsObject() { result = this.getOwnOptions().asSink() } - /** * Gets the class implementing this Vue component, if any. * diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index af1e040cc44..e337a585f63 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,21 @@ +## 1.2.0 + +### Major Analysis Improvements + +- Added a new query (`js/actions/actions-artifact-leak`) to detect GitHub Actions artifacts that may leak the `GITHUB_TOKEN` token. + +## 1.1.3 + +No user-facing changes. + +## 1.1.2 + +### Minor Analysis Improvements + +* Message events in the browser are now properly classified as client-side taint sources. Previously they were + incorrectly classified as server-side taint sources, which resulted in some alerts being reported by + the wrong query, such as server-side URL redirection instead of client-side URL redirection. + ## 1.1.1 No user-facing changes. diff --git a/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.qhelp b/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.qhelp new file mode 100644 index 00000000000..7ec9c1fe777 --- /dev/null +++ b/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.qhelp @@ -0,0 +1,30 @@ + + + +

    + Sensitive information included in a GitHub Actions artifact can allow an attacker to access + the sensitive information if the artifact is published. +

    +
    + + +

    + Only store information that is meant to be publicly available in a GitHub Actions artifact. +

    +
    + + +

    + The following example uses actions/checkout to checkout code which stores the GITHUB_TOKEN in the `.git/config` file + and then stores the contents of the `.git` repository into the artifact: +

    + +

    + The issue has been fixed below, where the actions/upload-artifact uses a version (v4+) which does not include hidden files or + directories into the artifact. +

    + +
    +
    diff --git a/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql b/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql new file mode 100644 index 00000000000..0b869d5d283 --- /dev/null +++ b/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql @@ -0,0 +1,111 @@ +/** + * @name Storage of sensitive information in GitHub Actions artifact + * @description Including sensitive information in a GitHub Actions artifact can + * expose it to an attacker. + * @kind problem + * @problem.severity error + * @security-severity 7.5 + * @precision high + * @id js/actions/actions-artifact-leak + * @tags security + * external/cwe/cwe-312 + * external/cwe/cwe-315 + * external/cwe/cwe-359 + */ + +import javascript +import semmle.javascript.Actions + +/** + * A step that uses `actions/checkout` action. + */ +class ActionsCheckoutStep extends Actions::Step { + ActionsCheckoutStep() { this.getUses().getGitHubRepository() = "actions/checkout" } +} + +/** + * A `with:`/`persist-credentials` field sibling to `uses: actions/checkout`. + */ +class ActionsCheckoutWithPersistCredentials extends YamlNode, YamlScalar { + ActionsCheckoutStep step; + + ActionsCheckoutWithPersistCredentials() { + step.lookup("with").(YamlMapping).lookup("persist-credentials") = this + } + + /** Gets the step this field belongs to. */ + ActionsCheckoutStep getStep() { result = step } +} + +/** + * A `with:`/`path` field sibling to `uses: actions/checkout`. + */ +class ActionsCheckoutWithPath extends YamlNode, YamlString { + ActionsCheckoutStep step; + + ActionsCheckoutWithPath() { step.lookup("with").(YamlMapping).lookup("path") = this } + + /** Gets the step this field belongs to. */ + ActionsCheckoutStep getStep() { result = step } +} + +/** + * A step that uses `actions/upload-artifact` action. + */ +class ActionsUploadArtifactStep extends Actions::Step { + ActionsUploadArtifactStep() { this.getUses().getGitHubRepository() = "actions/upload-artifact" } +} + +/** + * A `with:`/`path` field sibling to `uses: actions/upload-artifact`. + */ +class ActionsUploadArtifactWithPath extends YamlNode, YamlString { + ActionsUploadArtifactStep step; + + ActionsUploadArtifactWithPath() { step.lookup("with").(YamlMapping).lookup("path") = this } + + /** Gets the step this field belongs to. */ + ActionsUploadArtifactStep getStep() { result = step } +} + +from ActionsCheckoutStep checkout, ActionsUploadArtifactStep upload, Actions::Job job, int i, int j +where + checkout.getJob() = job and + upload.getJob() = job and + job.getStep(i) = checkout and + job.getStep(j) = upload and + j = i + 1 and + upload.getUses().getVersion() = + [ + "v4.3.6", "834a144ee995460fba8ed112a2fc961b36a5ec5a", // + "v4.3.5", "89ef406dd8d7e03cfd12d9e0a4a378f454709029", // + "v4.3.4", "0b2256b8c012f0828dc542b3febcab082c67f72b", // + "v4.3.3", "65462800fd760344b1a7b4382951275a0abb4808", // + "v4.3.2", "1746f4ab65b179e0ea60a494b83293b640dd5bba", // + "v4.3.1", "5d5d22a31266ced268874388b861e4b58bb5c2f3", // + "v4.3.0", "26f96dfa697d77e81fd5907df203aa23a56210a8", // + "v4.2.0", "694cdabd8bdb0f10b2cea11669e1bf5453eed0a6", // + "v4.1.0", "1eb3cb2b3e0f29609092a73eb033bb759a334595", // + "v4.0.0", "c7d193f32edcb7bfad88892161225aeda64e9392", // + ] and + ( + not exists(ActionsCheckoutWithPersistCredentials persist | persist.getStep() = checkout) + or + exists(ActionsCheckoutWithPersistCredentials persist | + persist.getStep() = checkout and + persist.getValue() = "true" + ) + ) and + ( + not exists(ActionsCheckoutWithPath path | path.getStep() = checkout) and + exists(ActionsUploadArtifactWithPath path | + path.getStep() = upload and path.getValue() = [".", "*"] + ) + or + exists(ActionsCheckoutWithPath checkout_path, ActionsUploadArtifactWithPath upload_path | + checkout_path.getValue() + ["", "/*"] = upload_path.getValue() and + checkout_path.getStep() = checkout and + upload_path.getStep() = upload + ) + ) +select upload, "A secret may be exposed in an artifact." diff --git a/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak-fixed.yml b/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak-fixed.yml new file mode 100644 index 00000000000..9f716584a9b --- /dev/null +++ b/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak-fixed.yml @@ -0,0 +1,14 @@ +name: secrets-in-artifacts +on: + pull_request: +jobs: + a-job: # NOT VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Upload artifact" + uses: actions/upload-artifact@v4 + with: + name: file + path: . + diff --git a/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak.yml b/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak.yml new file mode 100644 index 00000000000..9006855e997 --- /dev/null +++ b/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak.yml @@ -0,0 +1,13 @@ +name: secrets-in-artifacts +on: + pull_request: +jobs: + a-job: # VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Upload artifact" + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + with: + name: file + path: . diff --git a/javascript/ql/src/change-notes/2024-08-16-post-message-source-client-side.md b/javascript/ql/src/change-notes/released/1.1.2.md similarity index 87% rename from javascript/ql/src/change-notes/2024-08-16-post-message-source-client-side.md rename to javascript/ql/src/change-notes/released/1.1.2.md index 0866061c3bd..1f410e20195 100644 --- a/javascript/ql/src/change-notes/2024-08-16-post-message-source-client-side.md +++ b/javascript/ql/src/change-notes/released/1.1.2.md @@ -1,6 +1,7 @@ ---- -category: minorAnalysis ---- +## 1.1.2 + +### Minor Analysis Improvements + * Message events in the browser are now properly classified as client-side taint sources. Previously they were incorrectly classified as server-side taint sources, which resulted in some alerts being reported by the wrong query, such as server-side URL redirection instead of client-side URL redirection. diff --git a/javascript/ql/src/change-notes/released/1.1.3.md b/javascript/ql/src/change-notes/released/1.1.3.md new file mode 100644 index 00000000000..e8f1701bd62 --- /dev/null +++ b/javascript/ql/src/change-notes/released/1.1.3.md @@ -0,0 +1,3 @@ +## 1.1.3 + +No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/1.2.0.md b/javascript/ql/src/change-notes/released/1.2.0.md new file mode 100644 index 00000000000..d8bf15e8026 --- /dev/null +++ b/javascript/ql/src/change-notes/released/1.2.0.md @@ -0,0 +1,5 @@ +## 1.2.0 + +### Major Analysis Improvements + +- Added a new query (`js/actions/actions-artifact-leak`) to detect GitHub Actions artifacts that may leak the GITHUB_TOKEN token. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 1a19084be3f..75430e73d1c 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.1 +lastReleaseVersion: 1.2.0 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 9932097414b..9b1f749b8ac 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 1.1.2-dev +version: 1.2.1-dev groups: - javascript - queries diff --git a/javascript/ql/test/library-tests/Modules/arbitrarySpecifier.ts b/javascript/ql/test/library-tests/Modules/arbitrarySpecifier.ts new file mode 100644 index 00000000000..8ed0bd8e804 --- /dev/null +++ b/javascript/ql/test/library-tests/Modules/arbitrarySpecifier.ts @@ -0,0 +1,6 @@ +import { "Foo::new" as Foo_new } from "./foo.wasm" + +const foo = Foo_new() + +export { Foo_new as "Foo::new" } +export type * as "Foo_types" from './mod' \ No newline at end of file diff --git a/javascript/ql/test/library-tests/Modules/arbitarySpecifier.js b/javascript/ql/test/library-tests/Modules/jsArbitrarySpecifier.js similarity index 100% rename from javascript/ql/test/library-tests/Modules/arbitarySpecifier.js rename to javascript/ql/test/library-tests/Modules/jsArbitrarySpecifier.js diff --git a/javascript/ql/test/library-tests/Modules/tests.expected b/javascript/ql/test/library-tests/Modules/tests.expected index a742e604218..cec0b96049e 100644 --- a/javascript/ql/test/library-tests/Modules/tests.expected +++ b/javascript/ql/test/library-tests/Modules/tests.expected @@ -3,7 +3,8 @@ test_BulkReExportDeclarations test_ExportDeclarations | a.js:1:1:3:1 | export ... n 23;\\n} | | a.js:5:1:5:32 | export ... } = o; | -| arbitarySpecifier.js:5:1:5:32 | export ... :new" } | +| arbitrarySpecifier.ts:5:1:5:32 | export ... :new" } | +| arbitrarySpecifier.ts:6:1:6:41 | export ... './mod' | | b.js:5:1:5:18 | export { f as g }; | | b.js:7:1:7:21 | export ... './a'; | | d.js:4:1:4:20 | export * from 'm/c'; | @@ -12,6 +13,7 @@ test_ExportDeclarations | es2015_require.js:3:1:3:25 | export ... ss C {} | | export-in-mjs.mjs:1:1:1:34 | export ... s = 42; | | f.ts:5:1:5:24 | export ... oo() {} | +| jsArbitrarySpecifier.js:5:1:5:32 | export ... :new" } | | m/c.js:5:1:5:30 | export ... '../b'; | | reExportNamespace.js:1:1:1:26 | export ... "./a"; | | tst.html:7:3:7:22 | export const y = 42; | @@ -19,11 +21,12 @@ test_ExportDefaultDeclarations | a.js:1:1:3:1 | export ... n 23;\\n} | | es2015_require.js:3:1:3:25 | export ... ss C {} | test_ExportSpecifiers -| arbitarySpecifier.js:5:10:5:30 | Foo_new ... o::new" | arbitarySpecifier.js:5:10:5:16 | Foo_new | arbitarySpecifier.js:5:10:5:30 | Foo_new ... o::new" | +| arbitrarySpecifier.ts:5:10:5:30 | Foo_new ... o::new" | arbitrarySpecifier.ts:5:10:5:16 | Foo_new | arbitrarySpecifier.ts:5:21:5:30 | "Foo::new" | | b.js:5:10:5:15 | f as g | b.js:5:10:5:10 | f | b.js:5:15:5:15 | g | | e.js:2:10:2:10 | x | e.js:2:10:2:10 | x | e.js:2:10:2:10 | x | | e.js:2:13:2:13 | y | e.js:2:13:2:13 | y | e.js:2:13:2:13 | y | | e.js:3:10:3:21 | default as g | e.js:3:10:3:16 | default | e.js:3:21:3:21 | g | +| jsArbitrarySpecifier.js:5:10:5:30 | Foo_new ... o::new" | jsArbitrarySpecifier.js:5:10:5:16 | Foo_new | jsArbitrarySpecifier.js:5:10:5:30 | Foo_new ... o::new" | | m/c.js:5:10:5:15 | g as h | m/c.js:5:10:5:10 | g | m/c.js:5:15:5:15 | h | test_GlobalVariableRef | a.js:5:31:5:31 | o | @@ -43,7 +46,7 @@ test_ImportNamespaceSpecifier | exports.js:1:8:1:17 | * as dummy | | m/c.js:1:8:1:13 | * as b | test_ImportSpecifiers -| arbitarySpecifier.js:1:10:1:30 | "Foo::n ... Foo_new | arbitarySpecifier.js:1:24:1:30 | Foo_new | +| arbitrarySpecifier.ts:1:10:1:30 | "Foo::n ... Foo_new | arbitrarySpecifier.ts:1:24:1:30 | Foo_new | | b.js:1:8:1:8 | f | b.js:1:8:1:8 | f | | d.js:1:10:1:21 | default as g | d.js:1:21:1:21 | g | | d.js:1:24:1:29 | x as y | d.js:1:29:1:29 | y | @@ -53,12 +56,13 @@ test_ImportSpecifiers | import-in-mjs.mjs:1:8:1:24 | exported_from_mjs | import-in-mjs.mjs:1:8:1:24 | exported_from_mjs | | import-ts-with-js-extension.ts:1:10:1:12 | foo | import-ts-with-js-extension.ts:1:10:1:12 | foo | | importcss.js:1:8:1:8 | A | importcss.js:1:8:1:8 | A | +| jsArbitrarySpecifier.js:1:10:1:30 | "Foo::n ... Foo_new | jsArbitrarySpecifier.js:1:24:1:30 | Foo_new | | m/c.js:1:8:1:13 | * as b | m/c.js:1:13:1:13 | b | | reExportNamespaceClient.js:1:10:1:11 | ns | reExportNamespaceClient.js:1:10:1:11 | ns | | tst.html:5:10:5:10 | f | tst.html:5:10:5:10 | f | | unresolved.js:1:8:1:8 | f | unresolved.js:1:8:1:8 | f | test_Imports -| arbitarySpecifier.js:1:1:1:50 | import ... o.wasm" | arbitarySpecifier.js:1:39:1:50 | "./foo.wasm" | 1 | +| arbitrarySpecifier.ts:1:1:1:50 | import ... o.wasm" | arbitrarySpecifier.ts:1:39:1:50 | "./foo.wasm" | 1 | | b.js:1:1:1:20 | import f from './a'; | b.js:1:15:1:19 | './a' | 1 | | d.js:1:1:1:43 | import ... './a'; | d.js:1:38:1:42 | './a' | 2 | | d.js:2:1:2:13 | import './b'; | d.js:2:8:2:12 | './b' | 0 | @@ -68,6 +72,7 @@ test_Imports | import-in-mjs.mjs:1:1:1:46 | import ... n-mjs'; | import-in-mjs.mjs:1:31:1:45 | 'export-in-mjs' | 1 | | import-ts-with-js-extension.ts:1:1:1:29 | import ... /f.js"; | import-ts-with-js-extension.ts:1:21:1:28 | "./f.js" | 1 | | importcss.js:1:1:1:24 | import ... a.css"; | importcss.js:1:15:1:23 | "./a.css" | 1 | +| jsArbitrarySpecifier.js:1:1:1:50 | import ... o.wasm" | jsArbitrarySpecifier.js:1:39:1:50 | "./foo.wasm" | 1 | | m/c.js:1:1:1:26 | import ... '../b'; | m/c.js:1:20:1:25 | '../b' | 1 | | reExportNamespaceClient.js:1:1:1:41 | import ... space"; | reExportNamespaceClient.js:1:20:1:40 | "./reEx ... espace" | 1 | | tst.html:5:3:5:20 | import f from 'a'; | tst.html:5:17:5:19 | 'a' | 1 | @@ -76,7 +81,8 @@ test_Module_exports | a.js:1:1:5:32 | | default | a.js:1:16:3:1 | functio ... n 23;\\n} | | a.js:1:1:5:32 | | x | a.js:5:18:5:20 | f() | | a.js:1:1:5:32 | | y | a.js:5:25:5:25 | y | -| arbitarySpecifier.js:1:1:5:32 | | Foo::new | arbitarySpecifier.js:5:10:5:16 | Foo_new | +| arbitrarySpecifier.ts:1:1:6:41 | | Foo::new | arbitrarySpecifier.ts:5:10:5:16 | Foo_new | +| arbitrarySpecifier.ts:1:1:6:41 | | Foo_types | arbitrarySpecifier.ts:6:13:6:28 | * as "Foo_types" | | b.js:1:1:8:0 | | f2 | a.js:1:16:3:1 | functio ... n 23;\\n} | | b.js:1:1:8:0 | | g | b.js:5:10:5:10 | f | | e.js:1:1:4:0 | | g | a.js:1:16:3:1 | functio ... n 23;\\n} | @@ -85,21 +91,24 @@ test_Module_exports | es2015_require.js:1:1:3:25 | | default | es2015_require.js:3:16:3:25 | class C {} | | export-in-mjs.mjs:1:1:1:34 | | exported_from_mjs | export-in-mjs.mjs:1:32:1:33 | 42 | | f.ts:1:1:6:0 | | foo | f.ts:5:8:5:24 | function foo() {} | +| jsArbitrarySpecifier.js:1:1:5:32 | | Foo::new | jsArbitrarySpecifier.js:5:10:5:16 | Foo_new | | m/c.js:1:1:6:0 | | h | b.js:5:10:5:10 | f | | reExportNamespace.js:1:1:2:0 | | ns | reExportNamespace.js:1:8:1:14 | * as ns | | tst.html:4:23:8:0 | | y | tst.html:7:20:7:21 | 42 | test_NamedImportSpecifier -| arbitarySpecifier.js:1:10:1:30 | "Foo::n ... Foo_new | +| arbitrarySpecifier.ts:1:10:1:30 | "Foo::n ... Foo_new | | d.js:1:10:1:21 | default as g | | d.js:1:24:1:29 | x as y | | g.ts:1:9:1:11 | foo | | import-ts-with-js-extension.ts:1:10:1:12 | foo | +| jsArbitrarySpecifier.js:1:10:1:30 | "Foo::n ... Foo_new | | reExportNamespaceClient.js:1:10:1:11 | ns | test_OtherImports | es2015_require.js:1:11:1:24 | require('./d') | d.js:1:1:5:0 | | | import-indirect-path.js:1:1:1:25 | require ... + '/a') | a.js:1:1:5:32 | | | import-indirect-path.js:5:1:5:14 | require(x + y) | a.js:1:1:5:32 | | test_ReExportDeclarations +| arbitrarySpecifier.ts:6:1:6:41 | export ... './mod' | arbitrarySpecifier.ts:6:35:6:41 | './mod' | | b.js:7:1:7:21 | export ... './a'; | b.js:7:16:7:20 | './a' | | d.js:4:1:4:20 | export * from 'm/c'; | d.js:4:15:4:19 | 'm/c' | | e.js:3:1:3:35 | export ... './a'; | e.js:3:30:3:34 | './a' | @@ -117,16 +126,18 @@ test_getAnImportedModule | library-tests/Modules/m/c.js | library-tests/Modules/b.js | | library-tests/Modules/reExportNamespaceClient.js | library-tests/Modules/reExportNamespace.js | test_getExportedName -| arbitarySpecifier.js:5:10:5:30 | Foo_new ... o::new" | Foo::new | +| arbitrarySpecifier.ts:5:10:5:30 | Foo_new ... o::new" | Foo::new | +| arbitrarySpecifier.ts:6:13:6:28 | * as "Foo_types" | Foo_types | | b.js:5:10:5:15 | f as g | g | | b.js:7:8:7:9 | f2 | f2 | | e.js:2:10:2:10 | x | x | | e.js:2:13:2:13 | y | y | | e.js:3:10:3:21 | default as g | g | +| jsArbitrarySpecifier.js:5:10:5:30 | Foo_new ... o::new" | Foo::new | | m/c.js:5:10:5:15 | g as h | h | | reExportNamespace.js:1:8:1:14 | * as ns | ns | test_getImportedName -| arbitarySpecifier.js:1:10:1:30 | "Foo::n ... Foo_new | Foo::new | +| arbitrarySpecifier.ts:1:10:1:30 | "Foo::n ... Foo_new | Foo::new | | b.js:1:8:1:8 | f | default | | d.js:1:10:1:21 | default as g | default | | d.js:1:24:1:29 | x as y | x | @@ -135,22 +146,25 @@ test_getImportedName | import-in-mjs.mjs:1:8:1:24 | exported_from_mjs | default | | import-ts-with-js-extension.ts:1:10:1:12 | foo | foo | | importcss.js:1:8:1:8 | A | default | +| jsArbitrarySpecifier.js:1:10:1:30 | "Foo::n ... Foo_new | Foo::new | | reExportNamespaceClient.js:1:10:1:11 | ns | ns | | tst.html:5:10:5:10 | f | default | | unresolved.js:1:8:1:8 | f | default | test_getLocalName -| arbitarySpecifier.js:5:10:5:30 | Foo_new ... o::new" | Foo_new | +| arbitrarySpecifier.ts:5:10:5:30 | Foo_new ... o::new" | Foo_new | | b.js:5:10:5:15 | f as g | f | | b.js:7:8:7:9 | f2 | default | | e.js:2:10:2:10 | x | x | | e.js:2:13:2:13 | y | y | | e.js:3:10:3:21 | default as g | default | +| jsArbitrarySpecifier.js:5:10:5:30 | Foo_new ... o::new" | Foo_new | | m/c.js:5:10:5:15 | g as h | g | test_getSourceNode | a.js:1:1:3:1 | export ... n 23;\\n} | default | a.js:1:16:3:1 | functio ... n 23;\\n} | | a.js:5:1:5:32 | export ... } = o; | x | a.js:5:18:5:20 | f() | | a.js:5:1:5:32 | export ... } = o; | y | a.js:5:25:5:25 | y | -| arbitarySpecifier.js:5:1:5:32 | export ... :new" } | Foo::new | arbitarySpecifier.js:5:10:5:16 | Foo_new | +| arbitrarySpecifier.ts:5:1:5:32 | export ... :new" } | Foo::new | arbitrarySpecifier.ts:5:10:5:16 | Foo_new | +| arbitrarySpecifier.ts:6:1:6:41 | export ... './mod' | Foo_types | arbitrarySpecifier.ts:6:13:6:28 | * as "Foo_types" | | b.js:5:1:5:18 | export { f as g }; | g | b.js:5:10:5:10 | f | | b.js:7:1:7:21 | export ... './a'; | f2 | a.js:1:16:3:1 | functio ... n 23;\\n} | | e.js:2:1:2:16 | export { x, y }; | x | e.js:2:10:2:10 | x | @@ -159,6 +173,7 @@ test_getSourceNode | es2015_require.js:3:1:3:25 | export ... ss C {} | default | es2015_require.js:3:16:3:25 | class C {} | | export-in-mjs.mjs:1:1:1:34 | export ... s = 42; | exported_from_mjs | export-in-mjs.mjs:1:32:1:33 | 42 | | f.ts:5:1:5:24 | export ... oo() {} | foo | f.ts:5:8:5:24 | function foo() {} | +| jsArbitrarySpecifier.js:5:1:5:32 | export ... :new" } | Foo::new | jsArbitrarySpecifier.js:5:10:5:16 | Foo_new | | m/c.js:5:1:5:30 | export ... '../b'; | h | b.js:5:10:5:10 | f | | reExportNamespace.js:1:1:1:26 | export ... "./a"; | ns | reExportNamespace.js:1:8:1:14 | * as ns | | tst.html:7:3:7:22 | export const y = 42; | y | tst.html:7:20:7:21 | 42 | diff --git a/javascript/ql/test/library-tests/TypeScript/EmbeddedInScript/Test.expected b/javascript/ql/test/library-tests/TypeScript/EmbeddedInScript/Test.expected index 9f9b7fc24ec..711e94cfdaa 100644 --- a/javascript/ql/test/library-tests/TypeScript/EmbeddedInScript/Test.expected +++ b/javascript/ql/test/library-tests/TypeScript/EmbeddedInScript/Test.expected @@ -3,7 +3,6 @@ classDeclaration | test_tsx.vue:3:18:5:3 | class M ... er;\\n } | exprType | htmlfile.html:4:22:4:24 | foo | () => void | -| htmlfile.html:4:22:4:24 | foo | () => void | | htmlfile.html:4:33:4:41 | "./other" | any | | htmlfile.html:5:17:5:22 | result | number[] | | htmlfile.html:5:26:5:28 | foo | () => void | diff --git a/javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportSelf/test.expected b/javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportSelf/test.expected index 3da6ee7443d..756178b4807 100644 --- a/javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportSelf/test.expected +++ b/javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportSelf/test.expected @@ -1,4 +1,3 @@ | bar.ts:1:10:1:10 | A | any | -| bar.ts:1:10:1:10 | A | any | | bar.ts:1:19:1:29 | "@blah/foo" | any | | bar.ts:3:5:3:5 | x | A | diff --git a/javascript/ql/test/library-tests/TypeScript/RegressionTests/TraceResolution/test.expected b/javascript/ql/test/library-tests/TypeScript/RegressionTests/TraceResolution/test.expected index dc21f343569..bab38be1e23 100644 --- a/javascript/ql/test/library-tests/TypeScript/RegressionTests/TraceResolution/test.expected +++ b/javascript/ql/test/library-tests/TypeScript/RegressionTests/TraceResolution/test.expected @@ -1,5 +1,4 @@ | test.ts:1:10:1:12 | foo | () => any | -| test.ts:1:10:1:12 | foo | () => any | | test.ts:1:21:1:25 | "foo" | any | | test.ts:3:1:3:3 | foo | () => any | | test.ts:3:1:3:5 | foo() | any | diff --git a/javascript/ql/test/library-tests/TypeScript/Types/tests.expected b/javascript/ql/test/library-tests/TypeScript/Types/tests.expected index b3170fd2133..1cf1ca607ae 100644 --- a/javascript/ql/test/library-tests/TypeScript/Types/tests.expected +++ b/javascript/ql/test/library-tests/TypeScript/Types/tests.expected @@ -474,7 +474,6 @@ getExprType | tst.ts:358:13:358:23 | tstModuleES | () => "a" \| "b" | | tst.ts:358:13:358:25 | tstModuleES() | "a" \| "b" | | tst.ts:360:10:360:21 | tstModuleCJS | () => "a" \| "b" | -| tst.ts:360:10:360:21 | tstModuleCJS | () => "a" \| "b" | | tst.ts:360:30:360:49 | './tstModuleCJS.cjs' | any | | tst.ts:362:1:362:7 | console | Console | | tst.ts:362:1:362:11 | console.log | (...data: any[]) => void | diff --git a/javascript/ql/test/query-tests/Security/CWE-312/.github/workflows/test.yml b/javascript/ql/test/query-tests/Security/CWE-312/.github/workflows/test.yml new file mode 100644 index 00000000000..473d5998695 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-312/.github/workflows/test.yml @@ -0,0 +1,87 @@ +name: secrets-in-artifacts +on: + pull_request: +jobs: + test1: # VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Upload artifact" + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + with: + name: file + path: . + test2: # NOT VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Upload artifact" + uses: actions/upload-artifact@v4 + with: + name: file + path: . + test3: # VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Upload artifact" + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + with: + name: file + path: "*" + test4: # VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: foo + - name: "Upload artifact" + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + with: + name: file + path: foo + test5: # VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: foo + - name: "Upload artifact" + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + with: + name: file + path: foo/* + test6: # NOT VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: pr + - name: "Upload artifact" + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + with: + name: file + path: foo + test7: # NOT VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - name: "Upload artifact" + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + with: + name: file + path: . + test8: # VULNERABLE + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: true + - name: "Upload artifact" + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + with: + name: file + path: . + diff --git a/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.expected b/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.expected new file mode 100644 index 00000000000..575ddda89a4 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.expected @@ -0,0 +1,5 @@ +| .github/workflows/test.yml:9:9:14:2 | name: " ... tifact" | A secret may be exposed in an artifact. | +| .github/workflows/test.yml:27:9:32:2 | name: " ... tifact" | A secret may be exposed in an artifact. | +| .github/workflows/test.yml:38:9:43:2 | name: " ... tifact" | A secret may be exposed in an artifact. | +| .github/workflows/test.yml:49:9:54:2 | name: " ... tifact" | A secret may be exposed in an artifact. | +| .github/workflows/test.yml:82:9:86:18 | name: " ... tifact" | A secret may be exposed in an artifact. | diff --git a/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.qlref b/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.qlref new file mode 100644 index 00000000000..e133c99ba5e --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.qlref @@ -0,0 +1 @@ +Security/CWE-312/ActionsArtifactLeak.ql diff --git a/javascript/ql/test/tutorials/Validating RAML-based APIs/Osprey.qll b/javascript/ql/test/tutorials/Validating RAML-based APIs/Osprey.qll index 140bf59c4e6..c799d4f135f 100644 --- a/javascript/ql/test/tutorials/Validating RAML-based APIs/Osprey.qll +++ b/javascript/ql/test/tutorials/Validating RAML-based APIs/Osprey.qll @@ -47,9 +47,6 @@ class OspreyMethodDefinition extends MethodCallExpr { /** Get the API to which this method belongs. */ OspreyApi getApi() { this.getReceiver() = result.getAnAccess() } - /** DEPRECATED: Alias for getApi */ - deprecated OspreyApi getAPI() { result = this.getApi() } - /** Get the verb which this method implements. */ string getVerb() { result = this.getMethodName() } diff --git a/misc/bazel/internal/git_lfs_probe.py b/misc/bazel/internal/git_lfs_probe.py index 01b201c5486..22ca9855f54 100755 --- a/misc/bazel/internal/git_lfs_probe.py +++ b/misc/bazel/internal/git_lfs_probe.py @@ -16,13 +16,13 @@ import shutil import json import typing import urllib.request +import urllib.error from urllib.parse import urlparse import re import base64 from dataclasses import dataclass import argparse - def options(): p = argparse.ArgumentParser(description=__doc__) p.add_argument("--hash-only", action="store_true") @@ -30,6 +30,12 @@ def options(): return p.parse_args() +TIMEOUT = 20 + +def warn(message: str) -> None: + print(f"WARNING: {message}", file=sys.stderr) + + @dataclass class Endpoint: name: str @@ -41,6 +47,10 @@ class Endpoint: self.headers.update((k.capitalize(), v) for k, v in d) +class NoEndpointsFound(Exception): + pass + + opts = options() sources = [p.resolve() for p in opts.sources] source_dir = pathlib.Path(os.path.commonpath(src.parent for src in sources)) @@ -105,18 +115,12 @@ def get_endpoints() -> typing.Iterable[Endpoint]: "download", ] try: - res = subprocess.run(cmd, stdout=subprocess.PIPE, timeout=15) + res = subprocess.run(cmd, stdout=subprocess.PIPE, timeout=TIMEOUT) except subprocess.TimeoutExpired: - print( - f"WARNING: ssh timed out when connecting to {server}, ignoring {endpoint.name} endpoint", - file=sys.stderr, - ) + warn(f"ssh timed out when connecting to {server}, ignoring {endpoint.name} endpoint") continue if res.returncode != 0: - print( - f"WARNING: ssh failed when connecting to {server}, ignoring {endpoint.name} endpoint", - file=sys.stderr, - ) + warn(f"ssh failed when connecting to {server}, ignoring {endpoint.name} endpoint") continue ssh_resp = json.loads(res.stdout) endpoint.href = ssh_resp.get("href", endpoint) @@ -139,10 +143,7 @@ def get_endpoints() -> typing.Iterable[Endpoint]: input=f"protocol={url.scheme}\nhost={url.netloc}\npath={url.path[1:]}\n", ) if credentials is None: - print( - f"WARNING: no authorization method found, ignoring {data.name} endpoint", - file=sys.stderr, - ) + warn(f"no authorization method found, ignoring {endpoint.name} endpoint") continue credentials = dict(get_env(credentials)) auth = base64.b64encode( @@ -176,10 +177,10 @@ def get_locations(objects): data=json.dumps(data).encode("ascii"), ) try: - with urllib.request.urlopen(req) as resp: + with urllib.request.urlopen(req, timeout=TIMEOUT) as resp: data = json.load(resp) - except urllib.request.HTTPError as e: - print(f"WARNING: encountered HTTPError {e}, ignoring endpoint {e.name}") + except urllib.error.URLError as e: + warn(f"encountered {type(e).__name__} {e}, ignoring endpoint {endpoint.name}") continue assert len(data["objects"]) == len( indexes @@ -187,7 +188,7 @@ def get_locations(objects): for i, resp in zip(indexes, data["objects"]): ret[i] = f'{resp["oid"]} {resp["actions"]["download"]["href"]}' return ret - raise Exception(f"no valid endpoint found") + raise NoEndpointsFound def get_lfs_object(path): @@ -204,6 +205,10 @@ def get_lfs_object(path): return {"oid": sha256, "size": size} -objects = [get_lfs_object(src) for src in sources] -for resp in get_locations(objects): - print(resp) +try: + objects = [get_lfs_object(src) for src in sources] + for resp in get_locations(objects): + print(resp) +except NoEndpointsFound as e: + print(f"ERROR: no valid endpoints found", file=sys.stderr) + sys.exit(1) diff --git a/misc/bazel/rust.bzl b/misc/bazel/rust.bzl index b858f6b0a80..97afee4ba1c 100644 --- a/misc/bazel/rust.bzl +++ b/misc/bazel/rust.bzl @@ -8,7 +8,7 @@ def codeql_rust_binary( visibility = None, symbols_test = True, **kwargs): - rust_label_name = name + "_single_arch" + rust_label_name = "single_arch/" + name universal_binary( name = name, dep = ":" + rust_label_name, diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-build-system/x.swift b/misc/bazel/semmle_code_stub/buildutils-internal/BUILD.bazel similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-build-system/x.swift rename to misc/bazel/semmle_code_stub/buildutils-internal/BUILD.bazel diff --git a/misc/bazel/semmle_code_stub/buildutils-internal/glibc_symbols_check.bzl b/misc/bazel/semmle_code_stub/buildutils-internal/glibc_symbols_check.bzl new file mode 100644 index 00000000000..a9091008ba8 --- /dev/null +++ b/misc/bazel/semmle_code_stub/buildutils-internal/glibc_symbols_check.bzl @@ -0,0 +1,4 @@ +# This check only makes sense when building from the internal repository + +def glibc_symbols_check(**kwargs): + pass diff --git a/misc/bazel/semmle_code_stub/buildutils-internal/lipo.bzl b/misc/bazel/semmle_code_stub/buildutils-internal/lipo.bzl new file mode 100644 index 00000000000..733e15703de --- /dev/null +++ b/misc/bazel/semmle_code_stub/buildutils-internal/lipo.bzl @@ -0,0 +1,5 @@ +# we only need to build universal binaries when building releases from the internal repo +# when building from the codeql repo, we can stub this rule with an alias + +def universal_binary(*, name, dep, **kwargs): + native.alias(name = name, actual = dep, **kwargs) diff --git a/misc/codegen/codegen.py b/misc/codegen/codegen.py index 9dd8a348e1c..a199d19dd12 100755 --- a/misc/codegen/codegen.py +++ b/misc/codegen/codegen.py @@ -30,8 +30,8 @@ def _parse_args() -> argparse.Namespace: p = argparse.ArgumentParser(description="Code generation suite") p.add_argument("--generate", type=lambda x: x.split(","), - help="specify what targets to generate as a comma separated list, choosing among dbscheme, ql, trap " - "and cpp") + help="specify what targets to generate as a comma separated list, choosing among dbscheme, ql, " + "trap, cpp and rust") p.add_argument("--verbose", "-v", action="store_true", help="print more information") p.add_argument("--quiet", "-q", action="store_true", help="only print errors") p.add_argument("--configuration-file", "-c", type=_abspath, default=conf, @@ -57,6 +57,9 @@ def _parse_args() -> argparse.Namespace: p.add_argument("--cpp-output", help="output directory for generated C++ files, required if trap or cpp is provided to " "--generate"), + p.add_argument("--rust-output", + help="output directory for generated Rust files, required if rust is provided to " + "--generate"), p.add_argument("--generated-registry", help="registry file containing information about checked-in generated code. A .gitattributes" "file is generated besides it to mark those files with linguist-generated=true. Must" diff --git a/misc/codegen/generators/__init__.py b/misc/codegen/generators/__init__.py index 985c4b25c12..beeeabbecdf 100644 --- a/misc/codegen/generators/__init__.py +++ b/misc/codegen/generators/__init__.py @@ -1,4 +1,4 @@ -from . import dbschemegen, qlgen, trapgen, cppgen +from . import dbschemegen, trapgen, cppgen, rustgen, rusttestgen, qlgen def generate(target, opts, renderer): diff --git a/misc/codegen/generators/qlgen.py b/misc/codegen/generators/qlgen.py index 305f5d866b2..952889ee9c2 100755 --- a/misc/codegen/generators/qlgen.py +++ b/misc/codegen/generators/qlgen.py @@ -2,18 +2,19 @@ QL code generation `generate(opts, renderer)` will generate in the library directory: - * generated/Raw.qll with thin class wrappers around DB types - * generated/Synth.qll with the base algebraic datatypes for AST entities - * generated//.qll with generated properties for each class - * if not already modified, a elements//.qll stub to customize the above classes - * elements.qll importing all the above stubs - * if not already modified, a elements//Constructor.qll stub to customize the algebraic datatype + * `generated/Raw.qll` with thin class wrappers around DB types + * `generated/Synth.qll` with the base algebraic datatypes for AST entities + * `generated//.qll` with generated properties for each class + * if not already modified, an `elements//Impl.qll` stub to customize the above classes + * `elements//.qll` that wraps the internal `Impl.qll` file in a public `final` class. + * `elements.qll` importing all the above public classes + * if not already modified, an `elements//Constructor.qll` stub to customize the algebraic datatype characteristic predicate - * generated/SynthConstructors.qll importing all the above constructor stubs - * generated/PureSynthConstructors.qll importing constructor stubs for pure synthesized types (that is, not + * `generated/SynthConstructors.qll` importing all the above constructor stubs + * `generated/PureSynthConstructors.qll` importing constructor stubs for pure synthesized types (that is, not corresponding to raw types) Moreover in the test directory for each in it will generate beneath the -extractor-tests/generated// directory either +`extractor-tests/generated//` directory either * a `MISSING_SOURCE.txt` explanation file if no source is present, or * one `.ql` test query for all single properties and on `_.ql` test query for each optional or repeated property @@ -26,6 +27,7 @@ import re import subprocess import typing import itertools +import os import inflection @@ -163,6 +165,7 @@ def get_ql_class(cls: schema.Class, lookup: typing.Dict[str, schema.Class]) -> q return ql.Class( name=cls.name, bases=cls.bases, + bases_impl=[base + "Impl::" + base for base in cls.bases], final=not cls.derived, properties=properties, dir=pathlib.Path(cls.group or ""), @@ -209,15 +212,17 @@ def get_import(file: pathlib.Path, root_dir: pathlib.Path): return str(stem).replace("/", ".") -def get_types_used_by(cls: ql.Class) -> typing.Iterable[str]: +def get_types_used_by(cls: ql.Class, is_impl: bool) -> typing.Iterable[str]: for b in cls.bases: - yield b.base + yield b.base + "Impl" if is_impl else b.base for p in cls.properties: yield p.type + if cls.root: + yield cls.name # used in `getResolveStep` and `resolve` -def get_classes_used_by(cls: ql.Class) -> typing.List[str]: - return sorted(set(t for t in get_types_used_by(cls) if t[0].isupper() and t != cls.name)) +def get_classes_used_by(cls: ql.Class, is_impl: bool) -> typing.List[str]: + return sorted(set(t for t in get_types_used_by(cls, is_impl) if t[0].isupper() and (is_impl or t != cls.name))) def format(codeql, files): @@ -238,6 +243,14 @@ def _get_path(cls: schema.Class) -> pathlib.Path: return pathlib.Path(cls.group or "", cls.name).with_suffix(".qll") +def _get_path_impl(cls: schema.Class) -> pathlib.Path: + return pathlib.Path(cls.group or "", "internal", cls.name+"Impl").with_suffix(".qll") + + +def _get_path_public(cls: schema.Class) -> pathlib.Path: + return pathlib.Path(cls.group or "", "internal" if "ql_internal" in cls.pragmas else "", cls.name).with_suffix(".qll") + + def _get_all_properties(cls: schema.Class, lookup: typing.Dict[str, schema.Class], already_seen: typing.Optional[typing.Set[int]] = None) -> \ typing.Iterable[typing.Tuple[schema.Class, schema.Property]]: @@ -287,7 +300,7 @@ def _is_under_qltest_collapsed_hierarchy(cls: schema.Class, lookup: typing.Dict[ _is_in_qltest_collapsed_hierarchy(lookup[b], lookup) for b in cls.bases) -def _should_skip_qltest(cls: schema.Class, lookup: typing.Dict[str, schema.Class]): +def should_skip_qltest(cls: schema.Class, lookup: typing.Dict[str, schema.Class]): return "qltest_skip" in cls.pragmas or not ( cls.final or "qltest_collapse_hierarchy" in cls.pragmas) or _is_under_qltest_collapsed_hierarchy( cls, lookup) @@ -314,11 +327,14 @@ def _get_stub(cls: schema.Class, base_import: str, generated_import_prefix: str) else: accessors = [] return ql.Stub(name=cls.name, base_import=base_import, import_prefix=generated_import_prefix, - doc=cls.doc, synth_accessors=accessors, - internal="ql_internal" in cls.pragmas) + doc=cls.doc, synth_accessors=accessors) -_stub_qldoc_header = "// the following QLdoc is generated: if you need to edit it, do it in the schema file\n" +def _get_class_public(cls: schema.Class) -> ql.ClassPublic: + return ql.ClassPublic(name=cls.name, doc=cls.doc, internal="ql_internal" in cls.pragmas) + + +_stub_qldoc_header = "// the following QLdoc is generated: if you need to edit it, do it in the schema file\n " _class_qldoc_re = re.compile( rf"(?P(?:{re.escape(_stub_qldoc_header)})?/\*\*.*?\*/\s*|^\s*)(?:class\s+(?P\w+))?", @@ -329,13 +345,13 @@ def _patch_class_qldoc(cls: str, qldoc: str, stub_file: pathlib.Path): """ Replace or insert `qldoc` as the QLdoc of class `cls` in `stub_file` """ if not qldoc or not stub_file.exists(): return - qldoc = "\n".join(l.rstrip() for l in qldoc.splitlines()) + qldoc = "\n ".join(l.rstrip() for l in qldoc.splitlines()) with open(stub_file) as input: contents = input.read() for match in _class_qldoc_re.finditer(contents): if match["class"] == cls: qldoc_start, qldoc_end = match.span("qldoc") - contents = f"{contents[:qldoc_start]}{_stub_qldoc_header}{qldoc}\n{contents[qldoc_end:]}" + contents = f"{contents[:qldoc_start]}{_stub_qldoc_header}{qldoc}\n {contents[qldoc_end:]}" tmp = stub_file.with_suffix(f"{stub_file.suffix}.bkp") with open(tmp, "w") as out: out.write(contents) @@ -369,9 +385,13 @@ def generate(opts, renderer): raise RootElementHasChildren(root) imports = {} + imports_impl = {} + classes_used_by = {} generated_import_prefix = get_import(out, opts.root_dir) + registry = opts.generated_registry or pathlib.Path( + os.path.commonpath((out, stub_out, test_out)), ".generated.list") - with renderer.manage(generated=generated, stubs=stubs, registry=opts.generated_registry, + with renderer.manage(generated=generated, stubs=stubs, registry=registry, force=opts.force) as renderer: db_classes = [cls for name, cls in classes.items() if not data.classes[name].synth] @@ -379,24 +399,37 @@ def generate(opts, renderer): classes_by_dir_and_name = sorted(classes.values(), key=lambda cls: (cls.dir, cls.name)) for c in classes_by_dir_and_name: - imports[c.name] = get_import(stub_out / c.path, opts.root_dir) + path = get_import(stub_out / c.dir / "internal" / + c.name if c.internal else stub_out / c.path, opts.root_dir) + imports[c.name] = path + path_impl = get_import(stub_out / c.dir / "internal" / c.name, opts.root_dir) + imports_impl[c.name + "Impl"] = path_impl + "Impl" for c in classes.values(): qll = out / c.path.with_suffix(".qll") - c.imports = [imports[t] for t in get_classes_used_by(c)] + c.imports = [imports[t] if t in imports else imports_impl[t] + + "::Impl as " + t for t in get_classes_used_by(c, is_impl=True)] + classes_used_by[c.name] = get_classes_used_by(c, is_impl=False) c.import_prefix = generated_import_prefix renderer.render(c, qll) for c in data.classes.values(): path = _get_path(c) - stub_file = stub_out / path + path_impl = _get_path_impl(c) + stub_file = stub_out / path_impl base_import = get_import(out / path, opts.root_dir) stub = _get_stub(c, base_import, generated_import_prefix) + if not renderer.is_customized_stub(stub_file): renderer.render(stub, stub_file) else: qldoc = renderer.render_str(stub, template='ql_stub_class_qldoc') _patch_class_qldoc(c.name, qldoc, stub_file) + class_public = _get_class_public(c) + path_public = _get_path_public(c) + class_public_file = stub_out / path_public + class_public.imports = [imports[t] for t in classes_used_by[c.name]] + renderer.render(class_public, class_public_file) # for example path/to/elements -> path/to/elements.qll renderer.render(ql.ImportList([i for name, i in imports.items() if not classes[name].internal]), @@ -413,7 +446,7 @@ def generate(opts, renderer): if test_out: for c in data.classes.values(): - if _should_skip_qltest(c, data.classes): + if should_skip_qltest(c, data.classes): continue test_with = data.classes[c.test_with] if c.test_with else c test_dir = test_out / test_with.group / test_with.name @@ -446,7 +479,7 @@ def generate(opts, renderer): if synth_type.is_final: final_synth_types.append(synth_type) if synth_type.has_params: - stub_file = stub_out / cls.group / f"{cls.name}Constructor.qll" + stub_file = stub_out / cls.group / "internal" / f"{cls.name}Constructor.qll" if not renderer.is_customized_stub(stub_file): # stub rendering must be postponed as we might not have yet all subtracted synth types in `synth_type` stubs[stub_file] = ql.Synth.ConstructorStub(synth_type, import_prefix=generated_import_prefix) diff --git a/misc/codegen/generators/rustgen.py b/misc/codegen/generators/rustgen.py new file mode 100644 index 00000000000..5d981197b37 --- /dev/null +++ b/misc/codegen/generators/rustgen.py @@ -0,0 +1,119 @@ +""" +Rust trap class generation +""" + +import functools +import typing + +import inflection + +from misc.codegen.lib import rust, schema +from misc.codegen.loaders import schemaloader + + +def _get_type(t: str) -> str: + match t: + case None: # None means a predicate + return "bool" + case "string": + return "String" + case "int": + return "usize" + case _ if t[0].isupper(): + return f"trap::Label<{t}>" + case "boolean": + assert False, "boolean unsupported" + case _: + return t + + +def _get_field(cls: schema.Class, p: schema.Property) -> rust.Field: + table_name = inflection.tableize(cls.name) + if not p.is_single: + table_name = f"{cls.name}_{p.name}" + if p.is_predicate: + table_name = inflection.underscore(table_name) + else: + table_name = inflection.tableize(table_name) + args = dict( + field_name=rust.avoid_keywords(p.name), + base_type=_get_type(p.type), + is_optional=p.is_optional, + is_repeated=p.is_repeated, + is_predicate=p.is_predicate, + is_unordered=p.is_unordered, + table_name=table_name, + ) + args.update(rust.get_field_override(p.name)) + return rust.Field(**args) + + +def _get_properties( + cls: schema.Class, lookup: dict[str, schema.Class], +) -> typing.Iterable[tuple[schema.Class, schema.Property]]: + for b in cls.bases: + yield from _get_properties(lookup[b], lookup) + for p in cls.properties: + yield cls, p + + +def _get_ancestors( + cls: schema.Class, lookup: dict[str, schema.Class] +) -> typing.Iterable[schema.Class]: + for b in cls.bases: + base = lookup[b] + yield base + yield from _get_ancestors(base, lookup) + + +class Processor: + def __init__(self, data: schema.Schema): + self._classmap = data.classes + + def _get_class(self, name: str) -> rust.Class: + cls = self._classmap[name] + return rust.Class( + name=name, + fields=[ + _get_field(c, p) + for c, p in _get_properties(cls, self._classmap) + if "rust_skip" not in p.pragmas and not p.synth + ] if not cls.derived else [], + ancestors=sorted(set(a.name for a in _get_ancestors(cls, self._classmap))), + entry_table=inflection.tableize(cls.name) if not cls.derived else None, + ) + + def get_classes(self): + ret = {"": []} + for k, cls in self._classmap.items(): + if not cls.synth: + ret.setdefault(cls.group, []).append(self._get_class(cls.name)) + return ret + + +def generate(opts, renderer): + assert opts.rust_output + processor = Processor(schemaloader.load_file(opts.schema)) + out = opts.rust_output + groups = set() + with renderer.manage(generated=out.rglob("*.rs"), + stubs=(), + registry=out / ".generated.list", + force=opts.force) as renderer: + for group, classes in processor.get_classes().items(): + group = group or "top" + groups.add(group) + renderer.render( + rust.ClassList( + classes, + opts.schema, + ), + out / f"{group}.rs", + ) + renderer.render( + rust.ModuleList( + groups, + opts.schema, + ), + out / f"mod.rs", + ) diff --git a/misc/codegen/generators/rusttestgen.py b/misc/codegen/generators/rusttestgen.py new file mode 100644 index 00000000000..e9fee845c79 --- /dev/null +++ b/misc/codegen/generators/rusttestgen.py @@ -0,0 +1,65 @@ +import dataclasses +import typing +import inflection + +from misc.codegen.loaders import schemaloader +from . import qlgen + + +@dataclasses.dataclass +class Param: + name: str + type: str + first: bool = False + + +@dataclasses.dataclass +class Function: + name: str + signature: str + + +@dataclasses.dataclass +class TestCode: + template: typing.ClassVar[str] = "rust_test_code" + + code: str + function: Function | None = None + + +def generate(opts, renderer): + assert opts.ql_test_output + schema = schemaloader.load_file(opts.schema) + with renderer.manage(generated=opts.ql_test_output.rglob("gen_*.rs"), + stubs=(), + registry=opts.ql_test_output / ".generated_tests.list", + force=opts.force) as renderer: + for cls in schema.classes.values(): + if (qlgen.should_skip_qltest(cls, schema.classes) or + "rust_skip_test_from_doc" in cls.pragmas or + not cls.doc): + continue + code = [] + adding_code = False + has_code = False + for line in cls.doc: + match line, adding_code: + case ("```", _) | ("```rust", _): + adding_code = not adding_code + has_code = True + case _, False: + code.append(f"// {line}") + case _, True: + code.append(line) + if not has_code: + continue + assert not adding_code, "Unterminated code block in docstring: " + "\n".join(cls.doc) + test_name = inflection.underscore(cls.name) + signature = cls.rust_doc_test_function + fn = signature and Function(f"test_{test_name}", signature) + if fn: + indent = 4 * " " + code = [indent + l for l in code] + test_with = schema.classes[cls.test_with] if cls.test_with else cls + test = opts.ql_test_output / test_with.group / test_with.name / f"gen_{test_name}.rs" + renderer.render(TestCode(code="\n".join(code), function=fn), test) diff --git a/misc/codegen/lib/ql.py b/misc/codegen/lib/ql.py index a2762d6f498..9c7e3d84637 100644 --- a/misc/codegen/lib/ql.py +++ b/misc/codegen/lib/ql.py @@ -101,6 +101,7 @@ class Class: name: str bases: List[Base] = field(default_factory=list) + bases_impl: List[Base] = field(default_factory=list) final: bool = False properties: List[Property] = field(default_factory=list) dir: pathlib.Path = pathlib.Path() @@ -114,7 +115,9 @@ class Class: hideable: bool = False def __post_init__(self): - self.bases = [Base(str(b), str(prev)) for b, prev in zip(self.bases, itertools.chain([""], self.bases))] + def get_bases(bases): return [Base(str(b), str(prev)) for b, prev in zip(bases, itertools.chain([""], bases))] + self.bases = get_bases(self.bases) + self.bases_impl = get_bases(self.bases_impl) if self.properties: self.properties[0].first = True @@ -159,13 +162,26 @@ class Stub: base_import: str import_prefix: str synth_accessors: List[SynthUnderlyingAccessor] = field(default_factory=list) - internal: bool = False doc: List[str] = field(default_factory=list) @property def has_synth_accessors(self) -> bool: return bool(self.synth_accessors) + @property + def has_qldoc(self) -> bool: + return bool(self.doc) + + +@dataclass +class ClassPublic: + template: ClassVar = 'ql_class_public' + + name: str + imports: List[str] = field(default_factory=list) + internal: bool = False + doc: List[str] = field(default_factory=list) + @property def has_qldoc(self) -> bool: return bool(self.doc) or self.internal diff --git a/misc/codegen/lib/rust.py b/misc/codegen/lib/rust.py new file mode 100644 index 00000000000..e4ec8e871c2 --- /dev/null +++ b/misc/codegen/lib/rust.py @@ -0,0 +1,145 @@ +import dataclasses +import re +import typing + +# taken from https://doc.rust-lang.org/reference/keywords.html +keywords = { + "as", + "break", + "const", + "continue", + "crate", + "else", + "enum", + "extern", + "false", + "fn", + "for", + "if", + "impl", + "in", + "let", + "loop", + "match", + "mod", + "move", + "mut", + "pub", + "ref", + "return", + "self", + "Self", + "static", + "struct", + "super", + "trait", + "true", + "type", + "unsafe", + "use", + "where", + "while", + "async", + "await", + "dyn", + "abstract", + "become", + "box", + "do", + "final", + "macro", + "override", + "priv", + "typeof", + "unsized", + "virtual", + "yield", + "try", +} + + +def avoid_keywords(s: str) -> str: + return s + "_" if s in keywords else s + + +_field_overrides = [ + (re.compile(r"(.*)_"), lambda m: {"field_name": m[1]}), +] + + +def get_field_override(field: str): + for r, o in _field_overrides: + m = r.fullmatch(field) + if m: + return o(m) if callable(o) else o + return {} + + +@dataclasses.dataclass +class Field: + field_name: str + base_type: str + table_name: str + is_optional: bool = False + is_repeated: bool = False + is_unordered: bool = False + is_predicate: bool = False + first: bool = False + + def __post_init__(self): + self.field_name = avoid_keywords(self.field_name) + + @property + def type(self) -> str: + type = self.base_type + if self.is_optional: + type = f"Option<{type}>" + if self.is_repeated: + type = f"Vec<{type}>" + return type + + @property + def is_single(self): + return not (self.is_optional or self.is_repeated or self.is_predicate) + + @property + def is_label(self): + return self.base_type == "trap::Label" + + +@dataclasses.dataclass +class Class: + name: str + entry_table: str | None = None + fields: list[Field] = dataclasses.field(default_factory=list) + ancestors: list[str] = dataclasses.field(default_factory=list) + + @property + def is_entry(self) -> bool: + return bool(self.entry_table) + + @property + def single_field_entries(self) -> dict[str, list[dict]]: + ret = {} + if self.is_entry: + ret[self.entry_table] = [] + for f in self.fields: + if f.is_single: + ret.setdefault(f.table_name, []).append(f) + return [{"table_name": k, "fields": v} for k, v in ret.items()] + + +@dataclasses.dataclass +class ClassList: + template: typing.ClassVar[str] = "rust_classes" + + classes: list[Class] + source: str + + +@dataclasses.dataclass +class ModuleList: + template: typing.ClassVar[str] = "rust_module" + + modules: list[str] + source: str diff --git a/misc/codegen/lib/schema.py b/misc/codegen/lib/schema.py index 0d3399187d9..025c1330cce 100644 --- a/misc/codegen/lib/schema.py +++ b/misc/codegen/lib/schema.py @@ -94,6 +94,7 @@ class Class: default_doc_name: Optional[str] = None hideable: bool = False test_with: Optional[str] = None + rust_doc_test_function: Optional["FunctionInfo"] = "() -> ()" # TODO: parametrized pragmas @property def final(self): @@ -117,7 +118,7 @@ class Class: @dataclass class Schema: classes: Dict[str, Class] = field(default_factory=dict) - includes: Set[str] = field(default_factory=set) + includes: List[str] = field(default_factory=list) null: Optional[str] = None @property diff --git a/misc/codegen/lib/schemadefs.py b/misc/codegen/lib/schemadefs.py index 3d1024fc526..5f424b2bffc 100644 --- a/misc/codegen/lib/schemadefs.py +++ b/misc/codegen/lib/schemadefs.py @@ -52,6 +52,7 @@ class _SynthModifier(_schema.PropertyModifier, _Namespace): qltest = _Namespace() ql = _Namespace() cpp = _Namespace() +rust = _Namespace() synth = _SynthModifier() @@ -156,6 +157,10 @@ _Pragma("ql_internal") _Pragma("cpp_skip") +_Pragma("rust_skip_doc_test") + +rust.doc_test_signature = lambda signature: _annotate(rust_doc_test_function=signature) + def group(name: str = "") -> _ClassDecorator: return _annotate(group=name) diff --git a/misc/codegen/loaders/schemaloader.py b/misc/codegen/loaders/schemaloader.py index 8f26a6335f5..34dba347740 100644 --- a/misc/codegen/loaders/schemaloader.py +++ b/misc/codegen/loaders/schemaloader.py @@ -56,6 +56,8 @@ def _get_class(cls: type) -> schema.Class: ], doc=schema.split_doc(cls.__doc__), default_doc_name=cls.__dict__.get("_doc_name"), + rust_doc_test_function=cls.__dict__.get("_rust_doc_test_function", + schema.Class.rust_doc_test_function) ) @@ -134,7 +136,7 @@ def load(m: types.ModuleType) -> schema.Schema: if hasattr(defs, name): continue if name == "__includes": - includes = set(data) + includes = data continue if name.startswith("__"): continue diff --git a/swift/schema_documentation.md b/misc/codegen/schema_documentation.md similarity index 100% rename from swift/schema_documentation.md rename to misc/codegen/schema_documentation.md diff --git a/misc/codegen/templates/dbscheme.mustache b/misc/codegen/templates/dbscheme.mustache index de16e837b51..22f9e562f40 100644 --- a/misc/codegen/templates/dbscheme.mustache +++ b/misc/codegen/templates/dbscheme.mustache @@ -1,4 +1,4 @@ -// generated by {{generator}} +// generated by {{generator}}, do not edit {{#includes}} // from {{src}} diff --git a/misc/codegen/templates/ql_class.mustache b/misc/codegen/templates/ql_class.mustache index 100d5ebe939..da6524d6d37 100644 --- a/misc/codegen/templates/ql_class.mustache +++ b/misc/codegen/templates/ql_class.mustache @@ -1,4 +1,4 @@ -// generated by {{generator}} +// generated by {{generator}}, do not edit /** * This module provides the generated definition of `{{name}}`. * INTERNAL: Do not import directly. @@ -9,7 +9,9 @@ private import {{import_prefix}}.Raw {{#imports}} import {{.}} {{/imports}} - +{{#root}} +private class {{name}}Alias = {{name}}; +{{/root}} /** * INTERNAL: This module contains the fully generated definition of `{{name}}` and should not * be referenced directly. @@ -22,7 +24,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::{{name}}` class directly. * Use the subclass `{{name}}`, where the following predicates are available. */ - class {{name}} extends Synth::T{{name}}{{#bases}}, {{.}}{{/bases}} { + class {{name}} extends Synth::T{{name}}{{#bases_impl}}, {{.}}{{/bases_impl}} { {{#root}} /** * Gets the string representation of this element. @@ -49,13 +51,13 @@ module Generated { * Classes can override this to indicate this node should be in the "hidden" AST, mostly reserved * for conversions and syntactic sugar nodes like parentheses. */ - {{name}} getResolveStep() { none() } // overridden by subclasses + {{name}}Alias getResolveStep() { none() } // overridden by subclasses /** * Gets the element that should substitute this element in the explicit AST, applying `getResolveStep` * transitively. */ - final {{name}} resolve() { + final {{name}}Alias resolve() { not exists(this.getResolveStep()) and result = this or result = this.getResolveStep().resolve() diff --git a/misc/codegen/templates/ql_class_public.mustache b/misc/codegen/templates/ql_class_public.mustache new file mode 100644 index 00000000000..861683d287f --- /dev/null +++ b/misc/codegen/templates/ql_class_public.mustache @@ -0,0 +1,12 @@ +// generated by {{generator}}, do not edit +/** + * This module provides the {{^internal}}public {{/internal}}class `{{name}}`. + */ + +private import {{^internal}}internal.{{/internal}}{{name}}Impl +{{#imports}} +import {{.}} +{{/imports}} + +{{>ql_stub_class_qldoc}} +final class {{name}} = Impl::{{name}}; \ No newline at end of file diff --git a/misc/codegen/templates/ql_imports.mustache b/misc/codegen/templates/ql_imports.mustache index 18799347ba3..a3aee3277e1 100644 --- a/misc/codegen/templates/ql_imports.mustache +++ b/misc/codegen/templates/ql_imports.mustache @@ -1,4 +1,4 @@ -// generated by {{generator}} +// generated by {{generator}}, do not edit /** * This module exports all modules providing `Element` subclasses. */ diff --git a/misc/codegen/templates/ql_parent.mustache b/misc/codegen/templates/ql_parent.mustache index 0741562b99c..b4e73e3699e 100644 --- a/misc/codegen/templates/ql_parent.mustache +++ b/misc/codegen/templates/ql_parent.mustache @@ -1,4 +1,4 @@ -// generated by {{generator}} +// generated by {{generator}}, do not edit /** * This module provides the generated parent/child relationship. */ diff --git a/misc/codegen/templates/ql_stub.mustache b/misc/codegen/templates/ql_stub.mustache index 0ff754a60a7..b7a3ca3107d 100644 --- a/misc/codegen/templates/ql_stub.mustache +++ b/misc/codegen/templates/ql_stub.mustache @@ -6,10 +6,16 @@ private import {{import_prefix}}.Raw private import {{import_prefix}}.Synth {{/has_synth_accessors}} -{{>ql_stub_class_qldoc}} -class {{name}} extends Generated::{{name}} { +/** + * INTERNAL: This module contains the customizable definition of `{{name}}` and should not + * be referenced directly. + */ +module Impl { + {{>ql_stub_class_qldoc}} + class {{name}} extends Generated::{{name}} { {{#synth_accessors}} private cached {{type}} getUnderlying{{argument}}() { this = Synth::T{{name}}({{#constructorparams}}{{^first}},{{/first}}{{param}}{{/constructorparams}})} {{/synth_accessors}} -} + } +} \ No newline at end of file diff --git a/misc/codegen/templates/ql_stub_module_qldoc.mustache b/misc/codegen/templates/ql_stub_module_qldoc.mustache index 2dc821c17f0..c330dc300ad 100644 --- a/misc/codegen/templates/ql_stub_module_qldoc.mustache +++ b/misc/codegen/templates/ql_stub_module_qldoc.mustache @@ -1,6 +1,5 @@ /** * This module provides a hand-modifiable wrapper around the generated class `{{name}}`. -{{#internal}} + * * INTERNAL: Do not use. -{{/internal}} */ diff --git a/misc/codegen/templates/ql_test_class.mustache b/misc/codegen/templates/ql_test_class.mustache index d689753cfd3..63c5e24050c 100644 --- a/misc/codegen/templates/ql_test_class.mustache +++ b/misc/codegen/templates/ql_test_class.mustache @@ -1,4 +1,4 @@ -// generated by {{generator}} +// generated by {{generator}}, do not edit import {{elements_module}} import TestUtils diff --git a/misc/codegen/templates/ql_test_missing.mustache b/misc/codegen/templates/ql_test_missing.mustache index 5a714744ef2..583d2e46b2c 100644 --- a/misc/codegen/templates/ql_test_missing.mustache +++ b/misc/codegen/templates/ql_test_missing.mustache @@ -1,4 +1,4 @@ -// generated by {{generator}} +// generated by {{generator}}, do not edit After a source file is added in this directory and {{generator}} is run again, test queries will appear and this file will be deleted diff --git a/misc/codegen/templates/ql_test_property.mustache b/misc/codegen/templates/ql_test_property.mustache index a0ba0a52d69..2c293d7bcab 100644 --- a/misc/codegen/templates/ql_test_property.mustache +++ b/misc/codegen/templates/ql_test_property.mustache @@ -1,4 +1,4 @@ -// generated by {{generator}} +// generated by {{generator}}, do not edit import {{elements_module}} import TestUtils diff --git a/misc/codegen/templates/rust_classes.mustache b/misc/codegen/templates/rust_classes.mustache new file mode 100644 index 00000000000..94dd957da02 --- /dev/null +++ b/misc/codegen/templates/rust_classes.mustache @@ -0,0 +1,77 @@ +// generated by {{generator}}, do not edit + +#![cfg_attr(any(), rustfmt::skip)] + +use crate::trap; +{{#classes}} + +{{#is_entry}} +#[derive(Debug)] +pub struct {{name}} { + pub id: trap::TrapId<{{name}}>, + {{#fields}} + pub {{field_name}}: {{type}}, + {{/fields}} +} + +impl trap::TrapEntry for {{name}} { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + {{#single_field_entries}} + out.add_tuple("{{entry_table}}", vec![id.into(){{#fields}}, self.{{field_name}}.into(){{/fields}}]); + {{/single_field_entries}} + {{#fields}} + {{#is_predicate}} + if self.{{field_name}} { + out.add_tuple("{{table_name}}", vec![id.into()]); + } + {{/is_predicate}} + {{#is_optional}} + {{^is_repeated}} + if let Some(v) = self.{{field_name}} { + out.add_tuple("{{table_name}}", vec![id.into(), v.into()]); + } + {{/is_repeated}} + {{/is_optional}} + {{#is_repeated}} + for (i, v) in self.{{field_name}}.into_iter().enumerate() { + {{^is_optional}} + out.add_tuple("{{table_name}}", vec![id.into(){{^is_unordered}}, i.into(){{/is_unordered}}, v.into()]); + {{/is_optional}} + {{#is_optional}} + if let Some(v) = v { + out.add_tuple("{{table_name}}", vec![id.into(){{^is_unordered}}, i.into(){{/is_unordered}}, v.into()]); + } + {{/is_optional}} + } + {{/is_repeated}} + {{/fields}} + } +} +{{/is_entry}} +{{^is_entry}} +{{! virtual class, make it unbuildable }} +#[derive(Debug)] +pub struct {{name}} { + _unused: () +} +{{/is_entry}} + +impl trap::TrapClass for {{name}} { + fn class_name() -> &'static str { "{{name}}" } +} +{{#ancestors}} + +impl From> for trap::Label<{{.}}> { + fn from(value: trap::Label<{{name}}>) -> Self { + // SAFETY: this is safe because in the dbscheme {{name}} is a subclass of {{.}} + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} +{{/ancestors}} +{{/classes}} diff --git a/misc/codegen/templates/rust_module.mustache b/misc/codegen/templates/rust_module.mustache new file mode 100644 index 00000000000..f9e066e15b3 --- /dev/null +++ b/misc/codegen/templates/rust_module.mustache @@ -0,0 +1,6 @@ +// generated by {{generator}}, do not edit +{{#modules}} + +mod {{.}}; +pub use {{.}}::*; +{{/modules}} diff --git a/misc/codegen/templates/rust_test_code.mustache b/misc/codegen/templates/rust_test_code.mustache new file mode 100644 index 00000000000..2f70362e31e --- /dev/null +++ b/misc/codegen/templates/rust_test_code.mustache @@ -0,0 +1,9 @@ +// generated by {{generator}}, do not edit + +{{#function}} +fn {{name}}{{signature}} { +{{/function}} +{{code}} +{{#function}} +} +{{/function}} diff --git a/misc/codegen/test/test_ql.py b/misc/codegen/test/test_ql.py index 8faa3b0cc99..eef840ddad6 100644 --- a/misc/codegen/test/test_ql.py +++ b/misc/codegen/test/test_ql.py @@ -147,15 +147,14 @@ def test_class_with_children(): assert cls.has_children is True -@pytest.mark.parametrize("doc,internal,expected", +@pytest.mark.parametrize("doc,expected", [ - (["foo", "bar"], False, True), - (["foo", "bar"], True, True), - ([], False, False), - ([], True, True), + (["foo", "bar"], True), + (["foo", "bar"], True), + ([], False) ]) -def test_has_doc(doc, internal, expected): - stub = ql.Stub("Class", base_import="foo", import_prefix="bar", doc=doc, internal=internal) +def test_has_doc(doc, expected): + stub = ql.Stub("Class", base_import="foo", import_prefix="bar", doc=doc) assert stub.has_qldoc is expected diff --git a/misc/codegen/test/test_qlgen.py b/misc/codegen/test/test_qlgen.py index 0d797d07198..f364fcbd92c 100644 --- a/misc/codegen/test/test_qlgen.py +++ b/misc/codegen/test/test_qlgen.py @@ -36,8 +36,9 @@ def children_file(): return ql_output_path() / "ParentChild.qll" stub_import = "stub.path" +stub_import_prefix_internal = stub_import + ".internal." stub_import_prefix = stub_import + "." -root_import = stub_import_prefix + "Element" +root_import = stub_import_prefix_internal + "Element" gen_import = "other.path" gen_import_prefix = gen_import + "." @@ -112,9 +113,14 @@ def _filter_generated_classes(ret, output_test_files=False): } base_files -= {pathlib.Path(f"{name}.qll") for name in ("Raw", "Synth", "SynthConstructors", "PureSynthConstructors")} + stub_files = {pathlib.Path(f.parent.parent, f.stem + ".qll") if f.parent.name == + "internal" and pathlib.Path(f.parent.parent, f.stem + ".qll") in base_files else f for f in stub_files} assert base_files <= stub_files return { - str(f): (ret[stub_path() / f], ret[ql_output_path() / f]) + str(f): (ret[stub_path() / "internal" / f] if stub_path() / "internal" / f in ret else ret[stub_path() / f], + ret[stub_path() / pathlib.Path(f.parent, "internal" if not f.parent.name == + "internal" else "", f.stem + "Impl.qll")], + ret[ql_output_path() / f]) for f in base_files } @@ -144,12 +150,17 @@ def a_ql_stub(*, name, import_prefix="", **kwargs): base_import=f"{gen_import_prefix}{import_prefix}{name}") +def a_ql_class_public(*, name, **kwargs): + return ql.ClassPublic(name=name, **kwargs) + + def test_one_empty_class(generate_classes): assert generate_classes([ schema.Class("A") ]) == { - "A.qll": (a_ql_stub(name="A"), - a_ql_class(name="A", final=True)), + "A.qll": (a_ql_class_public(name="A"), + a_ql_stub(name="A"), + a_ql_class(name="A", final=True, imports=[stub_import_prefix + "A"])) } @@ -157,8 +168,9 @@ def test_one_empty_internal_class(generate_classes): assert generate_classes([ schema.Class("A", pragmas=["ql_internal"]) ]) == { - "A.qll": (a_ql_stub(name="A", internal=True), - a_ql_class(name="A", final=True, internal=True)), + "A.qll": (a_ql_class_public(name="A", internal=True), + a_ql_stub(name="A"), + a_ql_class(name="A", final=True, internal=True, imports=[stub_import_prefix_internal + "A"])), } @@ -169,11 +181,11 @@ def test_hierarchy(generate_classes): schema.Class("B", bases=["A"], derived={"D"}), schema.Class("A", derived={"B", "C"}), ]) == { - "A.qll": (a_ql_stub(name="A"), a_ql_class(name="A")), - "B.qll": (a_ql_stub(name="B"), a_ql_class(name="B", bases=["A"], imports=[stub_import_prefix + "A"])), - "C.qll": (a_ql_stub(name="C"), a_ql_class(name="C", bases=["A"], imports=[stub_import_prefix + "A"])), - "D.qll": (a_ql_stub(name="D"), a_ql_class(name="D", final=True, bases=["B", "C"], - imports=[stub_import_prefix + cls for cls in "BC"])), + "A.qll": (a_ql_class_public(name="A"), a_ql_stub(name="A"), a_ql_class(name="A", imports=[stub_import_prefix + "A"])), + "B.qll": (a_ql_class_public(name="B", imports=[stub_import_prefix + "A"]), a_ql_stub(name="B"), a_ql_class(name="B", bases=["A"], bases_impl=["AImpl::A"], imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"])), + "C.qll": (a_ql_class_public(name="C", imports=[stub_import_prefix + "A"]), a_ql_stub(name="C"), a_ql_class(name="C", bases=["A"], bases_impl=["AImpl::A"], imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"])), + "D.qll": (a_ql_class_public(name="D", imports=[stub_import_prefix + "B", stub_import_prefix + "C"]), a_ql_stub(name="D"), a_ql_class(name="D", final=True, bases=["B", "C"], bases_impl=["BImpl::B", "CImpl::C"], + imports=[stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl" for cls in "BC"])), } @@ -202,15 +214,15 @@ def test_hierarchy_children(generate_children_implementations): schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]), schema.Class("D", bases=["B", "C"]), ]) == ql.GetParentImplementation( - classes=[a_ql_class(name="A", internal=True), - a_ql_class(name="B", bases=["A"], imports=[ - stub_import_prefix + "A"]), - a_ql_class(name="C", bases=["A"], imports=[ - stub_import_prefix + "A"], internal=True), - a_ql_class(name="D", final=True, bases=["B", "C"], - imports=[stub_import_prefix + cls for cls in "BC"]), + classes=[a_ql_class(name="A", internal=True, imports=[stub_import_prefix_internal + "A"]), + a_ql_class(name="B", bases=["A"], bases_impl=["AImpl::A"], imports=[ + stub_import_prefix_internal + "AImpl::Impl as AImpl"]), + a_ql_class(name="C", bases=["A"], bases_impl=["AImpl::A"], imports=[ + stub_import_prefix_internal + "AImpl::Impl as AImpl"], internal=True), + a_ql_class(name="D", final=True, bases=["B", "C"], bases_impl=["BImpl::B", "CImpl::C"], + imports=[stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl" for cls in "BC"]), ], - imports=[stub_import] + [stub_import_prefix + cls for cls in "AC"], + imports=[stub_import] + [stub_import_prefix_internal + cls for cls in "AC"], ) @@ -219,12 +231,14 @@ def test_single_property(generate_classes): schema.Class("MyObject", properties=[ schema.SingleProperty("foo", "bar")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", tableparams=["this", "result"], doc="foo of this my object"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -233,13 +247,15 @@ def test_internal_property(generate_classes): schema.Class("MyObject", properties=[ schema.SingleProperty("foo", "bar", pragmas=["ql_internal"])]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", tableparams=["this", "result"], doc="foo of this my object", internal=True), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -257,8 +273,9 @@ def test_children(generate_classes): schema.RepeatedOptionalProperty("child_4", "int", is_child=True), ]), ]) == { - "FakeRoot.qll": (a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True)), - "MyObject.qll": (a_ql_stub(name="MyObject"), + "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="A", type="int", tablename="my_objects", @@ -294,7 +311,8 @@ def test_children(generate_classes): tableparams=["this", "index", "result"], is_optional=True, prev_child="Child3", doc="child 4 of this my object", doc_plural="child 4s of this my object"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -306,7 +324,8 @@ def test_single_properties(generate_classes): schema.SingleProperty("three", "z"), ]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="One", type="x", tablename="my_objects", @@ -318,7 +337,8 @@ def test_single_properties(generate_classes): ql.Property(singular="Three", type="z", tablename="my_objects", tableparams=["this", "_", "_", "result"], doc="three of this my object"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -329,13 +349,15 @@ def test_optional_property(generate_classes, is_child, prev_child): schema.Class("MyObject", properties=[ schema.OptionalProperty("foo", "bar", is_child=is_child)]), ]) == { - "FakeRoot.qll": (a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True)), - "MyObject.qll": (a_ql_stub(name="MyObject"), + "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_object_foos", tableparams=["this", "result"], is_optional=True, prev_child=prev_child, doc="foo of this my object"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -346,13 +368,15 @@ def test_repeated_property(generate_classes, is_child, prev_child): schema.Class("MyObject", properties=[ schema.RepeatedProperty("foo", "bar", is_child=is_child)]), ]) == { - "FakeRoot.qll": (a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True)), - "MyObject.qll": (a_ql_stub(name="MyObject"), + "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos", tableparams=["this", "index", "result"], prev_child=prev_child, doc="foo of this my object", doc_plural="foos of this my object"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -362,13 +386,15 @@ def test_repeated_unordered_property(generate_classes): schema.Class("MyObject", properties=[ schema.RepeatedUnorderedProperty("foo", "bar")]), ]) == { - "FakeRoot.qll": (a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True)), - "MyObject.qll": (a_ql_stub(name="MyObject"), + "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos", tableparams=["this", "result"], is_unordered=True, doc="foo of this my object", doc_plural="foos of this my object"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -380,14 +406,16 @@ def test_repeated_optional_property(generate_classes, is_child, prev_child): schema.RepeatedOptionalProperty("foo", "bar", is_child=is_child)]), ]) == { - "FakeRoot.qll": (a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True)), - "MyObject.qll": (a_ql_stub(name="MyObject"), + "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos", tableparams=["this", "index", "result"], is_optional=True, prev_child=prev_child, doc="foo of this my object", doc_plural="foos of this my object"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -396,11 +424,13 @@ def test_predicate_property(generate_classes): schema.Class("MyObject", properties=[ schema.PredicateProperty("is_foo")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="isFoo", type="predicate", tablename="my_object_is_foo", tableparams=["this"], is_predicate=True, doc="this my object is foo"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -411,16 +441,17 @@ def test_single_class_property(generate_classes, is_child, prev_child): schema.Class("MyObject", properties=[ schema.SingleProperty("foo", "Bar", is_child=is_child)]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject", imports=[stub_import_prefix + "Bar"]), + a_ql_stub(name="MyObject"), a_ql_class( - name="MyObject", final=True, imports=[stub_import_prefix + "Bar"], properties=[ + name="MyObject", final=True, imports=[stub_import_prefix + "Bar", stub_import_prefix + "MyObject"], properties=[ ql.Property(singular="Foo", type="Bar", tablename="my_objects", tableparams=[ "this", "result"], prev_child=prev_child, doc="foo of this my object"), ], )), - "Bar.qll": (a_ql_stub(name="Bar"), a_ql_class(name="Bar", final=True)), + "Bar.qll": (a_ql_class_public(name="Bar"), a_ql_stub(name="Bar"), a_ql_class(name="Bar", final=True, imports=[stub_import_prefix + "Bar"])), } @@ -429,7 +460,7 @@ def test_class_with_doc(generate_classes): assert generate_classes([ schema.Class("A", doc=doc), ]) == { - "A.qll": (a_ql_stub(name="A", doc=doc), a_ql_class(name="A", final=True, doc=doc)), + "A.qll": (a_ql_class_public(name="A", doc=doc), a_ql_stub(name="A", doc=doc), a_ql_class(name="A", final=True, doc=doc, imports=[stub_import_prefix + "A"])), } @@ -440,10 +471,11 @@ def test_class_dir(generate_classes): schema.Class("B", bases=["A"]), ]) == { f"{dir}/A.qll": ( - a_ql_stub(name="A", import_prefix="another.rel.path."), a_ql_class(name="A", dir=pathlib.Path(dir))), - "B.qll": (a_ql_stub(name="B"), - a_ql_class(name="B", final=True, bases=["A"], - imports=[stub_import_prefix + "another.rel.path.A"])), + a_ql_class_public(name="A"), a_ql_stub(name="A", import_prefix="another.rel.path."), a_ql_class(name="A", dir=pathlib.Path(dir), imports=[stub_import_prefix + "another.rel.path.A"])), + "B.qll": (a_ql_class_public(name="B", imports=[stub_import_prefix + "another.rel.path.A"]), + a_ql_stub(name="B"), + a_ql_class(name="B", final=True, bases=["A"], bases_impl=["AImpl::A"], + imports=[stub_import_prefix + "another.rel.path.internal.AImpl::Impl as AImpl"])), } @@ -518,7 +550,7 @@ def test_manage_parameters(opts, generate, renderer, force): def test_modified_stub_skipped(qlgen_opts, generate, render_manager): - stub = qlgen_opts.ql_stub_output / "A.qll" + stub = qlgen_opts.ql_stub_output / "AImpl.qll" render_manager.is_customized_stub.side_effect = lambda f: f == stub assert stub not in generate([schema.Class('A')]) @@ -732,14 +764,16 @@ def test_property_description(generate_classes): schema.SingleProperty("foo", "bar", description=description), ]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", tableparams=["this", "result"], doc="foo of this my object", description=description), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -748,12 +782,14 @@ def test_property_doc_override(generate_classes): schema.Class("MyObject", properties=[ schema.SingleProperty("foo", "bar", doc="baz")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", tableparams=["this", "result"], doc="baz"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -763,7 +799,8 @@ def test_repeated_property_doc_override(generate_classes): schema.RepeatedProperty("x", "int", doc="children of this"), schema.RepeatedOptionalProperty("y", "int", doc="child of this")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="X", plural="Xes", type="int", @@ -774,7 +811,8 @@ def test_repeated_property_doc_override(generate_classes): tablename="my_object_ies", is_optional=True, tableparams=["this", "index", "result"], doc="child of this", doc_plural="children of this"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -785,13 +823,15 @@ def test_property_doc_abbreviations(generate_classes, abbr, expected): schema.Class("Object", properties=[ schema.SingleProperty(f"foo_{abbr}_bar", "baz")]), ]) == { - "Object.qll": (a_ql_stub(name="Object"), + "Object.qll": (a_ql_class_public(name="Object"), + a_ql_stub(name="Object"), a_ql_class(name="Object", final=True, properties=[ ql.Property(singular=f"Foo{abbr.capitalize()}Bar", type="baz", tablename="objects", tableparams=["this", "result"], doc=expected_doc), - ])), + ], + imports=[stub_import_prefix + "Object"])), } @@ -802,13 +842,15 @@ def test_property_doc_abbreviations_ignored_if_within_word(generate_classes, abb schema.Class("Object", properties=[ schema.SingleProperty(f"foo_{abbr}acadabra_bar", "baz")]), ]) == { - "Object.qll": (a_ql_stub(name="Object"), + "Object.qll": (a_ql_class_public(name="Object"), + a_ql_stub(name="Object"), a_ql_class(name="Object", final=True, properties=[ ql.Property(singular=f"Foo{abbr.capitalize()}acadabraBar", type="baz", tablename="objects", tableparams=["this", "result"], doc=expected_doc), - ])), + ], + imports=[stub_import_prefix + "Object"])), } @@ -818,7 +860,8 @@ def test_repeated_property_doc_override_with_format(generate_classes): schema.RepeatedProperty("x", "int", doc="special {children} of this"), schema.RepeatedOptionalProperty("y", "int", doc="special {child} of this")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="X", plural="Xes", type="int", @@ -831,7 +874,8 @@ def test_repeated_property_doc_override_with_format(generate_classes): tableparams=["this", "index", "result"], doc="special child of this", doc_plural="special children of this"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -841,7 +885,8 @@ def test_repeated_property_doc_override_with_multiple_formats(generate_classes): schema.RepeatedProperty("x", "int", doc="{cat} or {dog}"), schema.RepeatedOptionalProperty("y", "int", doc="{cats} or {dogs}")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="X", plural="Xes", type="int", @@ -852,7 +897,8 @@ def test_repeated_property_doc_override_with_multiple_formats(generate_classes): tablename="my_object_ies", is_optional=True, tableparams=["this", "index", "result"], doc="cat or dog", doc_plural="cats or dogs"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -861,12 +907,14 @@ def test_property_doc_override_with_format(generate_classes): schema.Class("MyObject", properties=[ schema.SingleProperty("foo", "bar", doc="special {baz} of this")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", tableparams=["this", "result"], doc="special baz of this"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -876,12 +924,14 @@ def test_property_on_class_with_default_doc_name(generate_classes): schema.SingleProperty("foo", "bar")], default_doc_name="baz"), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", tableparams=["this", "result"], doc="foo of this baz"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -890,13 +940,13 @@ def test_stub_on_class_with_synth_from_class(generate_classes): schema.Class("MyObject", synth=schema.SynthInfo(from_class="A"), properties=[schema.SingleProperty("foo", "bar")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject", synth_accessors=[ + "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject", synth_accessors=[ ql.SynthUnderlyingAccessor(argument="Entity", type="Raw::A", constructorparams=["result"]), ]), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", synth=True, tableparams=["this", "result"], doc="foo of this my object"), - ])), + ], imports=[stub_import_prefix + "MyObject"])), } @@ -905,7 +955,7 @@ def test_stub_on_class_with_synth_on_arguments(generate_classes): schema.Class("MyObject", synth=schema.SynthInfo(on_arguments={"base": "A", "index": "int", "label": "string"}), properties=[schema.SingleProperty("foo", "bar")]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject", synth_accessors=[ + "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject", synth_accessors=[ ql.SynthUnderlyingAccessor(argument="Base", type="Raw::A", constructorparams=["result", "_", "_"]), ql.SynthUnderlyingAccessor(argument="Index", type="int", constructorparams=["_", "result", "_"]), ql.SynthUnderlyingAccessor(argument="Label", type="string", constructorparams=["_", "_", "result"]), @@ -913,7 +963,7 @@ def test_stub_on_class_with_synth_on_arguments(generate_classes): a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", synth=True, tableparams=["this", "result"], doc="foo of this my object"), - ])), + ], imports=[stub_import_prefix + "MyObject"])), } @@ -922,13 +972,15 @@ def test_synth_property(generate_classes): schema.Class("MyObject", properties=[ schema.SingleProperty("foo", "bar", synth=True)]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), + "MyObject.qll": (a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, properties=[ ql.Property(singular="Foo", type="bar", tablename="my_objects", synth=True, tableparams=["this", "result"], doc="foo of this my object"), - ])), + ], + imports=[stub_import_prefix + "MyObject"])), } @@ -936,7 +988,7 @@ def test_hideable_class(generate_classes): assert generate_classes([ schema.Class("MyObject", hideable=True), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True)), + "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True, imports=[stub_import_prefix + "MyObject"])), } @@ -947,9 +999,10 @@ def test_hideable_property(generate_classes): schema.SingleProperty("x", "MyObject"), ]), ]) == { - "MyObject.qll": (a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True)), - "Other.qll": (a_ql_stub(name="Other"), - a_ql_class(name="Other", imports=[stub_import_prefix + "MyObject"], + "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True, imports=[stub_import_prefix + "MyObject"])), + "Other.qll": (a_ql_class_public(name="Other", imports=[stub_import_prefix + "MyObject"]), + a_ql_stub(name="Other"), + a_ql_class(name="Other", imports=[stub_import_prefix + "MyObject", stub_import_prefix + "Other"], final=True, properties=[ ql.Property(singular="X", type="MyObject", tablename="others", type_is_hideable=True, diff --git a/misc/scripts/models-as-data/generate_flow_model.py b/misc/scripts/models-as-data/generate_flow_model.py index 7654713d280..4d440725298 100644 --- a/misc/scripts/models-as-data/generate_flow_model.py +++ b/misc/scripts/models-as-data/generate_flow_model.py @@ -33,6 +33,7 @@ class Generator: self.generateSources = False self.generateSummaries = False self.generateNeutrals = False + self.generateContentSummaries = False self.generateTypeBasedSummaries = False self.dryRun = False self.dirname = "modelgenerator" @@ -50,6 +51,7 @@ Which models are generated is controlled by the flags: --with-sources --with-summaries --with-neutrals + --with-content-summaries (Experimental). May not be used in conjunction with --with-summaries --with-typebased-summaries (Experimental) If none of these flags are specified, all models are generated except for the type based models. @@ -81,6 +83,10 @@ Requirements: `codeql` should both appear on your path. generator.printHelp() sys.exit(0) + if "--with-summaries" in sys.argv and "--with-content-summaries" in sys.argv: + generator.printHelp() + sys.exit(0) + if "--with-sinks" in sys.argv: sys.argv.remove("--with-sinks") generator.generateSinks = True @@ -97,6 +103,10 @@ Requirements: `codeql` should both appear on your path. sys.argv.remove("--with-neutrals") generator.generateNeutrals = True + if "--with-content-summaries" in sys.argv: + sys.argv.remove("--with-content-summaries") + generator.generateContentSummaries = True + if "--with-typebased-summaries" in sys.argv: sys.argv.remove("--with-typebased-summaries") generator.generateTypeBasedSummaries = True @@ -105,7 +115,7 @@ Requirements: `codeql` should both appear on your path. sys.argv.remove("--dry-run") generator.dryRun = True - if not generator.generateSinks and not generator.generateSources and not generator.generateSummaries and not generator.generateNeutrals and not generator.generateTypeBasedSummaries: + if not generator.generateSinks and not generator.generateSources and not generator.generateSummaries and not generator.generateNeutrals and not generator.generateTypeBasedSummaries and not generator.generateContentSummaries: generator.generateSinks = generator.generateSources = generator.generateSummaries = generator.generateNeutrals = True n = len(sys.argv) @@ -162,8 +172,13 @@ Requirements: `codeql` should both appear on your path. neutralAddsTo = self.getAddsTo("CaptureNeutralModels.ql", helpers.neutralModelPredicate) else: neutralAddsTo = { } - - return helpers.merge(summaryAddsTo, sinkAddsTo, sourceAddsTo, neutralAddsTo) + + if self.generateContentSummaries: + contentSummaryAddsTo = self.getAddsTo("CaptureContentSummaryModels.ql", helpers.summaryModelPredicate) + else: + contentSummaryAddsTo = { } + + return helpers.merge(summaryAddsTo, contentSummaryAddsTo, sinkAddsTo, sourceAddsTo, neutralAddsTo) def makeTypeBasedContent(self): if self.generateTypeBasedSummaries: diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 5e4196ac337..1d5d3b7b386 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.8 + +No user-facing changes. + +## 1.0.7 + +No user-facing changes. + +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.6.md b/misc/suite-helpers/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.7.md b/misc/suite-helpers/change-notes/released/1.0.7.md new file mode 100644 index 00000000000..b3a381f0315 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.7.md @@ -0,0 +1,3 @@ +## 1.0.7 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.8.md b/misc/suite-helpers/change-notes/released/1.0.8.md new file mode 100644 index 00000000000..b3efd4f66ef --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.8.md @@ -0,0 +1,3 @@ +## 1.0.8 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 42da17b3841..5c55fbd52ed 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.8 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index baedc3f13a1..a349dd3c6d2 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.6-dev +version: 1.0.9-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 87cbf5bfda1..bd673aa9edc 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,22 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted the deprecated `semmle.python.RegexTreeView` module, use `semmle.python.regexp.RegexTreeView` instead. +* Deleted the deprecated `RegexString` class from `regex.qll`. +* Deleted the deprecated `Regex` class, use `RegExp` instead. +* Deleted the deprecated `semmle/python/security/SQL.qll` file. +* Deleted the deprecated `useSSL` predicates from the LDAP libraries, use `useSsl` instead. + +## 1.0.7 + +No user-facing changes. + +## 1.0.6 + +No user-facing changes. + ## 1.0.5 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/released/1.0.6.md b/python/ql/lib/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/python/ql/lib/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/python/ql/lib/change-notes/released/1.0.7.md b/python/ql/lib/change-notes/released/1.0.7.md new file mode 100644 index 00000000000..b3a381f0315 --- /dev/null +++ b/python/ql/lib/change-notes/released/1.0.7.md @@ -0,0 +1,3 @@ +## 1.0.7 + +No user-facing changes. diff --git a/python/ql/lib/change-notes/released/2.0.0.md b/python/ql/lib/change-notes/released/2.0.0.md new file mode 100644 index 00000000000..8c37adb7699 --- /dev/null +++ b/python/ql/lib/change-notes/released/2.0.0.md @@ -0,0 +1,10 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted the deprecated `semmle.python.RegexTreeView` module, use `semmle.python.regexp.RegexTreeView` instead. +* Deleted the deprecated `RegexString` class from `regex.qll`. +* Deleted the deprecated `Regex` class, use `RegExp` instead. +* Deleted the deprecated `semmle/python/security/SQL.qll` file. +* Deleted the deprecated `useSSL` predicates from the LDAP libraries, use `useSsl` instead. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 42da17b3841..0abe6ccede0 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 2.0.0 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 81d09c13b5d..b3a199bce2e 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 1.0.6-dev +version: 2.0.1-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/lib/semmle/python/RegexTreeView.qll b/python/ql/lib/semmle/python/RegexTreeView.qll deleted file mode 100644 index 84cfaa3a4c7..00000000000 --- a/python/ql/lib/semmle/python/RegexTreeView.qll +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Deprecated. Use `semmle.python.regexp.RegexTreeView` instead. - */ - -deprecated import regexp.RegexTreeView as Dep -import Dep diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll index 3b1439511d1..359fa71744b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll index 3b1439511d1..359fa71744b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll index 3b1439511d1..359fa71744b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll index 3b1439511d1..359fa71744b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll b/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll index d0293522404..0ce4bc27790 100644 --- a/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll +++ b/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll @@ -664,14 +664,6 @@ module DataFlow { } } -deprecated private class DataFlowType extends TaintKind { - // this only exists to avoid an empty recursion error in the type checker - DataFlowType() { - this = "Data flow" and - 1 = 2 - } -} - pragma[noinline] private predicate dict_construct(ControlFlowNode itemnode, ControlFlowNode dictnode) { dictnode.(DictNode).getAValue() = itemnode diff --git a/python/ql/lib/semmle/python/regex.qll b/python/ql/lib/semmle/python/regex.qll index 0c96e504946..4a5a35d5b63 100644 --- a/python/ql/lib/semmle/python/regex.qll +++ b/python/ql/lib/semmle/python/regex.qll @@ -14,8 +14,3 @@ RegExpTerm getTermForExecution(Concepts::RegexExecution exec) { result.isRootTerm() ) } - -/** A StringLiteral used as a regular expression */ -deprecated class RegexString extends Regex { - RegexString() { this = RegExpTracking::regExpSource(_).asExpr() } -} diff --git a/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll b/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll index 6ac12e00e81..7e23554e058 100644 --- a/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll +++ b/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll @@ -100,11 +100,6 @@ private module FindRegexMode { private string mode_from_node(DataFlow::Node node) { node = re_flag_tracker(result) } } -/** - * DEPRECATED: Use `RegExp` instead. - */ -deprecated class Regex = RegExp; - /** A StringLiteral used as a regular expression */ class RegExp extends Expr instanceof StringLiteral { DataFlow::Node use; diff --git a/python/ql/lib/semmle/python/security/SQL.qll b/python/ql/lib/semmle/python/security/SQL.qll deleted file mode 100644 index 6485402b78a..00000000000 --- a/python/ql/lib/semmle/python/security/SQL.qll +++ /dev/null @@ -1,4 +0,0 @@ -import python -import semmle.python.dataflow.TaintTracking - -abstract deprecated class SqlInjectionSink extends TaintSink { } diff --git a/python/ql/lib/semmle/python/security/dataflow/CleartextLoggingCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/CleartextLoggingCustomizations.qll index ae61bd04314..c00106a1260 100644 --- a/python/ql/lib/semmle/python/security/dataflow/CleartextLoggingCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/CleartextLoggingCustomizations.qll @@ -41,7 +41,9 @@ module CleartextLogging { */ class SensitiveDataSourceAsSource extends Source, SensitiveDataSource { SensitiveDataSourceAsSource() { - not SensitiveDataSource.super.getClassification() = SensitiveDataClassification::id() + not SensitiveDataSource.super.getClassification() in [ + SensitiveDataClassification::id(), SensitiveDataClassification::certificate() + ] } override SensitiveDataClassification getClassification() { diff --git a/python/ql/lib/semmle/python/security/dataflow/CleartextStorageCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/CleartextStorageCustomizations.qll index 001b9395ef4..70a17acbe9a 100644 --- a/python/ql/lib/semmle/python/security/dataflow/CleartextStorageCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/CleartextStorageCustomizations.qll @@ -40,7 +40,9 @@ module CleartextStorage { */ class SensitiveDataSourceAsSource extends Source, SensitiveDataSource { SensitiveDataSourceAsSource() { - not SensitiveDataSource.super.getClassification() = SensitiveDataClassification::id() + not SensitiveDataSource.super.getClassification() in [ + SensitiveDataClassification::id(), SensitiveDataClassification::certificate() + ] } override SensitiveDataClassification getClassification() { diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 31897112925..045938a0cde 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.2.2 + +### Minor Analysis Improvements + +* The `py/clear-text-logging-sensitive-data` and `py/clear-text-storage-sensitive-data` queries have been updated to exclude the `certificate` classification of sensitive sources, which often do not contain sensitive data. + +## 1.2.1 + +No user-facing changes. + +## 1.2.0 + +### New Queries + +* The `py/cookie-injection` query, originally contributed to the experimental query pack by @jorgectf, has been promoted to the main query pack. This query finds instances of cookies being set without the `Secure`, `HttpOnly`, or `SameSite` attributes set to secure values. + ## 1.1.0 ### New Queries diff --git a/python/ql/src/change-notes/2024-07-23-insecure-cookie-promotion.md b/python/ql/src/change-notes/released/1.2.0.md similarity index 85% rename from python/ql/src/change-notes/2024-07-23-insecure-cookie-promotion.md rename to python/ql/src/change-notes/released/1.2.0.md index 370fe162290..10a58295368 100644 --- a/python/ql/src/change-notes/2024-07-23-insecure-cookie-promotion.md +++ b/python/ql/src/change-notes/released/1.2.0.md @@ -1,4 +1,5 @@ ---- -category: newQuery ---- -* The `py/cookie-injection` query, originally contributed to the experimental query pack by @jorgectf, has been promoted to the main query pack. This query finds instances of cookies being set without the `Secure`, `HttpOnly`, or `SameSite` attributes set to secure values. \ No newline at end of file +## 1.2.0 + +### New Queries + +* The `py/cookie-injection` query, originally contributed to the experimental query pack by @jorgectf, has been promoted to the main query pack. This query finds instances of cookies being set without the `Secure`, `HttpOnly`, or `SameSite` attributes set to secure values. diff --git a/python/ql/src/change-notes/released/1.2.1.md b/python/ql/src/change-notes/released/1.2.1.md new file mode 100644 index 00000000000..67aaa1465fd --- /dev/null +++ b/python/ql/src/change-notes/released/1.2.1.md @@ -0,0 +1,3 @@ +## 1.2.1 + +No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.2.2.md b/python/ql/src/change-notes/released/1.2.2.md new file mode 100644 index 00000000000..045d88e8817 --- /dev/null +++ b/python/ql/src/change-notes/released/1.2.2.md @@ -0,0 +1,5 @@ +## 1.2.2 + +### Minor Analysis Improvements + +* The `py/clear-text-logging-sensitive-data` and `py/clear-text-storage-sensitive-data` queries have been updated to exclude the `certificate` classification of sensitive sources, which often do not contain sensitive data. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 2ac15439f56..0a70a9a01a7 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.0 +lastReleaseVersion: 1.2.2 diff --git a/python/ql/src/experimental/Security/CWE-346/CorsBad.py b/python/ql/src/experimental/Security/CWE-346/CorsBad.py new file mode 100644 index 00000000000..74bd721b8ca --- /dev/null +++ b/python/ql/src/experimental/Security/CWE-346/CorsBad.py @@ -0,0 +1,9 @@ +import cherrypy + +def bad(): + request = cherrypy.request + validCors = "domain.com" + if request.method in ['POST', 'PUT', 'PATCH', 'DELETE']: + origin = request.headers.get('Origin', None) + if origin.startswith(validCors): + print("Origin Valid") \ No newline at end of file diff --git a/python/ql/src/experimental/Security/CWE-346/CorsBypass.qhelp b/python/ql/src/experimental/Security/CWE-346/CorsBypass.qhelp new file mode 100644 index 00000000000..5082fcc23aa --- /dev/null +++ b/python/ql/src/experimental/Security/CWE-346/CorsBypass.qhelp @@ -0,0 +1,28 @@ + + + +

    Cross-origin resource sharing policy may be bypassed due to incorrect checks like the string.startswith call.

    +
    + +

    Use a more stronger check to test for CORS policy bypass.

    +
    + + +

    Most Python frameworks provide a mechanism for testing origins and performing CORS checks. + For example, consider the code snippet below, origin is compared using a + startswith call against a list of whitelisted origins. This check can be bypassed + easily by origin like domain.com.baddomain.com +

    + +

    This can be prevented by comparing the origin in a manner shown below. +

    + + +
    + + +
  • PortsSwigger : Cross-origin resource + sharing (CORS)
  • +
  • Related CVE: CVE-2022-3457.
  • +
    +
    \ No newline at end of file diff --git a/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql b/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql new file mode 100644 index 00000000000..4b79b97ff4a --- /dev/null +++ b/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql @@ -0,0 +1,97 @@ +/** + * @name Cross Origin Resource Sharing(CORS) Policy Bypass + * @description Checking user supplied origin headers using weak comparators like 'string.startswith' may lead to CORS policy bypass. + * @kind path-problem + * @problem.severity warning + * @id py/cors-bypass + * @tags security + * externa/cwe/CWE-346 + */ + +import python +import semmle.python.ApiGraphs +import semmle.python.dataflow.new.TaintTracking +import semmle.python.Flow +import semmle.python.dataflow.new.RemoteFlowSources + +/** + * Returns true if the control flow node may be useful in the current context. + * + * Ideally for more completeness, we should alert on every `startswith` call and every remote flow source which gets partailly checked. But, as this can lead to lots of FPs, we apply heuristics to filter some calls. This predicate provides logic for this filteration. + */ +private predicate maybeInteresting(ControlFlowNode c) { + // Check if the name of the variable which calls the function matches the heuristic. + // This would typically occur at the sink. + // This should deal with cases like + // `origin.startswith("bla")` + heuristics(c.(CallNode).getFunction().(AttrNode).getObject().(NameNode).getId()) + or + // Check if the name of the variable passed as an argument to the functions matches the heuristic. This would typically occur at the sink. + // This should deal with cases like + // `bla.startswith(origin)` + heuristics(c.(CallNode).getArg(0).(NameNode).getId()) + or + // Check if the value gets written to any interesting variable. This would typically occur at the source. + // This should deal with cases like + // `origin = request.headers.get('My-custom-header')` + exists(Variable v | heuristics(v.getId()) | c.getASuccessor*().getNode() = v.getAStore()) +} + +private class StringStartswithCall extends ControlFlowNode { + StringStartswithCall() { this.(CallNode).getFunction().(AttrNode).getName() = "startswith" } +} + +bindingset[s] +predicate heuristics(string s) { s.matches(["%origin%", "%cors%"]) } + +/** + * A member of the `cherrypy.request` class taken as a `RemoteFlowSource`. + */ +class CherryPyRequest extends RemoteFlowSource::Range { + CherryPyRequest() { + this = + API::moduleImport("cherrypy") + .getMember("request") + .getMember([ + "charset", "content_type", "filename", "fp", "name", "params", "headers", "length", + ]) + .asSource() + } + + override string getSourceType() { result = "cherrypy.request" } +} + +module CorsBypassConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { node instanceof RemoteFlowSource } + + predicate isSink(DataFlow::Node node) { + exists(StringStartswithCall s | + node.asCfgNode() = s.(CallNode).getArg(0) or + node.asCfgNode() = s.(CallNode).getFunction().(AttrNode).getObject() + ) + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(API::CallNode c, API::Node n | + n = API::moduleImport("cherrypy").getMember("request").getMember("headers") and + c = n.getMember("get").getACall() + | + c.getReturn().asSource() = node2 and n.asSource() = node1 + ) + } +} + +module CorsFlow = TaintTracking::Global; + +import CorsFlow::PathGraph + +from CorsFlow::PathNode source, CorsFlow::PathNode sink +where + CorsFlow::flowPath(source, sink) and + ( + maybeInteresting(source.getNode().asCfgNode()) + or + maybeInteresting(sink.getNode().asCfgNode()) + ) +select sink, source, sink, + "Potentially incorrect string comparison which could lead to a CORS bypass." diff --git a/python/ql/src/experimental/Security/CWE-346/CorsGood.py b/python/ql/src/experimental/Security/CWE-346/CorsGood.py new file mode 100644 index 00000000000..7cd4039c0c3 --- /dev/null +++ b/python/ql/src/experimental/Security/CWE-346/CorsGood.py @@ -0,0 +1,9 @@ +import cherrypy + +def good(): + request = cherrypy.request + validOrigin = "domain.com" + if request.method in ['POST', 'PUT', 'PATCH', 'DELETE']: + origin = request.headers.get('Origin', None) + if origin == validOrigin: + print("Origin Valid") \ No newline at end of file diff --git a/python/ql/src/experimental/semmle/python/Concepts.qll b/python/ql/src/experimental/semmle/python/Concepts.qll index d9bb9797c63..0e4bd6441e9 100644 --- a/python/ql/src/experimental/semmle/python/Concepts.qll +++ b/python/ql/src/experimental/semmle/python/Concepts.qll @@ -188,9 +188,6 @@ module LdapBind { * Holds if the binding process use SSL. */ abstract predicate useSsl(); - - /** DEPRECATED: Alias for useSsl */ - deprecated predicate useSSL() { this.useSsl() } } } @@ -215,9 +212,6 @@ class LdapBind extends DataFlow::Node instanceof LdapBind::Range { * Holds if the binding process use SSL. */ predicate useSsl() { super.useSsl() } - - /** DEPRECATED: Alias for useSsl */ - deprecated predicate useSSL() { this.useSsl() } } /** Provides classes for modeling SQL sanitization libraries. */ diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index d244f5dd13d..17a8639b416 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.1.1-dev +version: 1.2.3-dev groups: - python - queries diff --git a/python/ql/test/2/extractor-tests/hidden/options b/python/ql/test/2/extractor-tests/hidden/options index 86ff17933db..2cc029e55e3 100644 --- a/python/ql/test/2/extractor-tests/hidden/options +++ b/python/ql/test/2/extractor-tests/hidden/options @@ -1,2 +1 @@ -semmle-extractor-options: -R . -p . --filter exclude:**/src_archive/** - +semmle-extractor-options: -R . -p . --filter exclude:**/*.testproj/** diff --git a/python/ql/test/experimental/query-tests/Security/CWE-346/Cors.py b/python/ql/test/experimental/query-tests/Security/CWE-346/Cors.py new file mode 100644 index 00000000000..cc12e1273fb --- /dev/null +++ b/python/ql/test/experimental/query-tests/Security/CWE-346/Cors.py @@ -0,0 +1,17 @@ +import cherrypy + +def bad(): + request = cherrypy.request + validCors = "domain.com" + if request.method in ['POST', 'PUT', 'PATCH', 'DELETE']: + origin = request.headers.get('Origin', None) + if origin.startswith(validCors): + print("Origin Valid") + +def good(): + request = cherrypy.request + validOrigin = "domain.com" + if request.method in ['POST', 'PUT', 'PATCH', 'DELETE']: + origin = request.headers.get('Origin', None) + if origin == validOrigin: + print("Origin Valid") \ No newline at end of file diff --git a/python/ql/test/experimental/query-tests/Security/CWE-346/CorsBypass.expected b/python/ql/test/experimental/query-tests/Security/CWE-346/CorsBypass.expected new file mode 100644 index 00000000000..32d807c6f6e --- /dev/null +++ b/python/ql/test/experimental/query-tests/Security/CWE-346/CorsBypass.expected @@ -0,0 +1,13 @@ +edges +| Cors.py:7:9:7:14 | ControlFlowNode for origin | Cors.py:8:12:8:17 | ControlFlowNode for origin | provenance | | +| Cors.py:7:18:7:32 | ControlFlowNode for Attribute | Cors.py:7:18:7:52 | ControlFlowNode for Attribute() | provenance | Config | +| Cors.py:7:18:7:32 | ControlFlowNode for Attribute | Cors.py:7:18:7:52 | ControlFlowNode for Attribute() | provenance | dict.get | +| Cors.py:7:18:7:52 | ControlFlowNode for Attribute() | Cors.py:7:9:7:14 | ControlFlowNode for origin | provenance | | +nodes +| Cors.py:7:9:7:14 | ControlFlowNode for origin | semmle.label | ControlFlowNode for origin | +| Cors.py:7:18:7:32 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| Cors.py:7:18:7:52 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| Cors.py:8:12:8:17 | ControlFlowNode for origin | semmle.label | ControlFlowNode for origin | +subpaths +#select +| Cors.py:8:12:8:17 | ControlFlowNode for origin | Cors.py:7:18:7:32 | ControlFlowNode for Attribute | Cors.py:8:12:8:17 | ControlFlowNode for origin | Potentially incorrect string comparison which could lead to a CORS bypass. | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-346/CorsBypass.qlref b/python/ql/test/experimental/query-tests/Security/CWE-346/CorsBypass.qlref new file mode 100644 index 00000000000..b652fd93088 --- /dev/null +++ b/python/ql/test/experimental/query-tests/Security/CWE-346/CorsBypass.qlref @@ -0,0 +1 @@ +experimental/Security/CWE-346/CorsBypass.ql \ No newline at end of file diff --git a/python/ql/test/extractor-tests/exo_path/options b/python/ql/test/extractor-tests/exo_path/options index ecf6d4020b3..507d32b9301 100644 --- a/python/ql/test/extractor-tests/exo_path/options +++ b/python/ql/test/extractor-tests/exo_path/options @@ -1 +1 @@ -semmle-extractor-options: --path path1 -p path2 -R . --filter exclude:**/src_archive/** +semmle-extractor-options: --path path1 -p path2 -R . --filter exclude:**/*.testproj/** diff --git a/python/ql/test/extractor-tests/filter-option/options b/python/ql/test/extractor-tests/filter-option/options index 57041fd2fbf..08fcc9d231c 100644 --- a/python/ql/test/extractor-tests/filter-option/options +++ b/python/ql/test/extractor-tests/filter-option/options @@ -1 +1 @@ -semmle-extractor-options: -v --filter include:**/*.py --filter exclude:**/*test.py -R . --filter exclude:**/foo/exclude_this.py --filter include:**/include*.py --filter exclude:**/src_archive/** +semmle-extractor-options: -v --filter include:**/*.py --filter exclude:**/*test.py -R . --filter exclude:**/foo/exclude_this.py --filter include:**/include*.py --filter exclude:**/*.testproj/** diff --git a/python/ql/test/extractor-tests/flags/options b/python/ql/test/extractor-tests/flags/options index 49900dad588..63f0f76b3a6 100644 --- a/python/ql/test/extractor-tests/flags/options +++ b/python/ql/test/extractor-tests/flags/options @@ -1 +1 @@ -semmle-extractor-options: -R . --path no-such-path --filter exclude:**/src_archive/** --respect-init=False --max-context-cost=11 --dont-split-graph +semmle-extractor-options: -R . --path no-such-path --filter exclude:**/*.testproj/** --respect-init=False --max-context-cost=11 --dont-split-graph diff --git a/python/ql/test/extractor-tests/identical_contents/options b/python/ql/test/extractor-tests/identical_contents/options index 7334c10462b..dc2c769ec2f 100644 --- a/python/ql/test/extractor-tests/identical_contents/options +++ b/python/ql/test/extractor-tests/identical_contents/options @@ -1 +1 @@ -semmle-extractor-options: -R . --path no-such-path --filter exclude:**/src_archive/** +semmle-extractor-options: -R . --path no-such-path --filter exclude:**/*.testproj/** diff --git a/python/ql/test/extractor-tests/paths/options b/python/ql/test/extractor-tests/paths/options index 66a02984180..eeb6d643dc6 100644 --- a/python/ql/test/extractor-tests/paths/options +++ b/python/ql/test/extractor-tests/paths/options @@ -1 +1 @@ -semmle-extractor-options: -R . -p non-such --filter exclude:**/src_archive/** +semmle-extractor-options: -R . -p non-such --filter exclude:**/*.testproj/** diff --git a/python/ql/test/extractor-tests/thrift/options b/python/ql/test/extractor-tests/thrift/options index a8bc53ffa42..103fc735a57 100644 --- a/python/ql/test/extractor-tests/thrift/options +++ b/python/ql/test/extractor-tests/thrift/options @@ -1 +1 @@ -semmle-extractor-options: -R . --filter=include:**/*.thrift --filter exclude:**/src_archive/** +semmle-extractor-options: -R . --filter=include:**/*.thrift --filter exclude:**/*.testproj/** diff --git a/python/ql/test/library-tests/frameworks/django-orm/ReflectedXss.expected b/python/ql/test/library-tests/frameworks/django-orm/ReflectedXss.expected index fb9a00ca180..938e4d2c4e9 100644 --- a/python/ql/test/library-tests/frameworks/django-orm/ReflectedXss.expected +++ b/python/ql/test/library-tests/frameworks/django-orm/ReflectedXss.expected @@ -16,7 +16,6 @@ edges | testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:43:49:43:54 | ControlFlowNode for person [Attribute name] | provenance | | | testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute age] | testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute age] | provenance | | | testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute name] | testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute name] | provenance | | -| testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | provenance | | | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | testapp/orm_security_tests.py:44:29:44:37 | ControlFlowNode for resp_text | provenance | | | testapp/orm_security_tests.py:43:49:43:54 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:43:49:43:59 | ControlFlowNode for Attribute | provenance | | | testapp/orm_security_tests.py:43:49:43:59 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | provenance | | diff --git a/python/ql/test/library-tests/modules/spurious_init/options b/python/ql/test/library-tests/modules/spurious_init/options index dfcf3662523..eb7388833b4 100644 --- a/python/ql/test/library-tests/modules/spurious_init/options +++ b/python/ql/test/library-tests/modules/spurious_init/options @@ -1 +1 @@ -semmle-extractor-options: -R . --filter exclude:**/src_archive/** +semmle-extractor-options: -R . --filter exclude:**/*.testproj/** diff --git a/python/ql/test/library-tests/thrift/options b/python/ql/test/library-tests/thrift/options index a8bc53ffa42..103fc735a57 100644 --- a/python/ql/test/library-tests/thrift/options +++ b/python/ql/test/library-tests/thrift/options @@ -1 +1 @@ -semmle-extractor-options: -R . --filter=include:**/*.thrift --filter exclude:**/src_archive/** +semmle-extractor-options: -R . --filter=include:**/*.thrift --filter exclude:**/*.testproj/** diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/CleartextLogging.expected b/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/CleartextLogging.expected index 1322f5b80e6..dca1a33e73a 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/CleartextLogging.expected +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/CleartextLogging.expected @@ -30,7 +30,6 @@ nodes | test.py:23:58:23:65 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | | test.py:27:40:27:47 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | | test.py:30:58:30:65 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | -| test.py:34:30:34:39 | ControlFlowNode for get_cert() | semmle.label | ControlFlowNode for get_cert() | | test.py:37:11:37:24 | ControlFlowNode for get_password() | semmle.label | ControlFlowNode for get_password() | | test.py:39:22:39:35 | ControlFlowNode for get_password() | semmle.label | ControlFlowNode for get_password() | | test.py:40:22:40:35 | ControlFlowNode for get_password() | semmle.label | ControlFlowNode for get_password() | @@ -73,7 +72,6 @@ subpaths | test.py:23:58:23:65 | ControlFlowNode for password | test.py:19:16:19:29 | ControlFlowNode for get_password() | test.py:23:58:23:65 | ControlFlowNode for password | This expression logs $@ as clear text. | test.py:19:16:19:29 | ControlFlowNode for get_password() | sensitive data (password) | | test.py:27:40:27:47 | ControlFlowNode for password | test.py:19:16:19:29 | ControlFlowNode for get_password() | test.py:27:40:27:47 | ControlFlowNode for password | This expression logs $@ as clear text. | test.py:19:16:19:29 | ControlFlowNode for get_password() | sensitive data (password) | | test.py:30:58:30:65 | ControlFlowNode for password | test.py:19:16:19:29 | ControlFlowNode for get_password() | test.py:30:58:30:65 | ControlFlowNode for password | This expression logs $@ as clear text. | test.py:19:16:19:29 | ControlFlowNode for get_password() | sensitive data (password) | -| test.py:34:30:34:39 | ControlFlowNode for get_cert() | test.py:34:30:34:39 | ControlFlowNode for get_cert() | test.py:34:30:34:39 | ControlFlowNode for get_cert() | This expression logs $@ as clear text. | test.py:34:30:34:39 | ControlFlowNode for get_cert() | sensitive data (certificate) | | test.py:37:11:37:24 | ControlFlowNode for get_password() | test.py:37:11:37:24 | ControlFlowNode for get_password() | test.py:37:11:37:24 | ControlFlowNode for get_password() | This expression logs $@ as clear text. | test.py:37:11:37:24 | ControlFlowNode for get_password() | sensitive data (password) | | test.py:39:22:39:35 | ControlFlowNode for get_password() | test.py:39:22:39:35 | ControlFlowNode for get_password() | test.py:39:22:39:35 | ControlFlowNode for get_password() | This expression logs $@ as clear text. | test.py:39:22:39:35 | ControlFlowNode for get_password() | sensitive data (password) | | test.py:40:22:40:35 | ControlFlowNode for get_password() | test.py:40:22:40:35 | ControlFlowNode for get_password() | test.py:40:22:40:35 | ControlFlowNode for get_password() | This expression logs $@ as clear text. | test.py:40:22:40:35 | ControlFlowNode for get_password() | sensitive data (password) | diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/test.py b/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/test.py index 94a8c9db836..d8d70c56bd5 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/test.py +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/test.py @@ -31,7 +31,7 @@ def log_password(): def log_cert(): - logging.debug("Cert=%s", get_cert()) # NOT OK + logging.debug("Cert=%s", get_cert()) # OK def print_password(): print(get_password()) # NOT OK @@ -52,8 +52,8 @@ def log_private(): print(passportNo) # NOT OK def log2(post_code, zipCode, home_address): - print(post_code) # NOT OK, but NOT FOUND - "code" is treated as enxrypted and thus not sensitive - print(zipCode) # NOT OK, but NOT FOUND - "code" is treated as enxrypted and thus not sensitive + print(post_code) # NOT OK, but NOT FOUND - "code" is treated as encrypted and thus not sensitive + print(zipCode) # NOT OK, but NOT FOUND - "code" is treated as encrypted and thus not sensitive print(home_address) # NOT OK def log3(user_latitude, user_longitude): diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/CleartextStorage.expected b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/CleartextStorage.expected index 6b252ea7833..588cfae32ef 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/CleartextStorage.expected +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/CleartextStorage.expected @@ -1,16 +1,16 @@ edges -| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:12:21:12:24 | ControlFlowNode for cert | provenance | | -| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:13:22:13:41 | ControlFlowNode for Attribute() | provenance | | -| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:15:26:15:29 | ControlFlowNode for cert | provenance | | -| test.py:9:12:9:21 | ControlFlowNode for get_cert() | test.py:9:5:9:8 | ControlFlowNode for cert | provenance | | +| test.py:9:5:9:12 | ControlFlowNode for password | test.py:12:21:12:28 | ControlFlowNode for password | provenance | | +| test.py:9:5:9:12 | ControlFlowNode for password | test.py:13:22:13:45 | ControlFlowNode for Attribute() | provenance | | +| test.py:9:5:9:12 | ControlFlowNode for password | test.py:15:26:15:33 | ControlFlowNode for password | provenance | | +| test.py:9:16:9:29 | ControlFlowNode for get_password() | test.py:9:5:9:12 | ControlFlowNode for password | provenance | | nodes -| test.py:9:5:9:8 | ControlFlowNode for cert | semmle.label | ControlFlowNode for cert | -| test.py:9:12:9:21 | ControlFlowNode for get_cert() | semmle.label | ControlFlowNode for get_cert() | -| test.py:12:21:12:24 | ControlFlowNode for cert | semmle.label | ControlFlowNode for cert | -| test.py:13:22:13:41 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | -| test.py:15:26:15:29 | ControlFlowNode for cert | semmle.label | ControlFlowNode for cert | +| test.py:9:5:9:12 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | +| test.py:9:16:9:29 | ControlFlowNode for get_password() | semmle.label | ControlFlowNode for get_password() | +| test.py:12:21:12:28 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | +| test.py:13:22:13:45 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| test.py:15:26:15:33 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | subpaths #select -| test.py:12:21:12:24 | ControlFlowNode for cert | test.py:9:12:9:21 | ControlFlowNode for get_cert() | test.py:12:21:12:24 | ControlFlowNode for cert | This expression stores $@ as clear text. | test.py:9:12:9:21 | ControlFlowNode for get_cert() | sensitive data (certificate) | -| test.py:13:22:13:41 | ControlFlowNode for Attribute() | test.py:9:12:9:21 | ControlFlowNode for get_cert() | test.py:13:22:13:41 | ControlFlowNode for Attribute() | This expression stores $@ as clear text. | test.py:9:12:9:21 | ControlFlowNode for get_cert() | sensitive data (certificate) | -| test.py:15:26:15:29 | ControlFlowNode for cert | test.py:9:12:9:21 | ControlFlowNode for get_cert() | test.py:15:26:15:29 | ControlFlowNode for cert | This expression stores $@ as clear text. | test.py:9:12:9:21 | ControlFlowNode for get_cert() | sensitive data (certificate) | +| test.py:12:21:12:28 | ControlFlowNode for password | test.py:9:16:9:29 | ControlFlowNode for get_password() | test.py:12:21:12:28 | ControlFlowNode for password | This expression stores $@ as clear text. | test.py:9:16:9:29 | ControlFlowNode for get_password() | sensitive data (password) | +| test.py:13:22:13:45 | ControlFlowNode for Attribute() | test.py:9:16:9:29 | ControlFlowNode for get_password() | test.py:13:22:13:45 | ControlFlowNode for Attribute() | This expression stores $@ as clear text. | test.py:9:16:9:29 | ControlFlowNode for get_password() | sensitive data (password) | +| test.py:15:26:15:33 | ControlFlowNode for password | test.py:9:16:9:29 | ControlFlowNode for get_password() | test.py:15:26:15:33 | ControlFlowNode for password | This expression stores $@ as clear text. | test.py:9:16:9:29 | ControlFlowNode for get_password() | sensitive data (password) | diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/test.py b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/test.py index 980a24e274d..91b7fb7e6c2 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/test.py +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/test.py @@ -1,15 +1,15 @@ import pathlib -def get_cert(): - return "" +def get_password(): + return "password" def write_password(filename): - cert = get_cert() + password = get_password() path = pathlib.Path(filename) - path.write_text(cert) # NOT OK - path.write_bytes(cert.encode("utf-8")) # NOT OK + path.write_text(password) # NOT OK + path.write_bytes(password.encode("utf-8")) # NOT OK - path.open("w").write(cert) # NOT OK + path.open("w").write(password) # NOT OK diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/CleartextStorage.expected b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/CleartextStorage.expected index eac0bd37b1b..c3c1206ce92 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/CleartextStorage.expected +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/CleartextStorage.expected @@ -3,10 +3,10 @@ edges | password_in_cookie.py:7:16:7:43 | ControlFlowNode for Attribute() | password_in_cookie.py:7:5:7:12 | ControlFlowNode for password | provenance | | | password_in_cookie.py:14:5:14:12 | ControlFlowNode for password | password_in_cookie.py:16:33:16:40 | ControlFlowNode for password | provenance | | | password_in_cookie.py:14:16:14:43 | ControlFlowNode for Attribute() | password_in_cookie.py:14:5:14:12 | ControlFlowNode for password | provenance | | -| test.py:6:5:6:8 | ControlFlowNode for cert | test.py:8:20:8:23 | ControlFlowNode for cert | provenance | | -| test.py:6:5:6:8 | ControlFlowNode for cert | test.py:9:9:9:13 | ControlFlowNode for lines | provenance | | -| test.py:6:12:6:21 | ControlFlowNode for get_cert() | test.py:6:5:6:8 | ControlFlowNode for cert | provenance | | -| test.py:9:9:9:13 | ControlFlowNode for lines | test.py:10:25:10:29 | ControlFlowNode for lines | provenance | | +| test.py:15:5:15:12 | ControlFlowNode for password | test.py:17:20:17:27 | ControlFlowNode for password | provenance | | +| test.py:15:5:15:12 | ControlFlowNode for password | test.py:18:9:18:13 | ControlFlowNode for lines | provenance | | +| test.py:15:16:15:29 | ControlFlowNode for get_password() | test.py:15:5:15:12 | ControlFlowNode for password | provenance | | +| test.py:18:9:18:13 | ControlFlowNode for lines | test.py:19:25:19:29 | ControlFlowNode for lines | provenance | | nodes | password_in_cookie.py:7:5:7:12 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | | password_in_cookie.py:7:16:7:43 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | @@ -14,14 +14,14 @@ nodes | password_in_cookie.py:14:5:14:12 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | | password_in_cookie.py:14:16:14:43 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | password_in_cookie.py:16:33:16:40 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | -| test.py:6:5:6:8 | ControlFlowNode for cert | semmle.label | ControlFlowNode for cert | -| test.py:6:12:6:21 | ControlFlowNode for get_cert() | semmle.label | ControlFlowNode for get_cert() | -| test.py:8:20:8:23 | ControlFlowNode for cert | semmle.label | ControlFlowNode for cert | -| test.py:9:9:9:13 | ControlFlowNode for lines | semmle.label | ControlFlowNode for lines | -| test.py:10:25:10:29 | ControlFlowNode for lines | semmle.label | ControlFlowNode for lines | +| test.py:15:5:15:12 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | +| test.py:15:16:15:29 | ControlFlowNode for get_password() | semmle.label | ControlFlowNode for get_password() | +| test.py:17:20:17:27 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | +| test.py:18:9:18:13 | ControlFlowNode for lines | semmle.label | ControlFlowNode for lines | +| test.py:19:25:19:29 | ControlFlowNode for lines | semmle.label | ControlFlowNode for lines | subpaths #select | password_in_cookie.py:9:33:9:40 | ControlFlowNode for password | password_in_cookie.py:7:16:7:43 | ControlFlowNode for Attribute() | password_in_cookie.py:9:33:9:40 | ControlFlowNode for password | This expression stores $@ as clear text. | password_in_cookie.py:7:16:7:43 | ControlFlowNode for Attribute() | sensitive data (password) | | password_in_cookie.py:16:33:16:40 | ControlFlowNode for password | password_in_cookie.py:14:16:14:43 | ControlFlowNode for Attribute() | password_in_cookie.py:16:33:16:40 | ControlFlowNode for password | This expression stores $@ as clear text. | password_in_cookie.py:14:16:14:43 | ControlFlowNode for Attribute() | sensitive data (password) | -| test.py:8:20:8:23 | ControlFlowNode for cert | test.py:6:12:6:21 | ControlFlowNode for get_cert() | test.py:8:20:8:23 | ControlFlowNode for cert | This expression stores $@ as clear text. | test.py:6:12:6:21 | ControlFlowNode for get_cert() | sensitive data (certificate) | -| test.py:10:25:10:29 | ControlFlowNode for lines | test.py:6:12:6:21 | ControlFlowNode for get_cert() | test.py:10:25:10:29 | ControlFlowNode for lines | This expression stores $@ as clear text. | test.py:6:12:6:21 | ControlFlowNode for get_cert() | sensitive data (certificate) | +| test.py:17:20:17:27 | ControlFlowNode for password | test.py:15:16:15:29 | ControlFlowNode for get_password() | test.py:17:20:17:27 | ControlFlowNode for password | This expression stores $@ as clear text. | test.py:15:16:15:29 | ControlFlowNode for get_password() | sensitive data (password) | +| test.py:19:25:19:29 | ControlFlowNode for lines | test.py:15:16:15:29 | ControlFlowNode for get_password() | test.py:19:25:19:29 | ControlFlowNode for lines | This expression stores $@ as clear text. | test.py:15:16:15:29 | ControlFlowNode for get_password() | sensitive data (password) | diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/test.py b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/test.py index f232f1a2ad6..6d04aa4b170 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/test.py +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/test.py @@ -1,12 +1,21 @@ def get_cert(): return "" +def get_password(): + return "password" def write_cert(filename): cert = get_cert() with open(filename, "w") as file: - file.write(cert) # NOT OK + file.write(cert) # OK lines = [cert + "\n"] + file.writelines(lines) # OK + +def write_password(filename): + password = get_password() + with open(filename, "w") as file: + file.write(password) # NOT OK + lines = [password + "\n"] file.writelines(lines) # NOT OK def FPs(): diff --git a/ql/Cargo.lock b/ql/Cargo.lock index ed04a4a8553..67a3f78fb41 100644 Binary files a/ql/Cargo.lock and b/ql/Cargo.lock differ diff --git a/ql/buramu/Cargo.toml b/ql/buramu/Cargo.toml index 741a9bc4337..03fdb49116a 100644 --- a/ql/buramu/Cargo.toml +++ b/ql/buramu/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "buramu" version = "0.1.0" -edition = "2018" +edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/ql/buramu/tree-sitter-blame/Cargo.toml b/ql/buramu/tree-sitter-blame/Cargo.toml index 9ff12014224..f48145488a3 100644 --- a/ql/buramu/tree-sitter-blame/Cargo.toml +++ b/ql/buramu/tree-sitter-blame/Cargo.toml @@ -5,7 +5,7 @@ version = "0.0.1" keywords = ["incremental", "parsing", "blame"] categories = ["parsing", "text-editors"] repository = "https://github.com/tree-sitter/tree-sitter-blame" -edition = "2018" +edition = "2021" license = "MIT" build = "bindings/rust/build.rs" @@ -20,10 +20,8 @@ include = [ path = "bindings/rust/lib.rs" [dependencies] -tree-sitter = ">= 0.22.6" +tree-sitter-language = "0.1.0" +tree-sitter = ">= 0.23" [build-dependencies] cc = "1.0" - -[patch.crates-io] -tree-sitter = {git = "https://github.com/redsun82/tree-sitter.git", rev = "1f5c1112ceaa8fc6aff61d1852690407670d2a96"} diff --git a/ql/buramu/tree-sitter-blame/binding.gyp b/ql/buramu/tree-sitter-blame/binding.gyp index d6cc395af07..27f3613f039 100644 --- a/ql/buramu/tree-sitter-blame/binding.gyp +++ b/ql/buramu/tree-sitter-blame/binding.gyp @@ -2,18 +2,29 @@ "targets": [ { "target_name": "tree_sitter_blame_binding", + "dependencies": [ + " -#include "nan.h" +#include -using namespace v8; +typedef struct TSLanguage TSLanguage; -extern "C" TSLanguage * tree_sitter_blame(); +extern "C" TSLanguage *tree_sitter_blame(); -namespace { +// "tree-sitter", "language" hashed with BLAKE2 +const napi_type_tag LANGUAGE_TYPE_TAG = { + 0x8AF2E5212AD58ABF, 0xD5006CAD83ABBA16 +}; -NAN_METHOD(New) {} - -void Init(Local exports, Local module) { - Local tpl = Nan::New(New); - tpl->SetClassName(Nan::New("Language").ToLocalChecked()); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - - Local constructor = Nan::GetFunction(tpl).ToLocalChecked(); - Local instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked(); - Nan::SetInternalFieldPointer(instance, 0, tree_sitter_blame()); - - Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("blame").ToLocalChecked()); - Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); +Napi::Object Init(Napi::Env env, Napi::Object exports) { + exports["name"] = Napi::String::New(env, "blame"); + auto language = Napi::External::New(env, tree_sitter_blame()); + language.TypeTag(&LANGUAGE_TYPE_TAG); + exports["language"] = language; + return exports; } -NODE_MODULE(tree_sitter_blame_binding, Init) - -} // namespace +NODE_API_MODULE(tree_sitter_blame_binding, Init) diff --git a/ql/buramu/tree-sitter-blame/bindings/node/index.js b/ql/buramu/tree-sitter-blame/bindings/node/index.js index 23af3bb321c..6657bcf42de 100644 --- a/ql/buramu/tree-sitter-blame/bindings/node/index.js +++ b/ql/buramu/tree-sitter-blame/bindings/node/index.js @@ -1,18 +1,6 @@ -try { - module.exports = require("../../build/Release/tree_sitter_blame_binding"); -} catch (error1) { - if (error1.code !== 'MODULE_NOT_FOUND') { - throw error1; - } - try { - module.exports = require("../../build/Debug/tree_sitter_blame_binding"); - } catch (error2) { - if (error2.code !== 'MODULE_NOT_FOUND') { - throw error2; - } - throw error1 - } -} +const root = require("path").join(__dirname, "..", ".."); + +module.exports = require("node-gyp-build")(root); try { module.exports.nodeTypeInfo = require("../../src/node-types.json"); diff --git a/ql/buramu/tree-sitter-blame/bindings/rust/build.rs b/ql/buramu/tree-sitter-blame/bindings/rust/build.rs index c6061f09953..4cc26f5e0f8 100644 --- a/ql/buramu/tree-sitter-blame/bindings/rust/build.rs +++ b/ql/buramu/tree-sitter-blame/bindings/rust/build.rs @@ -7,6 +7,9 @@ fn main() { .flag_if_supported("-Wno-unused-parameter") .flag_if_supported("-Wno-unused-but-set-variable") .flag_if_supported("-Wno-trigraphs"); + #[cfg(target_env = "msvc")] + c_config.flag("-utf-8"); + let parser_path = src_dir.join("parser.c"); c_config.file(&parser_path); diff --git a/ql/buramu/tree-sitter-blame/bindings/rust/lib.rs b/ql/buramu/tree-sitter-blame/bindings/rust/lib.rs index 268243b164f..6a0362de7d7 100644 --- a/ql/buramu/tree-sitter-blame/bindings/rust/lib.rs +++ b/ql/buramu/tree-sitter-blame/bindings/rust/lib.rs @@ -1,13 +1,18 @@ -//! This crate provides blame language support for the [tree-sitter][] parsing library. +//! This crate provides Blame language support for the [tree-sitter][] parsing library. //! //! Typically, you will use the [language][language func] function to add this language to a //! tree-sitter [Parser][], and then use the parser to parse some code: //! -//! ``` -//! let code = ""; +//! ```ignore +//! let code = r#" +//! "#; //! let mut parser = tree_sitter::Parser::new(); -//! parser.set_language(tree_sitter_blame::language()).expect("Error loading blame grammar"); +//! let language = tree_sitter_blame::LANGUAGE; +//! parser +//! .set_language(&language.into()) +//! .expect("Error loading Blame parser"); // fails for some reason, so code block is ignored for now //! let tree = parser.parse(code, None).unwrap(); +//! assert!(!tree.root_node().has_error()); //! ``` //! //! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html @@ -15,30 +20,26 @@ //! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html //! [tree-sitter]: https://tree-sitter.github.io/ -use tree_sitter::Language; +use tree_sitter_language::LanguageFn; extern "C" { - fn tree_sitter_blame() -> Language; + fn tree_sitter_blame() -> *const (); } -/// Get the tree-sitter [Language][] for this grammar. -/// -/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -pub fn language() -> Language { - unsafe { tree_sitter_blame() } -} +/// The tree-sitter [`LanguageFn`] for this grammar. +pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_blame) }; /// The content of the [`node-types.json`][] file for this grammar. /// /// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types -pub const NODE_TYPES: &'static str = include_str!("../../src/node-types.json"); +pub const NODE_TYPES: &str = include_str!("../../src/node-types.json"); -// Uncomment these to include any queries that this grammar contains +// NOTE: uncomment these to include any queries that this grammar contains: -// pub const HIGHLIGHTS_QUERY: &'static str = include_str!("../../queries/highlights.scm"); -// pub const INJECTIONS_QUERY: &'static str = include_str!("../../queries/injections.scm"); -// pub const LOCALS_QUERY: &'static str = include_str!("../../queries/locals.scm"); -// pub const TAGS_QUERY: &'static str = include_str!("../../queries/tags.scm"); +// pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm"); +// pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm"); +// pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm"); +// pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm"); #[cfg(test)] mod tests { @@ -46,7 +47,7 @@ mod tests { fn test_can_load_grammar() { let mut parser = tree_sitter::Parser::new(); parser - .set_language(super::language()) - .expect("Error loading blame language"); + .set_language(&super::LANGUAGE.into()) + .expect("Error loading Blame parser"); } } diff --git a/ql/buramu/tree-sitter-blame/package.json b/ql/buramu/tree-sitter-blame/package.json index f9517c74da5..ace46ffbf7c 100644 --- a/ql/buramu/tree-sitter-blame/package.json +++ b/ql/buramu/tree-sitter-blame/package.json @@ -3,17 +3,46 @@ "version": "0.0.1", "description": "blame grammar for tree-sitter", "main": "bindings/node", + "types": "bindings/node", "keywords": [ "parsing", "incremental" ], + "files": [ + "grammar.js", + "binding.gyp", + "prebuilds/**", + "bindings/node/*", + "queries/*", + "src/**", + "*.wasm" + ], "dependencies": { - "nan": "^2.12.1" + "node-addon-api": "^8.0.0", + "node-gyp-build": "^4.8.1" + }, + "peerDependencies": { + "tree-sitter": "^0.23.0" + }, + "peerDependenciesMeta": { + "tree_sitter": { + "optional": true + } }, "devDependencies": { - "tree-sitter-cli": "^0.20.7" + "tree-sitter-cli": "^0.23.0", + "prebuildify": "^6.0.1" }, "scripts": { - "test": "tree-sitter test" - } -} + "install": "node-gyp-build", + "prestart": "tree-sitter build --wasm", + "start": "tree-sitter playground", + "test": "node --test bindings/node/*_test.js" + }, + "tree-sitter": [ + { + "scope": "source.blame", + "injection-regex": "^blame$" + } + ] +} \ No newline at end of file diff --git a/ql/buramu/tree-sitter-blame/src/grammar.json b/ql/buramu/tree-sitter-blame/src/grammar.json index 9001554fd16..d1a31f01200 100644 --- a/ql/buramu/tree-sitter-blame/src/grammar.json +++ b/ql/buramu/tree-sitter-blame/src/grammar.json @@ -123,4 +123,3 @@ "inline": [], "supertypes": [] } - diff --git a/ql/buramu/tree-sitter-blame/src/parser.c b/ql/buramu/tree-sitter-blame/src/parser.c index 4803597f566..364bc16c8b3 100644 --- a/ql/buramu/tree-sitter-blame/src/parser.c +++ b/ql/buramu/tree-sitter-blame/src/parser.c @@ -1,7 +1,6 @@ -#include +#include "tree_sitter/parser.h" #if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #endif @@ -16,7 +15,7 @@ #define MAX_ALIAS_SEQUENCE_LENGTH 4 #define PRODUCTION_ID_COUNT 14 -enum { +enum ts_symbol_identifiers { anon_sym_today_COLON = 1, anon_sym_file_COLON = 2, anon_sym_LF = 3, @@ -132,7 +131,7 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { }, }; -enum { +enum ts_field_identifiers { field_blame_entry = 1, field_date = 2, field_file_entry = 3, @@ -242,26 +241,21 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'f') ADVANCE(18); if (lookahead == 'l') ADVANCE(10); if (lookahead == 't') ADVANCE(23); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(0) + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') SKIP(0); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(48); END_STATE(); case 1: if (lookahead == '\n') ADVANCE(40); - if (lookahead == '\t' || - lookahead == '\r' || - lookahead == ' ') SKIP(1) + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') SKIP(1); END_STATE(); case 2: if (lookahead == ' ') ADVANCE(39); END_STATE(); case 3: if (lookahead == ' ') ADVANCE(43); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r') SKIP(3) + if (('\t' <= lookahead && lookahead <= '\r')) SKIP(3); if (('-' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || @@ -340,10 +334,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'y') ADVANCE(7); END_STATE(); case 28: - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(28) + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') SKIP(28); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); END_STATE(); case 29: @@ -371,10 +363,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (eof) ADVANCE(37); if (lookahead == 'f') ADVANCE(18); if (lookahead == 'l') ADVANCE(10); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(36) + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') SKIP(36); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(49); END_STATE(); case 37: @@ -623,25 +613,25 @@ static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file_entry, 3, .production_id = 6), + [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file_entry, 3, 0, 6), [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [9] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file_entry, 4, .production_id = 8), - [11] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_blame_entry, 2, .production_id = 9), + [9] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file_entry, 4, 0, 8), + [11] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_blame_entry, 2, 0, 9), [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [15] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_file_entry_repeat1, 2, .production_id = 10), - [17] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_file_entry_repeat1, 2, .production_id = 10), SHIFT_REPEAT(19), - [20] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_blame_entry, 3, .production_id = 12), - [22] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_blame_entry_repeat1, 2, .production_id = 13), - [24] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_blame_entry_repeat1, 2, .production_id = 13), SHIFT_REPEAT(11), - [27] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_blame_info, 1, .production_id = 1), + [15] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_file_entry_repeat1, 2, 0, 10), + [17] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_file_entry_repeat1, 2, 0, 10), SHIFT_REPEAT(19), + [20] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_blame_entry, 3, 0, 12), + [22] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_blame_entry_repeat1, 2, 0, 13), + [24] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_blame_entry_repeat1, 2, 0, 13), SHIFT_REPEAT(11), + [27] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_blame_info, 1, 0, 1), [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_blame_info, 2, .production_id = 4), - [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_blame_info_repeat1, 2, .production_id = 5), - [35] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_blame_info_repeat1, 2, .production_id = 5), SHIFT_REPEAT(17), - [38] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_blame_entry_repeat1, 1, .production_id = 11), - [40] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_file_entry_repeat1, 1, .production_id = 7), - [42] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__today, 2, .production_id = 2), - [44] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_blame_info_repeat1, 1, .production_id = 3), + [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_blame_info, 2, 0, 4), + [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_blame_info_repeat1, 2, 0, 5), + [35] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_blame_info_repeat1, 2, 0, 5), SHIFT_REPEAT(17), + [38] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_blame_entry_repeat1, 1, 0, 11), + [40] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_file_entry_repeat1, 1, 0, 7), + [42] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__today, 2, 0, 2), + [44] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_blame_info_repeat1, 1, 0, 3), [46] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), [48] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), [50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), @@ -652,11 +642,15 @@ static const TSParseActionEntry ts_parse_actions[] = { #ifdef __cplusplus extern "C" { #endif -#ifdef _WIN32 -#define extern __declspec(dllexport) +#ifdef TREE_SITTER_HIDE_SYMBOLS +#define TS_PUBLIC +#elif defined(_WIN32) +#define TS_PUBLIC __declspec(dllexport) +#else +#define TS_PUBLIC __attribute__((visibility("default"))) #endif -extern const TSLanguage *tree_sitter_blame(void) { +TS_PUBLIC const TSLanguage *tree_sitter_blame(void) { static const TSLanguage language = { .version = LANGUAGE_VERSION, .symbol_count = SYMBOL_COUNT, diff --git a/ql/buramu/tree-sitter-blame/src/tree_sitter/parser.h b/ql/buramu/tree-sitter-blame/src/tree_sitter/parser.h index 2b14ac1046b..799f599bd4e 100644 --- a/ql/buramu/tree-sitter-blame/src/tree_sitter/parser.h +++ b/ql/buramu/tree-sitter-blame/src/tree_sitter/parser.h @@ -13,9 +13,8 @@ extern "C" { #define ts_builtin_sym_end 0 #define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024 -typedef uint16_t TSStateId; - #ifndef TREE_SITTER_API_H_ +typedef uint16_t TSStateId; typedef uint16_t TSSymbol; typedef uint16_t TSFieldId; typedef struct TSLanguage TSLanguage; @@ -48,6 +47,7 @@ struct TSLexer { uint32_t (*get_column)(TSLexer *); bool (*is_at_included_range_start)(const TSLexer *); bool (*eof)(const TSLexer *); + void (*log)(const TSLexer *, const char *, ...); }; typedef enum { @@ -87,6 +87,11 @@ typedef union { } entry; } TSParseActionEntry; +typedef struct { + int32_t start; + int32_t end; +} TSCharacterRange; + struct TSLanguage { uint32_t version; uint32_t symbol_count; @@ -126,13 +131,38 @@ struct TSLanguage { const TSStateId *primary_state_ids; }; +static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) { + uint32_t index = 0; + uint32_t size = len - index; + while (size > 1) { + uint32_t half_size = size / 2; + uint32_t mid_index = index + half_size; + TSCharacterRange *range = &ranges[mid_index]; + if (lookahead >= range->start && lookahead <= range->end) { + return true; + } else if (lookahead > range->end) { + index = mid_index; + } + size -= half_size; + } + TSCharacterRange *range = &ranges[index]; + return (lookahead >= range->start && lookahead <= range->end); +} + /* * Lexer Macros */ +#ifdef _MSC_VER +#define UNUSED __pragma(warning(suppress : 4101)) +#else +#define UNUSED __attribute__((unused)) +#endif + #define START_LEXER() \ bool result = false; \ bool skip = false; \ + UNUSED \ bool eof = false; \ int32_t lookahead; \ goto start; \ @@ -148,6 +178,17 @@ struct TSLanguage { goto next_state; \ } +#define ADVANCE_MAP(...) \ + { \ + static const uint16_t map[] = { __VA_ARGS__ }; \ + for (uint32_t i = 0; i < sizeof(map) / sizeof(map[0]); i += 2) { \ + if (map[i] == lookahead) { \ + state = map[i + 1]; \ + goto next_state; \ + } \ + } \ + } + #define SKIP(state_value) \ { \ skip = true; \ @@ -166,7 +207,7 @@ struct TSLanguage { * Parse Table Macros */ -#define SMALL_STATE(id) id - LARGE_STATE_COUNT +#define SMALL_STATE(id) ((id) - LARGE_STATE_COUNT) #define STATE(id) id @@ -176,7 +217,7 @@ struct TSLanguage { {{ \ .shift = { \ .type = TSParseActionTypeShift, \ - .state = state_value \ + .state = (state_value) \ } \ }} @@ -184,7 +225,7 @@ struct TSLanguage { {{ \ .shift = { \ .type = TSParseActionTypeShift, \ - .state = state_value, \ + .state = (state_value), \ .repetition = true \ } \ }} @@ -197,14 +238,15 @@ struct TSLanguage { } \ }} -#define REDUCE(symbol_val, child_count_val, ...) \ - {{ \ - .reduce = { \ - .type = TSParseActionTypeReduce, \ - .symbol = symbol_val, \ - .child_count = child_count_val, \ - __VA_ARGS__ \ - }, \ +#define REDUCE(symbol_name, children, precedence, prod_id) \ + {{ \ + .reduce = { \ + .type = TSParseActionTypeReduce, \ + .symbol = symbol_name, \ + .child_count = children, \ + .dynamic_precedence = precedence, \ + .production_id = prod_id \ + }, \ }} #define RECOVER() \ diff --git a/ql/extractor/Cargo.toml b/ql/extractor/Cargo.toml index 6f0e6e11f08..637a4bf5f3b 100644 --- a/ql/extractor/Cargo.toml +++ b/ql/extractor/Cargo.toml @@ -7,17 +7,14 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -tree-sitter = ">= 0.22.6" -tree-sitter-ql = { git = "https://github.com/tree-sitter/tree-sitter-ql.git", rev = "fa5c3821dd2161f5c8528a8cbdb258daa6dc4de6"} -tree-sitter-ql-dbscheme = { git = "https://github.com/tree-sitter/tree-sitter-ql-dbscheme.git", rev = "5f770f57fa415607ff50e3d237d47c8f11440eb3"} +tree-sitter = ">= 0.23.0" +tree-sitter-ql = { git = "https://github.com/tree-sitter/tree-sitter-ql.git", rev = "c73c31c89cb0019ef56fe8bc1723e7c36e0be607"} +tree-sitter-ql-dbscheme = { git = "https://github.com/tree-sitter/tree-sitter-ql-dbscheme.git", rev = "1980b4b6998a1138d326f863e6168f0f2c0c544d"} tree-sitter-blame = {path = "../buramu/tree-sitter-blame"} -tree-sitter-json = {git = "https://github.com/tree-sitter/tree-sitter-json.git", rev = "94f5c527b2965465956c2000ed6134dd24daf2a7"} +tree-sitter-json = {git = "https://github.com/tree-sitter/tree-sitter-json.git", rev = "8bfdb43f47ad805bb1ce093203cfcbaa8ed2c571"} clap = { version = "4.2", features = ["derive"] } tracing = "0.1" tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } rayon = "1.9.0" regex = "1.10.4" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } - -[patch.crates-io] -tree-sitter = {git = "https://github.com/redsun82/tree-sitter.git", rev = "1f5c1112ceaa8fc6aff61d1852690407670d2a96"} diff --git a/ql/extractor/src/extractor.rs b/ql/extractor/src/extractor.rs index b50cae32a01..8383d8424ee 100644 --- a/ql/extractor/src/extractor.rs +++ b/ql/extractor/src/extractor.rs @@ -27,25 +27,25 @@ pub fn run(options: Options) -> std::io::Result<()> { languages: vec![ simple::LanguageSpec { prefix: "ql", - ts_language: tree_sitter_ql::language(), + ts_language: tree_sitter_ql::LANGUAGE.into(), node_types: tree_sitter_ql::NODE_TYPES, file_globs: vec!["*.ql".into(), "*.qll".into()], }, simple::LanguageSpec { prefix: "dbscheme", - ts_language: tree_sitter_ql_dbscheme::language(), + ts_language: tree_sitter_ql_dbscheme::LANGUAGE.into(), node_types: tree_sitter_ql_dbscheme::NODE_TYPES, file_globs: vec!["*.dbscheme".into()], }, simple::LanguageSpec { prefix: "json", - ts_language: tree_sitter_json::language(), + ts_language: tree_sitter_json::LANGUAGE.into(), node_types: tree_sitter_json::NODE_TYPES, file_globs: vec!["*.json".into(), "*.jsonl".into(), "*.jsonc".into()], }, simple::LanguageSpec { prefix: "blame", - ts_language: tree_sitter_blame::language(), + ts_language: tree_sitter_blame::LANGUAGE.into(), node_types: tree_sitter_blame::NODE_TYPES, file_globs: vec!["*.blame".into()], }, diff --git a/ruby/Makefile b/ruby/Makefile index d40bc33698b..23333b494f4 100644 --- a/ruby/Makefile +++ b/ruby/Makefile @@ -24,7 +24,7 @@ FILES=codeql-extractor.yml\ ql/lib/ruby.dbscheme.stats\ ql/lib/ruby.dbscheme -BIN_FILES=target/release/codeql-extractor-ruby$(EXE) +BIN_FILES=../target/release/codeql-extractor-ruby$(EXE) extractor-common: rm -rf build @@ -37,14 +37,14 @@ extractor-common: tools: $(BIN_FILES) rm -rf tools/bin mkdir tools/bin - cp -r target/release/codeql-extractor-ruby$(EXE) tools/bin/extractor$(EXE) + cp -r ../target/release/codeql-extractor-ruby$(EXE) tools/bin/extractor$(EXE) -target/release/%$(EXE): +../target/release/%$(EXE): cd extractor && cargo build --release dbscheme: cd extractor && cargo build --release - extractor/target/release/codeql-extractor-ruby generate --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll + ../target/release/codeql-extractor-ruby generate --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll codeql query format -i ql/lib/codeql/ruby/ast/internal/TreeSitter.qll .PHONY: extractor @@ -62,7 +62,7 @@ extractor: $(FILES) $(BIN_FILES) cp tools/autobuild.cmd extractor-pack/tools/autobuild.cmd cp ql/lib/ruby.dbscheme.stats extractor-pack/ruby.dbscheme.stats cp ql/lib/ruby.dbscheme extractor-pack/ruby.dbscheme - cp extractor/target/release/codeql-extractor-ruby$(EXE) extractor-pack/tools/$(CODEQL_PLATFORM)/extractor$(EXE) + cp ../target/release/codeql-extractor-ruby$(EXE) extractor-pack/tools/$(CODEQL_PLATFORM)/extractor$(EXE) test: extractor dbscheme codeql test run --check-databases --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --search-path .. --consistency-queries ql/consistency-queries ql/test diff --git a/ruby/actions/create-extractor-pack/action.yml b/ruby/actions/create-extractor-pack/action.yml index bd9485bb578..d8bba46064b 100644 --- a/ruby/actions/create-extractor-pack/action.yml +++ b/ruby/actions/create-extractor-pack/action.yml @@ -18,7 +18,7 @@ runs: path: | ~/.cargo/registry ~/.cargo/git - ruby/target + target key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-ruby-qltest-cargo-${{ hashFiles('ruby/extractor/rust-toolchain.toml', 'ruby/scripts/create-extractor-pack.sh', 'ruby/extractor/**/Cargo.lock') }} - name: Build Extractor if: steps.cache-extractor.outputs.cache-hit != 'true' diff --git a/ruby/extractor/.cargo/config.toml b/ruby/extractor/.cargo/config.toml deleted file mode 100644 index 3e8c45cb78b..00000000000 --- a/ruby/extractor/.cargo/config.toml +++ /dev/null @@ -1 +0,0 @@ -paths = ["../../shared/tree-sitter-extractor"] diff --git a/ruby/extractor/BUILD.bazel b/ruby/extractor/BUILD.bazel index e3c2a387af5..158f1c91e4c 100644 --- a/ruby/extractor/BUILD.bazel +++ b/ruby/extractor/BUILD.bazel @@ -1,4 +1,4 @@ -load("@ruby_deps//:defs.bzl", "aliases", "all_crate_deps") +load("@tree_sitter_extractors_deps//:defs.bzl", "aliases", "all_crate_deps") load("//misc/bazel:rust.bzl", "codeql_rust_binary") codeql_rust_binary( @@ -12,6 +12,6 @@ codeql_rust_binary( deps = all_crate_deps( normal = True, ) + [ - "//shared/tree-sitter-extractor:codeql-extractor", + "//shared/tree-sitter-extractor", ], ) diff --git a/ruby/extractor/Cargo.lock b/ruby/extractor/Cargo.lock deleted file mode 100644 index 95f32d9b610..00000000000 Binary files a/ruby/extractor/Cargo.lock and /dev/null differ diff --git a/ruby/extractor/Cargo.toml b/ruby/extractor/Cargo.toml index 39310785ec3..bd0cde9bb02 100644 --- a/ruby/extractor/Cargo.toml +++ b/ruby/extractor/Cargo.toml @@ -1,4 +1,3 @@ -[workspace] [package] name = "codeql-extractor-ruby" description = "CodeQL Ruby extractor" @@ -7,9 +6,9 @@ authors = ["GitHub"] edition = "2021" [dependencies] -tree-sitter = ">= 0.22.6" -tree-sitter-embedded-template = { git = "https://github.com/tree-sitter/tree-sitter-embedded-template.git", rev = "38d5004a797298dc42c85e7706c5ceac46a3f29f" } -tree-sitter-ruby = { git = "https://github.com/tree-sitter/tree-sitter-ruby.git", rev = "0ffe457fb6aabf064f173fd30ea356845cef2513" } +tree-sitter = ">= 0.23.0" +tree-sitter-embedded-template = { git = "https://github.com/tree-sitter/tree-sitter-embedded-template.git", rev = "62b0a6e45900a7dff7c37da95fec20a09968ba52" } +tree-sitter-ruby = { git = "https://github.com/tree-sitter/tree-sitter-ruby.git", rev = "a66579f70d6f50ffd81a16fc3d3358e2ac173c88" } clap = { version = "4.2", features = ["derive"] } tracing = "0.1" tracing-subscriber = { version = "0.3.3", features = ["env-filter"] } @@ -17,10 +16,5 @@ rayon = "1.5.0" regex = "1.7.1" encoding = "0.2" lazy_static = "1.4.0" -# Ideally, we'd like to pull this in via a relative path. -# However, our bazel/rust tooling chokes on this, c.f. https://github.com/bazelbuild/rules_rust/issues/1525 -# Therefore, we have a pretty bad hack in place instead, see README.md in the codeql-extractor-fake-crate directory. -codeql-extractor = { path = "codeql-extractor-fake-crate" } -[patch.crates-io] -tree-sitter = { git = "https://github.com/redsun82/tree-sitter.git", rev = "1f5c1112ceaa8fc6aff61d1852690407670d2a96" } +codeql-extractor = { path = "../../shared/tree-sitter-extractor" } diff --git a/ruby/extractor/codeql-extractor-fake-crate/Cargo.toml b/ruby/extractor/codeql-extractor-fake-crate/Cargo.toml deleted file mode 100644 index d51d64a3349..00000000000 --- a/ruby/extractor/codeql-extractor-fake-crate/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "codeql-extractor" -version = "0.2.0" -edition = "2021" -authors = ["GitHub"] - -[dependencies] -flate2 = "1.0" -globset = "0.4" -tree-sitter = ">= 0.22.6" -tracing = "0.1" -tracing-subscriber = { version = "0.3.3", features = ["env-filter"] } -rayon = "1.5.0" -regex = "1.7.1" -encoding = "0.2" -lazy_static = "1.4.0" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -chrono = { version = "0.4.19", features = ["serde"] } -num_cpus = "1.14.0" - -[dev-dependencies] -tree-sitter-ql = { git = "https://github.com/tree-sitter/tree-sitter-ql" } -tree-sitter-json = {git = "https://github.com/tree-sitter/tree-sitter-json" } -rand = "0.8.5" - -[patch.crates-io] -tree-sitter = {git = "https://github.com/redsun82/tree-sitter.git", rev = "1f5c1112ceaa8fc6aff61d1852690407670d2a96"} diff --git a/ruby/extractor/codeql-extractor-fake-crate/README.md b/ruby/extractor/codeql-extractor-fake-crate/README.md deleted file mode 100644 index 71f7ec8974b..00000000000 --- a/ruby/extractor/codeql-extractor-fake-crate/README.md +++ /dev/null @@ -1,7 +0,0 @@ -We're presenting a fake crate in this workspace that ensures that the correct crate dependencies from the shared tree sitter -extractor can be parsed by Bazel (which doesn't resolve path dependencies outside of the cargo workspace unfortunately). - -The sync-identical-files script keeps this up-to-date. -For local development and IDEs, we override the path to `codeql-extractor` using the `.cargo/config.toml` mechanism. -Bazel doesn't actually do anything with path dependencies except to pull in their dependency tree, so we manually -specify the dependency from the ruby extractor to the shared extractor in `BUILD.bazel`. diff --git a/ruby/extractor/codeql-extractor-fake-crate/src/lib.rs b/ruby/extractor/codeql-extractor-fake-crate/src/lib.rs deleted file mode 100644 index 8b137891791..00000000000 --- a/ruby/extractor/codeql-extractor-fake-crate/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ruby/extractor/src/extractor.rs b/ruby/extractor/src/extractor.rs index b32e2d58194..f1c272f1792 100644 --- a/ruby/extractor/src/extractor.rs +++ b/ruby/extractor/src/extractor.rs @@ -78,8 +78,8 @@ pub fn run(options: Options) -> std::io::Result<()> { let file_list = fs::File::open(file_paths::path_from_string(&options.file_list))?; - let language = tree_sitter_ruby::language(); - let erb = tree_sitter_embedded_template::language(); + let language: Language = tree_sitter_ruby::LANGUAGE.into(); + let erb: Language = tree_sitter_embedded_template::LANGUAGE.into(); // Look up tree-sitter kind ids now, to avoid string comparisons when scanning ERB files. let erb_directive_id = erb.id_for_node_kind("directive", true); let erb_output_directive_id = erb.id_for_node_kind("output_directive", true); diff --git a/ruby/ql/integration-tests/all-platforms/diagnostics/syntax-error/bad.rb b/ruby/ql/integration-tests/diagnostics/syntax-error/bad.rb similarity index 100% rename from ruby/ql/integration-tests/all-platforms/diagnostics/syntax-error/bad.rb rename to ruby/ql/integration-tests/diagnostics/syntax-error/bad.rb diff --git a/ruby/ql/integration-tests/all-platforms/diagnostics/syntax-error/diagnostics.expected b/ruby/ql/integration-tests/diagnostics/syntax-error/diagnostics.expected similarity index 100% rename from ruby/ql/integration-tests/all-platforms/diagnostics/syntax-error/diagnostics.expected rename to ruby/ql/integration-tests/diagnostics/syntax-error/diagnostics.expected diff --git a/ruby/ql/integration-tests/all-platforms/diagnostics/syntax-error/test.py b/ruby/ql/integration-tests/diagnostics/syntax-error/test.py similarity index 100% rename from ruby/ql/integration-tests/all-platforms/diagnostics/syntax-error/test.py rename to ruby/ql/integration-tests/diagnostics/syntax-error/test.py diff --git a/ruby/ql/integration-tests/all-platforms/diagnostics/unknown-encoding/diagnostics.expected b/ruby/ql/integration-tests/diagnostics/unknown-encoding/diagnostics.expected similarity index 100% rename from ruby/ql/integration-tests/all-platforms/diagnostics/unknown-encoding/diagnostics.expected rename to ruby/ql/integration-tests/diagnostics/unknown-encoding/diagnostics.expected diff --git a/ruby/ql/integration-tests/all-platforms/diagnostics/unknown-encoding/encoding.rb b/ruby/ql/integration-tests/diagnostics/unknown-encoding/encoding.rb similarity index 100% rename from ruby/ql/integration-tests/all-platforms/diagnostics/unknown-encoding/encoding.rb rename to ruby/ql/integration-tests/diagnostics/unknown-encoding/encoding.rb diff --git a/ruby/ql/integration-tests/all-platforms/diagnostics/unknown-encoding/test.py b/ruby/ql/integration-tests/diagnostics/unknown-encoding/test.py similarity index 100% rename from ruby/ql/integration-tests/all-platforms/diagnostics/unknown-encoding/test.py rename to ruby/ql/integration-tests/diagnostics/unknown-encoding/test.py diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 4d575d4ef0f..160b3b2b6e7 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted the deprecated `getURL` predicate the `Http::Request` class, use `getAUrlPart` instead. +* Deleted the deprecated `getNode` predicate from the `CfgNode` class, use `getAstNode` instead. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. + +## 1.0.7 + +No user-facing changes. + +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/1.0.6.md b/ruby/ql/lib/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/1.0.7.md b/ruby/ql/lib/change-notes/released/1.0.7.md new file mode 100644 index 00000000000..b3a381f0315 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/1.0.7.md @@ -0,0 +1,3 @@ +## 1.0.7 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/2.0.0.md b/ruby/ql/lib/change-notes/released/2.0.0.md new file mode 100644 index 00000000000..193cb4ed9b4 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/2.0.0.md @@ -0,0 +1,9 @@ +## 2.0.0 + +### Breaking Changes + +* Deleted the deprecated `getURL` predicate the `Http::Request` class, use `getAUrlPart` instead. +* Deleted the deprecated `getNode` predicate from the `CfgNode` class, use `getAstNode` instead. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 42da17b3841..0abe6ccede0 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 2.0.0 diff --git a/ruby/ql/lib/codeql/ruby/Concepts.qll b/ruby/ql/lib/codeql/ruby/Concepts.qll index 68a9eee8ff1..bd6faaacd69 100644 --- a/ruby/ql/lib/codeql/ruby/Concepts.qll +++ b/ruby/ql/lib/codeql/ruby/Concepts.qll @@ -693,14 +693,6 @@ module Http { class Request extends SC::Request instanceof Request::Range { /** Gets a node which returns the body of the response */ DataFlow::Node getResponseBody() { result = super.getResponseBody() } - - /** - * DEPRECATED: Use `getAUrlPart` instead. - * - * Gets a node that contributes to the URL of the request. - * Depending on the framework, a request may have multiple nodes which contribute to the URL. - */ - deprecated DataFlow::Node getURL() { result = Request::Range.super.getAUrlPart() } } /** Provides a class for modeling new HTTP requests. */ diff --git a/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll b/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll index 67f0f655794..dee31d8e901 100644 --- a/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll +++ b/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll @@ -40,9 +40,6 @@ class CfgNode extends CfgImpl::Node { /** Gets the file of this control flow node. */ final File getFile() { result = this.getLocation().getFile() } - /** DEPRECATED: Use `getAstNode` instead. */ - deprecated AstNode getNode() { result = this.getAstNode() } - /** Gets a successor node of a given type, if any. */ final CfgNode getASuccessor(SuccessorType t) { result = super.getASuccessor(t) } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl1.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl1.qll index 3b1439511d1..359fa71744b 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl1.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl1.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll index 3b1439511d1..359fa71744b 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll @@ -168,14 +168,6 @@ abstract deprecated class Configuration extends string { */ predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } - /** - * DEPRECATED: Use `FlowExploration` instead. - * - * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` - * measured in approximate number of interprocedural steps. - */ - deprecated int explorationLimit() { none() } - /** * Holds if hidden nodes should be included in the data flow graph. * diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index 20db26be92f..36c71e04fef 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -526,6 +526,7 @@ private module Cached { | isUseStep = false or + isUseStep = true and not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _) ) or diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll index ee3105c3be7..c56501bad3e 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll @@ -1323,11 +1323,6 @@ class CallableNode extends StmtSequenceNode { * Gets a data flow node whose value is about to be returned by this callable. */ Node getAReturnNode() { result = getAReturnNode(callable) } - - /** - * DEPRECATED. Use `getAReturnNode` instead. - */ - deprecated Node getAReturningNode() { result = this.getAReturnNode() } } /** diff --git a/ruby/ql/lib/codeql/ruby/frameworks/Rack.qll b/ruby/ql/lib/codeql/ruby/frameworks/Rack.qll index 928a9f60a5f..27d30950ad7 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/Rack.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/Rack.qll @@ -10,7 +10,4 @@ module Rack { import rack.internal.Request import rack.internal.Response::Public as Response import rack.internal.Utils - - /** DEPRECATED: Alias for App::AppCandidate */ - deprecated class AppCandidate = App::AppCandidate; } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/rack/internal/App.qll b/ruby/ql/lib/codeql/ruby/frameworks/rack/internal/App.qll index 94c4a6fb037..fbb33ecd64b 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/rack/internal/App.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/rack/internal/App.qll @@ -39,31 +39,6 @@ private RP::PotentialResponseNode trackRackResponse(PotentialRequestHandler call * Provides modeling for Rack applications. */ module App { - /** - * DEPRECATED: Use `RequestHandler` instead. - * A class that may be a rack application. - * This is a class that has a `call` method that takes a single argument - * (traditionally called `env`) and returns a rack-compatible response. - */ - deprecated class AppCandidate extends DataFlow::ClassNode { - private RequestHandler call; - private RP::PotentialResponseNode resp; - - AppCandidate() { - call = this.getInstanceMethod("call") and - call.getNumberOfParameters() = 1 and - resp = trackRackResponse(call) - } - - /** - * Gets the environment of the request, which is the lone parameter to the `call` method. - */ - DataFlow::ParameterNode getEnv() { result = call.getParameter(0) } - - /** Gets the response returned from a request to this application. */ - RP::PotentialResponseNode getResponse() { result = resp } - } - /** * A callable node that looks like it implements the rack specification. */ diff --git a/ruby/ql/lib/codeql/ruby/security/InsecureDownloadQuery.qll b/ruby/ql/lib/codeql/ruby/security/InsecureDownloadQuery.qll index 69fae550194..9e813209b53 100644 --- a/ruby/ql/lib/codeql/ruby/security/InsecureDownloadQuery.qll +++ b/ruby/ql/lib/codeql/ruby/security/InsecureDownloadQuery.qll @@ -10,28 +10,6 @@ private import codeql.ruby.AST private import codeql.ruby.DataFlow import InsecureDownloadCustomizations::InsecureDownload -/** - * A taint tracking configuration for download of sensitive file through insecure connection. - * - * DEPRECATED: Use `InsecureDownloadFlow`. - */ -deprecated class Configuration extends DataFlow::Configuration { - Configuration() { this = "InsecureDownload" } - - override predicate isSource(DataFlow::Node source, DataFlow::FlowState label) { - source.(Source).getALabel() = label - } - - override predicate isSink(DataFlow::Node sink, DataFlow::FlowState label) { - sink.(Sink).getALabel() = label - } - - override predicate isBarrier(DataFlow::Node node) { - super.isBarrier(node) or - node instanceof Sanitizer - } -} - private module InsecureDownloadConfig implements DataFlow::StateConfigSig { class FlowState = Label::State; diff --git a/ruby/ql/lib/codeql/ruby/security/StoredXSSQuery.qll b/ruby/ql/lib/codeql/ruby/security/StoredXSSQuery.qll index 7254d12b8fe..b6520fedf4f 100644 --- a/ruby/ql/lib/codeql/ruby/security/StoredXSSQuery.qll +++ b/ruby/ql/lib/codeql/ruby/security/StoredXSSQuery.qll @@ -17,29 +17,6 @@ import codeql.ruby.TaintTracking */ deprecated module StoredXss { import XSS::StoredXss - - /** - * DEPRECATED. - * - * A taint-tracking configuration for reasoning about Stored XSS. - */ - deprecated class Configuration extends TaintTracking::Configuration { - Configuration() { this = "StoredXss" } - - override predicate isSource(DataFlow::Node source) { source instanceof Source } - - override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - override predicate isSanitizer(DataFlow::Node node) { - super.isSanitizer(node) or - node instanceof Sanitizer - } - - override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - isAdditionalXssTaintStep(node1, node2) - } - } - import TaintTracking::Global } diff --git a/ruby/ql/lib/codeql/ruby/security/internal/CleartextSources.qll b/ruby/ql/lib/codeql/ruby/security/internal/CleartextSources.qll index dc31b7f49ee..3338bbf65f7 100644 --- a/ruby/ql/lib/codeql/ruby/security/internal/CleartextSources.qll +++ b/ruby/ql/lib/codeql/ruby/security/internal/CleartextSources.qll @@ -289,17 +289,4 @@ module CleartextSources { override string describe() { result = "a call to " + name } } - - /** Holds if `nodeFrom` taints `nodeTo`. */ - deprecated predicate isAdditionalTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { - exists(string name, ElementReference ref, LocalVariable hashVar | - // from `hsh[password] = "changeme"` to a `hsh[password]` read - nodeFrom.(HashKeyWriteSensitiveSource).getName() = name and - nodeTo.asExpr().getExpr() = ref and - ref.getArgument(0).getConstantValue().getStringlikeValue() = name and - nodeFrom.(HashKeyWriteSensitiveSource).getVariable() = hashVar and - ref.getReceiver().(VariableReadAccess).getVariable() = hashVar and - nodeFrom.asExpr().getASuccessor*() = nodeTo.asExpr() - ) - } } diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index ecda3a78e65..aa67854634a 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 1.0.6-dev +version: 2.0.1-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 37101f41c70..2598b88aa0b 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.1.3 + +No user-facing changes. + +## 1.1.2 + +No user-facing changes. + +## 1.1.1 + +No user-facing changes. + ## 1.1.0 ### New Queries diff --git a/ruby/ql/src/change-notes/released/1.1.1.md b/ruby/ql/src/change-notes/released/1.1.1.md new file mode 100644 index 00000000000..7fb56d36610 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.1.1.md @@ -0,0 +1,3 @@ +## 1.1.1 + +No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.1.2.md b/ruby/ql/src/change-notes/released/1.1.2.md new file mode 100644 index 00000000000..ce8d2c1a4f3 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.1.2.md @@ -0,0 +1,3 @@ +## 1.1.2 + +No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.1.3.md b/ruby/ql/src/change-notes/released/1.1.3.md new file mode 100644 index 00000000000..e8f1701bd62 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.1.3.md @@ -0,0 +1,3 @@ +## 1.1.3 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 2ac15439f56..35e710ab1bf 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.0 +lastReleaseVersion: 1.1.3 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index ada2d7236d0..6fe83794b89 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.1.1-dev +version: 1.1.4-dev groups: - ruby - queries diff --git a/ruby/ql/test/query-tests/security/cwe-094/CodeInjection/CodeInjection.expected b/ruby/ql/test/query-tests/security/cwe-094/CodeInjection/CodeInjection.expected index bec51d351fb..ca8345d92ee 100644 --- a/ruby/ql/test/query-tests/security/cwe-094/CodeInjection/CodeInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-094/CodeInjection/CodeInjection.expected @@ -17,7 +17,6 @@ edges | CodeInjection.rb:38:24:38:27 | code | CodeInjection.rb:38:10:38:28 | call to escape | provenance | MaD:21 | | CodeInjection.rb:38:24:38:27 | code | CodeInjection.rb:38:10:38:28 | call to escape | provenance | MaD:21 | | CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:80:16:80:19 | code | provenance | | -| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:10:86:25 | ... + ... | provenance | | | CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:10:86:37 | ... + ... | provenance | | | CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:22:86:25 | code | provenance | | | CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:88:10:88:32 | "prefix_#{...}_suffix" | provenance | AdditionalTaintStep | @@ -27,7 +26,6 @@ edges | CodeInjection.rb:78:12:78:17 | call to params | CodeInjection.rb:78:12:78:24 | ...[...] | provenance | | | CodeInjection.rb:78:12:78:24 | ...[...] | CodeInjection.rb:78:5:78:8 | code | provenance | | | CodeInjection.rb:78:12:78:24 | ...[...] | CodeInjection.rb:78:5:78:8 | code | provenance | | -| CodeInjection.rb:86:10:86:25 | ... + ... | CodeInjection.rb:86:10:86:37 | ... + ... | provenance | | | CodeInjection.rb:86:10:86:25 | ... + ... [element] | CodeInjection.rb:86:10:86:37 | ... + ... [element] | provenance | | | CodeInjection.rb:86:10:86:37 | ... + ... [element] | CodeInjection.rb:86:10:86:37 | ... + ... | provenance | | | CodeInjection.rb:86:22:86:25 | code | CodeInjection.rb:86:10:86:25 | ... + ... [element] | provenance | | @@ -74,7 +72,6 @@ nodes | CodeInjection.rb:78:12:78:24 | ...[...] | semmle.label | ...[...] | | CodeInjection.rb:78:12:78:24 | ...[...] | semmle.label | ...[...] | | CodeInjection.rb:80:16:80:19 | code | semmle.label | code | -| CodeInjection.rb:86:10:86:25 | ... + ... | semmle.label | ... + ... | | CodeInjection.rb:86:10:86:25 | ... + ... [element] | semmle.label | ... + ... [element] | | CodeInjection.rb:86:10:86:37 | ... + ... | semmle.label | ... + ... | | CodeInjection.rb:86:10:86:37 | ... + ... [element] | semmle.label | ... + ... [element] | diff --git a/ruby/scripts/create-extractor-pack.sh b/ruby/scripts/create-extractor-pack.sh index e601a4b2dd4..4cef0b8c73f 100755 --- a/ruby/scripts/create-extractor-pack.sh +++ b/ruby/scripts/create-extractor-pack.sh @@ -8,10 +8,12 @@ else echo "Unknown OS" exit 1 fi +cd "$(dirname "$0")/.." (cd extractor && cargo build --release) -BIN_DIR=extractor/target/release +# we are in a cargo workspace rooted at the git checkout +BIN_DIR=../target/release "$BIN_DIR/codeql-extractor-ruby" generate --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll codeql query format -i ql/lib/codeql/ruby/ast/internal/TreeSitter.qll diff --git a/rust/BUILD.bazel b/rust/BUILD.bazel new file mode 100644 index 00000000000..fff7c807ffb --- /dev/null +++ b/rust/BUILD.bazel @@ -0,0 +1,65 @@ +load("@rules_pkg//pkg:mappings.bzl", "pkg_filegroup") +load( + "//misc/bazel:pkg.bzl", + "codeql_pack", + "codeql_pkg_files", +) + +package(default_visibility = ["//rust:__subpackages__"]) + +filegroup( + name = "schema", + srcs = ["schema.py"], +) + +filegroup( + name = "schema-includes", + srcs = glob(["*.dbscheme"]), +) + +filegroup( + name = "codegen-conf", + srcs = ["codegen.conf"], +) + +codeql_pkg_files( + name = "tools-arch", + exes = ["//rust/extractor"], + prefix = "{CODEQL_PLATFORM}", +) + +pkg_filegroup( + name = "tools", + srcs = [ + ":tools-arch", + "//rust/tools", + ], + prefix = "tools", +) + +codeql_pkg_files( + name = "root-files", + srcs = [ + "codeql-extractor.yml", + "ql/lib/rust.dbscheme", + "ql/lib/rust.dbscheme.stats", + ], +) + +[ + codeql_pack( + name = "-".join(parts), + srcs = [ + ":root-files", + ":tools", + ], + pack_prefix = "/".join(parts), + ) + for parts in ( + [ + "experimental", + "rust", + ], + ["rust"], + ) +] diff --git a/rust/README.md b/rust/README.md new file mode 100644 index 00000000000..87c7072c675 --- /dev/null +++ b/rust/README.md @@ -0,0 +1,43 @@ +# Rust on CodeQL + +> [!WARNING] +> Rust support for CodeQL is experimental. No support is offered. QL and database interfaces will change and break without notice or deprecation periods. + +## Development + +### Dependencies + +If you don't have the `semmle-code` repo you may need to install Bazel manually, e.g. from https://github.com/bazelbuild/bazelisk. + +### Building the Rust Extractor + +This approach uses a released `codeql` version and is simpler to use for QL development. From your `semmle-code` directory run: +```bash +bazel run @codeql//rust:rust-installer +``` +You now need to create a [per-user CodeQL configuration file](https://docs.github.com/en/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/specifying-command-options-in-a-codeql-configuration-file#using-a-codeql-configuration-file) and specify the option: +``` +--search-path PATH/TO/semmle-code/ql +``` +(wherever the `codeql` checkout is on your system) + +You can now use the Rust extractor e.g. to run Rust tests from the command line or in VSCode. + +### Building the Rust Extractor (as a sembuild target) + +This approach allows you to build a Rust extractor with a CLI built from source. From your `semmle-code` directory run: +```bash +./build target/intree/codeql-rust +``` +You can now invoke it directly, for example to run some tests: +```bash +./target/intree/codeql-rust/codeql test run ql/rust/ql/test/PATH/TO/TEST/ +``` + +### Building a Database + +TODO + +### Code Generation + +TODO diff --git a/rust/codegen.conf b/rust/codegen.conf new file mode 100644 index 00000000000..0847572dafb --- /dev/null +++ b/rust/codegen.conf @@ -0,0 +1,8 @@ +# configuration file for Rust code generation default options +--generate=dbscheme,rusttest,ql,rust +--dbscheme=ql/lib/rust.dbscheme +--ql-output=ql/lib/codeql/rust/elements/internal/generated +--ql-stub-output=ql/lib/codeql/rust/elements +--ql-test-output=ql/test/extractor-tests/generated +--rust-output=extractor/src/generated +--script-name=codegen diff --git a/rust/codegen/BUILD.bazel b/rust/codegen/BUILD.bazel new file mode 100644 index 00000000000..99f737538a6 --- /dev/null +++ b/rust/codegen/BUILD.bazel @@ -0,0 +1,15 @@ +load("@bazel_skylib//rules:native_binary.bzl", "native_binary") + +native_binary( + name = "codegen", + src = "//misc/codegen", + out = "codegen", + args = [ + "--configuration-file=$(location //rust:codegen-conf)", + ], + data = [ + "//rust:codegen-conf", + "//rust:schema", + ], + visibility = ["//rust:__subpackages__"], +) diff --git a/rust/codeql-extractor.yml b/rust/codeql-extractor.yml new file mode 100644 index 00000000000..e33d2c0c715 --- /dev/null +++ b/rust/codeql-extractor.yml @@ -0,0 +1,36 @@ +name: "rust" +display_name: "Rust" +version: 0.1.0 +column_kind: "utf8" +legacy_qltest_extraction: true +build_modes: + - none +github_api_languages: + - Rust +scc_languages: + - Rust +file_types: + - name: rust + display_name: Rust files + extensions: + - .rs +options: + trap: + title: Options pertaining to TRAP. + type: object + properties: + compression: + title: Controls compression for the TRAP files written by the extractor. + description: > + This option is only intended for use in debugging the extractor. Accepted + values are 'gzip' (the default, to write gzip-compressed TRAP) and 'none' + (to write uncompressed TRAP). + type: string + pattern: "^(none|gzip)$" + extract_dependencies: + title: Whether to extract dependencies. + description: > + Extract the source code of dependencies and the standard libraries in addition to + normal source code. + type: string + pattern: "^(false|true)$" diff --git a/rust/extractor/.gitignore b/rust/extractor/.gitignore new file mode 100644 index 00000000000..d81f12ed1b1 --- /dev/null +++ b/rust/extractor/.gitignore @@ -0,0 +1,2 @@ +/target +/.idea diff --git a/rust/extractor/BUILD.bazel b/rust/extractor/BUILD.bazel new file mode 100644 index 00000000000..a5d99e82584 --- /dev/null +++ b/rust/extractor/BUILD.bazel @@ -0,0 +1,19 @@ +load("@tree_sitter_extractors_deps//:defs.bzl", "aliases", "all_crate_deps") +load("//misc/bazel:rust.bzl", "codeql_rust_binary") + +codeql_rust_binary( + name = "extractor", + srcs = glob(["src/**/*.rs"]), + aliases = aliases(), + proc_macro_deps = all_crate_deps( + proc_macro = True, + ) + [ + "//rust/extractor/macros", + ], + visibility = ["//rust:__subpackages__"], + deps = all_crate_deps( + normal = True, + ) + [ + "//shared/tree-sitter-extractor", + ], +) diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml new file mode 100644 index 00000000000..3b474f90f98 --- /dev/null +++ b/rust/extractor/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "codeql-rust" +version = "0.1.0" +edition = "2021" + +[dependencies] +anyhow = "1.0.86" +clap = { version = "4.5.16", features = ["derive"] } +figment = { version = "0.10.19", features = ["env"]} +log = "0.4.22" +num-traits = "0.2.19" +ra_ap_base_db = "0.0.232" +ra_ap_hir = "0.0.232" +ra_ap_hir_def = "0.0.232" +ra_ap_ide_db = "0.0.232" +ra_ap_load-cargo = "0.0.232" +ra_ap_paths = "0.0.232" +ra_ap_project_model = "0.0.232" +ra_ap_syntax = "0.0.232" +ra_ap_vfs = "0.0.232" +serde = "1.0.209" +serde_with = "3.9.0" +stderrlog = "0.6.0" +triomphe = "0.1.13" +argfile = "0.2.1" +codeql-extractor = { path = "../../shared/tree-sitter-extractor" } +rust-extractor-macros = { path = "macros" } diff --git a/rust/extractor/macros/BUILD.bazel b/rust/extractor/macros/BUILD.bazel new file mode 100644 index 00000000000..4ddfb14a171 --- /dev/null +++ b/rust/extractor/macros/BUILD.bazel @@ -0,0 +1,20 @@ +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") +load("@tree_sitter_extractors_deps//:defs.bzl", "aliases", "all_crate_deps") + +rust_proc_macro( + name = "rust_extractor_macros", + srcs = glob(["src/**/*.rs"]), + aliases = aliases(), + proc_macro_deps = all_crate_deps( + proc_macro = True, + ), + deps = all_crate_deps( + normal = True, + ), +) + +alias( + name = "macros", + actual = "rust_extractor_macros", + visibility = ["//rust:__subpackages__"], +) diff --git a/rust/extractor/macros/Cargo.toml b/rust/extractor/macros/Cargo.toml new file mode 100644 index 00000000000..d4d10bc3bde --- /dev/null +++ b/rust/extractor/macros/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "rust-extractor-macros" +version = "0.1.0" +edition = "2021" + +[lib] +proc-macro = true + +[dependencies] +quote = "1.0.37" +syn = { version = "2.0.77", features = ["full"] } diff --git a/rust/extractor/macros/src/lib.rs b/rust/extractor/macros/src/lib.rs new file mode 100644 index 00000000000..781d53bd851 --- /dev/null +++ b/rust/extractor/macros/src/lib.rs @@ -0,0 +1,56 @@ +use proc_macro::TokenStream; +use quote::{format_ident, quote}; + +/// Allow all fields in the extractor config to be also overrideable by extractor CLI flags +#[proc_macro_attribute] +pub fn extractor_cli_config(_attr: TokenStream, item: TokenStream) -> TokenStream { + let ast = syn::parse_macro_input!(item as syn::ItemStruct); + let name = &ast.ident; + let new_name = format_ident!("Cli{}", name); + let fields: Vec<_> = ast + .fields + .iter() + .map(|f| { + let id = f.ident.as_ref().unwrap(); + let ty = &f.ty; + if let syn::Type::Path(p) = ty { + if p.path.is_ident(&format_ident!("bool")) { + return quote! { + #[arg(long)] + #[serde(skip_serializing_if="<&bool>::not")] + #id: bool, + }; + } + } + if id == &format_ident!("verbose") { + quote! { + #[arg(long, short, action=clap::ArgAction::Count)] + #[serde(skip_serializing_if="u8::is_zero")] + #id: u8, + } + } else if id == &format_ident!("inputs") { + quote! { + #id: #ty, + } + } else { + quote! { + #[arg(long)] + #id: Option<#ty>, + } + } + }) + .collect(); + let gen = quote! { + #[serde_with::apply(_ => #[serde(default)])] + #[derive(Debug, Deserialize, Default)] + #ast + + #[serde_with::skip_serializing_none] + #[derive(clap::Parser, Serialize)] + #[command(about, long_about = None)] + struct #new_name { + #(#fields)* + } + }; + gen.into() +} diff --git a/rust/extractor/src/archive.rs b/rust/extractor/src/archive.rs new file mode 100644 index 00000000000..cc1587ca957 --- /dev/null +++ b/rust/extractor/src/archive.rs @@ -0,0 +1,29 @@ +use crate::path; +use log::{debug, warn}; +use std::fs; +use std::path::{Path, PathBuf}; + +pub struct Archiver { + pub root: PathBuf, +} + +impl Archiver { + pub fn archive(&self, source: &Path) { + if let Err(e) = self.try_archive(source) { + warn!("unable to archive {}: {e}", source.display()); + } + } + + fn try_archive(&self, source: &Path) -> std::io::Result<()> { + let mut dest = self.root.clone(); + dest.push(path::key(source)); + let parent = dest.parent().unwrap(); + if fs::metadata(&dest).is_ok() { + return Ok(()); + } + fs::create_dir_all(parent)?; + fs::copy(source, dest)?; + debug!("archived {}", source.display()); + Ok(()) + } +} diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs new file mode 100644 index 00000000000..0625968a4af --- /dev/null +++ b/rust/extractor/src/config.rs @@ -0,0 +1,56 @@ +use anyhow::Context; +use clap::Parser; +use codeql_extractor::trap; +use figment::{ + providers::{Env, Serialized}, + Figment, +}; +use num_traits::Zero; +use rust_extractor_macros::extractor_cli_config; +use serde::{Deserialize, Serialize}; +use std::ops::Not; +use std::path::PathBuf; + +#[derive(Debug, PartialEq, Eq, Default, Serialize, Deserialize, Clone, Copy, clap::ValueEnum)] +#[serde(rename_all = "lowercase")] +#[clap(rename_all = "lowercase")] +pub enum Compression { + #[default] // TODO make gzip default + None, + Gzip, +} + +impl From for trap::Compression { + fn from(val: Compression) -> Self { + match val { + Compression::None => Self::None, + Compression::Gzip => Self::Gzip, + } + } +} + +#[extractor_cli_config] +pub struct Config { + pub scratch_dir: PathBuf, + pub trap_dir: PathBuf, + pub source_archive_dir: PathBuf, + pub extract_dependencies: bool, + pub verbose: u8, + pub compression: Compression, + pub inputs: Vec, +} + +impl Config { + pub fn extract() -> anyhow::Result { + let args = argfile::expand_args(argfile::parse_fromfile, argfile::PREFIX) + .context("expanding parameter files")?; + let cli_args = CliConfig::parse_from(args); + Figment::new() + .merge(Env::prefixed("CODEQL_")) + .merge(Env::prefixed("CODEQL_EXTRACTOR_RUST_")) + .merge(Env::prefixed("CODEQL_EXTRACTOR_RUST_OPTION_")) + .merge(Serialized::defaults(cli_args)) + .extract() + .context("loading configuration") + } +} diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list new file mode 100644 index 00000000000..795e5d0a550 --- /dev/null +++ b/rust/extractor/src/generated/.generated.list @@ -0,0 +1,2 @@ +mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 +top.rs ec9ec5e218af9a6b449b40f716e00bbe23c2777941d105b9ed68071aa2468ca2 ec9ec5e218af9a6b449b40f716e00bbe23c2777941d105b9ed68071aa2468ca2 diff --git a/rust/extractor/src/generated/.gitattributes b/rust/extractor/src/generated/.gitattributes new file mode 100644 index 00000000000..25bb20a9911 --- /dev/null +++ b/rust/extractor/src/generated/.gitattributes @@ -0,0 +1,4 @@ +/.generated.list linguist-generated +/.gitattributes linguist-generated +/mod.rs linguist-generated +/top.rs linguist-generated diff --git a/rust/extractor/src/generated/mod.rs b/rust/extractor/src/generated/mod.rs new file mode 100644 index 00000000000..0f95afeeff2 --- /dev/null +++ b/rust/extractor/src/generated/mod.rs @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +mod top; +pub use top::*; diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs new file mode 100644 index 00000000000..39712081872 --- /dev/null +++ b/rust/extractor/src/generated/top.rs @@ -0,0 +1,4222 @@ +// generated by codegen, do not edit + +#![cfg_attr(any(), rustfmt::skip)] + +use crate::trap; + +#[derive(Debug)] +pub struct Element { + _unused: () +} + +impl trap::TrapClass for Element { + fn class_name() -> &'static str { "Element" } +} + +#[derive(Debug)] +pub struct Locatable { + _unused: () +} + +impl trap::TrapClass for Locatable { + fn class_name() -> &'static str { "Locatable" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Locatable is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct Unextracted { + _unused: () +} + +impl trap::TrapClass for Unextracted { + fn class_name() -> &'static str { "Unextracted" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Unextracted is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct AstNode { + _unused: () +} + +impl trap::TrapClass for AstNode { + fn class_name() -> &'static str { "AstNode" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AstNode is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AstNode is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct Missing { + _unused: () +} + +impl trap::TrapClass for Missing { + fn class_name() -> &'static str { "Missing" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Missing is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Missing is a subclass of Unextracted + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct Unimplemented { + _unused: () +} + +impl trap::TrapClass for Unimplemented { + fn class_name() -> &'static str { "Unimplemented" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Unimplemented is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Unimplemented is a subclass of Unextracted + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct Declaration { + _unused: () +} + +impl trap::TrapClass for Declaration { + fn class_name() -> &'static str { "Declaration" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Declaration is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Declaration is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Declaration is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct Expr { + _unused: () +} + +impl trap::TrapClass for Expr { + fn class_name() -> &'static str { "Expr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Expr is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Expr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Expr is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct GenericArgList { + pub id: trap::TrapId, +} + +impl trap::TrapEntry for GenericArgList { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("generic_arg_lists", vec![id.into()]); + } +} + +impl trap::TrapClass for GenericArgList { + fn class_name() -> &'static str { "GenericArgList" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme GenericArgList is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme GenericArgList is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme GenericArgList is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme GenericArgList is a subclass of Unextracted + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme GenericArgList is a subclass of Unimplemented + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct Label { + pub id: trap::TrapId